blob: 500e8445f171f46738e015d89a9c423e946d58e8 [file] [log] [blame] [view]
<link rel="stylesheet" href="../style.css" />
[TOC]
# fuchsia.ui.test.input
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div>
## **PROTOCOLS**
## Keyboard {#Keyboard}
*Defined in [fuchsia.ui.test.input/text.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/text.fidl;l=10)*
<p>A tool to inject keyboard events into Input Pipeline.</p>
<p>Please extend as necessary.</p>
### SimulateUsAsciiTextEntry {#Keyboard.SimulateUsAsciiTextEntry}
<p>Simulates input of the set of keystrokes required to type <code>text</code>,
as if on a US QWERTY keyboard.</p>
<p>US ASCII text get mapped to the corresponding key presses.
For example <code>a</code> gets mapped into a press and
a followup release of the key <code>a</code> on the US QWERTY keyboard. Also,
<code>A</code> gets mapped into a press of the <code>Shift</code> key, followed by a press
and release of <code>a</code>.</p>
<p>For convenience, the <code>\n</code> and <code>\t</code> get converted into <code>Enter</code> and <code>Tab</code>
keys respectively.</p>
#### Request {#Keyboard.SimulateUsAsciiTextEntry_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>payload</code></td>
<td>
<code><a class='link' href='#KeyboardSimulateUsAsciiTextEntryRequest'>KeyboardSimulateUsAsciiTextEntryRequest</a></code>
</td>
</tr>
</table>
#### Response {#Keyboard.SimulateUsAsciiTextEntry_Response}
&lt;EMPTY&gt;
## KeyboardInputListener {#KeyboardInputListener}
*Defined in [fuchsia.ui.test.input/text.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/text.fidl;l=39)*
<p>A tool for client applications to report text input to interested parties
(e.g. a test fixture).</p>
<p>NOTE: The reporter is the <em>client</em> of this service.</p>
<p>Canonical usage is for a test to inject text via fuchsia.ui.test.input.Keyboad,
and wait for the client under test to report back that it received the injected
text via fuchsia.ui.test.input.KeyboardInputListener.</p>
<p>NOTE: This protocol is implemented by OOT code. When adding new methods here
the methods MUST be annotated with <code>@transitional</code> at introduction time.</p>
### ReportReady {#KeyboardInputListener.ReportReady}
<p>Notify that the client is ready to receive text input. Clients that need
to complete their setup to be able to continue with testing should call
this method, so that the listener can wait until they are ready to
proceed with testing.</p>
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 10</span></div>
#### Request {#KeyboardInputListener.ReportReady_Request}
&lt;EMPTY&gt;
#### Response {#KeyboardInputListener.ReportReady_Response}
&lt;EMPTY&gt;
### ReportTextInput {#KeyboardInputListener.ReportTextInput}
<p>Notify the listener of the text string generated by the set of key events
received by the application.</p>
#### Request {#KeyboardInputListener.ReportTextInput_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>payload</code></td>
<td>
<code><a class='link' href='#KeyboardInputListenerReportTextInputRequest'>KeyboardInputListenerReportTextInputRequest</a></code>
</td>
</tr>
</table>
## MediaButtonsDevice {#MediaButtonsDevice}
*Defined in [fuchsia.ui.test.input/media_buttons.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/media_buttons.fidl;l=12)*
<p>A tool to inject media button events into Input Pipeline.</p>
<p>Please extend as necessary.</p>
### SimulateButtonPress {#MediaButtonsDevice.SimulateButtonPress}
<p>Simulates a button press and release on the requested button on the
device.</p>
#### Request {#MediaButtonsDevice.SimulateButtonPress_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>payload</code></td>
<td>
<code><a class='link' href='#MediaButtonsDeviceSimulateButtonPressRequest'>MediaButtonsDeviceSimulateButtonPressRequest</a></code>
</td>
</tr>
</table>
#### Response {#MediaButtonsDevice.SimulateButtonPress_Response}
&lt;EMPTY&gt;
## Mouse {#Mouse}
*Defined in [fuchsia.ui.test.input/mouse.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/mouse.fidl;l=50)*
<p>A tool to inject mouse events into Input Pipeline.</p>
<p>Please extend as necessary.</p>
### SimulateMouseEvent {#Mouse.SimulateMouseEvent}
<p>Injects an input report corresponding to the event specified.</p>
<p>NOTE: the <code>movement</code> parameters have a range of [-1000, 1000],
and the <code>scroll</code> parameters have a range of [-100, 100].</p>
#### Request {#Mouse.SimulateMouseEvent_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>payload</code></td>
<td>
<code><a class='link' href='#MouseSimulateMouseEventRequest'>MouseSimulateMouseEventRequest</a></code>
</td>
</tr>
</table>
#### Response {#Mouse.SimulateMouseEvent_Response}
&lt;EMPTY&gt;
## MouseInputListener {#MouseInputListener}
*Defined in [fuchsia.ui.test.input/mouse.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/mouse.fidl;l=85)*
<p>A tool for applications to report touch input to interested parties (e.g. a test
fixture).</p>
### ReportMouseInput {#MouseInputListener.ReportMouseInput}
<p>Report that component under test has received expected input.</p>
#### Request {#MouseInputListener.ReportMouseInput_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>payload</code></td>
<td>
<code><a class='link' href='#MouseInputListenerReportMouseInputRequest'>MouseInputListenerReportMouseInputRequest</a></code>
</td>
</tr>
</table>
## Registry {#Registry}
*Defined in [fuchsia.ui.test.input/registry.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/registry.fidl;l=39)*
<p>*** This protocol must not be used in production. ***</p>
<p>Enables clients to register fake input devices, which can be used to
inject input events directly into Input Pipeline.</p>
### RegisterKeyboard {#Registry.RegisterKeyboard}
<p>Enables the client to inject keyboard events using the corresponding
client end to <code>device</code>.</p>
<p>Clients are allowed at most one in-flight call at a time. Subsequent
calls must wait until the acknowledgment returns. Non-compliance
results in channel closure.</p>
<p>The <code>fuchsia.ui.test.input.Keyboard</code> channel will remain open even
if the <code>Registry</code> connection closes.</p>
#### Request {#Registry.RegisterKeyboard_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>payload</code></td>
<td>
<code><a class='link' href='#RegistryRegisterKeyboardRequest'>RegistryRegisterKeyboardRequest</a></code>
</td>
</tr>
</table>
#### Response {#Registry.RegisterKeyboard_Response}
&lt;EMPTY&gt;
### RegisterMediaButtonsDevice {#Registry.RegisterMediaButtonsDevice}
<p>Enables the client to inject media buttons events using the
corresponding client end to <code>device</code>.</p>
<p>Clients are allowed at most one in-flight call at a time. Subsequent
calls must wait until the acknowledgment returns. Non-compliance
results in channel closure.</p>
<p>The <code>fuchsia.ui.test.input.MediaButtonsDevice</code> channel will remain open
even if the <code>Registry</code> connection closes.</p>
#### Request {#Registry.RegisterMediaButtonsDevice_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>payload</code></td>
<td>
<code><a class='link' href='#RegistryRegisterMediaButtonsDeviceRequest'>RegistryRegisterMediaButtonsDeviceRequest</a></code>
</td>
</tr>
</table>
#### Response {#Registry.RegisterMediaButtonsDevice_Response}
&lt;EMPTY&gt;
### RegisterMouse {#Registry.RegisterMouse}
<p>Enables the client to inject mouse events using the corresponding
client end to <code>device</code>.</p>
<p>Clients are allowed at most one in-flight call at a time. Subsequent
calls must wait until the acknowledgment returns. Non-compliance
results in channel closure.</p>
<p>The <code>fuchsia.ui.test.input.Mouse</code> channel will remain open even
if the <code>Registry</code> connection closes.</p>
#### Request {#Registry.RegisterMouse_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>payload</code></td>
<td>
<code><a class='link' href='#RegistryRegisterMouseRequest'>RegistryRegisterMouseRequest</a></code>
</td>
</tr>
</table>
#### Response {#Registry.RegisterMouse_Response}
&lt;EMPTY&gt;
### RegisterTouchScreen {#Registry.RegisterTouchScreen}
<p>Enables the client to inject touch events using the corresponding
client end to <code>device</code>.</p>
<p>Clients are allowed at most one in-flight call at a time. Subsequent
calls must wait until the acknowledgment returns. Non-compliance
results in channel closure.</p>
<p>The <code>fuchsia.ui.test.input.TouchScreen</code> channel will remain open even
if the <code>Registry</code> connection closes.</p>
#### Request {#Registry.RegisterTouchScreen_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>payload</code></td>
<td>
<code><a class='link' href='#RegistryRegisterTouchScreenRequest'>RegistryRegisterTouchScreenRequest</a></code>
</td>
</tr>
</table>
#### Response {#Registry.RegisterTouchScreen_Response}
&lt;EMPTY&gt;
## TouchInputListener {#TouchInputListener}
*Defined in [fuchsia.ui.test.input/touch.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/touch.fidl;l=48)*
<p>A tool for applications to report touch input to interested parties (e.g. a test
fixture).</p>
### ReportTouchInput {#TouchInputListener.ReportTouchInput}
<p>Report that component under test has received expected input.</p>
#### Request {#TouchInputListener.ReportTouchInput_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>payload</code></td>
<td>
<code><a class='link' href='#TouchInputListenerReportTouchInputRequest'>TouchInputListenerReportTouchInputRequest</a></code>
</td>
</tr>
</table>
## TouchScreen {#TouchScreen}
*Defined in [fuchsia.ui.test.input/touch.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/touch.fidl;l=13)*
<p>A tool to inject touch events into Input Pipeline.</p>
<p>Please extend as necessary.</p>
### SimulateSwipe {#TouchScreen.SimulateSwipe}
<p>Simulates a swipe that starts at <code>start_location</code> and ends at <code>end_location</code>,
with a total number of move events equal to <code>move_event_count</code>.</p>
<p>The generated pointer event stream will be:</p>
<p>DOWN + CHANGE_1 + ... + CHANGE_n + UP, where n == <code>move_event_count</code></p>
<p>Events are injected with no explicit delay in between; in other words, the
observed delay between successive events will be approximately equal to the
time required to inject a single event.</p>
#### Request {#TouchScreen.SimulateSwipe_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>payload</code></td>
<td>
<code><a class='link' href='#TouchScreenSimulateSwipeRequest'>TouchScreenSimulateSwipeRequest</a></code>
</td>
</tr>
</table>
#### Response {#TouchScreen.SimulateSwipe_Response}
&lt;EMPTY&gt;
### SimulateTap {#TouchScreen.SimulateTap}
<p>Simulates a tap at the requested location.</p>
#### Request {#TouchScreen.SimulateTap_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>payload</code></td>
<td>
<code><a class='link' href='#TouchScreenSimulateTapRequest'>TouchScreenSimulateTapRequest</a></code>
</td>
</tr>
</table>
#### Response {#TouchScreen.SimulateTap_Response}
&lt;EMPTY&gt;
## **ENUMS**
### CoordinateUnit [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#CoordinateUnit data-text="CoordinateUnit"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.test.input/registry.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/registry.fidl;l=10)*
<p>Indicates the units used to specify spatial event parameters (unless otherwise
noted).</p>
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 11</span></div>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="CoordinateUnit.DEFAULT">
<td><h3 id="CoordinateUnit.DEFAULT" class="add-link hide-from-toc">DEFAULT</h3></td>
<td><code>0</code></td>
<td><p>The physical display is mapped to a coordinate space spanning [-1000, 1000]
on both the x and y axes, where positive x extends rightward and positive y
extends downward.</p>
<p>Example: (500, -500) in the default coordinate space maps to the center of
the top-right quadrant of the physical display.</p>
</td>
</tr>
<tr id="CoordinateUnit.PHYSICAL_PIXELS">
<td><h3 id="CoordinateUnit.PHYSICAL_PIXELS" class="add-link hide-from-toc">PHYSICAL_PIXELS</h3></td>
<td><code>1</code></td>
<td><p>The physical display is mapped to a coordinate space spanning (0, 0) -
(dispaly width, display height), where positive x extends rightward and
positive y extends downward.</p>
<p>Test writers should use <code>fuchsia.ui.display.singleton.Info</code> to retrieve
the physical dimensions of the display.</p>
<p>Note that this space matches both the size AND orientation of the physical
display, so it will NOT mirror any rotations applied to the scene graph.</p>
<p>In general, test writers should NOT assume that a particular view's logical
coordinate space matches the physical coordinate space.</p>
</td>
</tr>
</table>
### MouseButton [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#MouseButton data-text="MouseButton"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.test.input/mouse.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/mouse.fidl;l=14)*
<p>Identifies various buttons on a standard mouse.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="MouseButton.FIRST">
<td><h3 id="MouseButton.FIRST" class="add-link hide-from-toc">FIRST</h3></td>
<td><code>0</code></td>
<td><p>&quot;Left&quot; mouse button.</p>
</td>
</tr>
<tr id="MouseButton.SECOND">
<td><h3 id="MouseButton.SECOND" class="add-link hide-from-toc">SECOND</h3></td>
<td><code>1</code></td>
<td><p>&quot;Right&quot; mouse button.</p>
</td>
</tr>
<tr id="MouseButton.THIRD">
<td><h3 id="MouseButton.THIRD" class="add-link hide-from-toc">THIRD</h3></td>
<td><code>2</code></td>
<td><p>&quot;Third&quot; mouse button.</p>
</td>
</tr>
</table>
### MouseEventPhase [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#MouseEventPhase data-text="MouseEventPhase"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.test.input/mouse.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/mouse.fidl;l=26)*
<p>Identifies the phase of a mouse event.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="MouseEventPhase.ADD">
<td><h3 id="MouseEventPhase.ADD" class="add-link hide-from-toc">ADD</h3></td>
<td><code>0</code></td>
<td><p>The observer has started tracking the mouse.</p>
</td>
</tr>
<tr id="MouseEventPhase.HOVER">
<td><h3 id="MouseEventPhase.HOVER" class="add-link hide-from-toc">HOVER</h3></td>
<td><code>1</code></td>
<td><p>The mouse has moved since the last ADD event, without an interceding DOWN
event.</p>
</td>
</tr>
<tr id="MouseEventPhase.DOWN">
<td><h3 id="MouseEventPhase.DOWN" class="add-link hide-from-toc">DOWN</h3></td>
<td><code>2</code></td>
<td><p>One or more mouse buttons have been pressed.</p>
</td>
</tr>
<tr id="MouseEventPhase.MOVE">
<td><h3 id="MouseEventPhase.MOVE" class="add-link hide-from-toc">MOVE</h3></td>
<td><code>3</code></td>
<td><p>The mouse has moved since the last DOWN event.</p>
</td>
</tr>
<tr id="MouseEventPhase.UP">
<td><h3 id="MouseEventPhase.UP" class="add-link hide-from-toc">UP</h3></td>
<td><code>4</code></td>
<td><p>All pressed buttons have been released.</p>
</td>
</tr>
<tr id="MouseEventPhase.WHEEL">
<td><h3 id="MouseEventPhase.WHEEL" class="add-link hide-from-toc">WHEEL</h3></td>
<td><code>5</code></td>
<td><p>The mouse wheel was manipulated.</p>
</td>
</tr>
</table>
## **TABLES**
### KeyboardInputListenerReportTextInputRequest {#KeyboardInputListenerReportTextInputRequest data-text="KeyboardInputListenerReportTextInputRequest"}
*Defined in [fuchsia.ui.test.input/text.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/text.fidl;l=56)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="KeyboardInputListenerReportTextInputRequest.text">
<td><h3 id="KeyboardInputListenerReportTextInputRequest.text" class="add-link hide-from-toc">1</h3></td>
<td><code>text</code></td>
<td>
<code>string[1024]</code>
</td>
<td><p>The content of the text input received by the reporter.</p>
</td>
</tr>
</table>
### KeyboardSimulateUsAsciiTextEntryRequest {#KeyboardSimulateUsAsciiTextEntryRequest data-text="KeyboardSimulateUsAsciiTextEntryRequest"}
*Defined in [fuchsia.ui.test.input/text.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/text.fidl;l=22)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="KeyboardSimulateUsAsciiTextEntryRequest.text">
<td><h3 id="KeyboardSimulateUsAsciiTextEntryRequest.text" class="add-link hide-from-toc">1</h3></td>
<td><code>text</code></td>
<td>
<code>string[1024]</code>
</td>
<td></td>
</tr>
</table>
### MediaButtonsDeviceSimulateButtonPressRequest {#MediaButtonsDeviceSimulateButtonPressRequest data-text="MediaButtonsDeviceSimulateButtonPressRequest"}
*Defined in [fuchsia.ui.test.input/media_buttons.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/media_buttons.fidl;l=15)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="MediaButtonsDeviceSimulateButtonPressRequest.button">
<td><h3 id="MediaButtonsDeviceSimulateButtonPressRequest.button" class="add-link hide-from-toc">1</h3></td>
<td><code>button</code></td>
<td>
<code><a class='link' href='../fuchsia.input.report/'>fuchsia.input.report</a>/<a class='link' href='../fuchsia.input.report/#ConsumerControlButton'>ConsumerControlButton</a></code>
</td>
<td><p>The button receiving the button press.</p>
</td>
</tr>
</table>
### MouseInputListenerReportMouseInputRequest {#MouseInputListenerReportMouseInputRequest data-text="MouseInputListenerReportMouseInputRequest"}
*Defined in [fuchsia.ui.test.input/mouse.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/mouse.fidl;l=87)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="MouseInputListenerReportMouseInputRequest.local_x">
<td><h3 id="MouseInputListenerReportMouseInputRequest.local_x" class="add-link hide-from-toc">1</h3></td>
<td><code>local_x</code></td>
<td>
<code>float64</code>
</td>
<td><p>The horizontal coordinate in the reporter's coordinate system.</p>
</td>
</tr>
<tr id="MouseInputListenerReportMouseInputRequest.local_y">
<td><h3 id="MouseInputListenerReportMouseInputRequest.local_y" class="add-link hide-from-toc">2</h3></td>
<td><code>local_y</code></td>
<td>
<code>float64</code>
</td>
<td><p>The vertical coordinate in the reporter's coordinate system.</p>
</td>
</tr>
<tr id="MouseInputListenerReportMouseInputRequest.time_received">
<td><h3 id="MouseInputListenerReportMouseInputRequest.time_received" class="add-link hide-from-toc">3</h3></td>
<td><code>time_received</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#time'>time</a></code>
</td>
<td><p>The monotonic time (ns) the mouse event was received by the client.
Note that this value should be used with caution. Some reporters may not be
capable of ns-level precision, but still report in ns-level units.</p>
</td>
</tr>
<tr id="MouseInputListenerReportMouseInputRequest.component_name">
<td><h3 id="MouseInputListenerReportMouseInputRequest.component_name" class="add-link hide-from-toc">4</h3></td>
<td><code>component_name</code></td>
<td>
<code>string[1024]</code>
</td>
<td><p>Name of the component to help distinguish responses from multiple components.</p>
<p>NOTE: This name is <em>independent</em> of component framework, so the reporter and
listener are free to agree on an arbitrary value.</p>
</td>
</tr>
<tr id="MouseInputListenerReportMouseInputRequest.buttons">
<td><h3 id="MouseInputListenerReportMouseInputRequest.buttons" class="add-link hide-from-toc">5</h3></td>
<td><code>buttons</code></td>
<td>
<code>vector&lt;<a class='link' href='#MouseButton'>MouseButton</a>&gt;[32]</code>
</td>
<td><p>The pressed buttons that the reporter received.</p>
</td>
</tr>
<tr id="MouseInputListenerReportMouseInputRequest.phase">
<td><h3 id="MouseInputListenerReportMouseInputRequest.phase" class="add-link hide-from-toc">6</h3></td>
<td><code>phase</code></td>
<td>
<code><a class='link' href='#MouseEventPhase'>MouseEventPhase</a></code>
</td>
<td><p>The phase of the mouse event that the reporter received.</p>
</td>
</tr>
<tr id="MouseInputListenerReportMouseInputRequest.device_pixel_ratio">
<td><h3 id="MouseInputListenerReportMouseInputRequest.device_pixel_ratio" class="add-link hide-from-toc">7</h3></td>
<td><code>device_pixel_ratio</code></td>
<td>
<code>float64</code>
</td>
<td><p>The device pixel ratio of which the reporter is aware.</p>
<p>Some reporters may account for this scale factor when converting to local
coordinates.</p>
</td>
</tr>
<tr id="MouseInputListenerReportMouseInputRequest.wheel_x_physical_pixel">
<td><h3 id="MouseInputListenerReportMouseInputRequest.wheel_x_physical_pixel" class="add-link hide-from-toc">8</h3></td>
<td><code>wheel_x_physical_pixel</code></td>
<td>
<code>float64</code>
</td>
<td><p>The horizontal wheel scroll delta in physical pixels.</p>
</td>
</tr>
<tr id="MouseInputListenerReportMouseInputRequest.wheel_y_physical_pixel">
<td><h3 id="MouseInputListenerReportMouseInputRequest.wheel_y_physical_pixel" class="add-link hide-from-toc">9</h3></td>
<td><code>wheel_y_physical_pixel</code></td>
<td>
<code>float64</code>
</td>
<td><p>The vertical wheel scroll delta in physical pixels.</p>
</td>
</tr>
</table>
### MouseSimulateMouseEventRequest {#MouseSimulateMouseEventRequest data-text="MouseSimulateMouseEventRequest"}
*Defined in [fuchsia.ui.test.input/mouse.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/mouse.fidl;l=55)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="MouseSimulateMouseEventRequest.pressed_buttons">
<td><h3 id="MouseSimulateMouseEventRequest.pressed_buttons" class="add-link hide-from-toc">1</h3></td>
<td><code>pressed_buttons</code></td>
<td>
<code>vector&lt;<a class='link' href='#MouseButton'>MouseButton</a>&gt;[32]</code>
</td>
<td><p>Set of buttons that are currently pressed.
Must NOT contain duplicates.</p>
</td>
</tr>
<tr id="MouseSimulateMouseEventRequest.movement_x">
<td><h3 id="MouseSimulateMouseEventRequest.movement_x" class="add-link hide-from-toc">2</h3></td>
<td><code>movement_x</code></td>
<td>
<code>int64</code>
</td>
<td><p>Relative X positional displacement.</p>
</td>
</tr>
<tr id="MouseSimulateMouseEventRequest.movement_y">
<td><h3 id="MouseSimulateMouseEventRequest.movement_y" class="add-link hide-from-toc">3</h3></td>
<td><code>movement_y</code></td>
<td>
<code>int64</code>
</td>
<td><p>Relative Y positional displacement.</p>
</td>
</tr>
<tr id="MouseSimulateMouseEventRequest.scroll_v_detent">
<td><h3 id="MouseSimulateMouseEventRequest.scroll_v_detent" class="add-link hide-from-toc">4</h3></td>
<td><code>scroll_v_detent</code></td>
<td>
<code>int64</code>
</td>
<td><p>Relative vertical scrolling displacement by detent.</p>
</td>
</tr>
<tr id="MouseSimulateMouseEventRequest.scroll_h_detent">
<td><h3 id="MouseSimulateMouseEventRequest.scroll_h_detent" class="add-link hide-from-toc">5</h3></td>
<td><code>scroll_h_detent</code></td>
<td>
<code>int64</code>
</td>
<td><p>Relative horizontal scrolling displacement by detent.</p>
</td>
</tr>
<tr id="MouseSimulateMouseEventRequest.scroll_v_physical_pixel">
<td><h3 id="MouseSimulateMouseEventRequest.scroll_v_physical_pixel" class="add-link hide-from-toc">6</h3></td>
<td><code>scroll_v_physical_pixel</code></td>
<td>
<code>float64</code>
</td>
<td><p>Recommended vertical scrolling displacement by physical pixel, it is
computed with accelerator, detent / mm to pixel ratio, etc.</p>
</td>
</tr>
<tr id="MouseSimulateMouseEventRequest.scroll_h_physical_pixel">
<td><h3 id="MouseSimulateMouseEventRequest.scroll_h_physical_pixel" class="add-link hide-from-toc">7</h3></td>
<td><code>scroll_h_physical_pixel</code></td>
<td>
<code>float64</code>
</td>
<td><p>Recommended horizontal scrolling displacement by physical pixel, it
is computed with accelerator, detent / mm to pixel ratio, etc.</p>
</td>
</tr>
</table>
### RegistryRegisterKeyboardRequest [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#RegistryRegisterKeyboardRequest data-text="RegistryRegisterKeyboardRequest"}
*Defined in [fuchsia.ui.test.input/registry.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/registry.fidl;l=80)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="RegistryRegisterKeyboardRequest.device">
<td><h3 id="RegistryRegisterKeyboardRequest.device" class="add-link hide-from-toc">1</h3></td>
<td><code>device</code></td>
<td>
<code>server_end&lt;<a class='link' href='#Keyboard'>Keyboard</a>&gt;</code>
</td>
<td></td>
</tr>
</table>
### RegistryRegisterMediaButtonsDeviceRequest [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#RegistryRegisterMediaButtonsDeviceRequest data-text="RegistryRegisterMediaButtonsDeviceRequest"}
*Defined in [fuchsia.ui.test.input/registry.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/registry.fidl;l=67)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="RegistryRegisterMediaButtonsDeviceRequest.device">
<td><h3 id="RegistryRegisterMediaButtonsDeviceRequest.device" class="add-link hide-from-toc">1</h3></td>
<td><code>device</code></td>
<td>
<code>server_end&lt;<a class='link' href='#MediaButtonsDevice'>MediaButtonsDevice</a>&gt;</code>
</td>
<td></td>
</tr>
</table>
### RegistryRegisterMouseRequest [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#RegistryRegisterMouseRequest data-text="RegistryRegisterMouseRequest"}
*Defined in [fuchsia.ui.test.input/registry.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/registry.fidl;l=93)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="RegistryRegisterMouseRequest.device">
<td><h3 id="RegistryRegisterMouseRequest.device" class="add-link hide-from-toc">1</h3></td>
<td><code>device</code></td>
<td>
<code>server_end&lt;<a class='link' href='#Mouse'>Mouse</a>&gt;</code>
</td>
<td></td>
</tr>
</table>
### RegistryRegisterTouchScreenRequest [resource](/fuchsia-src/reference/fidl/language/language.md#value-vs-resource){:.fidl-attribute} {#RegistryRegisterTouchScreenRequest data-text="RegistryRegisterTouchScreenRequest"}
*Defined in [fuchsia.ui.test.input/registry.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/registry.fidl;l=50)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="RegistryRegisterTouchScreenRequest.device">
<td><h3 id="RegistryRegisterTouchScreenRequest.device" class="add-link hide-from-toc">1</h3></td>
<td><code>device</code></td>
<td>
<code>server_end&lt;<a class='link' href='#TouchScreen'>TouchScreen</a>&gt;</code>
</td>
<td></td>
</tr>
<tr id="RegistryRegisterTouchScreenRequest.coordinate_unit">
<td><h3 id="RegistryRegisterTouchScreenRequest.coordinate_unit" class="add-link hide-from-toc">2</h3></td>
<td><code>coordinate_unit</code></td>
<td>
<code><a class='link' href='#CoordinateUnit'>CoordinateUnit</a></code>
</td>
<td><p>Indicates the coordinate space in which to describe touch events.</p>
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 11</span></div>
</td>
</tr>
</table>
### TouchInputListenerReportTouchInputRequest {#TouchInputListenerReportTouchInputRequest data-text="TouchInputListenerReportTouchInputRequest"}
*Defined in [fuchsia.ui.test.input/touch.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/touch.fidl;l=50)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="TouchInputListenerReportTouchInputRequest.local_x">
<td><h3 id="TouchInputListenerReportTouchInputRequest.local_x" class="add-link hide-from-toc">1</h3></td>
<td><code>local_x</code></td>
<td>
<code>float64</code>
</td>
<td><p>The horizontal coordinate, in the reporter's coordinate system.</p>
</td>
</tr>
<tr id="TouchInputListenerReportTouchInputRequest.local_y">
<td><h3 id="TouchInputListenerReportTouchInputRequest.local_y" class="add-link hide-from-toc">2</h3></td>
<td><code>local_y</code></td>
<td>
<code>float64</code>
</td>
<td><p>The vertical coordinate, in the reporter's coordinate system.</p>
</td>
</tr>
<tr id="TouchInputListenerReportTouchInputRequest.time_received">
<td><h3 id="TouchInputListenerReportTouchInputRequest.time_received" class="add-link hide-from-toc">3</h3></td>
<td><code>time_received</code></td>
<td>
<code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#time'>time</a></code>
</td>
<td><p>The monotonic time (ns) the pointer data was received by the reporter.
Note that this value should be used with caution. Some reporters may not be
capable of ns-level precision, but still report in ns-level units.</p>
</td>
</tr>
<tr id="TouchInputListenerReportTouchInputRequest.device_pixel_ratio">
<td><h3 id="TouchInputListenerReportTouchInputRequest.device_pixel_ratio" class="add-link hide-from-toc">4</h3></td>
<td><code>device_pixel_ratio</code></td>
<td>
<code>float64</code>
</td>
<td><p>The number of physical pixels, per logical pixel, as reported by the reporter.</p>
</td>
</tr>
<tr id="TouchInputListenerReportTouchInputRequest.component_name">
<td><h3 id="TouchInputListenerReportTouchInputRequest.component_name" class="add-link hide-from-toc">5</h3></td>
<td><code>component_name</code></td>
<td>
<code>string[1024]</code>
</td>
<td><p>Name of the component to help distinguish responses from multiple components.</p>
<p>NOTE: This name is <em>independent</em> of component framework, so the reporter and
listener are free to agree on an arbitrary value.</p>
</td>
</tr>
</table>
### TouchScreenSimulateSwipeRequest {#TouchScreenSimulateSwipeRequest data-text="TouchScreenSimulateSwipeRequest"}
*Defined in [fuchsia.ui.test.input/touch.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/touch.fidl;l=31)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="TouchScreenSimulateSwipeRequest.start_location">
<td><h3 id="TouchScreenSimulateSwipeRequest.start_location" class="add-link hide-from-toc">1</h3></td>
<td><code>start_location</code></td>
<td>
<code><a class='link' href='../fuchsia.math/'>fuchsia.math</a>/<a class='link' href='../fuchsia.math/#Vec'>Vec</a></code>
</td>
<td><p>Starting location of the swipe, in the coordinate units specified during
registration.</p>
</td>
</tr>
<tr id="TouchScreenSimulateSwipeRequest.end_location">
<td><h3 id="TouchScreenSimulateSwipeRequest.end_location" class="add-link hide-from-toc">2</h3></td>
<td><code>end_location</code></td>
<td>
<code><a class='link' href='../fuchsia.math/'>fuchsia.math</a>/<a class='link' href='../fuchsia.math/#Vec'>Vec</a></code>
</td>
<td><p>End location of the swipe, in the coordinate units specified during
registration.</p>
</td>
</tr>
<tr id="TouchScreenSimulateSwipeRequest.move_event_count">
<td><h3 id="TouchScreenSimulateSwipeRequest.move_event_count" class="add-link hide-from-toc">3</h3></td>
<td><code>move_event_count</code></td>
<td>
<code>uint32</code>
</td>
<td><p>Number of move events in the swipe.</p>
</td>
</tr>
</table>
### TouchScreenSimulateTapRequest {#TouchScreenSimulateTapRequest data-text="TouchScreenSimulateTapRequest"}
*Defined in [fuchsia.ui.test.input/touch.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/touch.fidl;l=15)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="TouchScreenSimulateTapRequest.tap_location">
<td><h3 id="TouchScreenSimulateTapRequest.tap_location" class="add-link hide-from-toc">1</h3></td>
<td><code>tap_location</code></td>
<td>
<code><a class='link' href='../fuchsia.math/'>fuchsia.math</a>/<a class='link' href='../fuchsia.math/#Vec'>Vec</a></code>
</td>
<td><p>Location of the tap event, in the coordinate units specified during
registration.</p>
</td>
</tr>
</table>
## **CONSTANTS**
<table>
<tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr>
<tr id="MOUSE_MAX_NUM_BUTTONS">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.test.input/mouse.fidl;l=11">MOUSE_MAX_NUM_BUTTONS</a></td>
<td>
<code>32</code>
</td>
<td><code>uint32</code></td>
<td><p>A hardcoded number of max mouse buttons. This should be increased in the future
if we ever see mice with more buttons.</p>
</td>
</tr>
</table>