[Bug] /tui fullscreen: Shift+letter produces lowercase on Ghostty (Kitty keyboard protocol)

Resolved 💬 1 comment Opened Apr 16, 2026 by adamancini Closed May 24, 2026

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-ghostty
  • TERMINFO=/Applications/Ghostty.app/Contents/Resources/terminfo

Steps to reproduce

  1. Launch claude in Ghostty (default TERM=xterm-ghostty)
  2. Enter /tui fullscreen
  3. Type Shift+A — observe lowercase a

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.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗