ice2000feng 发表于 2012-02-29 15:04

检测usb鼠标

学习驱动开发,在usb鼠标插入或拔出时,检测下。代码如下:#include <linux/module.h>
#include <linux/types.h>
#include <linux/kernel.h>

#include <linux/sched.h>
#include <linux/init.h>
#include <linux/slab.h>

#include <linux/input.h>
#include <linux/usb.h>
#include <linux/usb_input.h>
#include <asm/uaccess.h>
#include <linux/kref.h>

MODULE_LICENSE("GPL");

static struct usb_device_id um_id_table[] =
{
        {USB_INTERFACE_INFO(3, 1, 2)},       
        { }
};

MODULE_DEVICE_TABLE(usb, um_id_table);


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

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

static struct usb_driver usbmouse_drv =
{
        .owner = THIS_MODULE,       
        .name = "usbmouse_test",
        .id_table = um_id_table,
        .probe = um_probe,
        .disconnect = um_disconnect,
};

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

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

        return 0;
}

module_init(usbmouse_init);
module_exit(usbmouse_exit);



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

azfa123 发表于 2012-03-01 14:21

鼠标是通用设备,看看是不是被usbhid抢先挂到其设备链表里了。
tree /sys/bus/usb/drivers/usbhid

limao2008 发表于 2012-03-01 18:07

你好!我是Linux新手 我的老师让我 分析一下linux内核中的USB鼠标驱动程序 并且改一下代码将左右键功能互换 请问怎样在我安装的linux(Ubuntu)中找到USB鼠标驱动程序的源代码 以前没有学习过这块知识向您虚心请教 !谢谢……

ice2000feng 发表于 2012-03-01 18:35

limao2008 发表于 2012-03-01 18:07 static/image/common/back.gif
你好!我是Linux新手 我的老师让我 分析一下linux内核中的USB鼠标驱动程序 并且改一下代码将左右键功能互换 ...
在2.6.13内核中,鼠标的驱动程序是drivers/usb/input/usbmouse.c,而现在的内核中,鼠标的驱动程序已经从drivers/usb移到了drivers/input/mouse中,你看看Kconfig的内容,看看你需要哪个。

limao2008 发表于 2012-03-01 19:41

回复 4# ice2000feng

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

ice2000feng 发表于 2012-03-02 14:04

azfa123 发表于 2012-03-01 14:21 static/image/common/back.gif
鼠标是通用设备,看看是不是被usbhid抢先挂到其设备链表里了。
tree /sys/bus/usb/drivers/usbhid

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

limao2008 发表于 2012-03-07 13:12

本帖最后由 limao2008 于 2012-03-07 13:14 编辑

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

limao2008 发表于 2012-03-07 13:33

您好!这是下载的内核鼠标驱动目录下的驱动程序,可是找不到相应的USB鼠标驱动程序代码。这是什么情况呢?
limao@limao-laptop:~$ ls '/home/limao/下载/mouse'
alps.c      gpio_mouse.clogips2pp.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.cinport.c      maplemouse.c      sermouse.c       vsxxxaa.c
atarimouse.cKconfig       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.ctouchkit_ps2.c

hansion3406 发表于 2012-07-29 12:27

我来了~~~嘿嘿~~
页: [1]
查看完整版本: 检测usb鼠标