Start
Keyboard shortcuts
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.