Linux input固定设备/dev/input/eventX设备号

问题:

嵌入式ARM Linux开发板调试触控的时候, 会经常碰见不同接口类型的触控板,有I2C的,USB等, 不同厂家不同型号的触控驱动在内核启动时加载顺序不同,也就导致了在/dev/input目录下生成的eventX的序号就不同, 而应用层一般会固件打开某个event设备节点,更换触控面板,可能会导致应用程序打开错误的event设备节点,因此想在内核里面做一下适配,是某些固定的触控设备最终在文件系统中生成固定的设备号文件节点。

解决:

1. 查看系统总线上所有的input设备

# cat /proc/bus/input/devices 
I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="sunxi-keyboard"
P: Phys=sunxikbd/input0
S: Sysfs=/devices/virtual/input/input0
U: Uniq=
H: Handlers=kbd event0 autohotplug cpufreq_interactive 
B: PROP=0
B: EV=3
B: KEY=100040000800 c000000000000 0

I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name=“sunxi_ir_recv”
P: Phys=sunxi_ir_recv/input0
S: Sysfs=/devices/soc.0/1f02000.s_cir/rc/rc0/input1
U: Uniq=
H: Handlers=kbd event1 autohotplug cpufreq_interactive
B: PROP=0
B: EV=100013
B: KEY=100040000840 1c168000000000 10000000
B: MSC=10

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name=“MCE IR Keyboard/Mouse (sunxi-rc-recv)”
P: Phys=/input0
S: Sysfs=/devices/virtual/input/input2
U: Uniq=
H: Handlers=sysrq kbd mouse0 event2
B: PROP=0
B: EV=100017
B: KEY=30000 7 ff87207ac14057ff febeffdfffefffff fffffffffffffffe
B: REL=3
B: MSC=10

I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name=“axp81x-supplyer”
P: Phys=m1kbd/input2
S: Sysfs=/devices/platform/axp81x_board/axp81x-supplyer.47/input/input3
U: Uniq=
H: Handlers=kbd event3 autohotplug cpufreq_interactive
B: PROP=0
B: EV=7
B: KEY=10000000000000 0
B: REL=0

I: Bus=0003 Vendor=222a Product=0001 Version=0110
N: Name=“ILITEK ILITEK-TP”
P: Phys=usb-sunxi-ehci-1.4/input0
S: Sysfs=/devices/soc.0/1c1b000.ehci1-controller/usb1/1-1/1-1.4/1-1.4:1.0/input/input4
U: Uniq=
H: Handlers=mouse1 event4 autohotplug cpufreq_interactive
B: PROP=2
B: EV=b
B: KEY=400 0 0 0 0 0
B: ABS=260800000000003

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name=“audiocodec sunxi Audio Jack”
P: Phys=ALSA
S: Sysfs=/devices/soc.0/sound.6/sound/card0/input5
U: Uniq=
H: Handlers=kbd event5
B: PROP=0
B: EV=23
B: KEY=400000000 0 c000000000000 0
B: SW=14

I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name=“sunxi-ths”
P: Phys=sunxiths/input0
S: Sysfs=/devices/virtual/input/input6
U: Uniq=
H: Handlers=event6
B: PROP=0
B: EV=9
B: ABS=10000000000

比如我们的应用程序中默认固定使用了/dev/input/event5作为我们设备的触控设备文件节点,但是查看input设备信息发现我们的触控设备ILITEK ILITEK-TP现在枚举成了/dev/input/event4了, 现在希望ILITEK ILITEK-TP还是枚举为/dev/input/event5。

2. Linux内核文件修改处

drivers/input/input.c       input_register_device函数       input序号
drivers/input/mousedev.c    mousedev_connect函数            mouse序号
drivers/input/evdev.c       evdev_connect函数               event序号

在这里插入图片描述
在这里插入图片描述

3. 修改后效果

# cat /proc/bus/input/devices 
I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="sunxi-keyboard"
P: Phys=sunxikbd/input0
S: Sysfs=/devices/virtual/input/input0
U: Uniq=
H: Handlers=kbd event0 autohotplug cpufreq_interactive 
B: PROP=0
B: EV=3
B: KEY=100040000800 c000000000000 0

I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name=“sunxi_ir_recv”
P: Phys=sunxi_ir_recv/input0
S: Sysfs=/devices/soc.0/1f02000.s_cir/rc/rc0/input1
U: Uniq=
H: Handlers=kbd event1 autohotplug cpufreq_interactive
B: PROP=0
B: EV=100013
B: KEY=100040000840 1c168000000000 10000000
B: MSC=10

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name=“MCE IR Keyboard/Mouse (sunxi-rc-recv)”
P: Phys=/input0
S: Sysfs=/devices/virtual/input/input2
U: Uniq=
H: Handlers=sysrq kbd mouse0 event2
B: PROP=0
B: EV=100017
B: KEY=30000 7 ff87207ac14057ff febeffdfffefffff fffffffffffffffe
B: REL=3
B: MSC=10

I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name=“axp81x-supplyer”
P: Phys=m1kbd/input2
S: Sysfs=/devices/platform/axp81x_board/axp81x-supplyer.47/input/input3
U: Uniq=
H: Handlers=kbd event3 autohotplug cpufreq_interactive
B: PROP=0
B: EV=7
B: KEY=10000000000000 0
B: REL=0

I: Bus=0003 Vendor=222a Product=0001 Version=0110
N: Name=“ILITEK ILITEK-TP”
P: Phys=usb-sunxi-ehci-1.4/input0
S: Sysfs=/devices/soc.0/1c1b000.ehci1-controller/usb1/1-1/1-1.4/1-1.4:1.0/input/input5
U: Uniq=
H: Handlers=mouse1 event5 autohotplug cpufreq_interactive
B: PROP=2
B: EV=b
B: KEY=400 0 0 0 0 0
B: ABS=260800000000003

I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name=“audiocodec sunxi Audio Jack”
P: Phys=ALSA
S: Sysfs=/devices/soc.0/sound.6/sound/card0/input4
U: Uniq=
H: Handlers=kbd event4
B: PROP=0
B: EV=23
B: KEY=400000000 0 c000000000000 0
B: SW=14

I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name=“sunxi-ths”
P: Phys=sunxiths/input0
S: Sysfs=/devices/virtual/input/input6
U: Uniq=
H: Handlers=event6
B: PROP=0
B: EV=9
B: ABS=10000000000

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值