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.