| <link rel="stylesheet" href="../style.css" /> |
| |
| [TOC] |
| # fuchsia.ui.pointer |
| |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 7</span></div> |
| |
| |
| ## **PROTOCOLS** |
| |
| ## MouseSource {#MouseSource} |
| *Defined in [fuchsia.ui.pointer/mouse.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/mouse.fidl;l=25)* |
| <p>A method for a client to receive mouse pointer events.</p> |
| <p>The position of a pointer event is defined in the context of a viewport, |
| situated in the view. The dimensions of the view and viewport, and their |
| spatial relationship (defined with a transform matrix), are supplied |
| synchronously in a |ViewParameter| table. A view may retrieve a pointer's |
| position in its local coordinate system by applying the viewport-to-view |
| transform matrix.</p> |
| <p>The viewport is embedded in an independent and stable coordinate system, |
| suitable for interpreting pointer events in a scale-independent manner; |
| mouse movement will be observed at a constant scale, even under effects such |
| as magnification or panning. However, other effects, such as enlargening the |
| view's clip bounds, may trigger a change in the viewport extents.</p> |
| |
| |
| ### Watch {#MouseSource.Watch} |
| |
| <p>A method for a client to receive mouse pointer events.</p> |
| <p>This call is formulated as a "hanging get" pattern: the client asks for |
| a set of recent events, and receives them via the callback. This |
| pull-based approach ensures that clients consume events at their own |
| pace; events don't clog up the channel in an unbounded manner.</p> |
| <p>Flow control. The caller is allowed at most one in-flight |Watch| call |
| at a time; it is a logical error to have concurrent calls to |Watch|. |
| Non-compliance results in channel closure.</p> |
| <p>Client pacing. The server will dispatch events to the caller on a FIFO, |
| lossless, best-effort basis, but the caller must allocate enough time to |
| keep up with new events.</p> |
| <p>Event times. The timestamps on each event in the event vector are <em>not</em> |
| guaranteed monotonic; events from different devices may be injected into |
| Scenic at different times. Generally, events from a single device are |
| expected to have monotonically increasing timestamps.</p> |
| <p>View parameters. Occasionally, changes in view or viewport require |
| notifying the client. If a |MouseEvent| carries |ViewParameters|, these |
| parameters apply to successive |MousePointerSample|s until the next |
| |ViewParameters|.</p> |
| |
| |
| |
| #### Request {#MouseSource.Watch_Request} |
| |
| <EMPTY> |
| |
| |
| #### Response {#MouseSource.Watch_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>events</code></td> |
| <td> |
| <code>vector<<a class='link' href='#MouseEvent'>MouseEvent</a>>[128]</code> |
| </td> |
| </tr> |
| </table> |
| |
| ## TouchSource {#TouchSource} |
| *Defined in [fuchsia.ui.pointer/touch.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/touch.fidl;l=25)* |
| <p>A method for a client to receive touch events and respond in a global |
| gesture disambiguation protocol.</p> |
| <p>The position of a touch event is defined in the context of a viewport, |
| situated in the view. The dimensions of the view and viewport, and their |
| spatial relationship (defined with a transform matrix), are supplied |
| synchronously in a |ViewParameter| table. A view may retrieve a pointer's |
| position in its local coordinate system by applying the viewport-to-view |
| transform matrix.</p> |
| <p>The viewport is embedded in an independent and stable coordinate system, |
| suitable for interpreting touch events in a scale-independent manner; a |
| swipe will be observed at a constant scale, even under effects such as |
| magnification or panning. However, other effects, such as enlargening the |
| view's clip bounds, may trigger a change in the viewport extents.</p> |
| |
| |
| ### UpdateResponse {#TouchSource.UpdateResponse} |
| |
| <p>The gesture protocol allows a client to enact a "hold" on an open |
| interaction of touch events; it prevents resolution of interaction |
| ownership, even after the interaction closes. This method updates the |
| client's previous "hold" by replacing it with a response that allows |
| ownership resolution to proceed.</p> |
| <p>See |TouchInteractionId| for how a stream is structured into |
| interactions.</p> |
| <p>Flow control. The caller is allowed at most one |UpdateResponse| call |
| per interaction, and it must be on a closed interaction. It is a logical |
| error to call |UpdateResponse| when a normal response is possible with |
| the |Watch| call.</p> |
| <p>Validity. This TouchResponse must not be another "hold" response, and |
| the overwritten response is expected to be a "hold" response.</p> |
| |
| |
| |
| #### Request {#TouchSource.UpdateResponse_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>interaction</code></td> |
| <td> |
| <code><a class='link' href='#TouchInteractionId'>TouchInteractionId</a></code> |
| </td> |
| </tr> |
| <tr> |
| <td><code>response</code></td> |
| <td> |
| <code><a class='link' href='#TouchResponse'>TouchResponse</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| #### Response {#TouchSource.UpdateResponse_Response} |
| |
| <EMPTY> |
| |
| ### Watch {#TouchSource.Watch} |
| |
| <p>A method for a client to receive touch pointer events.</p> |
| <p>This call is formulated as a "hanging get" pattern: the client asks for |
| a set of recent events, and receives them via the callback. This |
| pull-based approach ensures that clients consume events at their own |
| pace; events don't clog up the channel in an unbounded manner.</p> |
| <p>Flow control. The caller is allowed at most one in-flight |Watch| call |
| at a time; it is a logical error to have concurrent calls to |Watch|. |
| Non-compliance results in channel closure.</p> |
| <p>Client pacing. The server will dispatch events to the caller on a FIFO, |
| lossless, best-effort basis, but the caller must allocate enough time to |
| keep up with new events. An unresponsive client may be categorized as |
| "App Not Responding" and targeted for channel closure.</p> |
| <p>Responses. The gesture disambiguation scheme relies on the server |
| receiving a |TouchResponse| for each |TouchEvent|.|TouchPointerSample|; |
| non-sample events should return an empty |TouchResponse| table to the |
| server. Responses for <em>previous</em> events are fed to the server on the |
| <em>next</em> call of |Watch| [1]. Each element in the |responses| vector is |
| interpreted as the pairwise response to the event in the previous |
| |events| vector; the vector lengths must match. Note that the client's |
| contract to respond to events starts as soon as it registers its |
| endpoint with scenic, NOT when it first calls <code>Watch()</code>.</p> |
| <p>Initial response. The first call to |Watch| must be an empty vector.</p> |
| <p>Event times. The timestamps on each event in the event vector are <em>not</em> |
| guaranteed monotonic; touch events from different devices may be |
| injected into Scenic at different times. Generally, events from a single |
| device are expected to have monotonically increasing timestamps.</p> |
| <p>View parameters. Occasionally, changes in view or viewport require |
| notifying the client. If a |TouchEvent| carries |ViewParameters|, these |
| parameters apply to successive |TouchPointerSample|s until the next |
| |ViewParameters|.</p> |
| <p>[1] The hanging get pattern enables straightforward API evolution, but |
| unfortunately does not admit an idiomatic matching of response to event.</p> |
| |
| |
| |
| #### Request {#TouchSource.Watch_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>responses</code></td> |
| <td> |
| <code>vector<<a class='link' href='#TouchResponse'>TouchResponse</a>>[128]</code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| #### Response {#TouchSource.Watch_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>events</code></td> |
| <td> |
| <code>vector<<a class='link' href='#TouchEvent'>TouchEvent</a>>[128]</code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ## **STRUCTS** |
| |
| ### MouseEventStreamInfo {#MouseEventStreamInfo data-text="MouseEventStreamInfo"} |
| *Defined in [fuchsia.ui.pointer/mouse.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/mouse.fidl;l=168)* |
| <p>The status of a mouse event stream, sent from server to client.</p> |
| <p>Invariant: a client's mouse events are bracketed by |
| <a class='link' href='#MouseViewStatus.ENTERED'>MouseViewStatus.ENTERED</a> and <a class='link' href='#MouseViewStatus.EXITED'>MouseViewStatus.EXITED</a>.</p> |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr> |
| <tr id="MouseEventStreamInfo.device_id"> |
| <td><code>device_id</code></td> |
| <td> |
| <code>uint32</code> |
| </td> |
| <td><p>An identifier for the mouse device that issues a mouse event stream.</p> |
| </td> |
| <td>No default</td> |
| </tr> |
| <tr id="MouseEventStreamInfo.status"> |
| <td><code>status</code></td> |
| <td> |
| <code><a class='link' href='#MouseViewStatus'>MouseViewStatus</a></code> |
| </td> |
| <td><p>The mouse event stream's enter/exit status, sent from server to client.</p> |
| </td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### Rectangle {#Rectangle data-text="Rectangle"} |
| *Defined in [fuchsia.ui.pointer/view.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/view.fidl;l=16)* |
| <p>An axis-aligned rectangle. It is defined by its minimal and maximal extents |
| in a coordinate system.</p> |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr> |
| <tr id="Rectangle.min"> |
| <td><code>min</code></td> |
| <td> |
| <code><a class='link' href='#Point2'>Point2</a></code> |
| </td> |
| <td><p>The minimal extent of this rectangle, inclusive.</p> |
| <ul> |
| <li>Its coordinates are pairwise less than the maximal extent's |
| coordinates.</li> |
| </ul> |
| </td> |
| <td>No default</td> |
| </tr> |
| <tr id="Rectangle.max"> |
| <td><code>max</code></td> |
| <td> |
| <code><a class='link' href='#Point2'>Point2</a></code> |
| </td> |
| <td><p>The maximal extent of this rectangle, inclusive.</p> |
| <ul> |
| <li>Its coordinates are pairwise greater than the minimal extent's |
| coordinates.</li> |
| </ul> |
| </td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### TouchInteractionId {#TouchInteractionId data-text="TouchInteractionId"} |
| *Defined in [fuchsia.ui.pointer/touch.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/touch.fidl;l=155)* |
| <p>A unique identifier for a "interaction" of touch events in an event stream. |
| Touch events are observed as a succession of interactions, as fingers engage |
| and disengage with the display.</p> |
| <p>A finite sequence of pointer events that follows the <code>EventPhase</code> state |
| machine, starting from the initial state ADD, is called an <strong>interaction</strong>. |
| A closed (or past) interaction is one where it has reached the terminal |
| state (REMOVE or CANCEL); an open (or current) interaction is one where it |
| has not.</p> |
| <p>For a given device pointer, a stream of events is observed as a succession |
| of zero or more closed interactions (the past history of user engagement), |
| followed by at most one open interaction (the current user engagement).</p> |
| <p>Because we need to group pointer events by their interaction, touch event |
| carries an <strong>interaction id</strong> that is unique in that pointer stream. This |
| common reference makes it possible to operate on a closed interaction, as |
| well as an open interaction.</p> |
| <p>Also see <code>EventPhase</code> for a discussion on event streams by mice.</p> |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr> |
| <tr id="TouchInteractionId.device_id"> |
| <td><code>device_id</code></td> |
| <td> |
| <code>uint32</code> |
| </td> |
| <td><p>An identifier for the pointer device that issues touch event streams. |
| A device may own multiple pointers, each with its own |pointer_id|.</p> |
| </td> |
| <td>No default</td> |
| </tr> |
| <tr id="TouchInteractionId.pointer_id"> |
| <td><code>pointer_id</code></td> |
| <td> |
| <code>uint32</code> |
| </td> |
| <td><p>An identifier of the pointer that issued this event. It is unique only |
| to a specific |device_id|. Each (device_id, pointer_id) pair issues at |
| most one open interaction at a time.</p> |
| </td> |
| <td>No default</td> |
| </tr> |
| <tr id="TouchInteractionId.interaction_id"> |
| <td><code>interaction_id</code></td> |
| <td> |
| <code>uint32</code> |
| </td> |
| <td><p>An identifier of the interaction. It is unique only to a specific |
| (device_id, pointer_id) pair.</p> |
| </td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### TouchInteractionResult {#TouchInteractionResult data-text="TouchInteractionResult"} |
| *Defined in [fuchsia.ui.pointer/touch.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/touch.fidl;l=185)* |
| <p>The result of gesture disambiguation for a interaction of touch events, sent |
| from server to client.</p> |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr> |
| <tr id="TouchInteractionResult.interaction"> |
| <td><code>interaction</code></td> |
| <td> |
| <code><a class='link' href='#TouchInteractionId'>TouchInteractionId</a></code> |
| </td> |
| <td><p>The interaction that this pointer sample belongs to.</p> |
| </td> |
| <td>No default</td> |
| </tr> |
| <tr id="TouchInteractionResult.status"> |
| <td><code>status</code></td> |
| <td> |
| <code><a class='link' href='#TouchInteractionStatus'>TouchInteractionStatus</a></code> |
| </td> |
| <td><p>The interaction's disposition, sent from server to client.</p> |
| </td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| ### ViewParameters {#ViewParameters data-text="ViewParameters"} |
| *Defined in [fuchsia.ui.pointer/view.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/view.fidl;l=40)* |
| <p>The parameters of the associated view and viewport, sufficient to correctly |
| interpret the position and scale of pointer events dispatched to this view.</p> |
| <p>Ordering. These parameters arrive over the same channel as pointer events, |
| to provide synchronous context for interpreting the position of pointer |
| events in the view's local coordinate system.</p> |
| <p>Inter-protocol redundancy. Some of these parameters may also be sent over an |
| independent channel dedicated to view control; the client is responsible for |
| correct use of asynchronously received parameters.</p> |
| <p>TODO(fxbug.dev/81798): Rename viewport, it is used in Flatland.</p> |
| |
| <table> |
| <tr><th>Field</th><th>Type</th><th>Description</th><th>Default</th></tr> |
| <tr id="ViewParameters.view"> |
| <td><code>view</code></td> |
| <td> |
| <code><a class='link' href='#Rectangle'>Rectangle</a></code> |
| </td> |
| <td><p>The view's area of content, placed in the coordinate system of the view.</p> |
| <p>The rectangle is defined by the parent view's setup of clipping on this |
| view.</p> |
| </td> |
| <td>No default</td> |
| </tr> |
| <tr id="ViewParameters.viewport"> |
| <td><code>viewport</code></td> |
| <td> |
| <code><a class='link' href='#Rectangle'>Rectangle</a></code> |
| </td> |
| <td><p>The viewport's area of interaction, placed in an independent coordinate |
| system.</p> |
| <p>A pointer event's position is defined in the coordinate system of this |
| viewport.</p> |
| <p>A change in viewport extents means the region for pointer interaction |
| has itself moved, or changed in size, or both.</p> |
| </td> |
| <td>No default</td> |
| </tr> |
| <tr id="ViewParameters.viewport_to_view_transform"> |
| <td><code>viewport_to_view_transform</code></td> |
| <td> |
| <code><a class='link' href='#Mat3'>Mat3</a></code> |
| </td> |
| <td><p>The transform matrix that relates a point's position in the viewport's |
| coordinate system to its position in the view's coordinate system.</p> |
| </td> |
| <td>No default</td> |
| </tr> |
| </table> |
| |
| |
| ## **ENUMS** |
| |
| ### EventPhase [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#EventPhase data-text="EventPhase"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.ui.pointer/state.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/state.fidl;l=32)* |
| <p>The possible states of a pointer event. These phases of events in a stream |
| follow a state machine that starts with the <code>ADD</code> phase, followed by zero or |
| more <code>CHANGE</code> phases, and finally terminates with <code>REMOVE</code> or <code>CANCEL</code> |
| phase.</p> |
| <pre><code>ADD ---> CHANGE* -+-> REMOVE |
| | |
| +-> CANCEL |
| </code></pre> |
| <p>A finite sequence of pointer events that follows this state machine, |
| starting from the initial state, is called an <strong>interaction</strong>. A closed (or |
| past) interaction is one where it has reached the terminal state; an open |
| (or current) interaction is one where it has not.</p> |
| <p>For a given device pointer, a stream of events is observed as a succession |
| of zero or more closed interactions (the past history of user engagement), |
| followed by at most one open interaction (the current user engagement).</p> |
| <p>When we need to group pointer events by their interaction, an event carries |
| an <strong>interaction id</strong> that is unique in that pointer stream. This common |
| reference makes it possible to operate on a closed interaction, as well as |
| an open interaction.</p> |
| <p>For example, touch events are typically observed as a succession of |
| interactions, as fingers engage and disengage with the display.</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="EventPhase.ADD"> |
| <td><h3 id="EventPhase.ADD" class="add-link hide-from-toc">ADD</h3></td> |
| <td><code>1</code></td> |
| <td><p>The device has started tracking the pointer.</p> |
| </td> |
| </tr> |
| <tr id="EventPhase.CHANGE"> |
| <td><h3 id="EventPhase.CHANGE" class="add-link hide-from-toc">CHANGE</h3></td> |
| <td><code>2</code></td> |
| <td><p>The device has reported an update to the pointer state.</p> |
| </td> |
| </tr> |
| <tr id="EventPhase.REMOVE"> |
| <td><h3 id="EventPhase.REMOVE" class="add-link hide-from-toc">REMOVE</h3></td> |
| <td><code>3</code></td> |
| <td><p>The device has stopped tracking the pointer.</p> |
| </td> |
| </tr> |
| <tr id="EventPhase.CANCEL"> |
| <td><h3 id="EventPhase.CANCEL" class="add-link hide-from-toc">CANCEL</h3></td> |
| <td><code>4</code></td> |
| <td><p>The pointer is no longer available.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### MouseViewStatus [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#MouseViewStatus data-text="MouseViewStatus"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.ui.pointer/mouse.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/mouse.fidl;l=177)* |
| <p>A description of mouse event stream's relationship to this view.</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="MouseViewStatus.ENTERED"> |
| <td><h3 id="MouseViewStatus.ENTERED" class="add-link hide-from-toc">ENTERED</h3></td> |
| <td><code>1</code></td> |
| <td><p>The stream is directed towards this view.</p> |
| </td> |
| </tr> |
| <tr id="MouseViewStatus.EXITED"> |
| <td><h3 id="MouseViewStatus.EXITED" class="add-link hide-from-toc">EXITED</h3></td> |
| <td><code>2</code></td> |
| <td><p>The stream is directed away from this view.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### TouchInteractionStatus [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#TouchInteractionStatus data-text="TouchInteractionStatus"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.ui.pointer/touch.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/touch.fidl;l=194)* |
| <p>A description of the interaction's relationship to this client.</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="TouchInteractionStatus.DENIED"> |
| <td><h3 id="TouchInteractionStatus.DENIED" class="add-link hide-from-toc">DENIED</h3></td> |
| <td><code>1</code></td> |
| <td><p>The client has been denied ownership of the interaction.</p> |
| </td> |
| </tr> |
| <tr id="TouchInteractionStatus.GRANTED"> |
| <td><h3 id="TouchInteractionStatus.GRANTED" class="add-link hide-from-toc">GRANTED</h3></td> |
| <td><code>2</code></td> |
| <td><p>The client has been granted ownership of the interaction.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### TouchResponseType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#TouchResponseType data-text="TouchResponseType"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.ui.pointer/touch.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/touch.fidl;l=222)* |
| <p>The possible interaction dispositions that a client can respond with to a |
| given |TouchPointerSample|. Used as part of a gesture disambiguation scheme.</p> |
| <p>The responses are based on the idea of an ownership claim on a interaction. |
| Clients may assert a claim of ownership on an open interaction, but only one |
| client's claim is granted by the server; other clients' claims are denied.</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="TouchResponseType.NO"> |
| <td><h3 id="TouchResponseType.NO" class="add-link hide-from-toc">NO</h3></td> |
| <td><code>1</code></td> |
| <td><p>The client has no further interest in this interaction; it declines |
| ownership of the interaction. The client will stop receiving events for |
| this interaction.</p> |
| </td> |
| </tr> |
| <tr id="TouchResponseType.MAYBE"> |
| <td><h3 id="TouchResponseType.MAYBE" class="add-link hide-from-toc">MAYBE</h3></td> |
| <td><code>2</code></td> |
| <td><p>The client is interested in this interaction, but needs to see more |
| events to decide; the client has not yet claimed ownership of this |
| interaction.</p> |
| </td> |
| </tr> |
| <tr id="TouchResponseType.MAYBE_PRIORITIZE"> |
| <td><h3 id="TouchResponseType.MAYBE_PRIORITIZE" class="add-link hide-from-toc">MAYBE_PRIORITIZE</h3></td> |
| <td><code>3</code></td> |
| <td><p>The client is interested in this interaction, but needs to see more |
| events to decide; the client has not yet claimed ownership of the |
| interaction. During ownership resolution, it exerts its priority over |
| lower-priority "maybe" claims, but always loses to a "yes" claim.</p> |
| </td> |
| </tr> |
| <tr id="TouchResponseType.MAYBE_SUPPRESS"> |
| <td><h3 id="TouchResponseType.MAYBE_SUPPRESS" class="add-link hide-from-toc">MAYBE_SUPPRESS</h3></td> |
| <td><code>4</code></td> |
| <td><p>The client is interested in this interaction, but needs to see more |
| events to decide; the client has not yet claimed ownership of the |
| interaction. Moreover, it suppresses lower-priority claims that try to |
| resolve interaction ownership.</p> |
| </td> |
| </tr> |
| <tr id="TouchResponseType.MAYBE_PRIORITIZE_SUPPRESS"> |
| <td><h3 id="TouchResponseType.MAYBE_PRIORITIZE_SUPPRESS" class="add-link hide-from-toc">MAYBE_PRIORITIZE_SUPPRESS</h3></td> |
| <td><code>5</code></td> |
| <td><p>The client is interested in this interaction, but needs to see more |
| events to decide; the client has not yet claimed ownership of the |
| interaction. Moreover, it suppresses lower-priority claims that try to |
| resolve interaction ownership. During ownership resolution, it exerts |
| its priority over lower-priority "maybe" claims, but always loses to a |
| "yes" claim.</p> |
| </td> |
| </tr> |
| <tr id="TouchResponseType.HOLD"> |
| <td><h3 id="TouchResponseType.HOLD" class="add-link hide-from-toc">HOLD</h3></td> |
| <td><code>6</code></td> |
| <td><p>The client is interested in this interaction, but needs to see a |
| subsequent interaction to decide; the client has not yet claimed |
| ownership of this interaction. It prevents ownership resolution when the |
| interaction closes.</p> |
| </td> |
| </tr> |
| <tr id="TouchResponseType.HOLD_SUPPRESS"> |
| <td><h3 id="TouchResponseType.HOLD_SUPPRESS" class="add-link hide-from-toc">HOLD_SUPPRESS</h3></td> |
| <td><code>7</code></td> |
| <td><p>The client is interested in this interaction, but needs to see a |
| subsequent interaction to decide; the client has not yet claimed |
| ownership of this interaction. It prevents ownership resolution when the |
| interaction closes. Moreover, it suppresses lower-priority claims that |
| try to resolve interaction ownership.</p> |
| </td> |
| </tr> |
| <tr id="TouchResponseType.YES"> |
| <td><h3 id="TouchResponseType.YES" class="add-link hide-from-toc">YES</h3></td> |
| <td><code>8</code></td> |
| <td><p>The client wishes exclusive access to the remaining events in this |
| interaction; it claims ownership of this interaction (but that claim may |
| be granted or denied). During ownership resolution, it yields its |
| priority to lower-priority "yes" claims.</p> |
| </td> |
| </tr> |
| <tr id="TouchResponseType.YES_PRIORITIZE"> |
| <td><h3 id="TouchResponseType.YES_PRIORITIZE" class="add-link hide-from-toc">YES_PRIORITIZE</h3></td> |
| <td><code>9</code></td> |
| <td><p>The client wishes exclusive access to the remaining events in this |
| interaction; it claims ownership of this interaction (but that claim may |
| be granted or denied). During ownership resolution, it exerts its |
| priority over lower-priority "yes" claims.</p> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ## **TABLES** |
| |
| ### MouseDeviceInfo {#MouseDeviceInfo data-text="MouseDeviceInfo"} |
| |
| |
| *Defined in [fuchsia.ui.pointer/mouse.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/mouse.fidl;l=97)* |
| <p>Information about a device that issues a mouse event stream.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="MouseDeviceInfo.id"> |
| <td><h3 id="MouseDeviceInfo.id" class="add-link hide-from-toc">1</h3></td> |
| <td><code>id</code></td> |
| <td> |
| <code>uint32</code> |
| </td> |
| <td><p>An identifier for the mouse device that issues a mouse event stream. |
| Required.</p> |
| </td> |
| </tr> |
| <tr id="MouseDeviceInfo.scroll_v_range"> |
| <td><h3 id="MouseDeviceInfo.scroll_v_range" class="add-link hide-from-toc">2</h3></td> |
| <td><code>scroll_v_range</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.input.report/'>fuchsia.input.report</a>/<a class='link' href='../fuchsia.input.report/#Axis'>Axis</a></code> |
| </td> |
| <td><p>Range of vertical scroll values issued by the device.</p> |
| </td> |
| </tr> |
| <tr id="MouseDeviceInfo.scroll_h_range"> |
| <td><h3 id="MouseDeviceInfo.scroll_h_range" class="add-link hide-from-toc">3</h3></td> |
| <td><code>scroll_h_range</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.input.report/'>fuchsia.input.report</a>/<a class='link' href='../fuchsia.input.report/#Axis'>Axis</a></code> |
| </td> |
| <td><p>Range of horizontal scroll values issued by the device.</p> |
| </td> |
| </tr> |
| <tr id="MouseDeviceInfo.buttons"> |
| <td><h3 id="MouseDeviceInfo.buttons" class="add-link hide-from-toc">4</h3></td> |
| <td><code>buttons</code></td> |
| <td> |
| <code>vector<uint8>[32]</code> |
| </td> |
| <td><p>Button identifiers issued by the device, in priority order.</p> |
| </td> |
| </tr> |
| <tr id="MouseDeviceInfo.relative_motion_range"> |
| <td><h3 id="MouseDeviceInfo.relative_motion_range" class="add-link hide-from-toc">5</h3></td> |
| <td><code>relative_motion_range</code></td> |
| <td> |
| <code><a class='link' href='#RelativeMotionRange'>RelativeMotionRange</a></code> |
| </td> |
| <td><p>Range of relative movement values issued by the device.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### MouseEvent {#MouseEvent data-text="MouseEvent"} |
| |
| |
| *Defined in [fuchsia.ui.pointer/mouse.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/mouse.fidl;l=57)* |
| <p>The self-sufficient, self-consistent collection of pointer-related data, |
| sent from server to client.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="MouseEvent.timestamp"> |
| <td><h3 id="MouseEvent.timestamp" class="add-link hide-from-toc">1</h3></td> |
| <td><code>timestamp</code></td> |
| <td> |
| <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#time'>time</a></code> |
| </td> |
| <td><p>The time this event was observed. |
| Required.</p> |
| </td> |
| </tr> |
| <tr id="MouseEvent.view_parameters"> |
| <td><h3 id="MouseEvent.view_parameters" class="add-link hide-from-toc">2</h3></td> |
| <td><code>view_parameters</code></td> |
| <td> |
| <code><a class='link' href='#ViewParameters'>ViewParameters</a></code> |
| </td> |
| <td><p>The parameters of the associated view and viewport, sufficient to |
| correctly interpret the position, orientation, magnitude, and |
| inter-event distance of pointer events dispatched to a view.</p> |
| <ul> |
| <li>It is issued on connection and on change.</li> |
| </ul> |
| </td> |
| </tr> |
| <tr id="MouseEvent.device_info"> |
| <td><h3 id="MouseEvent.device_info" class="add-link hide-from-toc">3</h3></td> |
| <td><code>device_info</code></td> |
| <td> |
| <code><a class='link' href='#MouseDeviceInfo'>MouseDeviceInfo</a></code> |
| </td> |
| <td><p>A description of the mouse device, sufficient to correctly interpret |
| the capabilities and usage intent of the device.</p> |
| <ul> |
| <li>It is issued once per device.</li> |
| </ul> |
| </td> |
| </tr> |
| <tr id="MouseEvent.pointer_sample"> |
| <td><h3 id="MouseEvent.pointer_sample" class="add-link hide-from-toc">4</h3></td> |
| <td><code>pointer_sample</code></td> |
| <td> |
| <code><a class='link' href='#MousePointerSample'>MousePointerSample</a></code> |
| </td> |
| <td><p>A description of each sampled data point in a mouse event stream.</p> |
| <p>Issuance policy. There are two dispatch modes, "hover" and "latched". |
| Hover mode is default, and the stream is dispatched in fragments to the |
| visible client that each mouse event hovers above. Latched mode directs |
| the stream to a single client (regardless of view boundary) until |
| unlatched. Latched mode is typically toggled when the user presses the |
| primary mouse button, but is ultimately a product-specific policy.</p> |
| </td> |
| </tr> |
| <tr id="MouseEvent.stream_info"> |
| <td><h3 id="MouseEvent.stream_info" class="add-link hide-from-toc">5</h3></td> |
| <td><code>stream_info</code></td> |
| <td> |
| <code><a class='link' href='#MouseEventStreamInfo'>MouseEventStreamInfo</a></code> |
| </td> |
| <td><p>The signal for view entry/exit in hover mode.</p> |
| <ul> |
| <li>It is issued on hover entry into a view, and hover exit from a view.</li> |
| </ul> |
| </td> |
| </tr> |
| <tr id="MouseEvent.trace_flow_id"> |
| <td><h3 id="MouseEvent.trace_flow_id" class="add-link hide-from-toc">6</h3></td> |
| <td><code>trace_flow_id</code></td> |
| <td> |
| <code>uint64</code> |
| </td> |
| <td><p>An identifier to correlate this event's send/receive occurrence across |
| component boundaries or abstraction layers.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### MousePointerSample {#MousePointerSample data-text="MousePointerSample"} |
| |
| |
| *Defined in [fuchsia.ui.pointer/mouse.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/mouse.fidl;l=127)* |
| <p>A description of each sampled data point in a mouse event stream.</p> |
| <p><code>MousePointerSample</code> may bundle multiple state changes into one event. |
| For example, if user scrolls mouse wheel and presses the left buttton |
| down at the same time, client may receive scroll and button state changes |
| together in 1 event, or receive button change and scroll change in |
| separate events.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="MousePointerSample.device_id"> |
| <td><h3 id="MousePointerSample.device_id" class="add-link hide-from-toc">1</h3></td> |
| <td><code>device_id</code></td> |
| <td> |
| <code>uint32</code> |
| </td> |
| <td><p>An identifier for the mouse device that issues a mouse event stream. |
| Required.</p> |
| </td> |
| </tr> |
| <tr id="MousePointerSample.position_in_viewport"> |
| <td><h3 id="MousePointerSample.position_in_viewport" class="add-link hide-from-toc">2</h3></td> |
| <td><code>position_in_viewport</code></td> |
| <td> |
| <code><a class='link' href='#Point2'>Point2</a></code> |
| </td> |
| <td><p>The position of this event, in the viewport's coordinate system. |
| Required.</p> |
| </td> |
| </tr> |
| <tr id="MousePointerSample.scroll_v"> |
| <td><h3 id="MousePointerSample.scroll_v" class="add-link hide-from-toc">3</h3></td> |
| <td><code>scroll_v</code></td> |
| <td> |
| <code>int64</code> |
| </td> |
| <td><p>Relative vertical scrolling displacement by detent.</p> |
| </td> |
| </tr> |
| <tr id="MousePointerSample.scroll_h"> |
| <td><h3 id="MousePointerSample.scroll_h" class="add-link hide-from-toc">4</h3></td> |
| <td><code>scroll_h</code></td> |
| <td> |
| <code>int64</code> |
| </td> |
| <td><p>Relative horizontal scrolling displacement by detent.</p> |
| </td> |
| </tr> |
| <tr id="MousePointerSample.pressed_buttons"> |
| <td><h3 id="MousePointerSample.pressed_buttons" class="add-link hide-from-toc">5</h3></td> |
| <td><code>pressed_buttons</code></td> |
| <td> |
| <code>vector<uint8>[32]</code> |
| </td> |
| <td><p>Identifiers of currently pressed buttons.</p> |
| </td> |
| </tr> |
| <tr id="MousePointerSample.relative_motion"> |
| <td><h3 id="MousePointerSample.relative_motion" class="add-link hide-from-toc">6</h3></td> |
| <td><code>relative_motion</code></td> |
| <td> |
| <code><a class='link' href='#RelativeMotion'>RelativeMotion</a></code> |
| </td> |
| <td><p>The relative movement performed, independent of the viewport's |
| coordinate system.</p> |
| </td> |
| </tr> |
| <tr id="MousePointerSample.scroll_v_physical_pixel"> |
| <td><h3 id="MousePointerSample.scroll_v_physical_pixel" class="add-link hide-from-toc">7</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="MousePointerSample.scroll_h_physical_pixel"> |
| <td><h3 id="MousePointerSample.scroll_h_physical_pixel" class="add-link hide-from-toc">8</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> |
| <tr id="MousePointerSample.is_precision_scroll"> |
| <td><h3 id="MousePointerSample.is_precision_scroll" class="add-link hide-from-toc">9</h3></td> |
| <td><code>is_precision_scroll</code></td> |
| <td> |
| <code>bool</code> |
| </td> |
| <td><p>Indicated if the scroll event is from a precision scroll device (HI_RES |
| mouse or touchpad). Clients may want to play interpolation animations |
| on non precision scroll device for smooth scrolling.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### TouchDeviceInfo {#TouchDeviceInfo data-text="TouchDeviceInfo"} |
| |
| |
| *Defined in [fuchsia.ui.pointer/touch.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/touch.fidl;l=127)* |
| <p>Information about a device that issues touch event streams.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="TouchDeviceInfo.id"> |
| <td><h3 id="TouchDeviceInfo.id" class="add-link hide-from-toc">1</h3></td> |
| <td><code>id</code></td> |
| <td> |
| <code>uint32</code> |
| </td> |
| <td><p>An identifier for the touch device that issues touch event streams. |
| A device may own multiple pointers, each with its own pointer id and its |
| own touch event stream. |
| Required.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### TouchEvent {#TouchEvent data-text="TouchEvent"} |
| |
| |
| *Defined in [fuchsia.ui.pointer/touch.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/touch.fidl;l=96)* |
| <p>The self-sufficient, self-consistent collection of pointer-related data, |
| sent from server to client.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="TouchEvent.timestamp"> |
| <td><h3 id="TouchEvent.timestamp" class="add-link hide-from-toc">1</h3></td> |
| <td><code>timestamp</code></td> |
| <td> |
| <code><a class='link' href='../zx/'>zx</a>/<a class='link' href='../zx/#time'>time</a></code> |
| </td> |
| <td><p>The time this event was observed. |
| Required.</p> |
| </td> |
| </tr> |
| <tr id="TouchEvent.view_parameters"> |
| <td><h3 id="TouchEvent.view_parameters" class="add-link hide-from-toc">2</h3></td> |
| <td><code>view_parameters</code></td> |
| <td> |
| <code><a class='link' href='#ViewParameters'>ViewParameters</a></code> |
| </td> |
| <td><p>The parameters of the associated view and viewport, sufficient to |
| correctly interpret the position, orientation, magnitude, and |
| inter-event distance of touch events dispatched to a view.</p> |
| <ul> |
| <li>It is issued on connection and on change.</li> |
| </ul> |
| </td> |
| </tr> |
| <tr id="TouchEvent.device_info"> |
| <td><h3 id="TouchEvent.device_info" class="add-link hide-from-toc">3</h3></td> |
| <td><code>device_info</code></td> |
| <td> |
| <code><a class='link' href='#TouchDeviceInfo'>TouchDeviceInfo</a></code> |
| </td> |
| <td><p>A description of the pointer device, sufficient to correctly interpret |
| the capabilities and usage intent of the device.</p> |
| <ul> |
| <li>It is issued once per device.</li> |
| </ul> |
| </td> |
| </tr> |
| <tr id="TouchEvent.pointer_sample"> |
| <td><h3 id="TouchEvent.pointer_sample" class="add-link hide-from-toc">4</h3></td> |
| <td><code>pointer_sample</code></td> |
| <td> |
| <code><a class='link' href='#TouchPointerSample'>TouchPointerSample</a></code> |
| </td> |
| <td><p>A description of each sampled data point in an interaction of touch |
| events.</p> |
| <ul> |
| <li>It is issued on every sample in the interaction.</li> |
| </ul> |
| </td> |
| </tr> |
| <tr id="TouchEvent.interaction_result"> |
| <td><h3 id="TouchEvent.interaction_result" class="add-link hide-from-toc">5</h3></td> |
| <td><code>interaction_result</code></td> |
| <td> |
| <code><a class='link' href='#TouchInteractionResult'>TouchInteractionResult</a></code> |
| </td> |
| <td><p>The result of gesture disambiguation for a interaction of touch events.</p> |
| <ul> |
| <li>It is issued once per interaction.</li> |
| </ul> |
| </td> |
| </tr> |
| <tr id="TouchEvent.trace_flow_id"> |
| <td><h3 id="TouchEvent.trace_flow_id" class="add-link hide-from-toc">6</h3></td> |
| <td><code>trace_flow_id</code></td> |
| <td> |
| <code>uint64</code> |
| </td> |
| <td><p>An identifier to correlate this event's send/receive occurrence across |
| component boundaries or abstraction layers.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### TouchPointerSample {#TouchPointerSample data-text="TouchPointerSample"} |
| |
| |
| *Defined in [fuchsia.ui.pointer/touch.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/touch.fidl;l=172)* |
| <p>A description of each sampled data point in a touch event stream. |
| All fields are required.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="TouchPointerSample.interaction"> |
| <td><h3 id="TouchPointerSample.interaction" class="add-link hide-from-toc">1</h3></td> |
| <td><code>interaction</code></td> |
| <td> |
| <code><a class='link' href='#TouchInteractionId'>TouchInteractionId</a></code> |
| </td> |
| <td><p>The interaction that this pointer sample belongs to.</p> |
| </td> |
| </tr> |
| <tr id="TouchPointerSample.phase"> |
| <td><h3 id="TouchPointerSample.phase" class="add-link hide-from-toc">2</h3></td> |
| <td><code>phase</code></td> |
| <td> |
| <code><a class='link' href='#EventPhase'>EventPhase</a></code> |
| </td> |
| <td><p>The state of this event in the interaction's state machine.</p> |
| </td> |
| </tr> |
| <tr id="TouchPointerSample.position_in_viewport"> |
| <td><h3 id="TouchPointerSample.position_in_viewport" class="add-link hide-from-toc">3</h3></td> |
| <td><code>position_in_viewport</code></td> |
| <td> |
| <code><a class='link' href='#Point2'>Point2</a></code> |
| </td> |
| <td><p>The position of this event, in the viewport's coordinate system.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### TouchResponse {#TouchResponse data-text="TouchResponse"} |
| |
| |
| *Defined in [fuchsia.ui.pointer/touch.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/touch.fidl;l=206)* |
| <p>A feedback event per |Event|, sent from client to server.</p> |
| <p>Only |TouchPointerSample| requires a |TouchResponseType|; for other events, |
| the server expects an empty |TouchResponse| table.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="TouchResponse.response_type"> |
| <td><h3 id="TouchResponse.response_type" class="add-link hide-from-toc">1</h3></td> |
| <td><code>response_type</code></td> |
| <td> |
| <code><a class='link' href='#TouchResponseType'>TouchResponseType</a></code> |
| </td> |
| <td><p>The interaction disposition that a client responds with for a given |
| |TouchPointerSample|.</p> |
| </td> |
| </tr> |
| <tr id="TouchResponse.trace_flow_id"> |
| <td><h3 id="TouchResponse.trace_flow_id" class="add-link hide-from-toc">2</h3></td> |
| <td><code>trace_flow_id</code></td> |
| <td> |
| <code>uint64</code> |
| </td> |
| <td><p>An identifier to correlate this response's send/receive occurrence across |
| component boundaries or abstraction layers.</p> |
| </td> |
| </tr> |
| </table> |
| |
| |
| |
| |
| ## **CONSTANTS** |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Type</th><th>Description</th></tr> |
| <tr id="MOUSE_MAX_EVENT"> |
| <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/mouse.fidl;l=9">MOUSE_MAX_EVENT</a></td> |
| <td> |
| <code>128</code> |
| </td> |
| <td><code>uint32</code></td> |
| <td></td> |
| </tr> |
| <tr id="TOUCH_MAX_EVENT"> |
| <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/touch.fidl;l=8">TOUCH_MAX_EVENT</a></td> |
| <td> |
| <code>128</code> |
| </td> |
| <td><code>uint32</code></td> |
| <td></td> |
| </tr> |
| </table> |
| |
| ## **ALIASES** |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="Mat3"> |
| <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/view.fidl;l=8">Mat3</a></td> |
| <td> |
| <code>array</code>[<code>9</code>]</td> |
| <td><p>A floating-point 3x3 matrix.</p> |
| <ul> |
| <li>The values are placed in column-major order.</li> |
| </ul> |
| </td> |
| </tr> |
| <tr id="Point2"> |
| <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/view.fidl;l=12">Point2</a></td> |
| <td> |
| <code>array</code>[<code>2</code>]</td> |
| <td><p>A floating-point two-dimensional point.</p> |
| <ul> |
| <li>The values are placed in (x, y) order.</li> |
| </ul> |
| </td> |
| </tr> |
| <tr id="RelativeMotion"> |
| <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/mouse.fidl;l=118">RelativeMotion</a></td> |
| <td> |
| <code>array</code>[<code>2</code>]</td> |
| <td><p>The relative motion performed by a mouse device.</p> |
| <ul> |
| <li>The valid range is defined in <a class='link' href='#MouseDeviceInfo.RelativeMotionRange'>MouseDeviceInfo.RelativeMotionRange</a>.</li> |
| <li>The values are placed in (x, y) order.</li> |
| </ul> |
| </td> |
| </tr> |
| <tr id="RelativeMotionRange"> |
| <td><a href="https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.pointer/mouse.fidl;l=94">RelativeMotionRange</a></td> |
| <td> |
| <code>array</code>[<code>2</code>]</td> |
| <td><p>The valid values of relative motion for a mouse device.</p> |
| <ul> |
| <li>The ranges are placed in (x, y) order.</li> |
| </ul> |
| </td> |
| </tr> |
| </table> |