Skip to content

Normalize system keyboard shortcuts: program-stop, IDE exit, strict modifier matching #148

Description

@dsent

Summary

Rework the IDE's platform-level (system) keyboard shortcuts so the "get out"
keys follow familiar console conventions, an accidental extra modifier can't
misfire a system chord, and exiting the whole IDE is a single deliberate
action. Editor-internal shortcuts are out of scope here.

Motivation

The current system chords overload keys with meanings that fight muscle
memory, and some can fire when extra modifiers are held:

  • Ctrl+S currently stops a running program (returns to the console).
    Everywhere else Ctrl+S means "save," so using it to stop/exit surprises
    anyone with desktop habits. Moreover, we're teaching the kids wrong
    conventions they'll have to relearn when moving on to PCs.
  • Exiting the whole IDE is context-dependent today (Ctrl+Esc behaves
    differently inside a program vs. at the console), so "how do I fully exit"
    has no single answer. Ctrl+Esc duplicates another shortcut (currently,
    Ctrl+S).
  • System chords can be triggered by a superset combo (e.g. Ctrl+Shift+Esc
    firing the Ctrl+Esc action), which makes fumbles hazardous.

The audience is children, so the system-chord set should be small,
predictable, convention-aligned, and hard to trigger destructively by accident.

Proposed changes

1. Stop the running program: Ctrl+SCtrl+D
Ctrl+D is the console EOF / "I'm done" convention for leaving an interactive
session. Rebind the existing "stop the running program, return to the console"
action from Ctrl+S to Ctrl+D. Ctrl+C (the other console convention)
stays as copy. Ctrl+S is left with no system binding.

2. Exit the whole IDE: Ctrl+Alt+Esc, always
Make "exit the whole IDE" a single, context-independent action bound to
Ctrl+Alt+Esc — it exits from inside a running program and from the console
alike. Ctrl+Alt+* is the adult/teacher-oriented modifier family, so a
destructive whole-IDE exit sits behind a deliberate 3-key combo a child won't
hit by accident. Bare Ctrl+Esc becomes unbound.

3. Strict modifier matching for system chords
A system shortcut fires only when the pressed modifier set matches exactly.
Extra held modifiers suppress it — e.g. Ctrl+Alt+Shift+Esc must not still
fire the Ctrl+Alt+Esc exit, and no superset combo triggers a subset chord.

4. Drop "duplicate line"
Remove the Ctrl+D "duplicate current line" action in the input strip.
Select + copy + paste already covers it; removing it simplifies the input
layer and frees Ctrl+D for the stop-program role above.

Resulting system-chord map

Key Action
Ctrl+C copy
Ctrl+D stop running program → console
Ctrl+Q quit project
Ctrl+Alt+Esc exit the whole IDE (from anywhere)
Ctrl+Esc (unbound)
Ctrl+S (unbound)

Notes

  • Editor-internal shortcuts (in-editor navigation, checkpoint/restore, leaving
    the editor) are handled separately and are out of scope for this issue.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

Status
Backlog

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions