mirror of
https://github.com/hathach/tinyusb.git
synced 2026-08-18 19:14:32 +00:00
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) <noreply@anthropic.com>
1.5 KiB
1.5 KiB
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:
#define CFG_TUD_HID 2 // boot keyboard + boot mouse
#define CFG_TUD_HID_EP_BUFSIZE 8
Building
CMake:
mkdir build && cd build
cmake -DBOARD=raspberry_pi_pico ..
cmake --build .
Make:
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.