Keyboard input fixes addressing reported regressions:
- Pressing Ctrl alone no longer sends SIGINT: key_to_bytes now guards on
a single-character key, so modifier keys "Control"/"Shift"/"Meta" are
not misread as Ctrl-C (0x03).
- Ctrl-Shift-C copy restored: the copy branch runs before the generic
Ctrl+letter suppression so the clipboard user-gesture stays intact.
- Ctrl+C copies when a selection exists (VS Code / Windows Terminal
behaviour); without a selection it still sends SIGINT.
- Ctrl+V / Ctrl-Shift+V paste via navigator.clipboard.readText() —
reliable across browsers that don't fire paste on a non-contenteditable
div; on:paste retained for right-click / menu paste.
- Bare Ctrl+letter (no Shift/Alt/Meta) is preventDefault'd so the browser
stops intercepting Ctrl-R/F/A etc. (Ctrl-W/T/N stay browser-reserved
and cannot be intercepted by any web page).
- Filter Ctrl-Z (0x1a) / Ctrl-\ (0x1c) so stty SIGTSTP/SIGQUIT don't
surprise-kill the foreground process; Ctrl-C (0x03) is kept.
Alt-screen wheel:
- Coalesce multiple wheel events per animation frame into a single
arrow-key batch (Rc<Cell> accumulator + requestAnimationFrame), so one
trackpad swipe pages at most one viewport instead of flying past.
Tests: 18/18 pass, clippy clean.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>