Track whether a keydown should perform text insertion separately from the delivered code point. Native frontends and text-oriented test paths can now mark events that came from text input, while shortcut-style key events keep Alt-modified default insertion suppressed. This lets macOS Option-generated text such as Option+A and Option+Space insert into editable controls without making plain Alt shortcuts insert their base character. Add coverage for Alt text, Ctrl+Alt text, separator text, Ctrl-only shortcuts, and Alt shortcuts.
36 lines
1.5 KiB
HTML
36 lines
1.5 KiB
HTML
<!DOCTYPE html>
|
|
<meta charset="utf-8">
|
|
<input id="input" />
|
|
<script src="../include.js"></script>
|
|
<script>
|
|
test(() => {
|
|
let input = document.getElementById("input");
|
|
let codePoints = text => Array.from(text, character => character.codePointAt(0).toString(16)).join(" ");
|
|
|
|
input.addEventListener("keydown", e => {
|
|
println(`keydown key=${e.key} keyCodePoints=${codePoints(e.key)} altKey=${e.altKey} ctrlKey=${e.ctrlKey}`);
|
|
});
|
|
|
|
input.addEventListener("beforeinput", e => {
|
|
println(`beforeinput data=${e.data} dataCodePoints=${codePoints(e.data)} inputType=${e.inputType}`);
|
|
});
|
|
|
|
internals.sendText(input, "å", internals.MOD_ALT);
|
|
println(`value after Alt: ${input.value}`);
|
|
|
|
internals.sendText(input, "@", internals.MOD_ALT | internals.MOD_CTRL);
|
|
println(`value after Ctrl+Alt: ${input.value}`);
|
|
|
|
internals.sendText(input, "\u00A0", internals.MOD_ALT);
|
|
println(`value after Alt+Space: ${input.value}`);
|
|
println(`value code points after Alt+Space: ${codePoints(input.value)}`);
|
|
|
|
internals.sendKey(input, "F", internals.MOD_ALT);
|
|
println(`value after Alt+F shortcut: ${input.value}`);
|
|
println(`value code points after Alt+F shortcut: ${codePoints(input.value)}`);
|
|
|
|
internals.sendText(input, "x", internals.MOD_CTRL);
|
|
println(`value after Ctrl: ${input.value}`);
|
|
println(`value code points after Ctrl: ${codePoints(input.value)}`);
|
|
});
|
|
</script>
|