aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2017-01-06 17:28:45 -0500
committerGitHub <noreply@github.com>2017-01-06 17:28:45 -0500
commite7df488a92da56cf160ac64c8cc7302ab717e145 (patch)
treedd7a441ad7d086bb7cb4b093bd8d0cbd4d39d69d
parente5c7b5d8fc011eaadc31c69c76642bf81aeea152 (diff)
parent402e6c13a1617ed7337013fd49768b1457465bd7 (diff)
downloadqmk_firmware-e7df488a92da56cf160ac64c8cc7302ab717e145.tar.gz
qmk_firmware-e7df488a92da56cf160ac64c8cc7302ab717e145.zip
Merge pull request #989 from ishigoya/master
Keymap
-rwxr-xr-xkeyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-enL.pngbin0 -> 84725 bytes
-rwxr-xr-xkeyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-jpL.pngbin0 -> 82660 bytes
-rwxr-xr-xkeyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-numL.pngbin0 -> 72923 bytes
-rw-r--r--keyboards/ergodox/keymaps/ishigoya-jp/keymap.c962
-rw-r--r--keyboards/ergodox/keymaps/ishigoya-jp/readme.md54
5 files changed, 1016 insertions, 0 deletions
diff --git a/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-enL.png b/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-enL.png
new file mode 100755
index 000000000..e6aec35bf
--- /dev/null
+++ b/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-enL.png
Binary files differ
diff --git a/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-jpL.png b/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-jpL.png
new file mode 100755
index 000000000..69a1f6948
--- /dev/null
+++ b/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-jpL.png
Binary files differ
diff --git a/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-numL.png b/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-numL.png
new file mode 100755
index 000000000..8b2cce5e6
--- /dev/null
+++ b/keyboards/ergodox/keymaps/ishigoya-jp/img/keyboard-layout-numL.png
Binary files differ
diff --git a/keyboards/ergodox/keymaps/ishigoya-jp/keymap.c b/keyboards/ergodox/keymaps/ishigoya-jp/keymap.c
new file mode 100644
index 000000000..c219ce884
--- /dev/null
+++ b/keyboards/ergodox/keymaps/ishigoya-jp/keymap.c
@@ -0,0 +1,962 @@
1#include "ergodox.h"
2#include "debug.h"
3#include "action_layer.h"
4#include "keymap_jp.h"
5
6static uint16_t start;
7
8#define BASE 0 // EN layer
9#define JP 1 // Japanese
10#define JPXON 2 // JP + Fn
11#define JPKAZARI 3 // JP + KAZARI
12#define JPTOPROW 4 // JP + TOPROW
13#define JPTRKZ 5 // JP + TOPROW + KAZARI
14#define NUM 6 // Numbers
15
16#define CTLSHFT 1
17#define CUTCOPY 2
18
19//kana macro definitions start here
20
21#define JPVU 4
22#define JPNU 6
23#define JPKO 7
24#define JPSA 8
25#define JPKE 9
26#define JPHE 10
27#define JPSHI 11
28#define JPKA 12
29#define JPKI 13
30#define JPSU 14
31#define JPSO 15
32#define JPHI 16
33#define JPCHI 17
34#define JPFU 18
35#define JPSE 19
36#define JPTSU 20
37#define JPKU 21
38#define JPTE 22
39#define JPTA 23
40#define JPTO 24
41#define JPHA 25
42#define JPHO 26
43#define JPXKE 27
44#define JPXU 28
45#define JPXKA 29
46#define JPXA 30
47#define JPXO 31
48#define JPGO 32
49#define JPZA 33
50#define JPGE 34
51#define JPBE 35
52#define JPYU 36
53#define JPJI 37
54#define JPGA 38
55#define JPGI 39
56#define JPZU 40
57#define JPZO 41
58#define JPBI 42
59#define JPDI 43
60#define JPZE 44
61#define JPDU 45
62#define JPGU 46
63#define JPYA 47
64#define JPYO 48
65#define JPDE 49
66#define JPDA 50
67#define JPDO 51
68#define JPBA 52
69#define JPBO 53
70#define JPRI 54
71#define JPRE 55
72#define JPRA 56
73#define JPNA 57
74#define JPNO 58
75#define JPMI 59
76#define JPMU 60
77#define JPME 61
78#define JPNE 62
79#define JPMA 63
80#define JPXTU 64
81#define JPWA 65
82#define JPRU 66
83#define JPWO 67
84#define JPNI 68
85#define JPNN 69
86#define JPMO 70
87#define JPRO 71
88#define JPXE 72
89#define JPXI 73
90#define JPXYU 74
91#define JPXYA 75
92#define JPXYO 76
93#define JPPE 77
94#define JPPU 78
95#define JPPI 79
96#define JPPA 80
97#define JPPO 81
98#define JPBU 82
99
100// kana macro definitions end here
101
102#define SHIFT 86
103#define KAZARI 87
104#define JPFN 88 //shifts to JPXON layer
105#define TOJPLOUT 89
106#define TOENL 90
107#define TOJPL 91
108
109const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
110/* Keymap 0: Basic layer
111 *
112 *
113 * ,----------------------------------------------------. ,--------------------------------------------------.
114 * | En / 和 | | ^ | % | | |Selall| | Undo | | $ | @ | LT | UP | RT |
115 * |----------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
116 * | Tab | Q | D | R | W | B | Cut | | PgUP | J | F | U | P | DN | \ |
117 * |----------+------+------+------+------+------| Copy | | |------+------+------+------+------+--------|
118 * | / | A | S | H | T | G |------| |------| Y | N | E | O | I | , |
119 * |----------+------+------+------+------+------|Paste | | PgDN |------+------+------+------+------+--------|
120 * | Ctl+Shft | Z | X | M | C | V | | | | . | L | K | ' | ? | tmux |
121 * `----------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
122 * | LCtrl | LGui | Alt| _ | Esc | |MouseL|MouseR| - | ~ | Ctrl |
123 * `------------------------------------' `----------------------------------'
124 * ,-------------. ,-------------.
125 * |MidMs | Del | | VolUp| Mute |
126 * ,------|------|------| |------+--------+------.
127 * | | | | | VolDn| | |
128 * | Space| Shift|------| |------| Backsp |Enter |
129 * | | | Num | | Esc | | |
130 * `--------------------' `----------------------'
131 *
132 *
133 * tmux prefix set to C-b
134 *
135 */
136// If it accepts an argument (i.e, is a function), it doesn't need KC_.
137// Otherwise, it needs KC_*
138[BASE] = KEYMAP( // layer 0 : default
139 // left hand
140 M(TOJPLOUT), KC_NO, KC_EQL, LSFT(KC_5), KC_NO, KC_NO, LCTL(KC_A),
141 KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, M(CUTCOPY),
142 KC_SLSH, KC_A, KC_S, KC_H, KC_T, KC_G,
143 M(CTLSHFT), KC_Z, KC_X, KC_M, KC_C, KC_V, LCTL(KC_V),
144 KC_RCTL, KC_LGUI, KC_LALT,JP_UNDS,KC_LCTL,
145 KC_BTN3, KC_DEL,
146 KC_NO,
147 KC_SPC,KC_LSFT,F(1),
148 // right hand
149 LCTL(KC_Z), KC_NO, LSFT(KC_4), JP_AT, KC_LEFT, KC_UP, KC_RIGHT,
150 KC_PGUP, KC_J, KC_F, KC_U, KC_P, KC_DOWN, LSFT(KC_3),
151 KC_Y, KC_N, KC_E, KC_O, KC_I, KC_COMMA,
152 KC_PGDN, KC_DOT, KC_L, KC_K, LSFT(KC_7), KC_QUES, LCTL(KC_B),
153 KC_BTN1, KC_BTN2,KC_MINS,JP_TILD, KC_RCTL,
154 KC_VOLU, KC_MUTE,
155 KC_VOLD,
156 KC_SPC,KC_BSLS, KC_ENT
157 ),
158/* Keymap 1: Japanese
159 *
160 * ,--------------------------------------------------. ,--------------------------------------------------.
161 * | En / 和| | | | | | | | | | | | | | |
162 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
163 * | |   nu | ko | sa | he | ke | | | | fu | se | tsu | ku | | |
164 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
165 * | | to | shi | ka | ki | su |------| |------| a | ha | te | ta | u | |
166 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
167 * | | mu | so | hi | chi | me | | | | | ma | ho | i | | |
168 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
169 * | | | | | | | | | | | |
170 * `----------------------------------' `----------------------------------'
171 * ,-------------. ,-------------.
172 * | | | | | |
173 * ,------|------|------| |------+------+------.
174 * | | | | | | | |
175 * | shift| fn |------| |------| |kazari|
176 * | | | Num | | | | |
177 * `--------------------' `--------------------'
178 *
179 *
180 *
181 */
182[JP] = KEYMAP(
183 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
184 KC_TRNS, M(JPNU), M(JPKO), M(JPSA), M(JPHE), M(JPKE), KC_TRNS,
185 KC_TRNS, M(JPTO), M(JPSHI), M(JPKA), M(JPKI), M(JPSU),
186 KC_TRNS, M(JPMU), M(JPSO), M(JPHI), M(JPCHI), M(JPME), KC_TRNS,
187 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
188 KC_TRNS, KC_TRNS,
189 KC_NO,
190 M(SHIFT), M(JPFN), F(1),
191 // right hand
192 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
193 KC_TRNS, M(JPFU), M(JPSE), M(JPTSU), M(JPKU), KC_TRNS, KC_TRNS,
194 KC_A, M(JPHA), M(JPTE), M(JPTA), KC_U, KC_TRNS,
195 KC_TRNS, KC_TRNS, M(JPMA), M(JPHO), KC_I, KC_TRNS, KC_TRNS,
196 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
197 KC_TRNS, KC_TRNS,
198 KC_TRNS,
199 KC_TRNS,KC_TRNS,M(KAZARI)
200),
201/* Keymap 2: Japanese with Fn
202 *
203 * ,--------------------------------------------------. ,--------------------------------------------------.
204 * | | | | | | | | | | | | | | | |
205 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
206 * | |   | xe | | | xke | | | | xya | | xtsu | xo | | |
207 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
208 * | | | | xka | | |------| |------| xa | xyo | | | xu | |
209 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
210 * | | | | | | | | | | | | | xi | | |
211 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
212 * | | | | | | | | | | | |
213 * `----------------------------------' `----------------------------------'
214 * ,-------------. ,-------------.
215 * | | | | | |
216 * ,------|------|------| |------+------+------.
217 * | | | | | | | |
218 * | | |------| |------| | |
219 * | | | | | | | |
220 * `--------------------' `--------------------'
221 *
222 *
223 *
224 */
225[JPXON] = KEYMAP(
226 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
227 KC_NO, KC_NO, M(JPXE), KC_NO, M(JPXKE), KC_NO, KC_NO,
228 KC_NO, KC_NO, KC_NO, M(JPXKA), KC_NO, KC_NO,
229 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
230 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO,
231 KC_NO, KC_NO,
232 KC_NO,
233 KC_NO, KC_TRNS, KC_TRNS,
234 // right hand
235 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
236 KC_NO, M(JPXYA), KC_NO, M(JPXTU), M(JPXO), KC_NO, KC_NO,
237 M(JPXA), M(JPXYO), M(JPXYU), KC_NO, M(JPXU), KC_NO,
238 KC_NO, KC_NO,KC_NO, KC_NO, M(JPXI), KC_NO, KC_NO,
239 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
240 KC_NO, KC_NO,
241 KC_NO,
242 KC_NO, KC_NO, KC_NO
243),
244/* Keymap 3: Japanese with kazari
245 *
246 * ,--------------------------------------------------. ,--------------------------------------------------.
247 * | | | | | | | | | | | | | | | |
248 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
249 * | |   | go | za | be | ge | | | | bu | ze | du | gu | | |
250 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
251 * | | do | ji | ga | gi | zu |------| |------| | ba | de | da | vu | |
252 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
253 * | | | zo | bi | di | | | | | | | bo | | | |
254 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
255 * | | | | | | | | | | | |
256 * `----------------------------------' `----------------------------------'
257 * ,-------------. ,-------------.
258 * | | | | | |
259 * ,------|------|------| |------+------+------.
260 * | | | | | | | |
261 * | | |------| |------| | |
262 * | | | | | | | |
263 * `--------------------' `--------------------'
264 *
265 *
266 *
267 */
268[JPKAZARI] = KEYMAP(
269 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
270 KC_NO, KC_NO, M(JPGO), M(JPZA), M(JPBE), M(JPGE), KC_NO,
271 KC_NO, M(JPDO), M(JPJI), M(JPGA), M(JPGI), M(JPZU),
272 KC_NO, KC_NO, M(JPZO), M(JPBI), M(JPDI), KC_NO, KC_NO,
273 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO,
274 KC_NO, KC_NO,
275 KC_NO,
276 M(SHIFT), KC_NO, KC_TRNS,
277 // right hand
278 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
279 KC_NO, M(JPBU), M(JPZE), M(JPDU), M(JPGU), KC_NO, KC_NO,
280 KC_NO, M(JPBA), M(JPDE), M(JPDA), M(JPVU), KC_NO,
281 KC_NO, KC_NO, KC_NO, M(JPBO), KC_NO, KC_NO, KC_NO,
282 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
283 KC_NO, KC_NO,
284 KC_NO,
285 KC_NO, KC_NO, KC_TRNS
286),
287/* Keymap 4: Japanese with Toprow
288 *
289 * ,--------------------------------------------------. ,--------------------------------------------------.
290 * | | | | | | | | | | | | | | | |
291 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
292 * | |   | e | - | re | | | | | ya | ne | ru | o | | |
293 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
294 * | | ra | ri | na | no | mi |------| |------| wa | yo | yu | ni | nn | |
295 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
296 * | | | | | | | | | | | mo | ro | wo | | |
297 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
298 * | | | | | | | | | | | |
299 * `----------------------------------' `----------------------------------'
300 * ,-------------. ,-------------.
301 * | | | | | |
302 * ,------|------|------| |------+------+------.
303 * | | | | | | | |
304 * | | |------| |------| | |
305 * | | | | | | | |
306 * `--------------------' `--------------------'
307 *
308 *
309 *
310 */
311[JPTOPROW] = KEYMAP(
312 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
313 KC_NO, KC_NO, KC_E, KC_MINS, M(JPRE), KC_NO, KC_NO,
314 KC_NO, M(JPRA), M(JPRI), M(JPNA), M(JPNO), M(JPMI),
315 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
316 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO,
317 KC_NO, KC_NO,
318 KC_NO,
319 KC_TRNS, KC_NO, KC_NO,
320 // right hand
321 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
322 KC_NO, M(JPYA), M(JPNE), M(JPRU), KC_O, KC_NO, KC_NO,
323 M(JPWA), M(JPYO), M(JPYU), M(JPNI), M(JPNN), KC_NO,
324 KC_NO, KC_NO, M(JPMO), M(JPRO), M(JPWO), KC_NO, KC_NO,
325 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
326 KC_NO, KC_NO,
327 KC_NO,
328 KC_NO, KC_NO, M(KAZARI)
329),
330
331/* Keymap 5: Japanese with Toprow and Kazari
332 *
333 * ,--------------------------------------------------. ,--------------------------------------------------.
334 * | | | | | | | | | | | | | | | |
335 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
336 * | |   | | | pe | | | | | pu | | | | | |
337 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
338 * | | | | | | |------| |------| | pa | | | | |
339 * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
340 * | | | | pi | | | | | | | | po | | | |
341 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
342 * | | | | | | | | | | | |
343 * `----------------------------------' `----------------------------------'
344 * ,-------------. ,-------------.
345 * | | | | | |
346 * ,------|------|------| |------+------+------.
347 * | | | | | | | |
348 * | | |------| |------| | |
349 * | | | | | | | |
350 * `--------------------' `--------------------'
351 *
352 *
353 *
354 */
355[JPTRKZ] = KEYMAP(
356 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
357 KC_NO, KC_NO, KC_NO, KC_NO, M(JPPE),KC_NO, KC_NO,
358 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
359 KC_NO, KC_NO, KC_NO, M(JPPI), KC_NO, KC_NO, KC_NO,
360 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO,
361 KC_NO, KC_NO,
362 KC_NO,
363 KC_TRNS, KC_NO, KC_NO,
364 // right hand
365 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
366 KC_NO, M(JPPU), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
367 KC_NO, M(JPPA), KC_NO, KC_NO, KC_NO, KC_NO,
368 KC_NO, KC_NO, KC_NO, M(JPPO), KC_NO, KC_NO, KC_NO,
369 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
370 KC_NO, KC_NO,
371 KC_NO,
372 KC_NO, KC_NO, KC_TRNS
373),
374/* Keymap 6: Number Layer
375 *
376 * ,--------------------------------------------------. ,--------------------------------------------------.
377 * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
378 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
379 * | | | | " | [ | ] | | | | | % | 7 | 8 | 9 | | F12 |
380 * |--------+------+------+------+------+------| ; | | |------+------+------+------+------+--------|
381 * | | | / | + | { | } |------| |------| ! | 4 | 5 | 6 | 0 | , |
382 * |--------+------+------+------+------+------| : | | & |------+------+------+------+------+--------|
383 * | | | * | - | ( | ) | | | | . | 1 | 2 | 3 | ? | |
384 * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
385 * | | | | | # | | < | = | > | | |
386 * `----------------------------------' `----------------------------------'
387 * ,-------------. ,-------------.
388 * | | | | | |
389 * ,------|------|------| |------+------+------.
390 * | | | | | | | |
391 * | | |------| |------| Back | Ent |
392 * | | | | | | | |
393 * `--------------------' `--------------------'
394 */
395// Numbers
396[NUM] = KEYMAP(
397 // left hand
398 KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO,
399 KC_NO, KC_NO, KC_NO, JP_DQT, KC_RBRACKET, KC_BSPC, KC_SCLN,
400 KC_NO, KC_NO, KC_SLSH, JP_PLUS, LSFT(KC_RBRACKET), JP_RCBR,
401 KC_NO, KC_NO, JP_ASTR, KC_MINS, LSFT(KC_8), LSFT(KC_9), JP_COLN,
402 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_HASH,
403 KC_NO, KC_NO,
404 KC_NO,
405 KC_NO, KC_NO, KC_TRNS,
406 // right hand
407 KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
408 LSFT(KC_JYEN), KC_PERC, KC_7, KC_8, KC_9, KC_NO, KC_F12,
409 KC_EXLM, KC_4, KC_5, KC_6, KC_0, KC_COMM,
410 LSFT(KC_6), KC_DOT, KC_1, KC_2, KC_3, KC_QUES, KC_NO,
411 KC_LT,JP_EQL, KC_GT, KC_NO, KC_NO,
412 KC_NO, KC_NO,
413 KC_NO,
414 KC_SPC, KC_BSLS, KC_DOT
415),
416};
417
418const uint16_t PROGMEM fn_actions[] = {
419 [1] = ACTION_LAYER_MOMENTARY(NUM) // FN1 - Momentary Layer 6 (Numbers)
420};
421
422const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
423{
424
425 // MACRO only works in this function
426 switch(id) {
427 case 0:
428 if (record->event.pressed) {
429 register_code(KC_RSFT);
430 } else {
431 unregister_code(KC_RSFT);
432 }
433 break;
434 case CTLSHFT:
435 if (record->event.pressed) {
436 return MACRO( D(LSFT), D(LCTL), END);
437 } else {
438 return MACRO( U(LSFT), U(LCTL), END);
439 }
440 break;
441 case CUTCOPY:
442 if (record->event.pressed) {
443 start = timer_read();
444 } else {
445 if (timer_elapsed(start) > 150) {
446 return MACRO( D(LCTL), T(X), U(LCTL), END);
447 } else {
448 return MACRO( D(LCTL), T(C), U(LCTL), END);
449 }
450 }
451 break;
452
453 // kana macros start here
454
455 case JPVU:
456 if (record->event.pressed) {
457 return MACRO( I(1), T(V), T(U), END);
458 }
459 break;
460 case JPNU:
461 if (record->event.pressed) {
462 return MACRO( I(1), T(N), T(U), END);
463 }
464 break;
465 case JPKO:
466 if (record->event.pressed) {
467 return MACRO( I(1), T(K), T(O), END);
468 }
469 break;
470 case JPSA:
471 if (record->event.pressed) {
472 return MACRO( I(1), T(S), T(A), END);
473 }
474 break;
475 case JPKE:
476 if (record->event.pressed) {
477 return MACRO( I(1), T(K), T(E), END);
478 }
479 break;
480 case JPHE:
481 if (record->event.pressed) {
482 return MACRO( I(1), T(H), T(E), END);
483 }
484 break;
485 case JPSHI:
486 if (record->event.pressed) {
487 return MACRO( I(1), T(S), T(I), END);
488 }
489 break;
490 case JPKA:
491 if (record->event.pressed) {
492 return MACRO( I(1), T(K), T(A), END);
493 }
494 break;
495 case JPKI:
496 if (record->event.pressed) {
497 return MACRO( I(1), T(K), T(I), END);
498 }
499 break;
500 case JPSU:
501 if (record->event.pressed) {
502 return MACRO( I(1), T(S), T(U), END);
503 }
504 break;
505 case JPSO:
506 if (record->event.pressed) {
507 return MACRO( I(1), T(S), T(O), END);
508 }
509 break;
510 case JPHI:
511 if (record->event.pressed) {
512 return MACRO( I(1), T(H), T(I), END);
513 }
514 break;
515 case JPCHI:
516 if (record->event.pressed) {
517 return MACRO( I(1), T(T), T(I), END);
518 }
519 break;
520 case JPFU:
521 if (record->event.pressed) {
522 return MACRO( I(1), T(F), T(U), END);
523 }
524 break;
525 case JPSE:
526 if (record->event.pressed) {
527 return MACRO( I(1), T(S), T(E), END);
528 }
529 break;
530 case JPTSU:
531 if (record->event.pressed) {
532 return MACRO( I(1), T(T), T(U), END);
533 }
534 break;
535 case JPKU:
536 if (record->event.pressed) {
537 return MACRO( I(1), T(K), T(U), END);
538 }
539 break;
540 case JPTE:
541 if (record->event.pressed) {
542 return MACRO( I(1), T(T), T(E), END);
543 }
544 break;
545 case JPTA:
546 if (record->event.pressed) {
547 return MACRO( I(1), T(T), T(A), END);
548 }
549 break;
550 case JPTO:
551 if (record->event.pressed) {
552 return MACRO( I(1), T(T), T(O), END);
553 }
554 break;
555 case JPHA:
556 if (record->event.pressed) {
557 return MACRO( I(1), T(H), T(A), END);
558 }
559 break;
560 case JPHO:
561 if (record->event.pressed) {
562 return MACRO( I(1), T(H), T(O), END);
563 }
564 break;
565 case JPXKE:
566 if (record->event.pressed) {
567 return MACRO( I(1), T(X), T(K), T(E), END);
568 }
569 break;
570 case JPXU:
571 if (record->event.pressed) {
572 return MACRO( I(1), T(X), T(U), END);
573 }
574 break;
575 case JPXKA:
576 if (record->event.pressed) {
577 return MACRO( I(1), T(X), T(K), T(A), END);
578 }
579 break;
580 case JPXA:
581 if (record->event.pressed) {
582 return MACRO( I(1), T(X), T(A), END);
583 }
584 break;
585 case JPXO:
586 if (record->event.pressed) {
587 return MACRO( I(1), T(X), T(O), END);
588 }
589 break;
590 case JPGO:
591 if (record->event.pressed) {
592 return MACRO( I(1), T(G), T(O), END);
593 }
594 break;
595 case JPZA:
596 if (record->event.pressed) {
597 return MACRO( I(1), T(Z), T(A), END);
598 }
599 break;
600 case JPGE:
601 if (record->event.pressed) {
602 return MACRO( I(1), T(G), T(E), END);
603 }
604 break;
605 case JPBE:
606 if (record->event.pressed) {
607 return MACRO( I(1), T(B), T(E), END);
608 }
609 break;
610 case JPYU:
611 if (record->event.pressed) {
612 return MACRO( I(1), T(Y), T(U), END);
613 }
614 break;
615 case JPJI:
616 if (record->event.pressed) {
617 return MACRO( I(1), T(J), T(I), END);
618 }
619 break;
620 case JPGA:
621 if (record->event.pressed) {
622 return MACRO( I(1), T(G), T(A), END);
623 }
624 break;
625 case JPGI:
626 if (record->event.pressed) {
627 return MACRO( I(1), T(G), T(I), END);
628 }
629 break;
630 case JPZU:
631 if (record->event.pressed) {
632 return MACRO( I(1), T(Z), T(U), END);
633 }
634 break;
635 case JPZO:
636 if (record->event.pressed) {
637 return MACRO( I(1), T(Z), T(O), END);
638 }
639 break;
640 case JPBI:
641 if (record->event.pressed) {
642 return MACRO( I(1), T(B), T(I), END);
643 }
644 break;
645 case JPDI:
646 if (record->event.pressed) {
647 return MACRO( I(1), T(D), T(I), END);
648 }
649 break;
650 case JPZE:
651 if (record->event.pressed) {
652 return MACRO( I(1), T(Z), T(E), END);
653 }
654 break;
655 case JPDU:
656 if (record->event.pressed) {
657 return MACRO( I(1), T(D), T(U), END);
658 }
659 break;
660 case JPGU:
661 if (record->event.pressed) {
662 return MACRO( I(1), T(G), T(U), END);
663 }
664 break;
665 case JPYA:
666 if (record->event.pressed) {
667 return MACRO( I(1), T(Y), T(A), END);
668 }
669 break;
670 case JPYO:
671 if (record->event.pressed) {
672 return MACRO( I(1), T(Y), T(O), END);
673 }
674 break;
675 case JPDE:
676 if (record->event.pressed) {
677 return MACRO( I(1), T(D), T(E), END);
678 }
679 break;
680 case JPDA:
681 if (record->event.pressed) {
682 return MACRO( I(1), T(D), T(A), END);
683 }
684 break;
685 case JPDO:
686 if (record->event.pressed) {
687 return MACRO( I(1), T(D), T(O), END);
688 }
689 break;
690 case JPBA:
691 if (record->event.pressed) {
692 return MACRO( I(1), T(B), T(A), END);
693 }
694 break;
695 case JPBO:
696 if (record->event.pressed) {
697 return MACRO( I(1), T(B), T(O), END);
698 }
699 break;
700 case JPRI:
701 if (record->event.pressed) {
702 return MACRO( I(1), T(R), T(I), END);
703 }
704 break;
705 case JPRE:
706 if (record->event.pressed) {
707 return MACRO( I(1), T(R), T(E), END);
708 }
709 break;
710 case JPRA:
711 if (record->event.pressed) {
712 return MACRO( I(1), T(R), T(A), END);
713 }
714 break;
715 case JPNA:
716 if (record->event.pressed) {
717 return MACRO( I(1), T(N), T(A), END);
718 }
719 break;
720 case JPNO:
721 if (record->event.pressed) {
722 return MACRO( I(1), T(N), T(O), END);
723 }
724 break;
725 case JPMI:
726 if (record->event.pressed) {
727 return MACRO( I(1), T(M), T(I), END);
728 }
729 break;
730 case JPMU:
731 if (record->event.pressed) {
732 return MACRO( I(1), T(M), T(U), END);
733 }
734 break;
735 case JPME:
736 if (record->event.pressed) {
737 return MACRO( I(1), T(M), T(E), END);
738 }
739 break;
740 case JPNE:
741 if (record->event.pressed) {
742 return MACRO( I(1), T(N), T(E), END);
743 }
744 break;
745 case JPMA:
746 if (record->event.pressed) {
747 return MACRO( I(1), T(M), T(A), END);
748 }
749 break;
750 case JPXTU:
751 if (record->event.pressed) {
752 return MACRO( I(1), T(X), T(T), T(U), END);
753 }
754 break;
755 case JPWA:
756 if (record->event.pressed) {
757 return MACRO( I(1), T(W), T(A), END);
758 }
759 break;
760 case JPRU:
761 if (record->event.pressed) {
762 return MACRO( I(1), T(R), T(U), END);
763 }
764 break;
765 case JPWO:
766 if (record->event.pressed) {
767 return MACRO( I(1), T(W), T(O), END);
768 }
769 break;
770 case JPNI:
771 if (record->event.pressed) {
772 return MACRO( I(1), T(N), T(I), END);
773 }
774 break;
775 case JPNN:
776 if (record->event.pressed) {
777 return MACRO( I(1), T(N), T(N), END);
778 }
779 break;
780 case JPMO:
781 if (record->event.pressed) {
782 return MACRO( I(1), T(M), T(O), END);
783 }
784 break;
785 case JPRO:
786 if (record->event.pressed) {
787 return MACRO( I(1), T(R), T(O), END);
788 }
789 break;
790 case JPXE:
791 if (record->event.pressed) {
792 return MACRO( I(1), T(X), T(E), END);
793 }
794 break;
795 case JPXI:
796 if (record->event.pressed) {
797 return MACRO( I(1), T(X), T(I), END);
798 }
799 break;
800 case JPXYU:
801 if (record->event.pressed) {
802 return MACRO( I(1), T(X), T(Y), T(U), END);
803 }
804 break;
805 case JPXYA:
806 if (record->event.pressed) {
807 return MACRO( I(1), T(X), T(Y), T(A), END);
808 }
809 break;
810 case JPXYO:
811 if (record->event.pressed) {
812 return MACRO( I(1), T(X), T(Y), T(O), END);
813 }
814 break;
815 case JPPE:
816 if (record->event.pressed) {
817 return MACRO( I(1), T(P), T(E), END);
818 }
819 break;
820 case JPPU:
821 if (record->event.pressed) {
822 return MACRO( I(1), T(P), T(U), END);
823 }
824 break;
825 case JPPI:
826 if (record->event.pressed) {
827 return MACRO( I(1), T(P), T(I), END);
828 }
829 break;
830 case JPPA:
831 if (record->event.pressed) {
832 return MACRO( I(1), T(P), T(A), END);
833 }
834 break;
835 case JPPO:
836 if (record->event.pressed) {
837 return MACRO( I(1), T(P), T(O), END);
838 }
839 break;
840 case JPBU:
841 if (record->event.pressed) {
842 return MACRO( I(1), T(B), T(U), END);
843 }
844 break;
845
846 // kana macros end here
847
848 break;
849 case SHIFT:
850 if (record->event.pressed) {
851 start = timer_read();
852 if (layer_state == (1<<JPKAZARI)) {
853 layer_state = (1<<JPTOPROW)| (1<<JPTRKZ);
854 } else {
855 layer_state = (1<<JPTOPROW);
856 }
857 } else {
858 layer_state = (0<<JPTOPROW);
859 clear_keyboard_but_mods();
860 if (timer_elapsed(start) < 100) {
861 return MACRO( I(1), T(SPC), END);
862 }
863 }
864 break;
865 case KAZARI:
866 if (record->event.pressed) {
867 start = timer_read();
868 if (layer_state == (1<<JPTOPROW)) {
869 layer_state = (1<<JPKAZARI)| (1<<JPTRKZ);
870 } else {
871 layer_state = (1<<JPKAZARI);
872 }
873 break;
874 } else {
875 layer_state = (0<<JPKAZARI);
876 layer_state = (0<<JPTRKZ);
877 if (timer_elapsed(start) < 100) {
878 return MACRO( T(ENTER), END);
879 }
880 }
881 break;
882 case JPFN:
883 if (record->event.pressed) {
884 start = timer_read();
885 layer_state = (1<<JPXON);
886 } else {
887 layer_state = (0<<JPXON);
888 if (timer_elapsed(start) < 100) {
889 return MACRO( T(F7), END);
890 }
891 }
892 break;
893 case TOJPLOUT:
894 if (record->event.pressed) {
895 if (default_layer_state == (1<<JP)) {
896 default_layer_state = (0<<JP);
897 } else {
898 default_layer_state = (1<<JP);
899 }
900 return MACRO( T(ZKHK), END);
901 }
902 break;
903/*
904 // TOJPL and TOENL switch keyboard language.
905 // The Ctrl+[] commands here load the appropriate ibus-anthy input engine via a WM shortcut
906 // The first key pressed in the new engine is missed, thus the space key
907 // TOJPLOUT works in the same way but is used for switching engines on external systems.
908 case TOJPL:
909 if (record->event.pressed) {
910 default_layer_state = (1<<JP);
911 return MACRO( D(LCTL), T(END), U(LCTL), END);
912 //return MACRO( D(LCTL), T(END), U(LCTL), W(250), W(250), W(250), T(SPACE), END);
913 }
914 break;
915 case TOENL:
916 if (record->event.pressed) {
917 default_layer_state = (1<<BASE);
918 return MACRO( D(LCTL), T(HOME), U(LCTL), END);
919 //return MACRO( D(LCTL), T(HOME), U(LCTL), W(250), W(250), W(250), T(SPACE), END);
920 }
921 break;
922*/
923 }
924 return MACRO_NONE;
925};
926
927// Runs just one time when the keyboard initializes.
928void matrix_init_user(void) {
929};
930
931// Runs constantly in the background, in a loop.
932void matrix_scan_user(void) {
933
934 uint8_t layer = biton32(layer_state);
935 uint8_t deflayer = biton32(default_layer_state);
936
937 ergodox_board_led_off();
938 ergodox_right_led_1_off();
939 ergodox_right_led_2_off();
940 ergodox_right_led_3_off();
941
942
943 switch (layer) {
944 case 0:
945 //none
946 break;
947// case 1:
948// ergodox_right_led_2_on();
949// break;
950 case 6:
951 ergodox_right_led_3_on();
952 break;
953 }
954 switch (deflayer) {
955 case 0:
956 ergodox_right_led_1_off();
957 break;
958 case 1:
959 ergodox_right_led_1_on();
960 break;
961 }
962};
diff --git a/keyboards/ergodox/keymaps/ishigoya-jp/readme.md b/keyboards/ergodox/keymaps/ishigoya-jp/readme.md
new file mode 100644
index 000000000..9ee557335
--- /dev/null
+++ b/keyboards/ergodox/keymaps/ishigoya-jp/readme.md
@@ -0,0 +1,54 @@
1This is a dual English-Japanese keymap that utilises a thumb-shift system for Japanese input. You can read more about this layout on my blog [here](https://ishigoya.com).
2
3### Some Editing Necessary
4The system I created this on is a Chromebook, and uses a Japanese keymap, so some of the key mappings may not be the same as those on your system. In particular, the Escape key on layer 0 is mapped to KC_LCTL.
5
6### Layouts
7------
8#### English layer - layer 0
9The English layout is a modified Workman layout, and is pictured below:
10
11![English layout](img/keyboard-layout-enL.png)
12
13Some of the punctuation keys have been moved to a separate number/symbol layer.
14
15#### Number / Symbol layer - layer 6
16
17The Number / Symbol layer is reachable through a ACTION_LAYER_MOMENTARY function. The blue LED is illuminated when this layer is active. It is accessible from the English or Japanese layers.
18
19![Number layout](img/keyboard-layout-numL.png)
20
21#### Japanese layers - layers 1-5
22
23There are 5 layers involved in Japanese input. The TOJPLOUT macro is mapped to the En / 和 button, and switches default layer between layer 0 (English) and 1 (main Japanese layer). When layer 1 is the default layer, the red LED is on. It also outputs the ZKHK button to change the input method language.
24
25On keypress, strings of romaji characters are output by the keyboard using macros, and these simulate the input of individual keys on a latin keyboard.
26
27![Japanese layout](img/keyboard-layout-jpL.png)
28
29Layer 1 is the JP layer. Keys on this layer correspond to singleton keys, or keys on the bottom row where a key is shared. For example, pressing the "ふ や" key outputs `ふ` (or "fu").
30
31Layer 2 is the JPXON layer, and is active while holding the Fn key. This prints keys that are prefaced by "x" when writing in romaji. For example, pressing the "ふ や" key while holding the Fn key outputs `ゃ` (or "xya").
32
33Layer 3 is the JPKAZARI layer, and is active while holding the 飾り key. This provides letters with dakuten. For example, pressing the "ふ や" key while holding the 飾り key outputs `ぶ` (or "bu").
34
35Layer 4 is the JPTOPROW layer, and is active while holding the シフト key. Keys on this line correspond to top row keys on shared keys in the image. For example, pressing the "ふ や" key while holding the シフト key outputs `や` (or "ya").
36
37Layer 5 is the JPTRKZ layer, and is active while holding both the シフト key and the 飾り key. This layer contains handakuten keys. For example, pressing the "ふ や" while holding both the シフト key and the 飾り key outputs `ぷ` (or "pu").
38
39I've also separated out the #define sections and the macros required for kana for easy copying, in case anyone else should wish to make a kana-based layout.
40
41When tapped, the シフト key acts as a space key, and the 飾り key acts as a return key. This allows them to function as 変換 and 無変換, respectively, in many IMEs.
42
43Furthermore the Fn key, when tapped, acts as an F7 key, providing easy switching to katakana in many IMEs.
44
45### Other features
46The cut/copy button gives copy functionality on a short press, and cut functionality on a long press.
47
48The tmux prefix button outputs Control-B.
49
50The Control & Shift key acts as holding the control and shift keys at the same time.
51
52SelAll outputs Control-A.
53
54Undo outputs Control-Z.