summaryrefslogtreecommitdiff
path: root/examples/device/hid_boot_interface
diff options
context:
space:
mode:
authorhathach <[email protected]>2026-06-29 10:16:25 +0700
committerhathach <[email protected]>2026-06-29 10:16:25 +0700
commit4b1c8d16f72bb5d8f2eb8a2e8dde35abdd2f2a88 (patch)
tree3db175aa3d96c92a44fab764dba59f473096c4b4 /examples/device/hid_boot_interface
parent0a25cc27d7d3699536f6df01e80af3eb0423ce58 (diff)
docs: add build-doc tooling and a README for every example
Documentation tooling: - Add the `build-doc` skill and `tools/build_doc.py` wrapper for local Sphinx builds (clean / -W / open). - Enable Markdown (MyST) in conf.py and auto-collect examples/{device,host,dual}/*/README.md into a 3-level Examples nav (Examples > Device/Host/Dual > example), noting each page's source location and normalizing headings to a single H1. - Remove the stale `.claude/commands/build-doc.md`; point the AGENTS.md Documentation section at the skill. Example docs: - Add a README.md for every device/host/dual example: what it does, USB interface table, notable tusb_config.h settings, generic CMake + Make build steps, and how to try it. - Fold each *_freertos variant into its base README, noting the FreeRTOS source path and any RTOS-specific behavior. Generated docs/examples/ output is git-ignored. Builds clean with `sphinx-build -W`. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
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.