mid commit
Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
parent
50f751c215
commit
e24f5e7eed
@ -201,6 +201,8 @@ message KeyEvent {
|
|||||||
bool press = 2;
|
bool press = 2;
|
||||||
oneof union {
|
oneof union {
|
||||||
ControlKey control_key = 3;
|
ControlKey control_key = 3;
|
||||||
|
// high word, sym key code. win: virtual-key code, linux: keysym ?, macos:
|
||||||
|
// low word, position key code. win: scancode, linux: key code, macos: key code
|
||||||
uint32 chr = 4;
|
uint32 chr = 4;
|
||||||
uint32 unicode = 5;
|
uint32 unicode = 5;
|
||||||
string seq = 6;
|
string seq = 6;
|
||||||
|
@ -785,34 +785,9 @@ fn is_hot_key_modifiers_down() -> bool {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn translate_virtual_keycode(event: &Event, mut key_event: KeyEvent) -> Option<KeyEvent> {
|
pub fn translate_vk_scan_code(event: &Event, mut key_event: KeyEvent) -> Option<KeyEvent> {
|
||||||
match event.event_type {
|
let mut key_event = map_keyboard_mode(event, key_event)?;
|
||||||
EventType::KeyPress(..) => {
|
key_event.set_chr((key_event.chr() & 0x0000FFFF) | ((event.code as u32) << 16));
|
||||||
key_event.down = true;
|
|
||||||
}
|
|
||||||
EventType::KeyRelease(..) => {
|
|
||||||
key_event.down = false;
|
|
||||||
}
|
|
||||||
_ => return None,
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut peer = get_peer_platform().to_lowercase();
|
|
||||||
peer.retain(|c| !c.is_whitespace());
|
|
||||||
|
|
||||||
// #[cfg(target_os = "windows")]
|
|
||||||
// let keycode = match peer.as_str() {
|
|
||||||
// "windows" => event.code,
|
|
||||||
// "macos" => {
|
|
||||||
// if hbb_common::config::LocalConfig::get_kb_layout_type() == "ISO" {
|
|
||||||
// rdev::win_scancode_to_macos_iso_code(event.scan_code)?
|
|
||||||
// } else {
|
|
||||||
// rdev::win_scancode_to_macos_code(event.scan_code)?
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// _ => rdev::win_scancode_to_linux_code(event.scan_code)?,
|
|
||||||
// };
|
|
||||||
|
|
||||||
key_event.set_chr(event.code as _);
|
|
||||||
Some(key_event)
|
Some(key_event)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -853,7 +828,7 @@ pub fn translate_keyboard_mode(event: &Event, key_event: KeyEvent) -> Vec<KeyEve
|
|||||||
try_fill_unicode(event, &key_event, &mut events);
|
try_fill_unicode(event, &key_event, &mut events);
|
||||||
|
|
||||||
if events.is_empty() {
|
if events.is_empty() {
|
||||||
if let Some(evt) = translate_virtual_keycode(event, key_event) {
|
if let Some(evt) = translate_vk_scan_code(event, key_event) {
|
||||||
events.push(evt);
|
events.push(evt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1089,10 +1089,6 @@ fn translate_process_virtual_keycode(vk: u32, down: bool) {
|
|||||||
|
|
||||||
fn translate_keyboard_mode(evt: &KeyEvent) {
|
fn translate_keyboard_mode(evt: &KeyEvent) {
|
||||||
match evt.union {
|
match evt.union {
|
||||||
Some(key_event::Union::Unicode(_unicode)) => {
|
|
||||||
#[cfg(target_os = "windows")]
|
|
||||||
allow_err!(rdev::simulate_unicode(_unicode as _));
|
|
||||||
}
|
|
||||||
Some(key_event::Union::Seq(seq)) => {
|
Some(key_event::Union::Seq(seq)) => {
|
||||||
ENIGO.lock().unwrap().key_sequence(&seq);
|
ENIGO.lock().unwrap().key_sequence(&seq);
|
||||||
}
|
}
|
||||||
@ -1101,6 +1097,9 @@ fn translate_keyboard_mode(evt: &KeyEvent) {
|
|||||||
#[cfg(target_os = "windows")]
|
#[cfg(target_os = "windows")]
|
||||||
translate_process_virtual_keycode(evt.chr(), evt.down)
|
translate_process_virtual_keycode(evt.chr(), evt.down)
|
||||||
}
|
}
|
||||||
|
Some(key_event::Union::Unicode(..)) => {
|
||||||
|
// Do not handle unicode for now.
|
||||||
|
}
|
||||||
_ => {
|
_ => {
|
||||||
log::debug!("Unreachable. Unexpected key event {:?}", &evt);
|
log::debug!("Unreachable. Unexpected key event {:?}", &evt);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user