Merge remote-tracking branch 'github/master' into sigma

This commit is contained in:
sjpark
2023-02-09 11:53:04 +09:00
38 changed files with 498 additions and 339 deletions
+24 -12
View File
@@ -193,8 +193,8 @@ pub mod client {
#[cfg(windows)]
pub fn update_grab_get_key_name() {
match get_keyboard_mode_enum() {
KeyboardMode::Map => rdev::set_get_key_name(false),
KeyboardMode::Translate => rdev::set_get_key_name(true),
KeyboardMode::Map => rdev::set_get_key_unicode(false),
KeyboardMode::Translate => rdev::set_get_key_unicode(true),
_ => {}
};
}
@@ -259,7 +259,7 @@ pub fn start_grab_loop() {
let mut _keyboard_mode = KeyboardMode::Map;
let scan_code = event.scan_code;
let _scan_code = event.scan_code;
let res = if KEYBOARD_HOOKED.load(Ordering::SeqCst) {
_keyboard_mode = client::process_event(&event, None);
if is_press {
@@ -272,7 +272,7 @@ pub fn start_grab_loop() {
};
#[cfg(target_os = "windows")]
match scan_code {
match _scan_code {
0x1D | 0x021D => rdev::set_modifier(Key::ControlLeft, is_press),
0xE01D => rdev::set_modifier(Key::ControlRight, is_press),
0x2A => rdev::set_modifier(Key::ShiftLeft, is_press),
@@ -288,7 +288,7 @@ pub fn start_grab_loop() {
#[cfg(target_os = "windows")]
unsafe {
// AltGr
if scan_code == 0x021D {
if _scan_code == 0x021D {
IS_0X021D_DOWN = is_press;
}
}
@@ -303,6 +303,8 @@ pub fn start_grab_loop() {
if let Err(error) = rdev::grab(func) {
log::error!("rdev Error: {:?}", error)
}
#[cfg(target_os = "windows")]
rdev::set_event_popup(false);
});
#[cfg(target_os = "linux")]
@@ -804,12 +806,10 @@ pub fn map_keyboard_mode(event: &Event, mut key_event: KeyEvent) -> Option<KeyEv
fn try_fill_unicode(event: &Event, key_event: &KeyEvent, events: &mut Vec<KeyEvent>) {
match &event.unicode {
Some(unicode_info) => {
if !unicode_info.is_dead {
for code in &unicode_info.unicode {
let mut evt = key_event.clone();
evt.set_unicode(*code as _);
events.push(evt);
}
for code in &unicode_info.unicode {
let mut evt = key_event.clone();
evt.set_unicode(*code as _);
events.push(evt);
}
}
None => {}
@@ -863,6 +863,12 @@ pub fn translate_virtual_keycode(event: &Event, mut key_event: KeyEvent) -> Opti
pub fn translate_keyboard_mode(event: &Event, key_event: KeyEvent) -> Vec<KeyEvent> {
let mut events: Vec<KeyEvent> = Vec::new();
if let Some(unicode_info) = &event.unicode {
if unicode_info.is_dead {
return events;
}
}
#[cfg(target_os = "windows")]
unsafe {
if event.scan_code == 0x021D {
@@ -881,6 +887,13 @@ pub fn translate_keyboard_mode(event: &Event, key_event: KeyEvent) -> Vec<KeyEve
try_fill_unicode(event, &key_event, &mut events);
}
#[cfg(target_os = "windows")]
unsafe {
if IS_0X021D_DOWN {
return events;
}
}
#[cfg(not(target_os = "windows"))]
try_fill_unicode(event, &key_event, &mut events);
@@ -888,7 +901,6 @@ pub fn translate_keyboard_mode(event: &Event, key_event: KeyEvent) -> Vec<KeyEve
if let Some(evt) = translate_virtual_keycode(event, key_event) {
events.push(evt);
}
return events;
}
events
}