Refine button handling. Change key mappings.
authorRuediger Gad <rgad@fb2.fh-frankfurt.de>
Thu, 12 Apr 2012 13:34:28 +0000 (15:34 +0200)
committerRuediger Gad <rgad@fb2.fh-frankfurt.de>
Thu, 12 Apr 2012 13:34:28 +0000 (15:34 +0200)
qml/QZeeControl/MainPage.qml
xtstadapter.cpp
xtstadapter.h

index 58cf162..16d7f23 100644 (file)
@@ -169,42 +169,40 @@ Page {
 
         onAChanged: {
             console.log("A changed to: " + val)
-            if(val){
-                xtstAdapter.sendKeyPress("a");
-            }
+            xtstAdapter.sendKey("a", val);
         }
         onBChanged: {
             console.log("B changed to: " + val)
-            if(val){
-                xtstAdapter.sendKeyPress("b");
-            }
+            xtstAdapter.sendKey("b", val);
         }
         onCChanged: {
             console.log("C changed to: " + val)
-            if(val){
-                xtstAdapter.sendKeyPress("c");
-            }
+            xtstAdapter.sendKey("c", val);
         }
         onDChanged: {
             console.log("D changed to: " + val)
-            if(val){
-                xtstAdapter.sendKeyPress("d");
-            }
+            xtstAdapter.sendKey("d", val);
         }
 
         onXChanged: {
             if(val > joystickThreshold){
-                xtstAdapter.sendKeyPress("Right");
+                xtstAdapter.sendKey("Right", true);
             }else if(val < -joystickThreshold){
-                xtstAdapter.sendKeyPress("Left");
+                xtstAdapter.sendKey("Left", true);
+            }else{
+                xtstAdapter.sendKey("Right", false);
+                xtstAdapter.sendKey("Left", false);
             }
         }
 
         onYChanged: {
             if(val > joystickThreshold){
-                xtstAdapter.sendKeyPress("Down");
+                xtstAdapter.sendKey("Down", true);
             }else if(val < -joystickThreshold){
-                xtstAdapter.sendKeyPress("Up");
+                xtstAdapter.sendKey("Up", true);
+            }else{
+                xtstAdapter.sendKey("Down", false);
+                xtstAdapter.sendKey("Up", false);
             }
         }
     }
index 20f4e3c..8276ac4 100644 (file)
 #include "xtstadapter.h"
 
 void XtstAdapter::sendKeyPress(QString key){
+    sendKey(key, true);
+    sendKey(key, false);
+//    int keyCode = XKeysymToKeycode(display, XStringToKeysym(key.toUtf8().constData()));
+
+////        "Shift_L" on N9 equals keycode 50.
+////        qDebug("Shift_L is: %d", XKeysymToKeycode(display, XStringToKeysym("Shift_L")));
+
+//    /*
+//     * In case we want to send a single upper case character we press and release shift
+//     * prior respectively after sending our actual key press.
+//     */
+//    bool isUpperCaseChar = (key.length() == 1 && key.at(0).isUpper());
+//    if(isUpperCaseChar){
+//        XTestFakeKeyEvent(display, 50, true, 0);
+//    }
+
+//    XTestFakeKeyEvent(display, keyCode, true, 0);
+//    XTestFakeKeyEvent(display, keyCode, false, 0);
+
+//    /*
+//     * In case we want to send a single upper case character we press and release shift
+//     * prior respectively after sending our actual key press.
+//     */
+//    if(isUpperCaseChar){
+//        XTestFakeKeyEvent(display, 50, false, 0);
+//    }
+
+//    XFlush(display);
+}
+
+void XtstAdapter::sendKey(QString key, bool down){
     int keyCode = XKeysymToKeycode(display, XStringToKeysym(key.toUtf8().constData()));
 
 //        "Shift_L" on N9 equals keycode 50.
@@ -34,8 +65,7 @@ void XtstAdapter::sendKeyPress(QString key){
         XTestFakeKeyEvent(display, 50, true, 0);
     }
 
-    XTestFakeKeyEvent(display, keyCode, true, 0);
-    XTestFakeKeyEvent(display, keyCode, false, 0);
+    XTestFakeKeyEvent(display, keyCode, down, 0);
 
     /*
      * In case we want to send a single upper case character we press and release shift
index ef3139e..60914b7 100644 (file)
@@ -38,6 +38,7 @@ signals:
     
 public slots:
     void sendKeyPress(QString key);
+    void sendKey(QString key, bool down);
 
 private:
     Display *display;