在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    8077

    瀏覽量

    270312
  • 鼠標
    +關注

    關注

    6

    文章

    592

    瀏覽量

    40462
  • 框架
    +關注

    關注

    0

    文章

    404

    瀏覽量

    17769
收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

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

    USB驅動程序

    USB驅動程序
    發表于 08-17 11:47 ?55次下載
    主站蜘蛛池模板: 欧美一级免费在线观看 | 中文字幕123区 | 高清视频 一区二区三区四区 | 黄 色 录像成 人播放免费99网 | 亚洲欧美视频一区二区三区 | 四虎永久在线精品免费影视 | free性欧美video | 亚洲综合色就色手机在线观看 | 亚洲综合国产一区二区三区 | 人人射人人插 | 四虎国产一区二区三区 | 九九黄色网 | 国产一级特黄aa大片在线 | 亚洲国产精品日韩专区avtube | 男人j桶进女人免费视频 | 国产午夜在线观看视频播放 | 日日天天干 | 久久大伊人 | 毛片不卡一区二区三区 | 国产精品爱久久久久久久三级 | h在线观看视频 | 夜夜爽爽| 糖心vlog麻豆精东影业传媒 | jizz性欧美12 | 色天天网 | 国产免费久久精品99久久 | 最新中文字幕在线资源 | 三级网站在线播放 | 亚洲人成亚洲人成在线观看 | 26uuu另类欧美亚洲曰本 | 久久久久久久综合 | 国产精品成人在线播放 | 欧美日韩一区二区不卡 | 国产免费啪啪 | 狠狠干狠狠色 | 狠狠色狠狠色综合日日32 | 欧美激情亚洲精品日韩1区2区 | 夜夜爽一区二区三区精品 | 丁香激情综合网 | 伊人久久99| 波多野结衣在线观看一区 |