]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | Copyright 2012 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 | ||
18 | #include <stdint.h> | |
19 | #include <stdbool.h> | |
20 | #include "keycode.h" | |
21 | #include "print.h" | |
22 | #include "debug.h" | |
23 | #include "util.h" | |
24 | #include "keymap.h" | |
25 | ||
26 | ||
27 | ||
28 | ||
29 | /* | |
30 | * IBM Terminal keyboard 6110345(122keys)/1392595(102keys) | |
31 | * http://geekhack.org/showthread.php?10737-What-Can-I-Do-With-a-Terminal-Model-M | |
32 | * http://www.seasip.info/VintagePC/ibm_1391406.html | |
33 | * | |
34 | * Keymap array: | |
35 | * 8 bytes | |
36 | * +---------+ | |
37 | * 0| | | |
38 | * :| | 0x00-0x87 | |
39 | * ;| | | |
40 | * 17| | | |
41 | * +---------+ | |
42 | */ | |
43 | #define KEYMAP( \ | |
44 | K08,K10,K18,K20,K28,K30,K38,K40,K48,K50,K57,K5F, \ | |
45 | K07,K0F,K17,K1F,K27,K2F,K37,K3F,K47,K4F,K56,K5E, \ | |
46 | \ | |
47 | K05,K06, K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K5D,K66, K67,K6E,K6F, K76,K77,K7E,K84, \ | |
48 | K04,K0C, K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B, K5C, K64,K65,K6D, K6C,K75,K7D,K7C, \ | |
49 | K03,K0B, K14,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K53,K5A, K63, K6B,K73,K74,K7B, \ | |
50 | K83,K0A, K12,K13,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K51,K59, K61,K62,K6A, K69,K72,K7A,K79, \ | |
51 | K01,K09, K11, K19, K29, K39, K58, K60, K68,K70,K71,K78 \ | |
52 | ) { \ | |
53 | { KC_NO, KC_##K01, KC_NO, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \ | |
54 | { KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \ | |
55 | { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \ | |
56 | { KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \ | |
57 | { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \ | |
58 | { KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \ | |
59 | { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \ | |
60 | { KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \ | |
61 | { KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \ | |
62 | { KC_##K48, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E, KC_##K4F }, \ | |
63 | { KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \ | |
64 | { KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_##K5C, KC_##K5D, KC_##K5E, KC_##K5F }, \ | |
65 | { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \ | |
66 | { KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_##K6C, KC_##K6D, KC_##K6E, KC_##K6F }, \ | |
67 | { KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \ | |
68 | { KC_##K78, KC_##K79, KC_##K7A, KC_##K7B, KC_##K7C, KC_##K7D, KC_##K7E, KC_NO }, \ | |
69 | { KC_NO, KC_NO, KC_NO, KC_##K83, KC_##K84, KC_NO, KC_NO, KC_NO, }, \ | |
70 | } | |
71 | ||
72 | /* | |
73 | * IBM Terminal keyboard 1399625, 101-key | |
74 | */ | |
75 | #define KEYMAP_101( \ | |
76 | K08, K07,K0F,K17,K1F,K27,K2F,K37,K3F,K47,K4F,K56,K5E, K57,K5F,K62, \ | |
77 | \ | |
78 | K0E,K16,K1E,K26,K25,K2E,K36,K3D,K3E,K46,K45,K4E,K55,K66, K67,K6E,K6F, K76,K77,K7E,K84, \ | |
79 | K0D,K15,K1D,K24,K2D,K2C,K35,K3C,K43,K44,K4D,K54,K5B,K5C, K64,K65,K6D, K6C,K75,K7D, \ | |
80 | K14,K1C,K1B,K23,K2B,K34,K33,K3B,K42,K4B,K4C,K52, K5A, K6B,K73,K74,K7C, \ | |
81 | K12, K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, K63, K69,K72,K7A, \ | |
82 | K11, K19, K29, K39, K58, K61,K60,K6A, K70, K71,K79 \ | |
83 | ) { \ | |
84 | { KC_NO, KC_NO , KC_NO, KC_NO , KC_NO , KC_NO , KC_NO , KC_##K07 }, \ | |
85 | { KC_##K08, KC_NO , KC_NO , KC_NO , KC_NO , KC_##K0D, KC_##K0E, KC_##K0F }, \ | |
86 | { KC_NO , KC_##K11, KC_##K12, KC_NO , KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \ | |
87 | { KC_NO , KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \ | |
88 | { KC_NO , KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \ | |
89 | { KC_NO , KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \ | |
90 | { KC_NO , KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \ | |
91 | { KC_NO , KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \ | |
92 | { KC_NO , KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \ | |
93 | { KC_NO , KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E, KC_##K4F }, \ | |
94 | { KC_NO , KC_NO , KC_##K52, KC_NO , KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \ | |
95 | { KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_##K5C, KC_NO , KC_##K5E, KC_##K5F }, \ | |
96 | { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \ | |
97 | { KC_NO , KC_##K69, KC_##K6A, KC_##K6B, KC_##K6C, KC_##K6D, KC_##K6E, KC_##K6F }, \ | |
98 | { KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \ | |
99 | { KC_NO , KC_##K79, KC_##K7A, KC_NO , KC_##K7C, KC_##K7D, KC_##K7E, KC_NO }, \ | |
100 | { KC_NO, KC_NO, KC_NO, KC_NO , KC_##K84, KC_NO, KC_NO, KC_NO, }, \ | |
101 | } | |
102 | ||
103 | // Assign Fn key(0-7) to a layer to which switch with the Fn key pressed. | |
104 | const uint8_t PROGMEM fn_layer[] = { | |
105 | 0, // Fn0 | |
106 | 0, // Fn1 | |
107 | 0, // Fn2 | |
108 | 0, // Fn3 | |
109 | 0, // Fn4 | |
110 | 0, // Fn5 | |
111 | 0, // Fn6 | |
112 | 0 // Fn7 | |
113 | }; | |
114 | ||
115 | // Assign Fn key(0-7) to a keycode sent when release Fn key without use of the layer. | |
116 | // See layer.c for details. | |
117 | const uint8_t PROGMEM fn_keycode[] = { | |
118 | KC_NO, // Fn0 | |
119 | KC_NO, // Fn1 | |
120 | KC_NO, // Fn2 | |
121 | KC_NO, // Fn3 | |
122 | KC_NO, // Fn4 | |
123 | KC_NO, // Fn5 | |
124 | KC_NO, // Fn6 | |
125 | KC_NO // Fn7 | |
126 | }; | |
127 | ||
128 | ||
129 | const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |
130 | /* 0: default | |
131 | * ,---. ,---------------. ,---------------. ,---------------. ,-----------. | |
132 | * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| | |
133 | * `---' `---------------' `---------------' `---------------' `-----------' | |
134 | * ,-----------------------------------------------------------. ,-----------. ,---------------. | |
135 | * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \|BS | |Ins|Hom|PgU| |NmL| /| *| -| | |
136 | * |-----------------------------------------------------------| |-----------| |---------------| | |
137 | * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| | | |
138 | * |-----------------------------------------------------------| `-----------' |-----------| +| | |
139 | * |CapsLo| A| S| D| F| G| H| J| K| L| ;| '| #|Retu| | 4| 5| 6| | | |
140 | * |-----------------------------------------------------------| ,---. |---------------| | |
141 | * |Shif| \| Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| | | |
142 | * |-----------------------------------------------------------| ,-----------. |-----------|Ent| | |
143 | * |Ctrl| |Alt | Space |Alt | |Ctrl| |Lef|Dow|Rig| | 0| .| | | |
144 | * `----' `---------------------------------------' `----' `-----------' `---------------' | |
145 | */ | |
146 | /* | |
147 | KEYMAP( | |
148 | F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, | |
149 | F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, | |
150 | ||
151 | PSCR,ESC, GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JYEN,BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, | |
152 | SLCK,INT4, TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSLS, DEL, END, PGDN, P7, P8, P9, PPLS, | |
153 | PAUS,INT5, CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NUHS,ENT, UP, P4, P5, P6, PCMM, | |
154 | APP, INT6, LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RO, RSFT, LEFT,INT2,RGHT, P1, P2, P3, PENT, | |
155 | RGUI,LGUI, LCTL, LALT, SPC, RALT, RCTL, DOWN, NO, P0, PDOT,NO | |
156 | ), | |
157 | */ | |
158 | // pseudo ANSI | |
159 | KEYMAP( | |
160 | F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, | |
161 | F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, | |
162 | ||
163 | PSCR,ESC, ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NO, BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, | |
164 | SLCK,INT4, TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, NO, DEL, END, PGDN, P7, P8, P9, PPLS, | |
165 | PAUS,INT5, LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, BSLS,ENT, UP, P4, P5, P6, PCMM, | |
166 | APP, INT6, LSFT,LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, NO, RSFT, LEFT,INT2,RGHT, P1, P2, P3, PENT, | |
167 | RGUI,LGUI, LCTL, LALT, SPC, LGUI, GRV, DOWN, NO, P0, PDOT,NO | |
168 | ), | |
169 | ||
170 | /* 101-key keymaps | |
171 | */ | |
172 | /* 0: default | |
173 | * ,---. ,---------------. ,---------------. ,---------------. ,-----------. | |
174 | * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| | |
175 | * `---' `---------------' `---------------' `---------------' `-----------' | |
176 | * ,-----------------------------------------------------------. ,-----------. ,---------------. | |
177 | * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backspa| |Ins|Hom|PgU| |NmL| /| *| -| | |
178 | * |-----------------------------------------------------------| |-----------| |---------------| | |
179 | * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| | | |
180 | * |-----------------------------------------------------------| `-----------' |-----------| +| | |
181 | * |CapsLo| A| S| D| F| G| H| J| K| L| ;| '|Return | | 4| 5| 6| | | |
182 | * |-----------------------------------------------------------| ,---. |---------------| | |
183 | * |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| | | |
184 | * |-----------------------------------------------------------| ,-----------. |-----------|Ent| | |
185 | * |Ctrl| |Alt | Space |Alt | |Ctrl| |Lef|Dow|Rig| | 0| .| | | |
186 | * `----' `---------------------------------------' `----' `-----------' `---------------' | |
187 | */ | |
188 | /* | |
189 | KEYMAP_101( | |
190 | ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK, BRK, | |
191 | ||
192 | GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,MINS, EQL,BSPC, INS,HOME,PGUP, NLCK,PSLS,PAST,PMNS, | |
193 | TAB, Q, W, E, R, T, Y, U, I, O, P,LBRC,RBRC,BSLS, DEL, END,PGDN, P7, P8, P9, | |
194 | CAPS, A, S, D, F, G, H, J, K, L,SCLN,QUOT, ENT, P4, P5, P6,PPLS, | |
195 | LSFT, Z, X, C, V, B, N, M,COMM, DOT,SLSH, RSFT, UP, P1, P2, P3, | |
196 | LCTL, LALT, SPC, RALT, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT | |
197 | ), | |
198 | */ | |
199 | }; |