一、input子系统相关结构体
二、input子系统实例实现:
static struct input_dev *key_input;static void my_timer_handle(unsigned long data)
{....../* 5.input子系统上报事件 *///第三个参数要变,如果两次上报value相同,则input子系统不会响应input_report_key(key_input, key_gpio_irq->key, key_gpio_irq->value); /* 6.同步事件 */input_sync(key_input);
}static irqreturn_t key_irq_handler(int irq, void *dev_id)
{mod_timer(xxx_timer , jiffies+HZ/50);return IRQ_HANDLED;
}......
......static int key_drv_init(void)
{............/* 1.申请空间 */key_input = input_allocate_device();if(key_input == NULL){printk("input alloc failed\n");return -ENOMEM;}/* 2.设置事件类型 */set_bit(EV_KEY, key_input->evbit);set_bit(EV_SYN, key_input->evbit);/* 3.设置子事件:具体按键 */set_bit(KEY_L,key_input->keybit);set_bit(KEY_S,key_input->keybit);set_bit(KEY_ENTER,key_input->keybit);/* 4.注册input子系统 */err = input_register_device(key_input);if(err){printk("input register failed\n");return -EAGAIN;}
}
三、测试结果
自定义了三个按键
按键1:l 键
按键2:s键
按键3:Enter键
如 果 在 ubuntu上 看 到 现 象
ctrl+alt+F1 (虚 拟 终 端 )
ctrl+alt+F7 (退 出 虚 拟 终 端)
如果想在板子上看到现象
exec 0</dev/tty1
input子系统详细介绍刊此链接:Linux input 子系统详解