现在的位置: 首页 > 技术文章 > 驱动开发 > 正文

Tiny4412 Linux驱动之按键(输入子系统)

2015年12月17日 驱动开发 ⁄ 共 1011字 ⁄ 字号 Tiny4412 Linux驱动之按键(输入子系统)已关闭评论 ⁄ 阅读 2,535 次

前面的驱动程序无法应用到别人写的现成的应用程序上(比如QT),因为别人的应用程序肯定不会打开我们创建的设备文件(/dev/buttons),别人打开的也许是其他现成的设备,比如/dev/tty。设置别人什么都不打开,直接scanf就能获得按键的输入。

以前写的驱动程序只能我们自己用,或自己公司内部用(因为别人不知道怎么用)。

如果想通用,就需要把自己写的驱动程序融入到内核现有的驱动程序中,这个现成的驱动程序就是输入子系统。

这一节我们把自己写的按键驱动融入到linux输入子系统中,输入子系统的原理我们已经在上一篇文章介绍了《Linux输入子系统(Input Subsystem)》

下面开始做测试

还是两个文件,1驱动相关:. key_input.c  Makefile

实验步骤:

1.首先查看现在系统中的输入设备:

系统中现有输入设备

系统中现有输入设备

2.加载驱动:

insmod key_input.ko

加载我们自己的驱动

加载我们自己的驱动

可以看到加载之后相应的输入设备也创建出来了

下面开始做测试:

1.首先查看一下当前shell的标准输入是哪个设备:

当前shell的标准输入设备

当前shell的标准输入设备

可以看到当前shell的标准输入是串口,我们需要将他修改为按键,执行以下命令;

exec 0</dev/tty1

执行完上述命令之后,就可以测试我们的按键了,Tiny4412一共4个按键,在驱动中做了如下的按键映射

key0----------------------> shift

key1----------------------> l

key2----------------------> s

key3----------------------> enter

 

这样我们连着按下key1、key2、key3就相当于执行ls命令,下面看一下效果:

按键测试

按键测试

×