【IMX6ULL驱动开发学习】20. input子系统(按键实现ls命令)

一、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 子系统详解

猜你喜欢

转载自blog.csdn.net/HuangChen666/article/details/131691353
今日推荐