linux 输入(input)设备接口
2013-05-11 22:00
375 查看
input是在linux下面所有输入设备驱动的一个集合,当前只应用在了USB输入设备上,后面会替代大多数存在的输入设备。input驱动的核心是输入模块,该模块必须在其它所有输入模块加载前被加载,它为两个模块之间提供了一种通讯机制。下面进行详细介绍
input数据结构如下
1、设备驱动(Device drivers)
设备驱动模块负责和硬件进行通讯,如通过USB,并且为输入模块提供事件,如按键、鼠标移动。
2、事件处理(Event handlers)
该模块从输入模块中获取事件,并且通过各种接口往上层传输,如传输按键(keystrokes)到内核(kernel),鼠标移动通过一个模拟的PS/2接口道GPM以及X等等。
3、用法举例
大多数配置中,需要有USB鼠标以及USB键盘,因此,需要加载以下模块或者将它们编译到内核中
input
mousedev
keybdev
usbcore
uhci_hcd or ohci_hcd or ehci_hcd
usbhid
这样以后,USB键盘会立刻工作,USB鼠标则会以一个major 13, minor 63的字符设备,这个与实际的可能有所出入,如下所示,这是本系统的mouse情况,本系统主要有4个鼠标设备,主设备号都为13,次设备号分别是32、33、34、35
并且输入设备还有个咪头(mice)如下所示,主设备号为13,次设备号为63
我们可以通过以下命令,创建以上设备,如下所示
cd /dev/input
mknod mice c 13 63
After that you have to point GPM (the textmode mouse cut&paste tool) and XFree to this device to use it - GPM should be called like:
gpm -t ps2 -m /dev/input/mice
And in X:
Section "Pointer" Protocol "ImPS/2"
Device "/dev/input/mice"
ZAxisMapping 4 5 EndSection
When you do all of the above, you can use your USB mouse and keyboard.
4、设备驱动(Device drivers)
设备驱动(device drivers)是用于产生事件的模块,然而,该事件如果没有被处理,则是没有用的。
5、事件处理
事件处理是将设备的事件分发到用户或者内核空间进行处理。
5、1 keybdev(按键设备)
keybdev是目前用于将输入事件转换成特定键盘结构的原始数据,并且传输他们到keyboard.c模块里的handle_scancode函数
5、2 mousedev(鼠标设备)
5、3 evdev
事件是输入事件的一个接口,他传输内核产生的事件到程序里,并且携带了时间戳。
cat /dev/input/mouse0 ,如果移动鼠标,则可以看到上面有字符输出,如下所示
input数据结构如下
struct input_dev { void *private; const char *name; const char *phys; const char *uniq; struct input_id id; unsigned long evbit[NBITS(EV_MAX)]; unsigned long keybit[NBITS(KEY_MAX)]; unsigned long relbit[NBITS(REL_MAX)]; unsigned long absbit[NBITS(ABS_MAX)]; unsigned long mscbit[NBITS(MSC_MAX)]; unsigned long ledbit[NBITS(LED_MAX)]; unsigned long sndbit[NBITS(SND_MAX)]; unsigned long ffbit[NBITS(FF_MAX)]; unsigned long swbit[NBITS(SW_MAX)]; unsigned int keycodemax; unsigned int keycodesize; void *keycode; struct ff_device *ff; unsigned int repeat_key; struct timer_list timer; int state; int sync; int abs[ABS_MAX + 1]; int rep[REP_MAX + 1]; unsigned long key[NBITS(KEY_MAX)]; unsigned long led[NBITS(LED_MAX)]; unsigned long snd[NBITS(SND_MAX)]; unsigned long sw[NBITS(SW_MAX)]; int absmax[ABS_MAX + 1]; int absmin[ABS_MAX + 1]; int absfuzz[ABS_MAX + 1]; int absflat[ABS_MAX + 1]; int (*open)(struct input_dev *dev); void (*close)(struct input_dev *dev); int (*flush)(struct input_dev *dev, struct file *file); int (*event)(struct input_dev *dev, unsigned int type, unsigned int code, int value); struct input_handle *grab; struct mutex mutex; /* serializes open and close operations */ unsigned int users; struct class_device cdev; struct list_head h_list; struct list_head node; };
1、设备驱动(Device drivers)
设备驱动模块负责和硬件进行通讯,如通过USB,并且为输入模块提供事件,如按键、鼠标移动。
2、事件处理(Event handlers)
该模块从输入模块中获取事件,并且通过各种接口往上层传输,如传输按键(keystrokes)到内核(kernel),鼠标移动通过一个模拟的PS/2接口道GPM以及X等等。
3、用法举例
大多数配置中,需要有USB鼠标以及USB键盘,因此,需要加载以下模块或者将它们编译到内核中
input
mousedev
keybdev
usbcore
uhci_hcd or ohci_hcd or ehci_hcd
usbhid
这样以后,USB键盘会立刻工作,USB鼠标则会以一个major 13, minor 63的字符设备,这个与实际的可能有所出入,如下所示,这是本系统的mouse情况,本系统主要有4个鼠标设备,主设备号都为13,次设备号分别是32、33、34、35
并且输入设备还有个咪头(mice)如下所示,主设备号为13,次设备号为63
我们可以通过以下命令,创建以上设备,如下所示
cd /dev/input
mknod mice c 13 63
After that you have to point GPM (the textmode mouse cut&paste tool) and XFree to this device to use it - GPM should be called like:
gpm -t ps2 -m /dev/input/mice
And in X:
Section "Pointer" Protocol "ImPS/2"
Device "/dev/input/mice"
ZAxisMapping 4 5 EndSection
When you do all of the above, you can use your USB mouse and keyboard.
4、设备驱动(Device drivers)
设备驱动(device drivers)是用于产生事件的模块,然而,该事件如果没有被处理,则是没有用的。
5、事件处理
事件处理是将设备的事件分发到用户或者内核空间进行处理。
5、1 keybdev(按键设备)
keybdev是目前用于将输入事件转换成特定键盘结构的原始数据,并且传输他们到keyboard.c模块里的handle_scancode函数
5、2 mousedev(鼠标设备)
5、3 evdev
事件是输入事件的一个接口,他传输内核产生的事件到程序里,并且携带了时间戳。
cat /dev/input/mouse0 ,如果移动鼠标,则可以看到上面有字符输出,如下所示
相关文章推荐
- linux设备驱动之输入(input)子系统——数据结构与接口介绍
- Linux输入子系统:输入设备编程指南 -- input-programming.txt .
- Linux输入子系统:输入设备编程指南 -- input-programming.txt
- Linux输入子系统:输入设备编程指南 -- input-programming.txt
- Linux输入子系统:输入设备编程指南 -- input-programming.txt
- Linux的input输入子系统:设备驱动之按键驱动
- linux 读取input输入设备demo
- linux设备驱动之输入(input)子系统——核心层实现
- Linux输入子系统:输入设备编程指南 -- input-programming.txt
- Linux输入子系统:输入设备编程指南 -- input-programming.txt
- Linux输入子系统:输入设备编程指南 -- input-programming.txt
- Linux输入子系统:输入设备编程指南 -- input-programming.txt
- [转]linux 输入设备驱动程序 事件驱动层 分析
- Linux设备模型之input子系统详解
- Linux设备模型之input子系统详解
- 编写Linux下Input设备的检测程序 .
- 闲聊linux中的input设备(7) 爱情的结晶
- Linux设备模型之input子系统详解
- Linux设备模型之input子系统详解
- Linux/Android——输入子系统input_event传递 (二)【转】