mirror of
https://github.com/mpv-player/mpv
synced 2025-01-18 13:14:36 +00:00
wayland: don't ignore key modifiers if they were consumed
According to the xkbcommon docs, `xkb_state_mod_index_is_consumed` is true when a modifier *may affect* key translation. A key modifier may be consumed but not be active. See xkb documentation for this function for further details. This breaks key modifiers in cases where L_Shift+R_Shift for example is used to change keyboard layout with `xkb_options grp:shifts_toggle`. Instead, replace it with a simple check for a valid modifier.
This commit is contained in:
parent
43ac656b02
commit
02533e5928
@ -1582,7 +1582,7 @@ static int get_mods(struct vo_wayland_state *wl)
|
||||
|
||||
for (int n = 0; n < MP_ARRAY_SIZE(mods); n++) {
|
||||
xkb_mod_index_t index = xkb_keymap_mod_get_index(wl->xkb_keymap, mod_names[n]);
|
||||
if (!xkb_state_mod_index_is_consumed(wl->xkb_state, wl->keyboard_code, index)
|
||||
if (index != XKB_MOD_INVALID
|
||||
&& xkb_state_mod_index_is_active(wl->xkb_state, index,
|
||||
XKB_STATE_MODS_DEPRESSED))
|
||||
modifiers |= mods[n];
|
||||
|
Loading…
Reference in New Issue
Block a user