1.查看input子系统支持哪些设备:cat /proc/bus/input/devices
2.应用程序如何使用:
fd_mouse=open("dev/input/event0",O_RDWR); //event1表示鼠标事件,
input下的设备文件主设备号都为13,如下图所示:
根据打开设备的主设备号为13,知道为input输入子系统,根据设备的次设备号,可以知道其对应的handler 。
一.handler注册
1.handler 以evdev.c为例
static const struct file_operations evdev_fops = {
.owner = THIS_MODULE,
.read = evdev_read,
.write = evdev_write,
.poll = evdev_poll,
.open = evdev_open,
.release = evdev_release,
.unlocked_ioctl = evdev_ioctl,
#ifdef CONFIG_COMPAT
.compat_ioctl = evdev_ioctl_compat,
#endif
.fasync = evdev_fasync,
.flush = evdev_flush
};
static struct input_handler evdev_handler = {
.event = evdev_event,
.connect = evdev_connect,
.disconnect = evdev_disconnect,
.fops = &evdev_fops,
.minor = EVDEV_MINOR_BASE, //次设备号为64
.name = "evdev",
.id_table = evdev_ids,
};
static int __init evdev_init(void)
{
return input_register_handler(&evdev_handler);
}
2.input
void input_register_handler(struct input_handler *handler)
{
input_table[handler->minor >> 5] = handler; //将handler放入input_table中
list_add_tail(&handler->no