From 4af28fbb6551cd33596096af422895c1998fa3e8 Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Tue, 12 May 2026 15:54:19 +0300 Subject: test: add ime input regressions --- src/input/mod.rs | 5 ++++- src/input/model.rs | 18 +++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) (limited to 'src/input') diff --git a/src/input/mod.rs b/src/input/mod.rs index a2775e40..b4886256 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -6,5 +6,8 @@ mod parse; pub use encode::{ encode_cursor_key, encode_mouse_button, encode_mouse_scroll, encode_terminal_key, }; -pub use model::{KeyboardProtocol, MouseProtocolEncoding, MouseProtocolMode, TerminalKey}; +pub use model::{ + ime_compatible_keyboard_enhancement_flags, KeyboardProtocol, MouseProtocolEncoding, + MouseProtocolMode, TerminalKey, +}; pub use parse::parse_terminal_key_sequence; diff --git a/src/input/model.rs b/src/input/model.rs index 181ba7b3..95732bbc 100644 --- a/src/input/model.rs +++ b/src/input/model.rs @@ -1,4 +1,4 @@ -use crossterm::event::{KeyCode, KeyEvent, KeyModifiers}; +use crossterm::event::{KeyCode, KeyEvent, KeyModifiers, KeyboardEnhancementFlags}; #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct TerminalKey { @@ -40,6 +40,12 @@ impl From for TerminalKey { } } +pub fn ime_compatible_keyboard_enhancement_flags() -> KeyboardEnhancementFlags { + KeyboardEnhancementFlags::DISAMBIGUATE_ESCAPE_CODES + | KeyboardEnhancementFlags::REPORT_EVENT_TYPES + | KeyboardEnhancementFlags::REPORT_ALTERNATE_KEYS +} + #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum KeyboardProtocol { Legacy, @@ -97,4 +103,14 @@ mod tests { KeyboardProtocol::Kitty { flags: 7 } ); } + + #[test] + fn keyboard_enhancement_flags_stay_ime_compatible() { + let flags = ime_compatible_keyboard_enhancement_flags(); + + assert!(flags.contains(KeyboardEnhancementFlags::DISAMBIGUATE_ESCAPE_CODES)); + assert!(flags.contains(KeyboardEnhancementFlags::REPORT_EVENT_TYPES)); + assert!(flags.contains(KeyboardEnhancementFlags::REPORT_ALTERNATE_KEYS)); + assert!(!flags.contains(KeyboardEnhancementFlags::REPORT_ALL_KEYS_AS_ESCAPE_CODES)); + } } -- cgit v1.2.3