aboutsummaryrefslogtreecommitdiffstats
path: root/sway/input/keyboard.c
diff options
context:
space:
mode:
authorLibravatar frsfnrrg <frsfnrrg@users.noreply.github.com>2018-05-31 20:23:19 -0400
committerLibravatar frsfnrrg <frsfnrrg@users.noreply.github.com>2018-06-01 18:52:36 -0400
commitf2fe93d1718d1eacccb27fffa58d4cfecd20edfc (patch)
treefc019b93e4329937ec6912c0bd41873462a70fdb /sway/input/keyboard.c
parentFix binding bindcode flag initialization (diff)
downloadsway-f2fe93d1718d1eacccb27fffa58d4cfecd20edfc.tar.gz
sway-f2fe93d1718d1eacccb27fffa58d4cfecd20edfc.tar.zst
sway-f2fe93d1718d1eacccb27fffa58d4cfecd20edfc.zip
Remove almost-always redundant loop in key handling
Diffstat (limited to 'sway/input/keyboard.c')
-rw-r--r--sway/input/keyboard.c48
1 files changed, 22 insertions, 26 deletions
diff --git a/sway/input/keyboard.c b/sway/input/keyboard.c
index e59d9c03..c0f637f0 100644
--- a/sway/input/keyboard.c
+++ b/sway/input/keyboard.c
@@ -229,33 +229,29 @@ static void handle_keyboard_key(struct wl_listener *listener, void *data) {
229 } 229 }
230 230
231 // identify which binding should be executed. 231 // identify which binding should be executed.
232 struct sway_binding *binding = 232 struct sway_binding *binding = check_shortcut_model(
233 check_shortcut_model(&keyboard->state_keycodes, 233 &keyboard->state_keycodes,
234 config->current_mode->keycode_bindings, 234 config->current_mode->keycode_bindings,
235 code_modifiers, input_inhibited); 235 code_modifiers, input_inhibited);
236 for (size_t i=0;i<translated_keysyms_len;i++) { 236 struct sway_binding *translated_binding = check_shortcut_model(
237 struct sway_binding *translated_binding = 237 &keyboard->state_keysyms_translated,
238 check_shortcut_model(&keyboard->state_keysyms_translated, 238 config->current_mode->keysym_bindings,
239 config->current_mode->keysym_bindings, 239 translated_modifiers, input_inhibited);
240 translated_modifiers, input_inhibited); 240 if (translated_binding && !binding) {
241 if (translated_binding && !binding) { 241 binding = translated_binding;
242 binding = translated_binding; 242 } else if (binding && translated_binding && binding != translated_binding) {
243 } else if (binding && translated_binding && binding != translated_binding) { 243 wlr_log(L_DEBUG, "encountered duplicate bindings %d and %d",
244 wlr_log(L_DEBUG, "encountered duplicate bindings %d and %d", 244 binding->order, translated_binding->order);
245 binding->order, translated_binding->order);
246 }
247 } 245 }
248 for (size_t i=0;i<raw_keysyms_len;i++) { 246 struct sway_binding *raw_binding = check_shortcut_model(
249 struct sway_binding *raw_binding = 247 &keyboard->state_keysyms_raw,
250 check_shortcut_model(&keyboard->state_keysyms_raw, 248 config->current_mode->keysym_bindings,
251 config->current_mode->keysym_bindings, 249 raw_modifiers, input_inhibited);
252 raw_modifiers, input_inhibited); 250 if (raw_binding && !binding) {
253 if (raw_binding && !binding) { 251 binding = raw_binding;
254 binding = raw_binding; 252 } else if (binding && raw_binding && binding != raw_binding) {
255 } else if (binding && raw_binding && binding != raw_binding) { 253 wlr_log(L_DEBUG, "encountered duplicate bindings %d and %d",
256 wlr_log(L_DEBUG, "encountered duplicate bindings %d and %d", 254 binding->order, raw_binding->order);
257 binding->order, raw_binding->order);
258 }
259 } 255 }
260 256
261 bool handled = false; 257 bool handled = false;