diff options
author | dec05eba <dec05eba@protonmail.com> | 2025-02-03 19:58:42 +0100 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2025-02-03 19:58:42 +0100 |
commit | 2a0782eb02058f6f174590881be5a9f1eccfdc89 (patch) | |
tree | 65044d945f3b6972acb5a91b3f8154567a801d11 /tools/gsr-global-hotkeys/keyboard_event.c | |
parent | f505323d564908ce7931c279371a66225b218bf5 (diff) |
Attempt to fix global hotkeys not working on steam deck (grabs keys, cant press buttons)
Diffstat (limited to 'tools/gsr-global-hotkeys/keyboard_event.c')
-rw-r--r-- | tools/gsr-global-hotkeys/keyboard_event.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/tools/gsr-global-hotkeys/keyboard_event.c b/tools/gsr-global-hotkeys/keyboard_event.c index 99f33ee..78a2236 100644 --- a/tools/gsr-global-hotkeys/keyboard_event.c +++ b/tools/gsr-global-hotkeys/keyboard_event.c @@ -1,4 +1,5 @@ #include "keyboard_event.h" +#include "keys.h" /* C stdlib */ #include <stdio.h> @@ -154,12 +155,6 @@ static uint32_t keycode_to_modifier_bit(uint32_t keycode) { return 0; } -static bool key_is_mouse_button(uint32_t keycode) { - return (keycode >= BTN_MISC && keycode <= BTN_GEAR_UP) - || (keycode >= BTN_TRIGGER_HAPPY && keycode <= BTN_TRIGGER_HAPPY40) - || (keycode >= BTN_DPAD_UP && keycode <= BTN_DPAD_RIGHT); -} - static void keyboard_event_process_input_event_data(keyboard_event *self, event_extra_data *extra_data, int fd) { struct input_event event; if(read(fd, &event, sizeof(event)) != sizeof(event)) { @@ -177,7 +172,7 @@ static void keyboard_event_process_input_event_data(keyboard_event *self, event_ //fprintf(stderr, "fd: %d, type: %d, pressed %d, value: %d\n", fd, event.type, event.code, event.value); //} - if(event.type == EV_KEY && !key_is_mouse_button(event.code)) { + if(event.type == EV_KEY && !is_mouse_button(event.code)) { keyboard_event_process_key_state_change(self, &event, extra_data, fd); const uint32_t modifier_bit = keycode_to_modifier_bit(event.code); if(modifier_bit == 0) { @@ -408,7 +403,8 @@ static int setup_virtual_keyboard_input(const char *name) { success &= (ioctl(fd, UI_SET_MSCBIT, MSC_SCAN) != -1); for(int i = 1; i < KEY_MAX; ++i) { - success &= (ioctl(fd, UI_SET_KEYBIT, i) != -1); + if(is_key_or_mouse_button(i)) + success &= (ioctl(fd, UI_SET_KEYBIT, i) != -1); } for(int i = 0; i < REL_MAX; ++i) { success &= (ioctl(fd, UI_SET_RELBIT, i) != -1); |