// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <map>

// DO NOT EDIT -- DO NOT EDIT -- DO NOT EDIT
// This file is generated by flutter/flutter@dev/tools/gen_keycodes/bin/gen_keycodes.dart and
// should not be edited directly.
//
// Edit the template dev/tools/gen_keycodes/data/keyboard_map_macos_cc.tmpl instead.
// See dev/tools/gen_keycodes/README.md for more information.

// Maps macOS-specific key code values representing [PhysicalKeyboardKey].
//
// MacOS doesn't provide a scan code, but a virtual keycode to represent a physical key.
const std::map<int, int> g_macos_to_physical_key = {
@@@MACOS_SCAN_CODE_MAP@@@
};

// A map of macOS key codes which have printable representations, but appear
// on the number pad. Used to provide different key objects for keys like
// KEY_EQUALS and NUMPAD_EQUALS.
const std::map<int, int> g_macos_numpad_map = {
@@@MACOS_NUMPAD_MAP@@@
};

// A map of macOS key codes which are numbered function keys, so that they
// can be excluded when asking "is the Fn modifier down?".
const std::map<int, int> g_macos_function_key_map = {
@@@MACOS_FUNCTION_KEY_MAP@@@
};
