blob: f6d854e6e83149a95ac67668914ce7d1980ba20f [file] [log] [blame]
// Copyright 2017 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 KeyboardType {
TEXT = 0;
NUMBER = 1;
PHONE = 2;
DATETIME = 3;
};
enum InputMethodAction {
UNSPECIFIED = 0;
NONE = 1;
GO = 2;
SEARCH = 3;
SEND = 4;
NEXT = 5;
DONE = 6;
PREVIOUS = 7;
};
/// The current text, selection, and composing state for editing a run of text.
struct TextInputState {
/// Current state revision to avoid race conditions.
uint32 revision;
/// The current text being edited.
string text;
/// The range of text that is currently selected.
TextSelection selection;
/// The range of text that is still being composed.
TextRange composing;
};
/// A interface for interacting with a text input control.
protocol InputMethodEditor {
SetKeyboardType(KeyboardType keyboard_type);
SetState(TextInputState state);
InjectInput(InputEvent event);
// TODO(TEXT-19): remove these in a later change, after PlatformView has been
// switched over to open/close on the input_connection_ instead.
Show();
Hide();
};
/// An interface to receive information from `TextInputService`.
protocol InputMethodEditorClient {
DidUpdateState(TextInputState state, InputEvent? event);
OnAction(InputMethodAction action);
};