aboutsummaryrefslogtreecommitdiff
path: root/src/input/model.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/input/model.rs')
-rw-r--r--src/input/model.rs18
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));
+ }
}