aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPriyadi Iman Nurcahyo <priyadi@priyadi.net>2017-01-09 02:50:13 +0700
committerPriyadi Iman Nurcahyo <priyadi@priyadi.net>2017-01-09 02:50:13 +0700
commit02055406e88253440decfc1af73bc8662e6ebd98 (patch)
treeebd022e67164acbf77e0f7f84f59f53e2ac3af9e
parent3a71f3534ad45e420c94dd519858646f3c2b925f (diff)
downloadqmk_firmware-02055406e88253440decfc1af73bc8662e6ebd98.tar.gz
qmk_firmware-02055406e88253440decfc1af73bc8662e6ebd98.zip
Greek alphabet layer
-rw-r--r--keyboards/planck/keymaps/priyadi/keymap.c187
1 files changed, 183 insertions, 4 deletions
diff --git a/keyboards/planck/keymaps/priyadi/keymap.c b/keyboards/planck/keymaps/priyadi/keymap.c
index 57fe86ff7..2e979221a 100644
--- a/keyboards/planck/keymaps/priyadi/keymap.c
+++ b/keyboards/planck/keymaps/priyadi/keymap.c
@@ -23,6 +23,8 @@ enum layers {
23 _NUM, 23 _NUM,
24 _FUNC, 24 _FUNC,
25 _EMOJI, 25 _EMOJI,
26 _GREEKU,
27 _GREEKL,
26 _GUI, 28 _GUI,
27}; 29};
28 30
@@ -38,6 +40,7 @@ enum planck_keycodes {
38 FUNC, 40 FUNC,
39 EMOJI, 41 EMOJI,
40 GUI, 42 GUI,
43 GREEK,
41 44
42 // os switchers 45 // os switchers
43 LINUX, 46 LINUX,
@@ -100,6 +103,59 @@ enum unicode_name {
100 SUN, // sun 103 SUN, // sun
101 MOON, // moon 104 MOON, // moon
102 SKULL, // skull 105 SKULL, // skull
106
107 // greek letters
108 UALPH,
109 UBETA,
110 UGAMM,
111 UDELT,
112 UEPSI,
113 UZETA,
114 UETA,
115 UTHET,
116 UIOTA,
117 UKAPP,
118 ULAMB,
119 UMU,
120 UNU,
121 UXI,
122 UOMIC,
123 UPI,
124 URHO,
125 USIGM,
126 UTAU,
127 UUPSI,
128 UPHI,
129 UCHI,
130 UPSI,
131 UOMEG,
132
133 LALPH,
134 LBETA,
135 LGAMM,
136 LDELT,
137 LEPSI,
138 LZETA,
139 LETA,
140 LTHET,
141 LIOTA,
142 LKAPP,
143 LLAMB,
144 LMU,
145 LNU,
146 LXI,
147 LOMIC,
148 LPI,
149 LRHO,
150 LSIGM,
151 LTAU,
152 LUPSI,
153 LPHI,
154 LCHI,
155 LPSI,
156 LOMEG,
157
158 FSIGM,
103}; 159};
104 160
105const uint32_t PROGMEM unicode_map[] = { 161const uint32_t PROGMEM unicode_map[] = {
@@ -150,6 +206,57 @@ const uint32_t PROGMEM unicode_map[] = {
150 [SUN] = 0x2600, 206 [SUN] = 0x2600,
151 [MOON] = 0x1F314, 207 [MOON] = 0x1F314,
152 [SKULL] = 0x1F480, 208 [SKULL] = 0x1F480,
209
210 // greek letters
211 [UALPH] = 0x0391,
212 [UBETA] = 0x0392,
213 [UGAMM] = 0x0393,
214 [UDELT] = 0x0394,
215 [UEPSI] = 0x0395,
216 [UZETA] = 0x0396,
217 [UETA] = 0x0397,
218 [UTHET] = 0x0398,
219 [UIOTA] = 0x0399,
220 [UKAPP] = 0x039A,
221 [ULAMB] = 0x039B,
222 [UMU] = 0x039C,
223 [UNU] = 0x039D,
224 [UXI] = 0x039E,
225 [UOMIC] = 0x039F,
226 [UPI] = 0x03A0,
227 [URHO] = 0x03A1,
228 [USIGM] = 0x03A3,
229 [UTAU] = 0x03A4,
230 [UUPSI] = 0x03A5,
231 [UPHI] = 0x03A6,
232 [UCHI] = 0x03A7,
233 [UPSI] = 0x03A8,
234 [UOMEG] = 0x03A9,
235 [LALPH] = 0x03B1,
236 [LBETA] = 0x03B2,
237 [LGAMM] = 0x03B3,
238 [LDELT] = 0x03B4,
239 [LEPSI] = 0x03B5,
240 [LZETA] = 0x03B6,
241 [LETA] = 0x03B7,
242 [LTHET] = 0x03B8,
243 [LIOTA] = 0x03B9,
244 [LKAPP] = 0x03BA,
245 [LLAMB] = 0x03BB,
246 [LMU] = 0x03BC,
247 [LNU] = 0x03BD,
248 [LXI] = 0x03BE,
249 [LOMIC] = 0x03BF,
250 [LPI] = 0x03C0,
251 [LRHO] = 0x03C1,
252 [LSIGM] = 0x03C3,
253 [LTAU] = 0x03C4,
254 [LUPSI] = 0x03C5,
255 [LPHI] = 0x03C6,
256 [LCHI] = 0x03C7,
257 [LPSI] = 0x03C8,
258 [LOMEG] = 0x03C9,
259 [FSIGM] = 0x03C2,
153}; 260};
154 261
155 262
@@ -176,14 +283,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
176 * |------+------+------+------+------+------|------+------+------+------+------+------| 283 * |------+------+------+------+------+------|------+------+------+------+------+------|
177 * | Shift| Z | X | C | V | B | N | M | , | . | / |Shift | 284 * | Shift| Z | X | C | V | B | N | M | , | . | / |Shift |
178 * |------+------+------+------+------+------+------+------+------+------+------+------| 285 * |------+------+------+------+------+------+------+------+------+------+------+------|
179 * | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |AltGr | GUI | Ctrl | 286 * | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |Greek |AltGr | Ctrl |
180 * `-----------------------------------------------------------------------------------' 287 * `-----------------------------------------------------------------------------------'
181 */ 288 */
182[_QWERTY] = { 289[_QWERTY] = {
183 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, 290 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
184 {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT }, 291 {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT },
185 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, 292 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT},
186 {KC_LCTL, KC_LGUI, KC_LALT, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, KC_RALT, KC_RGUI, KC_RCTL} 293 {KC_LCTL, KC_LALT, KC_LGUI, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, GREEK, KC_RALT, KC_RCTL}
187}, 294},
188 295
189/* Colemak 296/* Colemak
@@ -222,6 +329,42 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
222 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} 329 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
223}, 330},
224 331
332/* Uppercase Greek
333 * ,-----------------------------------------------------------------------------------.
334 * | | | | | | | | | | | | |
335 * |------+------+------+------+------+-------------+------+------+------+------+------|
336 * | | | | | | | | | | | | |
337 * |------+------+------+------+------+------+------+------+------+------+------+------|
338 * | | | | | | | | | | | | |
339 * |------+------+------+------+------+------+------+------+------+------+------+------|
340 * | | | | | | | | | | | | |
341 * `-----------------------------------------------------------------------------------'
342 */
343[_GREEKU] = {
344 {_______, _______, _______,X(UEPSI), X(URHO), X(UTAU),X(UUPSI),X(UTHET),X(UIOTA),X(UOMIC), X(UPI), _______},
345 {_______,X(UALPH),X(USIGM),X(UDELT), X(UPHI),X(UGAMM), X(UETA), X(UXI),X(UKAPP),X(ULAMB), _______, _______},
346 {_______,X(UZETA), X(UCHI), X(UPSI),X(UOMEG),X(UBETA), X(UNU), X(UMU), _______, _______, _______, _______},
347 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
348},
349
350/* Lowercase Greek
351 * ,-----------------------------------------------------------------------------------.
352 * | | | | | | | | | | | | |
353 * |------+------+------+------+------+-------------+------+------+------+------+------|
354 * | | | | | | | | | | | | |
355 * |------+------+------+------+------+------+------+------+------+------+------+------|
356 * | | | | | | | | | | | | |
357 * |------+------+------+------+------+------+------+------+------+------+------+------|
358 * | | | | | | | | | | | | |
359 * `-----------------------------------------------------------------------------------'
360 */
361[_GREEKL] = {
362 {_______, _______,X(FSIGM),X(LEPSI), X(LRHO), X(LTAU),X(LUPSI),X(LTHET),X(LIOTA),X(LOMIC), X(LPI), _______},
363 {_______,X(LALPH),X(LSIGM),X(LDELT), X(LPHI),X(LGAMM), X(LETA), X(LXI),X(LKAPP),X(LLAMB), _______, _______},
364 {_______,X(LZETA), X(LCHI), X(LPSI),X(LOMEG),X(LBETA), X(LNU), X(LMU), _______, _______, _______, _______},
365 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
366},
367
225/* Punc 368/* Punc
226 * ,-----------------------------------------------------------------------------------. 369 * ,-----------------------------------------------------------------------------------.
227 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | ` | 370 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | ` |
@@ -350,12 +493,48 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
350 #endif 493 #endif
351 #endif 494 #endif
352 495
496 bool lshifted = keyboard_report->mods & MOD_BIT(KC_LSFT);
497 bool rshifted = keyboard_report->mods & MOD_BIT(KC_RSFT);
498
353 switch (keycode) { 499 switch (keycode) {
500 // Greek layer handling
501 case GREEK:
502 if (record->event.pressed) {
503 if (lshifted || rshifted) {
504 layer_on(_GREEKU);
505 layer_off(_GREEKL);
506 } else {
507 layer_on(_GREEKL);
508 layer_off(_GREEKU);
509 }
510 } else {
511 layer_off(_GREEKU);
512 layer_off(_GREEKL);
513 }
514 return false;
515 break;
516
517 case KC_LSFT:
518 case KC_RSFT:
519 ;
520 uint8_t layer = biton32(layer_state);
521 if (layer == _GREEKU || layer == _GREEKL) {
522 if (record->event.pressed) {
523 layer_on(_GREEKU);
524 layer_off(_GREEKL);
525 } else {
526 if (lshifted ^ rshifted) { // if only one shift is pressed
527 layer_on(_GREEKL);
528 layer_off(_GREEKU);
529 }
530 }
531 }
532 return true;
533 break;
534
354 // QWERTZ style comma and dot: semicolon and colon when shifted 535 // QWERTZ style comma and dot: semicolon and colon when shifted
355 case KC_COMM: 536 case KC_COMM:
356 if (record->event.pressed) { 537 if (record->event.pressed) {
357 bool lshifted = keyboard_report->mods & MOD_BIT(KC_LSFT);
358 bool rshifted = keyboard_report->mods & MOD_BIT(KC_RSFT);
359 if (lshifted || rshifted) { 538 if (lshifted || rshifted) {
360 if (lshifted) unregister_code(KC_LSFT); 539 if (lshifted) unregister_code(KC_LSFT);
361 if (rshifted) unregister_code(KC_RSFT); 540 if (rshifted) unregister_code(KC_RSFT);