| // Copyright 2019 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.input2; |
| |
| using fuchsia.ui.views; |
| |
| /// Components may request this service from their namespace to |
| /// be notified of physical key events. |
| [Discoverable] |
| protocol Keyboard { |
| /// Set key event listener for the specified View. |
| SetListener(fuchsia.ui.views.ViewRef view_ref, KeyListener listener) -> (); |
| }; |
| |
| /// Client should implement this protocol to get notified of key events. |
| /// Returning HANDLED will stop event propagation to other clients. |
| /// This notification is triggered on the following conditions: |
| /// 1. Component is focused (ViewRef is on FocusChain) |
| /// 2. Parent Views get the event first, child views last |
| /// 3. Client returning HANDLED stops the propagation to subsequent clients |
| protocol KeyListener { |
| OnKeyEvent(KeyEvent event) -> (Status result); |
| }; |
| |
| /// Return type for clients key events listener. |
| enum Status { |
| HANDLED = 1; |
| NOT_HANDLED = 2; |
| }; |