blob: cfaff3f2b8fa5c9b6f1a38560bdfcf87773cb6a5 [file] [log] [blame]
// 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;
@available(deprecated=13)
type KeyboardEventPhase = flexible enum {
/// 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`.
@available(deprecated=13)
type KeyboardEvent = struct {
/// Time the event was delivered. The time is in nanoseconds and corresponds
/// to the monotonic time as determined by the zx_clock_get_monotonic syscall.
event_time uint64;
device_id uint32;
phase KeyboardEventPhase;
/// Keyboard HID Usage
/// See https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf
hid_usage uint32;
/// 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.
code_point uint32;
/// Key modifiers as defined by the different kModifier constants such as
/// `kModifierCapsLock` currently pressed
modifiers uint32;
};
@available(deprecated=10, note="Instead, use fuchsia.ui.pointer")
type PointerEventType = strict enum {
/// 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;
};
@available(deprecated=10, note="Instead, use fuchsia.ui.pointer")
type PointerEventPhase = strict enum {
/// 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.
@available(deprecated=10, note="Instead, use fuchsia.ui.pointer")
type PointerEvent = struct {
/// Time the event was delivered. The time is in nanoseconds and corresponds
/// to the monotonic time as determined by the zx_clock_get_monotonic syscall.
event_time uint64;
device_id uint32;
pointer_id uint32;
type PointerEventType;
phase PointerEventPhase;
/// `x` and `y` are in the coordinate system of the View.
x float32;
y float32;
// TODO(jpoichet) float32 vx;
// TODO(jpoichet) float32 vy;
@allow_deprecated_struct_defaults
radius_major float32 = 0.0; // DO NOT USE
@allow_deprecated_struct_defaults
radius_minor float32 = 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`
buttons uint32;
};
@available(deprecated=10, note="Instead, use fuchsia.ui.views.ViewRefFocused")
type FocusEvent = struct {
/// Time the event was delivered. The time is in nanoseconds and corresponds
/// to the monotonic time as determined by the zx_clock_get_monotonic syscall.
event_time uint64;
/// Whether the view has gained input focused or not.
focused bool;
};
type MediaButtonsEvent = table {
1: volume int8;
2: mic_mute bool;
3: pause bool;
4: camera_disable bool;
@available(added=15)
5: power bool;
};
type InputEvent = strict union {
@available(deprecated=10, note="Instead, use fuchsia.ui.pointer")
1: pointer PointerEvent;
@available(deprecated=13)
2: keyboard KeyboardEvent;
@available(deprecated=10, note="Instead, use fuchsia.ui.views.ViewRefFocused")
3: focus FocusEvent;
};