standardKeymap top-level property

List<KeyBinding> standardKeymap
final

Standard platform keybindings.

  • ArrowLeft: cursorCharLeft (selectCharLeft with Shift)
  • ArrowRight: cursorCharRight (selectCharRight with Shift)
  • Ctrl-ArrowLeft (Alt on Mac): cursorGroupLeft (selectGroupLeft with Shift)
  • Ctrl-ArrowRight (Alt on Mac): cursorGroupRight (selectGroupRight with Shift)
  • ArrowUp: cursorLineUp (selectLineUp with Shift)
  • ArrowDown: cursorLineDown (selectLineDown with Shift)
  • Home: cursorLineBoundaryBackward (selectLineBoundaryBackward with Shift)
  • End: cursorLineBoundaryForward (selectLineBoundaryForward with Shift)
  • Mod-Home: cursorDocStart (selectDocStart with Shift)
  • Mod-End: cursorDocEnd (selectDocEnd with Shift)
  • Mod-a: selectAll
  • Backspace: deleteCharBackward
  • Delete: deleteCharForward
  • Mod-Backspace (Alt on Mac): deleteGroupBackward
  • Mod-Delete (Alt on Mac): deleteGroupForward
  • Enter: insertNewlineAndIndent (smart indentation)

Implementation

final List<KeyBinding> standardKeymap = [
  // Character movement
  KeyBinding(
    key: 'ArrowLeft',
    run: _stateCmd(cursorCharLeft),
    shift: _stateCmd(selectCharLeft),
    preventDefault: true,
  ),
  KeyBinding(
    key: 'ArrowRight',
    run: _stateCmd(cursorCharRight),
    shift: _stateCmd(selectCharRight),
    preventDefault: true,
  ),

  // Group/word movement
  KeyBinding(
    key: 'Mod-ArrowLeft',
    mac: 'Alt-ArrowLeft',
    run: _stateCmd(cursorGroupLeft),
    shift: _stateCmd(selectGroupLeft),
    preventDefault: true,
  ),
  KeyBinding(
    key: 'Mod-ArrowRight',
    mac: 'Alt-ArrowRight',
    run: _stateCmd(cursorGroupRight),
    shift: _stateCmd(selectGroupRight),
    preventDefault: true,
  ),

  // Mac: Cmd-Arrow for line boundaries
  KeyBinding(
    mac: 'Cmd-ArrowLeft',
    run: _stateCmd(cursorLineBoundaryBackward),
    shift: _stateCmd(selectLineBoundaryBackward),
    preventDefault: true,
  ),
  KeyBinding(
    mac: 'Cmd-ArrowRight',
    run: _stateCmd(cursorLineBoundaryForward),
    shift: _stateCmd(selectLineBoundaryForward),
    preventDefault: true,
  ),

  // Line movement
  KeyBinding(
    key: 'ArrowUp',
    run: _stateCmd(cursorLineUp),
    shift: _stateCmd(selectLineUp),
    preventDefault: true,
  ),
  KeyBinding(
    key: 'ArrowDown',
    run: _stateCmd(cursorLineDown),
    shift: _stateCmd(selectLineDown),
    preventDefault: true,
  ),

  // Mac: Cmd-Up/Down for document boundaries
  KeyBinding(
    mac: 'Cmd-ArrowUp',
    run: _stateCmd(cursorDocStart),
    shift: _stateCmd(selectDocStart),
  ),
  KeyBinding(
    mac: 'Cmd-ArrowDown',
    run: _stateCmd(cursorDocEnd),
    shift: _stateCmd(selectDocEnd),
  ),

  // Home/End
  KeyBinding(
    key: 'Home',
    run: _stateCmd(cursorLineBoundaryBackward),
    shift: _stateCmd(selectLineBoundaryBackward),
    preventDefault: true,
  ),
  KeyBinding(
    key: 'End',
    run: _stateCmd(cursorLineBoundaryForward),
    shift: _stateCmd(selectLineBoundaryForward),
    preventDefault: true,
  ),

  // Mod-Home/End for document boundaries
  KeyBinding(
    key: 'Mod-Home',
    run: _stateCmd(cursorDocStart),
    shift: _stateCmd(selectDocStart),
  ),
  KeyBinding(
    key: 'Mod-End',
    run: _stateCmd(cursorDocEnd),
    shift: _stateCmd(selectDocEnd),
  ),

  // Enter - use smart indentation
  KeyBinding(
    key: 'Enter',
    run: _stateCmd(insertNewlineAndIndent),
    shift: _stateCmd(insertNewlineAndIndent),
  ),

  // Select all
  KeyBinding(key: 'Mod-a', run: _stateCmd(selectAll)),

  // Delete
  KeyBinding(
    key: 'Backspace',
    run: _stateCmd(deleteCharBackward),
    shift: _stateCmd(deleteCharBackward),
    preventDefault: true,
  ),
  KeyBinding(
    key: 'Delete',
    run: _stateCmd(deleteCharForward),
    preventDefault: true,
  ),
  KeyBinding(
    key: 'Mod-Backspace',
    mac: 'Alt-Backspace',
    run: _stateCmd(deleteGroupBackward),
    preventDefault: true,
  ),
  KeyBinding(
    key: 'Mod-Delete',
    mac: 'Alt-Delete',
    run: _stateCmd(deleteGroupForward),
    preventDefault: true,
  ),

  // Mac: Cmd-Backspace/Delete for line boundary deletion
  KeyBinding(
    mac: 'Mod-Backspace',
    run: _stateCmd(deleteLineBoundaryBackward),
    preventDefault: true,
  ),
  KeyBinding(
    mac: 'Mod-Delete',
    run: _stateCmd(deleteLineBoundaryForward),
    preventDefault: true,
  ),

  // Emacs bindings for Mac
  ...emacsStyleKeymap.map((b) => KeyBinding(
        mac: b.key,
        run: b.run,
        shift: b.shift,
      )),
];