input 子系统(三) 文件接口

版权声明:本文为博主原创文章,任何组织或者个人可以在任何媒介上发表或转载我的文章、图片等.且转载后必须注明出处和邮箱,博客地址(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


猜你喜欢

转载自blog.csdn.net/u011011827/article/details/87891203