Loosened conditions for device to be considered a tablet

This commit is contained in:
cyber-sushi 2024-11-19 13:26:52 +01:00
parent 6f8cf4e099
commit f6ecff6670
2 changed files with 12 additions and 20 deletions

View file

@ -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<InputEvent> = 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();

View file

@ -22,7 +22,7 @@ impl VirtualDevices {
let mut tablet_abs_capabilities: Vec<evdev::UinputAbsSetup> = 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")