diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2017-06-05 08:58:11 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2017-06-05 08:58:11 +0200 |
commit | 8682714c74f66e2e33e47db559e983208d6a2aaa (patch) | |
tree | f48b175abece2e9f811de7c3544b38acfac9938b /gui/keyboard.cpp | |
parent | 8c0955603770bd130ae1290a0fdeca0e6c0039b6 (diff) |
gui: split from header
Diffstat (limited to 'gui/keyboard.cpp')
-rw-r--r-- | gui/keyboard.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/gui/keyboard.cpp b/gui/keyboard.cpp new file mode 100644 index 00000000..1426300f --- /dev/null +++ b/gui/keyboard.cpp @@ -0,0 +1,54 @@ +#include "keyboard.h" + +#include <QDebug> + +KeyboardListener::KeyboardListener(QWidget* parent) : + QDialog(parent) +#if defined _WIN32 + , token([&](const Key& k) { + if(k.guid != "") + { + int mods = 0; + if (k.alt) mods |= Qt::AltModifier; + if (k.shift) mods |= Qt::ShiftModifier; + if (k.ctrl) mods |= Qt::ControlModifier; + joystick_button_pressed(k.guid, k.keycode | mods, k.held); + } + else + { + Qt::KeyboardModifiers m; + QKeySequence k_; + if (win_key::to_qt(k, k_, m)) + key_pressed(static_cast<QVariant>(k_).toInt() | m); + } + }) +// token initializer ends, real ctor body begins +#endif +{ + ui.setupUi(this); + setFocusPolicy(Qt::StrongFocus); +} + +#if !defined _WIN32 +void KeyboardListener::keyPressEvent(QKeyEvent* event) +{ + switch (event->key()) + { + case Qt::Key_Control: + case Qt::Key_Shift: + case Qt::Key_Meta: + case Qt::Key_Alt: + case Qt::Key_AltGr: + case Qt::Key_CapsLock: + case Qt::Key_NumLock: + break; + case Qt::Key_Escape: + close(); + break; + + default: + emit key_pressed(QKeySequence(event->key() | event->modifiers())); + break; + } +} +#endif |