VR keyboard: Shift+Tab moves the focus backwards

Steam sends Tab as the text "\t" and drops Shift. With Shift, Tab now
goes to the xdotool helper (shift+Tab, ISO_Left_Tab on any keymap); the
suggestions text model resets on it like on Shift+arrows. The helper's
allowlist moves to allowlist.mjs with a test (flake check
vr-keyboard-extra-keys).
This commit is contained in:
Pierre Kisters committed 2026-09-30 22:53:24 +02:00
1 parent 50e5991c59
commit b2babb3859
11 files changed
+94 -43

No files matched your search

+4 -4
View File
@@ -28,7 +28,7 @@
// Steam's events. Debugging: __sfuiSwipeLog, __sfuiSwipePaths
// (scripts/vr-keyboard-replay.mjs).
((find, sigs, opts, hooks, D, T, C, DICT) => {
const VERSION = 23;
const VERSION = 24;
const G = window;
const O = opts;
@@ -186,9 +186,9 @@
const key = st?.strKey, ts = this.state?.toggleStates || {};
if (typeof key === 'string' && !TOGGLES.has(key) && !/^(SwitchKeys_|IME_)/.test(key)) {
// Extra keys typed by keyboard.vr.extraKeys with xdotool (chords, Esc,
// arrows, AltGr Delete: text after the cursor) and dead keys: the
// model can't follow them.
if (on(ts.Control) || on(ts.Alt) || key.startsWith('VKX_') || st.strDeadKeyNext || (on(ts.Shift) && key.startsWith('Arrow'))) {
// arrows, Shift+Tab, AltGr Delete: text after the cursor) and dead
// keys: the model can't follow them.
if (on(ts.Control) || on(ts.Alt) || key.startsWith('VKX_') || st.strDeadKeyNext || (on(ts.Shift) && (key.startsWith('Arrow') || key === 'Tab'))) {
reset(`key ${key}`);
} else { model.freeze(); refreshLater(); }
}