是的,如果它在您的平台上可用(例如,Android 出于某种原因没有定义它),您可以使用UI_GET_SYSNAME
(defined in )。/usr/include/linux/uinput.h
它将为您在 中创建的设备提供一个名称/sys/devices/virtual/input
。一旦你知道了sysfs/dev/input
中的设备,你就可以通过阅读这个 SO question找出在其中创建的设备。
像这样调用后使用它UI_DEV_CREATE
(省略错误/健全性检查):
ioctl(fd, UI_DEV_CREATE);
char sysfs_device_name[16];
ioctl(fd, UI_GET_SYSNAME(sizeof(sysfs_device_name)), sysfs_device_name);
printf("/sys/devices/virtual/input/%s\n", sysfs_device_name);
如果它不可用,您可以尝试查找 sysfs 设备,/proc/bus/input/devices
其中应包含以下条目:
I: Bus=0006 Vendor=0001 Product=0001 Version=0001
N: Name="your-uinput-device-name"
P: Phys=
S: Sysfs=/devices/virtual/input/input12
U: Uniq=
H: Handlers=sysrq kbd mouse0 event11
B: PROP=0
B: EV=7
B: KEY=70000 0 0 0 0 0 7ffff ffffffff fffffffe
B: REL=143
..这有点混乱。但正如您所看到的,它还会为您提供在 中创建的设备的快捷方式/dev/input
。