Flutter macOS Embedder
FlutterKeyboardViewDelegate.h
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #import <Cocoa/Cocoa.h>
6 
8 #import "flutter/shell/platform/embedder/embedder.h"
9 
10 namespace flutter {
11 
12 // Signature used to notify that a keyboard layout has changed.
13 typedef void (^KeyboardLayoutNotifier)();
14 
15 // The printable result of a key under certain modifiers, used to derive key
16 // mapping.
17 typedef struct {
18  // The printable character.
19  //
20  // If `isDeadKey` is true, then this is the character when pressing the same
21  // dead key twice.
22  uint32_t character;
23 
24  // Whether this character is a dead key.
25  //
26  // A dead key is a key that is not counted as text per se, but holds a
27  // diacritics to be added to the next key.
28  bool isDeadKey;
29 } LayoutClue;
30 
31 } // namespace flutter
32 
33 /**
34  * An interface for a class that can provides |FlutterKeyboardManager| with
35  * platform-related features.
36  *
37  * This protocol is typically implemented by |FlutterViewController|.
38  */
40 
41 @required
42 /**
43  * Get the next responder to dispatch events that the keyboard system
44  * (including text input) do not handle.
45  *
46  * If the |nextResponder| is null, then those events will be discarded.
47  */
48 @property(nonatomic, readonly, nullable) NSResponder* nextResponder;
49 
50 /**
51  * Dispatch events to the framework to be processed by |HardwareKeyboard|.
52  *
53  * This method typically forwards events to
54  * |FlutterEngine.sendKeyEvent:callback:userData:|.
55  */
56 - (void)sendKeyEvent:(const FlutterKeyEvent&)event
57  callback:(nullable FlutterKeyEventCallback)callback
58  userData:(nullable void*)userData;
59 
60 /**
61  * Get a binary messenger to send channel messages with.
62  *
63  * This method is used to create the key data channel and typically
64  * forwards to |FlutterEngine.binaryMessenger|.
65  */
67 
68 /**
69  * Dispatch events that are not handled by the keyboard event handlers
70  * to the text input handler.
71  *
72  * This method typically forwards events to |TextInputPlugin.handleKeyEvent|.
73  */
74 - (BOOL)onTextInputKeyEvent:(nonnull NSEvent*)event;
75 
76 /**
77  * Add a listener that is called whenever the user changes keyboard layout.
78  *
79  * Only one listeners is supported. Adding new ones overwrites the current one.
80  * Assigning nil unsubscribes.
81  */
82 - (void)subscribeToKeyboardLayoutChange:(nullable flutter::KeyboardLayoutNotifier)callback;
83 
84 /**
85  * Querying the printable result of a key under the given modifier state.
86  */
87 - (flutter::LayoutClue)lookUpLayoutForKeyCode:(uint16_t)keyCode shift:(BOOL)shift;
88 
89 /**
90  * Returns the keyboard pressed state.
91  *
92  * Returns the keyboard pressed state. The dictionary contains one entry per
93  * pressed keys, mapping from the logical key to the physical key.
94  */
95 - (nonnull NSDictionary*)getPressedState;
96 
97 @end
flutter::LayoutClue
Definition: FlutterKeyboardViewDelegate.h:17
FlutterKeyboardViewDelegate-p
Definition: FlutterKeyboardViewDelegate.h:39
flutter::LayoutClue::character
uint32_t character
Definition: FlutterKeyboardViewDelegate.h:22
flutter::KeyboardLayoutNotifier
void(^ KeyboardLayoutNotifier)()
Definition: FlutterKeyboardViewDelegate.h:13
flutter
Definition: AccessibilityBridgeMac.h:16
FlutterBinaryMessenger.h
FlutterKeyboardViewDelegate-p::nextResponder
NSResponder * nextResponder
Definition: FlutterKeyboardViewDelegate.h:48
FlutterBinaryMessenger-p
Definition: FlutterBinaryMessenger.h:48
-[FlutterKeyboardViewDelegate-p getBinaryMessenger]
nonnull id< FlutterBinaryMessenger > getBinaryMessenger()
flutter::LayoutClue::isDeadKey
bool isDeadKey
Definition: FlutterKeyboardViewDelegate.h:28
-[FlutterKeyboardViewDelegate-p getPressedState]
nonnull NSDictionary * getPressedState()