KeyTypes Module
The one place every keyboard shortcut in Issie is described. This module is deliberately pure: no Fable.React, no ElectronAPI, no ModelType, no Browser.Dom. It says *what* the shortcuts are, not what they do and not how they are delivered. The binding from an identity to an action lives in UI/KeyBindings.fs, which is the only module that needs the model. Keeping the two apart is what lets the help table, the renderer menus and (later) the context menus all be generated from one list instead of drifting apart, which is what happened to the hand-written table in UIPopups.fs. Platform is always a parameter, never read here, so this module has no dependency on how the host discovers it.
Types and nested modules
Functions and values
| Function or value | Description |
|
|
|
|
|
|
|
|
Full Usage:
lookup tbl ctx chord
Parameters:
Map<(KeyContext * Chord), ShortcutSpec>
ctx : KeyContext
chord : Chord
Returns: ShortcutSpec option
|
Resolve a chord in a context. There is deliberately no fallback to a more general context. A chord that means nothing in TextEntry must reach the focused box rather than doing something to the schematic, and the same argument applies to every other context - so every shortcut states all the contexts it works in.
|
|
Every shortcut in Issie. The single source of truth for the dispatcher, the help table and the shortcut labels shown on menus. Chords are unchanged from the Electron menus they replace, so nothing has to be relearned. They are safe to keep because context does the separating: Ctrl+Left rotates on the canvas and still does word-navigation inside a text box, since rotate is simply not bound in TextEntry.
|
|
|
Full Usage:
validate ()
Parameters:
unit
Returns: string list
|