wds - 输入子系统实现按键功能

输入子系统是所有I/O设备驱动的中间层

Linux内核为了能够处理各种不同类型的输入设备,比如 触摸屏,鼠标 , 键盘 , 操纵杆 ,设计并实现了为驱动层程序的实现提供统一接口函数;为上层应用提供试图统一的抽象层 , 即是Linux 输入子系统 。

软件实现

步骤一、创建输入设备结构体

static struct input_dev *_dev = NULL;

_dev = input_allocate_device();

步骤二、设置该设备将支持哪些事件、哪些按键

//表示能产出按键事件
set_bit(EV_KEY, _dev->evbit); 

//表示按键事件中的哪些事件:L、S、ENTER、LEFTSHIFT
set_bit(KEY_L, _dev->keybit);
set_bit(KEY_S, _dev->keybit);
set_bit(KEY_ENTER, _dev->keybit);
set_bit(KEY_LEFTSHIFT, _dev->keybit);

步骤三、将输入设备注册到内核

input_register_device(_dev);

步骤四、当发生事件时上报并同步事件

input_event(_dev, EV_KEY, _curr_btn->key_val, 1);

input_sync(_dev);

步骤五、取消注册输入设备,删除设备

input_unregister_device(_dev);

input_free_device(_dev);

实践验证

在虚拟机上编译生成ko文件,并在开发板上进行安装验证。

步骤一、安装

insmod drv_button.ko

步骤二、按键验证

方法一

hexdump /dev/event1

如果按下按键则会打印

方法二

1)系统没有启动QT

cat /dev/tty1

2)系统启动了QT

1、打开开发板屏幕的Terminal;

2、按下 S0、S2,然后按下S1,即键入了ls指令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值