| <link rel="stylesheet" href="../style.css" /> |
| |
| [TOC] |
| # fuchsia.ui.input3 |
| |
| <h1>Physical keyboard events</h1> |
| <p>Fuchsia's Keyboard service provides a mechanism for delivering physical keyboard |
| events to all interested clients.</p> |
| <h2>Rendered Docs</h2> |
| <ul> |
| <li><a href="https://fuchsia.dev/reference/fidl/fuchsia.ui.input3">FIDL</a></li> |
| <li><a href="https://fuchsia-docs.firebaseapp.com/rust/fidl_fuchsia_ui_input3/index.html">Rust</a></li> |
| </ul> |
| <h2>Overview</h2> |
| <p>Key events are delivered only to the components subscribed via <code>Keyboard</code> FIDL |
| protocol. Components interested in the service, should list FIDL service in the |
| components manifest, and it will be injected when the component is started.</p> |
| <p>Typical use-cases:</p> |
| <ul> |
| <li>TAB navigation between form fields.</li> |
| <li>Arrow keys navigation in menus, lists.</li> |
| <li>Pressing “f” to open a <strong>F</strong>ile from a menu.</li> |
| <li>Closing popups on ESC.</li> |
| <li>WASD navigation in games.</li> |
| </ul> |
| <p>Media buttons, shortcuts, and text entry (IME) related events are delivered |
| separately via specialized interfaces.</p> |
| <p>Key events are only delivered to components in the Scenic focus chain. |
| Only focused components receive key events.</p> |
| <p>Key events are delivered in root to leaf order - i.e. parent components first.</p> |
| <p>Parent components have the ability to block further event propagation via |
| <code>KeyboardListener.OnKeyEvent</code> by returning <code>KeyEventStatus.Handled</code> to prevent |
| event’s propagation.</p> |
| <p>Clients are notified of keys being pressed or released via <code>Pressed</code> and |
| <code>Released</code> event types.</p> |
| <p>Clients are notified of keys pressed or released while client wasn't available |
| (e.g. not focused, or not started) via <code>Sync</code> and <code>Cancel</code> event types. Those |
| events will delivered for relevant events only, e.g. keys pressed and held while |
| client was not available.</p> |
| <h2>Example</h2> |
| <pre><code class="language-rust">use fidl_fuchsia_ui_input3 as ui_input; |
| |
| let keyboard = connect_to_protocol::<ui_input::KeyboardMarker>() |
| .context("Failed to connect to Keyboard service")?; |
| |
| let (listener_client_end, mut listener_stream) = |
| create_request_stream::<ui_input::KeyboardListenerMarker>()?; |
| |
| keyboard.add_listener(view_ref, listener_client_end).await.expect("add_listener"); |
| |
| match listener_stream.next().await { |
| Some(Ok(ui_input::KeyboardListenerRequest::OnKeyEvent { event, responder, .. })) => { |
| assert_eq!(event.key, Some(fuchsia_input::Key::A)); |
| responder.send(ui_input::Status::Handled).expect("response from key listener") |
| }, |
| } |
| </code></pre> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 7</span></div> |
| |
| |
| ## **PROTOCOLS** |
| |
| ## KeyEventInjector {#KeyEventInjector} |
| *Defined in [fuchsia.ui.input3/keyboard.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input3/keyboard.fidl;l=69)* |
| <p>Provides the ability to inject <code>KeyEvent</code>s into the keyboard subsystem.</p> |
| <h1>Roles</h1> |
| <p>This protocol will typically be:</p> |
| <ul> |
| <li>Implemented by platform components which process and deliver keyboard |
| events.</li> |
| <li>Consumed by components which originiate keyboard events. E.g. |
| an on-screen keyboard, or the Session Framework Input Pipeline.</li> |
| </ul> |
| <h1>Related protocols</h1> |
| <p>This protocol should be using in preference to legacy protocols which provide |
| similar functionality. Specifically, this means this protocol should be preferred |
| over</p> |
| <ul> |
| <li><code>fuchsia.ui.input.ImeService</code> which provides <code>InjectInput()</code>, <code>DispatchKey()</code>, |
| and <code>DispatchKey3()</code></li> |
| <li><code>fuchsia.ui.input.InputMethodEditor</code>, which provides <code>InjectInput()</code> and |
| <code>DispatchKey3()</code></li> |
| </ul> |
| <h1>Notes</h1> |
| <p>Products should take care to limit access to this protocol, as events injected |
| with this protocol are indistinguishable from those coming from physical devices.</p> |
| |
| |
| ### Inject {#KeyEventInjector.Inject} |
| |
| <p>Inject an event into the keyboard subsystem.</p> |
| <h1>Returns</h1> |
| <ul> |
| <li><code>HANDLED</code> if the keyboard subsystem delivered the event to a consumer, |
| and the consumer reported that it <code>HANDLED</code> the event</li> |
| <li><code>NOT_HANDLED</code> if the keyboard subsystem did not deliever the event to |
| any consumers, or no consumer reported that it <code>HANDLED</code> the event.</li> |
| </ul> |
| |
| |
| |
| #### Request {#KeyEventInjector.Inject_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>key_event</code></td> |
| <td> |
| <code><a class='link' href='#KeyEvent'>KeyEvent</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| #### Response {#KeyEventInjector.Inject_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>status</code></td> |
| <td> |
| <code><a class='link' href='#KeyEventStatus'>KeyEventStatus</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| ## Keyboard {#Keyboard} |
| *Defined in [fuchsia.ui.input3/keyboard.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input3/keyboard.fidl;l=11)* |
| <p>Components may request this service from their namespace to be notified of |
| physical key events.</p> |
| |
| |
| ### AddListener {#Keyboard.AddListener} |
| |
| <p>Add a key event listener for the specified View. |
| If multiple listeners are added, each will receive key events independently and |
| should respond with a <code>Status</code>.</p> |
| <p>The client calling <code>AddListener</code> should keep the connection to <code>Keyboard</code> alive |
| for as long as the events from <code>KeyboardListener</code> need to be received. Dropping the |
| connection to the <code>Keyboard</code> protocol will terminate <code>KeyboardListener</code> as well.</p> |
| |
| |
| |
| #### Request {#Keyboard.AddListener_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></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> |
| <tr> |
| <td><code>listener</code></td> |
| <td> |
| <code><a class='link' href='#KeyboardListener'>KeyboardListener</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| #### Response {#Keyboard.AddListener_Response} |
| |
| <EMPTY> |
| |
| ## KeyboardListener {#KeyboardListener} |
| *Defined in [fuchsia.ui.input3/keyboard.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input3/keyboard.fidl;l=26)* |
| <p>Client should implement this protocol to get notified of key events.</p> |
| |
| |
| ### OnKeyEvent {#KeyboardListener.OnKeyEvent} |
| |
| <p>Called when a key event takes place, such as key press or release.</p> |
| <p>Protocol implementers must respond to acknowledge the event by returning Status |
| in a timely manner, i.e. not introducing significant delays to the |
| input pipeline (typically 10s of milliseconds).</p> |
| <p>Returning <code>NOT_HANDLED</code> means the event may be offered to other |
| clients of other related APIs.</p> |
| <p>Clients that do not acknowledge their events will eventually be disconnected.</p> |
| <p>Notification is only dispatched to a view that has focus. No other views, |
| including parents or children, will get notified specifically via <code>OnKeyEvent</code>.</p> |
| |
| |
| |
| #### Request {#KeyboardListener.OnKeyEvent_Request} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>event</code></td> |
| <td> |
| <code><a class='link' href='#KeyEvent'>KeyEvent</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| #### Response {#KeyboardListener.OnKeyEvent_Response} |
| |
| <table> |
| <tr><th>Name</th><th>Type</th></tr> |
| <tr> |
| <td><code>status</code></td> |
| <td> |
| <code><a class='link' href='#KeyEventStatus'>KeyEventStatus</a></code> |
| </td> |
| </tr> |
| </table> |
| |
| |
| |
| ## **ENUMS** |
| |
| ### KeyEventStatus [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#KeyEventStatus data-text="KeyEventStatus"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.ui.input3/keyboard.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input3/keyboard.fidl;l=87)* |
| <p>Return type for clients key events listener.</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="KeyEventStatus.HANDLED"> |
| <td><h3 id="KeyEventStatus.HANDLED" class="add-link hide-from-toc">HANDLED</h3></td> |
| <td><code>1</code></td> |
| <td><p>The key event was handled and its further propagation should be stopped.</p> |
| </td> |
| </tr> |
| <tr id="KeyEventStatus.NOT_HANDLED"> |
| <td><h3 id="KeyEventStatus.NOT_HANDLED" class="add-link hide-from-toc">NOT_HANDLED</h3></td> |
| <td><code>2</code></td> |
| <td><p>The key event wasn't handled and should be delivered to other clients or listeners.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### KeyEventType [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#KeyEventType data-text="KeyEventType"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.ui.input3/events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input3/events.fidl;l=12)* |
| <p>Type of the keyboard key input event.</p> |
| <p>We do not expect new values to be added into this enum.</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="KeyEventType.PRESSED"> |
| <td><h3 id="KeyEventType.PRESSED" class="add-link hide-from-toc">PRESSED</h3></td> |
| <td><code>1</code></td> |
| <td><p>Key is actuated.</p> |
| <p>Receiving this event type means that a key has been actuated |
| at the timestamp when the event is received, and while the event |
| recipient is focused.</p> |
| <p>For example, if the key is a keyboard key, then it was just |
| pressed.</p> |
| </td> |
| </tr> |
| <tr id="KeyEventType.RELEASED"> |
| <td><h3 id="KeyEventType.RELEASED" class="add-link hide-from-toc">RELEASED</h3></td> |
| <td><code>2</code></td> |
| <td><p>Key is no longer actuated.</p> |
| <p>Receiving this event type means that a key has been de-actuated |
| at the timestamp when the event is received, and while the event |
| recipient is focused.</p> |
| <p>For example, if the key is a keyboard key, then it was just |
| released.</p> |
| </td> |
| </tr> |
| <tr id="KeyEventType.SYNC"> |
| <td><h3 id="KeyEventType.SYNC" class="add-link hide-from-toc">SYNC</h3></td> |
| <td><code>3</code></td> |
| <td><p>Key was actuated while the client wasn't able to receive it, |
| and is still actuated now that the client is able to receive |
| key events.</p> |
| <p>This may happen in a few ways:</p> |
| <pre><code>- A new device was connected while its key was actuated. |
| - The key was actuated while the event recipient did not |
| have focus. |
| </code></pre> |
| <p>Therefore, this is not a "regular" key actuation. It reports |
| now that the key has been actuated in the unknown past. Some |
| event recipients may therefore decide that this is not an |
| actionable key event, while some others may decide that it is.</p> |
| <p>For example, recipients that trigger some user action may |
| decide to ignore <code>SYNC</code> events, to avoid spurious actions. In |
| contrast, recipients that keep track of the keyboard |
| state may want to consider a <code>SYNC</code> event as a signal |
| to update the key's state to actuated.</p> |
| </td> |
| </tr> |
| <tr id="KeyEventType.CANCEL"> |
| <td><h3 id="KeyEventType.CANCEL" class="add-link hide-from-toc">CANCEL</h3></td> |
| <td><code>4</code></td> |
| <td><p>Key may have been actuated, but its actuation has |
| become invalid due to an event other than a key |
| de-actuation.</p> |
| <p>This may happen in a few ways:</p> |
| <pre><code>- A device was disconnected while its key was actuated. |
| - The event recipient just lost focus. |
| </code></pre> |
| <p>Therefore, this is not a "regular" key de-actuation. It reports |
| the key is no longer validly actuated due to an event other than |
| a key release. Some event recipients may therefore decide that |
| this is not an actionable key event, while some others may |
| decide that it is.</p> |
| <p>For example, recipients which trigger some user action may |
| decide to ignore <code>CANCEL</code> events, to avoid spurious actions. In |
| contrast, recipients that keep track of the keyboard |
| state may want to consider a <code>CANCEL</code> event as a signal to update |
| the key's state to being de-actuated.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### NonPrintableKey [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#NonPrintableKey data-text="NonPrintableKey"} |
| Type: <code>uint32</code> |
| |
| *Defined in [fuchsia.ui.input3/events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input3/events.fidl;l=119)* |
| <p>NonPrintableKey represents the meaning of a non-symbolic key on a keyboard.</p> |
| <p>The definition of each key is derived from <a href="https://www.w3.org/TR/uievents-key/#named-key-attribute-values">W3C named values of a key |
| attribute</a>.</p> |
| <h2>API version 9 and onwards</h2> |
| <p>Starting from API version 9, the enum value space is subdivided based on the |
| subsection numbers of the section <a href="https://www.w3.org/TR/uievents-key/#named-key-attribute-values">Named Key Attribute Values</a>, multiplied |
| by 0x1000.</p> |
| <p>For example, the keys from section <a href="https://www.w3.org/TR/uievents-key/#keys-multimedia">3.10 Multimedia keys</a> will be located |
| at <code>0xa000</code>-<code>0xafff</code>. The values and reservations that were present |
| in this enum prior to the introduction of the convention have not been moved, |
| and values that go logically into pre-existing sections have been inserted |
| into their logical place using the prior convention (see below). This allows |
| us to extract the section ranges if this is for some reason useful to the |
| application.</p> |
| <h2>Prior to API version 9</h2> |
| <p>The space of the nonprintable keys is subdivided roughly to correspond to the |
| subsections of Section 3 of the document Named Key Attribute Values. |
| The choice for the section values is arbitrary, so long as blocks of |
| values are allocated at once, and the keys with similar purpose are kept |
| together.</p> |
| <h2>Reserved ranges</h2> |
| <p>The space of possible values for [NonPrintableKey] is subdivided into a |
| number of ranges, with the intention that the enum values are placed in |
| the appropriate range when added.</p> |
| <ul> |
| <li>Special keys: 0x00-0x10</li> |
| <li>Modifier keys: 0x11-0x30</li> |
| <li>Whitespace keys: 0x31-0x40</li> |
| <li>Navigation keys: 0x61-0x80</li> |
| <li>General-purpose function keys: 0x9000-0x9FFF</li> |
| </ul> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="NonPrintableKey.UNIDENTIFIED"> |
| <td><h3 id="NonPrintableKey.UNIDENTIFIED" class="add-link hide-from-toc">UNIDENTIFIED</h3></td> |
| <td><code>0</code></td> |
| <td><p>This key value is used when an implementation is unable to identify |
| another key value, due to either hardware, platform, or software |
| constraints.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.ALT"> |
| <td><h3 id="NonPrintableKey.ALT" class="add-link hide-from-toc">ALT</h3></td> |
| <td><code>17</code></td> |
| <td><p>The Alt (Alternative) key.</p> |
| <p>This key enables the alternate modifier function for interpreting concurrent |
| or subsequent keyboard input. |
| This key value is also used for the Apple Option key.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.ALT_GRAPH"> |
| <td><h3 id="NonPrintableKey.ALT_GRAPH" class="add-link hide-from-toc">ALT_GRAPH</h3></td> |
| <td><code>18</code></td> |
| <td><p>The Alternate Graphics (AltGr or AltGraph).</p> |
| <p>This key is used enable the ISO Level 3 shift modifier (the standard Shift key is the level |
| 2 modifier). See <a href="http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=51645">ISO9995-1</a>.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.CAPS_LOCK"> |
| <td><h3 id="NonPrintableKey.CAPS_LOCK" class="add-link hide-from-toc">CAPS_LOCK</h3></td> |
| <td><code>19</code></td> |
| <td><p>The Caps Lock (Capital) key.</p> |
| <p>Toggle capital character lock function for interpreting subsequent keyboard input event.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.CONTROL"> |
| <td><h3 id="NonPrintableKey.CONTROL" class="add-link hide-from-toc">CONTROL</h3></td> |
| <td><code>20</code></td> |
| <td><p>The Control or Ctrl key, to enable control modifier function for interpreting concurrent or |
| subsequent keyboard input.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.FN"> |
| <td><h3 id="NonPrintableKey.FN" class="add-link hide-from-toc">FN</h3></td> |
| <td><code>21</code></td> |
| <td><p>The Function switch Fn key.</p> |
| <p>Activating this key simultaneously with another key changes that key’s value to an alternate |
| character or function. This key is often handled directly in the keyboard hardware and does |
| not usually generate key events.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.FN_LOCK"> |
| <td><h3 id="NonPrintableKey.FN_LOCK" class="add-link hide-from-toc">FN_LOCK</h3></td> |
| <td><code>22</code></td> |
| <td><p>The Function-Lock (FnLock or F-Lock) key.</p> |
| <p>Activating this key switches the mode of the keyboard to changes some keys' values to an |
| alternate character or function. This key is often handled directly in the keyboard hardware |
| and does not usually generate key events.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.META"> |
| <td><h3 id="NonPrintableKey.META" class="add-link hide-from-toc">META</h3></td> |
| <td><code>23</code></td> |
| <td><p>The Meta key, to enable meta modifier function for interpreting concurrent or subsequent |
| keyboard input.</p> |
| <p>This key value is used for the Windows Logo key and the Apple Command or ⌘ key.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.NUM_LOCK"> |
| <td><h3 id="NonPrintableKey.NUM_LOCK" class="add-link hide-from-toc">NUM_LOCK</h3></td> |
| <td><code>24</code></td> |
| <td><p>The NumLock or Number Lock key, to toggle numpad mode function for interpreting subsequent |
| keyboard input.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.SCROLL_LOCK"> |
| <td><h3 id="NonPrintableKey.SCROLL_LOCK" class="add-link hide-from-toc">SCROLL_LOCK</h3></td> |
| <td><code>25</code></td> |
| <td><p>The Scroll Lock key, to toggle between scrolling and cursor movement modes.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.SHIFT"> |
| <td><h3 id="NonPrintableKey.SHIFT" class="add-link hide-from-toc">SHIFT</h3></td> |
| <td><code>26</code></td> |
| <td><p>The Shift key, to enable shift modifier function for interpreting concurrent or subsequent |
| keyboard input.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.SYMBOL"> |
| <td><h3 id="NonPrintableKey.SYMBOL" class="add-link hide-from-toc">SYMBOL</h3></td> |
| <td><code>27</code></td> |
| <td><p>The Symbol modifier key (used on some virtual keyboards).</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.SYMBOL_LOCK"> |
| <td><h3 id="NonPrintableKey.SYMBOL_LOCK" class="add-link hide-from-toc">SYMBOL_LOCK</h3></td> |
| <td><code>28</code></td> |
| <td><p>The Symbol Lock key.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.HYPER"> |
| <td><h3 id="NonPrintableKey.HYPER" class="add-link hide-from-toc">HYPER</h3></td> |
| <td><code>29</code></td> |
| <td><p>The Hyper key. A legacy modifier.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.SUPER"> |
| <td><h3 id="NonPrintableKey.SUPER" class="add-link hide-from-toc">SUPER</h3></td> |
| <td><code>30</code></td> |
| <td><p>The Super key. A legacy modifier.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.ENTER"> |
| <td><h3 id="NonPrintableKey.ENTER" class="add-link hide-from-toc">ENTER</h3></td> |
| <td><code>49</code></td> |
| <td><p>The Enter or ↵ key, to activate current selection or accept current input. |
| This key value is also used for the Return (Macintosh numpad) key.</p> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.TAB"> |
| <td><h3 id="NonPrintableKey.TAB" class="add-link hide-from-toc">TAB</h3></td> |
| <td><code>50</code></td> |
| <td><p>The Horizontal Tabulation Tab key.</p> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.BACKSPACE"> |
| <td><h3 id="NonPrintableKey.BACKSPACE" class="add-link hide-from-toc">BACKSPACE</h3></td> |
| <td><code>65</code></td> |
| <td><p>Delete the character immediately preceding the cursor (i.e. the |
| character to the left for LTR languages).</p> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.DOWN"> |
| <td><h3 id="NonPrintableKey.DOWN" class="add-link hide-from-toc">DOWN</h3></td> |
| <td><code>97</code></td> |
| <td><p>The down arrow navigation key.</p> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.LEFT"> |
| <td><h3 id="NonPrintableKey.LEFT" class="add-link hide-from-toc">LEFT</h3></td> |
| <td><code>98</code></td> |
| <td><p>The left arrow navigation key.</p> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.RIGHT"> |
| <td><h3 id="NonPrintableKey.RIGHT" class="add-link hide-from-toc">RIGHT</h3></td> |
| <td><code>99</code></td> |
| <td><p>The right arrow navigation key.</p> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.UP"> |
| <td><h3 id="NonPrintableKey.UP" class="add-link hide-from-toc">UP</h3></td> |
| <td><code>100</code></td> |
| <td><p>The up arrow navigation key.</p> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.END"> |
| <td><h3 id="NonPrintableKey.END" class="add-link hide-from-toc">END</h3></td> |
| <td><code>101</code></td> |
| <td><p>The "End" key.</p> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.HOME"> |
| <td><h3 id="NonPrintableKey.HOME" class="add-link hide-from-toc">HOME</h3></td> |
| <td><code>102</code></td> |
| <td><p>The "Home" key.</p> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.PAGE_DOWN"> |
| <td><h3 id="NonPrintableKey.PAGE_DOWN" class="add-link hide-from-toc">PAGE_DOWN</h3></td> |
| <td><code>103</code></td> |
| <td><p>The "Page Down" key.</p> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.PAGE_UP"> |
| <td><h3 id="NonPrintableKey.PAGE_UP" class="add-link hide-from-toc">PAGE_UP</h3></td> |
| <td><code>104</code></td> |
| <td><p>The "Page Up" key.</p> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.ESCAPE"> |
| <td><h3 id="NonPrintableKey.ESCAPE" class="add-link hide-from-toc">ESCAPE</h3></td> |
| <td><code>24581</code></td> |
| <td><p>The <code>Escape</code> or <code>Esc</code> key.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 10</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.SELECT"> |
| <td><h3 id="NonPrintableKey.SELECT" class="add-link hide-from-toc">SELECT</h3></td> |
| <td><code>24588</code></td> |
| <td><p>The Select key. Used to select the window of a task to focus on.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 10</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.BRIGHTNESS_DOWN"> |
| <td><h3 id="NonPrintableKey.BRIGHTNESS_DOWN" class="add-link hide-from-toc">BRIGHTNESS_DOWN</h3></td> |
| <td><code>28672</code></td> |
| <td><p>The Brightness Down key. Typically controls the display brightness.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 10</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.BRIGHTNESS_UP"> |
| <td><h3 id="NonPrintableKey.BRIGHTNESS_UP" class="add-link hide-from-toc">BRIGHTNESS_UP</h3></td> |
| <td><code>28673</code></td> |
| <td><p>The Brightness Up key. Typically controls the display brightness.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 10</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.F1"> |
| <td><h3 id="NonPrintableKey.F1" class="add-link hide-from-toc">F1</h3></td> |
| <td><code>36865</code></td> |
| <td><p>The F1 key, a general purpose function key, as index 1.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.F2"> |
| <td><h3 id="NonPrintableKey.F2" class="add-link hide-from-toc">F2</h3></td> |
| <td><code>36866</code></td> |
| <td><p>The F2 key, a general purpose function key, as index 2.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.F3"> |
| <td><h3 id="NonPrintableKey.F3" class="add-link hide-from-toc">F3</h3></td> |
| <td><code>36867</code></td> |
| <td><p>The F3 key, a general purpose function key, as index 3.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.F4"> |
| <td><h3 id="NonPrintableKey.F4" class="add-link hide-from-toc">F4</h3></td> |
| <td><code>36868</code></td> |
| <td><p>The F4 key, a general purpose function key, as index 4.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.F5"> |
| <td><h3 id="NonPrintableKey.F5" class="add-link hide-from-toc">F5</h3></td> |
| <td><code>36869</code></td> |
| <td><p>The F5 key, a general purpose function key, as index 5.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.F6"> |
| <td><h3 id="NonPrintableKey.F6" class="add-link hide-from-toc">F6</h3></td> |
| <td><code>36870</code></td> |
| <td><p>The F6 key, a general purpose function key, as index 6.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.F7"> |
| <td><h3 id="NonPrintableKey.F7" class="add-link hide-from-toc">F7</h3></td> |
| <td><code>36871</code></td> |
| <td><p>The F7 key, a general purpose function key, as index 7.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.F8"> |
| <td><h3 id="NonPrintableKey.F8" class="add-link hide-from-toc">F8</h3></td> |
| <td><code>36872</code></td> |
| <td><p>The F8 key, a general purpose function key, as index 8.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.F9"> |
| <td><h3 id="NonPrintableKey.F9" class="add-link hide-from-toc">F9</h3></td> |
| <td><code>36873</code></td> |
| <td><p>The F9 key, a general purpose function key, as index 9.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.F10"> |
| <td><h3 id="NonPrintableKey.F10" class="add-link hide-from-toc">F10</h3></td> |
| <td><code>36874</code></td> |
| <td><p>The F10 key, a general purpose function key, as index 10.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.F11"> |
| <td><h3 id="NonPrintableKey.F11" class="add-link hide-from-toc">F11</h3></td> |
| <td><code>36875</code></td> |
| <td><p>The F11 key, a general purpose function key, as index 11.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.F12"> |
| <td><h3 id="NonPrintableKey.F12" class="add-link hide-from-toc">F12</h3></td> |
| <td><code>36876</code></td> |
| <td><p>The F1 key, a general purpose function key, as index 12.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.SOFT_1"> |
| <td><h3 id="NonPrintableKey.SOFT_1" class="add-link hide-from-toc">SOFT_1</h3></td> |
| <td><code>36881</code></td> |
| <td><p>General purpose virtual function key, as index 1.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.SOFT_2"> |
| <td><h3 id="NonPrintableKey.SOFT_2" class="add-link hide-from-toc">SOFT_2</h3></td> |
| <td><code>36882</code></td> |
| <td><p>General purpose virtual function key, as index 2.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.SOFT_3"> |
| <td><h3 id="NonPrintableKey.SOFT_3" class="add-link hide-from-toc">SOFT_3</h3></td> |
| <td><code>36883</code></td> |
| <td><p>General purpose virtual function key, as index 3.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.SOFT_4"> |
| <td><h3 id="NonPrintableKey.SOFT_4" class="add-link hide-from-toc">SOFT_4</h3></td> |
| <td><code>36884</code></td> |
| <td><p>General purpose virtual function key, as index 4.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 9</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.MEDIA_PLAY_PAUSE"> |
| <td><h3 id="NonPrintableKey.MEDIA_PLAY_PAUSE" class="add-link hide-from-toc">MEDIA_PLAY_PAUSE</h3></td> |
| <td><code>40968</code></td> |
| <td><p>Pause the currently playing media.</p> |
| <p>NOTE: Media controller devices should use this value rather than |
| <code>PAUSE</code> for their pause keys.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 10</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.AUDIO_VOLUME_DOWN"> |
| <td><h3 id="NonPrintableKey.AUDIO_VOLUME_DOWN" class="add-link hide-from-toc">AUDIO_VOLUME_DOWN</h3></td> |
| <td><code>49162</code></td> |
| <td><p>Decrease audio volume.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 10</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.AUDIO_VOLUME_UP"> |
| <td><h3 id="NonPrintableKey.AUDIO_VOLUME_UP" class="add-link hide-from-toc">AUDIO_VOLUME_UP</h3></td> |
| <td><code>49163</code></td> |
| <td><p>Increase audio volume.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 10</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.AUDIO_VOLUME_MUTE"> |
| <td><h3 id="NonPrintableKey.AUDIO_VOLUME_MUTE" class="add-link hide-from-toc">AUDIO_VOLUME_MUTE</h3></td> |
| <td><code>49164</code></td> |
| <td><p>Toggle between muted state and prior volume level.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 10</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.BROWSER_BACK"> |
| <td><h3 id="NonPrintableKey.BROWSER_BACK" class="add-link hide-from-toc">BROWSER_BACK</h3></td> |
| <td><code>61440</code></td> |
| <td><p>Navigate to previous content or page in current history.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 10</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.BROWSER_FAVORITES"> |
| <td><h3 id="NonPrintableKey.BROWSER_FAVORITES" class="add-link hide-from-toc">BROWSER_FAVORITES</h3></td> |
| <td><code>61441</code></td> |
| <td><p>Open the list of browser favorites.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 10</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.BROWSER_FORWARD"> |
| <td><h3 id="NonPrintableKey.BROWSER_FORWARD" class="add-link hide-from-toc">BROWSER_FORWARD</h3></td> |
| <td><code>61442</code></td> |
| <td><p>Navigate to next content or page in current history.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 10</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.BROWSER_HOME"> |
| <td><h3 id="NonPrintableKey.BROWSER_HOME" class="add-link hide-from-toc">BROWSER_HOME</h3></td> |
| <td><code>61443</code></td> |
| <td><p>Go to the user’s preferred home page.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 10</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.BROWSER_REFRESH"> |
| <td><h3 id="NonPrintableKey.BROWSER_REFRESH" class="add-link hide-from-toc">BROWSER_REFRESH</h3></td> |
| <td><code>61444</code></td> |
| <td><p>Refresh the current page or content.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 10</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.BROWSER_SEARCH"> |
| <td><h3 id="NonPrintableKey.BROWSER_SEARCH" class="add-link hide-from-toc">BROWSER_SEARCH</h3></td> |
| <td><code>61445</code></td> |
| <td><p>Call up the user’s preferred search page.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 10</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.BROWSER_STOP"> |
| <td><h3 id="NonPrintableKey.BROWSER_STOP" class="add-link hide-from-toc">BROWSER_STOP</h3></td> |
| <td><code>61446</code></td> |
| <td><div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 10</span></div> |
| </td> |
| </tr> |
| <tr id="NonPrintableKey.ZOOM_TOGGLE"> |
| <td><h3 id="NonPrintableKey.ZOOM_TOGGLE" class="add-link hide-from-toc">ZOOM_TOGGLE</h3></td> |
| <td><code>73799</code></td> |
| <td><p>Toggle between full-screen and scaled content, or alter magnification level.</p> |
| <div class="fidl-version-div"><span class="fidl-attribute fidl-version">Added: 10</span></div> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ## **TABLES** |
| |
| ### KeyEvent {#KeyEvent data-text="KeyEvent"} |
| |
| |
| *Defined in [fuchsia.ui.input3/events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input3/events.fidl;l=443)* |
| <p>A Keyboard event generated to reflect key input. <code>timestamp</code> and <code>type</code> are required. |
| At least one of <code>key</code> and <code>key_meaning</code> must be set for a valid event.</p> |
| |
| <table> |
| <tr><th>Ordinal</th><th>Field</th><th>Type</th><th>Description</th></tr> |
| <tr id="KeyEvent.timestamp"> |
| <td><h3 id="KeyEvent.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>Time in nanoseconds when the event was recorded, in the <code>CLOCK_MONOTONIC</code> time base. |
| The timestamp is <strong>required</strong> on every key event, and users can expect that it |
| will always be present.</p> |
| </td> |
| </tr> |
| <tr id="KeyEvent.type"> |
| <td><h3 id="KeyEvent.type" class="add-link hide-from-toc">2</h3></td> |
| <td><code>type</code></td> |
| <td> |
| <code><a class='link' href='#KeyEventType'>KeyEventType</a></code> |
| </td> |
| <td><p>Type of event.</p> |
| </td> |
| </tr> |
| <tr id="KeyEvent.key"> |
| <td><h3 id="KeyEvent.key" class="add-link hide-from-toc">3</h3></td> |
| <td><code>key</code></td> |
| <td> |
| <code><a class='link' href='../fuchsia.input/'>fuchsia.input</a>/<a class='link' href='../fuchsia.input/#Key'>Key</a></code> |
| </td> |
| <td><p>Identifies the key ignoring modifiers, layout, prior key events, etc. This is called |
| the "physical key" on some platforms. In cases where the key event did not originate |
| from a physical keyboard (e.g. onscreen keyboard) this field may be empty.</p> |
| </td> |
| </tr> |
| <tr id="KeyEvent.modifiers"> |
| <td><h3 id="KeyEvent.modifiers" class="add-link hide-from-toc">4</h3></td> |
| <td><code>modifiers</code></td> |
| <td> |
| <code><a class='link' href='#Modifiers'>Modifiers</a></code> |
| </td> |
| <td><p>Modifiers in effect at the time of the event. |
| Example: |
| CapsLock is off, user presses CapsLock, then A, then releases both. |
| Event sequence is as follows:</p> |
| <ol> |
| <li>type: Pressed, key: CapsLock, modifiers: None</li> |
| <li>type: Pressed, key: A, modifiers: CapsLock</li> |
| <li>type: Released, key: CapsLock, modifiers: CapsLock</li> |
| <li>type: Released, key: A, modifiers: CapsLock</li> |
| </ol> |
| <p>CapsLock is on, user presses CapsLock, then A, then releases both.</p> |
| <ol> |
| <li>type: Pressed, key: CapsLock, modifiers: CapsLock</li> |
| <li>type: Pressed, key: A, modifiers: None</li> |
| <li>type: Released, key: CapsLock, modifiers: None</li> |
| <li>type: Released, key: A, modifiers: None</li> |
| </ol> |
| </td> |
| </tr> |
| <tr id="KeyEvent.key_meaning"> |
| <td><h3 id="KeyEvent.key_meaning" class="add-link hide-from-toc">5</h3></td> |
| <td><code>key_meaning</code></td> |
| <td> |
| <code><a class='link' href='#KeyMeaning'>KeyMeaning</a></code> |
| </td> |
| <td><p>Meaning of the key.</p> |
| </td> |
| </tr> |
| <tr id="KeyEvent.repeat_sequence"> |
| <td><h3 id="KeyEvent.repeat_sequence" class="add-link hide-from-toc">6</h3></td> |
| <td><code>repeat_sequence</code></td> |
| <td> |
| <code>uint32</code> |
| </td> |
| <td><p>The sequence number of this <code>KeyEvent</code> in the sequence of autorepeated |
| keys.</p> |
| <p>Unset if this event has been generated in the immediate response to an |
| input from the keyboard driver. If the <code>KeyEvent</code> has been generated |
| through the autorepeat mechanism, this property is set and is |
| incremented by one for each successive generated key event.</p> |
| </td> |
| </tr> |
| <tr id="KeyEvent.lock_state"> |
| <td><h3 id="KeyEvent.lock_state" class="add-link hide-from-toc">7</h3></td> |
| <td><code>lock_state</code></td> |
| <td> |
| <code><a class='link' href='#LockState'>LockState</a></code> |
| </td> |
| <td><p>The lock state in effect at the time of the event.</p> |
| <p>For example, if CapsLock effect is turned on (pressing 'a' results in |
| the effect 'A'), the corresponding bit in the lock state is set.</p> |
| <p>NOTE: <code>LockState</code> is different from whether the CapsLock modifier key |
| is actuated or not. <code>LockState.CAPS_LOCK</code> can be active even if the |
| Caps Lock key is not currently actuated.</p> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ## **UNIONS** |
| |
| ### KeyMeaning [strict](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#KeyMeaning data-text="KeyMeaning"} |
| *Defined in [fuchsia.ui.input3/events.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input3/events.fidl;l=430)* |
| <p>The meaning of the key press. This is typically the Unicode codepoint inserted |
| by this event, or an enum representing a key that corresponds to whitespace or |
| is otherwise unprintable.</p> |
| <table> |
| <tr><th>Ordinal</th><th>Variant</th><th>Type</th><th>Description</th></tr> |
| <tr id="KeyMeaning.codepoint"> |
| <td><h3 id="KeyMeaning.codepoint" class="add-link hide-from-toc">1</h3></td> |
| <td><code>codepoint</code></td> |
| <td> |
| <code>uint32</code> |
| </td> |
| <td><p>The Unicode codepoint representing character typed, if any.</p> |
| <ul> |
| <li>In Dart and Go, this corresponds to a <code>rune</code>.</li> |
| <li>In Rust, this corresponds to a <code>char</code>.</li> |
| <li>In C and C++, this corresponds to ICU's UChar32.</li> |
| </ul> |
| </td> |
| </tr> |
| <tr id="KeyMeaning.non_printable_key"> |
| <td><h3 id="KeyMeaning.non_printable_key" class="add-link hide-from-toc">2</h3></td> |
| <td><code>non_printable_key</code></td> |
| <td> |
| <code><a class='link' href='#NonPrintableKey'>NonPrintableKey</a></code> |
| </td> |
| <td><p>The meaning of the key for key events with no corresponding symbol.</p> |
| </td> |
| </tr> |
| </table> |
| |
| |
| ## **BITS** |
| |
| ### LockState [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#LockState} |
| Type: <code>uint64</code> |
| |
| *Defined in [fuchsia.ui.input3/modifiers.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input3/modifiers.fidl;l=74)* |
| <p>A bit field of lock states which are currently active.</p> |
| <p>Lock state reports whether the lock is active for the keys which have a lock |
| state (need to be pressed once to activate, and one more time to deactivate). |
| A set bit denotes active lock state.</p> |
| <p>For example, when Caps Lock is active, i.e. pressing 'a' produces the effect |
| of 'A' appearing on the screen, the <code>CAPS_LOCK</code> bit will be active.</p> |
| <p>The bit values in <code>LockState</code> are chosen to correspond to the values in |
| <code>Modifiers</code>, to the extent that this is doable in the long run.</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="LockState.CAPS_LOCK"> |
| <td><h3 id="LockState.CAPS_LOCK" class="add-link hide-from-toc">CAPS_LOCK</h3></td> |
| <td>1</td> |
| <td><p>Applies when the <code>CAPS_LOCK</code> modifier is locked.</p> |
| <p>Users should bear in mind that the effect of <code>CAPS_LOCK</code> is limited to |
| alphabetic keys (not even <em>alphanumerics</em>) mainly.</p> |
| <p>For example, pressing <code>a</code> on a US QWERTY keyboard while <code>CAPS_LOCK</code> |
| state is locked results in the key meaning <code>A</code>, just as if the Shift modifier |
| was used. However, pressing <code>[</code> when <code>CAPS_LOCK</code> is locked gives <code>[</code>, |
| even though Shift+<code>[</code> gives <code>{</code>.</p> |
| <p>The position of alphabetic keys may vary depending on the keymap in |
| current use too.</p> |
| </td> |
| </tr> |
| <tr id="LockState.NUM_LOCK"> |
| <td><h3 id="LockState.NUM_LOCK" class="add-link hide-from-toc">NUM_LOCK</h3></td> |
| <td>2</td> |
| <td><p>Applies when the <code>NUM_LOCK</code> modifier is locked.</p> |
| </td> |
| </tr> |
| <tr id="LockState.SCROLL_LOCK"> |
| <td><h3 id="LockState.SCROLL_LOCK" class="add-link hide-from-toc">SCROLL_LOCK</h3></td> |
| <td>4</td> |
| <td><p>Applies when the <code>SCROLL_LOCK</code> modifier is locked.</p> |
| </td> |
| </tr> |
| <tr id="LockState.FUNCTION_LOCK"> |
| <td><h3 id="LockState.FUNCTION_LOCK" class="add-link hide-from-toc">FUNCTION_LOCK</h3></td> |
| <td>8</td> |
| <td><p>Applies when the <code>FUNCTION</code> modifier is locked.</p> |
| </td> |
| </tr> |
| <tr id="LockState.SYMBOL_LOCK"> |
| <td><h3 id="LockState.SYMBOL_LOCK" class="add-link hide-from-toc">SYMBOL_LOCK</h3></td> |
| <td>16</td> |
| <td><p>Applies when the <code>SYMBOL</code> modifier is locked.</p> |
| </td> |
| </tr> |
| </table> |
| |
| ### Modifiers [flexible](/fuchsia-src/reference/fidl/language/language.md#strict-vs-flexible){:.fidl-attribute} {#Modifiers} |
| Type: <code>uint64</code> |
| |
| *Defined in [fuchsia.ui.input3/modifiers.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.ui.input3/modifiers.fidl;l=20)* |
| <p>Declares all the modifiers supported by Fuchsia's input subsystem.</p> |
| <p>Modifiers are special keys that modify the purpose or the function |
| of other keys when used in combination with them. In the Modifiers type, |
| a bit is set if the specific modifier key is actuated (held down), |
| irrespective of whether the modifier has an associated lock state or not.</p> |
| <p><strong>NOTE:</strong> If you want to examine the lock state (such as whether Caps |
| Lock needs to turn all letters into uppercase),you want [LockState] |
| instead.</p> |
| <p>Somewhat specially, and as a convenience for the users, the modifiers that |
| have "left" and "right" flavors have special bit values which can be used |
| if the distinction between sides does not matter.</p> |
| |
| <table> |
| <tr><th>Name</th><th>Value</th><th>Description</th></tr> |
| <tr id="Modifiers.CAPS_LOCK"> |
| <td><h3 id="Modifiers.CAPS_LOCK" class="add-link hide-from-toc">CAPS_LOCK</h3></td> |
| <td>1</td> |
| <td><p>Applies when the <code>CAPS_LOCK</code> modifier is actuated.</p> |
| </td> |
| </tr> |
| <tr id="Modifiers.NUM_LOCK"> |
| <td><h3 id="Modifiers.NUM_LOCK" class="add-link hide-from-toc">NUM_LOCK</h3></td> |
| <td>2</td> |
| <td><p>Applies when the <code>NUM_LOCK</code> modifier is actuated.</p> |
| </td> |
| </tr> |
| <tr id="Modifiers.SCROLL_LOCK"> |
| <td><h3 id="Modifiers.SCROLL_LOCK" class="add-link hide-from-toc">SCROLL_LOCK</h3></td> |
| <td>4</td> |
| <td><p>Applies when the <code>SCROLL_LOCK</code> modifier is actuated.</p> |
| </td> |
| </tr> |
| <tr id="Modifiers.FUNCTION"> |
| <td><h3 id="Modifiers.FUNCTION" class="add-link hide-from-toc">FUNCTION</h3></td> |
| <td>8</td> |
| <td><p>Applies when the <code>FUNCTION</code> modifier is actuated.</p> |
| </td> |
| </tr> |
| <tr id="Modifiers.SYMBOL"> |
| <td><h3 id="Modifiers.SYMBOL" class="add-link hide-from-toc">SYMBOL</h3></td> |
| <td>16</td> |
| <td><p>Applies when the <code>SYMBOL</code> modifier is actuated.</p> |
| </td> |
| </tr> |
| <tr id="Modifiers.LEFT_SHIFT"> |
| <td><h3 id="Modifiers.LEFT_SHIFT" class="add-link hide-from-toc">LEFT_SHIFT</h3></td> |
| <td>32</td> |
| <td><p>Applies when the left SHIFT modifier is actuated.</p> |
| </td> |
| </tr> |
| <tr id="Modifiers.RIGHT_SHIFT"> |
| <td><h3 id="Modifiers.RIGHT_SHIFT" class="add-link hide-from-toc">RIGHT_SHIFT</h3></td> |
| <td>64</td> |
| <td><p>Applies when the right SHIFT modifier is actuated.</p> |
| </td> |
| </tr> |
| <tr id="Modifiers.SHIFT"> |
| <td><h3 id="Modifiers.SHIFT" class="add-link hide-from-toc">SHIFT</h3></td> |
| <td>128</td> |
| <td><p>Applies when either <code>LEFT_SHIFT</code> or <code>RIGHT_SHIFT</code> modifier is actuated.</p> |
| <p>This bit mask a convenience to test for either <code>LEFT_SHIFT</code> |
| or <code>RIGHT_SHIFT</code>.</p> |
| </td> |
| </tr> |
| <tr id="Modifiers.LEFT_ALT"> |
| <td><h3 id="Modifiers.LEFT_ALT" class="add-link hide-from-toc">LEFT_ALT</h3></td> |
| <td>256</td> |
| <td><p>Applies when the left <code>ALT</code> modifier is actuated.</p> |
| </td> |
| </tr> |
| <tr id="Modifiers.RIGHT_ALT"> |
| <td><h3 id="Modifiers.RIGHT_ALT" class="add-link hide-from-toc">RIGHT_ALT</h3></td> |
| <td>512</td> |
| <td><p>Applies when the right <code>ALT</code> modifier is actuated.</p> |
| </td> |
| </tr> |
| <tr id="Modifiers.ALT"> |
| <td><h3 id="Modifiers.ALT" class="add-link hide-from-toc">ALT</h3></td> |
| <td>1024</td> |
| <td><p>Applies when either the left <code>ALT</code> or the right <code>ALT</code> modifier |
| is actuated.</p> |
| </td> |
| </tr> |
| <tr id="Modifiers.ALT_GRAPH"> |
| <td><h3 id="Modifiers.ALT_GRAPH" class="add-link hide-from-toc">ALT_GRAPH</h3></td> |
| <td>2048</td> |
| <td><p>Applies when the <code>ALT_GRAPH</code> modifier is actuated.</p> |
| </td> |
| </tr> |
| <tr id="Modifiers.LEFT_META"> |
| <td><h3 id="Modifiers.LEFT_META" class="add-link hide-from-toc">LEFT_META</h3></td> |
| <td>4096</td> |
| <td><p>Applies when the <code>LEFT_META</code> modifier is actuated.</p> |
| </td> |
| </tr> |
| <tr id="Modifiers.RIGHT_META"> |
| <td><h3 id="Modifiers.RIGHT_META" class="add-link hide-from-toc">RIGHT_META</h3></td> |
| <td>8192</td> |
| <td><p>Applies when the <code>RIGHT_META</code> modifier is actuated.</p> |
| </td> |
| </tr> |
| <tr id="Modifiers.META"> |
| <td><h3 id="Modifiers.META" class="add-link hide-from-toc">META</h3></td> |
| <td>16384</td> |
| <td><p>Applies when either <code>LEFT_META</code> or <code>RIGHT_META</code> modifier is actuated.</p> |
| </td> |
| </tr> |
| <tr id="Modifiers.LEFT_CTRL"> |
| <td><h3 id="Modifiers.LEFT_CTRL" class="add-link hide-from-toc">LEFT_CTRL</h3></td> |
| <td>32768</td> |
| <td><p>Applies when the <code>LEFT_CTRL</code> modifier is actuated.</p> |
| </td> |
| </tr> |
| <tr id="Modifiers.RIGHT_CTRL"> |
| <td><h3 id="Modifiers.RIGHT_CTRL" class="add-link hide-from-toc">RIGHT_CTRL</h3></td> |
| <td>65536</td> |
| <td><p>Applies when the <code>RIGHT_CTRL</code> modifier is actuated.</p> |
| </td> |
| </tr> |
| <tr id="Modifiers.CTRL"> |
| <td><h3 id="Modifiers.CTRL" class="add-link hide-from-toc">CTRL</h3></td> |
| <td>131072</td> |
| <td><p>Applies when either <code>LEFT_CTRL</code> or <code>RIGHT_CTRL</code> modifier is actuated.</p> |
| </td> |
| </tr> |
| </table> |
| |
| |