-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Open
Labels
inputKeyboard or mouse inputKeyboard or mouse input
Milestone
Description
Discussed in #10026
Originally posted by delthas December 23, 2025
Issue Description
When the Kitty keyboard protocol is enabled and the modifier 0b1000 (8) Report all keys as escape codes is enabled, ghostty does not report any key for composed keys.
I am using an AZERTY (French) keyboard layout, but that should not matter much. To send a composed key, I typically:
- Press the Compose (Right Alt) key
- Press and release some key, such as
, - Release the Compose (Right Alt) key
- At this point, ghostty properly shows a pending, "being-composed" key, such as an acute accent
- Press and release some "base" key, such as
a - At this point, the pending composed key disappears
Expected Behavior
I would expect ghostty to send a key event for the composed key, containing the composed text, such as á.
Foot does:
$ kitty +kitten show_key -m kitty
Press any keys - Ctrl+C or Ctrl+D will terminate
num_lock+ISO_LEVEL3_SHIFT PRESS
CSI 57453 ; 129 : 1 u
num_lock+ISO_LEVEL3_SHIFT RELEASE
CSI 57453 ; 129 : 3 u
Text: á
num_lock+a RELEASE
CSI 97 ; 129 : 3 uKitty does:
$ kitty +kitten show_key -m kitty
Press any keys - Ctrl+C or Ctrl+D will terminate
num_lock+ENTER RELEASE
CSI 13 ; 129 : 3 u
num_lock+ISO_LEVEL3_SHIFT PRESS
CSI 57453 ; 129 u
num_lock+ISO_LEVEL3_SHIFT RELEASE
CSI 57453 ; 129 : 3 u
Text: äNotice the Text event.
Actual Behavior
ghostty does not send any key event for the composed key.
$ kitty +kitten show_key -m kitty
Press any keys - Ctrl+C or Ctrl+D will terminate
alt+num_lock+RIGHT_ALT PRESS
CSI 57449 ; 131 u
num_lock+RIGHT_ALT RELEASE
CSI 57449 ; 129 : 3 u
num_lock+a RELEASE
CSI 97 : : 113 ; 129 : 3 u
Alternate key: qNotice no event was sent for the composed key. There is no way for the application to kow what was the input.
Reproduction Steps
- Open Ghostty
- Negotiate the Kitty keyboard protocol, with at least the report all keys modifier (for example, use
kitty +kitten show_key -m kitty) - Press the Compose (Right Alt) key
- Press and release some key, such as
, - Release the Compose (Right Alt) key
- At this point, ghostty properly shows a pending, "being-composed" key, such as an acute accent
- Press and release some "base" key, such as
a - At this point, the pending composed key disappears
- No event for the composed key is sent
Ghostty Logs
warning(stream): unimplemented CSI action: ESC [ * { } x
warning(io_handler): unimplemented or unknown SGR attribute: .{ .full = { 222 }, .partial = { 222 } }
Ghostty Version
Ghostty 1.2.0-r1457.gfbed63b-1-arch
Version
- version: 1.2.0-r1457.gfbed63b-1-arch
- channel: tip
Build Config
- Zig version : 0.15.2
- build mode : .ReleaseFast
- app runtime : .gtk
- font engine : .fontconfig_freetype
- renderer : renderer.generic.Renderer(renderer.OpenGL)
- libxev : io_uring
- kernel version: 6.17.9-arch1-1
- desktop env : gnome
- GTK version :
build : 4.20.3
runtime : 4.20.3
- libadwaita : enabled
build : 1.8.2
runtime : 1.8.2
- libX11 : enabled
- libwayland : enabled
OS Version Information
Arch Linux
(Linux only) Display Server
Wayland
(Linux only) Desktop Environment/Window Manager
GNOME 49
Minimal Ghostty Configuration
# Default configAdditional Relevant Configuration
No response
I acknowledge that:
- I have reviewed the FAQ and confirm that my issue is NOT among them.
- I have searched the Ghostty repository (both open and closed Discussions and Issues) and confirm this is not a duplicate of an existing issue or discussion.
- I have checked the "Preview" tab on all text fields to ensure that everything looks right, and have wrapped all configuration and code in code blocks with a group of three backticks (
```) on separate lines.
delthas
Metadata
Metadata
Assignees
Labels
inputKeyboard or mouse inputKeyboard or mouse input