// 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_android_cc.tmpl instead.
// See dev/tools/gen_keycodes/README.md for more information.

// Maps Android-specific key codes to the matching LogicalKeyboardKey id.
const std::map<int, int> g_android_to_logical_key = {
@@@ANDROID_KEY_CODE_MAP@@@
};

// Maps Android-specific scan codes to the matching PhysicalKeyboardKey id (a.k.a. HID USB code).
const std::map<int, int> g_android_to_physical_key = {
@@@ANDROID_SCAN_CODE_MAP@@@
};

// A map of Android 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. Maps Android key codes to PhysicalKeyboardKey
// codes (USB HID codes).
const std::map<int, int> g_android_numpad_map = {
@@@ANDROID_NUMPAD_MAP@@@
};
