159 lines
4.2 KiB
Plaintext
159 lines
4.2 KiB
Plaintext
// 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.
|
|
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;
|
|
float32 radius_minor;
|
|
// 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;
|
|
};
|
|
|
|
union InputEvent {
|
|
PointerEvent pointer;
|
|
KeyboardEvent keyboard;
|
|
FocusEvent focus;
|
|
};
|