mirror of
https://github.com/nesquena/hermes-webui.git
synced 2026-06-05 00:20:31 +00:00
27 lines
1.0 KiB
Python
27 lines
1.0 KiB
Python
"""Keyboard contract for treating Numpad Enter as a submit shortcut."""
|
|
|
|
from pathlib import Path
|
|
|
|
REPO = Path(__file__).resolve().parents[1]
|
|
BOOT_JS = (REPO / "static" / "boot.js").read_text(encoding="utf-8")
|
|
|
|
|
|
def test_boot_defines_numpad_enter_helper():
|
|
assert "function _isNumpadEnter(e)" in BOOT_JS
|
|
assert "e.code==='NumpadEnter'" in BOOT_JS
|
|
assert "e.location===KeyboardEvent.DOM_KEY_LOCATION_NUMPAD" in BOOT_JS
|
|
|
|
|
|
def test_ctrl_enter_mode_allows_numpad_enter_to_submit():
|
|
ctrl_branch = BOOT_JS.split("if(window._sendKey==='ctrl+enter'||_mobileDefault){", 1)[1]
|
|
ctrl_branch = ctrl_branch.split("} else {", 1)[0]
|
|
assert "isNumpadEnter" in ctrl_branch
|
|
assert "if(isNumpadEnter||e.ctrlKey||e.metaKey){e.preventDefault();send();}" in ctrl_branch
|
|
|
|
|
|
def test_ime_guard_runs_before_numpad_enter_detection():
|
|
enter_branch = BOOT_JS.split("if(e.key==='Enter'){")[-1]
|
|
ime_idx = enter_branch.index("if(_isImeEnter(e)){return;}")
|
|
numpad_idx = enter_branch.index("const isNumpadEnter=_isNumpadEnter(e);")
|
|
assert ime_idx < numpad_idx
|