fuchsia.ui.input

PROTOCOLS

ImeService

Defined in fuchsia.ui.input/ime_service.fidl

The service provided by an IME

GetInputMethodEditor

Request

NameType
keyboard_type KeyboardType
action InputMethodAction
initial_state TextInputState
client InputMethodEditorClient
editor request<InputMethodEditor>

ShowKeyboard

Request

NameType

HideKeyboard

Request

NameType

InjectInput

Request

NameType
event InputEvent

DispatchKey

Request

NameType
event fuchsia.ui.input2/KeyEvent

Response

NameType
handled bool

ImeVisibilityService

Defined in fuchsia.ui.input/ime_service.fidl

Onscreen keyboard containers connect to this to know when a keyboard should be shown or hidden.

OnKeyboardVisibilityChanged

Response

NameType
visible bool

InputDeviceRegistry

Defined in fuchsia.ui.input/input_device_registry.fidl

Service to receive input events.

Input devices can describe their capabilities using DeviceDescriptor and register themselves with the InputDeviceRegistry.

RegisterDevice

Register a device with the capabilities described by DeviceDescriptor

Request

NameType
descriptor DeviceDescriptor
input_device request<InputDevice>

InputDevice

Defined in fuchsia.ui.input/input_device_registry.fidl

DispatchReport

Dispatch an InputReport from the device token

Request

NameType
report InputReport

InputMethodEditor

Defined in fuchsia.ui.input/text_input.fidl

A interface for interacting with a text input control.

SetKeyboardType

Request

NameType
keyboard_type KeyboardType

SetState

Request

NameType
state TextInputState

InjectInput

Request

NameType
event InputEvent

Show

Request

NameType

Hide

Request

NameType

InputMethodEditorClient

Defined in fuchsia.ui.input/text_input.fidl

An interface to receive information from TextInputService.

DidUpdateState

Request

NameType
state TextInputState
event InputEvent?

OnAction

Request

NameType
action InputMethodAction

STRUCTS

SendKeyboardInputCmd

Defined in fuchsia.ui.input/commands.fidl

NameTypeDescriptionDefault
compositor_id uint32 No default
keyboard_event KeyboardEvent No default

SendPointerInputCmd

Defined in fuchsia.ui.input/commands.fidl

NameTypeDescriptionDefault
compositor_id uint32 No default
pointer_event PointerEvent No default

SetHardKeyboardDeliveryCmd

Defined in fuchsia.ui.input/commands.fidl

Typically, clients should receive text inputs from an IME.

For cases where no IME mediation is desired (such as a game application), this command requests Scenic to deliver hard keyboard events to the client.

By default, Scenic will not deliver hard keyboard events to a client.

NameTypeDescriptionDefault
delivery_request bool No default

SetParallelDispatchCmd

Defined in fuchsia.ui.input/commands.fidl

Typically, clients that participate in the hit test should receive input events in parallel. This behavior is required for gesture disambiguation.

This command, typically set by the root presenter, allows disabling parallel dispatch; it is part of the input v2 transition work.

NameTypeDescriptionDefault
parallel_dispatch bool No default

KeyboardEvent

Defined in fuchsia.ui.input/input_events.fidl

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.

NameTypeDescriptionDefault
event_time uint64

Time the event was delivered. The time is in nanoseconds and corresponds to the uptime of the machine.

No default
device_id uint32 No default
phase KeyboardEventPhase No default
hid_usage uint32

Keyboard HID Usage See https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf

No default
code_point 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.

No default
modifiers uint32

Key modifiers as defined by the different kModifier constants such as kModifierCapsLock currently pressed

No default

PointerEvent

Defined in fuchsia.ui.input/input_events.fidl

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.

NameTypeDescriptionDefault
event_time uint64

Time the event was delivered. The time is in nanoseconds and corresponds to the uptime of the machine.

No default
device_id uint32 No default
pointer_id uint32 No default
type PointerEventType No default
phase PointerEventPhase No default
x float32

x and y are in the coordinate system of the View.

No default
y float32 No default
radius_major float32 0
radius_minor float32 0
buttons uint32

Currently pressed buttons as defined the kButton constants such as kMousePrimaryButton

No default

FocusEvent

Defined in fuchsia.ui.input/input_events.fidl

NameTypeDescriptionDefault
event_time uint64

Time the event was delivered. The time is in nanoseconds and corresponds to the uptime of the machine.

No default
focused bool

Whether the view has gained input focused or not.

No default

Range

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
min int32 No default
max int32 No default

RangeF

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
min float32 No default
max float32 No default

Axis

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
range Range No default
resolution int32 1
scale AxisScale AxisScale.LINEAR

AxisF

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
range RangeF No default
resolution float32 1
scale AxisScale AxisScale.LINEAR

MediaButtonsDescriptor

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
buttons uint32 No default

KeyboardDescriptor

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
keys vector<uint32> No default

KeyboardReport

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
pressed_keys vector<uint32> No default

MouseDescriptor

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
rel_x Axis No default
rel_y Axis No default
vscroll Axis? No default
hscroll Axis? No default
buttons uint32 No default

MouseReport

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
rel_x int32 No default
rel_y int32 No default
rel_hscroll int32 No default
rel_vscroll int32 No default
pressed_buttons uint32 No default

StylusDescriptor

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
x Axis No default
y Axis No default
pressure Axis? No default
is_invertible bool false
buttons uint32 No default

StylusReport

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
x int32 No default
y int32 No default
pressure uint32 No default
is_in_contact bool No default
in_range bool No default
is_inverted bool No default
pressed_buttons uint32 No default

TouchscreenDescriptor

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
x Axis No default
y Axis No default
max_finger_id uint32 No default

Touch

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
finger_id uint32 No default
x int32 No default
y int32 No default
width uint32 No default
height uint32 No default

TouchscreenReport

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
touches vector<Touch> No default

SensorDescriptor

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
type SensorType No default
loc SensorLocation No default
min_sampling_freq uint32 No default
max_sampling_freq uint32 No default
fifo_max_event_count uint32 No default
phys_min int32 No default
phys_max int32 No default

MediaButtonsReport

Defined in fuchsia.ui.input/input_reports.fidl

MediaButtonsReport describes the media buttons event delivered from the event stream. Each bool in the report represents a single button where true means the button is being pressed. A single report should be sent on every state change.

NameTypeDescriptionDefault
volume_up bool No default
volume_down bool No default
mic_mute bool No default
reset bool No default

DeviceInfo

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
vendor_id uint32 No default
product_id uint32 No default
version uint32 No default
name string No default

DeviceDescriptor

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
device_info DeviceInfo? No default
keyboard KeyboardDescriptor? No default
media_buttons MediaButtonsDescriptor? No default
mouse MouseDescriptor? No default
stylus StylusDescriptor? No default
touchscreen TouchscreenDescriptor? No default
sensor SensorDescriptor? No default

InputReport

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescriptionDefault
event_time uint64 No default
keyboard KeyboardReport? No default
media_buttons MediaButtonsReport? No default
mouse MouseReport? No default
stylus StylusReport? No default
touchscreen TouchscreenReport? No default
sensor SensorReport? No default
trace_id uint64 0

TextRange

Defined in fuchsia.ui.input/text_editing.fidl

A range of characters in a string of text. Although strings in FIDL's wire format are UTF-8 encoded, these indices are measured in UTF-16 code units for legacy reasons. These text input APIs will eventually be replaced by fuchsia.ui.text, which uses code points instead.

NameTypeDescriptionDefault
start int64

The index of the first UTF-16 code unit in the range.

If start and end are both -1, the text range is empty.

-1
end int64

The next index after the last UTF-16 code unit in this range.

If start and end are both -1, the text range is empty.

-1

TextSelection

Defined in fuchsia.ui.input/text_editing.fidl

A range of text that represents a selection. Although strings in FIDL's wire format are UTF-8 encoded, these indices are measured in UTF-16 code units for legacy reasons. These text input APIs will eventually be replaced by fuchsia.ui.text, which uses code points instead.

Text selection is always directional. Direction should be determined by comparing base and extent.

NameTypeDescriptionDefault
base int64

The offset at which the selection originates, as measured in UTF-16 code units.

Might be larger than, smaller than, or equal to extent.

No default
extent int64

The offset at which the selection terminates, as measured in UTF-16 code units.

When the user uses the arrow keys to adjust the selection, this is the value that changes. Similarly, if the current theme paints a caret on one side of the selection, this is the location at which to paint the caret.

Might be larger than, smaller than, or equal to base.

No default
affinity TextAffinity

If the text range is collapsed and has more than one visual location (e.g., occurs at a line break), which of the two locations to use when painting the caret.

No default

TextInputState

Defined in fuchsia.ui.input/text_input.fidl

The current text, selection, and composing state for editing a run of text.

NameTypeDescriptionDefault
revision uint32

Current state revision to avoid race conditions.

No default
text string

The current text being edited.

No default
selection TextSelection

The range of text that is currently selected.

No default
composing TextRange

The range of text that is still being composed.

No default

ENUMS

KeyboardEventPhase

Type: uint32

Defined in fuchsia.ui.input/input_events.fidl

NameValueDescription
PRESSED 0

When key is pressed down.

RELEASED 1

When key is released.

CANCELLED 2

This key PRESSED is not directed to this input client anymore.

REPEAT 3

Whether this is an automatically generated key repeat

PointerEventType

Type: uint32

Defined in fuchsia.ui.input/input_events.fidl

NameValueDescription
TOUCH 0

A touch-based pointer device.

STYLUS 1

A pointer device with a stylus.

INVERTED_STYLUS 2

A pointer device with a stylus that has been inverted.

MOUSE 3

A pointer device without a stylus.

PointerEventPhase

Type: uint32

Defined in fuchsia.ui.input/input_events.fidl

NameValueDescription
ADD 0

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.

HOVER 1

The pointer has moved with respect to the device while not in contact with the device.

DOWN 2

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.

MOVE 3

The pointer has moved with respect to the device while in contact with the device.

UP 4

The pointer has stopped making contact with the device.

For MOUSE devices, this is triggered when the primary button is released.

REMOVE 5

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.

CANCEL 6

The input from the pointer is no longer directed towards this receiver.

AxisScale

Type: uint32

Defined in fuchsia.ui.input/input_reports.fidl

NameValueDescription
LINEAR 0
LOGARITHMIC 1

SensorType

Type: uint32

Defined in fuchsia.ui.input/input_reports.fidl

NameValueDescription
ACCELEROMETER 0
GYROSCOPE 1
MAGNETOMETER 2
LIGHTMETER 3

SensorLocation

Type: uint32

Defined in fuchsia.ui.input/input_reports.fidl

NameValueDescription
UNKNOWN 0
BASE 1
LID 2

TextAffinity

Type: uint32

Defined in fuchsia.ui.input/text_editing.fidl

Whether a TextPosition is visually upstream or downstream of its offset.

For example, when a text position exists at a line break, a single offset has two visual positions, one prior to the line break (at the end of the first line) and one after the line break (at the start of the second line). A text affinity disambiguates between those cases. (Something similar happens with between runs of bidirectional text.)

NameValueDescription
UPSTREAM 0

The position has affinity for the upstream side of the text position.

For example, if the offset of the text position is a line break, the position represents the end of the first line.

DOWNSTREAM 1

The position has affinity for the downstream side of the text position.

For example, if the offset of the text position is a line break, the position represents the start of the second line.

KeyboardType

Type: uint32

Defined in fuchsia.ui.input/text_input.fidl

NameValueDescription
TEXT 0
NUMBER 1
PHONE 2
DATETIME 3

InputMethodAction

Type: uint32

Defined in fuchsia.ui.input/text_input.fidl

NameValueDescription
UNSPECIFIED 0
NONE 1
GO 2
SEARCH 3
SEND 4
NEXT 5
DONE 6
PREVIOUS 7

TABLES

MediaButtonsEvent

Defined in fuchsia.ui.input/input_events.fidl

OrdinalNameTypeDescription
1 volume int8
2 mic_mute bool

UNIONS

Command

Defined in fuchsia.ui.input/commands.fidl

NameTypeDescription
send_keyboard_input SendKeyboardInputCmd

Commands for conveying input events to a Session. Structs defined in input_events.fidl.

send_pointer_input SendPointerInputCmd
set_hard_keyboard_delivery SetHardKeyboardDeliveryCmd

Command to enable/disable delivery of hard keyboard events.

set_parallel_dispatch SetParallelDispatchCmd

Command to enable/disable parallel delivery of input events.

InputEvent

Defined in fuchsia.ui.input/input_events.fidl

This union does not include MediaButtonsEvent because it's processed differently.

NameTypeDescription
pointer PointerEvent
keyboard KeyboardEvent
focus FocusEvent

SensorReport

Defined in fuchsia.ui.input/input_reports.fidl

NameTypeDescription
vector int16[3]
scalar uint16

CONSTANTS

NameValueTypeDescription
kModifierNone 0 uint32

Keyboard modifiers

kModifierCapsLock 1 uint32
kModifierLeftShift 2 uint32
kModifierRightShift 4 uint32
kModifierShift 6 uint32
kModifierLeftControl 8 uint32
kModifierRightControl 16 uint32
kModifierControl 24 uint32
kModifierLeftAlt 32 uint32
kModifierRightAlt 64 uint32
kModifierAlt 96 uint32
kModifierLeftSuper 128 uint32
kModifierRightSuper 256 uint32
kModifierSuper 384 uint32
kMousePrimaryButton 1 uint32

Mouse buttons

kMouseSecondaryButton 2 uint32
kMouseTertiaryButton 4 uint32
kStylusPrimaryButton 1 uint32

Stylus buttons

kStylusSecondaryButton 2 uint32
kMouseButtonPrimary 1 uint32

Common mouse buttons report constants

kMouseButtonSecondary 2 uint32
kMouseButtonTertiary 4 uint32
kStylusBarrel 1 uint32

Common stylus buttons report constants

kVolumeUp 1 uint32

Used as mask bits (2^N) against ButtonDescriptor.buttons.

kVolumeDown 2 uint32
kMicMute 4 uint32
kReset 8 uint32