This sample project contains an input driver component that implements fuchsia.input.report
using the input_reports_reader
to declare a fake mouse device that sends reports every second.
To build the input_sample
driver and related components, run the following command:
tools/bazel build //src/input_sample:pkg
Use the following commands to load the driver and inspect the input reports on a target device:
Load the input_sample
driver component:
tools/bazel run src/input_sample:pkg.component
Read the input device descriptors using the print-input-report
command:
tools/ffx driver print-input-report descriptor
The command prints a list of descriptors. The descriptor for the input_sample
driver contains the following device info:
vendor_id
: 305419896 (0x12345678)product_id
: 2271560481 (0x87654321)Descriptor from file: "class/input-report/002" { device_info: { vendor_id: 305419896 product_id: 2271560481 version: 0 } mouse: { input: { movement_x: { range: { min: -127 max: 127 } unit: { type: None exponent: 0 } } movement_y: { range: { min: -127 max: 127 } unit: { type: None exponent: 0 } } scroll_v: None scroll_h: None buttons: [1, 2, 3] position_x: None position_y: None } } sensor: None touch: None keyboard: None consumer_control: None }
You may exit this with CTRL-C.
Stream the reports from the input_sample
driver using the print-input-report
command:
tools/ffx driver print-input-report read
The command prints output similar to the following for each report received:
{ event_time: 335266867991 trace_id: 9 report_id: None mouse: { movement_x: 29 movement_y: 29 scroll_v: None scroll_h: None pressed_buttons: [1, 3] position_x: None position_y: None } sensor: None touch: None keyboard: None consumer_control: None }
You should see movement_x
and movement_y
increment in each report and the set of pressed_buttons
change.
You may exit this with CTRL-C.