0dde25e8 |
1 | /* |
ed8cf12d |
2 | Copyright 2011,2012,2013 Jun Wako <wakojun@gmail.com> |
0dde25e8 |
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 | */ |
ed8cf12d |
17 | #ifndef KEYMAP_COMMON_H |
18 | #define KEYMAP_COMMON_H |
0dde25e8 |
19 | |
56e098d7 |
20 | #include <stdint.h> |
21 | #include <stdbool.h> |
22 | #include <avr/pgmspace.h> |
ce2e06c3 |
23 | #include "keycode.h" |
ed8cf12d |
24 | #include "action.h" |
25 | #include "action_macro.h" |
26 | #include "report.h" |
56e098d7 |
27 | #include "print.h" |
28 | #include "debug.h" |
c958b2d1 |
29 | #include "keymap.h" |
56e098d7 |
30 | |
31 | |
ed8cf12d |
32 | extern const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; |
33 | extern const uint16_t fn_actions[]; |
c5b9f2b0 |
34 | |
ed8cf12d |
35 | |
36 | /* M0115 Apple Extended Keyboard ANSI |
37 | * ,---. ,---------------. ,---------------. ,---------------. ,-----------. ,---. |
38 | * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |Pwr| |
39 | * `---' `---------------' `---------------' `---------------' `-----------' `---' |
40 | * ,-----------------------------------------------------------. ,-----------. ,---------------. |
41 | * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backspa| |Ins|Hom|PgU| |NmL| =| /| *| |
42 | * |-----------------------------------------------------------| |-----------| |---------------| |
43 | * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| -| |
44 | * |-----------------------------------------------------------| `-----------' |---------------| |
45 | * |CapsLo| A| S| D| F| G| H| J| K| L| ;| '|Return | | 4| 5| 6| +| |
46 | * |-----------------------------------------------------------| ,---. |---------------| |
47 | * |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| | |
48 | * |-----------------------------------------------------------| ,-----------. |-----------|Ent| |
49 | * |Ctrl |Opt |Cmd | Space | |Opt |Ctrl | |Lef|Dow|Rig| | 0| .| | |
50 | * `-----------------------------------------------------------' `-----------' `---------------' |
51 | */ |
52 | #define KEYMAP_EXT_ANSI( \ |
c5b9f2b0 |
53 | K35, K7A,K78,K63,K76, K60,K61,K62,K64, K65,K6D,K67,K6F, K69,K6B,K71, K7F, \ |
54 | K32,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, K72,K73,K74, K47,K51,K4B,K43, \ |
55 | K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E,K2A, K75,K77,K79, K59,K5B,K5C,K4E, \ |
56 | K39,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27, K24, K56,K57,K58,K45, \ |
57 | K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C, K7B, K3E, K53,K54,K55, \ |
ed8cf12d |
58 | K36,K3A,K37, K31, K7C,K7D, K3B,K3D,K3C, K52, K41,K4C \ |
56e098d7 |
59 | ) { \ |
ce2e06c3 |
60 | { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \ |
ed8cf12d |
61 | { KC_##K08, KC_##K09, KC_NUBS, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \ |
ce2e06c3 |
62 | { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \ |
63 | { KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \ |
64 | { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \ |
65 | { KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \ |
ed8cf12d |
66 | { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_PENT, KC_##K35, KC_##K36, KC_##K37 }, \ |
ce2e06c3 |
67 | { KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_NO }, \ |
ed8cf12d |
68 | { KC_F17, KC_##K41, KC_NO, KC_##K43, KC_F18, KC_##K45, KC_NO, KC_##K47 }, \ |
69 | { KC_NO, KC_NO, KC_NO, KC_##K4B, KC_##K4C, KC_NO, KC_##K4E, KC_F18 }, \ |
70 | { KC_F19, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \ |
71 | { KC_##K58, KC_##K59, KC_F20, KC_##K5B, KC_##K5C, KC_INT3, KC_INT1, KC_PCMM }, \ |
72 | { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_LANG2, KC_##K67 }, \ |
73 | { KC_LANG1, KC_##K69, KC_F16, KC_##K6B, KC_NO, KC_##K6D, KC_APP, KC_##K6F }, \ |
ce2e06c3 |
74 | { KC_NO, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \ |
cf1eb8fb |
75 | { KC_##K78, KC_##K79, KC_##K7A, KC_##K7B, KC_##K7C, KC_##K7D, KC_NO, KC_##K7F } \ |
56e098d7 |
76 | } |
56e098d7 |
77 | |
ed8cf12d |
78 | /* M0115 Apple Extended Keyboard ISO |
d2e35871 |
79 | * ,---. ,---------------. ,---------------. ,---------------. ,-----------. ,---. |
80 | * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| |Pwr| |
81 | * `---' `---------------' `---------------' `---------------' `-----------' `---' |
82 | * ,-----------------------------------------------------------. ,-----------. ,---------------. |
83 | * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backspa| |Ins|Hom|PgU| |NmL| =| /| *| |
84 | * |-----------------------------------------------------------| |-----------| |---------------| |
ed8cf12d |
85 | * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Retur| |Del|End|PgD| | 7| 8| 9| -| |
86 | * |------------------------------------------------------` | `-----------' |---------------| |
87 | * |CapsLo| A| S| D| F| G| H| J| K| L| ;| '| #| | | 4| 5| 6| +| |
d2e35871 |
88 | * |-----------------------------------------------------------| ,---. |---------------| |
ed8cf12d |
89 | * |Shif| \| Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| | |
d2e35871 |
90 | * |-----------------------------------------------------------| ,-----------. |-----------|Ent| |
91 | * |Ctrl |Opt |Cmd | Space | |Opt |Ctrl | |Lef|Dow|Rig| | 0| .| | |
92 | * `-----------------------------------------------------------' `-----------' `---------------' |
93 | */ |
ed8cf12d |
94 | #define KEYMAP_EXT_ISO( \ |
9a72c7b8 |
95 | K35, K7A,K78,K63,K76, K60,K61,K62,K64, K65,K6D,K67,K6F, K69,K6B,K71, K7F, \ |
96 | K32,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, K72,K73,K74, K47,K51,K4B,K43, \ |
ed8cf12d |
97 | K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E,K24, K75,K77,K79, K59,K5B,K5C,K4E, \ |
98 | K39,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27,K2A, K56,K57,K58,K45, \ |
99 | K38,K0A,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C, K7B, K3E, K53,K54,K55, \ |
d2e35871 |
100 | K36,K3A,K37, K31, K7C,K7D, K3B,K3D,K3C, K52, K41,K4C \ |
ed8cf12d |
101 | ) { \ |
102 | { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \ |
103 | { KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \ |
104 | { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \ |
105 | { KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \ |
106 | { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \ |
107 | { KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \ |
108 | { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_PENT, KC_##K35, KC_##K36, KC_##K37 }, \ |
109 | { KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_NO }, \ |
110 | { KC_F17, KC_##K41, KC_NO, KC_##K43, KC_F18, KC_##K45, KC_NO, KC_##K47 }, \ |
111 | { KC_NO, KC_NO, KC_NO, KC_##K4B, KC_##K4C, KC_NO, KC_##K4E, KC_F18 }, \ |
112 | { KC_F19, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \ |
113 | { KC_##K58, KC_##K59, KC_F20, KC_##K5B, KC_##K5C, KC_INT3, KC_INT1, KC_PCMM }, \ |
114 | { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_LANG2, KC_##K67 }, \ |
115 | { KC_LANG1, KC_##K69, KC_F16, KC_##K6B, KC_NO, KC_##K6D, KC_APP, KC_##K6F }, \ |
116 | { KC_NO, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \ |
117 | { KC_##K78, KC_##K79, KC_##K7A, KC_##K7B, KC_##K7C, KC_##K7D, KC_NO, KC_##K7F } \ |
118 | } |
119 | |
120 | |
121 | |
122 | |
123 | /* M0116 Apple Standard Keyboard ANSI |
d2e35871 |
124 | * +-------+ |
125 | * | power | |
126 | * +-------+ |
127 | * +---+---+---+---+---+---+---+---+---+---+---+---+---+-----+ +---+---+---+---+ |
128 | * |esc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | bks | |clr| = | / | * | |
129 | * +---------------------------------------------------------+ +---+---+---+---+ |
130 | * | tab | q | w | e | r | t | y | u | i | o | p | [ | ] | | | 7 | 8 | 9 | + | |
131 | * +-----------------------------------------------------+ | +---+---+---+---+ |
132 | * | ctrl | a | s | d | f | g | h | j | k | l | ; | ' |return| | 4 | 5 | 6 | - | |
133 | * +---------------------------------------------------------+ +---+---+---+---+ |
134 | * | shift | z | x | c | v | b | n | m | , | . | / | shift | | 1 | 2 | 3 | | |
135 | * +---------------------------------------------------------+ +-------+---|ent| |
136 | * |cap|opt|comnd| ` | | \ |lef|rig|dwn|up | | 0 | . | | |
137 | * +---------------------------------------------------------+ +-------+---+---+ |
138 | */ |
ed8cf12d |
139 | #define KEYMAP_M0116_ANSI( \ |
d2e35871 |
140 | K7F, \ |
141 | K35,K12,K13,K14,K15,K17,K16,K1A,K1C,K19,K1D,K1B,K18,K33, K47,K51,K4B,K43, \ |
142 | K30,K0C,K0D,K0E,K0F,K11,K10,K20,K22,K1F,K23,K21,K1E, K59,K5B,K5C,K45, \ |
143 | K36,K00,K01,K02,K03,K05,K04,K26,K28,K25,K29,K27, K24, K56,K57,K58,K4E, \ |
144 | K38,K06,K07,K08,K09,K0B,K2D,K2E,K2B,K2F,K2C, K7B, K53,K54,K55, \ |
145 | K39,K3A,K37,K32, K31, K2A,K3B,K3C,K3D,K3E, K52, K41,K4C \ |
146 | ) { \ |
147 | { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \ |
148 | { KC_##K08, KC_##K09, KC_NO, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \ |
149 | { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \ |
150 | { KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \ |
151 | { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \ |
152 | { KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \ |
153 | { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_NO, KC_##K35, KC_##K36, KC_##K37 }, \ |
154 | { KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_NO }, \ |
155 | { KC_NO, KC_##K41, KC_NO, KC_##K43, KC_NO, KC_##K45, KC_NO, KC_##K47 }, \ |
156 | { KC_NO, KC_NO, KC_NO, KC_##K4B, KC_##K4C, KC_NO, KC_##K4E, KC_NO }, \ |
157 | { KC_NO, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \ |
158 | { KC_##K58, KC_##K59, KC_NO, KC_##K5B, KC_##K5C, KC_NO, KC_NO, KC_NO }, \ |
159 | { KC_NO, KC_NO, KC_NO, KC_NO , KC_NO, KC_NO, KC_NO, KC_NO }, \ |
160 | { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ |
161 | { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \ |
162 | { KC_NO , KC_NO, KC_NO , KC_##K7B, KC_NO, KC_NO, KC_NO, KC_##K7F } \ |
163 | } |
164 | |
ed8cf12d |
165 | #endif |
9a72c7b8 |
166 | |
56e098d7 |
167 | |
ed8cf12d |
168 | /* |
169 | ADB ANSI/ISO Keymapping Note |
170 | ============================ |
171 | ANSI |
172 | ,----------- ----------. |
173 | | *a| 1| 2 =|Backspa| |
174 | |----------- ----------| |
175 | |Tab | Q| | ]| *c| |
176 | |----------- ----------| |
177 | |CapsLo| A| '|Return | |
178 | |----------- ----------| |
179 | |Shift | Shift | |
180 | `----------- ----------' |
181 | |
182 | ISO |
183 | ,----------- ----------. |
184 | | *a| 1| 2 =|Backspa| |
185 | |----------- ----------| |
186 | |Tab | Q| | ]|Retur| |
187 | |----------- -----` | |
188 | |CapsLo| A| '| *c| | |
189 | |----------- ----------| |
190 | |Shif| *b| Shift | |
191 | `----------- ----------' |
192 | |
193 | ADB Keyboard scan code: |
194 | ADB scan code USB usage |
195 | ------------- --------- |
196 | Key ANSI ISO ANSI ISO |
197 | --------------------------------------------- |
198 | *a 0x32 0x0A 0x35 0x35 |
199 | *b ---- 0x32 ---- 0x64 |
200 | *c 0x2A 0x2A 0x31 0x31(or 0x32) |
201 | |
202 | |
203 | TMK ADB-USB mapping: |
204 | ADB USB(ANSI) USB(ISO) |
205 | --------------------------------- |
206 | 0x32 0x35 0x64 |
207 | 0x0A ---- 0x35 |
208 | 0x2A 0x31 0x31(or 0x32) |
209 | |
210 | Note that mappings of ADB code 0x32 are diffrent between ANSI and ISO keyboard. |
211 | https://github.com/tmk/tmk_keyboard/issues/35 |
212 | */ |