@@ -836,6 +836,20 @@ keycode_for_keysym(wlr_keyboard* keyboard, xkb_keysym_t sym)
836836 return std::nullopt ;
837837}
838838
839+ // Determines if sym is a hotkey and then either increments or decrements
840+ // the hotkey count depending of if the event was a pressed or not (ie released)
841+ static void
842+ recompute_hotkeys_held (WlrServer* server, xkb_keysym_t sym, bool pressed) {
843+ if (isHotkeySym (server, sym)) {
844+ if (pressed) {
845+ ++server->replayModifierHeld ;
846+ } else if (server->replayModifierHeld > 0 ) {
847+ --server->replayModifierHeld ;
848+ }
849+ server->replayModifierActive = server->replayModifierHeld > 0 ;
850+ }
851+ }
852+
839853static void
840854process_key_sym (WlrServer* server,
841855 wlr_keyboard* keyboard,
@@ -849,14 +863,8 @@ process_key_sym(WlrServer* server,
849863 return ;
850864 }
851865
852- if (isHotkeySym (server, sym)) {
853- if (pressed) {
854- ++server->replayModifierHeld ;
855- } else if (server->replayModifierHeld > 0 ) {
856- --server->replayModifierHeld ;
857- }
858- server->replayModifierActive = server->replayModifierHeld > 0 ;
859- }
866+ recompute_hotkeys_held (server, sym, pressed);
867+
860868 if (sym == XKB_KEY_Shift_L || sym == XKB_KEY_Shift_R) {
861869 if (pressed) {
862870 ++server->replayShiftHeld ;
@@ -922,9 +930,6 @@ process_key_sym(WlrServer* server,
922930 (mods & server->hotkeyModifierMask ) || server->replayModifierActive ;
923931 bool shiftHeld = (mods & WLR_MODIFIER_SHIFT) || server->pendingReplayShift ||
924932 server->replayShiftHeld > 0 ;
925- if (sym == XKB_KEY_equal || sym == XKB_KEY_plus || sym == XKB_KEY_minus ||
926- sym == XKB_KEY_underscore || sym == XKB_KEY_0 || sym == XKB_KEY_9) {
927- }
928933 if (controls) {
929934 auto resp =
930935 controls->handleKeySym (sym, pressed, modifierHeld, shiftHeld, waylandFocusActive);
0 commit comments