| # Input Driver Sample |
| |
| 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. |
| |
| ## Building |
| |
| To build the `input_sample` driver and related components, run the following command: |
| |
| ``` |
| tools/bazel build //src/input_sample:pkg |
| ``` |
| |
| ## Running |
| |
| Use the following commands to load the driver and inspect the input reports on a target |
| device: |
| |
| 1. Load the `input_sample` driver component: |
| |
| ``` |
| tools/bazel run src/input_sample:pkg.component |
| ``` |
| |
| 1. 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. |
| |
| 1. 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. |