色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    文章

    7960

    瀏覽量

    265097
  • 鼠標
    +關注

    關注

    6

    文章

    591

    瀏覽量

    39815
  • 框架
    +關注

    關注

    0

    文章

    403

    瀏覽量

    17511
收藏 人收藏

    評論

    相關推薦

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

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

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

    USB驅動程序

    USB驅動程序
    發表于 08-17 11:47 ?54次下載
    主站蜘蛛池模板: 男女全黄h全肉细节文| 黄网址在线观看| 国产成人精品s8p视频| 嗯啊…跟校草在教室里做h| 亚洲青青青网伊人精品| 国产老师开裆丝袜喷水漫画| 肉奴隷 赤坂丽在线播放| 菠萝菠萝蜜视频在线看1| 欧美熟妇互舔20p| 99re久久热免费视频| 麻豆一二三四区乱码| 18黄女脱内衣| 免费的黄直播| 99麻豆精品国产人妻无码| 美女PK精子小游戏| AV天堂AV亚洲啪啪久久无码| 欧美精品一区二区三区视频| 99在线观看精品| 人妻 中文无码 中出| 大肥女ass樱桃| 丝袜美女自摸| 很黄很色60分钟在线观看| 亚洲日韩乱码人人爽人人澡人| 精品综合久久久久久8888| 在线观看国产亚洲| 美女教师朝桐光在线播放| aaa级黄影片| 色偷偷成人网免费视频男人的天堂 | 亚洲婷婷天堂综合国产剧情| 久草大| 91久久线看在观草草青青| 琪琪色原网20岁以下热热色原网站| 成人欧美尽粗二区三区AV| 无套内射CHINESEHD| 九九热国产视频| 97色在线视频| 日韩成人在线视频| 国产在线播放不卡| 中文字幕不卡免费高清视频| 欧美特级午夜一区二区三区| 高清国语自产拍免费|