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.
}
/* 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;