虚拟鼠标驱动程序

上传人:daj****de 文档编号:133096704 上传时间:2022-08-09 格式:DOCX 页数:4 大小:9.23KB
收藏 版权申诉 举报 下载
虚拟鼠标驱动程序_第1页
第1页 / 共4页
虚拟鼠标驱动程序_第2页
第2页 / 共4页
虚拟鼠标驱动程序_第3页
第3页 / 共4页
资源描述:

《虚拟鼠标驱动程序》由会员分享,可在线阅读,更多相关《虚拟鼠标驱动程序(4页珍藏版)》请在装配图网上搜索。

1、前段时间写一个程序,要向系统中注入mouse事件,我又不想信赖于具体的GUI,就写一 个虚拟mouse设备驱动程序,感觉挺好用的,不过后来发现linux其实有一个uinput驱动程 序实现了类似的功能。幸好后来才发现uinput这玩意儿,否则就没有机会去写了,有时真 是宁愿知识面窄一点,这样才有机会重复发明一些轮子,从中获得一些乐趣。o先写一个字符驱动程序。#include P: ?, g- H9 G#include #include : E# q# Z1 x( L. a! Q0 T k#include % e9 L 7 J3 0 S3 m S3 e#include # d$ T0 d 0 s

2、#include 6 . 6 g; P4 o #include #include #include / s7 B S9 Z6 b7 v& H#include 8 9 v h7 1$ V0 o5 b* I#include 2 ( s! i) - p9 u9 o* t) #include ;5 O% x( 9 X# V& I1 O#include #include #include int vmouse_major = 200;module_param(vmouse_major, int, 0);& l y! u! M5 n# Q WMODULE_AUTHOR(Li XianJing ); A6

3、C& B! 0 g3 w0 p3 l MODULE_LICENSE(GPL);* A2 E( w N8 t& static struct input_dev* vmouse_idev = NULL;$ y G7 q0 N9 O8 dint vmouse_open(struct inode* inode, struct file* filp)( Y# . j6 J: * G4 E. f$ Breturn 0;* _- I+ # b/ H# x:L3 v4 K: k4 eint vmouse_release(struct inode* inode, struct file* filp); A2 q

4、. S2 i T2 Y% G) O) d0 r! vreturn 0;ssize_t vmouse_read(struct file* filp, char _user *buf, size_t count, loff_t* f_pos)# s n2 $ Z% & L& x+ w iprintk(KERN_INFO%sn, _func_);return count;struct mouse_event8 f$ F( A/ 1 X / A# y($ G; r a# N; e+ t8 fint press;int x; W; C8 c5 V7 ?& Xint y;1 ?4 G2 e! m* j1

5、t% z; P7 J6 V* r0 V2 y! Fssize_t vmouse_write(struct file* filp, const char _user * buf, size_t count, loff_t* f_pos)int ret = 0;struct mouse_event event;while(ret name = vmouse;. G8 V3 e5 Y/ g D. d b% b vmouse_idev-phys = vmouse/input0;1 Y Q) r7 s7 r3 V1 X vmouse_idev-open = vmouse_input_dev_open;v

6、mouse_idev-close = vmouse_input_dev_close;N: B- $ j) X_set_bit(EV_ABS, vmouse_idev-evbit);_set_bit(EV_KEY, vmouse_idev-evbit);) N- ! d $ P_set_bit(ABS_X, vmouse_idev-absbit);_set_bit(ABS_Y, vmouse_idev-absbit);1 N& L9 Z9 _ 1 _set_bit(ABS_PRESSURE, vmouse_idev-absbit);7 X! c( : Q& e. d _set_bit(BTN_T

7、OUCH, vmouse_idev-keybit);ret = input_register_device(vmouse_idev);:I# G; f q% Rreturn ret;* W , z8 T0 y- U O3 ?o Makefile n n6 % Z& q$ q) E(?5 P- O9 H. d* _obj-m := vmouse.o2 q3 B* D2 z& U7 A# ) , ( Y& Q% B ?3 & E% K! q) 0 DKDIR := /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd) h$ Q 4 L+ J

8、/ H, vdefault:$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules- , A; J G& s; X3 B install:$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules_install clean:rm -f *.mod.c *.ko *.o Module.markers modules.order Module.symvers2 m/ T# Z: I) h+ D& w3 M H- c加载模块后,向/dev/vmouse里写入要注入的事件,事件将会转发到/dev/input/eventX输入设 备文件里,系统会从这里自动读取事件。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!