input_register_handler()解析

本文介绍如何在Linux内核中注册一个input_handler,并解释了通过设置input_device_id来指定支持的设备类型的方法。以键盘和通用事件设备为例,展示了具体实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
    向核心层(input.c)注册一个input_handler

    注册的这个input_handler能支持哪些设备呢?

    如果你要开发一个input_handler的话(当然,事件处理层代码内核以帮我们做好了,无需我们开发),
    决定支持某一个设备,就应该初始化一个input_device_id,
    并把它放到input_hander的id_table中。这点和usb_device_id匹配有点类似。
*/
/*  
    如:
        static struct input_handler kbd_handler = 
        {
            .event      = kbd_event,
            .match      = kbd_match,
            .connect    = kbd_connect,
            .disconnect = kbd_disconnect,
            .start      = kbd_start,
            .name       = "kbd",
            .id_table   = kbd_ids,
        };
*/
/*
        static const struct input_device_id kbd_ids[] = 
        {
            {
                    .flags = INPUT_DEVICE_ID_MATCH_EVBIT,
                    .evbit = { BIT_MASK(EV_KEY) },    /*如果设备能产生按键类事件就支持*/
            },
            {
                    .flags = INPUT_DEVICE_ID_MATCH_EVBIT,
                    .evbit = { BIT_MASK(EV_SND) },    /*如果设备能产生声音类事件就支持 */
            },
            { },   
        };
*/
/*
        static struct input_handler evdev_handler = 
        {
            .event      = evdev_event,
            .connect    = evdev_connect,
            .disconnect = evdev_disconnect,
            .fops       = &evdev_fops,
            .minor      = EVDEV_MINOR_BASE,
            .name       = "evdev",
            .id_table   = evdev_ids,
        };

        static const struct input_device_id evdev_ids[] = 
        {
            { .driver_info = 1 },   /*匹配所有设备*/  
            { },            
        };
*/
int input_register_handler(struct input_handler * handler)
{

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值