免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3834 | 回复: 8
打印 上一主题 下一主题

检测usb鼠标 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-29 15:04 |只看该作者 |倒序浏览
学习驱动开发,在usb鼠标插入或拔出时,检测下。代码如下:
  1. #include <linux/module.h>
  2. #include <linux/types.h>
  3. #include <linux/kernel.h>

  4. #include <linux/sched.h>
  5. #include <linux/init.h>
  6. #include <linux/slab.h>

  7. #include <linux/input.h>
  8. #include <linux/usb.h>
  9. #include <linux/usb_input.h>
  10. #include <asm/uaccess.h>
  11. #include <linux/kref.h>

  12. MODULE_LICENSE("GPL");

  13. static struct usb_device_id um_id_table[] =
  14. {
  15.         {USB_INTERFACE_INFO(3, 1, 2)},       
  16.         { }
  17. };

  18. MODULE_DEVICE_TABLE(usb, um_id_table);


  19. static int um_probe(struct usb_interface *intf, const struct usb_device_id *id)
  20. {
  21.         printk("----found test's usb mouse\n");
  22.        
  23.         return 0;
  24. }

  25. static void um_disconnect(struct usb_interface *intf)
  26. {
  27.         printk("----disconnect test's usb driver\n");
  28. }

  29. static struct usb_driver usbmouse_drv =
  30. {
  31.         .owner = THIS_MODULE,       
  32.         .name = "usbmouse_test",
  33.         .id_table = um_id_table,
  34.         .probe = um_probe,
  35.         .disconnect = um_disconnect,
  36. };

  37. static void usbmouse_exit(void)
  38. {
  39.         printk(KERN_NOTICE "usbmouse driver unloading...\n");
  40.         usb_deregister(&usbmouse_drv);
  41. }

  42. static int usbmouse_init(void)
  43. {
  44.         int retval;       
  45.         printk(KERN_NOTICE "usbmouse driver init....\n");
  46.        
  47.         retval = usb_register(&usbmouse_drv);
  48.         printk("my usbmouse driver register, the return value is %d\n", retval);

  49.         return 0;
  50. }

  51. module_init(usbmouse_init);
  52. module_exit(usbmouse_exit);



复制代码
编译成功,加载驱动后,当插入鼠标时,驱动检测不到,错在哪里呢?

论坛徽章:
0
2 [报告]
发表于 2012-03-01 14:21 |只看该作者
鼠标是通用设备,看看是不是被usbhid抢先挂到其设备链表里了。
tree /sys/bus/usb/drivers/usbhid

论坛徽章:
0
3 [报告]
发表于 2012-03-01 18:07 |只看该作者
你好!我是Linux新手 我的老师让我 分析一下linux内核中的USB鼠标驱动程序 并且改一下代码将左右键功能互换 请问怎样在我安装的linux(Ubuntu)中找到USB鼠标驱动程序的源代码 以前没有学习过这块知识  向您虚心请教 !谢谢……

论坛徽章:
0
4 [报告]
发表于 2012-03-01 18:35 |只看该作者
limao2008 发表于 2012-03-01 18:07
你好!我是Linux新手 我的老师让我 分析一下linux内核中的USB鼠标驱动程序 并且改一下代码将左右键功能互换 ...

在2.6.13内核中,鼠标的驱动程序是drivers/usb/input/usbmouse.c,而现在的内核中,鼠标的驱动程序已经从drivers/usb移到了drivers/input/mouse中,你看看Kconfig的内容,看看你需要哪个。

论坛徽章:
0
5 [报告]
发表于 2012-03-01 19:41 |只看该作者
回复 4# ice2000feng

呵呵!好的,谢谢您!希望从您身上学到更多的知识……再次感谢……
   

论坛徽章:
0
6 [报告]
发表于 2012-03-02 14:04 |只看该作者
azfa123 发表于 2012-03-01 14:21
鼠标是通用设备,看看是不是被usbhid抢先挂到其设备链表里了。
tree /sys/bus/usb/drivers/usbhid


谢谢,的确是这个问题,配置内核时,把“USB Human Interface Device (full HID) support”那一项去掉就好了。

论坛徽章:
0
7 [报告]
发表于 2012-03-07 13:12 |只看该作者
本帖最后由 limao2008 于 2012-03-07 13:14 编辑

不得不再来问一下前辈,为什么我下载的内核代码中没有USB鼠标的驱动程序,我下载的版本是linux-2.6.32.58?我的鼠标是SIGMA Micro芯片的USB鼠标,我怎样才能找到与之相适应的内核代码中提供的USB鼠标驱动程序呢?谢谢……

论坛徽章:
0
8 [报告]
发表于 2012-03-07 13:33 |只看该作者
您好!这是下载的内核鼠标驱动目录下的驱动程序,可是找不到相应的USB鼠标驱动程序代码。这是什么情况呢?
limao@limao-laptop:~$ ls '/home/limao/下载/mouse'
alps.c        gpio_mouse.c  logips2pp.c       rpcmouse.c       touchkit_ps2.h
alps.h        hgpk.c        logips2pp.h       sentelic.c       trackpoint.c
amimouse.c    hgpk.h        Makefile          sentelic.h       trackpoint.h
appletouch.c  inport.c      maplemouse.c      sermouse.c       vsxxxaa.c
atarimouse.c  Kconfig       pc110pad.c        synaptics.c
bcm5974.c     lifebook.c    psmouse-base.c    synaptics.h
elantech.c    lifebook.h    psmouse.h         synaptics_i2c.c
elantech.h    logibm.c      pxa930_trkball.c  touchkit_ps2.c

论坛徽章:
0
9 [报告]
发表于 2012-07-29 12:27 |只看该作者
我来了~~~嘿嘿~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP