Send the native scancode in evdevkeyboard
authorLaszlo Agocs <laszlo.p.agocs@nokia.com>
Wed, 25 Jul 2012 11:36:16 +0000 (14:36 +0300)
committerQt by Nokia <qt-info@nokia.com>
Sat, 28 Jul 2012 13:23:07 +0000 (15:23 +0200)
Until now the native scancode was not specified which meant
when qwindow-compositor (or any other Qt-based compositor using
the standard Wayland protocol, i.e. sendKeyPress() and such) tried
to send the native scancode over to the clients, all it got was a
code of 0.

This fixes keyboard input when running qwindow-compositor on top
of kms and EvdevKeyboard.

Change-Id: I5d9a882f249634fb7584900b5f298f794befee3b
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp
src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler_p.h

index f3dd713..54a4f0c 100644 (file)
@@ -215,9 +215,12 @@ void QEvdevKeyboardHandler::readKeycode()
     }
 }
 
-void QEvdevKeyboardHandler::processKeyEvent(int unicode, int keycode, Qt::KeyboardModifiers modifiers, bool isPress, bool autoRepeat)
+void QEvdevKeyboardHandler::processKeyEvent(int nativecode, int unicode, int qtcode,
+                                            Qt::KeyboardModifiers modifiers, bool isPress, bool autoRepeat)
 {
-    QWindowSystemInterface::handleKeyEvent(0, ( isPress ? QEvent::KeyPress : QEvent::KeyRelease ), keycode, modifiers, QString( unicode ), autoRepeat );
+    QWindowSystemInterface::handleExtendedKeyEvent(0, (isPress ? QEvent::KeyPress : QEvent::KeyRelease),
+                                                   qtcode, modifiers, nativecode + 8, 0, int(modifiers),
+                                                   QString(unicode), autoRepeat);
 }
 
 QEvdevKeyboardHandler::KeycodeAction QEvdevKeyboardHandler::processKeycode(quint16 keycode, bool pressed, bool autorepeat)
@@ -396,7 +399,7 @@ QEvdevKeyboardHandler::KeycodeAction QEvdevKeyboardHandler::processKeycode(quint
 #endif
 
             // send the result to the server
-            processKeyEvent(unicode, qtcode & ~modmask, Qt::KeyboardModifiers(qtcode & modmask), pressed, autorepeat);
+            processKeyEvent(keycode, unicode, qtcode & ~modmask, Qt::KeyboardModifiers(qtcode & modmask), pressed, autorepeat);
         }
     }
     return result;
index 2d38df8..92370a9 100644 (file)
@@ -170,7 +170,8 @@ private slots:
 private:
     void unloadKeymap();
     bool loadKeymap(const QString &file);
-    void processKeyEvent(int unicode, int keycode, Qt::KeyboardModifiers modifiers, bool isPress, bool autoRepeat);
+    void processKeyEvent(int nativecode, int unicode, int qtcode,
+                         Qt::KeyboardModifiers modifiers, bool isPress, bool autoRepeat);
     void switchLed(int, bool);
 
     QString m_device;