| // Copyright 2014 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.input; |
| |
| enum KeyboardEventPhase { |
| /// When key is pressed down. |
| PRESSED = 0; |
| /// When key is released. |
| RELEASED = 1; |
| /// This key `PRESSED` is not directed to this input client anymore. |
| CANCELLED = 2; |
| /// Whether this is an automatically generated key repeat |
| REPEAT = 3; |
| }; |
| |
| /// `KeyboardEvent` represents event generated by a user's interaction with a |
| /// keyboard. |
| /// |
| /// Those events are triggered by distinct pressed state changes of the keys. |
| /// |
| /// The state transitions should be as follows: |
| /// PRESSED -> (REPEAT ->) RELEASED |
| /// or |
| /// PRESSED -> (REPEAT ->) CANCELLED |
| /// |
| /// The input system will repeat those events automatically when a code_point is |
| /// available. |
| /// |
| /// DEPRECATED: Will be removed in favor of `fuchsia.ui.input.KeyEvent`. |
| struct KeyboardEvent { |
| /// Time the event was delivered. The time is in nanoseconds and corresponds |
| /// to the uptime of the machine. |
| uint64 event_time; |
| |
| uint32 device_id; |
| |
| KeyboardEventPhase phase; |
| |
| /// Keyboard HID Usage |
| /// See https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf |
| uint32 hid_usage; |
| |
| /// The unicode code point represented by this key event, if any. |
| /// Dead keys are represented as Unicode combining characters. |
| /// |
| /// If there is no unicode code point, this value is zero. |
| uint32 code_point; |
| |
| /// Key modifiers as defined by the different kModifier constants such as |
| /// `kModifierCapsLock` currently pressed |
| uint32 modifiers; |
| }; |
| |
| enum PointerEventType { |
| /// A touch-based pointer device. |
| TOUCH = 0; |
| |
| /// A pointer device with a stylus. |
| STYLUS = 1; |
| |
| /// A pointer device with a stylus that has been inverted. |
| INVERTED_STYLUS = 2; |
| |
| /// A pointer device without a stylus. |
| MOUSE = 3; |
| }; |
| |
| enum PointerEventPhase { |
| /// The device has started tracking the pointer. |
| /// |
| /// For example, the pointer might be hovering above the device, having not yet |
| /// made contact with the surface of the device. |
| ADD = 0; |
| |
| /// The pointer has moved with respect to the device while not in contact with |
| /// the device. |
| HOVER = 1; |
| |
| /// The pointer has made contact with the device. |
| /// |
| /// For `MOUSE` devices, this is triggered when the primary button is pressed |
| /// down to emulate a touch on the screen. |
| DOWN = 2; |
| |
| /// The pointer has moved with respect to the device while in contact with the |
| /// device. |
| MOVE = 3; |
| |
| /// The pointer has stopped making contact with the device. |
| /// |
| /// For `MOUSE` devices, this is triggered when the primary button is |
| /// released. |
| UP = 4; |
| |
| /// The device is no longer tracking the pointer. |
| /// |
| /// For example, the pointer might have drifted out of the device's hover |
| /// detection range or might have been disconnected from the system entirely. |
| REMOVE = 5; |
| |
| /// The input from the pointer is no longer directed towards this receiver. |
| CANCEL = 6; |
| |
| // TODO: add phases to indicate button press / release |
| }; |
| |
| /// Pointers represent raw data about the user's interaction with the screen. |
| /// |
| /// The state transitions should be as follows: |
| /// ADD (-> HOVER) -> DOWN -> MOVE -> UP (-> HOVER) -> REMOVE |
| /// |
| /// At any point after the initial ADD, a transition to CANCEL is also possible. |
| struct PointerEvent { |
| /// Time the event was delivered. The time is in nanoseconds and corresponds |
| /// to the uptime of the machine. |
| uint64 event_time; |
| |
| uint32 device_id; |
| |
| uint32 pointer_id; |
| |
| PointerEventType type; |
| |
| PointerEventPhase phase; |
| |
| /// `x` and `y` are in the coordinate system of the View. |
| float32 x; |
| float32 y; |
| |
| // TODO(jpoichet) float32 vx; |
| // TODO(jpoichet) float32 vy; |
| |
| float32 radius_major = 0.0; // DO NOT USE |
| float32 radius_minor = 0.0; // DO NOT USE |
| // TODO(jpoichet) float32 orientation; |
| // TODO(jpoichet) float32 tilt; |
| // TODO(jpoichet) float32 altitude; |
| // TODO(jpichet) float32 amplitude; |
| |
| /// Currently pressed buttons as defined the kButton constants such as |
| /// `kMousePrimaryButton` |
| uint32 buttons; |
| }; |
| |
| struct FocusEvent { |
| /// Time the event was delivered. The time is in nanoseconds and corresponds |
| /// to the uptime of the machine. |
| uint64 event_time; |
| |
| /// Whether the view has gained input focused or not. |
| bool focused; |
| }; |
| |
| table MediaButtonsEvent { |
| 1: int8 volume; |
| 2: bool mic_mute; |
| 3: bool pause; |
| }; |
| |
| /// This union does not include MediaButtonsEvent because it's processed differently. |
| union InputEvent { |
| 1: PointerEvent pointer; |
| 2: KeyboardEvent keyboard; |
| 3: FocusEvent focus; |
| }; |