| // Copyright 2020 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| library fuchsia.ui.input3; |
| |
| using fuchsia.input; |
| using zx; |
| |
| /// Type of the keyboard key input event. |
| enum KeyEventType { |
| /// Key is pressed down. |
| PRESSED = 1; |
| |
| /// Key is released. |
| RELEASED = 2; |
| |
| /// Key was pressed while the client wasn't able to receive it, e.g new device connected |
| /// with a key held down or before system was started. |
| /// Client should not handle this as a key press. |
| SYNC = 3; |
| |
| /// Key was released while the client wasn't able to receive it, e.g device was disconnected |
| /// or focus lost. |
| /// Client should not handle this as a key release. |
| CANCEL = 4; |
| }; |
| |
| /// Keyboard event is generated to reflect key input. |
| table KeyEvent { |
| /// Time in nanoseconds when the event was recorded, in the `CLOCK_MONOTONIC` time base. |
| 1: zx.time timestamp; |
| |
| /// Type of event. |
| 2: KeyEventType type; |
| |
| /// Identifies the key ignoring modifiers, layout, prior key events, etc. |
| 3: fuchsia.input.Key key; |
| |
| /// 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: |
| /// 1. type: Pressed, key: CapsLock, modifiers: None |
| /// 2. type: Pressed, key: A, modifiers: CapsLock |
| /// 3. type: Released, key: CapsLock, modifiers: CapsLock |
| /// 4. type: Released, key: A, modifiers: CapsLock |
| /// |
| /// CapsLock is on, user presses CapsLock, then A, then releases both. |
| /// 1. type: Pressed, key: CapsLock, modifiers: CapsLock |
| /// 2. type: Pressed, key: A, modifiers: None |
| /// 3. type: Released, key: CapsLock, modifiers: None |
| /// 4. type: Released, key: A, modifiers: None |
| 4: Modifiers modifiers; |
| }; |