diff --git a/examples/event-read.rs b/examples/event-read.rs
index 0200ab266..3feef25e0 100644
--- a/examples/event-read.rs
+++ b/examples/event-read.rs
@@ -81,6 +81,7 @@ fn main() -> Result<()> {
PushKeyboardEnhancementFlags(
KeyboardEnhancementFlags::DISAMBIGUATE_ESCAPE_CODES
| KeyboardEnhancementFlags::REPORT_ALL_KEYS_AS_ESCAPE_CODES
+ | KeyboardEnhancementFlags::REPORT_ALTERNATE_KEYS
| KeyboardEnhancementFlags::REPORT_EVENT_TYPES
)
)?;
diff --git a/src/event.rs b/src/event.rs
index dfd17eda1..c1180b2b2 100644
--- a/src/event.rs
+++ b/src/event.rs
@@ -319,10 +319,9 @@ bitflags! {
/// [`KeyEventKind::Release`] when keys are autorepeated or released.
const REPORT_EVENT_TYPES = 0b0000_0010;
// Send [alternate keycodes](https://sw.kovidgoyal.net/kitty/keyboard-protocol/#key-codes)
- // in addition to the base keycode.
- //
- // *Note*: these are not yet supported by crossterm.
- // const REPORT_ALTERNATE_KEYS = 0b0000_0100;
+ // in addition to the base keycode. The alternate keycode overrides the base keycode in
+ // resulting `KeyEvent`s.
+ const REPORT_ALTERNATE_KEYS = 0b0000_0100;
/// Represent all keyboard events as CSI-u sequences. This is required to get repeat/release
/// events for plain-text keys.
const REPORT_ALL_KEYS_AS_ESCAPE_CODES = 0b0000_1000;
diff --git a/src/event/sys/unix/parse.rs b/src/event/sys/unix/parse.rs
index 99ad7ea18..c0b63f23e 100644
--- a/src/event/sys/unix/parse.rs
+++ b/src/event/sys/unix/parse.rs
@@ -275,10 +275,9 @@ fn parse_csi_keyboard_enhancement_flags(buffer: &[u8]) -> Result