// Copyright 2016 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.

#include <hid/hid.h>

// clang-format off
const keychar_t qwerty_map[] = {
    // 0x00
    {}, {}, {}, {},
    // 0x04
    {'a', 'A'}, {'b', 'B'}, {'c', 'C'}, {'d', 'D'},
    // 0x08
    {'e', 'E'}, {'f', 'F'}, {'g', 'G'}, {'h', 'H'},
    // 0x0c
    {'i', 'I'}, {'j', 'J'}, {'k', 'K'}, {'l', 'L'},
    // 0x10
    {'m', 'M'}, {'n', 'N'}, {'o', 'O'}, {'p', 'P'},
    // 0x14
    {'q', 'Q'}, {'r', 'R'}, {'s', 'S'}, {'t', 'T'},
    // 0x18
    {'u', 'U'}, {'v', 'V'}, {'w', 'W'}, {'x', 'X'},
    // 0x1c
    {'y', 'Y'}, {'z', 'Z'}, {'1', '!'}, {'2', '@'},
    // 0x20
    {'3', '#'}, {'4', '$'}, {'5', '%'}, {'6', '^'},
    // 0x24
    {'7', '&'}, {'8', '*'}, {'9', '('}, {'0', ')'},
    // 0x28
    {}, {}, {}, {},
    // 0x2c
    {' ', ' '}, {'-', '_'}, {'=','+'}, {'[', '{'},
    // 0x30
    {']', '}'}, {'\\', '|'}, {}, {';', ':'},
    // 0x34
    {'\'', '"'}, {'`', '~'}, {',', '<'}, {'.', '>'},
    // 0x38
    {'/', '?'}, {}, {}, {},
    // 0x3c
    {}, {}, {}, {},
    // 0x40
    {}, {}, {}, {},
    // 0x44
    {}, {}, {}, {},
    // 0x48
    {}, {}, {}, {},
    // 0x4c
    {}, {}, {}, {},
    // 0x50
    {}, {}, {}, {},
    // 0x54
    {'/', 0}, {'*', 0}, {'-', 0}, {'+', 0},
    // 0x58
    {}, {'1', 0}, {'2', 0},  {'3', 0},
    // 0x5c
    {'4', 0}, {'5', 0}, {'6', 0}, {'7', 0},
    // 0x60
    {'8', 0}, {'9', 0}, {'0', 0}, {'.', 0},
};

const keychar_t dvorak_map[] = {
    // 0x00
    {}, {}, {}, {},
    // 0x04
    {'a', 'A'}, {'x', 'X'}, {'j', 'J'}, {'e', 'E'},
    // 0x08
    {'.', '>'}, {'u', 'U'}, {'i', 'I'}, {'d', 'D'},
    // 0x0c
    {'c', 'C'}, {'h', 'H'}, {'t', 'T'}, {'n', 'N'},
    // 0x10
    {'m', 'M'}, {'b', 'B'}, {'r', 'R'}, {'l', 'L'},
    // 0x14
    {'\'', '"'}, {'p', 'P'}, {'o', 'O'}, {'y', 'Y'},
    // 0x18
    {'g', 'G'}, {'k', 'K'}, {',', '<'}, {'q', 'Q'},
    // 0x1c
    {'f', 'F'}, {';', ':'}, {'1', '!'}, {'2', '@'},
    // 0x20
    {'3', '#'}, {'4', '$'}, {'5', '%'}, {'6', '^'},
    // 0x24
    {'7', '&'}, {'8', '*'}, {'9', '('}, {'0', ')'},
    // 0x28
    {}, {}, {}, {},
    // 0x2c
    {' ', ' '}, {'[', '{'}, {']','}'}, {'/', '?'},
    // 0x30
    {'=', '+'}, {'\\', '|'}, {}, {'s', 'S'},
    // 0x34
    {'-', '_'}, {'`', '~'}, {'w', 'W'}, {'v', 'V'},
    // 0x38
    {'z', 'Z'}, {}, {}, {},
    // 0x3c
    {}, {}, {}, {},
    // 0x40
    {}, {}, {}, {},
    // 0x44
    {}, {}, {}, {},
    // 0x48
    {}, {}, {}, {},
    // 0x4c
    {}, {}, {}, {},
    // 0x50
    {}, {}, {}, {},
    // 0x54
    {'/', 0}, {'*', 0}, {'-', 0}, {'+', 0},
    // 0x58
    {}, {'1', 0}, {'2', 0},  {'3', 0},
    // 0x5c
    {'4', 0}, {'5', 0}, {'6', 0}, {'7', 0},
    // 0x60
    {'8', 0}, {'9', 0}, {'0', 0}, {'.', 0},
};
// clang-format on
