Skip to content

Commit 0058c0c

Browse files
committed
#2014 do not send non EV_KEY events to the front end to reduce latency, such as mouse
1 parent 6e8158a commit 0058c0c

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

evdev/src/main/rust/evdev_manager/core/src/event_loop.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@ use crate::grab_target_key_code::GrabTargetKeyCode;
77
use crate::grabbed_device::GrabbedDevice;
88
use crate::grabbed_device_handle::GrabbedDeviceHandle;
99
use crate::runtime::get_runtime;
10-
use evdev::enums::{EventType, EV_SYN};
10+
use evdev::enums::{EventCode, EventType, EV_SYN};
1111
use evdev::util::event_code_to_int;
1212
use evdev::{InputEvent, ReadFlag, ReadStatus};
1313
use libc::c_uint;
1414
use log::Level;
1515
use mio::event::Event;
1616
use mio::{Events, Poll, Token, Waker};
17+
use std::any::Any;
1718
use std::error::Error;
1819
use std::io;
1920
use std::io::ErrorKind;
@@ -390,9 +391,15 @@ impl EventLoopThread {
390391
}
391392

392393
fn process_event(&self, device_id: usize, event: &InputEvent, grabbed_device: &GrabbedDevice) {
393-
let consumed = self
394-
.callback
395-
.on_evdev_event(device_id, &grabbed_device.device_info, event);
394+
// Key Mapper only cares about key events. Do not send other events so latency
395+
// isn't introduced with the IPC.
396+
let consumed = match event.event_code {
397+
EventCode::EV_KEY(_) => {
398+
self.callback
399+
.on_evdev_event(device_id, &grabbed_device.device_info, event)
400+
}
401+
_ => false,
402+
};
396403

397404
if !consumed {
398405
let (event_type, event_code) = event_code_to_int(&event.event_code);

0 commit comments

Comments
 (0)