21.Linux-写USB键盘驱动(详解)
本节目的:
根据上节写的 USB鼠标驱动 ,来依葫芦画瓢写出 键盘驱动
1.首先我们通过上节的代码中修改,来打印下键盘驱动的数据到底是怎样的
先来回忆下,我们之前写的鼠标驱动的id_table是这样:
所以我们要修改id_table,使这个驱动为键盘的驱动,如下图所示:
然后修改中断函数,通过printk()打印数据:
我们先按下按键A为例,打印出0x04,如下图:
我们再同时按下按键A和S,打印出0x04,0X16, 如下图:
显然这些普通按键都是从buf[2]开始的,那第一个数组到底又存什么值?
我们按完所有键盘按键,发现只有8个按键会打印在buf[0]里,如下图所示:
所以buf[0]是用来保存键盘的特定功能的键,而buf[1]可能是个保留键,没有用到的,buf[2]~buf[7]是普通按键,比如ABCD,1234,F1,F2等等,能支持最多6个按键同时按下。
2.那么每个按键的数据又是怎么定义的?
2.1比如我们按下按键A,为什么打印0X04?
我们找到输入子系统(input.h)中按键A定义的值,它对应的却是30,看来不是直接调用的