Files

267 lines
9.8 KiB
C

// Copyright (c) 2019-2026 Andreas T Jonsson <mail@andreasjonsson.se>
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
//
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source
// distribution.
#ifndef _KEYMAP_H_
#define _KEYMAP_H_
#include <circle/types.h>
#include <libretro.h>
// USB HID scancode → libretro RETROK_* keycode.
// RETROK_UNKNOWN (0) means unmapped.
static const unsigned usbToRetroK[256] = {
RETROK_UNKNOWN, // 0x00
RETROK_UNKNOWN, // 0x01
RETROK_UNKNOWN, // 0x02
RETROK_UNKNOWN, // 0x03
RETROK_a, // 0x04 A
RETROK_b, // 0x05 B
RETROK_c, // 0x06 C
RETROK_d, // 0x07 D
RETROK_e, // 0x08 E
RETROK_f, // 0x09 F
RETROK_g, // 0x0A G
RETROK_h, // 0x0B H
RETROK_i, // 0x0C I
RETROK_j, // 0x0D J
RETROK_k, // 0x0E K
RETROK_l, // 0x0F L
RETROK_m, // 0x10 M
RETROK_n, // 0x11 N
RETROK_o, // 0x12 O
RETROK_p, // 0x13 P
RETROK_q, // 0x14 Q
RETROK_r, // 0x15 R
RETROK_s, // 0x16 S
RETROK_t, // 0x17 T
RETROK_u, // 0x18 U
RETROK_v, // 0x19 V
RETROK_w, // 0x1A W
RETROK_x, // 0x1B X
RETROK_y, // 0x1C Y
RETROK_z, // 0x1D Z
RETROK_1, // 0x1E 1
RETROK_2, // 0x1F 2
RETROK_3, // 0x20 3
RETROK_4, // 0x21 4
RETROK_5, // 0x22 5
RETROK_6, // 0x23 6
RETROK_7, // 0x24 7
RETROK_8, // 0x25 8
RETROK_9, // 0x26 9
RETROK_0, // 0x27 0
RETROK_RETURN, // 0x28 Enter
RETROK_ESCAPE, // 0x29 Escape
RETROK_BACKSPACE, // 0x2A Backspace
RETROK_TAB, // 0x2B Tab
RETROK_SPACE, // 0x2C Space
RETROK_MINUS, // 0x2D Minus
RETROK_EQUALS, // 0x2E Equal
RETROK_LEFTBRACKET, // 0x2F [
RETROK_RIGHTBRACKET, // 0x30 ]
RETROK_BACKSLASH, // 0x31 Backslash
RETROK_UNKNOWN, // 0x32
RETROK_SEMICOLON, // 0x33 Semicolon
RETROK_QUOTE, // 0x34 Quote
RETROK_BACKQUOTE, // 0x35 Backquote
RETROK_COMMA, // 0x36 Comma
RETROK_PERIOD, // 0x37 Period
RETROK_SLASH, // 0x38 Slash
RETROK_CAPSLOCK, // 0x39 CapsLock
RETROK_F1, // 0x3A F1
RETROK_F2, // 0x3B F2
RETROK_F3, // 0x3C F3
RETROK_F4, // 0x3D F4
RETROK_F5, // 0x3E F5
RETROK_F6, // 0x3F F6
RETROK_F7, // 0x40 F7
RETROK_F8, // 0x41 F8
RETROK_F9, // 0x42 F9
RETROK_F10, // 0x43 F10
RETROK_F11, // 0x44 F11
RETROK_F12, // 0x45 F12
RETROK_PRINT, // 0x46 PrintScreen
RETROK_SCROLLOCK, // 0x47 ScrollLock
RETROK_PAUSE, // 0x48 Pause
RETROK_INSERT, // 0x49 Insert
RETROK_HOME, // 0x4A Home
RETROK_PAGEUP, // 0x4B PageUp
RETROK_DELETE, // 0x4C Delete
RETROK_END, // 0x4D End
RETROK_PAGEDOWN, // 0x4E PageDown
RETROK_RIGHT, // 0x4F Right
RETROK_LEFT, // 0x50 Left
RETROK_DOWN, // 0x51 Down
RETROK_UP, // 0x52 Up
RETROK_NUMLOCK, // 0x53 NumLock
RETROK_KP_DIVIDE, // 0x54 Numpad /
RETROK_KP_MULTIPLY, // 0x55 Numpad *
RETROK_KP_MINUS, // 0x56 Numpad -
RETROK_KP_PLUS, // 0x57 Numpad +
RETROK_KP_ENTER, // 0x58 Numpad Enter
RETROK_KP1, // 0x59 Numpad 1 / End
RETROK_KP2, // 0x5A Numpad 2 / Down
RETROK_KP3, // 0x5B Numpad 3 / PageDown
RETROK_KP4, // 0x5C Numpad 4 / Left
RETROK_KP5, // 0x5D Numpad 5
RETROK_KP6, // 0x5E Numpad 6 / Right
RETROK_KP7, // 0x5F Numpad 7 / Home
RETROK_KP8, // 0x60 Numpad 8 / Up
RETROK_KP9, // 0x61 Numpad 9 / PageUp
RETROK_KP0, // 0x62 Numpad 0 / Insert
RETROK_KP_PERIOD, // 0x63 Numpad . / Delete
RETROK_UNKNOWN, // 0x64 IntlBackslash
RETROK_UNKNOWN, // 0x65 ContextMenu
RETROK_UNKNOWN, // 0x66 Power
RETROK_UNKNOWN, // 0x67 Numpad =
RETROK_UNKNOWN, // 0x68 F13
RETROK_UNKNOWN, // 0x69 F14
RETROK_UNKNOWN, // 0x6A F15
RETROK_UNKNOWN, // 0x6B F16
RETROK_UNKNOWN, // 0x6C F17
RETROK_UNKNOWN, // 0x6D F18
RETROK_UNKNOWN, // 0x6E F19
RETROK_UNKNOWN, // 0x6F F20
RETROK_UNKNOWN, // 0x70 F21
RETROK_UNKNOWN, // 0x71 F22
RETROK_UNKNOWN, // 0x72 F23
RETROK_UNKNOWN, // 0x73 F24
RETROK_UNKNOWN, // 0x74 Open
RETROK_UNKNOWN, // 0x75 Help
RETROK_UNKNOWN, // 0x76
RETROK_UNKNOWN, // 0x77 Select
RETROK_UNKNOWN, // 0x78
RETROK_UNKNOWN, // 0x79 Again
RETROK_UNKNOWN, // 0x7A Undo
RETROK_UNKNOWN, // 0x7B Cut
RETROK_UNKNOWN, // 0x7C Copy
RETROK_UNKNOWN, // 0x7D Paste
RETROK_UNKNOWN, // 0x7E Find
RETROK_UNKNOWN, // 0x7F VolumeMute
RETROK_UNKNOWN, // 0x80 VolumeUp
RETROK_UNKNOWN, // 0x81 VolumeDown
RETROK_UNKNOWN, // 0x82
RETROK_UNKNOWN, // 0x83
RETROK_UNKNOWN, // 0x84
RETROK_UNKNOWN, // 0x85 NumpadComma
RETROK_UNKNOWN, // 0x86
RETROK_UNKNOWN, // 0x87 IntlRo
RETROK_UNKNOWN, // 0x88 KanaMode
RETROK_UNKNOWN, // 0x89 IntlYen
RETROK_UNKNOWN, // 0x8A Convert
RETROK_UNKNOWN, // 0x8B NonConvert
RETROK_UNKNOWN, // 0x8C
RETROK_UNKNOWN, // 0x8D
RETROK_UNKNOWN, // 0x8E
RETROK_UNKNOWN, // 0x8F
RETROK_UNKNOWN, // 0x90 Lang1
RETROK_UNKNOWN, // 0x91 Lang2
RETROK_UNKNOWN, // 0x92 Lang3
RETROK_UNKNOWN, // 0x93 Lang4
RETROK_UNKNOWN, // 0x94 Lang5
RETROK_UNKNOWN, // 0x95
RETROK_UNKNOWN, // 0x96
RETROK_UNKNOWN, // 0x97
RETROK_UNKNOWN, // 0x98
RETROK_UNKNOWN, // 0x99
RETROK_UNKNOWN, // 0x9A
RETROK_UNKNOWN, // 0x9B Abort
RETROK_UNKNOWN, // 0x9C
RETROK_UNKNOWN, // 0x9D
RETROK_UNKNOWN, // 0x9E
RETROK_UNKNOWN, // 0x9F
RETROK_UNKNOWN, // 0xA0
RETROK_UNKNOWN, // 0xA1
RETROK_UNKNOWN, // 0xA2
RETROK_UNKNOWN, // 0xA3 Props
RETROK_UNKNOWN, // 0xA4
RETROK_UNKNOWN, // 0xA5
RETROK_UNKNOWN, // 0xA6
RETROK_UNKNOWN, // 0xA7
RETROK_UNKNOWN, // 0xA8
RETROK_UNKNOWN, // 0xA9
RETROK_UNKNOWN, // 0xAA
RETROK_UNKNOWN, // 0xAB
RETROK_UNKNOWN, // 0xAC
RETROK_UNKNOWN, // 0xAD
RETROK_UNKNOWN, // 0xAE
RETROK_UNKNOWN, // 0xAF
RETROK_UNKNOWN, // 0xB0
RETROK_UNKNOWN, // 0xB1
RETROK_UNKNOWN, // 0xB2
RETROK_UNKNOWN, // 0xB3
RETROK_UNKNOWN, // 0xB4
RETROK_UNKNOWN, // 0xB5
RETROK_UNKNOWN, // 0xB6 NumpadParenLeft
RETROK_UNKNOWN, // 0xB7 NumpadParenRight
RETROK_UNKNOWN, // 0xB8
RETROK_UNKNOWN, // 0xB9
RETROK_UNKNOWN, // 0xBA
RETROK_UNKNOWN, // 0xBB NumpadBackspace
RETROK_UNKNOWN, // 0xBC
RETROK_UNKNOWN, // 0xBD
RETROK_UNKNOWN, // 0xBE
RETROK_UNKNOWN, // 0xBF
RETROK_UNKNOWN, // 0xC0
RETROK_UNKNOWN, // 0xC1
RETROK_UNKNOWN, // 0xC2
RETROK_UNKNOWN, // 0xC3
RETROK_UNKNOWN, // 0xC4
RETROK_UNKNOWN, // 0xC5
RETROK_UNKNOWN, // 0xC6
RETROK_UNKNOWN, // 0xC7
RETROK_UNKNOWN, // 0xC8
RETROK_UNKNOWN, // 0xC9
RETROK_UNKNOWN, // 0xCA
RETROK_UNKNOWN, // 0xCB
RETROK_UNKNOWN, // 0xCC
RETROK_UNKNOWN, // 0xCD
RETROK_UNKNOWN, // 0xCE
RETROK_UNKNOWN, // 0xCF
RETROK_UNKNOWN, // 0xD0 NumpadMemoryStore
RETROK_UNKNOWN, // 0xD1 NumpadMemoryRecall
RETROK_UNKNOWN, // 0xD2 NumpadMemoryClear
RETROK_UNKNOWN, // 0xD3 NumpadMemoryAdd
RETROK_UNKNOWN, // 0xD4 NumpadMemorySubtract
RETROK_UNKNOWN, // 0xD5
RETROK_UNKNOWN, // 0xD6
RETROK_UNKNOWN, // 0xD7
RETROK_UNKNOWN, // 0xD8 NumpadClear
RETROK_UNKNOWN, // 0xD9 NumpadClearEntry
RETROK_UNKNOWN, // 0xDA
RETROK_UNKNOWN, // 0xDB
RETROK_UNKNOWN, // 0xDC
RETROK_UNKNOWN, // 0xDD
RETROK_UNKNOWN, // 0xDE
RETROK_UNKNOWN, // 0xDF
RETROK_LCTRL, // 0xE0 LeftCtrl
RETROK_LSHIFT, // 0xE1 LeftShift
RETROK_LALT, // 0xE2 LeftAlt
RETROK_UNKNOWN, // 0xE3 LeftOS
RETROK_RCTRL, // 0xE4 RightCtrl
RETROK_RSHIFT, // 0xE5 RightShift
RETROK_RALT, // 0xE6 RightAlt
RETROK_UNKNOWN, // 0xE7 RightOS
// 0xE8 - 0xFF reserved
};
#endif