keyboard: ignore key events while the display is off
authorJihye Won <jihye.won1@samsung.com>
Mon, 11 Jan 2016 04:28:46 +0000 (13:28 +0900)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Fri, 22 Jan 2016 02:18:31 +0000 (11:18 +0900)
There was a bug when a user presses the HW key shortcut in display-off mode.
The reason is that the guest OS receives key events while the display is off.
After applying this commit, the emulator ignores key events while the display is off.

Change-Id: I97f2e21f1d0aaaa9aa4ddba9c18518a5a5df74bc
Signed-off-by: Jihye Won <jihye.won1@samsung.com>
(cherry picked from commit 36cec4673a2927d99696122ef795eec01da723a9)

tizen/src/ui/input/keyboardhelper.cpp

index 4fe8d3fc2211b66faf4837f9f579763081f218d5..53dcbe4e376912c1bf24f503579f649fc145a69b 100644 (file)
@@ -37,6 +37,7 @@ extern "C" {
 #include "util/ui_operations.h"
 
 void virtio_keyboard_event(int keycode);
+bool is_display_off(void);
 }
 
 KeyboardHelper::KeyboardHelper(QWidget *parent)
@@ -350,6 +351,12 @@ void KeyboardHelper::keyPressed(QKeyEvent *event)
     qDebug() << "key pressed:" << keyCode << event->text() <<
         event->nativeScanCode() << event->modifiers() << event->nativeModifiers();
 
+    /* ignore key event only if the display is off */
+    if (is_display_off() == true) {
+        qDebug() << "ignore key event(" << keyCode << ") while display is off";
+        return;
+    }
+
     /* multi-touch checking */
     if (mtTracker != NULL && mtTracker->isTrackingReady() == true) {
         if (get_max_touch_point() > 1) {
@@ -503,6 +510,12 @@ void KeyboardHelper::keyReleased(QKeyEvent *event)
     qDebug() << "key released:" <<  event->key() << event->text() <<
         event->nativeScanCode() << event->modifiers() << event->nativeModifiers();
 
+    /* ignore key event only if the display is off */
+    if (is_display_off() == true) {
+        qDebug() << "ignore key event(" << keyCode << ") while display is off";
+        return;
+    }
+
     /* multi-touch checking */
     if (mtTracker != NULL && get_max_touch_point() > 1) {
         releaseFilterMtChecking(event);