getKeyString(e) in WebUtils.mjs uses e.code, which returns physical key names. This breaks expected behavior: numpad arrow keys, PageUp/Down, Home/End etc. produce different strings than their main-keyboard equivalents, so they don't share the same functionality.