Fixed a bug that prematurely ended a long press if another key was lifted
This commit is contained in:
parent
7f48ef3ea4
commit
12917aa8e4
1 changed files with 14 additions and 10 deletions
|
@ -998,13 +998,15 @@ impl EventReader {
|
||||||
) {
|
) {
|
||||||
let mut virt_dev = self.virt_dev.lock().await;
|
let mut virt_dev = self.virt_dev.lock().await;
|
||||||
let mut modifier_was_activated = self.modifier_was_activated.lock().await;
|
let mut modifier_was_activated = self.modifier_was_activated.lock().await;
|
||||||
if release_keys {
|
if release_keys && value != 2 {
|
||||||
let released_keys: Vec<Key> = self.released_keys(&modifiers, &config).await;
|
let released_keys: Vec<Key> = self.released_keys(&modifiers, &config).await;
|
||||||
for key in released_keys {
|
for key in released_keys {
|
||||||
|
if config.mapped_modifiers.all.contains(&Event::Key(key)) {
|
||||||
self.toggle_modifiers(Event::Key(key), 0, &config).await;
|
self.toggle_modifiers(Event::Key(key), 0, &config).await;
|
||||||
let virtual_event: InputEvent = InputEvent::new_now(EventType::KEY, key.code(), 0);
|
let virtual_event: InputEvent = InputEvent::new_now(EventType::KEY, key.code(), 0);
|
||||||
virt_dev.keys.emit(&[virtual_event]).unwrap();
|
virt_dev.keys.emit(&[virtual_event]).unwrap();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else if ignore_modifiers {
|
} else if ignore_modifiers {
|
||||||
for key in modifiers.iter() {
|
for key in modifiers.iter() {
|
||||||
if let Event::Key(key) = key {
|
if let Event::Key(key) = key {
|
||||||
|
@ -1015,7 +1017,7 @@ impl EventReader {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for key in event_list {
|
for key in event_list {
|
||||||
if release_keys {
|
if release_keys && value != 2 {
|
||||||
self.toggle_modifiers(Event::Key(*key), value, &config)
|
self.toggle_modifiers(Event::Key(*key), value, &config)
|
||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
|
@ -1050,12 +1052,14 @@ impl EventReader {
|
||||||
) {
|
) {
|
||||||
let mut virt_dev = self.virt_dev.lock().await;
|
let mut virt_dev = self.virt_dev.lock().await;
|
||||||
let mut modifier_was_activated = self.modifier_was_activated.lock().await;
|
let mut modifier_was_activated = self.modifier_was_activated.lock().await;
|
||||||
|
if config.mapped_modifiers.all.contains(&event) && value != 2 {
|
||||||
let released_keys: Vec<Key> = self.released_keys(&modifiers, &config).await;
|
let released_keys: Vec<Key> = self.released_keys(&modifiers, &config).await;
|
||||||
for key in released_keys {
|
for key in released_keys {
|
||||||
self.toggle_modifiers(Event::Key(key), 0, &config).await;
|
self.toggle_modifiers(Event::Key(key), 0, &config).await;
|
||||||
let virtual_event: InputEvent = InputEvent::new_now(EventType::KEY, key.code(), 0);
|
let virtual_event: InputEvent = InputEvent::new_now(EventType::KEY, key.code(), 0);
|
||||||
virt_dev.keys.emit(&[virtual_event]).unwrap()
|
virt_dev.keys.emit(&[virtual_event]).unwrap()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
self.toggle_modifiers(event, value, &config).await;
|
self.toggle_modifiers(event, value, &config).await;
|
||||||
if config.mapped_modifiers.custom.contains(&event) {
|
if config.mapped_modifiers.custom.contains(&event) {
|
||||||
if value == 0 && !*modifier_was_activated {
|
if value == 0 && !*modifier_was_activated {
|
||||||
|
|
Loading…
Add table
Reference in a new issue