aboutsummaryrefslogtreecommitdiffstats
path: root/sway/input/keyboard.c
diff options
context:
space:
mode:
authorLibravatar Armin Preiml <apreiml@strohwolke.at>2018-06-28 15:22:04 +0200
committerLibravatar Armin Preiml <apreiml@strohwolke.at>2018-06-28 15:23:26 +0200
commit1eede432fc18ee7da7373d869699ca5d2c5f0eaa (patch)
tree4218bb2357fb1a8ce531cf883530060cc347ec92 /sway/input/keyboard.c
parentfix accidently removing borders on XCB_CONFIGURE_REQUEST (diff)
downloadsway-1eede432fc18ee7da7373d869699ca5d2c5f0eaa.tar.gz
sway-1eede432fc18ee7da7373d869699ca5d2c5f0eaa.tar.zst
sway-1eede432fc18ee7da7373d869699ca5d2c5f0eaa.zip
fix handling key modifiers if not pressed at first
fixes #2169
Diffstat (limited to 'sway/input/keyboard.c')
-rw-r--r--sway/input/keyboard.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/sway/input/keyboard.c b/sway/input/keyboard.c
index 9e093828..ec149d06 100644
--- a/sway/input/keyboard.c
+++ b/sway/input/keyboard.c
@@ -64,12 +64,12 @@ static void update_shortcut_state(struct sway_shortcut_state *state,
64 bool last_key_was_a_modifier = raw_modifiers != state->last_raw_modifiers; 64 bool last_key_was_a_modifier = raw_modifiers != state->last_raw_modifiers;
65 state->last_raw_modifiers = raw_modifiers; 65 state->last_raw_modifiers = raw_modifiers;
66 66
67 if (event->state == WLR_KEY_PRESSED) { 67 if (last_key_was_a_modifier && state->last_keycode) {
68 if (last_key_was_a_modifier && state->last_keycode) { 68 // Last pressed key before this one was a modifier
69 // Last pressed key before this one was a modifier 69 state_erase_key(state, state->last_keycode);
70 state_erase_key(state, state->last_keycode); 70 }
71 }
72 71
72 if (event->state == WLR_KEY_PRESSED) {
73 // Add current key to set; there may be duplicates 73 // Add current key to set; there may be duplicates
74 state_add_key(state, event->keycode, new_key); 74 state_add_key(state, event->keycode, new_key);
75 state->last_keycode = event->keycode; 75 state->last_keycode = event->keycode;