diff --git a/src/event_reader.rs b/src/event_reader.rs index da309be..4b4103b 100644 --- a/src/event_reader.rs +++ b/src/event_reader.rs @@ -265,15 +265,12 @@ impl EventReader { let switcher: Key = self.settings.layout_switcher; let mut stream = self.stream.lock().await; let mut pen_events: Vec = Vec::new(); - let is_tablet: bool = stream + let is_tablet: bool = + stream .device() - .properties() - .contains(evdev::PropType::POINTER) - && stream - .device() - .supported_keys() - .unwrap_or(&evdev::AttributeSet::new()) - .contains(evdev::Key::BTN_TOOL_PEN); + .supported_keys() + .unwrap_or(&evdev::AttributeSet::new()) + .contains(evdev::Key::BTN_TOOL_PEN); let mut max_abs_wheel = 0; if let Ok(abs_state) = stream.device().get_abs_state() { for state in abs_state { @@ -351,9 +348,11 @@ impl EventReader { } abs_wheel_position = value; } - (EventType::ABSOLUTE, _, AbsoluteAxisType::ABS_MISC, false) => { - if event.value() == 0 { + (EventType::ABSOLUTE, _, AbsoluteAxisType::ABS_MISC, _) => { + if is_tablet == false && event.value() == 0 { abs_wheel_position = 0 + } else { + self.emit_default_event(event).await; } } (EventType::ABSOLUTE, _, _, true) => pen_events.push(event), @@ -730,13 +729,7 @@ impl EventReader { } } (EventType::MISC, _, _, true) => { - if !stream - .device() - .properties() - .contains(evdev::PropType::POINTER) - { - self.emit_default_event(event).await; - } else if evdev::MiscType(event.code()) == evdev::MiscType::MSC_SERIAL { + if evdev::MiscType(event.code()) == evdev::MiscType::MSC_SERIAL { pen_events.push(event); let mut virt_dev = self.virt_dev.lock().await; virt_dev.abs.emit(&pen_events).unwrap(); diff --git a/src/virtual_devices.rs b/src/virtual_devices.rs index e551597..cd8e4f5 100644 --- a/src/virtual_devices.rs +++ b/src/virtual_devices.rs @@ -22,7 +22,7 @@ impl VirtualDevices { let mut tablet_abs_capabilities: Vec = Vec::new(); if let Ok(absinfo) = device.get_abs_state() { for (axis_type, info) in absinfo.iter().enumerate() { - if [0, 1, 2, 5, 6, 8, 24, 25, 26, 27].contains(&axis_type) { + if [0, 1, 2, 5, 6, 8, 24, 25, 26, 27, 40].contains(&axis_type) { let new_absinfo = evdev::AbsInfo::new( info.value, info.minimum, @@ -55,8 +55,7 @@ impl VirtualDevices { tab_rel.insert(evdev::RelativeAxisType(8)); let mut tab_msc = evdev::AttributeSet::new(); tab_msc.insert(evdev::MiscType(0)); - let mut pointer_prop = evdev::AttributeSet::new(); - pointer_prop.insert(evdev::PropType::POINTER); + let pointer_prop = device.properties(); let keys_builder = VirtualDeviceBuilder::new() .expect("Unable to create virtual device through uinput. Take a look at the Troubleshooting section for more info.") .name("Makima Virtual Keyboard/Mouse")