Start

Keyboard shortcuts

Source docs/SHORTCUTS.md Synced 2026-10-07 · b38e70a

Press F1 in XerisOS to see this on screen. This file and the F1 overlay are generated from the same table in src/gui/shortcuts.c — if you add a shortcut in idt.asm, add its row there and both stay correct.

Global chords that only need to call one function no longer live in idt.asm at all: they are rows in src/gui/hotkeys.c, which the keyboard ISR calls once. Adding one is a C edit. The chords the ISR still owns are the ones that need its register state — Alt+Tab, Win+arrows and Win+1..4.

Getting around#

Key Does
F1 This list
Ctrl+Space Command palette
Win+A Open or close Control Center
Win+Space Quick launch (the palette, on a chord no text field can eat)
F4 Ask Ari — from any window, any desktop
Win+R Rewind — what was on screen, from RAM
Win+Shift+R Time Lens — scrub the last ten seconds of desktop frames
Win+L Lock the session
F9 Live vitals HUD (tok/s, temperature, cores, network, heap, uptime)
F10 Notification history
PrtSc Screenshot to a BMP
Right-click Context menu (on a window, or on the bare desktop)
Esc Close the topmost menu or overlay

Esc peels one layer at a time, topmost first: shortcut sheet → context menu → notifications → vitals → focus ring. With none of those open it goes through to the app, so every app's own Esc still works.

Windows#

Key Does
Alt+Tab Next window on this desktop (unminimizes)
Ctrl+W Close the active window
Win+1..4 Switch virtual desktop
Win+Left / Right Snap the active window to that half
Win+Up Maximize
Win+Z Snap layouts — a picker of all eight positions
Double-click title bar Maximize / restore

Keyboard focus#

Key Does
Tab Move to the next control
Shift+Tab Move to the previous control
Enter Press the focused control

In Control Center, Tab moves between the volume control and the action list. Left / Right adjust volume, Home / End jump to 0 / 100 percent, and Space or Enter toggles mute while volume is focused.

Tab order is paint order, which is visual order. The focus ring only appears once you have pressed Tab — pointer users never see a ring they did not ask for. Inside a text field Tab stays a character, so the editors keep their indent.

Editing#

Works in Text Pad, Notes, Code, XIDE and the Ask Ari input line — they all run on the same widget (src/apps/textfield.c), so these behave identically everywhere.

Key Does
Ctrl+C / X / V Copy / cut / paste
Ctrl+Z / Ctrl+Y Undo / redo (a typed run is one step)
Ctrl+A Select all
Ctrl+S Save
Ctrl+F Find (Enter next, Tab to the replace field)
Shift+arrows Extend the selection
Ctrl+arrows Move by word
Home / End Start / end of line
Delete Forward delete
Double-click Select word
Triple-click Select line
F6 Word wrap (Text Pad)

While Ari is writing#

Key Does
Esc Stop generating
Tab Accept what is there and stop

Both are read straight out of the keyboard ring during generation, so they work even though the machine is inside a blocking forward pass with interrupts off.

Tuning the feel#

Key repeat and double-click speed are settable from the Terminal and persist in /ARI/SETTINGS.CFG:

input                      show the current values
input repeat 400           ms a key must be held before it repeats (0 = off)
input rate 40              ms between repeats
input dblclick 400         ms window for a double-click

Every value is clamped to a usable range, so a typo cannot leave you with a keyboard you have to fix using that same keyboard.

Chords never auto-repeat. That is deliberate rather than incidental: Ctrl+W is close-window on the same scancode as the letter w, so a repeating chord would close every window on the desktop in about a second.

This page mirrors the file in the XerisOS repository. Changes go there. Edit on GitHub