From 46d39becd456fea2fd97bc606f8c62a6523a70be Mon Sep 17 00:00:00 2001 From: kossLAN Date: Fri, 29 May 2026 12:48:47 -0400 Subject: [PATCH] input: move capability conversion to libinput boundary --- input-types/src/lib.rs | 25 +++++++++++++++++++ src/backend.rs | 55 ++++++------------------------------------ src/backends/metal.rs | 2 +- src/ifs/jay_input.rs | 2 +- src/libinput.rs | 16 ++++++++++++ 5 files changed, 50 insertions(+), 50 deletions(-) diff --git a/input-types/src/lib.rs b/input-types/src/lib.rs index 81eadb4c..ff43f256 100644 --- a/input-types/src/lib.rs +++ b/input-types/src/lib.rs @@ -84,6 +84,31 @@ impl StaticText for InputDeviceClickMethod { } } +#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Linearize)] +pub enum InputDeviceCapability { + Keyboard, + Pointer, + Touch, + TabletTool, + TabletPad, + Gesture, + Switch, +} + +impl StaticText for InputDeviceCapability { + fn text(&self) -> &'static str { + match self { + InputDeviceCapability::Keyboard => "keyboard", + InputDeviceCapability::Pointer => "pointer", + InputDeviceCapability::Touch => "touch", + InputDeviceCapability::TabletTool => "tablet tool", + InputDeviceCapability::TabletPad => "tablet pad", + InputDeviceCapability::Gesture => "gesture", + InputDeviceCapability::Switch => "switch", + } + } +} + linear_ids!(InputDeviceGroupIds, InputDeviceGroupId, usize); #[derive(Debug, Copy, Clone, Eq, PartialEq)] diff --git a/src/backend.rs b/src/backend.rs index f903995b..72509caa 100644 --- a/src/backend.rs +++ b/src/backend.rs @@ -10,8 +10,6 @@ use { fixed::Fixed, format::Format, gfx_api::{FdSync, GfxApi, GfxFramebuffer}, - libinput::consts::DeviceCapability, - utils::static_text::StaticText, video::drm::{ ConnectorType, DRM_MODE_COLORIMETRY_BT2020_RGB, DRM_MODE_COLORIMETRY_DEFAULT, DrmConnector, DrmError, DrmVersion, HDMI_EOTF_SMPTE_ST2084, @@ -35,12 +33,13 @@ pub mod transaction; pub use jay_output_types::OutputId; pub use jay_input_types::{ - AXIS_120, AxisSource, ButtonState, InputDeviceAccelProfile, InputDeviceClickMethod, - InputDeviceGroupId, InputDeviceGroupIds, KeyState, Leds, PadButtonState, ScrollAxis, TabletId, - TabletIds, TabletInit, TabletPadGroupInit, TabletPadId, TabletPadIds, TabletPadInit, - TabletRingEventSource, TabletStripEventSource, TabletTool2dChange, TabletToolCapability, - TabletToolChanges, TabletToolId, TabletToolIds, TabletToolInit, TabletToolPositionChange, - TabletToolType, TabletToolWheelChange, ToolButtonState, + AXIS_120, AxisSource, ButtonState, InputDeviceAccelProfile, InputDeviceCapability, + InputDeviceClickMethod, InputDeviceGroupId, InputDeviceGroupIds, KeyState, Leds, + PadButtonState, ScrollAxis, TabletId, TabletIds, TabletInit, TabletPadGroupInit, TabletPadId, + TabletPadIds, TabletPadInit, TabletRingEventSource, TabletStripEventSource, + TabletTool2dChange, TabletToolCapability, TabletToolChanges, TabletToolId, TabletToolIds, + TabletToolInit, TabletToolPositionChange, TabletToolType, TabletToolWheelChange, + ToolButtonState, }; linear_ids!(ConnectorIds, ConnectorId); @@ -274,46 +273,6 @@ pub trait InputDevice { } } -#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Linearize)] -pub enum InputDeviceCapability { - Keyboard, - Pointer, - Touch, - TabletTool, - TabletPad, - Gesture, - Switch, -} - -impl StaticText for InputDeviceCapability { - fn text(&self) -> &'static str { - match self { - InputDeviceCapability::Keyboard => "keyboard", - InputDeviceCapability::Pointer => "pointer", - InputDeviceCapability::Touch => "touch", - InputDeviceCapability::TabletTool => "tablet tool", - InputDeviceCapability::TabletPad => "tablet pad", - InputDeviceCapability::Gesture => "gesture", - InputDeviceCapability::Switch => "switch", - } - } -} - -impl InputDeviceCapability { - pub fn to_libinput(self) -> DeviceCapability { - use crate::libinput::consts::*; - match self { - InputDeviceCapability::Keyboard => LIBINPUT_DEVICE_CAP_KEYBOARD, - InputDeviceCapability::Pointer => LIBINPUT_DEVICE_CAP_POINTER, - InputDeviceCapability::Touch => LIBINPUT_DEVICE_CAP_TOUCH, - InputDeviceCapability::TabletTool => LIBINPUT_DEVICE_CAP_TABLET_TOOL, - InputDeviceCapability::TabletPad => LIBINPUT_DEVICE_CAP_TABLET_PAD, - InputDeviceCapability::Gesture => LIBINPUT_DEVICE_CAP_GESTURE, - InputDeviceCapability::Switch => LIBINPUT_DEVICE_CAP_SWITCH, - } - } -} - pub enum BackendEvent { NewDrmDevice(Rc), NewConnector(Rc), diff --git a/src/backends/metal.rs b/src/backends/metal.rs index d5fad637..6dbf5c8f 100644 --- a/src/backends/metal.rs +++ b/src/backends/metal.rs @@ -543,7 +543,7 @@ impl InputDevice for MetalInputDevice { } fn has_capability(&self, cap: InputDeviceCapability) -> bool { - let li = cap.to_libinput(); + let li = crate::libinput::device_capability(cap); match self.inputdev.get() { Some(dev) => dev.device().has_cap(li), _ => false, diff --git a/src/ifs/jay_input.rs b/src/ifs/jay_input.rs index d7bc2f9b..18c5ccce 100644 --- a/src/ifs/jay_input.rs +++ b/src/ifs/jay_input.rs @@ -93,7 +93,7 @@ impl JayInput { let mut caps = ArrayVec::<_, { InputDeviceCapability::LENGTH }>::new(); for cap in InputDeviceCapability::variants() { if data.data.device.has_capability(cap) { - caps.push(cap.to_libinput().raw()); + caps.push(crate::libinput::device_capability(cap).raw()); } } let dev = &data.data.device; diff --git a/src/libinput.rs b/src/libinput.rs index 5eaf597a..3b1f7a5b 100644 --- a/src/libinput.rs +++ b/src/libinput.rs @@ -1 +1,17 @@ pub use jay_libinput::*; + +use crate::backend::InputDeviceCapability; + +pub fn device_capability(cap: InputDeviceCapability) -> consts::DeviceCapability { + use consts::*; + + match cap { + InputDeviceCapability::Keyboard => LIBINPUT_DEVICE_CAP_KEYBOARD, + InputDeviceCapability::Pointer => LIBINPUT_DEVICE_CAP_POINTER, + InputDeviceCapability::Touch => LIBINPUT_DEVICE_CAP_TOUCH, + InputDeviceCapability::TabletTool => LIBINPUT_DEVICE_CAP_TABLET_TOOL, + InputDeviceCapability::TabletPad => LIBINPUT_DEVICE_CAP_TABLET_PAD, + InputDeviceCapability::Gesture => LIBINPUT_DEVICE_CAP_GESTURE, + InputDeviceCapability::Switch => LIBINPUT_DEVICE_CAP_SWITCH, + } +}