@@ -148,6 +148,15 @@ bool StandardKeyboardInputGenerator::generateChar(char32_t characterEvent,
148148 return true ;
149149}
150150
151+ std::string StandardKeyboardInputGenerator::selectNumpad (Modifiers modifiers,
152+ FunctionKeyMapping mapping) const
153+ {
154+ if (modifiers.contains (Modifier::NumLock))
155+ return select (modifiers, { .std = mapping.std , .mods = mapping.std , .appKeypad = mapping.std });
156+
157+ return select (modifiers, mapping);
158+ }
159+
151160std::string StandardKeyboardInputGenerator::select (Modifiers modifiers, FunctionKeyMapping mapping) const
152161{
153162 if (modifiers && !mapping.mods .empty ())
@@ -225,23 +234,23 @@ bool StandardKeyboardInputGenerator::generateKey(Key key, Modifiers modifiers, K
225234 case Key::PageDown: append (select (modifiers, { .std = CSI " 6~" , .mods = CSI " 6;{}~" , .appKeypad = CSI " 6~" })); break ;
226235 case Key::Insert: append (select (modifiers, { .std = CSI " 2~" , .mods = CSI " 2;{}~" })); break ;
227236 case Key::Delete: append (select (modifiers, { .std = CSI " 3~" , .mods = CSI " 3;{}~" })); break ;
228- case Key::Numpad_Enter: append (select (modifiers, { .std = " \r " , .appKeypad = SS3 " M" })); break ;
229- case Key::Numpad_Multiply: append (select (modifiers, { .std = " *" , .appKeypad = SS3 " j" })); break ;
230- case Key::Numpad_Add: append (select (modifiers, { .std = " +" , .appKeypad = SS3 " k" })); break ;
231- case Key::Numpad_Subtract: append (select (modifiers, { .std = " -" , .appKeypad = SS3 " m" })); break ;
232- case Key::Numpad_Decimal: append (select (modifiers, { .std = " ." , .appKeypad = CSI " 3~" })); break ;
233- case Key::Numpad_Divide: append (select (modifiers, { .std = " /" , .appKeypad = SS3 " o" })); break ;
234- case Key::Numpad_0: append (select (modifiers, { .std = " 0" , .appKeypad = CSI " 2~" })); break ;
235- case Key::Numpad_1: append (select (modifiers, { .std = " 1" , .appKeypad = SS3 " F" })); break ;
236- case Key::Numpad_2: append (select (modifiers, { .std = " 2" , .appKeypad = CSI " B" })); break ;
237- case Key::Numpad_3: append (select (modifiers, { .std = " 3" , .appKeypad = CSI " 6~" })); break ;
238- case Key::Numpad_4: append (select (modifiers, { .std = " 4" , .appKeypad = CSI " D" })); break ;
239- case Key::Numpad_5: append (select (modifiers, { .std = " 5" , .appKeypad = CSI " E" })); break ;
240- case Key::Numpad_6: append (select (modifiers, { .std = " 6" , .appKeypad = CSI " C" })); break ;
241- case Key::Numpad_7: append (select (modifiers, { .std = " 7" , .appKeypad = SS3 " H" })); break ;
242- case Key::Numpad_8: append (select (modifiers, { .std = " 8" , .appKeypad = CSI " A" })); break ;
243- case Key::Numpad_9: append (select (modifiers, { .std = " 9" , .appKeypad = CSI " 5~" })); break ;
244- case Key::Numpad_Equal: append (select (modifiers, { .std = " =" , .appKeypad = SS3 " X" })); break ;
237+ case Key::Numpad_Enter: append (selectNumpad (modifiers, { .std = " \r " , .appKeypad = SS3 " M" })); break ;
238+ case Key::Numpad_Multiply: append (selectNumpad (modifiers, { .std = " *" , .appKeypad = SS3 " j" })); break ;
239+ case Key::Numpad_Add: append (selectNumpad (modifiers, { .std = " +" , .appKeypad = SS3 " k" })); break ;
240+ case Key::Numpad_Subtract: append (selectNumpad (modifiers, { .std = " -" , .appKeypad = SS3 " m" })); break ;
241+ case Key::Numpad_Decimal: append (selectNumpad (modifiers, { .std = " ." , .appKeypad = CSI " 3~" })); break ;
242+ case Key::Numpad_Divide: append (selectNumpad (modifiers, { .std = " /" , .appKeypad = SS3 " o" })); break ;
243+ case Key::Numpad_0: append (selectNumpad (modifiers, { .std = " 0" , .appKeypad = CSI " 2~" })); break ;
244+ case Key::Numpad_1: append (selectNumpad (modifiers, { .std = " 1" , .appKeypad = SS3 " F" })); break ;
245+ case Key::Numpad_2: append (selectNumpad (modifiers, { .std = " 2" , .appKeypad = CSI " B" })); break ;
246+ case Key::Numpad_3: append (selectNumpad (modifiers, { .std = " 3" , .appKeypad = CSI " 6~" })); break ;
247+ case Key::Numpad_4: append (selectNumpad (modifiers, { .std = " 4" , .appKeypad = CSI " D" })); break ;
248+ case Key::Numpad_5: append (selectNumpad (modifiers, { .std = " 5" , .appKeypad = CSI " E" })); break ;
249+ case Key::Numpad_6: append (selectNumpad (modifiers, { .std = " 6" , .appKeypad = CSI " C" })); break ;
250+ case Key::Numpad_7: append (selectNumpad (modifiers, { .std = " 7" , .appKeypad = SS3 " H" })); break ;
251+ case Key::Numpad_8: append (selectNumpad (modifiers, { .std = " 8" , .appKeypad = CSI " A" })); break ;
252+ case Key::Numpad_9: append (selectNumpad (modifiers, { .std = " 9" , .appKeypad = CSI " 5~" })); break ;
253+ case Key::Numpad_Equal: append (selectNumpad (modifiers, { .std = " =" , .appKeypad = SS3 " X" })); break ;
245254 // {{{ unsupported keys in legacy input protocol
246255 case Key::MediaPlay:
247256 case Key::MediaStop:
0 commit comments