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