]> git.friedersdorff.com Git - max/tmk_keyboard.git/blob - converter/sun_usb/unimap_trans.h
lufa: Fix comment on INTERRUPT_CONTROL_ENDPOINT
[max/tmk_keyboard.git] / converter / sun_usb / unimap_trans.h
1 /*
2 Copyright 2020 Jun Wako <wakojun@gmail.com>
3
4 This file is part of TMK keyboard. https://github.com/tmk/tmk_keyboard
5
6 This program is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 */
19 #ifndef UNIMAP_TRNAS_H
20 #define UNIMAP_TRNAS_H
21
22 #include <stdint.h>
23 #include <avr/pgmspace.h>
24 #include "unimap.h"
25
26
27 /* Mapping to Universal keyboard layout
28  * ,-------.  ,---,  ,---------------. ,---------------. ,---------------.   ,-----------. ,---------------.
29  * |  76   |  | 0F|  | 05| 06| 08| 0A| | 0C| 0E| 10| 11| | 12| 07| 09| 0B|   | 16| 17| 15| | 2D| 02| 04| 30|
30  * `-------'  `---'  `---------------' `---------------' `---------------'   `-----------' `---------------'
31  * ,-------.  ,-----------------------------------------------------------.  ,-----------. ,---------------.
32  * | 01| 03|  | 1D| 1E| 1F| 20| 21| 22| 23| 24| 25| 26| 27| 28| 29| 58| 2A|  | 2C| 34| 60| | 62| 2E| 2F| 47|
33  * |-------|  |-----------------------------------------------------------|  |------------ |---------------|
34  * | 19| 1A|  |  35 | 36| 37| 38| 39| 3A| 3B| 3C| 3D| 3E| 3F| 40| 41| 2B  |  | 42| 4A| 7B| | 44| 45| 46|   |
35  * |-------|  |-----------------------------------------------------------|  `-----------' |-----------| 7D|
36  * | 31| 33|  |  4C  | 4D| 4E| 4F| 50| 51| 52| 53| 54| 55| 56| 57|   59   |                | 5B| 5C| 5D|   |
37  * |-------|  |-----------------------------------------------------------|      ,---.     |-----------|---|
38  * | 48| 49|  | 63 |+7C| 64| 65| 66| 67| 68| 69| 6A| 6B| 6C| 6D|*6F|  6E  |      | 14|     | 70| 71| 72|   |
39  * |-------|  |-----------------------------------------------------------|  .-----------. |-----------| 5A|
40  * | 5F| 61|  | 77 | 13| 78 |*73 |       79         |*74 |*75| 7A | 43| 0D|  | 18| 1B| 1C| |   5E  | 32|   |
41  * `-------'  `-----------------------------------------------------------'  `-----------' `---------------'
42  * ,-------.  ,---,  ,---------------. ,---------------. ,---------------.   ,-----------. ,---------------.
43  * |  F23  |  |F24|  | F1| F2| F3| F4| | F5| F6| F7| F8| | F9|F10|F11|F12|   |PrS|ScL|Pau| |Mut|VoD|VoU|Ctl|
44  * `-------'  `---'  `---------------' `---------------' `---------------'   `-----------' `---------------'
45  * ,-------.  ,-----------------------------------------------------------.  ,-----------. ,---------------.
46  * |F13|F14|  |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|  |Ins|Hom|PgU| |NmL|  /|  *|  -|
47  * |-------|  |-----------------------------------------------------------|  |------------ |---------------|
48  * |F15|F16|  |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]| Bspc|  |Del|End|PgD| |  7|  8|  9|   |
49  * |-------|  |-----------------------------------------------------------|  `-----------' |-----------|  +|
50  * |F17|F18|  |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|  Return|                |  4|  5|  6|   |
51  * |-------|  |-----------------------------------------------------------|      ,---.     |-----------|---|
52  * |F19|F20|  |Shft| +\|  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /| RO| Shift|      | Up|     |  1|  2|  3|   |
53  * |-------|  |-----------------------------------------------------------|  .-----------. |-----------|Ent|
54  * |F21|F22|  |Caps|Alt|Gui |MHEN|      Space       |HENK|KAN| Gui|App|Alt|  |Lef|Dow|Rig| |      0|  .|   |
55  * `-------'  `-----------------------------------------------------------'  `-----------' `---------------'
56  * SUN scan codes: http://kentie.net/article/sunkbd/KBD.pdf
57  * Japanese specific keys*:  http://shikasan.net/sunkey/sunkey_e.html
58  * ISO key+:  https://bit.ly/3eennkS
59  */
60 const uint8_t PROGMEM unimap_trans[MATRIX_ROWS][MATRIX_COLS] = {
61     { UNIMAP_NO,   UNIMAP_F13,  UNIMAP_VOLD, UNIMAP_F14,  UNIMAP_VOLU, UNIMAP_F1,   UNIMAP_F2,   UNIMAP_F10  }, /* 00-07 */
62     { UNIMAP_F3,   UNIMAP_F11,  UNIMAP_F4,   UNIMAP_F12,  UNIMAP_F5,   UNIMAP_RALT, UNIMAP_F6,   UNIMAP_F24  }, /* 08-0F */
63     { UNIMAP_F7,   UNIMAP_F8,   UNIMAP_F9,   UNIMAP_LALT, UNIMAP_UP,   UNIMAP_PAUS, UNIMAP_PSCR, UNIMAP_SLCK }, /* 10-17 */
64     { UNIMAP_LEFT, UNIMAP_F15,  UNIMAP_F16,  UNIMAP_DOWN, UNIMAP_RGHT, UNIMAP_ESC,  UNIMAP_1,    UNIMAP_2    }, /* 18-1F */
65     { UNIMAP_3,    UNIMAP_4,    UNIMAP_5,    UNIMAP_6,    UNIMAP_7,    UNIMAP_8,    UNIMAP_9,    UNIMAP_0    }, /* 20-27 */
66     { UNIMAP_MINS, UNIMAP_EQL,  UNIMAP_GRV,  UNIMAP_BSPC, UNIMAP_INS,  UNIMAP_MUTE, UNIMAP_PSLS, UNIMAP_PAST }, /* 28-2F */
67     { UNIMAP_RCTL, UNIMAP_F17,  UNIMAP_PDOT, UNIMAP_F18,  UNIMAP_HOME, UNIMAP_TAB,  UNIMAP_Q,    UNIMAP_W    }, /* 30-37 */
68     { UNIMAP_E,    UNIMAP_R,    UNIMAP_T,    UNIMAP_Y,    UNIMAP_U,    UNIMAP_I,    UNIMAP_O,    UNIMAP_P    }, /* 38-3F */
69     { UNIMAP_LBRC, UNIMAP_RBRC, UNIMAP_DEL,  UNIMAP_APP,  UNIMAP_P7,   UNIMAP_P8,   UNIMAP_P9,   UNIMAP_PMNS }, /* 40-47 */
70     { UNIMAP_F19,  UNIMAP_F20,  UNIMAP_END,  UNIMAP_NO,   UNIMAP_LCTL, UNIMAP_A,    UNIMAP_S,    UNIMAP_D    }, /* 48-4F */
71     { UNIMAP_F,    UNIMAP_G,    UNIMAP_H,    UNIMAP_J,    UNIMAP_K,    UNIMAP_L,    UNIMAP_SCLN, UNIMAP_QUOT }, /* 50-57 */
72     { UNIMAP_BSLS, UNIMAP_ENT,  UNIMAP_PENT, UNIMAP_P4,   UNIMAP_P5,   UNIMAP_P6,   UNIMAP_P0,   UNIMAP_F21  }, /* 58-5F */
73     { UNIMAP_PGUP, UNIMAP_F22,  UNIMAP_NLCK, UNIMAP_LSFT, UNIMAP_Z,    UNIMAP_X,    UNIMAP_C,    UNIMAP_V    }, /* 60-67 */
74     { UNIMAP_B,    UNIMAP_N,    UNIMAP_M,    UNIMAP_COMM, UNIMAP_DOT,  UNIMAP_SLSH, UNIMAP_RSFT, UNIMAP_RO   }, /* 68-6F */
75     { UNIMAP_P1,   UNIMAP_P2,   UNIMAP_P3,   UNIMAP_MHEN, UNIMAP_HENK, UNIMAP_KANA, UNIMAP_F23,  UNIMAP_CAPS }, /* 70-77 */
76     { UNIMAP_LGUI, UNIMAP_SPC,  UNIMAP_RGUI, UNIMAP_PGDN, UNIMAP_NUBS, UNIMAP_PPLS, UNIMAP_NO,   UNIMAP_NO   }, /* 78-7F */
77 };
78
79
80 /* Sun type 5/5c keyboard
81  * ,-------.  ,---,  ,---------------. ,---------------. ,---------------.   ,-----------. ,---------------.
82  * | Help  |  |   |  | F1| F2| F3| F4| | F5| F6| F7| F8| | F9|F10|F11|F12|   |PrS|ScL|Pau| |Mut|VoD|VoU|Pwr|
83  * `-------'  `---'  `---------------' `---------------' `---------------'   `-----------' `---------------'
84  * ,-------.  ,-----------------------------------------------------------.  ,-----------. ,---------------.
85  * |Stp|Agn|  |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|  |Ins|Hom|PgU| |NmL|  /|  *|  -|
86  * |-------|  |-----------------------------------------------------------|  |------------ |---------------|
87  * |Prp|Und|  |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]| Bspc|  |Del|End|PgD| |  7|  8|  9|   |
88  * |-------|  |-----------------------------------------------------------|  `-----------' |-----------|  +|
89  * |Frt|Cpy|  |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|  Return|                |  4|  5|  6|   |
90  * |-------|  |-----------------------------------------------------------|      ,---.     |-----------|---|
91  * |Opn|Pst|  |Shft| +\|  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|   | Shift|      | Up|     |  1|  2|  3|   |
92  * |-------|  |-----------------------------------------------------------|  .-----------. |-----------|Ent|
93  * |Fnd|Cut|  |Caps|Alt|Meta|    |      Space       |    |   |Meta|Cmp|Alt|  |Lef|Dow|Rig| |      0|  .|   |
94  * `-------'  `-----------------------------------------------------------'  `-----------' `---------------'
95  */
96 #define UNIMAP_TYPE5( \
97     K76,      K0F,  K05,K06,K08,K0A,   K0C,K0E,K10,K11,   K12,K07,K09,K0B,  K16,K17,K15,  K2D,K02,K04,K30, \
98     K01,K03,  K1D,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K58,K2A,  K2C,K34,K60,  K62,K2E,K2F,K47, \
99     K19,K1A,  K35,K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,    K2B,  K42,K4A,K7B,  K44,K45,K46,K7D, \
100     K31,K33,  K4C,K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57,        K59,                K5B,K5C,K5D,     \
101     K48,K49,  K63,K7C,K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D,    K6F,K6E,      K14,      K70,K71,K72,K5A, \
102     K5F,K61,  K77,K13,K78,K73,        K79,            K74,K75,K7A,K43,K0D,  K18,K1B,K1C,  K5E,    K32      \
103 ) UNIMAP ( \
104             K01,K03,K19,K1A,K31,K33,K48,K49,K5F,K61,K76,K0F,                                     \
105     K1D,    K05,K06,K08,K0A,K0C,K0E,K10,K11,K12,K07,K09,K0B,      K16,K17,K15,      K02,K04,K2D, \
106     K2A,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,NO, K2B,  K2C,K34,K60,  K62,K2E,K2F,K47, \
107     K35,K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,    K58,  K42,K4A,K7B,  K44,K45,K46,K7D, \
108     K77,K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57,    NO, K59,                K5B,K5C,K5D,NO,  \
109     K63,K7C,K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D,    K6F,K6E,      K14,      K70,K71,K72,K5A, \
110     K4C,K78,K13,K73,        K79,        K74,K75,K0D,K7A,K43,K30,  K18,K1B,K1C,  K5E,    K32,NO   \
111 )
112
113
114 /* Sun type 3 keyboard 
115  * ,-------.  ,-----------------------------------------------------------.  ,-----------.
116  * | 01| 03|  | 05| 06|     08|     0A|     0C|     0E|     10| 11| 12| 2B|  | 15| 16| 17|
117  * |-------|  |-----------------------------------------------------------|  |-----------|
118  * | 19| 1A|  | 1D| 1E| 1F| 20| 21| 22| 23| 24| 25| 26| 27| 28| 29| 58| 2A|  | 2D| 2E| 2F|
119  * |-------|  |-----------------------------------------------------------|  |-----------|
120  * | 31| 33|  |  35 | 36| 37| 38| 39| 3A| 3B| 3C| 3D| 3E| 3F| 40| 41| 42  |  | 44| 45| 46|
121  * |-------|  |-----------------------------------------------------------|  |-----------|
122  * | 48| 49|  |  4C  | 4D| 4E| 4F| 50| 51| 52| 53| 54| 55| 56| 57|   59   |  | 5B| 5C| 5D|
123  * |-------|  |-----------------------------------------------------------|  |-----------|
124  * | 5F| 61|  |   63   | 64| 65| 66| 67| 68| 69| 6A| 6B| 6C| 6D|    6E| 6F|  | 70| 71| 72|
125  * `-------'  |-----------------------------------------------------------|  `-----------'
126  *            | 77 | 78  |               79                  | 7A  |   13 |  
127  *            `-----------------------------------------------------------'  
128  * http://blog.daveastels.com.s3-website-us-west-2.amazonaws.com/2014/12/27/type-3-keyboard.html
129  * https://github.com/dastels/tmk_keyboard/blob/master/converter/sun3_usb/keymap.c
130  */
131 #define UNIMAP_TYPE3( \
132     K01,K03,  K05,K06,    K08,    K0A,    K0C,    K0E,    K10,K11,K12,K2B,  K15,K16,K17, \
133     K19,K1A,  K1D,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,K58,K2A,  K2D,K2E,K2F, \
134     K31,K33,  K35, K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,   K42,  K44,K45,K46, \
135     K48,K49,  K4C,  K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57,      K59,  K5B,K5C,K5D, \
136     K5F,K61,  K63,   K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D,     K6E,K6F,  K70,K71,K72, \
137               K77,K78,                    K79,                    K7A,K13                \
138 ) UNIMAP ( \
139             K01,K03,K19,K1A,K31,K33,K48,K49,K5F,K61,NO, NO,                                      \
140     K1D,    K05,K06,K08,K0A,K0C,K0E,K10,K11,K12,NO, NO, NO,       K16,K17,K15,      NO, NO, K2D, \
141     K2A,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K28,K29,NO, K2B,  NO, NO, NO,   NO, K2E,K2F,NO,  \
142     K35,K36,K37,K38,K39,K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,    K58,  K42,NO, NO,   K44,K45,K46,NO,  \
143     K77,K4D,K4E,K4F,K50,K51,K52,K53,K54,K55,K56,K57,    NO, K59,                K5B,K5C,K5D,NO,  \
144     K63,NO, K64,K65,K66,K67,K68,K69,K6A,K6B,K6C,K6D,    K6F,K6E,      NO,       K70,K71,K72,NO,  \
145     K4C,K78,K13,NO,         K79,        NO, NO, NO, K7A,NO, NO,   NO, NO, NO,   NO,     NO, NO   \
146 )
147
148 #endif