| <!DOCTYPE html> |
| <meta charset="utf-8" /> |
| <title>UI Events Test: Modifier keys</title> |
| <link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> |
| <link rel="help" href="https://w3c.github.io/uievents/#idl-keyboardevent" /> |
| <meta name="assert" content="This test checks that modifier keys are properly detected in 'keydown' event."> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/resources/testdriver.js"></script> |
| <script src="/resources/testdriver-vendor.js"></script> |
| <div id="target" tabindex="0">Target</div> |
| <script> |
| const keys = { |
| "Shift": '\uE008', |
| "Control": '\uE009', |
| "Alt": '\uE00A', |
| "Meta": '\uE03D', |
| }; |
| |
| target.focus(); |
| for (const [key, code] of Object.entries(keys)) { |
| promise_test(() => { |
| return new Promise(resolve => { |
| target.addEventListener("keydown", resolve); |
| test_driver.send_keys(target, code); |
| }).then((event) => { |
| assert_equals(event.key, key); |
| assert_equals(event.shiftKey, key === "Shift"); |
| assert_equals(event.ctrlKey, key === "Control"); |
| assert_equals(event.altKey, key === "Alt"); |
| assert_equals(event.metaKey, key === "Meta"); |
| }); |
| }, `Check sending ${key} key`); |
| } |
| </script> |