From 1b78a8ffeb9c320747422ba10bf7c26018cae580 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Tue, 31 Oct 2017 21:05:40 +0100 Subject: dinput: fix modifiers not registering Found-by: @Len62 cf. https://github.com/opentrack/opentrack/issues/688#issuecomment-34063145 --- dinput/keybinding-worker.cpp | 12 ++++++------ dinput/keybinding-worker.hpp | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'dinput') diff --git a/dinput/keybinding-worker.cpp b/dinput/keybinding-worker.cpp index 468ef477..fec28a03 100644 --- a/dinput/keybinding-worker.cpp +++ b/dinput/keybinding-worker.cpp @@ -158,9 +158,9 @@ void KeybindingWorker::run() default: { Key k; - k.shift = !!((keystate[DIK_LSHIFT] & 0x80) | (keystate[DIK_RSHIFT] & 0x80)); - k.alt = !!((keystate[DIK_LALT] & 0x80) | (keystate[DIK_RALT] & 0x80)); - k.ctrl = !!((keystate[DIK_LCONTROL] & 0x80) | (keystate[DIK_RCONTROL] & 0x80)); + k.shift = !!(keystate[DIK_LSHIFT] | keystate[DIK_RSHIFT]); + k.alt = !!(keystate[DIK_LALT] | keystate[DIK_RALT]); + k.ctrl = !!(keystate[DIK_LCONTROL] | keystate[DIK_RCONTROL]); k.keycode = idx; k.held = held; @@ -180,9 +180,9 @@ void KeybindingWorker::run() joy_fn f = [&](const QString& guid, int idx, bool held) { Key k; k.keycode = idx; - k.shift = !!(keystate[DIK_LSHIFT] & 0x80 || keystate[DIK_RSHIFT] & 0x80); - k.alt = !!(keystate[DIK_LALT] & 0x80 || keystate[DIK_RALT] & 0x80); - k.ctrl = !!(keystate[DIK_LCONTROL] & 0x80 || keystate[DIK_RCONTROL] & 0x80); + k.shift = !!(keystate[DIK_LSHIFT] | keystate[DIK_RSHIFT]); + k.alt = !!(keystate[DIK_LALT] | keystate[DIK_RALT]); + k.ctrl = !!(keystate[DIK_LCONTROL] | keystate[DIK_RCONTROL]); k.guid = guid; k.held = held; diff --git a/dinput/keybinding-worker.hpp b/dinput/keybinding-worker.hpp index f7314482..407b0107 100644 --- a/dinput/keybinding-worker.hpp +++ b/dinput/keybinding-worker.hpp @@ -49,8 +49,8 @@ private: QMainWindow fake_main_window; dinput_handle::di_t din; - unsigned char keystate[256] {}; - unsigned char old_keystate[256] {}; + bool keystate[256] {}; + bool old_keystate[256] {}; void run() override; bool init(); -- cgit v1.2.3