]> git.gir.st - tmk_keyboard.git/blob - converter/pc98_usb/keymap.c
Add keymap for PC98
[tmk_keyboard.git] / converter / pc98_usb / keymap.c
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 <avr/pgmspace.h>
21 #include "keycode.h"
22 #include "util.h"
23 #include "keymap.h"
24
25
26
27
28 /* PC-9801-98-S02 Raku Raku keyboard(Luckyboard) Normal Mode
29 ,---------------------------------------------------------------.
30 | 60| 61| 62| 63| 64| 65| 66| 67| 68| 69| 6A| 6B| 36| 37| 3F| 3E|
31 `---------------------------------------------------------------'
32 ,---------------------------------------------------------------.
33 | 00| 01| 02| 03| 04| 05| 58| 71| 06| 07| 08| 09| 0A| 0E|
34 |---------------------------------------------------------------|
35 | 0F| 10| 11| 12| 13| 14| 3A | 15| 16| 17| 18| 19| 1C|
36 |---------------------------------------------------------------|
37 | 74| 20| 21| 22| 23| 24| 3B | 3C | 25| 26| 27| 28| 29| |
38 |---------------------------------------------------------------|
39 | 70| 2A| 2B| 2C| 2D| 2E| 38| 3D | 39| 2F| 30| 31| 32| 33| 70|
40 `---------------------------------------------------------------'
41 | 73| 51| 5B| 59| 34| 5A| 35| xx|
42 `-----------------------------------------------'
43 xx: 74 35 F4 B5
44 */
45 #define KEYMAP( \
46 K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K36, K37, K3F, K3E, \
47 K00, K01, K02, K03, K04, K05, K58, K71, K06, K07, K08, K09, K0A, K0E, \
48 K0F, K10, K11, K12, K13, K14, K3A, K15, K16, K17, K18, K19, K1C, \
49 K74, K20, K21, K22, K23, K24, K3B, K3C, K25, K26, K27, K28, K29, \
50 K70,K2A, K2B, K2C, K2D, K2E, K38, K3D, K39, K2F, K30, K31, K32, K33, \
51 K73, K51, K5B, K59, K34, K5A, K35 \
52 ) { \
53 { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
54 { KC_##K08, KC_##K09, KC_##K0A, KC_NO, KC_NO, KC_NO, 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_NO, KC_NO, KC_##K1C, KC_NO, KC_NO, KC_NO }, \
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_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
62 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
63 { KC_NO, KC_##K51, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
64 { KC_NO, KC_NO, KC_##K5A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
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_NO, KC_NO, KC_NO, KC_NO }, \
67 { KC_##K70, KC_NO, KC_NO, KC_##K73, KC_##K74, KC_NO, KC_NO, KC_NO }, \
68 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
69 }
70
71
72
73
74 // Assign Fn key(0-7) to a layer to which switch with the Fn key pressed.
75 static const uint8_t PROGMEM fn_layer[] = {
76 2, // Fn0
77 3, // Fn1
78 4, // Fn2
79 0, // Fn3
80 0, // Fn4
81 0, // Fn5
82 0, // Fn6
83 0 // Fn7
84 };
85
86 // Assign Fn key(0-7) to a keycode sent when release Fn key without use of the layer.
87 // See layer.c for details.
88 static const uint8_t PROGMEM fn_keycode[] = {
89 KC_NO, // Fn0
90 KC_SCLN, // Fn1
91 KC_SLSH, // Fn2
92 KC_NO, // Fn3
93 KC_NO, // Fn4
94 KC_NO, // Fn5
95 KC_NO, // Fn6
96 KC_NO // Fn7
97 };
98
99
100 static const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
101 /*
102 ,---------------------------------------------------------------.
103 | 60| 61| 62| 63| 64| 65| 66| 67| 68| 69| 6A| 6B| 36| 37| 3F| 3E|
104 `---------------------------------------------------------------'
105 ,---------------------------------------------------------------.
106 | 00| 01| 02| 03| 04| 05| 58| 71| 06| 07| 08| 09| 0A| 0E|
107 |---------------------------------------------------------------|
108 | 0F| 10| 11| 12| 13| 14| 3A | 15| 16| 17| 18| 19| 1C|
109 |---------------------------------------------------------------|
110 | 74| 20| 21| 22| 23| 24| MINS| EQL| 25| 26| 27| 28| 29| |
111 |---------------------------------------------------------------|
112 | 70| 2A| 2B| 2C| 2D| 2E| 38| 3D | 39| 2F| 30| 31| 32| 33| 70|
113 `---------------------------------------------------------------'
114 | 73| 51| 5B| 59| 34| 5A| 35| xx|
115 `-----------------------------------------------'
116 */
117 KEYMAP(
118 PAUS,COPY, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14,
119 ESC, 1, 2, 3, 4, 5, NO, NO, 6, 7, 8, 9, 0, BSPC,
120 TAB, Q, W, E, R, T, UP, Y, U, I, O, P, ENT,
121 LCTL, A, S, D, F, G, MINS, EQL, H, J, K, L,SCLN,
122 LSFT, Z, X, C, V, B, INS, DOWN, DEL, N, M,COMM, DOT,SLSH,
123 LGUI, LALT, LCTL, LSFT, SPC, SPC, RALT
124 ),
125 };
126
127
128 uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col)
129 {
130 return pgm_read_byte(&keymaps[(layer)][(row)][(col)]);
131 }
132
133 uint8_t keymap_fn_layer(uint8_t index)
134 {
135 return pgm_read_byte(&fn_layer[index]);
136 }
137
138 uint8_t keymap_fn_keycode(uint8_t index)
139 {
140 return pgm_read_byte(&fn_keycode[index]);
141 }
142
143
144 #if 0
145 /* PC-9801-98-S02 Raku Raku keyboard(Luckyboard) M-siki mode
146 ,---------------------------------------------------------------.
147 | 60| 61| 62| 63| 64| 65| 66| 67| 68| 69| 6A| 6B| 36| 37| 3F| 3E|
148 `---------------------------------------------------------------'
149 ,---------------------------------------------------------------.
150 | 00| 01| 02| 03| 04| 05| NUM|CAPS| 06| 07| 08| 09| 0A| 0E|
151 |---------------------------------------------------------------|
152 | 0F| 10| 25| 20| 23| 2B| 3A | 2F| 15| 13| 11| 19| 1C|
153 |---------------------------------------------------------------|
154 | 74| 12| 16| 17| 1D| 18| 3B | 3C | 24| 1E| 14| 2E| 22| |
155 |---------------------------------------------------------------|
156 | 70| xx| 2A| 2C| xx| xx| 38| 3D | 39| 21| 29| 1F| xx| 2D| 70|
157 `---------------------------------------------------------------'
158 | 73| 51| xx| xx| 34| xx| 35| xx|
159 `-----------------------------------------------'
160 */
161
162 #define KEYMAP_M( \
163 K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K36, K37, K3F, K3E, \
164 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0E, \
165 K0F, K10, K25, K23, K20, K2B, K3A, K2F, K15, K13, K11, K19, K1C, \
166 K74, K12, K16, K17, K1D, K18, K3B, K3C, K24, K1E, K14, K2E, K22, \
167 K70, K2A, K2C, K38, K3D, K39, K21, K29, K1F, K2D, \
168 K73, K51, K34, K35 \
169 ) { \
170 { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \
171 { KC_##K08, KC_##K09, KC_##K0A, KC_NO, KC_NO, KC_NO, KC_##K0E, KC_##K0F }, \
172 { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \
173 { KC_##K18, KC_##K19, KC_NO, KC_NO, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \
174 { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO, KC_NO }, \
175 { KC_NO, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \
176 { KC_NO, KC_NO, KC_NO, KC_NO, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \
177 { KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \
178 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
179 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
180 { KC_NO, KC_##K51, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
181 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
182 { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \
183 { KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_NO, KC_NO, KC_NO, KC_NO }, \
184 { KC_##K70, KC_NO, KC_NO, KC_##K73, KC_##K74, KC_NO, KC_NO, KC_NO }, \
185 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
186 }
187 #endif
Imprint / Impressum