handling IME
This commit is contained in:
parent
6fa8138568
commit
f11ca64eac
@ -341,10 +341,70 @@ impl Handler {
|
|||||||
if let Some(k) = control_key {
|
if let Some(k) = control_key {
|
||||||
key_event.set_control_key(k);
|
key_event.set_control_key(k);
|
||||||
} else {
|
} else {
|
||||||
let chr = match evt.name {
|
let mut chr = match evt.name {
|
||||||
Some(ref s) => s.chars().next().unwrap_or('\0'),
|
Some(ref s) => {
|
||||||
|
if s.len() <= 2 { // exclude chinese characters
|
||||||
|
s.chars().next().unwrap_or('\0')
|
||||||
|
} else {
|
||||||
|
'\0'
|
||||||
|
}
|
||||||
|
}
|
||||||
_ => '\0',
|
_ => '\0',
|
||||||
};
|
};
|
||||||
|
if chr == '·' { // special for Chinese
|
||||||
|
chr = '`';
|
||||||
|
}
|
||||||
|
if chr == '\0' {
|
||||||
|
chr = match key {
|
||||||
|
Key::Num1 => '1',
|
||||||
|
Key::Num2 => '2',
|
||||||
|
Key::Num3 => '3',
|
||||||
|
Key::Num4 => '4',
|
||||||
|
Key::Num5 => '5',
|
||||||
|
Key::Num6 => '6',
|
||||||
|
Key::Num7 => '7',
|
||||||
|
Key::Num8 => '8',
|
||||||
|
Key::Num9 => '9',
|
||||||
|
Key::Num0 => '0',
|
||||||
|
Key::KeyA => 'a',
|
||||||
|
Key::KeyB => 'b',
|
||||||
|
Key::KeyC => 'c',
|
||||||
|
Key::KeyD => 'd',
|
||||||
|
Key::KeyE => 'e',
|
||||||
|
Key::KeyF => 'f',
|
||||||
|
Key::KeyG => 'g',
|
||||||
|
Key::KeyH => 'h',
|
||||||
|
Key::KeyI => 'i',
|
||||||
|
Key::KeyJ => 'j',
|
||||||
|
Key::KeyK => 'k',
|
||||||
|
Key::KeyL => 'l',
|
||||||
|
Key::KeyM => 'm',
|
||||||
|
Key::KeyN => 'n',
|
||||||
|
Key::KeyO => 'o',
|
||||||
|
Key::KeyP => 'p',
|
||||||
|
Key::KeyQ => 'q',
|
||||||
|
Key::KeyR => 'r',
|
||||||
|
Key::KeyS => 's',
|
||||||
|
Key::KeyT => 't',
|
||||||
|
Key::KeyU => 'u',
|
||||||
|
Key::KeyV => 'v',
|
||||||
|
Key::KeyW => 'w',
|
||||||
|
Key::KeyX => 'x',
|
||||||
|
Key::KeyY => 'y',
|
||||||
|
Key::KeyZ => 'z',
|
||||||
|
Key::Comma => ',',
|
||||||
|
Key::Dot => '.',
|
||||||
|
Key::SemiColon => ';',
|
||||||
|
Key::Quote => '\'',
|
||||||
|
Key::LeftBracket => '[',
|
||||||
|
Key::RightBracket => ']',
|
||||||
|
Key::BackSlash => '\\',
|
||||||
|
Key::Minus => '-',
|
||||||
|
Key::Equal => '=',
|
||||||
|
Key::BackQuote => '`',
|
||||||
|
_ => '\0',
|
||||||
|
}
|
||||||
|
}
|
||||||
if chr != '\0' {
|
if chr != '\0' {
|
||||||
if chr == 'l' && is_win && command {
|
if chr == 'l' && is_win && command {
|
||||||
me.lock_screen();
|
me.lock_screen();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user