// 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); };