国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

USB鼠標(biāo)實現(xiàn)——設(shè)備描述符(一)

這篇具有很好參考價值的文章主要介紹了USB鼠標(biāo)實現(xiàn)——設(shè)備描述符(一)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

設(shè)備描述符

倉庫地址

倉庫地址

USB 鼠標(biāo)閱讀順序

  • 枚舉過程
  • USB鼠標(biāo)實現(xiàn)——設(shè)備描述符(一)
  • USB鼠標(biāo)實現(xiàn)——設(shè)置地址(二)
  • USB鼠標(biāo)實現(xiàn)——配置描述符集合(三)
  • USB鼠標(biāo)實現(xiàn)——字符串描述符(四)
  • USB鼠標(biāo)實現(xiàn)——設(shè)備限定描述符(五)
  • USB鼠標(biāo)實現(xiàn)——設(shè)置配置和獲取配置(六)
  • USB鼠標(biāo)實現(xiàn)——報告描述符(七)
  • USB鼠標(biāo)實現(xiàn)——HID 報告的返回(八)

獲取設(shè)備描述符請求

USB鼠標(biāo)實現(xiàn)——設(shè)備描述符(一)

標(biāo)準(zhǔn)設(shè)備請求

typedef struct __attribute__ ((packed)){
    union {
        struct __attribute__ ((packed)) {
          uint8_t recipient :  5; ///< Recipient type usb_request_recipient_t.
          uint8_t type      :  2; ///< Request type usb_request_type_t.
          uint8_t direction :  1; ///< Direction type. usb_dir_t
        } bmRequestType_bit;

        uint8_t bmRequestType;
    };

    uint8_t  bRequest;
    uint16_t wValue;
    uint16_t wIndex;
    uint16_t wLength;
} usb_control_request_t;

USB 控制端點收到的數(shù)據(jù)

0x80 0x6 0x0 0x1 0x0 0x0 0x40 0x0
  • bmRequestType:0x80
    • 數(shù)據(jù)傳輸方向為 1,device-to-host
    • 標(biāo)準(zhǔn)請求
    • 請求的接收者為設(shè)備
  • bRequest:0x06
    • GET_DESCRIPTOR 獲取描述符請求
  • wValue:0x0001(LSB)
    • 低位:0x01 設(shè)備描述符
    • 高位:0x00 索引號
  • wIndex:0x0000(LSB)
    • 低位:0x00
    • 高位:0x00
  • wLength:0x40
    • 低位:0x40 請求返回的字節(jié)數(shù)為 0x40,設(shè)備實際返回的字節(jié)數(shù)可以比該域指定的字節(jié)數(shù)少
    • 高位:0x00

設(shè)備描述符返回

設(shè)備描述符定義

USB鼠標(biāo)實現(xiàn)——設(shè)備描述符(一)
USB鼠標(biāo)實現(xiàn)——設(shè)備描述符(一)

設(shè)備描述符實現(xiàn)

usb_desc_device_t const desc_device =
{
    .bLength            = sizeof(usb_desc_device_t),
    .bDescriptorType    = USB_DESC_DEVICE,
    .bcdUSB             = 0x0200,
    .bDeviceClass       = 0x00,
    .bDeviceSubClass    = 0x00,
    .bDeviceProtocol    = 0x00,
    .bMaxPacketSize0    = 0x40,

    .idVendor           = 0xCafe,
    .idProduct          = USB_PID,
    .bcdDevice          = 0x0100,

    .iManufacturer      = 0x01,
    .iProduct           = 0x02,
    .iSerialNumber      = 0x03,

    .bNumConfigurations = 0x01
};

設(shè)備描述符數(shù)據(jù)

0x12 0x1 0x0 0x2 0x0 0x0 0x0 0x40 0xfe 0xca 0x8 0x40 0x0 0x1 0x1 0x2 0x3 0x1

設(shè)備描述符分析

  • bLength:0x12

    • 表示該描述符的長度。設(shè)備描述符的長度為 18 字節(jié),寫成十六進制就是 0x12。
  • bDescriptorType:0x01

    • 描述符類型。設(shè)備描述符的編號為 0x01。
  • bcdUSB:0x0200

    • 2 字節(jié),該設(shè)備所使用的 USB 協(xié)議的版本。USB2.0 就是 0x0200,USB1.1 就是 0x0110。實際傳輸?shù)臅r候是低字節(jié)在前的。
  • bDeviceClass:0x00

    • 是設(shè)備所使用的類代碼,不在設(shè)備描述符中定義設(shè)備類,而在接口描述符中定義設(shè)備類,所以該字段的值設(shè)置為 0。
  • bDeviceSubClass:0x00

    • 是設(shè)備所使用子類代碼,bDeviceClass字段為0時,該字段也為0。
  • bDeviceProtocol:0x00

    • 是設(shè)備所使用的協(xié)議,協(xié)議代碼由 USB 協(xié)會規(guī)定。
  • bMaxPacketSize0:0x40

    • 端點 0 的最大包長。它的取值可以是 8 16 32 64,這里設(shè)置為 64。
  • idVender:0xCafe

    • 2 字節(jié),廠商 ID
  • idProduct:0x4008

    • 2 字節(jié),產(chǎn)品 ID
  • bcdDevice:0x0100

    • 2 字節(jié),設(shè)備的版本號
  • iManufacturer:0x01

    • 描述廠商的字符串的索引值,獲取字符串描述符時,對應(yīng)的索引需要返回相應(yīng)的描述符。
  • iProduct:0x02

    • 描述產(chǎn)品的字符串索引值,獲取字符串描述符時,對應(yīng)的索引需要返回相應(yīng)的描述符。
  • iSerialNumber:0x03

    • 設(shè)備的序列號字符串索引值,獲取字符串描述符時,對應(yīng)的索引需要返回相應(yīng)的描述符。
  • bNumberConfigurations:0x01

    • 表示該設(shè)備有多少種配置,當(dāng)前只用了一種配置

附 STM32 枚舉日志

HID 鼠標(biāo)枚舉過程分析文章來源地址http://www.zghlxwxcb.cn/news/detail-489128.html

suspend int
bus reset int
enum done int
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x80 0x6 0x0 0x1 0x0 0x0 0x40 0x0
dcd xfer
input ep int
d->h :0x12 0x1 0x0 0x2 0x0 0x0 0x0 0x40 0xfe 0xca 0x8 0x40 0x0 0x1 0x1 0x2 0x3 0x1
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
rxflvl int
bus reset int
output ep int
send xfer complete event
enum done int
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x0 0x5 0x4 0x0 0x0 0x0 0x0 0x0
dcd xfer
input ep int
edpt int send xfer complete event
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x80 0x6 0x0 0x1 0x0 0x0 0x12 0x0
dcd xfer
input ep int
d->h :0x12 0x1 0x0 0x2 0x0 0x0 0x0 0x40 0xfe 0xca 0x8 0x40 0x0 0x1 0x1 0x2 0x3 0x1
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
rxflvl int
output ep int
send xfer complete event
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x80 0x6 0x0 0x2 0x0 0x0 0xff 0x0
dcd xfer
input ep int
d->h :0x9 0x2 0x22 0x0 0x1 0x1 0x0 0xa0 0x32 0x9 0x4 0x0 0x0 0x1 0x3 0x1 0x2 0x0 0x9 0x21 0x11 0x1 0x0 0x1 0x22 0x4d 0x0 0x7 0x5 0x81 0x3 0x8 0x0 0xa
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x80 0x6 0x3 0x3 0x9 0x4 0xff 0x0
send xfer complete event
dcd xfer
input ep int
d->h :0xe 0x3 0x31 0x0 0x32 0x0 0x33 0x0 0x34 0x0 0x35 0x0 0x36 0x0
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x80 0x6 0x0 0x3 0x0 0x0 0xff 0x0
send xfer complete event
dcd xfer
input ep int
d->h :0x4 0x3 0x9 0x4
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x80 0x6 0x2 0x3 0x9 0x4 0xff 0x0
send xfer complete event
dcd xfer
input ep int
d->h :0x1e 0x3 0x54 0x0 0x69 0x0 0x6e 0x0 0x79 0x0 0x55 0x0 0x53 0x0 0x42 0x0 0x20 0x0 0x44 0x0 0x65 0x0 0x76 0x0 0x69 0x0 0x63 0x0 0x65 0x0
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x80 0x6 0x0 0x6 0x0 0x0 0xa 0x0
send xfer complete event
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x80 0x6 0x0 0x1 0x0 0x0 0x12 0x0
dcd xfer
input ep int
d->h :0x12 0x1 0x0 0x2 0x0 0x0 0x0 0x40 0xfe 0xca 0x8 0x40 0x0 0x1 0x1 0x2 0x3 0x1
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x80 0x6 0x0 0x2 0x0 0x0 0x9 0x0
send xfer complete event
dcd xfer
input ep int
d->h :0x9 0x2 0x22 0x0 0x1 0x1 0x0 0xa0 0x32
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x80 0x6 0x0 0x2 0x0 0x0 0x22 0x0
send xfer complete event
dcd xfer
input ep int
d->h :0x9 0x2 0x22 0x0 0x1 0x1 0x0 0xa0 0x32 0x9 0x4 0x0 0x0 0x1 0x3 0x1 0x2 0x0 0x9 0x21 0x11 0x1 0x0 0x1 0x22 0x4d 0x0 0x7 0x5 0x81 0x3 0x8 0x0 0xa
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x0 0x9 0x1 0x0 0x0 0x0 0x0 0x0
send xfer complete event
edpt open
dcd xfer
input ep int
edpt int send xfer complete event
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x21 0xa 0x0 0x0 0x0 0x0 0x0 0x0
dcd xfer
input ep int
edpt int send xfer complete event
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x81 0x6 0x0 0x22 0x0 0x0 0x8d 0x0
dcd xfer
input ep int
d->h :0x5 0x1 0x9 0x2 0xa1 0x1 0x9 0x1 0xa1 0x0 0x5 0x9 0x19 0x1 0x29 0x5 0x15 0x0 0x25 0x1 0x95 0x5 0x75 0x1 0x81 0x2 0x95 0x1 0x75 0x3 0x81 0x1 0x5 0x1 0x9 0x30 0x9 0x31 0x15 0x81 0x25 0x7f 0x95 0x2 0x75 0x8 0x81 0x6 0x9 0x38 0x15 0x81 0x25 0x7f 0x95 0x1 0x75 0x8 0x81 0x6 0x5 0xc 0xa 0x38
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
input ep int
d->h :0x2 0x15 0x81 0x25 0x7f 0x95 0x1 0x75 0x8 0x81 0x6 0xc0 0xc0
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
rxflvl int
output ep int
send xfer complete event
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x80 0x6 0x0 0x3 0x0 0x0 0xff 0x0
dcd xfer
input ep int
d->h :0x4 0x3 0x9 0x4
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x80 0x6 0x1 0x3 0x9 0x4 0xff 0x0
send xfer complete event
dcd xfer
input ep int
d->h :0x10 0x3 0x54 0x0 0x69 0x0 0x6e 0x0 0x79 0x0 0x55 0x0 0x53 0x0 0x42 0x0
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x80 0x6 0x0 0x3 0x0 0x0 0xff 0x0
send xfer complete event
dcd xfer
input ep int
d->h :0x4 0x3 0x9 0x4
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x80 0x6 0x2 0x3 0x9 0x4 0xff 0x0
send xfer complete event
dcd xfer
input ep int
d->h :0x1e 0x3 0x54 0x0 0x69 0x0 0x6e 0x0 0x79 0x0 0x55 0x0 0x53 0x0 0x42 0x0 0x20 0x0 0x44 0x0 0x65 0x0 0x76 0x0 0x69 0x0 0x63 0x0 0x65 0x0
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x80 0x6 0x1 0x3 0x9 0x4 0xff 0x0
send xfer complete event
dcd xfer
input ep int
d->h :0x10 0x3 0x54 0x0 0x69 0x0 0x6e 0x0 0x79 0x0 0x55 0x0 0x53 0x0 0x42 0x0
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
rxflvl int
setup packed recvd
setup packed done
output ep int
h->d: 0x80 0x6 0x2 0x3 0x9 0x4 0xff 0x0
send xfer complete event
dcd xfer
input ep int
d->h :0x1e 0x3 0x54 0x0 0x69 0x0 0x6e 0x0 0x79 0x0 0x55 0x0 0x53 0x0 0x42 0x0 0x20 0x0 0x44 0x0 0x65 0x0 0x76 0x0 0x69 0x0 0x63 0x0 0x65 0x0
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
rxflvl int
output ep int
send xfer complete event
dcd xfer
0x0 0x5 0x5 0x0 0x0
input ep int
d->h :0x0 0x5 0x5 0x0 0x0
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
0x0 0x5 0x5 0x0 0x0
input ep int
d->h :0x0 0x5 0x5 0x0 0x0
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
0x0 0x5 0x5 0x0 0x0
input ep int
d->h :0x0 0x5 0x5 0x0 0x0
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
0x0 0x5 0x5 0x0 0x0
input ep int
d->h :0x0 0x5 0x5 0x0 0x0
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
0x0 0x5 0x5 0x0 0x0
input ep int
d->h :0x0 0x5 0x5 0x0 0x0
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
0x0 0x5 0x5 0x0 0x0
input ep int
d->h :0x0 0x5 0x5 0x0 0x0
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
0x0 0x5 0x5 0x0 0x0
input ep int
d->h :0x0 0x5 0x5 0x0 0x0
turn off txfe
input ep int
edpt int send xfer complete event

 send xfer complete event
dcd xfer
0x0 0x5 0x5 0x0 0x0
input ep int
d->h :0x0 0x5 0x5 0x0 0x0
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
0x0 0x5 0x5 0x0 0x0
input ep int
d->h :0x0 0x5 0x5 0x0 0x0
turn off txfe
input ep int
edpt int send xfer complete event
dcd xfer
0x0 0x5 0x5 0x0 0x0
input ep int
d->h :0x0 0x5 0x5 0x0 0x0
turn off txfe
input ep int
edpt int send xfer complete event

到了這里,關(guān)于USB鼠標(biāo)實現(xiàn)——設(shè)備描述符(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 項目:USB鍵盤和鼠標(biāo)的復(fù)合設(shè)備

    項目:USB鍵盤和鼠標(biāo)的復(fù)合設(shè)備

    ? ? ? ? 我們的復(fù)合設(shè)備使用一個物理設(shè)備就可以完成多個功能。 ? ? ? 使用復(fù)合設(shè)備同時完成USB鍵盤和鼠標(biāo)功能,它的主要實現(xiàn)方式有兩種, 第一個就是我們將多個設(shè)備描述符合并成一個,這個相對比較簡單,我們只要根據(jù)相應(yīng)的報告描述符處理數(shù)據(jù)就可以。 第二個就是

    2024年04月11日
    瀏覽(19)
  • USB復(fù)合設(shè)備構(gòu)建CDC+HID鼠標(biāo)鍵盤套裝

    USB復(fù)合設(shè)備構(gòu)建CDC+HID鼠標(biāo)鍵盤套裝

    最近需要做一個小工具,要用到USB CDC+HID設(shè)備。又重新研究了一下USB協(xié)議和STM32的USB驅(qū)動庫,也踩了不少坑,因此把代碼修改過程記錄一下。 開發(fā)環(huán)境: ST-LINK v2 STM32H743開發(fā)板 PC windows 11 cubeMX v6.9.2 cubeIDE v1.13.2 cubeprogramer v2.14.0 參考資料: STMicroelectronics/stm32_mw_usb_device: Provide

    2024年02月04日
    瀏覽(26)
  • USB復(fù)合設(shè)備(鍵盤鼠標(biāo)U盤三合一)基于標(biāo)準(zhǔn)庫

    USB復(fù)合設(shè)備(鍵盤鼠標(biāo)U盤三合一)基于標(biāo)準(zhǔn)庫

    鍵盤鼠標(biāo)屬于HID,U盤功能屬于MSC。至于這些定義,這里不再過多介紹。 網(wǎng)上有很多的例程,但是大多是基于HAL庫的,標(biāo)準(zhǔn)庫的我也找了不少例子看,但是沒有HID+MSC的例程。最后還是看了個官方的復(fù)合設(shè)備例程才頓悟的,官方的例程,網(wǎng)上也很好找。搜USB Composite examples應(yīng)該就

    2024年02月09日
    瀏覽(29)
  • stm32 USB HID+CDC 鼠標(biāo)鍵盤串口 組合設(shè)備配置解析

    stm32 USB HID+CDC 鼠標(biāo)鍵盤串口 組合設(shè)備配置解析

    查閱網(wǎng)上的博客與代碼,很多都是關(guān)于USB的鼠標(biāo)配置、USB的鍵盤配置、USB的虛擬串口配置,稍微深入一點的會將鼠標(biāo)鍵盤合在一起,但移植起來就會報很多錯誤,要么是檢測不到,要么是警告,這很正常,因為不理解這些數(shù)字代表著什么。但只要理解每個數(shù)字代表什么意思,

    2024年02月13日
    瀏覽(56)
  • stm32 USB復(fù)合設(shè)備 cubeMX庫一鍵生成 多路CDC串口 HID鼠標(biāo)鍵盤 Composite Device

    stm32 USB復(fù)合設(shè)備 cubeMX庫一鍵生成 多路CDC串口 HID鼠標(biāo)鍵盤 Composite Device

    最近有個需求,需要同時用usb鍵盤鼠標(biāo)和虛擬串口等,因為平時沒怎么研究過usb協(xié)議,所以自己寫復(fù)合設(shè)備一直沒有成功,然后正巧在github上看到了一個stm32的一個usb復(fù)合設(shè)備庫,可以快速配置usb組合設(shè)備,并且支持超級多路串口 Gihub地址 https://github.com/alambe94/I-CUBE-USBD-Compo

    2024年02月09日
    瀏覽(35)
  • Android 13.0 通過驅(qū)動實現(xiàn)禁用usb鼠標(biāo)和usb鍵盤功能

    在13.0的系統(tǒng)產(chǎn)品定制化開發(fā)中,在進行定制中有關(guān)于usb鍵盤和usb鼠標(biāo)的需求中,產(chǎn)品要求禁止usb口掛載usb鼠標(biāo)和usb鍵盤,所以需要要求在usb掛載類型的時候 判斷如果是usb鼠標(biāo)和usb鍵盤就不讓掛載,這就需要從驅(qū)動方面入手來解決這個問題,接下來看下驅(qū)動的某些掛載usb的相

    2024年02月08日
    瀏覽(28)
  • Android 12.0 通過驅(qū)動實現(xiàn)禁用usb鼠標(biāo)和usb鍵盤功能

    在12.0的系統(tǒng)產(chǎn)品定制化開發(fā)中,在進行定制中有關(guān)于usb鍵盤和usb鼠標(biāo)的需求中,產(chǎn)品要求禁止usb口掛載usb鼠標(biāo)和usb鍵盤,所以需要要求在usb掛載類型的時候 判斷如果是usb鼠標(biāo)和usb鍵盤就不讓掛載,這就需要從驅(qū)動方面入手來解決這個問題,接下來看下驅(qū)動的某些掛載usb的相

    2024年02月08日
    瀏覽(58)
  • 定義USB接口,鼠標(biāo)類和鍵盤類都可以作為實現(xiàn)類去實現(xiàn)USB接口

    定義USB接口,鼠標(biāo)類和鍵盤類都可以作為實現(xiàn)類去實現(xiàn)USB接口

    目錄 程序設(shè)計 程序分析 系列文章 ? 如圖所示,我們電腦上都有USB接口,當(dāng)我們的鼠標(biāo)和鍵盤插上去之后才可以使用,拔出來就關(guān)閉使用。其實具體是什么USB設(shè)備,筆記本并不關(guān)心,只要符合USB規(guī)格的設(shè)備都可以。鼠標(biāo)和鍵盤要想能在電腦上使用,那么鼠標(biāo)和鍵盤也必須遵守

    2024年02月06日
    瀏覽(23)
  • USB Redirector本地安裝并結(jié)合內(nèi)網(wǎng)穿透實現(xiàn)遠程共享和訪問USB設(shè)備

    USB Redirector本地安裝并結(jié)合內(nèi)網(wǎng)穿透實現(xiàn)遠程共享和訪問USB設(shè)備

    USB Redirector是一款方便易用的USB設(shè)備共享服務(wù)應(yīng)用程序,它提供了共享和訪問本地或互聯(lián)網(wǎng)上的USB設(shè)備的功能。通過使用USB Redirector可以結(jié)合cpolar內(nèi)網(wǎng)穿透,用戶可以遠程訪問USB設(shè)備,就好像這些設(shè)備直接連接在他們的計算機上一樣。該軟件支持多種USB設(shè)備的共享,包括存儲設(shè)

    2024年01月16日
    瀏覽(20)
  • Android 13.0 USB鼠標(biāo)右鍵改成返回鍵的功能實現(xiàn)

    在13.0設(shè)備定制化開發(fā)中,產(chǎn)品有好幾個usb口,用來可以連接外設(shè),所以USB鼠標(biāo)通過usb口來控制設(shè)備也是常見的問題,在window系統(tǒng)中,鼠標(biāo)右鍵是返回鍵的功能,可是android原生的系統(tǒng) 鼠標(biāo)右鍵不是返回鍵根據(jù)產(chǎn)品開發(fā)需要鼠標(biāo)修改成右鍵就需要跟代碼, 功能分析: 在android系

    2024年02月08日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包