From dafd37c4d6927b316d630ae6187369b4dcf2986c Mon Sep 17 00:00:00 2001 From: Dustin Bensing Date: Tue, 16 Jul 2013 23:08:00 +0200 Subject: [PATCH] trying to build keyboard --- XInputSimulator/XInputSimulator.pro | 2 +- XInputSimulator/main.cpp | 12 ++++- XInputSimulator/xinputsimulator.cpp | 4 +- XInputSimulator/xinputsimulator.h | 2 +- XInputSimulator/xinputsimulatorimpl.h | 2 +- XInputSimulator/xinputsimulatorimpllinux.cpp | 49 +++++++++++++++++--- XInputSimulator/xinputsimulatorimpllinux.h | 4 +- XInputSimulator/xinputsimulatorimplmacos.cpp | 2 +- XInputSimulator/xinputsimulatorimplmacos.h | 2 +- XInputSimulator/xinputsimulatorimplwin.cpp | 2 +- XInputSimulator/xinputsimulatorimplwin.h | 2 +- 11 files changed, 66 insertions(+), 17 deletions(-) diff --git a/XInputSimulator/XInputSimulator.pro b/XInputSimulator/XInputSimulator.pro index c12d423..81ac1c4 100644 --- a/XInputSimulator/XInputSimulator.pro +++ b/XInputSimulator/XInputSimulator.pro @@ -26,7 +26,7 @@ macx { } unix:!macx{ # linux only - LIBS += -lX11 + LIBS += -lX11 -lXtst } win32 { # windows only diff --git a/XInputSimulator/main.cpp b/XInputSimulator/main.cpp index f43792c..6334c93 100644 --- a/XInputSimulator/main.cpp +++ b/XInputSimulator/main.cpp @@ -50,8 +50,18 @@ int main() waitABit(); sim.mouseScrollX(-10); +// char anA = 'a'; +// cout << "a: " << (int)anA << " " << sim.charToKeyCode(anA) << endl; +// std::cout << std::endl; +// waitABit(); +// sim.keyClick(sim.charToKeyCode(anA)); +// std::cout << std::endl; +// waitABit(); +// sim.keySequence(" Simple sentence Here 123 "); - waitABit(); + + + //waitABit(); return 0; } diff --git a/XInputSimulator/xinputsimulator.cpp b/XInputSimulator/xinputsimulator.cpp index 0a6e7e8..a6c9c09 100644 --- a/XInputSimulator/xinputsimulator.cpp +++ b/XInputSimulator/xinputsimulator.cpp @@ -75,9 +75,9 @@ void XInputSimulator::keyClick(int key) implementation->keyClick(key); } -void XInputSimulator::charToKeyCode(char key_char) +int XInputSimulator::charToKeyCode(char key_char) { - implementation->charToKeyCode(key_char); + return implementation->charToKeyCode(key_char); } void XInputSimulator::keySequence(const std::string &sequence) diff --git a/XInputSimulator/xinputsimulator.h b/XInputSimulator/xinputsimulator.h index d582c7f..103ff88 100644 --- a/XInputSimulator/xinputsimulator.h +++ b/XInputSimulator/xinputsimulator.h @@ -72,7 +72,7 @@ public: void keyUp(int key); void keyClick(int key); - void charToKeyCode(char key_char); + int charToKeyCode(char key_char); void keySequence(const std::string &sequence); // mouse diff --git a/XInputSimulator/xinputsimulatorimpl.h b/XInputSimulator/xinputsimulatorimpl.h index ee17f4f..2482dce 100644 --- a/XInputSimulator/xinputsimulatorimpl.h +++ b/XInputSimulator/xinputsimulatorimpl.h @@ -39,7 +39,7 @@ public: virtual void keyUp(int key) = 0; virtual void keyClick(int key) = 0; - virtual void charToKeyCode(char key_char) = 0; + virtual int charToKeyCode(char key_char) = 0; virtual void keySequence(const std::string &sequence) = 0; }; diff --git a/XInputSimulator/xinputsimulatorimpllinux.cpp b/XInputSimulator/xinputsimulatorimpllinux.cpp index b4dfee7..bd585b0 100644 --- a/XInputSimulator/xinputsimulatorimpllinux.cpp +++ b/XInputSimulator/xinputsimulatorimpllinux.cpp @@ -141,26 +141,63 @@ void XInputSimulatorImplLinux::mouseScrollY(int length) void XInputSimulatorImplLinux::keyDown(int key) { - throw NotImplementedException(); + //throw NotImplementedException(); + XTestFakeKeyEvent(display, key, True, 0); + XFlush(display); } void XInputSimulatorImplLinux::keyUp(int key) { - throw NotImplementedException(); + //throw NotImplementedException(); + XTestFakeKeyEvent(display, key, False, 0); + XFlush(display); } void XInputSimulatorImplLinux::keyClick(int key) { - throw NotImplementedException(); + std::cout << "key click: " << key << std::endl; + //throw NotImplementedException(); + this->keyDown(key); + this->keyUp(key); } -void XInputSimulatorImplLinux::charToKeyCode(char key_char) +int XInputSimulatorImplLinux::charToKeyCode(char key_char) { - throw NotImplementedException(); + std::cout << "cchar: " << (int)key_char << std::endl; + + //throw NotImplementedException(); + +// KeySym sym = XStringToKeysym(&key_char); + +// std::cout << "sym: " << sym << std::endl; + + int keyCode = XKeysymToKeycode(display, key_char); + std::cout << "ccode: " << keyCode << std::endl; + + return keyCode; } void XInputSimulatorImplLinux::keySequence(const std::string &sequence) { - throw NotImplementedException(); + //throw NotImplementedException(); + + std::cout << "key seq: " << sequence << std::endl; + + //c++11 training +// for(auto it = sequence.begin(); it != sequence.end(); ++it) { +// std::cout << "key org: " << (int)(*it) << std::endl; +// int keyCode = this->charToKeyCode(*it); +// std::cout << "key code: " << keyCode << std::endl; +// this->keyClick(keyCode); +// } + //c++11 better + for(const char c : sequence) { + std::cout << "cahr: " << c << std::endl; + int keyCode = this->charToKeyCode(c); + std::cout << "key code: " << keyCode << std::endl; + this->keyClick(keyCode); + std::cout << std::endl; + } + } diff --git a/XInputSimulator/xinputsimulatorimpllinux.h b/XInputSimulator/xinputsimulatorimpllinux.h index df604b1..9cd0e63 100644 --- a/XInputSimulator/xinputsimulatorimpllinux.h +++ b/XInputSimulator/xinputsimulatorimpllinux.h @@ -22,6 +22,8 @@ #include #include +#include +#include #include "xinputsimulatorimpl.h" @@ -50,7 +52,7 @@ public: virtual void keyUp(int key) override; virtual void keyClick(int key) override; - virtual void charToKeyCode(char key_char) override; + virtual int charToKeyCode(char key_char) override; virtual void keySequence(const std::string &sequence) override; }; diff --git a/XInputSimulator/xinputsimulatorimplmacos.cpp b/XInputSimulator/xinputsimulatorimplmacos.cpp index cb14a5c..71938fd 100644 --- a/XInputSimulator/xinputsimulatorimplmacos.cpp +++ b/XInputSimulator/xinputsimulatorimplmacos.cpp @@ -192,7 +192,7 @@ void XInputSimulatorImplMacOs::keyClick(int key) throw NotImplementedException(); } -void XInputSimulatorImplMacOs::charToKeyCode(char key_char) +int XInputSimulatorImplMacOs::charToKeyCode(char key_char) { throw NotImplementedException(); } diff --git a/XInputSimulator/xinputsimulatorimplmacos.h b/XInputSimulator/xinputsimulatorimplmacos.h index e713545..c799edb 100644 --- a/XInputSimulator/xinputsimulatorimplmacos.h +++ b/XInputSimulator/xinputsimulatorimplmacos.h @@ -47,7 +47,7 @@ public: virtual void keyUp(int key) override; virtual void keyClick(int key) override; - virtual void charToKeyCode(char key_char) override; + virtual int charToKeyCode(char key_char) override; virtual void keySequence(const std::string &sequence) override; }; diff --git a/XInputSimulator/xinputsimulatorimplwin.cpp b/XInputSimulator/xinputsimulatorimplwin.cpp index 32873e5..e676169 100644 --- a/XInputSimulator/xinputsimulatorimplwin.cpp +++ b/XInputSimulator/xinputsimulatorimplwin.cpp @@ -149,7 +149,7 @@ void XInputSimulatorImplWin::keyClick(int key) throw NotImplementedException(); } -void XInputSimulatorImplWin::charToKeyCode(char key_char) +int XInputSimulatorImplWin::charToKeyCode(char key_char) { throw NotImplementedException(); } diff --git a/XInputSimulator/xinputsimulatorimplwin.h b/XInputSimulator/xinputsimulatorimplwin.h index b6b5414..1714d4f 100644 --- a/XInputSimulator/xinputsimulatorimplwin.h +++ b/XInputSimulator/xinputsimulatorimplwin.h @@ -46,7 +46,7 @@ public: virtual void keyUp(int key) override; virtual void keyClick(int key) override; - virtual void charToKeyCode(char key_char) override; + virtual int charToKeyCode(char key_char) override; virtual void keySequence(const std::string &sequence) override; };