Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Classes | Namespaces | Functions | Variables
Window_mac.mm File Reference
#include <Carbon/Carbon.h>
#include "include/core/SkTypes.h"
#include "tools/sk_app/mac/Window_mac.h"
#include "tools/skui/ModifierKey.h"
#include "tools/window/mac/WindowContextFactory_mac.h"

Go to the source code of this file.

Classes

class  WindowDelegate
 
class  MainView
 

Namespaces

namespace  sk_app
 

Functions

static skui::Key get_key (unsigned short vk)
 
static skui::ModifierKey get_modifiers (const NSEvent *event)
 

Variables

NSTrackingArea * fTrackingArea
 
skui::ModifierKey fLastModifiers
 

Function Documentation

◆ get_key()

static skui::Key get_key ( unsigned short  vk)
static

Definition at line 211 of file Window_mac.mm.

211 {
212 // This will work with an ANSI QWERTY keyboard.
213 // Something more robust would be needed to support alternate keyboards.
214 static const struct {
215 unsigned short fVK;
216 skui::Key fKey;
217 } gPair[] = {
218 { kVK_Delete, skui::Key::kBack },
219 { kVK_Return, skui::Key::kOK },
220 { kVK_UpArrow, skui::Key::kUp },
221 { kVK_DownArrow, skui::Key::kDown },
222 { kVK_LeftArrow, skui::Key::kLeft },
223 { kVK_RightArrow, skui::Key::kRight },
224 { kVK_Tab, skui::Key::kTab },
225 { kVK_PageUp, skui::Key::kPageUp },
226 { kVK_PageDown, skui::Key::kPageDown },
227 { kVK_Home, skui::Key::kHome },
228 { kVK_End, skui::Key::kEnd },
229 { kVK_ForwardDelete, skui::Key::kDelete },
230 { kVK_Escape, skui::Key::kEscape },
231 { kVK_Shift, skui::Key::kShift },
232 { kVK_RightShift, skui::Key::kShift },
233 { kVK_Control, skui::Key::kCtrl },
234 { kVK_RightControl, skui::Key::kCtrl },
235 { kVK_Option, skui::Key::kOption },
236 { kVK_RightOption, skui::Key::kOption },
237 { kVK_Command, skui::Key::kSuper },
238 { kVK_RightCommand, skui::Key::kSuper },
239 { kVK_ANSI_A, skui::Key::kA },
240 { kVK_ANSI_C, skui::Key::kC },
241 { kVK_ANSI_V, skui::Key::kV },
242 { kVK_ANSI_X, skui::Key::kX },
243 { kVK_ANSI_Y, skui::Key::kY },
244 { kVK_ANSI_Z, skui::Key::kZ },
245 };
246
247 for (size_t i = 0; i < std::size(gPair); i++) {
248 if (gPair[i].fVK == vk) {
249 return gPair[i].fKey;
250 }
251 }
252
253 return skui::Key::kNONE;
254}
Key
Definition Key.h:6

◆ get_modifiers()

static skui::ModifierKey get_modifiers ( const NSEvent *  event)
static

Definition at line 256 of file Window_mac.mm.

256 {
257 NSUInteger modifierFlags = [event modifierFlags];
259
260 if (modifierFlags & NSEventModifierFlagCommand) {
261 modifiers |= skui::ModifierKey::kCommand;
262 }
263 if (modifierFlags & NSEventModifierFlagShift) {
264 modifiers |= skui::ModifierKey::kShift;
265 }
266 if (modifierFlags & NSEventModifierFlagControl) {
267 modifiers |= skui::ModifierKey::kControl;
268 }
269 if (modifierFlags & NSEventModifierFlagOption) {
270 modifiers |= skui::ModifierKey::kOption;
271 }
272
273 if ((NSKeyDown == [event type] || NSKeyUp == [event type]) && ![event isARepeat]) {
275 }
276
277 return modifiers;
278}
FlKeyEvent * event
ModifierKey
Definition ModifierKey.h:9

Variable Documentation

◆ fLastModifiers

skui::ModifierKey fLastModifiers

Definition at line 286 of file Window_mac.mm.

◆ fTrackingArea

NSTrackingArea* fTrackingArea
Initial value:

Definition at line 283 of file Window_mac.mm.