142 lines
4.2 KiB
C++
142 lines
4.2 KiB
C++
#include "ADBKeymap.h"
|
|
#include "HIDTables.h"
|
|
|
|
// Définition du tableau de conversion ADB vers HID
|
|
const uint8_t ADBKeymap::keyCodeTable[128] = {
|
|
/* 0x00 = */ ADB_KEY_A,
|
|
/* 0x01 = */ ADB_KEY_S,
|
|
/* 0x02 = */ ADB_KEY_D,
|
|
/* 0x03 = */ ADB_KEY_F,
|
|
/* 0x04 = */ ADB_KEY_H,
|
|
/* 0x05 = */ ADB_KEY_G,
|
|
/* 0x06 = */ ADB_KEY_Z,
|
|
/* 0x07 = */ ADB_KEY_X,
|
|
/* 0x08 = */ ADB_KEY_C,
|
|
/* 0x09 = */ ADB_KEY_V,
|
|
/* 0x0a = */ ADB_KEY_102ND,
|
|
/* 0x0b = */ ADB_KEY_B,
|
|
/* 0x0c = */ ADB_KEY_Q,
|
|
/* 0x0d = */ ADB_KEY_W,
|
|
/* 0x0e = */ ADB_KEY_E,
|
|
/* 0x0f = */ ADB_KEY_R,
|
|
/* 0x10 = */ ADB_KEY_Y,
|
|
/* 0x11 = */ ADB_KEY_T,
|
|
/* 0x12 = */ ADB_KEY_1,
|
|
/* 0x13 = */ ADB_KEY_2,
|
|
/* 0x14 = */ ADB_KEY_3,
|
|
/* 0x15 = */ ADB_KEY_4,
|
|
/* 0x16 = */ ADB_KEY_6,
|
|
/* 0x17 = */ ADB_KEY_5,
|
|
/* 0x18 = */ ADB_KEY_EQUAL,
|
|
/* 0x19 = */ ADB_KEY_9,
|
|
/* 0x1a = */ ADB_KEY_7,
|
|
/* 0x1b = */ ADB_KEY_MINUS,
|
|
/* 0x1c = */ ADB_KEY_8,
|
|
/* 0x1d = */ ADB_KEY_0,
|
|
/* 0x1e = */ ADB_KEY_RIGHTBRACE,
|
|
/* 0x1f = */ ADB_KEY_O,
|
|
/* 0x20 = */ ADB_KEY_U,
|
|
/* 0x21 = */ ADB_KEY_LEFTBRACE,
|
|
/* 0x22 = */ ADB_KEY_I,
|
|
/* 0x23 = */ ADB_KEY_P,
|
|
/* 0x24 = */ ADB_KEY_ENTER,
|
|
/* 0x25 = */ ADB_KEY_L,
|
|
/* 0x26 = */ ADB_KEY_J,
|
|
/* 0x27 = */ ADB_KEY_APOSTROPHE,
|
|
/* 0x28 = */ ADB_KEY_K,
|
|
/* 0x29 = */ ADB_KEY_SEMICOLON,
|
|
/* 0x2a = */ ADB_KEY_HASHTILDE,
|
|
/* 0x2b = */ ADB_KEY_COMMA,
|
|
/* 0x2c = */ ADB_KEY_SLASH,
|
|
/* 0x2d = */ ADB_KEY_N,
|
|
/* 0x2e = */ ADB_KEY_M,
|
|
/* 0x2f = */ ADB_KEY_DOT,
|
|
/* 0x30 = */ ADB_KEY_TAB,
|
|
/* 0x31 = */ ADB_KEY_SPACE,
|
|
/* 0x32 = */ ADB_KEY_GRAVE,
|
|
/* 0x33 = */ ADB_KEY_BACKSPACE,
|
|
/* 0x34 = */ 0,
|
|
/* 0x35 = */ ADB_KEY_ESC,
|
|
/* 0x36 = */ ADB_KEY_LEFTCTRL,
|
|
/* 0x37 = */ ADB_KEY_LEFTMETA,
|
|
/* 0x38 = */ ADB_KEY_LEFTSHIFT,
|
|
/* 0x39 = */ ADB_KEY_CAPSLOCK,
|
|
/* 0x3a = */ ADB_KEY_LEFTALT,
|
|
/* 0x3b = */ ADB_KEY_LEFT,
|
|
/* 0x3c = */ ADB_KEY_RIGHT,
|
|
/* 0x3d = */ ADB_KEY_DOWN,
|
|
/* 0x3e = */ ADB_KEY_UP,
|
|
/* 0x3f = */ 0,
|
|
/* 0x40 = */ 0,
|
|
/* 0x41 = */ ADB_KEY_KPDOT,
|
|
/* 0x42 = */ 0,
|
|
/* 0x43 = */ ADB_KEY_KPASTERISK,
|
|
/* 0x44 = */ 0,
|
|
/* 0x45 = */ ADB_KEY_KPPLUS,
|
|
/* 0x46 = */ 0,
|
|
/* 0x47 = */ ADB_KEY_NUMLOCK,
|
|
/* 0x48 = */ 0,
|
|
/* 0x49 = */ 0,
|
|
/* 0x4a = */ 0,
|
|
/* 0x4b = */ ADB_KEY_KPSLASH,
|
|
/* 0x4c = */ ADB_KEY_KPENTER,
|
|
/* 0x4d = */ 0,
|
|
/* 0x4e = */ ADB_KEY_KPMINUS,
|
|
/* 0x4f = */ 0,
|
|
/* 0x50 = */ 0,
|
|
/* 0x51 = */ ADB_KEY_KPEQUAL,
|
|
/* 0x52 = */ ADB_KEY_KP0,
|
|
/* 0x53 = */ ADB_KEY_KP1,
|
|
/* 0x54 = */ ADB_KEY_KP2,
|
|
/* 0x55 = */ ADB_KEY_KP3,
|
|
/* 0x56 = */ ADB_KEY_KP4,
|
|
/* 0x57 = */ ADB_KEY_KP5,
|
|
/* 0x58 = */ ADB_KEY_KP6,
|
|
/* 0x59 = */ ADB_KEY_KP7,
|
|
/* 0x5a = */ 0,
|
|
/* 0x5b = */ ADB_KEY_KP8,
|
|
/* 0x5c = */ ADB_KEY_KP9,
|
|
/* 0x5d = */ ADB_KEY_KPDOT,
|
|
/* 0x5e = */ ADB_KEY_KPENTER,
|
|
/* 0x5f = */ ADB_KEY_KPEQUAL,
|
|
/* 0x60 = */ ADB_KEY_F5,
|
|
/* 0x61 = */ ADB_KEY_F6,
|
|
/* 0x62 = */ ADB_KEY_F7,
|
|
/* 0x63 = */ ADB_KEY_F3,
|
|
/* 0x64 = */ ADB_KEY_F8,
|
|
/* 0x65 = */ ADB_KEY_F9,
|
|
/* 0x66 = */ 0,
|
|
/* 0x67 = */ ADB_KEY_VOLUMEDOWN, //ADB_KEY_F11,
|
|
/* 0x68 = */ 0,
|
|
/* 0x69 = */ ADB_KEY_F13,
|
|
/* 0x6a = */ 0,
|
|
/* 0x6b = */ ADB_KEY_F14,
|
|
/* 0x6c = */ 0,
|
|
/* 0x6d = */ ADB_KEY_MUTE, //ADB_KEY_F10,
|
|
/* 0x6e = */ 0,
|
|
/* 0x6f = */ ADB_KEY_VOLUMEUP, //ADB_KEY_F12,
|
|
/* 0x70 = */ 0,
|
|
/* 0x71 = */ ADB_KEY_F15,
|
|
/* 0x72 = */ ADB_KEY_HELP, // or ADB_KEY_INSERT
|
|
/* 0x73 = */ ADB_KEY_HOME,
|
|
/* 0x74 = */ ADB_KEY_PAGEUP,
|
|
/* 0x75 = */ ADB_KEY_DELETE,
|
|
/* 0x76 = */ ADB_KEY_F4,
|
|
/* 0x77 = */ ADB_KEY_END,
|
|
/* 0x78 = */ ADB_KEY_F2,
|
|
/* 0x79 = */ ADB_KEY_PAGEDOWN,
|
|
/* 0x7a = */ ADB_KEY_F1,
|
|
/* 0x7b = */ ADB_KEY_RIGHTSHIFT,
|
|
/* 0x7c = */ ADB_KEY_RIGHTALT,
|
|
/* 0x7d = */ ADB_KEY_RIGHTCTRL,
|
|
/* 0x7e = */ 0,
|
|
/* 0x7f = */ ADB_KEY_POWER, // Special key, repeated in both bytes of the register
|
|
};
|
|
|
|
bool ADBKeymap::isNumericKeypadKey(uint8_t hid_keycode) {
|
|
// Codes HID pour les touches du pavé numérique (0x52 à 0x63)
|
|
return (hid_keycode >= ADB_KEY_KPSLASH && hid_keycode <= ADB_KEY_KPDOT) ||
|
|
(hid_keycode == ADB_KEY_KPEQUAL);
|
|
|
|
}
|