[BUG] Ctrl-key shortcuts (e.g. Ctrl+V image paste) don't fire on non-Latin keyboard layouts after Kitty keyboard protocol was enabled
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Ctrl-based shortcuts in the TUI silently do nothing when a non-Latin keyboard layout is active (tested with Russian ЙЦУКЕН, but this affects any Cyrillic/Greek/etc. layout). The most visible symptom is image paste: pressing Ctrl+V with a Russian layout active does not paste the image. Switching the OS layout to English and pressing the same physical key works.
This is a regression introduced together with the Kitty keyboard protocol (enabled in v2.1.0 for native Shift+Enter).
What Should Happen?
- In legacy terminal mode, Ctrl+<key> masks to a control byte independently of layout. Ctrl+V and Ctrl+М (the physical V key in Russian layout) both emit
0x16. You can verify this in a plain shell: both echo^V. - Claude Code requests the Kitty keyboard protocol on capable terminals (iTerm2, kitty, WezTerm, ghostty). In that mode the terminal no longer sends the masked control byte — it sends a CSI u sequence carrying the layout-dependent keysym (e.g.
\x1b[118;5ufor Ctrl+v, but the Cyrillic codepoint U+043C for Ctrl+М). - Claude Code's keybinding matcher compares against the Latin key (
v,c,r, …), so on a Cyrillic layout nothing matches and the shortcut is dropped.
So the same keystroke that produces ^V in the shell (layout-independent) becomes layout-dependent the moment Claude Code switches the terminal into Kitty mode.
Error Messages/Logs
Steps to Reproduce
- macOS, iTerm2, OS keyboard layout set to Russian (ЙЦУКЕН).
- In a plain shell, press Ctrl+V and Ctrl+М — both echo
^V(proves the bytes are identical in legacy mode). - Copy an image to the clipboard.
- Launch Claude Code, press Ctrl+V (physical V key, Russian layout active).
Claude Model
None
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.179 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
iTerm2
Additional Information
_No response_
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗