/* modifiers */
keyMap.insert(Qt::Key_Shift, 42); /* shift */
+#ifdef CONFIG_DARWIN
+ keyMap.insert(Qt::Key_Meta, 29); /* ctrl for Mac */
+#else
keyMap.insert(Qt::Key_Control, 29); /* ctrl */
+#endif
keyMap.insert(Qt::Key_Alt, 56); /* alt */
/* numbers */
}
}
+void KeyboardHelper::changeCapsLockState(void)
+{
+ if (get_emul_caps_lock_state() != capsLockState) {
+ virtio_keyboard_event(58);
+ virtio_keyboard_event(58 | 0x80);
+ set_emul_caps_lock_state(get_emul_caps_lock_state() ^ 1);
+
+ qDebug() << "qemu CapsLock state was synchronized with host key value (" <<
+ get_emul_caps_lock_state() << ")";
+ }
+}
+
void KeyboardHelper::keyPressed(QKeyEvent *event)
{
const int keyCode = event->key();
} else if (event->nativeModifiers() == 0) {
capsLockState = OFF;
}
+#elif CONFIG_DARWIN
+ capsLockState = ON;
+ changeCapsLockState();
#else
if (event->nativeModifiers() == 18) {
capsLockState = ON;
capsLockState = OFF;
}
#endif
- qDebug() << "caps_lock state : " << capsLockState << "pressed";
+ qDebug() << "caps_lock state(" << capsLockState << ") pressed";
return;
}
}
}
- if (get_emul_caps_lock_state() != capsLockState) {
- virtio_keyboard_event(58);
- virtio_keyboard_event(58 | 0x80);
- set_emul_caps_lock_state(get_emul_caps_lock_state() ^ 1);
+#ifndef CONFIG_DARWIN
+ changeCapsLockState();
+#endif
- qDebug() << "qemu CapsLock state was synchronized with host key value (" <<
- get_emul_caps_lock_state() << ")";
- }
if (get_emul_num_lock_state() != numLockState) {
virtio_keyboard_event(69);
virtio_keyboard_event(69 | 0x80);
/* for auto release */
keyCodeList.append(ret);
do_qt_keyboard_key_event(KEY_PRESSED, ret);
+#ifdef CONFIG_DARWIN
+ if ((event->modifiers() & Qt::ControlModifier) && event->nativeModifiers()) {
+ keyReleased(event);
+ }
+#endif
}
}
qDebug() << "num_lock state : " << numLockState << "released";
return;
} else if (keyCode == Qt::Key_CapsLock) {
+#ifdef CONFIG_DARWIN
+ capsLockState = OFF;
+ changeCapsLockState();
+#endif
qDebug() << "caps_lock state : " << capsLockState << "released";
return;
}