Compose key broken in Kitty since NixOS 24.11

I’m having an issue with Kitty since upgrading to 24.11: I’m using the Ergo-L keyboard layout in which some characters are input with a dead key. Since 24.11, characters input with the dead key in Kitty (and only in Kitty) end up in some kind of escaped form (eg. ^[[97;17u instead of à).

I’ve already tried rebooting to a previous generation to confirm that it’s a new bug (it is). I took the path to the kitty executable from the previous NixOS generation and tried executing it from the new NixOS generation, which resulted in the bug appearing again, so I guess it’s something outside of kitty that converts the input to characters that’s broken? Note that the problem only appears in Kitty, other apps work fine, and other terminal emulators such as alacritty also work fine.

Here’s the output from kitty --debug-input with the bug:

$ kitty --debug-input
[2.186] Press xkb_keycode: 0x20 clean_sym: ISO_Level5_Latch composed_sym: ISO_Level5_Latch mods: none glfw_key: 0 (UNKNOWN) xkb_key: 65042 (ISO_Level5_Latch) alternate_key: 111 (o)
[2.186] on_key_input: glfw key: 0x0 native_code: 0xfe12 action: PRESS mods: none text: '' state: 0 ignoring as keyboard mode does not support encoding this event
[2.250] Release xkb_keycode: 0x20 clean_sym: ISO_Level5_Latch mods: hyper glfw_key: 0 (UNKNOWN) xkb_key: 65042 (ISO_Level5_Latch) alternate_key: 111 (o)
[2.250] on_key_input: glfw key: 0x0 native_code: 0xfe12 action: RELEASE mods: hyper text: '' state: 0 ignoring release event for previous press that was handled as shortcut
[2.347] Press xkb_keycode: 0x26 clean_sym: a composed_sym: agrave mods: hyper glfw_key: 97 (a) xkb_key: 97 (a) shifted_key: 224 (à)
[2.347] on_key_input: glfw key: 0x61 native_code: 0x61 action: PRESS mods: hyper text: '' state: 0 sent encoded key to child: ^[ [ 9 7 ; 1 7 u 
[2.377] Release xkb_keycode: 0x26 clean_sym: a mods: none glfw_key: 97 (a�) xkb_key: 97 (a)
[2.377] on_key_input: glfw key: 0x61 native_code: 0x61 action: RELEASE mods: none text: '' state: 0 ignoring as keyboard mode does not support encoding this event

The output with the old generation where the character was correctly output:

$ kitty --debug-input
[2.083] on_key_input: glfw key: 0x0 native_code: 0xfe12 action: PRESS mods: numlock text: '' state: 0 ignoring as keyboard mode does not support encoding this event
[2.151] Release xkb_keycode: 0x20 clean_sym: ISO_Level5_Latch mods: numlock glfw_key: 0 (UNKNOWN) xkb_key: 65042 (ISO_Level5_Latch) alternate_key: 111 (o)
[2.151] on_key_input: glfw key: 0x0 native_code: 0xfe12 action: RELEASE mods: numlock text: '' state: 0 ignoring release event for previous press that was handled as shortcut
[2.247] Press xkb_keycode: 0x26 clean_sym: a composed_sym: agrave active_unknown_mods: Mod3 consumed_unknown_mods: Mod3 text: à mods: numlock glfw_key: 224 (à) xkb_key: 224 (agrave) alternate_key: 97 (a�)
[2.247] on_key_input: glfw key: 0xe0 native_code: 0xe0 action: PRESS mods: numlock text: 'à' state: 0 sent key as text to child: à
[2.267] Release xkb_keycode: 0x26 clean_sym: a mods: numlock glfw_key: 97 (a�) xkb_key: 97 (a)
[2.267] on_key_input: glfw key: 0xe0 native_code: 0xe0 action: RELEASE mods: numlock text: '' state: 0 ignoring as keyboard mode does not support encoding this event

I’d appreciate any leads you might have to start debugging. :pray:

1 Like

I don’t know if that helps, but I’m also using Ergo-L on hyprland with NixOS unstable and I have no issue with Kitty and the dead key. My system was updated a few days ago, I’m on the kernel 6.11.10. Bonne chance :slight_smile: