2024年6月6日发(作者:)

虚拟键盘、虚拟鼠标驱动

找了这篇文,看对你有没有帮助,另外请联系我QQ634308587 一起研究一下。

一个鼠标驱动程序的分析(/driver/input/mouse/amimouse.c)

一:Input设备驱动,(我称为虚拟输入设备)//drivers/input/input.c文件

input设备是一种字符设备在模块初始化时创建设备类"input",注册Input字符设备,

input的操作函数只有Open函数。当打开特定设备时才将特定的设备操作函数

static struct file_operations input_fops = {

.owner = THIS_MODULE,

.open = input_open_file,

};

函数调用如下:

“/input/input . c”

input_init()//这是虚拟输入设备的入口,既模块加载时调用

{

class_simple_create(THIS_MODULE,"input");//创建设备类

input_proc_init()//创建proc下的文件节点

retval = register_chrdev(INPUT_MAJOR, "input", &input_fops);//注册字符设备

驱动程序,在系统字符设备数组中添加一个字符设备,主设备号为INPUT—MAJOR,操

作函数集为input_fops,在特殊文件打开时会根据文件的节点结构INODE中的主设备号

在系统字符设备数组中搜索主设备号相同的字符设备驱动程序的操作函数集并将此操作函

数集付给FILE结构的操作函数集指针f_ops并执行该函数集中的打开操作。。对于本

input类设备即为input_fops中的input_open_file

devfs_mk_dir("input")//在设备目录"/dev"下创建devfs文件系统的"input"目录,

以后的具体输入设备也将在这个目录下建立特殊设备文件,当打开该特殊文件时即对设备

进行操作

}

当打开具体文件时既执行input_ipen_file此函数会寻到具体设备的文件操作函数集

并付给file->f_op(这是一个文件的操作函数集,当系统打开一个文件时即产生一个file

结构对该文件的操作都通过file中的f_opes 如读取即调用FILE->f_op->read等

二:输入驱动器,输入驱动器是指一类的输入设备(比如鼠标输入驱动器,键盘输入

驱动器等等)这里说的是鼠标输入驱动器。。(我也称之为虚拟鼠标驱动器,因为他并不

完成真正的硬件相关的鼠标驱动,真正的硬件IO驱动要在device中完成)他的描述结构

是: