modifier-keys-combinations.html (1674B)
1 <!DOCTYPE html> 2 <meta charset="utf-8" /> 3 <title>UI Events Test: Modifier keys combinations</title> 4 <link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> 5 <link rel="help" href="https://w3c.github.io/uievents/#idl-keyboardevent" /> 6 <meta name="assert" content="This test checks that modifier keys combinations are properly detected in 'keydown' event."> 7 <script src="/resources/testharness.js"></script> 8 <script src="/resources/testharnessreport.js"></script> 9 <script src="/resources/testdriver.js"></script> 10 <script src="/resources/testdriver-vendor.js"></script> 11 <div id="target" tabindex="0">Target</div> 12 <script> 13 const keys = { 14 "Shift": '\uE008' + 'y', 15 "Control": '\uE009' + 'y', 16 "Alt": '\uE00A' + 'y', 17 "Meta": '\uE03D' + 'y', 18 }; 19 20 target.focus(); 21 for (const [key, code] of Object.entries(keys)) { 22 promise_test(() => { 23 return new Promise(resolve => { 24 target.addEventListener("keydown", (event) => { 25 if (event.key != key) 26 resolve(event); 27 }); 28 test_driver.send_keys(target, code); 29 }).then((event) => { 30 if (event.shiftKey) { 31 // Shift + y will send a "Y" keydown event on Chromium and Firefox, but a "y" one on WebKit. 32 assert_true(event.key == "y" || event.key == "Y"); 33 } else { 34 assert_equals(event.key, "y"); 35 } 36 assert_equals(event.shiftKey, key === "Shift"); 37 assert_equals(event.ctrlKey, key === "Control"); 38 assert_equals(event.altKey, key === "Alt"); 39 assert_equals(event.metaKey, key === "Meta"); 40 }); 41 }, `Check sending "${key} + y" key combination`); 42 } 43 </script>