Commit Graph
15 Commits
Author SHA1 Message Date
Pierre Kisters 227705b20d VR keyboard: Esc, Ctrl and Alt with the dark special-key face
Key type Meta, like Steam's AltGr and layout keys (and Fn); widths stay
the stylesheet's 43px.
2026-09-28 04:20:42 +02:00
Pierre Kisters 7cfe78aed0 VR keyboard: Fn key on layouts without AltGr
US, Dvorak, Colemak, Bulgarian, Chinese, Japanese and Korean have no AltGr
key, so AltGr + Delete and the AltGr arrows were unreachable. They get
Steam's own AltGr toggle key, labelled Fn, right of the space bar like
German AltGr.
2026-09-28 04:18:09 +02:00
Pierre Kisters 971ba3d489 VR keyboard: Entf hint small again, bottom aligned with the AltGr hints
7px like the arrow hints; right edge of Steam's 9px AltGr hints, glyph
bottom on that of the } hint on 0 (measured font metrics).
2026-09-28 04:15:31 +02:00
Pierre Kisters 474ae6d40f VR keyboard: Entf hint drawn by Steam as the key's AltGr label
The Delete key's hint without AltGr is now a third layout entry (empty
key, label Entf), rendered by Steam exactly like its other AltGr hints
(e.g. } on 0) instead of a stylesheet pseudo-element.
2026-09-28 04:12:01 +02:00
Pierre Kisters b987e822d0 VR keyboard: small Entf hint on the Delete key without AltGr
The key that becomes Delete on AltGr shows a small hint (the arrow hints'
7 px) on the baseline of Steam's AltGr hints, while the layout has such a
free key.
2026-09-28 04:07:56 +02:00
Pierre Kisters adbf53ea10 VR keyboard: AltGr keeps Half key sizes (German ^); Entf dark, centred
Steam draws a [normal, shifted] entry as a bare empty key on AltGr and
drops its key type, so the Half-width ^ grew to a full key. Keep the type
with an empty AltGr entry. The AltGr Delete key gets Backspace's key type
(the dark special-key face), the replaced key's flexible width and a
centred label.
2026-09-28 04:03:13 +02:00
Pierre Kisters a3b05b7474 VR keyboard: AltGr + the key left of Backspace = Delete
While AltGr is active, the key left of Backspace (German ´/`, empty on
AltGr) becomes Delete, labelled like Steam's Delete key (Entf; Del when
longer), sent by the helper; repeats while held like Backspace.
2026-09-28 03:55:38 +02:00
Pierre Kisters 4c843c3ce4 Patch headers and comments: concise
Document the patch calling convention once in lib/default.nix; patch
headers say what, target, hook, state and contracts. Comments only, no
code changes.
2026-09-27 23:57:50 +02:00
Pierre Kisters 6a8924f219 UI patches: find Steam internals by signature, offline checker
Runtime patches no longer use webpack module ids or minified export
names, which change with every Steam UI build:

- modules/lib/finders.js: finder library (getWebpackRequire,
  findModule/findExport by source text and shape, resolveAll with a
  per-page cache, findFiberUp/findFiberDown/findInReactTree), installed
  once per page as window.__sfuiFind.
- modules/lib/signatures.json: the signatures, per patch, shared by the
  patches and the checker. lib/default.nix mkPatch wraps a patch
  `(find, sigs, opts) => ...` with the library, its signatures and
  options; exposed as steamFrame.uiPatches.lib.
- Keyboard patch (VERSION 10): layouts module, current/enabled layout
  getters, arrow keys, VR keyboard status and VirtualKeyboardManager are
  found by signature; if one doesn't match it reports which and leaves
  Steam untouched. unpatch.js uses references the patch remembered.
  The helper logs inject results when they change.
- launcher-menu launch/pinned-desktop use the library's fiber helpers;
  launch no longer depends on the bar popup's window name.
- scripts/check-signatures.mjs (+ webpack-modules.mjs): extracts module
  factories from the installed bundles without a browser and checks
  every signature (found / ambiguous / missing, with module ids and
  export names). README: "Finders and signatures", "After a Steam update".
2026-09-27 20:04:15 +02:00
Pierre Kisters f7eadb9ac1 Keyboard patch: Enter types Return in app windows despite stale Steam search focus
Steam's VirtualKeyboardManager keeps the props of the last focused Steam text
field (m_ActiveElementProps) after leaving the dashboard. With a search box
there, the VR keyboard for a gamescope window showed "Search" on Enter and
its onEnterKeyPress returned "VKClose", hiding the keyboard instead of
sending Return. While the keyboard serves something other than this Steam
UI, ignore those props and the dismiss-on-Enter flag.
2026-09-27 19:20:21 +02:00
Pierre Kisters 7d8e2f14cf Keyboard patch cleanup; arrow icons centered again
- drop cruft: v4 DispatchKeypress undo, unused VKM import and
  __vrkbdPatched flag, redundant VRKBD_DISPLAY env in the unit
- one wrap() helper for all replaced functions; key names for the
  stylesheet derived from the key definitions instead of repeated
- unpatch: restore every layout ever patched (also ones disabled since)
  and the remembered component class instead of walking the tree again
- helper: debounce re-injects after bursts of new JS contexts; resolve
  pending DevTools calls when the connection closes
- arrow icons vertically centered again (hint stays at the bottom edge)
- updated header comments
2026-09-27 15:43:29 +02:00
Pierre Kisters 630357b886 Keyboard patch: slightly smaller Pos1/Ende/Bild labels under AltGr 2026-09-27 15:41:17 +02:00
Pierre Kisters 050c815199 Keyboard patch: smaller AltGr hints on arrow keys, no overlap with icons 2026-09-27 15:39:37 +02:00
Pierre Kisters bd341f45c2 Keyboard patch: stable bottom row, AltGr Pos1/End/PgUp/PgDn, Shift+arrows
- every bottom-row key gets explicit normal/shift/AltGr variants: in Steam's
  stock row the close icon jumps with Shift and keys turn into empty
  full-width panels with AltGr
- AltGr + arrows: Pos1 / End / PgUp / PgDn (shown as small hints)
- Shift + arrows go through the helper as real Shift+arrow (Steam's own
  arrow path drops Shift), so text selection works
2026-09-27 15:37:03 +02:00
Pierre Kisters d60931ed72 Rename vrKeyboard to steamKeyboardPatch; clipboard-sync on by default
- steamFrame.vrKeyboard -> steamFrame.steamKeyboardPatch (module, service
  and script names follow): it patches Steam's own on-screen keyboard
- clipboardSync.enable defaults to true: without it the nested desktop's
  clipboard is isolated
2026-09-27 15:24:52 +02:00