$ls /sys/class/input/event0 event1 ... eventNinput0 input2 ... input19 ... inputNmouse0 mouse1 ... mouseNmice$ls /sys/devices/virtual/input/input19 mice
请注意,您可以在其他路径中找到虚拟设备.在这种情况下,input19是我的输入设备.哪个是对应的char设备?
$ls /sys/devices/virtual/input/input19/event14 name ID ...
我的char设备是/ dev / input / event14.我知道input19是我的输入设备,因为我是唯一一个创建输入设备的用户.如果您想确定,您必须阅读其sysfs属性名称并验证它确实是您的设备
$cat /sys/devices/virtual/input/input19/namefoo-keyboard-201303261446
您可以通过读取内核消息来检索有关新uinput设备的信息:
$dmesg | tail -n 7input: foo-keyboard-201303261445 as /devices/virtual/input/input14input: foo-keyboard-201303261445 as /devices/virtual/input/input15input: foo-keyboard-201303261445 as /devices/virtual/input/input16input: foo-keyboard-201303261445 as /devices/virtual/input/input17input: foo-keyboard-201303261446 as /devices/virtual/input/input18input: foo-keyboard-201303261446 as /devices/virtual/input/input19input: foo-keyboard-201303261446 as /devices/virtual/input/input20
从您的程序中,您可以从/ dev / kmsg中读取并捕获您的活动.也许你可以打开设备/ dev / kmsg,刷新它,等待select(),直到你收到输入通知.
另一种方法是使用libudev来检索您的输入设备.看看以下链接:libudev tutorial
更新:感谢您的问题,我在github:libuinput by Federico上改进了我的libuinput库.我实现了使用hte kmsg设备的解决方案.
更新:2014年linux uinput驱动程序得到了改进(git SHA1 e3480a61fc).现在可以使用以下ioctl命令直接从uinput驱动程序获取sysfs路径:
/** * UI_GET_SYSname - get the sysfs name of the created uinput device * * @return the sysfs name of the created virtual input device. * The complete sysfs path is then /sys/devices/virtual/input/--name-- * Usually,it is in the form "inputN" */#define UI_GET_SYSname(len) _IOC(_IOC_READ,Uinput_IOCTL_BASE,300,len)
因此,如果您有可能使用比3.13更新的linux内核,则可以使用上面的ioctl来改进使用uinput的代码.
总结以上是内存溢出为你收集整理的linux – 如何确定与输入设备相对应的文件?全部内容,希望文章能够帮你解决linux – 如何确定与输入设备相对应的文件?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)