From df48c48123de88a91362844881fa20eddc30f597 Mon Sep 17 00:00:00 2001 From: Linus Heckemann Date: Mon, 23 Mar 2020 12:34:04 +0100 Subject: add --no-repeat option for bindings This allows e.g. triggering one command while a key is held, then triggering another to undo the change performed by it afterwards. One use case for this is triggering push-to-talk functionality for VoIP tools without granting them full access to all input events. Fixes #3151 --- sway/input/keyboard.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'sway/input') diff --git a/sway/input/keyboard.c b/sway/input/keyboard.c index 9c5f190e..30756acb 100644 --- a/sway/input/keyboard.c +++ b/sway/input/keyboard.c @@ -431,7 +431,8 @@ static void handle_key_event(struct sway_keyboard *keyboard, // Set up (or clear) keyboard repeat for a pressed binding. Since the // binding may remove the keyboard, the timer needs to be updated first - if (binding && wlr_device->keyboard->repeat_info.delay > 0) { + if (binding && !(binding->flags & BINDING_NOREPEAT) && + wlr_device->keyboard->repeat_info.delay > 0) { keyboard->repeat_binding = binding; if (wl_event_source_timer_update(keyboard->key_repeat_source, wlr_device->keyboard->repeat_info.delay) < 0) { -- cgit v1.2.3