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