mirror of
https://github.com/badlogic/pi-mono.git
synced 2026-05-03 00:30:21 +00:00
fix(tui,coding-agent): handle tmux xterm extended keys and warn on tmux setup fixes #1872
This commit is contained in:
parent
e3decbcdd6
commit
9a8bc61300
7 changed files with 214 additions and 61 deletions
|
|
@ -1,8 +1,8 @@
|
|||
# tmux Setup
|
||||
|
||||
Pi works inside tmux, but tmux strips modifier information from certain keys by default. Without configuration, `Shift+Enter` and `Ctrl+Enter` are indistinguishable from plain `Enter`.
|
||||
Pi works inside tmux, but tmux strips modifier information from certain keys by default. Without configuration, `Shift+Enter` and `Ctrl+Enter` are usually indistinguishable from plain `Enter`.
|
||||
|
||||
## Required Configuration
|
||||
## Recommended Configuration
|
||||
|
||||
Add to `~/.tmux.conf`:
|
||||
|
||||
|
|
@ -11,27 +11,49 @@ set -g extended-keys on
|
|||
set -g extended-keys-format csi-u
|
||||
```
|
||||
|
||||
Then restart tmux (not just reload):
|
||||
Then restart tmux fully:
|
||||
|
||||
```bash
|
||||
tmux kill-server
|
||||
tmux
|
||||
```
|
||||
|
||||
This tells tmux to forward modified key sequences in CSI-u format when an application requests extended key reporting. Pi requests this automatically when Kitty keyboard protocol is not available.
|
||||
Pi requests extended key reporting automatically when Kitty keyboard protocol is not available. With `extended-keys-format csi-u`, tmux forwards modified keys in CSI-u format, which is the most reliable configuration.
|
||||
|
||||
## Why `csi-u` Is Recommended
|
||||
|
||||
With only:
|
||||
|
||||
```tmux
|
||||
set -g extended-keys on
|
||||
```
|
||||
|
||||
tmux defaults to `extended-keys-format xterm`. When an application requests extended key reporting, modified keys are forwarded in xterm `modifyOtherKeys` format such as:
|
||||
|
||||
- `Ctrl+C` → `\x1b[27;5;99~`
|
||||
- `Ctrl+D` → `\x1b[27;5;100~`
|
||||
- `Ctrl+Enter` → `\x1b[27;5;13~`
|
||||
|
||||
With `extended-keys-format csi-u`, the same keys are forwarded as:
|
||||
|
||||
- `Ctrl+C` → `\x1b[99;5u`
|
||||
- `Ctrl+D` → `\x1b[100;5u`
|
||||
- `Ctrl+Enter` → `\x1b[13;5u`
|
||||
|
||||
Pi supports both formats, but `csi-u` is the recommended tmux setup.
|
||||
|
||||
## What This Fixes
|
||||
|
||||
Without this config, tmux collapses modified enter keys to plain `\r`:
|
||||
Without tmux extended keys, modified Enter keys collapse to legacy sequences:
|
||||
|
||||
| Key | Without config | With config |
|
||||
|-----|---------------|-------------|
|
||||
| Key | Without extkeys | With `csi-u` |
|
||||
|-----|-----------------|--------------|
|
||||
| Enter | `\r` | `\r` |
|
||||
| Shift+Enter | `\r` | `\x1b[13;2u` |
|
||||
| Ctrl+Enter | `\r` | `\x1b[13;5u` |
|
||||
| Alt/Option+Enter | `\x1b\r` | `\x1b[13;3u` |
|
||||
|
||||
This affects the default keybindings (`Enter` to submit, `Shift+Enter` for newline) and any custom keybindings using modified enter keys.
|
||||
This affects the default keybindings (`Enter` to submit, `Shift+Enter` for newline) and any custom keybindings using modified Enter.
|
||||
|
||||
## Requirements
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue