Skip to main content

gamepad/
gamepad.rs

1static FILENAME: &str = "gamepad.bin";
2
3use hid_descriptor::*;
4use hid_types::id::usage::{KnownUsagePage, generic_desktop};
5use hid_types::id::{IoFlags, KnownCollectionType};
6
7fn main() {
8    // This describes a gamepad that has 8 buttons.
9    let bytes = [
10        usage_page(KnownUsagePage::GenericDesktop),
11        usage(generic_desktop::KnownUsage::Gamepad),
12        collection(KnownCollectionType::Application),
13        // Instead of adding a Usage parameter for each button,
14        // we describe an array of buttons, numbered 1 to 8.
15        usage_page(KnownUsagePage::Button),
16        usage_minimum(1u16),
17        usage_maximum(8u16),
18        // A button state is either 0 or 1.
19        logical_minimum(0),
20        logical_maximum(1),
21        // Each button is 1 bit; the report struct contains 8 of them.
22        report_size(1),
23        report_count(8),
24        input(IoFlags::data().variable()),
25        end_collection(),
26    ];
27    println!("writing gamepad descriptor to {FILENAME}");
28    write_to_file(bytes, FILENAME).unwrap();
29}