| // Copyright 2015 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; |
| |
| // TODO(jeffbrown): Redesign input event representation later. |
| |
| // The input connection service allows a view to receive input events |
| // such as key presses and pointer movements. |
| |
| // This service can be retrieved from the |View| service provider. |
| // |
| // TODO(jeffbrown): Elaborate this. Particularly need to think about |
| // how to handle focus and gestures. |
| [Discoverable] |
| interface InputConnection { |
| // Sets the listener for receiving input events. |
| // |
| // If |listener| is null, then the previously set listener is removed. |
| 1: SetEventListener(InputListener? listener); |
| |
| // Retrieves an |InputMethodEditor| to handle text editing. |
| 2: GetInputMethodEditor(KeyboardType keyboard_type, |
| InputMethodAction action, |
| TextInputState initial_state, |
| InputMethodEditorClient client, |
| request<InputMethodEditor> editor); |
| 3: ShowKeyboard(); |
| 4: HideKeyboard(); |
| }; |
| |
| // An interface applications may implement to receive events from an |
| // input connection. |
| // TODO(MZ-33): This should include hit testing and an input arena. |
| [Discoverable] |
| interface InputListener { |
| // Called to deliver an input event. |
| // |
| // The |consumed| result should indicate whether the input event was |
| // consumed by the connection. If |consumed| is false, the system may |
| // apply default behavior of its own in response to the event. |
| 1: OnEvent(InputEvent event) -> (bool consumed); |
| }; |