blob: 5a309395c237ecf179d7754875252c08755a3058 [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.policy;
using fuchsia.ui.input;
/// `Presentation.CaptureKeyboardEvent` will consume this listener interface and
/// call `OnEvent` when the registered keyboard event occurs.
protocol KeyboardCaptureListenerHACK {
OnEvent(fuchsia.ui.input.KeyboardEvent event);
};
/// `Presentation.CapturePointerEvent` will consume this listener interface and
/// call `OnEvent` when a pointer event occurs.
protocol PointerCaptureListenerHACK {
OnPointerEvent(fuchsia.ui.input.PointerEvent event);
};
/// Allows clients of Presenter.Present() to control a presentation.
/// Experimental.
[Discoverable]
protocol Presentation {
/// This call exists so that base shell can capture hotkeys and do special
/// things with it (e.g., switch a session shell). Phase and modifiers are always
/// matched, and valid (non-zero) code points are matched. If there is no
/// valid code point, the filter will match against the hid usage value.
/// The full KeyboardEvent is supplied to `listener`'s OnEvent.
// TODO: Figure out the feasibility of this feature and the best place to put
// it.
CaptureKeyboardEventHACK(fuchsia.ui.input.KeyboardEvent event_to_capture,
KeyboardCaptureListenerHACK listener);
/// This call exists so that base shell can capture pointer events.
// TODO: Figure out the feasibility of this feature and the best place to put
// it. This call will be replaced by gesture disambiguation system in future.
CapturePointerEventsHACK(PointerCaptureListenerHACK listener);
/// EXPERIMENTAL. Inject pointer events into input stream. This WILL go
/// away. Used exclusively by Session Shells to test focus navigation.
// TODO(SCN-1186): Delete when RequestFocus is available.
[Transitional]
InjectPointerEventHACK(fuchsia.ui.input.PointerEvent event);
};