# Binding which should work with numlock and without, see issue #2418.
bindsym Mod1+Shift+q nop Mod1+Shift+q
+
+# Binding which should work with numlock and without, see issue #2559.
+bindcode 39 nop s
EOT
my $pid = launch_with_config($config);
'Mod1+Shift+q',
'triggered the "Mod1+Shift+q" keybinding');
-
is(listen_for_binding(
sub {
xtest_key_press(77); # enable Num_Lock
'Mod1+Shift+q',
'triggered the "Mod1+Shift+q" keybinding');
+is(listen_for_binding(
+ sub {
+ xtest_key_press(39); # s
+ xtest_key_release(39); # s
+ },
+ ),
+ 's',
+ 'triggered the "s" keybinding without Num_Lock');
+
+is(listen_for_binding(
+ sub {
+ xtest_key_press(77); # enable Num_Lock
+ xtest_key_release(77); # enable Num_Lock
+ xtest_key_press(39); # s
+ xtest_key_release(39); # s
+ xtest_key_press(77); # disable Num_Lock
+ xtest_key_release(77); # disable Num_Lock
+ },
+ ),
+ 's',
+ 'triggered the "s" keybinding with Num_Lock');
+
sync_with_i3;
-is(scalar @i3test::XTEST::binding_events, 10, 'Received exactly 10 binding events');
+is(scalar @i3test::XTEST::binding_events, 12, 'Received exactly 12 binding events');
exit_gracefully($pid);
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
bindsym KP_End nop KP_End
+bindcode 88 nop KP_Down
EOT
$pid = launch_with_config($config);
'KP_End',
'triggered the "KP_End" keybinding');
+is(listen_for_binding(
+ sub {
+ xtest_key_press(88); # KP_Down
+ xtest_key_release(88); # KP_Down
+ },
+ ),
+ 'KP_Down',
+ 'triggered the "KP_Down" keybinding');
+
is(listen_for_binding(
sub {
xtest_key_press(77); # enable Num_Lock
'timeout',
'Did not trigger the KP_End keybinding with KP_1');
+is(listen_for_binding(
+ sub {
+ xtest_key_press(77); # enable Num_Lock
+ xtest_key_release(77); # enable Num_Lock
+ xtest_key_press(88); # KP_2
+ xtest_key_release(88); # KP_2
+ xtest_key_press(77); # disable Num_Lock
+ xtest_key_release(77); # disable Num_Lock
+ },
+ ),
+ 'timeout',
+ 'Did not trigger the KP_Down keybinding with KP_2');
+
# TODO: This test does not verify that i3 does _NOT_ grab keycode 87 with Mod2.
sync_with_i3;
-is(scalar @i3test::XTEST::binding_events, 11, 'Received exactly 11 binding events');
+is(scalar @i3test::XTEST::binding_events, 14, 'Received exactly 14 binding events');
exit_gracefully($pid);