From 5ff499fed39e8840c164b15d7d19386640db5c82 Mon Sep 17 00:00:00 2001 From: Ruediger Gad Date: Thu, 12 Apr 2012 13:41:54 +0200 Subject: [PATCH] First prototype for sending key events. --- main.cpp | 2 ++ qml/QZeeControl/MainPage.qml | 32 ++++++++++++++++++++++++++++---- xtstadapter.h | 6 ++++++ 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/main.cpp b/main.cpp index 9a89289..7296149 100644 --- a/main.cpp +++ b/main.cpp @@ -21,12 +21,14 @@ #include #include "qmlapplicationviewer.h" #include "btconnector.h" +#include "xtstadapter.h" Q_DECL_EXPORT int main(int argc, char *argv[]) { QScopedPointer app(createApplication(argc, argv)); qmlRegisterType("qzeecontrol", 1, 0, "BtConnector"); + qmlRegisterType("qzeecontrol", 1, 0, "XtstAdapter"); QmlApplicationViewer viewer; viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); diff --git a/qml/QZeeControl/MainPage.qml b/qml/QZeeControl/MainPage.qml index c03ab78..ef75026 100644 --- a/qml/QZeeControl/MainPage.qml +++ b/qml/QZeeControl/MainPage.qml @@ -169,9 +169,33 @@ Page { labelD.color = d ? "red" : "blue" } - onAChanged: console.log("A changed to: " + val) - onBChanged: console.log("B changed to: " + val) - onCChanged: console.log("C changed to: " + val) - onDChanged: console.log("D changed to: " + val) + onAChanged: { + console.log("A changed to: " + val) + if(val){ + xtstAdapter.sendKeyPress("a"); + } + } + onBChanged: { + console.log("B changed to: " + val) + if(val){ + xtstAdapter.sendKeyPress("b"); + } + } + onCChanged: { + console.log("C changed to: " + val) + if(val){ + xtstAdapter.sendKeyPress("c"); + } + } + onDChanged: { + console.log("D changed to: " + val) + if(val){ + xtstAdapter.sendKeyPress("d"); + } + } + } + + XtstAdapter{ + id: xtstAdapter } } diff --git a/xtstadapter.h b/xtstadapter.h index 65c108b..6ed1d5d 100644 --- a/xtstadapter.h +++ b/xtstadapter.h @@ -18,6 +18,12 @@ public: signals: public slots: + void sendKeyPress(QString key){ + int keyCode = XKeysymToKeycode(display, XStringToKeysym(key.toLocal8Bit().constData())); + XTestFakeKeyEvent(display, keyCode, true, 0); + XTestFakeKeyEvent(display, keyCode, false, 0); + XFlush(display); + } private: Display *display; -- 1.7.9.5