当前位置:  技术问答>linux和unix

linux用驱动模拟一次鼠标的操作

    来源: 互联网  发布时间:2017-03-01

    本文导语:  linux 2.6.11的内核版本,我现在随便连了一个设备,然用修改了usb-skeleton.c文件,生成了usb-skeleton.ko成功insmod,终端上可以看到设备的驱动安装成功显示我修改的驱动名,现在我想在skel_read_bulk_callback的函数内做一次对鼠标的...

linux 2.6.11的内核版本,我现在随便连了一个设备,然用修改了usb-skeleton.c文件,生成了usb-skeleton.ko成功insmod,终端上可以看到设备的驱动安装成功显示我修改的驱动名,现在我想在skel_read_bulk_callback的函数内做一次对鼠标的操作(比如点击右键),我是用usb_fill_bulk_urb批传输函数的,我在init里对一个input_dev作了初始化
amimouse_dev.evbit[0] = BIT(EV_KEY) | BIT(EV_REL);
amimouse_dev.keybit[LONG(BTN_MOUSE)] = BIT(BTN_LEFT) | BIT(BTN_RIGHT) | BIT(BTN_MIDDLE);
amimouse_dev.relbit[0] = BIT(REL_X) | BIT(REL_Y);
amimouse_dev.keybit[LONG(BTN_MOUSE)] |= BIT(BTN_SIDE) | BIT(BTN_EXTRA);
amimouse_dev.relbit[0] |= BIT(REL_WHEEL);

amimouse_dev.open = amimouse_open;
amimouse_dev.close = amimouse_close;

amimouse_dev.name = amimouse_name;
amimouse_dev.phys = amimouse_phys;
amimouse_dev.id.bustype = BUS_I8042;//BUS_ISA;/*BUS_AMIGA*/
amimouse_dev.id.vendor = 0x0002;
amimouse_dev.id.product = 0x0005;
amimouse_dev.id.version = 0x0000;

input_register_device(&amimouse_dev);

按我的理解input_register_device会注册一个input_dev到系统的list,然后应该会去匹配一个现有的input handler(一个鼠标设备的统一上层接口),我用cat /proc/bus/input/devices看到鼠标信息

I: Bus=0011 Vendor=0002 Product=0005 Version=0000
N: Name="ImPS/2 Generic Wheel Mouse"
P: Phys=isa0060/serio1/input0
H: Handlers=mouse1 event1
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=103

在skel_read_bulk_callback函数里,当卸载驱动时候也运行到这里了

input_regs(&amimouse_dev, regs);

printk(KERN_ALERT "chenggong qiann");

//signed char data[0] = {0x02};
input_report_key(&amimouse_dev, BTN_LEFT,   0x00);
input_report_key(&amimouse_dev, BTN_RIGHT,  0x02);
input_report_key(&amimouse_dev, BTN_MIDDLE, 0x00);
input_report_key(&amimouse_dev, BTN_SIDE,   0x00);
input_report_key(&amimouse_dev, BTN_EXTRA,  0x00);

input_report_rel(&amimouse_dev, REL_X,     0xff);
input_report_rel(&amimouse_dev, REL_Y,     0x88);
input_report_rel(&amimouse_dev, REL_WHEEL, 0);

input_sync(&amimouse_dev);
上面的代码应该会触发一个鼠标右键点击和移动的操作,input core内匹配的过程应该是自动完成,可是怎么试鼠标都没反应,我估计是input_dev和handler没有匹配上,要怎么匹配呢,我用的是vmware虚拟机,初学linux,望高手指点

|
没玩过鼠标 input 设备驱动,帮顶...

|

mouse0  mouse1  mouse2  mouse3  

|
呖...我也不会

    
 
 

您可能感兴趣的文章:

  • 完了!linux下删除鼠标竟然使windows2000检测不到鼠标?!解决了给分!!!
  • linux启动时就设置进入图形模式(不是加载X-Window),但这个模式下,如果响应鼠标和键盘事件(可以响应所有键值和鼠标按键)!
  • 请问linux中如何快速获得鼠标数据(主要是鼠标位置坐标)
  • linux鼠标不能用!!!!!!
  • linux老死机,怀疑是鼠标的问题,请各位指点。
  • linux怎么无法检测到我的键盘和鼠标?
  • 在linux如何配置鼠标啊
  • Red Hat Linux 8.0下鼠标突然失灵?
  • 请教高手,关于vmware中linux的鼠标的问题
  • linux下怎么做鼠标勾子程序?
  • linux鼠标驱动的问题
  • 蓝点LINUX,进入XWINDOW时鼠标和键盘都没有响应了,怎么办?急~~~~!~~~~
  • linux usb鼠标
  • 急急急!Linux 去掉 鼠标问题
  • Linux下鼠标为什么移动的怎么慢
  • 为什么用VMware虚拟机安装了RedHat Linux后鼠标没用了?
  • linux里哪里能设置鼠标?
  • linux usb鼠标驱动的问题
  • linux下鼠标不能用了??
  • 装好red hat linux7.2之后鼠标不能动
  • UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍
  • Linux环境下,“PC机的驱动”与“嵌入式驱动”有什么区别?
  • linux驱动 单片机驱动
  • linux:怎么在驱动中调用IIC驱动?
  • linux下一个驱动怎么调用另一个驱动
  • redhat linux 9 与WNI xp共存一硬盘,显卡为 ATI RADEON 9600 可linux给出的驱动却是Vesa 的,我从驱动列表里选择了ATI RADEON 9600可是
  • Linux环境下,如何一个驱动中调用另外一个驱动
  • 我的网卡在redhat7.3下不能自动驱动,但我有for linux的驱动程序,请问如何才能驱动我的网卡,我是菜菜,请详细说明,谢谢!
  • Linux 9.0+865G,只能上到640×480,Intel官方站点的最新驱动安装失败,那位有驱动?
  • Linux设备驱动(第三版)- 字符设备驱动 - 例子
  • Linux源代码中ata驱动为什么要调用pci驱动的代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • linux 怎么也能用鼠标操作?? 我的系统是Ubuntu ,不是说linux都用代码操作么??
  • mount命令(linux操作系统)挂载卸载文件系统(cifs,光驱,nfs等)方法介绍
  • 请问各位,我想学习linux,是装linux操作系统还是在虚拟机下装操作系统呢?那种好点啊
  • linux下不使用sudo命令执行docker的操作步骤
  • 请问LINUX操作系统是怎样对外围设备进行操作的
  • Linux下GCC内置原子操作函数(多线程资源访问)介绍
  • 请问命令行操作下怎么改Linux操作系统的日期和时间?
  • Linux下u盘文件系统相关操作
  • 在linux操作系统上向ftp服务器(linux系统)上上传文件,我要纪录操作日志,得到上传到ftp服务器上的文件的路径问题?
  • Mysql服务器登陆,启动,停止等基本操作命令介绍(Linux/Centos环境)
  • 基于linux操作系统之上操作LCD问题,急???
  • linux 操作系统下ps命令介绍
  • Linux操作系统和Hurd操作系统
  • Linux和windows下用mysql c++ library操作Mysql数据库
  • 哪位大侠知道Linux里的有名管道传送数据快不快?有名管道操作的过程是否有读写硬盘的操作?
  • 我想格式掉linux操作系统,但这样会把引导区也格式掉,在format linux操作系统之前,该怎么设置引导区??
  • 已安装了Windows操作系统,还想安装Linux。却还想在开机选择操作系统时由Windows引导,请问如何操作。在线等待
  • 1哪位大侠知道Linux里的有名管道传送数据快不快?有名管道操作的过程是否有读写硬盘的操作?
  • ARM系列开发板是不是一定要用LINUX操作系统。windows操作系统可以吗?
  • linux 的命令操作和 windows的命令提示行有什么不同呢?? 为什么windows一般都不用命令提示行操作呢??
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • secureCRT下Linux终端汉字乱码解决方法
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • Linux c字符串中不可打印字符转换成16进制
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3