]> git.sur5r.net Git - i3/i3/blobdiff - testcases/t/264-keypress-numlock.t
Apply numlock fallback to bindcode where necessary (#2781)
[i3/i3] / testcases / t / 264-keypress-numlock.t
index fa9caa61c1fcd6892e93331cb011322b707f27f8..464fe7481a7fc97752db3368a38cd250f6c9a333 100644 (file)
@@ -41,6 +41,12 @@ 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);
@@ -143,8 +149,60 @@ is(listen_for_binding(
    '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, 8, 'Received exactly 8 binding events');
+is(scalar @i3test::XTEST::binding_events, 12, 'Received exactly 12 binding events');
 
 exit_gracefully($pid);
 
@@ -157,6 +215,7 @@ $config = <<EOT;
 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);
@@ -172,6 +231,15 @@ is(listen_for_binding(
    '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
@@ -185,10 +253,23 @@ is(listen_for_binding(
    '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, 9, 'Received exactly 9 binding events');
+is(scalar @i3test::XTEST::binding_events, 14, 'Received exactly 14 binding events');
 
 exit_gracefully($pid);