# Binding which should work with numlock and without.
bindsym Mod4+a nop a
+
+# Binding which should work with numlock and without, see issue #2418.
+bindsym Escape nop Escape
+
+# Binding which should work with numlock and without, see issue #2418.
+bindsym Shift+Escape nop Shift+Escape
+
+# 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);
is(listen_for_binding(
sub {
- xtest_key_press(77); # Num_Lock
+ xtest_key_press(77); # enable Num_Lock
+ xtest_key_release(77); # enable Num_Lock
xtest_key_press(87); # KP_1
xtest_key_release(87); # KP_1
- xtest_key_release(77); # Num_Lock
+ xtest_key_press(77); # disable Num_Lock
+ xtest_key_release(77); # disable Num_Lock
},
),
'KP_1',
is(listen_for_binding(
sub {
- xtest_key_press(77); # Num_Lock
+ xtest_key_press(77); # enable Num_Lock
+ xtest_key_release(77); # enable Num_Lock
xtest_key_press(133); # Super_L
xtest_key_press(38); # a
xtest_key_release(38); # a
xtest_key_release(133); # Super_L
- xtest_key_release(77); # Num_Lock
+ xtest_key_press(77); # disable Num_Lock
+ xtest_key_release(77); # disable Num_Lock
},
),
'a',
'triggered the "a" keybinding');
+is(listen_for_binding(
+ sub {
+ xtest_key_press(9); # Escape
+ xtest_key_release(9); # Escape
+ },
+ ),
+ 'Escape',
+ 'triggered the "Escape" keybinding');
+
+is(listen_for_binding(
+ sub {
+ xtest_key_press(77); # enable Num_Lock
+ xtest_key_release(77); # enable Num_Lock
+ xtest_key_press(9); # Escape
+ xtest_key_release(9); # Escape
+ xtest_key_press(77); # disable Num_Lock
+ xtest_key_release(77); # disable Num_Lock
+ },
+ ),
+ 'Escape',
+ 'triggered the "Escape" keybinding');
+
+is(listen_for_binding(
+ sub {
+ xtest_key_press(50); # Shift_L
+ xtest_key_press(9); # Escape
+ xtest_key_release(9); # Escape
+ xtest_key_release(50); # Shift_L
+ },
+ ),
+ 'Shift+Escape',
+ 'triggered the "Escape" keybinding');
+
+is(listen_for_binding(
+ sub {
+ xtest_key_press(77); # enable Num_Lock
+ xtest_key_release(77); # enable Num_Lock
+ xtest_key_press(50); # Shift_L
+ xtest_key_press(9); # Escape
+ xtest_key_release(9); # Escape
+ xtest_key_release(50); # Shift_L
+ xtest_key_press(77); # disable Num_Lock
+ xtest_key_release(77); # disable Num_Lock
+ },
+ ),
+ 'Shift+Escape',
+ 'triggered the "Escape" keybinding');
+
+is(listen_for_binding(
+ sub {
+ xtest_key_press(50); # Shift_L
+ xtest_key_press(64); # Alt_L
+ xtest_key_press(24); # q
+ xtest_key_release(24); # q
+ xtest_key_release(64); # Alt_L
+ xtest_key_release(50); # Shift_L
+ },
+ ),
+ 'Mod1+Shift+q',
+ 'triggered the "Mod1+Shift+q" keybinding');
+
+is(listen_for_binding(
+ sub {
+ xtest_key_press(77); # enable Num_Lock
+ xtest_key_release(77); # enable Num_Lock
+ xtest_key_press(50); # Shift_L
+ xtest_key_press(64); # Alt_L
+ xtest_key_press(24); # q
+ xtest_key_release(24); # q
+ xtest_key_release(64); # Alt_L
+ xtest_key_release(50); # Shift_L
+ xtest_key_press(77); # disable Num_Lock
+ xtest_key_release(77); # disable 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, 4, 'Received exactly 4 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);
is(listen_for_binding(
sub {
- xtest_key_press(77); # Num_Lock
+ 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
+ xtest_key_release(77); # enable Num_Lock
xtest_key_press(87); # KP_1
xtest_key_release(87); # KP_1
- xtest_key_release(77); # Num_Lock
+ xtest_key_press(77); # disable Num_Lock
+ xtest_key_release(77); # disable 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, 5, 'Received exactly 5 binding events');
+is(scalar @i3test::XTEST::binding_events, 14, 'Received exactly 14 binding events');
exit_gracefully($pid);