tree: 0d50abb8a20f2011e591a026c93199f7344c4e2d [path history] [tgz]
  1. meta/
  2. BUILD.bazel
  3. input_sample.bind
  4. input_sample.cc
  5. input_sample.h
  6. input_server.cc
  7. input_server.h
  8. README.md
src/input_sample/README.md

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
    
  2. 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.

  3. 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.