From 726e0c7dcea3f187ac02bcd25a1a049b98b84502 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sun, 23 Mar 2025 00:22:49 +0100 Subject: Allow binding non alpha-numerical keys without a modifier --- tools/gsr-global-hotkeys/keyboard_event.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'tools/gsr-global-hotkeys/keyboard_event.c') diff --git a/tools/gsr-global-hotkeys/keyboard_event.c b/tools/gsr-global-hotkeys/keyboard_event.c index f3fba62..c2bd75a 100644 --- a/tools/gsr-global-hotkeys/keyboard_event.c +++ b/tools/gsr-global-hotkeys/keyboard_event.c @@ -575,6 +575,13 @@ static int parse_u8(const char *str, int size) { return result; } +static bool is_key_alpha_numerical(uint8_t key) { + return (key >= KEY_1 && key <= KEY_0) + || (key >= KEY_Q && key <= KEY_P) + || (key >= KEY_A && key <= KEY_L) + || (key >= KEY_Z && key <= KEY_M); +} + static bool keyboard_event_parse_bind_keys(const char *str, int size, uint8_t *key, uint32_t *modifiers) { *key = 0; *modifiers = 0; @@ -609,13 +616,13 @@ static bool keyboard_event_parse_bind_keys(const char *str, int size, uint8_t *k break; } - if(key == 0) { + if(*key == 0) { fprintf(stderr, "Error: can't bind hotkey without a non-modifier key\n"); return false; } - if(modifiers == 0) { - fprintf(stderr, "Error: can't bind hotkey without a modifier\n"); + if(*modifiers == 0 && is_key_alpha_numerical(*key)) { + fprintf(stderr, "Error: can't bind hotkey without a modifier unless the key is a non alpha-numerical key\n"); return false; } -- cgit v1.2.3-70-g09d2