From: Jens Peters Date: Thu, 30 Nov 2023 22:25:13 +0000 (+0100) Subject: keyboard: allow back by arrow-up or arrow-left in cycle view OSD X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=590ec0c77da202213af7869c2a29d32317cf39a5;p=proto%2Flabwc.git 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. --- 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;