0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

USB鼠标驱动程序编程

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:韦东山老师驱动大 2023-07-17 17:29 次阅读

1. 目标

使用鼠标模拟按键:左键相当于"L"、右键相当于"S"、"中键"相当于 "回车"。

2. 编程

2.1 驱动框架

图片

对于 GPIO 按键,是直接构造、注册一个 input_dev 结构体,在 GPIO 中断函数里获得数据。

现在数据来源发生了变化,数据来自 USB 设备,需要做的事情是:

  • 构造、注册 usb_driver
  • usb_driver 发现能支持是设备后,它的 probe 函数被调用:
    • 构造、注册 input_dev 结构体
  • 获得数据:
    • 构造、提交 URB
    • 在 URB 的回调函数里,向 Input 系统上报数据

2.2 实现 usb_driver

仿照 usbmouse.c 如下代码构造一个 usb_driver 结构体:

图片

核心是:

  • id_table:这个驱动能支持哪些设备
  • probe 函数:发现能支持的设备后,probe 函数记录设备信息、注册输入设备等等

2.2.1 id_table

id_table 是一个 usb_device_id 数组,示例如下:

图片

usb_device_id 结构体定义如下:

  • match_flags:表示要比较哪些信息,可以比较设备 ID、DeviceClass、InterfaceClass 等等
  • 根据 match_flags 提供其他信息:比如设备 ID、DeviceClass、InterfaceClass 等等
  • driver_info:驱动程序可能用到的一些信息
struct usb_device_id {
 /* which fields to match against? */
 __u16  match_flags;

 /* Used for product specific matches; range is inclusive */
 __u16  idVendor;
 __u16  idProduct;
 __u16  bcdDevice_lo;
 __u16  bcdDevice_hi;

 /* Used for device class matches */
 __u8  bDeviceClass;
 __u8  bDeviceSubClass;
 __u8  bDeviceProtocol;

 /* Used for interface class matches */
 __u8  bInterfaceClass;
 __u8  bInterfaceSubClass;
 __u8  bInterfaceProtocol;

 /* Used for vendor-specific interface matches */
 __u8  bInterfaceNumber;

 /* not matched against */
 kernel_ulong_t driver_info
  __attribute__((aligned(sizeof(kernel_ulong_t))));
};

2.2.2 probe 函数

probe 函数原型如下:

int (*probe) (struct usb_interface *intf,
          const struct usb_device_id *id);

第 1 个参数是"struct usb_interface *"类型,表示匹配到的"USB 逻辑设备"。

第 2 个参数是"struct usb_device_id *"类型,它是 usb_driver 的 id_table 中的某项,表示第 1 个参数就是跟这个 usb_device_id 匹配的。有必要的话,probe 函数里可以从 id->driver_info 得到驱动相关的一些信息。

在 probe 函数,一般要记录 intf 信息,以后发起 USB 传输时会用到 intf 信息。

2.3 实现输入设备

核心是:分配、设置、注册一个 input_device 结构体。

2.4 实现数据传输

分配、填充、提交 URB,在 URB 的回调函数里上报"input_event"。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • usb
    usb
    +关注

    关注

    60

    文章

    7939

    浏览量

    264519
  • 鼠标
    +关注

    关注

    6

    文章

    591

    浏览量

    39760
  • 框架
    +关注

    关注

    0

    文章

    403

    浏览量

    17478
收藏 人收藏

    评论

    相关推荐

    Linux USB鼠标驱动程序详解

    驱动程序(u*** driver)是如何添加到驱动链表上去的?在每个 USB 驱动程序的被注册时,USB
    发表于 10-23 12:40

    usb网卡驱动程序下载(万能全集)

    usb网卡驱动程序:ADM8511 USB网卡驱动程序ADM8515 USB网卡驱动程序AS26
    发表于 09-28 15:40 4204次下载
    <b class='flag-5'>usb</b>网卡<b class='flag-5'>驱动程序</b>下载(万能全集)

    海信手机usb驱动程序

    海信手机usb驱动程序
    发表于 04-30 12:22 5次下载

    天语手机usb驱动程序

    天语手机usb驱动程序:天语手机usb驱动程序下载
    发表于 04-30 12:36 792次下载

    EZ USB 通用驱动程序说明

    EZ_USB 通用驱动程序(本文章中称为GPD或者是EZ_USB GPD)是用来和基于EZ_USB外设接口的通用设备驱动程序
    发表于 11-06 11:26 52次下载

    Windows USB 驱动程序接口及传输方式

    Windows USB 驱动程序接口系统中的USB驱动程序完成许多的工作。实际上对于一些HID的USB设 备,象键盘,
    发表于 05-06 16:04 2304次阅读

    USB接口驱动程序开发

    介绍USB的优点和发展情况,基于DDK的USB设备驱动程序结构,并结合开发的ARM 板驱动程序对关键程序进行介绍。
    发表于 03-19 15:21 121次下载
    <b class='flag-5'>USB</b>接口<b class='flag-5'>驱动程序</b>开发

    HC6800的USB驱动程序

    HC6800的USB驱动程序HC6800的USB驱动程序HC6800的USB驱动程序HC6800
    发表于 12-28 15:28 0次下载

    usb驱动程序

    CH340G的USB驱动程序,win7运行完全没有问题。
    发表于 05-13 10:17 69次下载

    CDM20600驱动程序,USB驱动程序和并口驱动应用程序(免费下载)

    本文档的主要内容是CDM20600驱动程序,USB驱动程序和并口驱动应用程序(免费下载)详细资料概述
    发表于 06-06 10:00 57次下载
    CDM20600<b class='flag-5'>驱动程序</b>,<b class='flag-5'>USB</b><b class='flag-5'>驱动程序</b>和并口<b class='flag-5'>驱动</b>应用<b class='flag-5'>程序</b>(免费下载)

    Linux USB鼠标驱动程序详解

    驱动程序usb driver)是如何添加到驱动链表上去的?在每个 USB 驱动程序的被注册时,USB
    发表于 04-02 14:35 758次阅读

    SDP USB驱动程序安装程序

    SDP USB驱动程序安装程序
    发表于 03-23 10:07 14次下载
    SDP <b class='flag-5'>USB</b><b class='flag-5'>驱动程序</b>安装<b class='flag-5'>程序</b>

    ADMV1013 USB驱动程序

    ADMV1013 USB驱动程序
    发表于 03-23 18:29 8次下载
    ADMV1013 <b class='flag-5'>USB</b><b class='flag-5'>驱动程序</b>

    USB鼠标驱动程序上机实验

    上机实验 需要重新配置内核,去掉内核自带的驱动程序。在内核目录下执行"make menuconfig": Device Drivers --- > HID support
    的头像 发表于 07-17 17:35 683次阅读

    USB驱动程序

    USB驱动程序
    发表于 08-17 11:47 54次下载