From 7e094e230beb690230bd185dacc98c5510198e4a Mon Sep 17 00:00:00 2001 From: FlorianNAdam <64063379+FlorianNAdam@users.noreply.github.com> Date: Wed, 26 Jul 2023 12:45:34 +0200 Subject: [PATCH 1/2] fix set_phys ioctl binding --- src/sys.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sys.rs b/src/sys.rs index 17c4f0d..086b120 100644 --- a/src/sys.rs +++ b/src/sys.rs @@ -86,7 +86,7 @@ ioctl_write_int!(ui_set_mscbit, UINPUT_IOCTL_BASE, 104); ioctl_write_int!(ui_set_ledbit, UINPUT_IOCTL_BASE, 105); ioctl_write_int!(ui_set_sndbit, UINPUT_IOCTL_BASE, 106); ioctl_write_int!(ui_set_ffbit, UINPUT_IOCTL_BASE, 107); -ioctl_write_buf!(ui_set_phys, UINPUT_IOCTL_BASE, 108, u8); +ioctl_write_ptr!(ui_set_phys, UINPUT_IOCTL_BASE, 108, usize); ioctl_write_int!(ui_set_swbit, UINPUT_IOCTL_BASE, 109); ioctl_write_int!(ui_set_propbit, UINPUT_IOCTL_BASE, 110); From e135d20afa7cdbe5e856123385a4d12466fe571a Mon Sep 17 00:00:00 2001 From: FlorianNAdam <64063379+FlorianNAdam@users.noreply.github.com> Date: Wed, 26 Jul 2023 12:48:34 +0200 Subject: [PATCH 2/2] add missing with_phys to VirtualDeviceBuilder --- src/uinput.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/uinput.rs b/src/uinput.rs index 847571c..02506bb 100644 --- a/src/uinput.rs +++ b/src/uinput.rs @@ -9,6 +9,7 @@ use crate::{ sys, AttributeSetRef, Error, FFEffectCode, InputEvent, KeyCode, MiscCode, PropType, RelativeAxisCode, SwitchCode, SynchronizationEvent, UInputCode, UInputEvent, UinputAbsSetup, }; +use std::ffi::CString; use std::os::fd::{AsFd, AsRawFd, BorrowedFd, OwnedFd, RawFd}; use std::path::PathBuf; use std::{fs, io}; @@ -52,6 +53,14 @@ impl<'a> VirtualDeviceBuilder<'a> { self } + pub fn with_phys(self, path: &str) -> io::Result { + let c_str = CString::new(path)?; + unsafe { + sys::ui_set_phys(self.fd.as_raw_fd(), c_str.as_ptr() as *const usize)?; + } + Ok(self) + } + pub fn with_keys(self, keys: &AttributeSetRef) -> io::Result { // Run ioctls for setting capability bits unsafe {