![虚拟键盘驱动程序_第1页](http://file4.renrendoc.com/view/99d9ea5ef325abaff3bfed54606e20a4/99d9ea5ef325abaff3bfed54606e20a41.gif)
![虚拟键盘驱动程序_第2页](http://file4.renrendoc.com/view/99d9ea5ef325abaff3bfed54606e20a4/99d9ea5ef325abaff3bfed54606e20a42.gif)
![虚拟键盘驱动程序_第3页](http://file4.renrendoc.com/view/99d9ea5ef325abaff3bfed54606e20a4/99d9ea5ef325abaff3bfed54606e20a43.gif)
![虚拟键盘驱动程序_第4页](http://file4.renrendoc.com/view/99d9ea5ef325abaff3bfed54606e20a4/99d9ea5ef325abaff3bfed54606e20a44.gif)
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、虚拟键盘驱动程序作者联系方式:李先静前段时间写一个程序,要向系统中注入按键事件,我又不想信赖于具体的GUI,就写一个虚 拟键盘设备驱动程序,感觉挺好用的,不过后来发现linux其实有一个uinput驱动程序实现 了类似的功能。幸好后来才发现uinput这玩意儿,否则就没有机会去写了这个程序了,有 时真是宁愿知识面窄一点,这样才有机会重复发明一些轮子,从中获得一些乐趣。o先写一个字符驱动程序。#include #include #include #include #include #include #include #include #include #include #include #inc
2、lude #include #include #include int vkeyboard_major = 201;module_param(vkeyboard_major, int, 0);MODULE_AUTHOR(Li XianJing );MODULE_LICENSE(GPL);static struct input_dev* vkeyboard_idev = NULL;int vkeyboard_open(struct inode* inode, struct file* filp)return 0;int vkeyboard_release(struct inode* inode,
3、 struct file* filp)return 0;ssize_t vkeyboard_read(struct file* filp, char _user *buf, size_t count, loff_t* f_pos) printk(KERN_INFO%s/n, _func_);return count;struct keyboard_eventint press;int key;;ssize_t vkeyboard_write(struct file* filp, const char _user * buf, size_t count, loff_t* f_pos)int re
4、t = 0;struct keyboard_event event;while(ret evbit0 = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS) |BIT_MASK(EV_MSC);vkeyboard_idev-mscbit0 = BIT_MASK(MSC_SCAN) | BIT_MASK(MSC_SERIAL) | BIT_MASK(MSC_RAW);bitmap_fill(vkeyboard_idev-keybit, KEY_MAX);bitmap_fill(vkeyboard_idev-relbit, REL_MAX);bitmap_fill(vkeybo
5、ard_idev-absbit, ABS_MAX);vkeyboard_idev-name = vkeyboard;vkeyboard_idev-phys = vkeyboard/input0;vkeyboard_idev-open = vkeyboard_input_dev_open; vkeyboard_idev-close = vkeyboard_input_dev_close;for(i = 32; i evbit);ret = input_register_device(vkeyboard_idev);return ret;o Makefile obj-m := vkeyboard.oKDIR := /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd)default:$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules install:$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules_install clean:rm -f *.mod.c *.ko *.o Module.markers modules.order
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年学校教研工作计划范文
- 护理个人年度工作计划
- 底阁2024德育计划新
- 初中一年级课程计划 初中一年级课程
- 珠宝首饰销售工作计划
- 2024年专业爆炸品物流服务协议一
- 2024年个体合作伙伴权益分配协议
- 中度安全工作计划
- 中学体育艺术卫生工作自查报告总结计划
- 2024年度精密仪器陆路运输保险合同3篇
- 中国古代文学(三)智慧树知到答案2024年广东外语外贸大学
- 尔雅《批判与创意思考》课后习题+期末试题
- 人教版《劳动教育》三上 劳动项目八《自制树叶画》教学设计
- 2024年燃气用户检修安装工(初级)技能鉴定考试复习题库(含答案)
- 2011年度“全国市政金杯示范工程”获奖名单中市协(2012)第006号
- 骨质疏松症:营养的作用
- DL∕T 860.10-2018 电力自动化通信网络和系统 第10部分:一致性测试
- 2024年安徽淮南高新区管委会招聘工作人员12人历年(高频重点提升专题训练)共500题附带答案详解
- (新版)碳排放管理员(高级)职业鉴定考试题库(含答案)
- 施工前技术交底会
- 文学概论2024年 知到智慧树网课答案
评论
0/150
提交评论