From fbbc06db301b3c5ea75d94cd06e20a3f7a732c43 Mon Sep 17 00:00:00 2001 From: sungmin ha Date: Mon, 14 Sep 2015 16:38:27 +0900 Subject: [PATCH] keyboard: fixed unlimited input for mac fixed bug of key state (caps lock and shift) Change-Id: I1466b24bd3fdf734d28c9be96636281fe737133a Signed-off-by: sungmin ha --- tizen/src/ui/input/keyboardhelper.cpp | 40 ++++++++++++++++++++++++++++------- tizen/src/ui/input/keyboardhelper.h | 1 + 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/tizen/src/ui/input/keyboardhelper.cpp b/tizen/src/ui/input/keyboardhelper.cpp index 643a73f..3244020 100644 --- a/tizen/src/ui/input/keyboardhelper.cpp +++ b/tizen/src/ui/input/keyboardhelper.cpp @@ -155,7 +155,11 @@ void KeyboardHelper::createKeyMap() /* 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 */ @@ -328,6 +332,18 @@ void KeyboardHelper::pressFilterMtChecking(QKeyEvent *event) } } +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(); @@ -364,6 +380,9 @@ void KeyboardHelper::keyPressed(QKeyEvent *event) } else if (event->nativeModifiers() == 0) { capsLockState = OFF; } +#elif CONFIG_DARWIN + capsLockState = ON; + changeCapsLockState(); #else if (event->nativeModifiers() == 18) { capsLockState = ON; @@ -371,7 +390,7 @@ void KeyboardHelper::keyPressed(QKeyEvent *event) capsLockState = OFF; } #endif - qDebug() << "caps_lock state : " << capsLockState << "pressed"; + qDebug() << "caps_lock state(" << capsLockState << ") pressed"; return; } @@ -406,14 +425,10 @@ void KeyboardHelper::keyPressed(QKeyEvent *event) } } - 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); @@ -428,6 +443,11 @@ void KeyboardHelper::keyPressed(QKeyEvent *event) /* 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 } } @@ -492,6 +512,10 @@ void KeyboardHelper::keyReleased(QKeyEvent *event) 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; } diff --git a/tizen/src/ui/input/keyboardhelper.h b/tizen/src/ui/input/keyboardhelper.h index cc5f8fd..0399885 100644 --- a/tizen/src/ui/input/keyboardhelper.h +++ b/tizen/src/ui/input/keyboardhelper.h @@ -68,6 +68,7 @@ private: void pressFilterMtChecking(QKeyEvent *event); void releaseFilterMtChecking(QKeyEvent *event); + void changeCapsLockState(void); }; #endif // KEYBOARDHELPER_H -- 2.7.4