[Bug] /tui fullscreen: Shift+letter produces lowercase on Ghostty (Kitty keyboard protocol)
Describe the bug
In /tui fullscreen mode, pressing Shift+<letter> produces the lowercase character. For example, Shift+A renders a. Normal typing outside fullscreen TUI is unaffected.
Environment
- Claude Code: v2.1.111
- Terminal: Ghostty 1.3.1 on macOS Darwin 25.4.0
TERM=xterm-ghosttyTERMINFO=/Applications/Ghostty.app/Contents/Resources/terminfo
Steps to reproduce
- Launch
claudein Ghostty (defaultTERM=xterm-ghostty) - Enter
/tui fullscreen - Type
Shift+A— observe lowercasea
Confirmed workaround
TERM=xterm-256color claude
With TERM=xterm-256color, /tui fullscreen correctly produces uppercase characters. This confirms the bug is specific to the xterm-ghostty terminal type and its extended key reporting.
Root cause analysis
Ghostty supports the Kitty keyboard protocol (progressive enhancement), which encodes modifier keys as structured escape sequences (e.g. shift;a) rather than the raw character (A).
When Claude Code's fullscreen TUI enables this protocol (via xterm-ghostty terminfo), Shift+A arrives as a modifier+keycode sequence. It appears the TUI's key decoder handles shift+special_key combinations (arrows, tab, etc.) but does not translate shift + alpha → uppercase, so the character is emitted as lowercase.
Setting TERM=xterm-256color prevents Ghostty from advertising the extended protocol, reverting to the legacy behavior where uppercase is handled at the OS/keyboard driver level before reaching the application.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗