diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2015-10-30 08:34:40 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2015-10-30 08:39:33 +0100 |
commit | 2160e39a4f3d5198eafbb483671583a5a0b51eaa (patch) | |
tree | 2370dd4e9a7b43c204d175af3ab2a0ff5b33c41d /gui/keyboard.h | |
parent | aa066bdd4622d4f6824fee864f6be6806813f04d (diff) |
rename gui directory
Diffstat (limited to 'gui/keyboard.h')
-rw-r--r-- | gui/keyboard.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/gui/keyboard.h b/gui/keyboard.h new file mode 100644 index 00000000..62a9ce20 --- /dev/null +++ b/gui/keyboard.h @@ -0,0 +1,50 @@ +#pragma once +#include "ui_keyboard_listener.h" +#ifdef _WIN32 +#include "opentrack/win32-shortcuts.h" +#include "opentrack/shortcuts.h" +#endif +#include <QLabel> +#include <QKeyEvent> +#include <QDebug> + +class KeyboardListener : public QLabel +{ + Q_OBJECT + Ui_keyboard_listener ui; +#ifdef _WIN32 + KeybindingWorker w; +#endif +public: + KeyboardListener(QWidget* parent = nullptr) : QLabel(parent) +#ifdef _WIN32 + , w([&](Key& k) + { + Qt::KeyboardModifiers m; + QKeySequence k_; + if (win_key::to_qt(k, k_, m)) + key_pressed(static_cast<QVariant>(k_).toInt() | m); + }, this->winId()) +#endif + { + ui.setupUi(this); + setFocusPolicy(Qt::StrongFocus); +#ifdef _WIN32 + w.start(); +#endif + } +#ifndef _WIN32 + void keyPressEvent(QKeyEvent* event) override + { + //qDebug() << "k" << (event->key() | event->modifiers()); + switch (event->key() | event->modifiers()) + { + default: + emit key_pressed(QKeySequence(event->key() | event->modifiers())); + break; + } + } +#endif +signals: + void key_pressed(QKeySequence k); +}; |