blob: 4987e3c608ea068701f90b207fd768691b2d4281 [file] [log] [blame] [view]
<link rel="stylesheet" href="../style.css" />
[TOC]
# fuchsia.ui.input
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 7</span></div>
## **PROTOCOLS**
## ImeService {#ImeService}
*Defined in [fuchsia.ui.input/ime_service.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/ime_service.fidl;l=8)*
<p>The service provided by an IME</p>
### GetInputMethodEditor {#ImeService.GetInputMethodEditor}
#### Request {#ImeService.GetInputMethodEditor_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>keyboard_type</code></td>
<td>
<code><a class='link' href='#KeyboardType'>KeyboardType</a></code>
</td>
</tr>
<tr>
<td><code>action</code></td>
<td>
<code><a class='link' href='#InputMethodAction'>InputMethodAction</a></code>
</td>
</tr>
<tr>
<td><code>initial_state</code></td>
<td>
<code><a class='link' href='#TextInputState'>TextInputState</a></code>
</td>
</tr>
<tr>
<td><code>client</code></td>
<td>
<code><a class='link' href='#InputMethodEditorClient'>InputMethodEditorClient</a></code>
</td>
</tr>
<tr>
<td><code>editor</code></td>
<td>
<code>request&lt;<a class='link' href='#InputMethodEditor'>InputMethodEditor</a>&gt;</code>
</td>
</tr>
</table>
### HideKeyboard {#ImeService.HideKeyboard}
#### Request {#ImeService.HideKeyboard_Request}
&lt;EMPTY&gt;
### ShowKeyboard {#ImeService.ShowKeyboard}
#### Request {#ImeService.ShowKeyboard_Request}
&lt;EMPTY&gt;
## InputDevice {#InputDevice}
*Defined in [fuchsia.ui.input/input_device_registry.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_device_registry.fidl;l=19)*
### DispatchReport {#InputDevice.DispatchReport}
<p>Dispatch an <code>InputReport</code> from the device <code>token</code></p>
#### Request {#InputDevice.DispatchReport_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>report</code></td>
<td>
<code><a class='link' href='#InputReport'>InputReport</a></code>
</td>
</tr>
</table>
## InputDeviceRegistry {#InputDeviceRegistry}
*Defined in [fuchsia.ui.input/input_device_registry.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_device_registry.fidl;l=11)*
<p>Service to receive input events.</p>
<p>Input devices can describe their capabilities using <code>DeviceDescriptor</code>
and register themselves with the <code>InputDeviceRegistry</code>.</p>
### RegisterDevice {#InputDeviceRegistry.RegisterDevice}
<p>Register a device with the capabilities described by <code>DeviceDescriptor</code></p>
#### Request {#InputDeviceRegistry.RegisterDevice_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>descriptor</code></td>
<td>
<code><a class='link' href='#DeviceDescriptor'>DeviceDescriptor</a></code>
</td>
</tr>
<tr>
<td><code>input_device</code></td>
<td>
<code>request&lt;<a class='link' href='#InputDevice'>InputDevice</a>&gt;</code>
</td>
</tr>
</table>
## InputMethodEditor {#InputMethodEditor}
*Defined in [fuchsia.ui.input/text_input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/text_input.fidl;l=78)*
<p>A interface for interacting with a text input control.</p>
### DispatchKey3 {#InputMethodEditor.DispatchKey3}
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 8</span></div>
#### Request {#InputMethodEditor.DispatchKey3_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>event</code></td>
<td>
<code><a class='link' href='../fuchsia.ui.input3/'>fuchsia.ui.input3</a>/<a class='link' href='../fuchsia.ui.input3/#KeyEvent'>KeyEvent</a></code>
</td>
</tr>
</table>
#### Response {#InputMethodEditor.DispatchKey3_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>handled</code></td>
<td>
<code>bool</code>
</td>
</tr>
</table>
### Hide {#InputMethodEditor.Hide}
#### Request {#InputMethodEditor.Hide_Request}
&lt;EMPTY&gt;
### InjectInput {#InputMethodEditor.InjectInput}
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Deprecated: 8</span></div>
#### Request {#InputMethodEditor.InjectInput_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>event</code></td>
<td>
<code><a class='link' href='#InputEvent'>InputEvent</a></code>
</td>
</tr>
</table>
### SetKeyboardType {#InputMethodEditor.SetKeyboardType}
#### Request {#InputMethodEditor.SetKeyboardType_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>keyboard_type</code></td>
<td>
<code><a class='link' href='#KeyboardType'>KeyboardType</a></code>
</td>
</tr>
</table>
### SetState {#InputMethodEditor.SetState}
#### Request {#InputMethodEditor.SetState_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>state</code></td>
<td>
<code><a class='link' href='#TextInputState'>TextInputState</a></code>
</td>
</tr>
</table>
### Show {#InputMethodEditor.Show}
#### Request {#InputMethodEditor.Show_Request}
&lt;EMPTY&gt;
## InputMethodEditorClient {#InputMethodEditorClient}
*Defined in [fuchsia.ui.input/text_input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/text_input.fidl;l=108)*
<p>An interface to receive information from <code>TextInputService</code>.</p>
### DidUpdateState {#InputMethodEditorClient.DidUpdateState}
#### Request {#InputMethodEditorClient.DidUpdateState_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>state</code></td>
<td>
<code><a class='link' href='#TextInputState'>TextInputState</a></code>
</td>
</tr>
<tr>
<td><code>event</code></td>
<td>
<code><a class='link' href='#InputEvent'>InputEvent</a>?</code>
</td>
</tr>
</table>
### OnAction {#InputMethodEditorClient.OnAction}
#### Request {#InputMethodEditorClient.OnAction_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>action</code></td>
<td>
<code><a class='link' href='#InputMethodAction'>InputMethodAction</a></code>
</td>
</tr>
</table>
## PointerCaptureListener {#PointerCaptureListener}
*Defined in [fuchsia.ui.input/pointer_capture.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/pointer_capture.fidl;l=10)*
<p>A method of obtaining global pointer events, regardless of view focus.
DEPRECATED: Do not add new uses of this protocol.</p>
### OnPointerEvent {#PointerCaptureListener.OnPointerEvent}
#### Request {#PointerCaptureListener.OnPointerEvent_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>event</code></td>
<td>
<code><a class='link' href='#PointerEvent'>PointerEvent</a></code>
</td>
</tr>
</table>
#### Response {#PointerCaptureListener.OnPointerEvent_Response}
&lt;EMPTY&gt;
## PointerCaptureListenerRegistry {#PointerCaptureListenerRegistry}
*Defined in [fuchsia.ui.input/pointer_capture.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/pointer_capture.fidl;l=20)*
<p>Injects a listener protocol, along with a ViewRef that defines the coordinate space of the
captured pointer events.
DEPRECATED: Do not add new uses of this protocol.</p>
### RegisterListener {#PointerCaptureListenerRegistry.RegisterListener}
<p>This protocol will be subsumed by gesture disambiguation.</p>
#### Request {#PointerCaptureListenerRegistry.RegisterListener_Request}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>listener</code></td>
<td>
<code><a class='link' href='#PointerCaptureListener'>PointerCaptureListener</a></code>
</td>
</tr>
<tr>
<td><code>view_ref</code></td>
<td>
<code><a class='link' href='../fuchsia.ui.views/'>fuchsia.ui.views</a>/<a class='link' href='../fuchsia.ui.views/#ViewRef'>ViewRef</a></code>
</td>
</tr>
</table>
#### Response {#PointerCaptureListenerRegistry.RegisterListener_Response}
<table>
<tr><th>Name</th><th>Type</th></tr>
<tr>
<td><code>success</code></td>
<td>
<code>bool</code>
</td>
</tr>
</table>
## **STRUCTS**
### Axis {#Axis data-text="Axis"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=34)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Axis.range">
<td><code>range</code></td>
<td>
<code><a class='link' href='#Range'>Range</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Axis.resolution">
<td><code>resolution</code></td>
<td>
<code>int32</code>
</td>
<td></td>
<td>1</td>
</tr>
<tr id="Axis.scale">
<td><code>scale</code></td>
<td>
<code><a class='link' href='#AxisScale'>AxisScale</a></code>
</td>
<td></td>
<td><a class='link' href='#AxisScale.LINEAR'>AxisScale.LINEAR</a></td>
</tr>
</table>
### AxisF {#AxisF data-text="AxisF"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=42)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="AxisF.range">
<td><code>range</code></td>
<td>
<code><a class='link' href='#RangeF'>RangeF</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="AxisF.resolution">
<td><code>resolution</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>1</td>
</tr>
<tr id="AxisF.scale">
<td><code>scale</code></td>
<td>
<code><a class='link' href='#AxisScale'>AxisScale</a></code>
</td>
<td></td>
<td><a class='link' href='#AxisScale.LINEAR'>AxisScale.LINEAR</a></td>
</tr>
</table>
### DeviceDescriptor {#DeviceDescriptor data-text="DeviceDescriptor"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=248)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="DeviceDescriptor.device_info">
<td><code>device_info</code></td>
<td>
<code><a class='link' href='#DeviceInfo'>DeviceInfo</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="DeviceDescriptor.keyboard">
<td><code>keyboard</code></td>
<td>
<code><a class='link' href='#KeyboardDescriptor'>KeyboardDescriptor</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="DeviceDescriptor.media_buttons">
<td><code>media_buttons</code></td>
<td>
<code><a class='link' href='#MediaButtonsDescriptor'>MediaButtonsDescriptor</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="DeviceDescriptor.mouse">
<td><code>mouse</code></td>
<td>
<code><a class='link' href='#MouseDescriptor'>MouseDescriptor</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="DeviceDescriptor.stylus">
<td><code>stylus</code></td>
<td>
<code><a class='link' href='#StylusDescriptor'>StylusDescriptor</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="DeviceDescriptor.touchscreen">
<td><code>touchscreen</code></td>
<td>
<code><a class='link' href='#TouchscreenDescriptor'>TouchscreenDescriptor</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="DeviceDescriptor.sensor">
<td><code>sensor</code></td>
<td>
<code><a class='link' href='#SensorDescriptor'>SensorDescriptor</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### DeviceInfo {#DeviceInfo data-text="DeviceInfo"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=240)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="DeviceInfo.vendor_id">
<td><code>vendor_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="DeviceInfo.product_id">
<td><code>product_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="DeviceInfo.version">
<td><code>version</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="DeviceInfo.name">
<td><code>name</code></td>
<td>
<code>string</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### FocusEvent {#FocusEvent data-text="FocusEvent"}
*Defined in [fuchsia.ui.input/input_events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_events.fidl;l=147)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="FocusEvent.event_time">
<td><code>event_time</code></td>
<td>
<code>uint64</code>
</td>
<td><p>Time the event was delivered. The time is in nanoseconds and corresponds
to the monotonic time as determined by the zx_clock_get_monotonic syscall.</p>
</td>
<td>No default</td>
</tr>
<tr id="FocusEvent.focused">
<td><code>focused</code></td>
<td>
<code>bool</code>
</td>
<td><p>Whether the view has gained input focused or not.</p>
</td>
<td>No default</td>
</tr>
</table>
### InputReport {#InputReport data-text="InputReport"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=259)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="InputReport.event_time">
<td><code>event_time</code></td>
<td>
<code>uint64</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="InputReport.keyboard">
<td><code>keyboard</code></td>
<td>
<code><a class='link' href='#KeyboardReport'>KeyboardReport</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="InputReport.media_buttons">
<td><code>media_buttons</code></td>
<td>
<code><a class='link' href='#MediaButtonsReport'>MediaButtonsReport</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="InputReport.mouse">
<td><code>mouse</code></td>
<td>
<code><a class='link' href='#MouseReport'>MouseReport</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="InputReport.stylus">
<td><code>stylus</code></td>
<td>
<code><a class='link' href='#StylusReport'>StylusReport</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="InputReport.touchscreen">
<td><code>touchscreen</code></td>
<td>
<code><a class='link' href='#TouchscreenReport'>TouchscreenReport</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="InputReport.sensor">
<td><code>sensor</code></td>
<td>
<code><a class='link' href='#SensorReport'>SensorReport</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="InputReport.trace_id">
<td><code>trace_id</code></td>
<td>
<code>uint64</code>
</td>
<td></td>
<td>0</td>
</tr>
</table>
### KeyboardDescriptor {#KeyboardDescriptor data-text="KeyboardDescriptor"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=60)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="KeyboardDescriptor.keys">
<td><code>keys</code></td>
<td>
<code>vector&lt;uint32&gt;</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### KeyboardEvent {#KeyboardEvent data-text="KeyboardEvent"}
*Defined in [fuchsia.ui.input/input_events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_events.fidl;l=31)*
<p><code>KeyboardEvent</code> represents event generated by a user's interaction with a
keyboard.</p>
<p>Those events are triggered by distinct pressed state changes of the keys.</p>
<p>The state transitions should be as follows:
PRESSED -&gt; (REPEAT -&gt;) RELEASED
or
PRESSED -&gt; (REPEAT -&gt;) CANCELLED</p>
<p>The input system will repeat those events automatically when a code_point is
available.</p>
<p>DEPRECATED: Will be removed in favor of <code>fuchsia.ui.input.KeyEvent</code>.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="KeyboardEvent.event_time">
<td><code>event_time</code></td>
<td>
<code>uint64</code>
</td>
<td><p>Time the event was delivered. The time is in nanoseconds and corresponds
to the monotonic time as determined by the zx_clock_get_monotonic syscall.</p>
</td>
<td>No default</td>
</tr>
<tr id="KeyboardEvent.device_id">
<td><code>device_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="KeyboardEvent.phase">
<td><code>phase</code></td>
<td>
<code><a class='link' href='#KeyboardEventPhase'>KeyboardEventPhase</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="KeyboardEvent.hid_usage">
<td><code>hid_usage</code></td>
<td>
<code>uint32</code>
</td>
<td><p>Keyboard HID Usage
See https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf</p>
</td>
<td>No default</td>
</tr>
<tr id="KeyboardEvent.code_point">
<td><code>code_point</code></td>
<td>
<code>uint32</code>
</td>
<td><p>The unicode code point represented by this key event, if any.
Dead keys are represented as Unicode combining characters.</p>
<p>If there is no unicode code point, this value is zero.</p>
</td>
<td>No default</td>
</tr>
<tr id="KeyboardEvent.modifiers">
<td><code>modifiers</code></td>
<td>
<code>uint32</code>
</td>
<td><p>Key modifiers as defined by the different kModifier constants such as
<code>kModifierCapsLock</code> currently pressed</p>
</td>
<td>No default</td>
</tr>
</table>
### KeyboardReport {#KeyboardReport data-text="KeyboardReport"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=66)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="KeyboardReport.pressed_keys">
<td><code>pressed_keys</code></td>
<td>
<code>vector&lt;uint32&gt;</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### MediaButtonsDescriptor {#MediaButtonsDescriptor data-text="MediaButtonsDescriptor"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=51)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="MediaButtonsDescriptor.buttons">
<td><code>buttons</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### MediaButtonsReport {#MediaButtonsReport data-text="MediaButtonsReport"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=229)*
<p><code>MediaButtonsReport</code> describes the media buttons event delivered from the event stream.
Each bool in the report represents a single button where true means the button
is being pressed. A single report should be sent on every state change.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="MediaButtonsReport.volume_up">
<td><code>volume_up</code></td>
<td>
<code>bool</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="MediaButtonsReport.volume_down">
<td><code>volume_down</code></td>
<td>
<code>bool</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="MediaButtonsReport.mic_mute">
<td><code>mic_mute</code></td>
<td>
<code>bool</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="MediaButtonsReport.reset">
<td><code>reset</code></td>
<td>
<code>bool</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="MediaButtonsReport.pause">
<td><code>pause</code></td>
<td>
<code>bool</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="MediaButtonsReport.camera_disable">
<td><code>camera_disable</code></td>
<td>
<code>bool</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### MouseDescriptor {#MouseDescriptor data-text="MouseDescriptor"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=75)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="MouseDescriptor.rel_x">
<td><code>rel_x</code></td>
<td>
<code><a class='link' href='#Axis'>Axis</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="MouseDescriptor.rel_y">
<td><code>rel_y</code></td>
<td>
<code><a class='link' href='#Axis'>Axis</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="MouseDescriptor.vscroll">
<td><code>vscroll</code></td>
<td>
<code><a class='link' href='#Axis'>Axis</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="MouseDescriptor.hscroll">
<td><code>hscroll</code></td>
<td>
<code><a class='link' href='#Axis'>Axis</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="MouseDescriptor.buttons">
<td><code>buttons</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### MouseReport {#MouseReport data-text="MouseReport"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=92)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="MouseReport.rel_x">
<td><code>rel_x</code></td>
<td>
<code>int32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="MouseReport.rel_y">
<td><code>rel_y</code></td>
<td>
<code>int32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="MouseReport.rel_hscroll">
<td><code>rel_hscroll</code></td>
<td>
<code>int32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="MouseReport.rel_vscroll">
<td><code>rel_vscroll</code></td>
<td>
<code>int32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="MouseReport.pressed_buttons">
<td><code>pressed_buttons</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### PointerEvent {#PointerEvent data-text="PointerEvent"}
*Defined in [fuchsia.ui.input/input_events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_events.fidl;l=114)*
<p>Pointers represent raw data about the user's interaction with the screen.</p>
<p>The state transitions should be as follows:
ADD (-&gt; HOVER) -&gt; DOWN -&gt; MOVE -&gt; UP (-&gt; HOVER) -&gt; REMOVE</p>
<p>At any point after the initial ADD, a transition to CANCEL is also possible.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="PointerEvent.event_time">
<td><code>event_time</code></td>
<td>
<code>uint64</code>
</td>
<td><p>Time the event was delivered. The time is in nanoseconds and corresponds
to the monotonic time as determined by the zx_clock_get_monotonic syscall.</p>
</td>
<td>No default</td>
</tr>
<tr id="PointerEvent.device_id">
<td><code>device_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="PointerEvent.pointer_id">
<td><code>pointer_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="PointerEvent.type">
<td><code>type</code></td>
<td>
<code><a class='link' href='#PointerEventType'>PointerEventType</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="PointerEvent.phase">
<td><code>phase</code></td>
<td>
<code><a class='link' href='#PointerEventPhase'>PointerEventPhase</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="PointerEvent.x">
<td><code>x</code></td>
<td>
<code>float32</code>
</td>
<td><p><code>x</code> and <code>y</code> are in the coordinate system of the View.</p>
</td>
<td>No default</td>
</tr>
<tr id="PointerEvent.y">
<td><code>y</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="PointerEvent.radius_major">
<td><code>radius_major</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>0</td>
</tr>
<tr id="PointerEvent.radius_minor">
<td><code>radius_minor</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>0</td>
</tr>
<tr id="PointerEvent.buttons">
<td><code>buttons</code></td>
<td>
<code>uint32</code>
</td>
<td><p>Currently pressed buttons as defined the kButton constants such as
<code>kMousePrimaryButton</code></p>
</td>
<td>No default</td>
</tr>
</table>
### Range {#Range data-text="Range"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=18)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Range.min">
<td><code>min</code></td>
<td>
<code>int32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Range.max">
<td><code>max</code></td>
<td>
<code>int32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### RangeF {#RangeF data-text="RangeF"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=23)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="RangeF.min">
<td><code>min</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="RangeF.max">
<td><code>max</code></td>
<td>
<code>float32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SendKeyboardInputCmd {#SendKeyboardInputCmd data-text="SendKeyboardInputCmd"}
*Defined in [fuchsia.ui.input/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/commands.fidl;l=19)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SendKeyboardInputCmd.compositor_id">
<td><code>compositor_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SendKeyboardInputCmd.keyboard_event">
<td><code>keyboard_event</code></td>
<td>
<code><a class='link' href='#KeyboardEvent'>KeyboardEvent</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SendPointerInputCmd {#SendPointerInputCmd data-text="SendPointerInputCmd"}
*Defined in [fuchsia.ui.input/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/commands.fidl;l=24)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SendPointerInputCmd.compositor_id">
<td><code>compositor_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SendPointerInputCmd.pointer_event">
<td><code>pointer_event</code></td>
<td>
<code><a class='link' href='#PointerEvent'>PointerEvent</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SensorDescriptor {#SensorDescriptor data-text="SensorDescriptor"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=201)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SensorDescriptor.type">
<td><code>type</code></td>
<td>
<code><a class='link' href='#SensorType'>SensorType</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SensorDescriptor.loc">
<td><code>loc</code></td>
<td>
<code><a class='link' href='#SensorLocation'>SensorLocation</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SensorDescriptor.min_sampling_freq">
<td><code>min_sampling_freq</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SensorDescriptor.max_sampling_freq">
<td><code>max_sampling_freq</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SensorDescriptor.fifo_max_event_count">
<td><code>fifo_max_event_count</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SensorDescriptor.phys_min">
<td><code>phys_min</code></td>
<td>
<code>int32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="SensorDescriptor.phys_max">
<td><code>phys_max</code></td>
<td>
<code>int32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetHardKeyboardDeliveryCmd {#SetHardKeyboardDeliveryCmd data-text="SetHardKeyboardDeliveryCmd"}
*Defined in [fuchsia.ui.input/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/commands.fidl;l=35)*
<p>Typically, clients should receive text inputs from an IME.</p>
<p>For cases where no IME mediation is desired (such as a game application),
this command requests Scenic to deliver hard keyboard events to the client.</p>
<p>By default, Scenic will <em>not</em> deliver hard keyboard events to a client.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetHardKeyboardDeliveryCmd.delivery_request">
<td><code>delivery_request</code></td>
<td>
<code>bool</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### SetParallelDispatchCmd {#SetParallelDispatchCmd data-text="SetParallelDispatchCmd"}
*Defined in [fuchsia.ui.input/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/commands.fidl;l=40)*
<p>Obsolete. This command is a no-op.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="SetParallelDispatchCmd.parallel_dispatch">
<td><code>parallel_dispatch</code></td>
<td>
<code>bool</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### StylusDescriptor {#StylusDescriptor data-text="StylusDescriptor"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=108)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="StylusDescriptor.x">
<td><code>x</code></td>
<td>
<code><a class='link' href='#Axis'>Axis</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="StylusDescriptor.y">
<td><code>y</code></td>
<td>
<code><a class='link' href='#Axis'>Axis</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="StylusDescriptor.pressure">
<td><code>pressure</code></td>
<td>
<code><a class='link' href='#Axis'>Axis</a>?</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="StylusDescriptor.is_invertible">
<td><code>is_invertible</code></td>
<td>
<code>bool</code>
</td>
<td></td>
<td>false</td>
</tr>
<tr id="StylusDescriptor.buttons">
<td><code>buttons</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### StylusReport {#StylusReport data-text="StylusReport"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=124)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="StylusReport.x">
<td><code>x</code></td>
<td>
<code>int32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="StylusReport.y">
<td><code>y</code></td>
<td>
<code>int32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="StylusReport.pressure">
<td><code>pressure</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="StylusReport.is_in_contact">
<td><code>is_in_contact</code></td>
<td>
<code>bool</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="StylusReport.in_range">
<td><code>in_range</code></td>
<td>
<code>bool</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="StylusReport.is_inverted">
<td><code>is_inverted</code></td>
<td>
<code>bool</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="StylusReport.pressed_buttons">
<td><code>pressed_buttons</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### TextInputState {#TextInputState data-text="TextInputState"}
*Defined in [fuchsia.ui.input/text_input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/text_input.fidl;l=63)*
<p>The current text, selection, and composing state for editing a run of text.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="TextInputState.revision">
<td><code>revision</code></td>
<td>
<code>uint32</code>
</td>
<td><p>Current state revision to avoid race conditions.</p>
</td>
<td>No default</td>
</tr>
<tr id="TextInputState.text">
<td><code>text</code></td>
<td>
<code>string</code>
</td>
<td><p>The current text being edited.</p>
</td>
<td>No default</td>
</tr>
<tr id="TextInputState.selection">
<td><code>selection</code></td>
<td>
<code><a class='link' href='#TextSelection'>TextSelection</a></code>
</td>
<td><p>The range of text that is currently selected.</p>
</td>
<td>No default</td>
</tr>
<tr id="TextInputState.composing">
<td><code>composing</code></td>
<td>
<code><a class='link' href='#TextRange'>TextRange</a></code>
</td>
<td><p>The range of text that is still being composed.</p>
</td>
<td>No default</td>
</tr>
</table>
### TextRange {#TextRange data-text="TextRange"}
*Defined in [fuchsia.ui.input/text_editing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/text_editing.fidl;l=33)*
<p>A range of characters in a string of text. Although strings in FIDL's wire
format are UTF-8 encoded, these indices are measured in UTF-16 code units
for legacy reasons. These text input APIs will eventually be replaced by
fuchsia.ui.text, which uses code points instead.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="TextRange.start">
<td><code>start</code></td>
<td>
<code>int64</code>
</td>
<td><p>The index of the first UTF-16 code unit in the range.</p>
<p>If <code>start</code> and <code>end</code> are both -1, the text range is empty.</p>
</td>
<td>-1</td>
</tr>
<tr id="TextRange.end">
<td><code>end</code></td>
<td>
<code>int64</code>
</td>
<td><p>The next index after the last UTF-16 code unit in this range.</p>
<p>If <code>start</code> and <code>end</code> are both -1, the text range is empty.</p>
</td>
<td>-1</td>
</tr>
</table>
### TextSelection {#TextSelection data-text="TextSelection"}
*Defined in [fuchsia.ui.input/text_editing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/text_editing.fidl;l=54)*
<p>A range of text that represents a selection. Although strings in FIDL's wire
format are UTF-8 encoded, these indices are measured in UTF-16 code units
for legacy reasons. These text input APIs will eventually be replaced by
fuchsia.ui.text, which uses code points instead.</p>
<p>Text selection is always directional. Direction should be determined by
comparing base and extent.</p>
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="TextSelection.base">
<td><code>base</code></td>
<td>
<code>int64</code>
</td>
<td><p>The offset at which the selection originates, as measured in UTF-16 code units.</p>
<p>Might be larger than, smaller than, or equal to extent.</p>
</td>
<td>No default</td>
</tr>
<tr id="TextSelection.extent">
<td><code>extent</code></td>
<td>
<code>int64</code>
</td>
<td><p>The offset at which the selection terminates, as measured in UTF-16 code units.</p>
<p>When the user uses the arrow keys to adjust the selection, this is the
value that changes. Similarly, if the current theme paints a caret on one
side of the selection, this is the location at which to paint the caret.</p>
<p>Might be larger than, smaller than, or equal to base.</p>
</td>
<td>No default</td>
</tr>
<tr id="TextSelection.affinity">
<td><code>affinity</code></td>
<td>
<code><a class='link' href='#TextAffinity'>TextAffinity</a></code>
</td>
<td><p>If the text range is collapsed and has more than one visual location
(e.g., occurs at a line break), which of the two locations to use when
painting the caret.</p>
</td>
<td>No default</td>
</tr>
</table>
### Touch {#Touch data-text="Touch"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=159)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="Touch.finger_id">
<td><code>finger_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Touch.x">
<td><code>x</code></td>
<td>
<code>int32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Touch.y">
<td><code>y</code></td>
<td>
<code>int32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Touch.width">
<td><code>width</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="Touch.height">
<td><code>height</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### TouchscreenDescriptor {#TouchscreenDescriptor data-text="TouchscreenDescriptor"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=150)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="TouchscreenDescriptor.x">
<td><code>x</code></td>
<td>
<code><a class='link' href='#Axis'>Axis</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="TouchscreenDescriptor.y">
<td><code>y</code></td>
<td>
<code><a class='link' href='#Axis'>Axis</a></code>
</td>
<td></td>
<td>No default</td>
</tr>
<tr id="TouchscreenDescriptor.max_finger_id">
<td><code>max_finger_id</code></td>
<td>
<code>uint32</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
### TouchscreenReport {#TouchscreenReport data-text="TouchscreenReport"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=176)*
<table>
<tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr>
<tr id="TouchscreenReport.touches">
<td><code>touches</code></td>
<td>
<code>vector&lt;<a class='link' href='#Touch'>Touch</a>&gt;</code>
</td>
<td></td>
<td>No default</td>
</tr>
</table>
## **ENUMS**
### AxisScale [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#AxisScale data-text="AxisScale"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=28)*
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="AxisScale.LINEAR">
<td><h3 id="AxisScale.LINEAR" class="add-link hide-from-toc">LINEAR</h3></td>
<td><code>0</code></td>
<td></td>
</tr>
<tr id="AxisScale.LOGARITHMIC">
<td><h3 id="AxisScale.LOGARITHMIC" class="add-link hide-from-toc">LOGARITHMIC</h3></td>
<td><code>1</code></td>
<td></td>
</tr>
</table>
### InputMethodAction [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#InputMethodAction data-text="InputMethodAction"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.input/text_input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/text_input.fidl;l=36)*
<p>Determines what happens if the &quot;action&quot; key is pressed on the keyboard,
typically would either be the &quot;Enter&quot; key on a physical keyboard, or an
action button on a virtual keyboard, which is usually placed where Enter
would be, but with a custom label.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="InputMethodAction.UNSPECIFIED">
<td><h3 id="InputMethodAction.UNSPECIFIED" class="add-link hide-from-toc">UNSPECIFIED</h3></td>
<td><code>0</code></td>
<td><p>The method action was not specified at all.</p>
</td>
</tr>
<tr id="InputMethodAction.NONE">
<td><h3 id="InputMethodAction.NONE" class="add-link hide-from-toc">NONE</h3></td>
<td><code>1</code></td>
<td><p>No special action is requested.</p>
</td>
</tr>
<tr id="InputMethodAction.GO">
<td><h3 id="InputMethodAction.GO" class="add-link hide-from-toc">GO</h3></td>
<td><code>2</code></td>
<td><p>The action is &quot;Go&quot;, e.g. execute a command.</p>
</td>
</tr>
<tr id="InputMethodAction.SEARCH">
<td><h3 id="InputMethodAction.SEARCH" class="add-link hide-from-toc">SEARCH</h3></td>
<td><code>3</code></td>
<td><p>The action is to invoke a search.</p>
</td>
</tr>
<tr id="InputMethodAction.SEND">
<td><h3 id="InputMethodAction.SEND" class="add-link hide-from-toc">SEND</h3></td>
<td><code>4</code></td>
<td><p>The action is to invoke &quot;send&quot;, e.g. if this is an email or a SMS
message.</p>
</td>
</tr>
<tr id="InputMethodAction.NEXT">
<td><h3 id="InputMethodAction.NEXT" class="add-link hide-from-toc">NEXT</h3></td>
<td><code>5</code></td>
<td><p>The action is to move to the next field in the focus sequence.</p>
</td>
</tr>
<tr id="InputMethodAction.DONE">
<td><h3 id="InputMethodAction.DONE" class="add-link hide-from-toc">DONE</h3></td>
<td><code>6</code></td>
<td><p>The action is to end the text editing.</p>
</td>
</tr>
<tr id="InputMethodAction.PREVIOUS">
<td><h3 id="InputMethodAction.PREVIOUS" class="add-link hide-from-toc">PREVIOUS</h3></td>
<td><code>7</code></td>
<td><p>The action is to move to the previous field in the focus sequence.</p>
</td>
</tr>
<tr id="InputMethodAction.NEWLINE">
<td><h3 id="InputMethodAction.NEWLINE" class="add-link hide-from-toc">NEWLINE</h3></td>
<td><code>8</code></td>
<td><p>Pressing the action key inserts a new line into the text field. In
contrast to other values, which all stop editing and invoke a specific
action.</p>
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 8</span></div></td>
</tr>
</table>
### KeyboardEventPhase [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#KeyboardEventPhase data-text="KeyboardEventPhase"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.input/input_events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_events.fidl;l=6)*
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="KeyboardEventPhase.PRESSED">
<td><h3 id="KeyboardEventPhase.PRESSED" class="add-link hide-from-toc">PRESSED</h3></td>
<td><code>0</code></td>
<td><p>When key is pressed down.</p>
</td>
</tr>
<tr id="KeyboardEventPhase.RELEASED">
<td><h3 id="KeyboardEventPhase.RELEASED" class="add-link hide-from-toc">RELEASED</h3></td>
<td><code>1</code></td>
<td><p>When key is released.</p>
</td>
</tr>
<tr id="KeyboardEventPhase.CANCELLED">
<td><h3 id="KeyboardEventPhase.CANCELLED" class="add-link hide-from-toc">CANCELLED</h3></td>
<td><code>2</code></td>
<td><p>This key <code>PRESSED</code> is not directed to this input client anymore.</p>
</td>
</tr>
<tr id="KeyboardEventPhase.REPEAT">
<td><h3 id="KeyboardEventPhase.REPEAT" class="add-link hide-from-toc">REPEAT</h3></td>
<td><code>3</code></td>
<td><p>Whether this is an automatically generated key repeat</p>
</td>
</tr>
</table>
### KeyboardType [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#KeyboardType data-text="KeyboardType"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.input/text_input.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/text_input.fidl;l=15)*
<p>Requests a specific keyboard type from the text editing subsystem.</p>
<p>This is most relevant for virtual keyboards which have some leeway in how
the keyboard is presented to the user, as well as which input is acceptable.</p>
<p>For example, a <code>NUMBER</code> keyboard type may only allow decimal numbers to be
entered. In addition, a virtual keyboard might only show a numeric keypad
for text entry.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="KeyboardType.TEXT">
<td><h3 id="KeyboardType.TEXT" class="add-link hide-from-toc">TEXT</h3></td>
<td><code>0</code></td>
<td><p>Single-line text fields only. Use MULTILINE below for multiline text.</p>
</td>
</tr>
<tr id="KeyboardType.NUMBER">
<td><h3 id="KeyboardType.NUMBER" class="add-link hide-from-toc">NUMBER</h3></td>
<td><code>1</code></td>
<td><p>A text field intended for entering numbers only.</p>
</td>
</tr>
<tr id="KeyboardType.PHONE">
<td><h3 id="KeyboardType.PHONE" class="add-link hide-from-toc">PHONE</h3></td>
<td><code>2</code></td>
<td><p>A text field for entering phone numbers only (e.g. digits, limited
punctuation, perhaps some validation).</p>
</td>
</tr>
<tr id="KeyboardType.DATETIME">
<td><h3 id="KeyboardType.DATETIME" class="add-link hide-from-toc">DATETIME</h3></td>
<td><code>3</code></td>
<td><p>A text field for entering date and time. For example, may have a
calendar widget on the side, to aid in date time entry.</p>
</td>
</tr>
<tr id="KeyboardType.MULTILINE">
<td><h3 id="KeyboardType.MULTILINE" class="add-link hide-from-toc">MULTILINE</h3></td>
<td><code>4</code></td>
<td><p>Multi-line text.</p>
<div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 8</span></div></td>
</tr>
</table>
### PointerEventPhase [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#PointerEventPhase data-text="PointerEventPhase"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.input/input_events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_events.fidl;l=69)*
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="PointerEventPhase.ADD">
<td><h3 id="PointerEventPhase.ADD" class="add-link hide-from-toc">ADD</h3></td>
<td><code>0</code></td>
<td><p>The device has started tracking the pointer.</p>
<p>For example, the pointer might be hovering above the device, having not yet
made contact with the surface of the device.</p>
</td>
</tr>
<tr id="PointerEventPhase.HOVER">
<td><h3 id="PointerEventPhase.HOVER" class="add-link hide-from-toc">HOVER</h3></td>
<td><code>1</code></td>
<td><p>The pointer has moved with respect to the device while not in contact with
the device.</p>
</td>
</tr>
<tr id="PointerEventPhase.DOWN">
<td><h3 id="PointerEventPhase.DOWN" class="add-link hide-from-toc">DOWN</h3></td>
<td><code>2</code></td>
<td><p>The pointer has made contact with the device.</p>
<p>For <code>MOUSE</code> devices, this is triggered when the primary button is pressed
down to emulate a touch on the screen.</p>
</td>
</tr>
<tr id="PointerEventPhase.MOVE">
<td><h3 id="PointerEventPhase.MOVE" class="add-link hide-from-toc">MOVE</h3></td>
<td><code>3</code></td>
<td><p>The pointer has moved with respect to the device while in contact with the
device.</p>
</td>
</tr>
<tr id="PointerEventPhase.UP">
<td><h3 id="PointerEventPhase.UP" class="add-link hide-from-toc">UP</h3></td>
<td><code>4</code></td>
<td><p>The pointer has stopped making contact with the device.</p>
<p>For <code>MOUSE</code> devices, this is triggered when the primary button is
released.</p>
</td>
</tr>
<tr id="PointerEventPhase.REMOVE">
<td><h3 id="PointerEventPhase.REMOVE" class="add-link hide-from-toc">REMOVE</h3></td>
<td><code>5</code></td>
<td><p>The device is no longer tracking the pointer.</p>
<p>For example, the pointer might have drifted out of the device's hover
detection range or might have been disconnected from the system entirely.</p>
</td>
</tr>
<tr id="PointerEventPhase.CANCEL">
<td><h3 id="PointerEventPhase.CANCEL" class="add-link hide-from-toc">CANCEL</h3></td>
<td><code>6</code></td>
<td><p>The input from the pointer is no longer directed towards this receiver.</p>
</td>
</tr>
</table>
### PointerEventType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#PointerEventType data-text="PointerEventType"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.input/input_events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_events.fidl;l=55)*
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="PointerEventType.TOUCH">
<td><h3 id="PointerEventType.TOUCH" class="add-link hide-from-toc">TOUCH</h3></td>
<td><code>0</code></td>
<td><p>A touch-based pointer device.</p>
</td>
</tr>
<tr id="PointerEventType.STYLUS">
<td><h3 id="PointerEventType.STYLUS" class="add-link hide-from-toc">STYLUS</h3></td>
<td><code>1</code></td>
<td><p>A pointer device with a stylus.</p>
</td>
</tr>
<tr id="PointerEventType.INVERTED_STYLUS">
<td><h3 id="PointerEventType.INVERTED_STYLUS" class="add-link hide-from-toc">INVERTED_STYLUS</h3></td>
<td><code>2</code></td>
<td><p>A pointer device with a stylus that has been inverted.</p>
</td>
</tr>
<tr id="PointerEventType.MOUSE">
<td><h3 id="PointerEventType.MOUSE" class="add-link hide-from-toc">MOUSE</h3></td>
<td><code>3</code></td>
<td><p>A pointer device without a stylus.</p>
</td>
</tr>
</table>
### SensorLocation [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#SensorLocation data-text="SensorLocation"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=192)*
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="SensorLocation.UNKNOWN">
<td><h3 id="SensorLocation.UNKNOWN" class="add-link hide-from-toc">UNKNOWN</h3></td>
<td><code>0</code></td>
<td></td>
</tr>
<tr id="SensorLocation.BASE">
<td><h3 id="SensorLocation.BASE" class="add-link hide-from-toc">BASE</h3></td>
<td><code>1</code></td>
<td></td>
</tr>
<tr id="SensorLocation.LID">
<td><h3 id="SensorLocation.LID" class="add-link hide-from-toc">LID</h3></td>
<td><code>2</code></td>
<td></td>
</tr>
</table>
### SensorType [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#SensorType data-text="SensorType"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=185)*
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="SensorType.ACCELEROMETER">
<td><h3 id="SensorType.ACCELEROMETER" class="add-link hide-from-toc">ACCELEROMETER</h3></td>
<td><code>0</code></td>
<td></td>
</tr>
<tr id="SensorType.GYROSCOPE">
<td><h3 id="SensorType.GYROSCOPE" class="add-link hide-from-toc">GYROSCOPE</h3></td>
<td><code>1</code></td>
<td></td>
</tr>
<tr id="SensorType.MAGNETOMETER">
<td><h3 id="SensorType.MAGNETOMETER" class="add-link hide-from-toc">MAGNETOMETER</h3></td>
<td><code>2</code></td>
<td></td>
</tr>
<tr id="SensorType.LIGHTMETER">
<td><h3 id="SensorType.LIGHTMETER" class="add-link hide-from-toc">LIGHTMETER</h3></td>
<td><code>3</code></td>
<td></td>
</tr>
</table>
### TextAffinity [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#TextAffinity data-text="TextAffinity"}
Type: <code>uint32</code>
*Defined in [fuchsia.ui.input/text_editing.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/text_editing.fidl;l=15)*
<p>Whether a TextPosition is visually upstream or downstream of its offset.</p>
<p>For example, when a text position exists at a line break, a single offset has
two visual positions, one prior to the line break (at the end of the first
line) and one after the line break (at the start of the second line). A text
affinity disambiguates between those cases. (Something similar happens with
between runs of bidirectional text.)</p>
<p>We do not expect new values to be added to this enum.</p>
<table>
<tr><th>Name</th><th>Value</th><th>Description</th></tr>
<tr id="TextAffinity.UPSTREAM">
<td><h3 id="TextAffinity.UPSTREAM" class="add-link hide-from-toc">UPSTREAM</h3></td>
<td><code>0</code></td>
<td><p>The position has affinity for the upstream side of the text position.</p>
<p>For example, if the offset of the text position is a line break, the
position represents the end of the first line.</p>
</td>
</tr>
<tr id="TextAffinity.DOWNSTREAM">
<td><h3 id="TextAffinity.DOWNSTREAM" class="add-link hide-from-toc">DOWNSTREAM</h3></td>
<td><code>1</code></td>
<td><p>The position has affinity for the downstream side of the text position.</p>
<p>For example, if the offset of the text position is a line break, the
position represents the start of the second line.</p>
</td>
</tr>
</table>
## **TABLES**
### MediaButtonsEvent {#MediaButtonsEvent data-text="MediaButtonsEvent"}
*Defined in [fuchsia.ui.input/input_events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_events.fidl;l=156)*
<table>
<tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr>
<tr id="MediaButtonsEvent.volume">
<td><h3 id="MediaButtonsEvent.volume" class="add-link hide-from-toc">1</h3></td>
<td><code>volume</code></td>
<td>
<code>int8</code>
</td>
<td></td>
</tr>
<tr id="MediaButtonsEvent.mic_mute">
<td><h3 id="MediaButtonsEvent.mic_mute" class="add-link hide-from-toc">2</h3></td>
<td><code>mic_mute</code></td>
<td>
<code>bool</code>
</td>
<td></td>
</tr>
<tr id="MediaButtonsEvent.pause">
<td><h3 id="MediaButtonsEvent.pause" class="add-link hide-from-toc">3</h3></td>
<td><code>pause</code></td>
<td>
<code>bool</code>
</td>
<td></td>
</tr>
<tr id="MediaButtonsEvent.camera_disable">
<td><h3 id="MediaButtonsEvent.camera_disable" class="add-link hide-from-toc">4</h3></td>
<td><code>camera_disable</code></td>
<td>
<code>bool</code>
</td>
<td></td>
</tr>
</table>
## **UNIONS**
### Command [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Command data-text="Command"}
*Defined in [fuchsia.ui.input/commands.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/commands.fidl;l=6)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="Command.send_keyboard_input">
<td><h3 id="Command.send_keyboard_input" class="add-link hide-from-toc">1</h3></td>
<td><code>send_keyboard_input</code></td>
<td>
<code><a class='link' href='#SendKeyboardInputCmd'>SendKeyboardInputCmd</a></code>
</td>
<td><p>Commands for conveying input events to a <code>Session</code>.
Structs defined in input_events.fidl.</p>
</td>
</tr>
<tr id="Command.send_pointer_input">
<td><h3 id="Command.send_pointer_input" class="add-link hide-from-toc">2</h3></td>
<td><code>send_pointer_input</code></td>
<td>
<code><a class='link' href='#SendPointerInputCmd'>SendPointerInputCmd</a></code>
</td>
<td></td>
</tr>
<tr id="Command.set_hard_keyboard_delivery">
<td><h3 id="Command.set_hard_keyboard_delivery" class="add-link hide-from-toc">3</h3></td>
<td><code>set_hard_keyboard_delivery</code></td>
<td>
<code><a class='link' href='#SetHardKeyboardDeliveryCmd'>SetHardKeyboardDeliveryCmd</a></code>
</td>
<td><p>Command to enable/disable delivery of hard keyboard events.</p>
</td>
</tr>
<tr id="Command.set_parallel_dispatch">
<td><h3 id="Command.set_parallel_dispatch" class="add-link hide-from-toc">4</h3></td>
<td><code>set_parallel_dispatch</code></td>
<td>
<code><a class='link' href='#SetParallelDispatchCmd'>SetParallelDispatchCmd</a></code>
</td>
<td><p>Obsolete. This command is a no-op.</p>
</td>
</tr>
</table>
### InputEvent [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#InputEvent data-text="InputEvent"}
*Defined in [fuchsia.ui.input/input_events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_events.fidl;l=164)*
<p>This union does not include MediaButtonsEvent because it's processed differently.</p>
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="InputEvent.pointer">
<td><h3 id="InputEvent.pointer" class="add-link hide-from-toc">1</h3></td>
<td><code>pointer</code></td>
<td>
<code><a class='link' href='#PointerEvent'>PointerEvent</a></code>
</td>
<td></td>
</tr>
<tr id="InputEvent.keyboard">
<td><h3 id="InputEvent.keyboard" class="add-link hide-from-toc">2</h3></td>
<td><code>keyboard</code></td>
<td>
<code><a class='link' href='#KeyboardEvent'>KeyboardEvent</a></code>
</td>
<td></td>
</tr>
<tr id="InputEvent.focus">
<td><h3 id="InputEvent.focus" class="add-link hide-from-toc">3</h3></td>
<td><code>focus</code></td>
<td>
<code><a class='link' href='#FocusEvent'>FocusEvent</a></code>
</td>
<td></td>
</tr>
</table>
### SensorReport [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#SensorReport data-text="SensorReport"}
*Defined in [fuchsia.ui.input/input_reports.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_reports.fidl;l=221)*
<table>
<tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr>
<tr id="SensorReport.vector">
<td><h3 id="SensorReport.vector" class="add-link hide-from-toc">1</h3></td>
<td><code>vector</code></td>
<td>
<code>int16[3]</code>
</td>
<td></td>
</tr>
<tr id="SensorReport.scalar">
<td><h3 id="SensorReport.scalar" class="add-link hide-from-toc">2</h3></td>
<td><code>scalar</code></td>
<td>
<code>uint16</code>
</td>
<td></td>
</tr>
</table>
## **CONSTANTS**
<table>
<tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr>
<tr id="kCameraDisable">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/usages.fidl;l=20">kCameraDisable</a></td>
<td>
<code>32</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kMicMute">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/usages.fidl;l=17">kMicMute</a></td>
<td>
<code>4</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kModifierAlt">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=17">kModifierAlt</a></td>
<td>
<code>96</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kModifierCapsLock">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=8">kModifierCapsLock</a></td>
<td>
<code>1</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kModifierControl">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=14">kModifierControl</a></td>
<td>
<code>24</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kModifierLeftAlt">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=15">kModifierLeftAlt</a></td>
<td>
<code>32</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kModifierLeftControl">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=12">kModifierLeftControl</a></td>
<td>
<code>8</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kModifierLeftShift">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=9">kModifierLeftShift</a></td>
<td>
<code>2</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kModifierLeftSuper">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=18">kModifierLeftSuper</a></td>
<td>
<code>128</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kModifierNone">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=7">kModifierNone</a></td>
<td>
<code>0</code>
</td>
<td><code>uint32</code></td>
<td><p>Keyboard modifiers</p>
</td>
</tr>
<tr id="kModifierRightAlt">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=16">kModifierRightAlt</a></td>
<td>
<code>64</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kModifierRightControl">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=13">kModifierRightControl</a></td>
<td>
<code>16</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kModifierRightShift">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=10">kModifierRightShift</a></td>
<td>
<code>4</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kModifierRightSuper">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=19">kModifierRightSuper</a></td>
<td>
<code>256</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kModifierShift">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=11">kModifierShift</a></td>
<td>
<code>6</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kModifierSuper">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=20">kModifierSuper</a></td>
<td>
<code>384</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kMouseButtonPrimary">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/usages.fidl;l=7">kMouseButtonPrimary</a></td>
<td>
<code>1</code>
</td>
<td><code>uint32</code></td>
<td><p>Common mouse buttons report constants</p>
</td>
</tr>
<tr id="kMouseButtonSecondary">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/usages.fidl;l=8">kMouseButtonSecondary</a></td>
<td>
<code>2</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kMouseButtonTertiary">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/usages.fidl;l=9">kMouseButtonTertiary</a></td>
<td>
<code>4</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kMousePrimaryButton">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=23">kMousePrimaryButton</a></td>
<td>
<code>1</code>
</td>
<td><code>uint32</code></td>
<td><p>Mouse buttons</p>
</td>
</tr>
<tr id="kMouseSecondaryButton">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=24">kMouseSecondaryButton</a></td>
<td>
<code>2</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kMouseTertiaryButton">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=25">kMouseTertiaryButton</a></td>
<td>
<code>4</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kPause">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/usages.fidl;l=19">kPause</a></td>
<td>
<code>16</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kReset">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/usages.fidl;l=18">kReset</a></td>
<td>
<code>8</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kStylusBarrel">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/usages.fidl;l=12">kStylusBarrel</a></td>
<td>
<code>1</code>
</td>
<td><code>uint32</code></td>
<td><p>Common stylus buttons report constants</p>
</td>
</tr>
<tr id="kStylusPrimaryButton">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=28">kStylusPrimaryButton</a></td>
<td>
<code>1</code>
</td>
<td><code>uint32</code></td>
<td><p>Stylus buttons</p>
</td>
</tr>
<tr id="kStylusSecondaryButton">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/input_event_constants.fidl;l=29">kStylusSecondaryButton</a></td>
<td>
<code>2</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kVolumeDown">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/usages.fidl;l=16">kVolumeDown</a></td>
<td>
<code>2</code>
</td>
<td><code>uint32</code></td>
<td></td>
</tr>
<tr id="kVolumeUp">
<td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input/usages.fidl;l=15">kVolumeUp</a></td>
<td>
<code>1</code>
</td>
<td><code>uint32</code></td>
<td><p>Used as mask bits (2^N) against ButtonDescriptor.buttons.</p>
</td>
</tr>
</table>