那曲檬骨新材料有限公司

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

    文章

    7980

    瀏覽量

    266100
  • 鼠標
    +關注

    關注

    6

    文章

    591

    瀏覽量

    39914
  • 框架
    +關注

    關注

    0

    文章

    403

    瀏覽量

    17543
收藏 人收藏

    評論

    相關推薦

    Linux USB鼠標驅動程序詳解

    驅動程序(u*** driver)是如何添加到驅動鏈表上去的?在每個 USB 驅動程序的被注冊時,USB
    發表于 10-23 12:40

    USB驅動程序大全

    USB驅動程序大全 這資料還是不錯的,可供參考學習哦!
    發表于 03-25 01:26 ?209次下載

    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驅動程序:天語手機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 ?2326次閱讀

    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次下載

    usb tinyisp驅動程序下載

    usb tinyisp驅動程序下載
    發表于 04-03 16:01 ?12次下載

    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 ?781次閱讀

    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>

    USB鼠標驅動程序上機實驗

    上機實驗 需要重新配置內核,去掉內核自帶的驅動程序。在內核目錄下執行"make menuconfig": Device Drivers --- > HID support
    的頭像 發表于 07-17 17:35 ?739次閱讀

    USB驅動程序

    USB驅動程序
    發表于 08-17 11:47 ?54次下載
    阳城县| 玩百家乐官网游戏的最高技巧 | 郑州太阳城宾馆| 彩会百家乐官网游戏| 百家乐官网园首选去澳| 富田太阳城租房| 百家乐官网真人游戏网上投注 | 做生意的十大风水禁忌 | 幸运水果机电脑版| 百家乐官网桌子10人| 百家乐三路秘诀| 澳博足球| 做生意风水摆件| bet365最新地址| 什么是百家乐官网平注法| 网上百家乐打牌| 利记| 网上百家乐心得| 京城国际娱乐城| 百家乐巴厘岛平台| 银河国际娱乐城| YY百家乐官网的玩法技巧和规则| 百家乐百战百胜| 博E百百家乐官网现金网| 百家乐赌博破解| 3U百家乐官网娱乐城| 百家乐英皇赌场娱乐网规则| 百家乐官网软件骗人吗| 百家乐赢钱面面观| 免费百家乐官网在线| 天天百家乐的玩法技巧和规则| 娱乐城百家乐官网怎么样| 大三巴百家乐的玩法技巧和规则| 真人百家乐官网新开户送彩金| 百家乐技巧平注常赢法| 百家乐官网赌博合作| 大发888下载英皇国际| 百家乐官网大天堂| bet365地址| 帝王百家乐全讯网2| 沙龙百家乐官网怎申请|