usb_hid – USB 人机接口设备

usb_hid模块允许您将数据作为 HID 设备输出。

在这些板上可用
  • 8086 Commander
  • @sarfata shIRtty
  • ARAMCON Badge 2019
  • ARAMCON2 Badge
  • ATMegaZero ESP32-S2
  • Adafruit BLM Badge
  • Adafruit CLUE nRF52840 Express
  • Adafruit Circuit Playground Bluefruit
  • Adafruit Circuit Playground Express 4-H
  • Adafruit CircuitPlayground Express
  • Adafruit CircuitPlayground Express with Crickit libraries
  • Adafruit CircuitPlayground Express with displayio
  • Adafruit EdgeBadge
  • Adafruit Feather Bluefruit Sense
  • Adafruit Feather M0 Adalogger
  • Adafruit Feather M0 Basic
  • Adafruit Feather M0 Express
  • Adafruit Feather M0 Express with Crickit libraries
  • Adafruit Feather M4 CAN
  • Adafruit Feather M4 Express
  • Adafruit Feather MIMXRT1011
  • Adafruit Feather RP2040
  • Adafruit Feather STM32F405 Express
  • Adafruit Feather nRF52840 Express
  • Adafruit FunHouse
  • Adafruit Gemma M0
  • Adafruit Gemma M0 PyCon 2018
  • Adafruit Grand Central M4 Express
  • Adafruit Hallowing M4 Express
  • Adafruit ItsyBitsy M0 Express
  • Adafruit ItsyBitsy M4 Express
  • Adafruit ItsyBitsy RP2040
  • Adafruit ItsyBitsy nRF52840 Express
  • Adafruit LED Glasses Driver nRF52840
  • Adafruit Macropad RP2040
  • Adafruit MagTag
  • Adafruit Matrix Portal M4
  • Adafruit Metro ESP32S2
  • Adafruit Metro M0 Express
  • Adafruit Metro M4 Airlift Lite
  • Adafruit Metro M4 Express
  • Adafruit Metro nRF52840 Express
  • Adafruit Monster M4SK
  • Adafruit NeoKey Trinkey M0
  • Adafruit NeoPixel Trinkey M0
  • Adafruit ProxLight Trinkey M0
  • Adafruit PyGamer
  • Adafruit PyPortal
  • Adafruit PyPortal Pynt
  • Adafruit PyPortal Titano
  • Adafruit PyRuler
  • Adafruit Pybadge
  • Adafruit QT Py M0
  • Adafruit QT Py M0 Haxpress
  • Adafruit QT Py RP2040
  • Adafruit QT2040 Trinkey
  • Adafruit Rotary Trinkey M0
  • Adafruit Slide Trinkey M0
  • Adafruit Trellis M4 Express
  • Adafruit Trinket M0
  • AloriumTech Evo M51
  • Arduino MKR Zero
  • Arduino MKR1300
  • Arduino Nano 33 BLE
  • Arduino Nano 33 IoT
  • Arduino Nano RP2040 Connect
  • Arduino Zero
  • Artisense Reference Design RD00
  • AtelierDuMaker nRF52840 Breakout
  • BDMICRO VINA-D21
  • BDMICRO VINA-D51
  • BLE-SS dev board Multi Sensor
  • BastBLE
  • BastWiFi
  • BlueMicro840
  • CP Sapling M0
  • CP Sapling M0 w/ SPI Flash
  • CP32-M4
  • Capable Robot Programmable USB Hub
  • Cedar Grove StringCar M0 Express
  • Challenger RP2040 WiFi
  • Circuit Playground Express Digi-Key PyCon 2019
  • CircuitBrains Basic
  • CircuitBrains Deluxe
  • CrumpS2
  • Cytron Maker Pi RP2040
  • DynOSSAT-EDU-EPS
  • DynOSSAT-EDU-OBC
  • DynaLoRa_USB
  • ESP 12k NodeMCU
  • Electronic Cats Bast Pro Mini M0
  • Electronic Cats CatWAN USBStick
  • Electronic Cats Hunter Cat NFC
  • Electronic Cats NFC Copy Cat
  • Electronut Labs Blip
  • Electronut Labs Papyr
  • EncoderPad RP2040
  • Escornabot Makech
  • Espruino Pico
  • Espruino Wifi
  • Feather ESP32S2 without PSRAM
  • Feather MIMXRT1011
  • Feather MIMXRT1062
  • FeatherS2
  • FeatherS2 Neo
  • FeatherS2 PreRelease
  • Fluff M0
  • Fomu
  • Franzininho WIFI w/Wroom
  • Franzininho WIFI w/Wrover
  • Gravitech Cucumber M
  • Gravitech Cucumber MS
  • Gravitech Cucumber R
  • Gravitech Cucumber RS
  • HMI-DevKit-1.1
  • Hacked Feather M0 Express with 8Mbyte SPI flash
  • HalloWing M0 Express
  • HiiBot BlueFi
  • IMXRT1010-EVK
  • IkigaiSense Vita nRF52840
  • J&J Studios datum-Distance
  • J&J Studios datum-IMU
  • J&J Studios datum-Light
  • J&J Studios datum-Weather
  • Kaluga 1
  • LILYGO TTGO T8 ESP32-S2 w/Display
  • LoC BeR M4 base board
  • MDBT50Q-DB-40
  • MDBT50Q-RX Dongle
  • MEOWBIT
  • MORPHEANS MorphESP-240
  • MakerDiary nRF52840 MDK
  • MakerDiary nRF52840 MDK USB Dongle
  • Makerdiary M60 Keyboard
  • Makerdiary Pitaya Go
  • Makerdiary nRF52840 M.2 Developer Kit
  • Melopero Shake RP2040
  • Meow Meow
  • Metro MIMXRT1011
  • Mini SAM M4
  • NUCLEO STM32F746
  • NUCLEO STM32F767
  • NUCLEO STM32H743
  • OPENMV-H7 R1
  • Oak Dev Tech BREAD2040
  • Oak Dev Tech PixelWing ESP32S2
  • Open Hardware Summit 2020 Badge
  • PCA10056 nRF52840-DK
  • PCA10059 nRF52840 Dongle
  • PCA10100 nRF52833 Dongle
  • PYB LR Nano V2
  • Particle Argon
  • Particle Boron
  • Particle Xenon
  • PewPew 10.2
  • PewPew 13
  • PicoPlanet
  • Pimoroni Interstate 75
  • Pimoroni Keybow 2040
  • Pimoroni PGA2040
  • Pimoroni Pico LiPo (16MB)
  • Pimoroni Pico LiPo (4MB)
  • Pimoroni PicoSystem
  • Pimoroni Plasma 2040
  • Pimoroni Tiny 2040
  • PyCubedv04
  • PyCubedv04-MRAM
  • PyCubedv05
  • PyCubedv05-MRAM
  • PyKey60
  • PyboardV1_1
  • Raspberry Pi Pico
  • Robo HAT MM1 M4
  • S2Mini
  • SAM E54 Xplained Pro
  • SAM32v26
  • ST STM32F746G Discovery
  • STM32F411E_DISCO
  • STM32F412G_DISCO
  • STM32F4_DISCO
  • Saola 1 w/Wroom
  • Saola 1 w/Wrover
  • Seeeduino Wio Terminal
  • Seeeduino XIAO
  • Serpente
  • Silicognition LLC M4-Shim
  • Simmel
  • SparkFun LUMIDrive
  • SparkFun MicroMod RP2040 Processor
  • SparkFun MicroMod SAMD51 Processor
  • SparkFun MicroMod nRF52840 Processor
  • SparkFun Pro Micro RP2040
  • SparkFun Pro nRF52840 Mini
  • SparkFun Qwiic Micro
  • SparkFun RedBoard Turbo
  • SparkFun SAMD21 Dev Breakout
  • SparkFun SAMD21 Mini Breakout
  • SparkFun STM32 MicroMod Processor
  • SparkFun Thing Plus - RP2040
  • SparkFun Thing Plus - SAMD51
  • Sprite_v2b
  • StackRduino M0 PRO
  • TG-Boards' Datalore IP M4
  • TG-Watch
  • THUNDERPACK_v11
  • Targett Module Clip w/Wroom
  • Targett Module Clip w/Wrover
  • Teensy 4.0
  • Teensy 4.1
  • Teknikio Bluebird
  • The Open Book Feather
  • TinkeringTech ScoutMakes Azul
  • TinyS2
  • Trinket M0 Haxpress
  • UARTLogger II
  • WarmBit BluePixel nRF52840
  • XinaBox CC03
  • XinaBox CS11
  • iMX RT 1020 EVK
  • iMX RT 1060 EVK
  • keithp.com snekboard
  • microS2
  • nanoESP32-S2 w/Wrover
  • nanoESP32-S2 w/Wroom
  • ndGarage[n°] Bit6: FeatherSnow-v2
  • ndGarage[n°]Bit6:FeatherSnow
  • nice!nano
  • senseBox MCU
  • stm32f411ce-blackpill
  • stm32f411ce-blackpill-with-flash
  • uChip

usb_hid.devices :Tuple[Device, Ellipsis]

所有活动 HID 设备接口的元组。默认设备集是,在默认情况下禁用的板上,是一个空元组。Device.KEYBOARD, Device.MOUSE, Device.CONSUMER_CONTROLusb_hiddevices

usb_hid.disable()None

不要将任何 USB HID 设备呈现给主机。可以在 boot.py连接USB之前调用。HID 复合设备通常默认启用,但在某些端点有限的板上,包括 STM32F4,默认禁用。您必须关闭另一个 USB 设备,例如usb_cdcstorage 以释放端点以供 使用usb_hid

usb_hid.enable(devices: Optional[Sequence[Device]])None

指定可用的 USB HID 设备。可以在 boot.py连接USB之前调用。

参数

设备 (Sequence) – Device 对象。如果devices为空,则禁用 HID。的顺序 Devices 可能对主机很重要。例如,对于 MacOS,将鼠标设备放在任何 Gamepad 或 Digitizer HID 设备之前,否则它将无法工作。

如果您一次启用太多设备,您将耗尽 USB 端点。可用端点的数量因微控制器而异。boot.py如果没有足够的端点可用,CircuitPython 将在运行后进入安全模式以通知您。

class usb_hid.Device(*, descriptor: _typing.ReadableBuffer, usage_page: int, usage: int, report_ids: Sequence[int], in_report_lengths: Sequence[int], out_report_lengths: Sequence[int])

HID 设备规格

创建 USB HID 设备的描述。当你通过一个创建实际的设备Deviceusb_hid.enable()

参数
  • report_descriptor (ReadableBuffer) –USB HID 报告描述符字节。未验证描述符的正确性;由您来确保它没有格式错误。

  • usage_page (int) – 来自描述符的 Usage Page 值。必须匹配描述符中的内容。

  • usage (int) – 描述符中的用法值。必须匹配描述符中的内容。

  • report_ids (Sequence[int]) – 描述符使用的报告 ID 序列。如果report_descriptor未指定任何报告 ID,请使用 (0,)

  • in_report_lengths (Sequence[int]) – 发送到主机的 HID 报告的字节大小序列。大小按report_ids. Use a size of 0对不是 IN 报告的报告使用大小。“IN”是关于主机的。

  • out_report_lengths (int) – 从主机接收到的 HID 报告的字节大小序列。大小按report_ids. Use a size of 0 对不是 OUT 报告的报告使用大小。“OUT”是关于主机的。

report_ids, in_report_lengths, 和 都out_report_lengths必须是相同的长度。

这是一个Device带有指定两个报告 ID 3 和 4 的描述符的示例。报告 ID 3 发送长度为 5 的 IN 报告,并接收长度为 6 的 OUT 报告。报告 ID 4 发送长度为 2 的 IN 报告,并且没有收到 OUT 报告:

device = usb_hid.Device(
    descriptor=b"...",         # Omitted for brevity.
    report_ids=(3, 4),
    in_report_lengths=(5, 2),
    out_report_lengths=(6, 0),
)
KEYBOARD :设备

支持键码 0x00-0xDD、修饰符 0xE-0xE7 和五个 LED 指示灯的标准键盘设备。将报告 ID 1 用于其 IN 和 OUT 报告。

MOUSE :设备

标准鼠标设备支持五个鼠标按钮,每个报告中的 X 和 Y 相对移动从 -127 到 127,以及每个报告中的相对鼠标滚轮从 -127 变为 127。使用报告 ID 2 作为其 IN 报告。

CONSUMER_CONTROL :设备

消费者控制设备支持从 1 到 652 的发送值,无翻转。对其 IN 报告使用报告 ID 3。

last_received_report :字节

HID OUT 报告为bytes (只读)。None 如果没有收到。同 get_last_received_report()不带参数。

已弃用:将在 CircutPython 8.0.0 中删除。使用get_last_received_report() 来代替。

usage_page :int

设备使用页面标识符,用于指定设备类别。(只读)

usage :int

设备使用标识符,用于指定特定类型的设备。(只读)

例如,在通用桌面使用页面 0x01 中,键盘是 0x06。鼠标在同一使用页面内为 0x02。

send_report(self, buf: _typing.ReadableBuffer, report_id: Optional[int] = None)None

发送 HID 报告。如果设备描述符指定了零个或一个报告 ID,您可以提供None (默认)作为 的值report_id。否则,您必须指定在发送报告时使用哪个报告 ID。

get_last_received_report(self, report_id: Optional[int] = None)bytes

获取给定报告 ID 的最后收到的 HID OUT 报告。如果没有报告ID,或者只有一个报告ID,可以省略报告ID。None如果没有收到就返回。