]> git.mdlowis.com Git - proto/labwc.git/commitdiff
keyboard: allow back by arrow-up or arrow-left in cycle view OSD
authorJens Peters <jp7677@gmail.com>
Thu, 30 Nov 2023 22:25:13 +0000 (23:25 +0100)
committerJohan Malm <johanmalm@users.noreply.github.com>
Thu, 30 Nov 2023 22:39:01 +0000 (22:39 +0000)
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

index d79188376768f63f60212dde8f329bf937ebd009..8c0fe1d37c4ce46cdd9be4239035c5927b047da5 100644 (file)
@@ -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;