| // 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(fxbug.dev/26729): 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); |
| }; |