Open
Description
I found sometimes the CGEvent.set_flags does not set flags correctly
fn set_modifier_flag(&mut self, key: &String, key_event: CGEvent, press: bool) -> CGEvent {
if self.modifier_map.contains_key(key) {
let event_flag: &CGEventFlags = self.modifier_map.get(key).unwrap();
if press {
self.flag_holder.lock().unwrap().insert(*event_flag);
key_event.set_flags(*self.flag_holder.lock().unwrap());
} else {
self.flag_holder.lock().unwrap().remove(*event_flag);
key_event.set_flags(*self.flag_holder.lock().unwrap());
}
}
// the code below is to make sure the key_event flags had been set correctly
let mut repeat_setter_counter = 0;
while key_event.get_flags() != *self.flag_holder.lock().unwrap() && repeat_setter_counter < 10 {
key_event.set_flags(*self.flag_holder.lock().unwrap());
repeat_setter_counter += 1;
std::thread::sleep(std::time::Duration::from_millis(1));
}
key_event
}
Metadata
Metadata
Assignees
Labels
No labels