6

Does anybody know true cross-platform C++ library for simulating keyboard input?

I'd make a google plus stackoverflow research, but didn't found neither Qt-based, nor generic C++ library for Windows, Linux/X11 and Mac OS X.

Only some code snippens are avaliable like these:

Windows:

  • There are tons of examples how to make this via keybd_event function.

Linux:

Mac OS X

So, the question is did I missed something? Is this world have a cross-platform C++ library for simulating keyboard input?

P.S.: when i wrote this question, site suggests in "Similar Questions" block a cool idea - to research in free game engines. Indeed, there are many cross-platform open source game engines, that have keyboard input modules. So, even they doesn't have a keyboard emulation, they have a good starting point for develop such library.

UPDATE 1: it's not quiet fun, that FreePascal/Lazarus already have such library. It is nice to see that library architecture: http://wiki.lazarus.freepascal.org/MouseAndKeyInput

Community
  • 1
  • 1
Maxim Korobov
  • 2,574
  • 1
  • 26
  • 44

1 Answers1

4

You could achieve this with Qt, but not in a true platform independant manner. With Qt you have two ways:

  1. Use the Qt methods keyClick(), keyPress(), ... methods to simulate the coresponding events. But note, that this only works for the own program, not for other processes.
  2. Use the events winEvent(), x11Event() and macEvent() and fire the platform specific messages. These messages are not reflected by Qt and must be surrounded with #ifdef ... #endif to make the source compileable on all platforms.
  • 1. I'm sorry, question doesn't not clearly describe, that it should to fire system-wide event; 2. Interesting! But could you show a small snippet, for example, for Linux? Qt help said (developer.qt.nokia.com/doc/qt-4.8/qwidget.html) that they are only event handlers. – Maxim Korobov Feb 23 '12 at 09:11