Terminal apps now compete with the terminal.
A shell leaves most mouse behavior to its terminal emulator. A full-screen terminal user interface can ask for mouse events and turn the same click into navigation, selection, a context menu, or nothing. Hntui documents this boundary in plain terms. Its mouse mode intercepts normal drag selection, so users hold Option on macOS or Shift on Linux to give the gesture back to the terminal.[1]
Windows Terminal documents the same ownership switch. When an application uses virtual-terminal mouse input, Shift makes a selection instead of sending the mouse event to the application. The terminal also lets right-click copy a selection and paste when no selection remains.[2]
One gesture can cross two state machines before it reaches your prompt.
Copy settings change the meaning of right-click.
Codex 0.158.0 added configurable copy-on-select and right-click paste to its full-screen interface. Copied transcript selections can preserve Markdown formatting.[3] Those options are useful because they name behavior that users otherwise have to discover by accident.
Copy-on-select also changes the state beneath the pointer. Windows Terminal notes that with this option enabled, right-click can copy the active selection and paste it into the terminal. A second click may therefore become input to a running command. The safe default depends on the terminal, the application, and whether mouse mode is active.
Keyboard ownership has a timing contract.
Claude Code 2.1.283 fixed fast key bursts that could be handled against stale interface state. The release calls out type-ahead, key repeat, SSH, and tmux.[4] This is not a cosmetic defect. If the highlighted row changes after the key was interpreted, the visible target and the activated target can disagree.
The same release fixed keybinding documentation, stale footer hints after rebinding, Vim-mode edge cases, and screen-reader output for permission dialogs. These fixes point to one rule. A shortcut is complete only when its timing, visible hint, focus owner, and accessible result agree.
Run an input lap before daily use.
- Open the app in the terminal you use at work. Repeat the test inside tmux or SSH if those are part of the route.
- Select wrapped text with the mouse. Copy it. Confirm the bytes, line breaks, and formatting you expected.
- Right-click with and without a selection. Confirm that paste cannot surprise you at a live prompt.
- Hold a navigation key, type ahead during a view change, and use every displayed escape key. The visible state must match the action.
- Repeat the main route without a mouse. Check focus, link access, permission prompts, and screen-reader text if your team depends on them.
Write the result for the exact terminal, app version, multiplexer, and remote route. "Works in a terminal" is not a useful input contract.