]> git.friedersdorff.com Git - max/tmk_keyboard.git/blob - converter/ps2_usb/unimap_trans.h
lufa: Fix comment on INTERRUPT_CONTROL_ENDPOINT
[max/tmk_keyboard.git] / converter / ps2_usb / unimap_trans.h
1 /*
2 Copyright 2016 Jun Wako <wakojun@gmail.com>
3
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 2 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 */
17 #ifndef UNIMAP_TRNAS_H
18 #define UNIMAP_TRNAS_H
19
20 #include <stdint.h>
21 #include <avr/pgmspace.h>
22 #include "unimap.h"
23
24
25 #define UNIMAP_PS2( \
26             K68,K69,K6A,K6B,K6C,K6D,K6E,K6F,K70,K71,K72,K73,                                     \
27     K29,    K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,K42,K43,K44,K45,      K46,K47,K48,      K01,K02,K03, \
28     K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K74,K2A,  K49,K4A,K4B,  K53,K54,K55,K56, \
29     K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30,    K31,  K4C,K4D,K4E,  K5F,K60,K61,K57, \
30     K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34,        K28,                K5C,K5D,K5E,K66, \
31     K79,K64,K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38,    K75,K7D,      K52,      K59,K5A,K5B,K58, \
32     K78,K7B,K7A,K77,        K2C,        K76,K00,K7E,K7F,K65,K7C,  K50,K51,K4F,  K32,K62,K63,K67  \
33 ) UNIMAP ( \
34             K68,K69,K6A,K6B,K6C,K6D,K6E,K6F,K70,K71,K72,K73,                                     \
35     K29,    K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,K42,K43,K44,K45,      K46,K47,K48,      K01,K02,K03, \
36     K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K74,K2A,  K49,K4A,K4B,  K53,K54,K55,K56, \
37     K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30,    K31,  K4C,K4D,K4E,  K5F,K60,K61,K57, \
38     K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34,    K32,K28,                K5C,K5D,K5E,K66, \
39     K79,K64,K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38,    K75,K7D,      K52,      K59,K5A,K5B,K58, \
40     K78,K7B,K7A,K77,        K2C,        K76,K00,K7E,K7F,K65,K7C,  K50,K51,K4F,      K62,K63,K67  \
41 )
42
43
44 /* Mapping to Universal keyboard layout
45  *
46  * Universal keyboard layout
47  *         ,-----------------------------------------------.
48  *         |F13|F14|F15|F16|F17|F18|F19|F20|F21|F22|F23|F24|
49  * ,---.   |-----------------------------------------------|     ,-----------.     ,-----------.
50  * |Esc|   |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|     |PrS|ScL|Pau|     |VDn|VUp|Mut|
51  * `---'   `-----------------------------------------------'     `-----------'     `-----------'
52  * ,-----------------------------------------------------------. ,-----------. ,---------------.
53  * |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|JPY|Bsp| |Ins|Hom|PgU| |NmL|  /|  *|  -|
54  * |-----------------------------------------------------------| |-----------| |---------------|
55  * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  \  | |Del|End|PgD| |  7|  8|  9|  +|
56  * |-----------------------------------------------------------| `-----------' |---------------|
57  * |CapsL |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '| ^a|Retn|               |  4|  5|  6|KP,|
58  * |-----------------------------------------------------------|     ,---.     |---------------|
59  * |Shft|  <|  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /| RO|Shift |     |Up |     |  1|  2|  3|KP=|
60  * |-----------------------------------------------------------| ,-----------. |---------------|
61  * |Ctl|Gui|Alt|MHEN|     Space      |HENK|KANA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| |  #|  0|  .|Ent|
62  * `-----------------------------------------------------------' `-----------' `---------------'
63  *
64  * PS/2 scan codes
65  * http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/translate.pdf
66  *         ,-----------------------------------------------.
67  *         | 08| 10| 18| 20| 28| 30| 38| 40| 48| 50| 57| 5F|
68  * ,---.   |-----------------------------------------------|     ,-----------.     ,-----------.
69  * | 76|   | 05| 06| 04| 0C| 03| 0B| 83| 0A| 01| 09| 78| 07|     | FC| 7E| FE|     | A1| B2| A3|
70  * `---'   `-----------------------------------------------'     `-----------'     `-----------'
71  * ,-----------------------------------------------------------. ,-----------. ,---------------.
72  * | 0E| 16| 1E| 26| 25| 2E| 36| 3D| 3E| 46| 45| 4E| 55| 6A| 66| | F0| EC| FD| | 77| CA| 7C| 7B|
73  * |-----------------------------------------------------------| |-----------| |---------------|
74  * | 0D  | 15| 1D| 24| 2D| 2C| 35| 3C| 43| 44| 4D| 54| 5B|  5D | | F1| E9| FA| | 6C| 75| 7D| 79|
75  * |-----------------------------------------------------------| `-----------' |---------------|
76  * | 58   | 1C| 1B| 23| 2B| 34| 33| 3B| 42| 4B| 4C| 52| ^a| 5A |               | 6B| 73| 74| 6D|
77  * |-----------------------------------------------------------|     ,---.     |---------------|
78  * | 12 | 61| 1A| 22| 21| 2A| 32| 31| 3A| 41| 49| 4A| 51|  59  |     | F5|     | 69| 72| 7A| DA|
79  * |-----------------------------------------------------------| ,-----------. |---------------|
80  * | 14| 9F| 11| 67 |     29         | 64 | 13 | 91| A7| AF| 94| | EB| F2| F4| | 68| 70| 71| 63|
81  * `-----------------------------------------------------------' `-----------' `---------------'
82  * ^a: ISO hash key uses identical scancode 5D to US backslash.
83  * 51, 63, 68, 6D: hidden keys in IBM model M
84  */
85 const uint8_t PROGMEM unimap_trans[MATRIX_ROWS][MATRIX_COLS] = {
86     { UNIMAP_NO,    UNIMAP_F9,    UNIMAP_NO,    UNIMAP_F5,    UNIMAP_F3,    UNIMAP_F1,    UNIMAP_F2,    UNIMAP_F12   }, /* 00-07 */
87     { UNIMAP_F13,   UNIMAP_F10,   UNIMAP_F8,    UNIMAP_F6,    UNIMAP_F4,    UNIMAP_TAB,   UNIMAP_GRV,   UNIMAP_NO    }, /* 08-0F */
88     { UNIMAP_F14,   UNIMAP_LALT,  UNIMAP_LSHIFT,UNIMAP_KANA,  UNIMAP_LCTL,  UNIMAP_Q,     UNIMAP_1,     UNIMAP_NO    }, /* 10-17 */
89     { UNIMAP_F15,   UNIMAP_NO,    UNIMAP_Z,     UNIMAP_S,     UNIMAP_A,     UNIMAP_W,     UNIMAP_2,     UNIMAP_NO    }, /* 18-1F */
90     { UNIMAP_F16,   UNIMAP_C,     UNIMAP_X,     UNIMAP_D,     UNIMAP_E,     UNIMAP_4,     UNIMAP_3,     UNIMAP_NO    }, /* 20-27 */
91     { UNIMAP_F17,   UNIMAP_SPACE, UNIMAP_V,     UNIMAP_F,     UNIMAP_T,     UNIMAP_R,     UNIMAP_5,     UNIMAP_NO    }, /* 28-2F */
92     { UNIMAP_F18,   UNIMAP_N,     UNIMAP_B,     UNIMAP_H,     UNIMAP_G,     UNIMAP_Y,     UNIMAP_6,     UNIMAP_NO    }, /* 30-37 */
93     { UNIMAP_F19,   UNIMAP_NO,    UNIMAP_M,     UNIMAP_J,     UNIMAP_U,     UNIMAP_7,     UNIMAP_8,     UNIMAP_NO    }, /* 38-3F */
94     { UNIMAP_F20,   UNIMAP_COMMA, UNIMAP_K,     UNIMAP_I,     UNIMAP_O,     UNIMAP_0,     UNIMAP_9,     UNIMAP_NO    }, /* 40-47 */
95     { UNIMAP_F21,   UNIMAP_DOT,   UNIMAP_SLASH, UNIMAP_L,     UNIMAP_SCOLON,UNIMAP_P,     UNIMAP_MINUS, UNIMAP_NO    }, /* 48-4F */
96     { UNIMAP_F22,   UNIMAP_RO,    UNIMAP_QUOTE, UNIMAP_NO,    UNIMAP_LBRC,  UNIMAP_EQUAL, UNIMAP_NO,    UNIMAP_F23   }, /* 50-57 */
97     { UNIMAP_CAPS,  UNIMAP_RSHIFT,UNIMAP_ENTER, UNIMAP_RBRC,  UNIMAP_NO,    UNIMAP_BSLASH,UNIMAP_NO,    UNIMAP_F24   }, /* 58-5F */
98     { UNIMAP_NO,    UNIMAP_NUBS,  UNIMAP_NO,    UNIMAP_PEQL,  UNIMAP_HENK,  UNIMAP_NO,    UNIMAP_BSPACE,UNIMAP_MHEN  }, /* 60-67 */
99     { UNIMAP_NUHS,  UNIMAP_P1,    UNIMAP_JYEN,  UNIMAP_P4,    UNIMAP_P7,    UNIMAP_PCMM,  UNIMAP_NO,    UNIMAP_NO    }, /* 68-6F */
100     { UNIMAP_P0,    UNIMAP_PDOT,  UNIMAP_P2,    UNIMAP_P5,    UNIMAP_P6,    UNIMAP_P8,    UNIMAP_ESC,   UNIMAP_NLCK  }, /* 70-77 */
101     { UNIMAP_F11,   UNIMAP_PPLS,  UNIMAP_P3,    UNIMAP_PMNS,  UNIMAP_PAST,  UNIMAP_P9,    UNIMAP_SLCK,  UNIMAP_NO    }, /* 78-7F */
102     { UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_F7,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO    }, /* 80-87 */
103     { UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO    }, /* 88-8F */
104     { UNIMAP_NO,    UNIMAP_RALT,  UNIMAP_NO,    UNIMAP_NO,    UNIMAP_RCTRL, UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO    }, /* 90-97 */
105     { UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_LGUI  }, /* 98-9F */
106     { UNIMAP_NO,    UNIMAP_VOLD,  UNIMAP_NO,    UNIMAP_MUTE,  UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_RGUI  }, /* A0-A7 */
107     { UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_APP   }, /* A8-AF */
108     { UNIMAP_NO,    UNIMAP_NO,    UNIMAP_VOLU,  UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO    }, /* B0-B7 */
109     { UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO    }, /* B8-BF */
110     { UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO    }, /* C0-C7 */
111     { UNIMAP_NO,    UNIMAP_NO,    UNIMAP_PSLS,  UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO    }, /* C8-CF */
112     { UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO    }, /* D0-D7 */
113     { UNIMAP_NO,    UNIMAP_NO,    UNIMAP_PENT,  UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO    }, /* D8-DF */
114     { UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO    }, /* E0-E7 */
115     { UNIMAP_NO,    UNIMAP_END,   UNIMAP_NO,    UNIMAP_LEFT,  UNIMAP_HOME,  UNIMAP_NO,    UNIMAP_NO,    UNIMAP_NO    }, /* E8-EF */
116     { UNIMAP_INS,   UNIMAP_DEL,   UNIMAP_DOWN,  UNIMAP_NO,    UNIMAP_RIGHT, UNIMAP_UP,    UNIMAP_NO,    UNIMAP_NO    }, /* F0-F7 */
117     { UNIMAP_NO,    UNIMAP_NO,    UNIMAP_PGDOWN,UNIMAP_NO,    UNIMAP_PSCR,  UNIMAP_PGUP,  UNIMAP_PAUSE, UNIMAP_NO    }, /* F8-FF */
118 };
119
120 #endif