From 590ec0c77da202213af7869c2a29d32317cf39a5 Mon Sep 17 00:00:00 2001 From: Jens Peters Date: Thu, 30 Nov 2023 23:25:13 +0100 Subject: [PATCH] keyboard: allow back by arrow-up or arrow-left in cycle view OSD All non-modifier keys cycle forward which makes sense for e.g. tab but is not very intuitive for arrow-up or arrow-left. Handle those keys separately to provide a feel of navigation by arrow keys in the cycle view OSD. --- src/input/keyboard.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/input/keyboard.c b/src/input/keyboard.c index d7918837..8c0fe1d3 100644 --- a/src/input/keyboard.c +++ b/src/input/keyboard.c @@ -354,8 +354,17 @@ handle_cycle_view_key(struct server *server, struct keyinfo *keyinfo) } /* cycle to next */ - bool backwards = keyinfo->modifiers & WLR_MODIFIER_SHIFT; if (!keyinfo->is_modifier) { + bool back_key = false; + for (int i = 0; i < keyinfo->translated.nr_syms; i++) { + if (keyinfo->translated.syms[i] == XKB_KEY_Up + || keyinfo->translated.syms[i] == XKB_KEY_Left) { + back_key = true; + break; + } + } + bool backwards = (keyinfo->modifiers & WLR_MODIFIER_SHIFT) || back_key; + enum lab_cycle_dir dir = backwards ? LAB_CYCLE_DIR_BACKWARD : LAB_CYCLE_DIR_FORWARD;