一、实验
源代码下载:git clone git@gitee.com:yangxuesong314/linux-driver.git(若之前已 git 拉取代码可以忽略) 代码位于:linux-driver/13.Input子系统/01.输入子系统实验
c
#include <linux/input.h>
#include <linux/module.h>
struct input_dev *myinput_dev;
static int myinput_dev_init(void)
{
int ret;
// 分配输入设备结构体
myinput_dev = input_allocate_device();
if (myinput_dev == NULL) {
printk("input_allocate_device error\n");
return -1;
}
// 设置输入设备的名称
myinput_dev->name = "myinput_dev";
// 设置输入设备支持的事件类型
__set_bit(EV_KEY, myinput_dev->evbit); // 设置支持按键事件
__set_bit(KEY_1, myinput_dev->keybit); // 设置支持按键 1
// 注册输入设备
ret = input_register_device(myinput_dev);
if (ret < 0) {
printk("input_register_device error\n");
goto error;
}
return 0;
error:
// 注册失败,释放输入设备结构体
input_free_device(myinput_dev);
return ret;
}
static void myinput_dev_exit(void)
{
// 注销输入设备
input_unregister_device(myinput_dev);
}
module_init(myinput_dev_init);
module_exit(myinput_dev_exit);
MODULE_LICENSE("GPL");1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
实验:驱动加载 insmod input_button.ko

使用 cat /proc/bus/input/devices 命令查看设备节点信息,也可以根据名字确定 event4 正是最简单的输入设备驱动对应的设备节点:
