#include <X11/Xlib.h>
#include <X11/keysym.h>
-class SendKeysPrivate {
-public:
- SendKeysPrivate()
- {
- keys[Qt::Key_F1] = XK_F1;
- keys[Qt::Key_F2] = XK_F2;
- keys[Qt::Key_F3] = XK_F3;
- keys[Qt::Key_F4] = XK_F4;
- keys[Qt::Key_F5] = XK_F5;
- keys[Qt::Key_F6] = XK_F6;
- keys[Qt::Key_F7] = XK_F7;
- keys[Qt::Key_F8] = XK_F8;
- keys[Qt::Key_F9] = XK_F9;
- keys[Qt::Key_F10] = XK_F10;
- keys[Qt::Key_F11] = XK_F11;
- keys[Qt::Key_F12] = XK_F12;
- // Add more if needed
- };
-
- QMap<int, int> keys;
-};
-
-SendKeys::SendKeys()
- : d(new SendKeysPrivate())
-{
-}
-
-SendKeys::~SendKeys()
-{
- delete d;
-}
-
-SendKeys &SendKeys::self()
-{
- K_GLOBAL_STATIC(SendKeys, s_instance)
- return *s_instance;
-}
-
-SendKeys &SendKeys::operator<<(const QString &string)
-{
- send(string);
- return *this;
-}
-
-SendKeys &SendKeys::operator<<(uint k)
-{
- send(k);
- return *this;
-}
-
-SendKeys &SendKeys::operator<<(const QKeySequence &ks)
-{
- send(ks);
- return *this;
-}
-
-void SendKeys::send(const QString &string)
-{
- foreach(uint key, string.toUcs4()) {
- send(key);
- }
-}
-
void SendKeys::send(const QKeySequence &ks)
{
- for (uint i = 0; i < ks.count(); ++i) {
- send(ks[i]);
+ for (uint i = 0; i < ks.count(); ++i) {
+ SendKeys::send(ks[i]);
}
}
Window currentFocus;
int focusState;
- if (d->keys.contains(keycode)) {
- keycode = d->keys[keycode];
- } else if (keycode < Qt::Key_Space || keycode > Qt::Key_ydiaeresis) {
+ if (keycode < Qt::Key_Space || keycode > Qt::Key_ydiaeresis) {
return;
}
keycode = XKeysymToKeycode(dsp, keycode);
#ifndef SENDKEYS_HEADER
#define SENDKEYS_HEADER
-#include <QtGlobal>
-
-#include <QString>
#include <QKeySequence>
class SendKeys
{
- public:
- static SendKeys &self();
-
- void send(const QString &string);
- void send(uint k);
- void send(const QKeySequence &ks);
- SendKeys &operator<<(const QString &string);
- SendKeys &operator<<(uint k);
- SendKeys &operator<<(const QKeySequence &ks);
-
- private:
- SendKeys();
- ~SendKeys();
-
- class SendKeysPrivate *const d;
+public:
+ static void send(const QKeySequence &ks);
+ static void send(uint k);
};
#endif