版权声明:本文为博主原创文章,任何组织或者个人可以在任何媒介上发表或转载我的文章、图片等.且转载后必须注明出处和邮箱,博客地址(https://blog.csdn.net/u011011827),本人邮箱([email protected]) https://blog.csdn.net/u011011827/article/details/87891203
- 文件接口
/proc/bus/input/
/sys/class/input/
/dev/input/
利用 /proc/bus/input/handlers 查看 注册 的input handlers
利用 /proc/bus/input/devices 查看 注册 的 input devices
设备的 sys device 在哪里 /sys/class/input/event5/device/device
设备的 sys driver 在哪里
/sys/class/input/event5/device/device/driver
到底有几个input 设备,有几个 eventX 总共就有几个 input 设备,一个 input 设备可能在 /dev/input/ 下面生成1或多个节点
监听设备上报的事件可以监听什么接口 /dev/input/eventX
# cat /proc/bus/input/handlers
N: Number=0 Name=kbd
N: Number=1 Name=sysrq (filter)
N: Number=2 Name=mousedev Minor=32
N: Number=3 Name=evdev Minor=64
I: Bus=0011 Vendor=1111 Product=2222 Version=5555
N: Name="I am simplest input subsystem"
P: Phys=
S: Sysfs=/devices/virtual/input/input56
U: Uniq=
H: Handlers=kbd event2
B: PROP=0
B: EV=3
B: KEY=100000 0 0 0
- I
button_dev->id.bustype=BUS_I8042;
button_dev->id.vendor=0x1111;
button_dev->id.product=0x2222;
button_dev->id.version=0x5555;
- N
button_dev->name="I am simplest input subsystem";
- handlers
set_bit(EV_KEY, button_dev->evbit);
event2 肯定是必须有的
- PROP
set_bit(INPUT_PROP_DIRECT,button_dev->propbit); // ////表明设备的坐标直接和屏幕坐标向对应
- EV
button_dev->evbit[0] = BIT_MASK(EV_KEY); // 0x01
EV_SYNC // 0x00
2^1 + 2^0 = 3
- KEY
因为 在 这个调用的基础上 button_dev->evbit[0] = BIT_MASK(EV_KEY);
做了下面的动作
button_dev->keybit[BIT_WORD(KEY_UP)] = BIT_MASK(KEY_UP);
// //该句是 device 匹配了 kbd handler
B: KEY=1 1000 0 0 4
0-31 号的 KEY_XXX 位与 为 4
32-63 号的 KEY_XXX 位与 为 0
128- 号的 KEY_XXX 位与 为 0