What
Add mouse enable/disable and SGR sequence parsing to shellframe.
-
shellframe_mouse_enter / shellframe_mouse_exit in src/screen.sh — send \033[?1000h\033[?1006h (enable SGR mouse) on screen enter and \033[?1000l\033[?1006l on screen exit, alongside existing raw mode setup.
-
SGR mouse sequence parsing in shellframe_read_key (src/input.sh) — SGR format: \033[<Pb;Px;PyM (press) / \033[<Pb;Px;Pym (release). Parse into output variables:
SHELLFRAME_MOUSE_COL — column (1-based)
SHELLFRAME_MOUSE_ROW — row (1-based)
SHELLFRAME_MOUSE_BUTTON — button number (0=left, 1=middle, 2=right, 64=scroll-up, 65=scroll-down)
SHELLFRAME_MOUSE_ACTION — press or release
- Set
SHELLFRAME_KEY to sentinel constant SHELLFRAME_KEY_MOUSE
Files
src/screen.sh — shellframe_mouse_enter, shellframe_mouse_exit
src/input.sh — SGR parsing branch in shellframe_read_key
Done criteria
Effort
S (1–2h)
Deps
What
Add mouse enable/disable and SGR sequence parsing to shellframe.
shellframe_mouse_enter/shellframe_mouse_exitinsrc/screen.sh— send\033[?1000h\033[?1006h(enable SGR mouse) on screen enter and\033[?1000l\033[?1006lon screen exit, alongside existing raw mode setup.SGR mouse sequence parsing in
shellframe_read_key(src/input.sh) — SGR format:\033[<Pb;Px;PyM(press) /\033[<Pb;Px;Pym(release). Parse into output variables:SHELLFRAME_MOUSE_COL— column (1-based)SHELLFRAME_MOUSE_ROW— row (1-based)SHELLFRAME_MOUSE_BUTTON— button number (0=left, 1=middle, 2=right, 64=scroll-up, 65=scroll-down)SHELLFRAME_MOUSE_ACTION—pressorreleaseSHELLFRAME_KEYto sentinel constantSHELLFRAME_KEY_MOUSEFiles
src/screen.sh—shellframe_mouse_enter,shellframe_mouse_exitsrc/input.sh— SGR parsing branch inshellframe_read_keyDone criteria
SHELLFRAME_KEY_MOUSEsentinel set so callers can branch on mouse vs keyboardEffort
S (1–2h)
Deps