summaryrefslogtreecommitdiff
path: root/examples/device/hid_boot_interface
diff options
context:
space:
mode:
authorHa Thach <[email protected]>2026-06-29 12:56:16 +0700
committerGitHub <[email protected]>2026-06-29 12:56:16 +0700
commit40f4c12c6be504031d2e2808f191134739206b5e (patch)
tree6206237e2f08aed4d0570daa65bf88e45e7de8f8 /examples/device/hid_boot_interface
parentbe22838b081ad90f6b312e1da6fc1b1653e3c5ae (diff)
parentba32b46ebd5304812d521cd30cfdb5b284341f69 (diff)
Merge pull request #3743 from hathach/claude/build-doc-skill
docs: add build-doc tooling and a README for every example
Diffstat (limited to 'examples/device/hid_boot_interface')
-rw-r--r--examples/device/hid_boot_interface/README.md47
1 files changed, 47 insertions, 0 deletions
diff --git a/examples/device/hid_boot_interface/README.md b/examples/device/hid_boot_interface/README.md
new file mode 100644
index 000000000..fbce10514
--- /dev/null
+++ b/examples/device/hid_boot_interface/README.md
@@ -0,0 +1,47 @@
+# HID Boot Keyboard and Mouse
+
+A composite USB HID device that exposes a boot-protocol keyboard and a boot-protocol mouse as two separate interfaces.
+
+## What it does
+
+- Presents two HID interfaces: a boot keyboard (interface 0) and a boot mouse (interface 1).
+- Polls the board button every 10 ms. While the button is held, the keyboard sends the Right Arrow keycode and the mouse moves diagonally (+5, +5); releasing the button sends an empty keyboard report.
+- Uses the HID boot protocol, so the device works even before an OS HID driver loads (e.g. in a PC BIOS/UEFI setup).
+- If the device is suspended, pressing the button issues a USB remote wakeup.
+- The LED blinks to indicate USB state (250 ms not mounted, 1000 ms mounted, 2500 ms suspended). When the host turns on Caps Lock, the LED is driven solid on via the keyboard's OUTPUT report.
+
+## USB Descriptors
+
+| Interface | Class driver |
+|-----------|--------------|
+| 0 | HID (boot keyboard) |
+| 1 | HID (boot mouse) |
+
+## Configuration
+
+Notable `tusb_config.h` settings:
+
+```c
+#define CFG_TUD_HID 2 // boot keyboard + boot mouse
+#define CFG_TUD_HID_EP_BUFSIZE 8
+```
+
+## Building
+
+CMake:
+
+```bash
+mkdir build && cd build
+cmake -DBOARD=raspberry_pi_pico ..
+cmake --build .
+```
+
+Make:
+
+```bash
+make BOARD=raspberry_pi_pico all
+```
+
+## Try it
+
+After flashing, the board enumerates as a keyboard and a mouse. Press and hold the button: the host receives repeated Right Arrow key presses and the pointer drifts toward the bottom-right. Because it uses the boot protocol, the keyboard also works in a BIOS/UEFI menu.