input输入子系统分析

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值