From d8df57130a80f14d64ff6681726a5e8f697147ea Mon Sep 17 00:00:00 2001 From: WisdomCode Date: Thu, 9 Sep 2021 14:57:04 +0200 Subject: [PATCH 1/3] Apply key rewrite also when keeping key pressed --- sunshine/input.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/sunshine/input.cpp b/sunshine/input.cpp index 6568ad7cc..9d2b39629 100644 --- a/sunshine/input.cpp +++ b/sunshine/input.cpp @@ -396,18 +396,6 @@ void passthrough(std::shared_ptr &input, PNV_MOUSE_BUTTON_PACKET packet platf::button_mouse(platf_input, button, release); } -void repeat_key(short key_code) { - // If key no longer pressed, stop repeating - if(!key_press[key_code]) { - key_press_repeat_id = nullptr; - return; - } - - platf::keyboard(platf_input, key_code, false); - - key_press_repeat_id = task_pool.pushDelayed(repeat_key, config::input.key_repeat_period, key_code).task_id; -} - short map_keycode(short keycode) { auto it = config::input.keybindings.find(keycode); if(it != std::end(config::input.keybindings)) { @@ -416,6 +404,18 @@ short map_keycode(short keycode) { return keycode; } + +void repeat_key(short key_code) { + // If key no longer pressed, stop repeating + if(!key_press[key_code]) { + key_press_repeat_id = nullptr; + return; + } + + platf::keyboard(platf_input, map_keycode(keyCode), false); + + key_press_repeat_id = task_pool.pushDelayed(repeat_key, config::input.key_repeat_period, key_code).task_id; +} void passthrough(std::shared_ptr &input, PNV_KEYBOARD_PACKET packet) { auto constexpr BUTTON_RELEASED = 0x04; From 640f2b1c5561f520cc0f26dac0f53dd41a1af695 Mon Sep 17 00:00:00 2001 From: WisdomCode Date: Thu, 9 Sep 2021 15:05:04 +0200 Subject: [PATCH 2/3] Syntax --- sunshine/input.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sunshine/input.cpp b/sunshine/input.cpp index 9d2b39629..cba58602b 100644 --- a/sunshine/input.cpp +++ b/sunshine/input.cpp @@ -412,7 +412,7 @@ void repeat_key(short key_code) { return; } - platf::keyboard(platf_input, map_keycode(keyCode), false); + platf::keyboard(platf_input, map_keycode(key_code), false); key_press_repeat_id = task_pool.pushDelayed(repeat_key, config::input.key_repeat_period, key_code).task_id; } From 9be80c103ea3d1c158598a463b89dcca167cfdc0 Mon Sep 17 00:00:00 2001 From: WisdomCode Date: Thu, 9 Sep 2021 21:15:35 +0200 Subject: [PATCH 3/3] Shortcut Flags need to be adjusted as well --- sunshine/input.cpp | 78 +++++++++++++++++++++++----------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/sunshine/input.cpp b/sunshine/input.cpp index cba58602b..d0f402243 100644 --- a/sunshine/input.cpp +++ b/sunshine/input.cpp @@ -155,44 +155,6 @@ inline int apply_shortcut(short keyCode) { return 0; } -/** - * Update flags for keyboard shortcut combo's - */ -inline void update_shortcutFlags(int *flags, short keyCode, bool release) { - switch(keyCode) { - case VKEY_SHIFT: - case VKEY_LSHIFT: - case VKEY_RSHIFT: - if(release) { - *flags &= ~input_t::SHIFT; - } - else { - *flags |= input_t::SHIFT; - } - break; - case VKEY_CONTROL: - case VKEY_LCONTROL: - case VKEY_RCONTROL: - if(release) { - *flags &= ~input_t::CTRL; - } - else { - *flags |= input_t::CTRL; - } - break; - case VKEY_MENU: - case VKEY_LMENU: - case VKEY_RMENU: - if(release) { - *flags &= ~input_t::ALT; - } - else { - *flags |= input_t::ALT; - } - break; - } -} - void print(PNV_REL_MOUSE_MOVE_PACKET packet) { BOOST_LOG(debug) << "--begin relative mouse move packet--"sv << std::endl @@ -404,7 +366,45 @@ short map_keycode(short keycode) { return keycode; } - + +/** + * Update flags for keyboard shortcut combo's + */ +inline void update_shortcutFlags(int *flags, short keyCode, bool release) { + switch(map_keycode(keyCode)) { + case VKEY_SHIFT: + case VKEY_LSHIFT: + case VKEY_RSHIFT: + if(release) { + *flags &= ~input_t::SHIFT; + } + else { + *flags |= input_t::SHIFT; + } + break; + case VKEY_CONTROL: + case VKEY_LCONTROL: + case VKEY_RCONTROL: + if(release) { + *flags &= ~input_t::CTRL; + } + else { + *flags |= input_t::CTRL; + } + break; + case VKEY_MENU: + case VKEY_LMENU: + case VKEY_RMENU: + if(release) { + *flags &= ~input_t::ALT; + } + else { + *flags |= input_t::ALT; + } + break; + } +} + void repeat_key(short key_code) { // If key no longer pressed, stop repeating if(!key_press[key_code]) {