Merge remote-tracking branch 'github/master' into sigma
This commit is contained in:
+24
-12
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user