aboutsummaryrefslogtreecommitdiff
path: root/src/input/encode.rs
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-04-08 01:23:23 +0300
committerGitHub <noreply@github.com>2026-04-08 01:23:23 +0300
commitd739880f438d88782b1bc0602b59c7ee4a0fe438 (patch)
tree193d29af2169b1f57d7552ae69785ff4b5d00e91 /src/input/encode.rs
parenta1b803ae64a8ef341356d7552e809c7c89f47b32 (diff)
parent53bb02b53720d00464843fa565850cbdef35aaad (diff)
Merge pull request #9 from Edmund-a7/master
fix: support IME input for Chinese and other UTF-8 characters
Diffstat (limited to 'src/input/encode.rs')
-rw-r--r--src/input/encode.rs22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/input/encode.rs b/src/input/encode.rs
index 4aa68e17..1311d4a0 100644
--- a/src/input/encode.rs
+++ b/src/input/encode.rs
@@ -309,19 +309,31 @@ fn kitty_modifier(mods: KeyModifiers) -> u32 {
}
fn encode_text_input(key: &TerminalKey) -> Option<Vec<u8>> {
+ let ch = match key.code {
+ KeyCode::Char(ch) => ch,
+ _ => return None,
+ };
+
+ if key.modifiers.is_empty() {
+ match key.kind {
+ crossterm::event::KeyEventKind::Press | crossterm::event::KeyEventKind::Repeat => {
+ let mut buf = [0u8; 4];
+ return Some(ch.encode_utf8(&mut buf).as_bytes().to_vec());
+ }
+ crossterm::event::KeyEventKind::Release => return Some(Vec::new()),
+ }
+ }
+
if key.modifiers != KeyModifiers::SHIFT {
return None;
}
- let ch = match key.code {
- KeyCode::Char(ch) => shifted_text_char(key, ch)?,
- _ => return None,
- };
+ let shifted_ch = shifted_text_char(key, ch)?;
match key.kind {
crossterm::event::KeyEventKind::Press | crossterm::event::KeyEventKind::Repeat => {
let mut buf = [0u8; 4];
- Some(ch.encode_utf8(&mut buf).as_bytes().to_vec())
+ Some(shifted_ch.encode_utf8(&mut buf).as_bytes().to_vec())
}
crossterm::event::KeyEventKind::Release => Some(Vec::new()),
}