diff options
Diffstat (limited to 'src/input/model.rs')
| -rw-r--r-- | src/input/model.rs | 18 |
1 files changed, 17 insertions, 1 deletions
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<KeyEvent> 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)); + } } |
