Skip to content

Commit fbc3735

Browse files
Merge pull request #210 from WisdomCode/master
Apply key rewrite also when keeping key pressed
2 parents 3ba0533 + 9be80c1 commit fbc3735

File tree

1 file changed

+48
-48
lines changed

1 file changed

+48
-48
lines changed

sunshine/input.cpp

+48-48
Original file line numberDiff line numberDiff line change
@@ -155,44 +155,6 @@ inline int apply_shortcut(short keyCode) {
155155
return 0;
156156
}
157157

158-
/**
159-
* Update flags for keyboard shortcut combo's
160-
*/
161-
inline void update_shortcutFlags(int *flags, short keyCode, bool release) {
162-
switch(keyCode) {
163-
case VKEY_SHIFT:
164-
case VKEY_LSHIFT:
165-
case VKEY_RSHIFT:
166-
if(release) {
167-
*flags &= ~input_t::SHIFT;
168-
}
169-
else {
170-
*flags |= input_t::SHIFT;
171-
}
172-
break;
173-
case VKEY_CONTROL:
174-
case VKEY_LCONTROL:
175-
case VKEY_RCONTROL:
176-
if(release) {
177-
*flags &= ~input_t::CTRL;
178-
}
179-
else {
180-
*flags |= input_t::CTRL;
181-
}
182-
break;
183-
case VKEY_MENU:
184-
case VKEY_LMENU:
185-
case VKEY_RMENU:
186-
if(release) {
187-
*flags &= ~input_t::ALT;
188-
}
189-
else {
190-
*flags |= input_t::ALT;
191-
}
192-
break;
193-
}
194-
}
195-
196158
void print(PNV_REL_MOUSE_MOVE_PACKET packet) {
197159
BOOST_LOG(debug)
198160
<< "--begin relative mouse move packet--"sv << std::endl
@@ -396,27 +358,65 @@ void passthrough(std::shared_ptr<input_t> &input, PNV_MOUSE_BUTTON_PACKET packet
396358
platf::button_mouse(platf_input, button, release);
397359
}
398360

361+
short map_keycode(short keycode) {
362+
auto it = config::input.keybindings.find(keycode);
363+
if(it != std::end(config::input.keybindings)) {
364+
return it->second;
365+
}
366+
367+
return keycode;
368+
}
369+
370+
/**
371+
* Update flags for keyboard shortcut combo's
372+
*/
373+
inline void update_shortcutFlags(int *flags, short keyCode, bool release) {
374+
switch(map_keycode(keyCode)) {
375+
case VKEY_SHIFT:
376+
case VKEY_LSHIFT:
377+
case VKEY_RSHIFT:
378+
if(release) {
379+
*flags &= ~input_t::SHIFT;
380+
}
381+
else {
382+
*flags |= input_t::SHIFT;
383+
}
384+
break;
385+
case VKEY_CONTROL:
386+
case VKEY_LCONTROL:
387+
case VKEY_RCONTROL:
388+
if(release) {
389+
*flags &= ~input_t::CTRL;
390+
}
391+
else {
392+
*flags |= input_t::CTRL;
393+
}
394+
break;
395+
case VKEY_MENU:
396+
case VKEY_LMENU:
397+
case VKEY_RMENU:
398+
if(release) {
399+
*flags &= ~input_t::ALT;
400+
}
401+
else {
402+
*flags |= input_t::ALT;
403+
}
404+
break;
405+
}
406+
}
407+
399408
void repeat_key(short key_code) {
400409
// If key no longer pressed, stop repeating
401410
if(!key_press[key_code]) {
402411
key_press_repeat_id = nullptr;
403412
return;
404413
}
405414

406-
platf::keyboard(platf_input, key_code, false);
415+
platf::keyboard(platf_input, map_keycode(key_code), false);
407416

408417
key_press_repeat_id = task_pool.pushDelayed(repeat_key, config::input.key_repeat_period, key_code).task_id;
409418
}
410419

411-
short map_keycode(short keycode) {
412-
auto it = config::input.keybindings.find(keycode);
413-
if(it != std::end(config::input.keybindings)) {
414-
return it->second;
415-
}
416-
417-
return keycode;
418-
}
419-
420420
void passthrough(std::shared_ptr<input_t> &input, PNV_KEYBOARD_PACKET packet) {
421421
auto constexpr BUTTON_RELEASED = 0x04;
422422

0 commit comments

Comments
 (0)