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