From 603130ef841ea23e317ccfa47385099b4466d8d5 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sat, 24 Oct 2015 11:21:16 +0200 Subject: shortcuts: allow for binding same key to multiple functions Closes #258 --- opentrack/shortcuts.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'opentrack') diff --git a/opentrack/shortcuts.cpp b/opentrack/shortcuts.cpp index 91480d16..91d449f1 100644 --- a/opentrack/shortcuts.cpp +++ b/opentrack/shortcuts.cpp @@ -154,21 +154,21 @@ void Shortcuts::bind_keyboard_shortcut(K &key, key_opts& k) void Shortcuts::receiver(Key &k) { std::vector ks { &keyCenter, &keyToggle, &keyZero }; - for (auto& k_ : ks) + for (K* k_ : ks) { if (k.keycode != k_->keycode) continue; if (!k_->should_process()) - return; - if (k_->alt && !k.alt) return; - if (k_->ctrl && !k.ctrl) return; - if (k_->shift && !k.shift) return; - - if (k.keycode == keyCenter.keycode) + continue; + if (k_->alt && !k.alt) continue; + if (k_->ctrl && !k.ctrl) continue; + if (k_->shift && !k.shift) continue; + + if (k_ == &keyCenter) emit center(); - else if (k.keycode == keyToggle.keycode) + else if (k_ == &keyToggle) emit toggle(); - else if (k.keycode == keyZero.keycode) + else if (k_ == &keyZero) emit zero(); } } -- cgit v1.2.3 From c8fa6d2099874e0f2c9bd72f9c6735ebf31ccbb1 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sun, 25 Oct 2015 07:07:27 +0100 Subject: shortcuts: allow for numlock on win32 --- opentrack/win32-shortcuts.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'opentrack') diff --git a/opentrack/win32-shortcuts.cpp b/opentrack/win32-shortcuts.cpp index 96232631..e3a5448e 100644 --- a/opentrack/win32-shortcuts.cpp +++ b/opentrack/win32-shortcuts.cpp @@ -120,6 +120,7 @@ QList windows_key_sequences = win_key(DIK_SYSRQ, Qt::Key::Key_Print), win_key(DIK_SCROLL, Qt::Key::Key_ScrollLock), win_key(DIK_PAUSE, Qt::Key::Key_Pause), + win_key(DIK_NUMLOCK, Qt::Key::Key_NumLock), }); bool win_key::to_qt(const Key& k, QKeySequence& qt_, Qt::KeyboardModifiers &mods) -- cgit v1.2.3 From 18efc635a8d8cbe877701f519704c0bb16158e3c Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sun, 25 Oct 2015 16:42:31 +0100 Subject: shortcuts: allow for numpad on win32 Closes #259 --- opentrack/win32-shortcuts.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'opentrack') diff --git a/opentrack/win32-shortcuts.cpp b/opentrack/win32-shortcuts.cpp index e3a5448e..350d99c3 100644 --- a/opentrack/win32-shortcuts.cpp +++ b/opentrack/win32-shortcuts.cpp @@ -121,6 +121,26 @@ QList windows_key_sequences = win_key(DIK_SCROLL, Qt::Key::Key_ScrollLock), win_key(DIK_PAUSE, Qt::Key::Key_Pause), win_key(DIK_NUMLOCK, Qt::Key::Key_NumLock), +#define mod(x, y) static_cast(x | y) + win_key(DIK_NUMPAD0, mod(Qt::Key::Key_0, Qt::KeypadModifier)), + win_key(DIK_NUMPAD0, mod(Qt::Key::Key_0, Qt::KeypadModifier)), + win_key(DIK_NUMPAD1, mod(Qt::Key::Key_1, Qt::KeypadModifier)), + win_key(DIK_NUMPAD2, mod(Qt::Key::Key_2, Qt::KeypadModifier)), + win_key(DIK_NUMPAD3, mod(Qt::Key::Key_3, Qt::KeypadModifier)), + win_key(DIK_NUMPAD4, mod(Qt::Key::Key_4, Qt::KeypadModifier)), + win_key(DIK_NUMPAD5, mod(Qt::Key::Key_5, Qt::KeypadModifier)), + win_key(DIK_NUMPAD6, mod(Qt::Key::Key_6, Qt::KeypadModifier)), + win_key(DIK_NUMPAD7, mod(Qt::Key::Key_7, Qt::KeypadModifier)), + win_key(DIK_NUMPAD8, mod(Qt::Key::Key_8, Qt::KeypadModifier)), + win_key(DIK_NUMPAD9, mod(Qt::Key::Key_9, Qt::KeypadModifier)), + win_key(DIK_NUMPADCOMMA, mod(Qt::Key::Key_Comma, Qt::KeypadModifier)), + win_key(DIK_NUMPADENTER, mod(Qt::Key::Key_Enter, Qt::KeypadModifier)), + win_key(DIK_NUMPADEQUALS, mod(Qt::Key::Key_Equal, Qt::KeypadModifier)), + win_key(DIK_NUMPADMINUS, mod(Qt::Key::Key_Minus, Qt::KeypadModifier)), + win_key(DIK_NUMPADPERIOD, mod(Qt::Key::Key_Period, Qt::KeypadModifier)), + win_key(DIK_NUMPADPLUS, mod(Qt::Key::Key_Plus, Qt::KeypadModifier)), + win_key(DIK_NUMPADSLASH, mod(Qt::Key::Key_Slash, Qt::KeypadModifier)), + win_key(DIK_NUMPADSTAR, mod(Qt::Key::Key_multiply, Qt::KeypadModifier)), }); bool win_key::to_qt(const Key& k, QKeySequence& qt_, Qt::KeyboardModifiers &mods) -- cgit v1.2.3 From 1ad391151314daf4ba689f3cc684c0a2d836e3a7 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sun, 25 Oct 2015 16:43:15 +0100 Subject: shortcuts: remove obsolete code on win32 Now that dinput catches keystrokes, it's not needed --- opentrack/win32-shortcuts.cpp | 27 +-------------------------- 1 file changed, 1 insertion(+), 26 deletions(-) (limited to 'opentrack') diff --git a/opentrack/win32-shortcuts.cpp b/opentrack/win32-shortcuts.cpp index 350d99c3..1f1d51a4 100644 --- a/opentrack/win32-shortcuts.cpp +++ b/opentrack/win32-shortcuts.cpp @@ -164,33 +164,8 @@ bool win_key::from_qt(QKeySequence qt_, int& dik, Qt::KeyboardModifiers& mods) { auto qt = static_cast(qt_).toInt(); auto our_mods = qt & Qt::KeyboardModifierMask; - const auto our_mods_ = our_mods; - our_mods |= Qt::ShiftModifier; - switch (qt & ~Qt::KeyboardModifierMask) - { - case Qt::Key::Key_BraceLeft: qt = Qt::Key::Key_BracketLeft; break; - case Qt::Key::Key_BraceRight: qt = Qt::Key::Key_BracketRight; break; - case Qt::Key::Key_ParenLeft: qt = Qt::Key::Key_9; break; - case Qt::Key::Key_ParenRight: qt = Qt::Key::Key_0; break; - - case Qt::Key::Key_Exclam: qt = Qt::Key::Key_1; break; - case Qt::Key::Key_At: qt = Qt::Key::Key_2; break; - case Qt::Key::Key_NumberSign: qt = Qt::Key::Key_3; break; - case Qt::Key::Key_Dollar: qt = Qt::Key::Key_4; break; - case Qt::Key::Key_Percent: qt = Qt::Key::Key_5; break; - case Qt::Key::Key_AsciiCircum: qt = Qt::Key::Key_6; break; - case Qt::Key::Key_Ampersand: qt = Qt::Key::Key_7; break; - case Qt::Key::Key_Asterisk: qt = Qt::Key::Key_8; break; - case Qt::Key::Key_Underscore: qt = Qt::Key::Key_Minus; break; - case Qt::Key::Key_Plus: qt = Qt::Key::Key_Equal; break; - - case Qt::Key::Key_Colon: qt = Qt::Key::Key_Semicolon; break; - case Qt::Key::Key_QuoteDbl: qt = Qt::Key::Key_Apostrophe; break; - case Qt::Key::Key_Less: qt = Qt::Key::Key_Comma; break; - case Qt::Key::Key_Question: qt = Qt::Key::Key_Slash; break; - case Qt::Key::Key_Bar: qt = Qt::Key::Key_Backslash; break; - default: our_mods = our_mods_; break; + { } const auto key = qt & ~Qt::KeyboardModifierMask; -- cgit v1.2.3 From 7be318b0ed09705bfbc62adc25c8b1a399b1f656 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sun, 25 Oct 2015 16:43:31 +0100 Subject: win32: try win_key with modifier first --- opentrack/win32-shortcuts.cpp | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'opentrack') diff --git a/opentrack/win32-shortcuts.cpp b/opentrack/win32-shortcuts.cpp index 1f1d51a4..a0ed51b3 100644 --- a/opentrack/win32-shortcuts.cpp +++ b/opentrack/win32-shortcuts.cpp @@ -166,16 +166,27 @@ bool win_key::from_qt(QKeySequence qt_, int& dik, Qt::KeyboardModifiers& mods) auto our_mods = qt & Qt::KeyboardModifierMask; { + const auto key_ = qt; + for (auto& wk : windows_key_sequences) + { + if (wk.qt == key_) + { + dik = wk.win; + mods = Qt::NoModifier; + return true; + } + } } - - const auto key = qt & ~Qt::KeyboardModifierMask; - for (auto& wk : windows_key_sequences) { - if (wk.qt == key) + const auto key = qt & ~Qt::KeyboardModifierMask; + for (auto& wk : windows_key_sequences) { - dik = wk.win; - mods = static_cast(our_mods); - return true; + if (wk.qt == key) + { + dik = wk.win; + mods = static_cast(our_mods); + return true; + } } } return false; -- cgit v1.2.3 From 8f7e5c0441237a9c8c187f24a424f6c77c5e397e Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Mon, 26 Oct 2015 07:09:10 +0100 Subject: main: use camera-based centering by default --- opentrack/main-settings.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'opentrack') diff --git a/opentrack/main-settings.hpp b/opentrack/main-settings.hpp index d1fe574d..613223ce 100644 --- a/opentrack/main-settings.hpp +++ b/opentrack/main-settings.hpp @@ -58,6 +58,6 @@ struct main_settings : opts { camera_pitch(b, "camera-pitch", 0), camera_roll(b, "camera-roll", 0), center_at_startup(b, "center-at-startup", true), - center_method(b, "centering-method", false) + center_method(b, "centering-method", true) {} }; -- cgit v1.2.3