aboutsummaryrefslogtreecommitdiff
path: root/keyboards/planck/keymaps/priyadi/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/planck/keymaps/priyadi/keymap.c')
-rw-r--r--keyboards/planck/keymaps/priyadi/keymap.c681
1 files changed, 1 insertions, 680 deletions
diff --git a/keyboards/planck/keymaps/priyadi/keymap.c b/keyboards/planck/keymaps/priyadi/keymap.c
index 2e979221a..bb3a2e92c 100644
--- a/keyboards/planck/keymaps/priyadi/keymap.c
+++ b/keyboards/planck/keymaps/priyadi/keymap.c
@@ -1,680 +1 @@
1// This is the canonical layout file for the Quantum project. If you want to add another keyboard, #include "../../../handwired/promethium/keymaps/priyadi/keymap.c" \ No newline at end of file
2// this is the style you want to emulate.
3
4#include "planck.h"
5#include "action_layer.h"
6#ifdef AUDIO_ENABLE
7 #include "audio.h"
8 #include "musical_notes.h"
9#endif
10#include "eeconfig.h"
11#include "process_unicode.h"
12#include "quantum.h"
13
14// #define TOLELOT_ENABLE
15
16extern keymap_config_t keymap_config;
17
18enum layers {
19 _QWERTY,
20 _COLEMAK,
21 _WORKMAN,
22 _PUNC,
23 _NUM,
24 _FUNC,
25 _EMOJI,
26 _GREEKU,
27 _GREEKL,
28 _GUI,
29};
30
31enum planck_keycodes {
32 // layouts
33 QWERTY = SAFE_RANGE,
34 COLEMAK,
35 WORKMAN,
36
37 // layer switchers
38 PUNC,
39 NUM,
40 FUNC,
41 EMOJI,
42 GUI,
43 GREEK,
44
45 // os switchers
46 LINUX,
47 WIN,
48 OSX,
49};
50
51// Fillers to make layering clearer
52
53#define _______ KC_TRNS
54#define XXXXXXX KC_NO
55
56// unicode map
57
58enum unicode_name {
59 GRIN, // grinning face 😊
60 TJOY, // tears of joy 😂
61 SMILE, // grining face with smiling eyes 😁
62 HEART, // heart ❤
63 EYERT, // smiling face with heart shaped eyes 😍
64 CRY, // crying face 😭
65 SMEYE, // smiling face with smiling eyes 😊
66 UNAMU, // unamused 😒
67 KISS, // kiss 😘
68 HART2, // two hearts 💕
69 WEARY, // weary 😩
70 OKHND, // ok hand sign 👌
71 PENSV, // pensive 😔
72 SMIRK, // smirk 😏
73 RECYC, // recycle ♻
74 WINK, // wink 😉
75 THMUP, // thumb up 👍
76 THMDN, // thumb down 👎
77 PRAY, // pray 🙏
78 PHEW, // relieved 😌
79 MUSIC, // musical notes
80 FLUSH, // flushed 😳
81 CELEB, // celebration 🙌
82 CRY2, // crying face 😢
83 COOL, // smile with sunglasses 😎
84 NOEVS, // see no evil
85 NOEVH, // hear no evil
86 NOEVK, // speak no evil
87 POO, // pile of poo
88 EYES, // eyes
89 VIC, // victory hand
90 BHART, // broken heart
91 SLEEP, // sleeping face
92 SMIL2, // smiling face with open mouth & sweat
93 HUNRD, // 100
94 CONFU, // confused
95 TONGU, // face with tongue & winking eye
96 DISAP, // disappointed
97 YUMMY, // face savoring delicious food
98 CLAP, // hand clapping
99 FEAR, // face screaming in fear
100 HORNS, // smiling face with horns
101 HALO, // smiling face with halo
102 BYE, // waving hand
103 SUN, // sun
104 MOON, // moon
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,
159};
160
161const uint32_t PROGMEM unicode_map[] = {
162 [GRIN] = 0x1F600,
163 [TJOY] = 0x1F602,
164 [SMILE] = 0x1F601,
165 [HEART] = 0x2764,
166 [EYERT] = 0x1f60d,
167 [CRY] = 0x1f62d,
168 [SMEYE] = 0x1F60A,
169 [UNAMU] = 0x1F612,
170 [KISS] = 0x1F618,
171 [HART2] = 0x1F495,
172 [WEARY] = 0x1F629,
173 [OKHND] = 0x1F44C,
174 [PENSV] = 0x1F614,
175 [SMIRK] = 0x1F60F,
176 [RECYC] = 0x267B,
177 [WINK] = 0x1F609,
178 [THMUP] = 0x1F44D,
179 [THMDN] = 0x1F44E,
180 [PRAY] = 0x1F64F,
181 [PHEW] = 0x1F60C,
182 [MUSIC] = 0x1F3B6,
183 [FLUSH] = 0x1F633,
184 [CELEB] = 0x1F64C,
185 [CRY2] = 0x1F622,
186 [COOL] = 0x1F60E,
187 [NOEVS] = 0x1F648,
188 [NOEVH] = 0x1F649,
189 [NOEVK] = 0x1F64A,
190 [POO] = 0x1F4A9,
191 [EYES] = 0x1F440,
192 [VIC] = 0x270C,
193 [BHART] = 0x1F494,
194 [SLEEP] = 0x1F634,
195 [SMIL2] = 0x1F605,
196 [HUNRD] = 0x1F4AF,
197 [CONFU] = 0x1F615,
198 [TONGU] = 0x1F61C,
199 [DISAP] = 0x1F61E,
200 [YUMMY] = 0x1F60B,
201 [CLAP] = 0x1F44F,
202 [FEAR] = 0x1F631,
203 [HORNS] = 0x1F608,
204 [HALO] = 0x1F607,
205 [BYE] = 0x1F44B,
206 [SUN] = 0x2600,
207 [MOON] = 0x1F314,
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,
260};
261
262
263// hybrid shift - =
264// #undef KC_LSFT
265// #define KC_LSFT MT(MOD_LSFT, KC_MINS)
266// #undef KC_RSFT
267// #define KC_RSFT MT(MOD_LSFT, KC_EQL)
268
269
270// hybrid right-gui & scroll lock (mapped to Compose in OS)
271#undef KC_RCTL
272#define KC_RCTL MT(MOD_LCTL, KC_SLCK)
273
274// keymaps
275
276const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
277
278/* Qwerty
279 * ,-----------------------------------------------------------------------------------.
280 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
281 * |------+------+------+------+------+-------------+------+------+------+------+------|
282 * | Esc | A | S | D | F | G | H | J | K | L | ; |Enter |
283 * |------+------+------+------+------+------|------+------+------+------+------+------|
284 * | Shift| Z | X | C | V | B | N | M | , | . | / |Shift |
285 * |------+------+------+------+------+------+------+------+------+------+------+------|
286 * | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |Greek |AltGr | Ctrl |
287 * `-----------------------------------------------------------------------------------'
288 */
289[_QWERTY] = {
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},
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 },
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},
293 {KC_LCTL, KC_LALT, KC_LGUI, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, GREEK, KC_RALT, KC_RCTL}
294},
295
296/* Colemak
297 * ,-----------------------------------------------------------------------------------.
298 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
299 * |------+------+------+------+------+-------------+------+------+------+------+------|
300 * | Esc | A | R | S | T | D | H | N | E | I | O |Enter |
301 * |------+------+------+------+------+------|------+------+------+------+------+------|
302 * | Shift| Z | X | C | V | B | K | M | , | . | / |Shift |
303 * |------+------+------+------+------+------+------+------+------+------+------+------|
304 * | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |AltGr | GUI | Ctrl |
305 * `-----------------------------------------------------------------------------------'
306 */
307[_COLEMAK] = {
308 {_______, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, _______},
309 {_______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, _______},
310 {_______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______},
311 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
312},
313
314/* Workman
315 * ,-----------------------------------------------------------------------------------.
316 * | Tab | Q | D | R | W | B | J | F | U | P | ; | Bksp |
317 * |------+------+------+------+------+-------------+------+------+------+------+------|
318 * | Esc | A | S | H | T | G | Y | N | E | O | I |Enter |
319 * |------+------+------+------+------+------|------+------+------+------+------+------|
320 * | Shift| Z | X | M | C | V | K | K | , | . | / |Shift |
321 * |------+------+------+------+------+------+------+------+------+------+------+------|
322 * | Ctrl | GUI | Alt | Punc | Num | Space | Func |Emoji |AltGr | GUI | Ctrl |
323 * `-----------------------------------------------------------------------------------'
324 */
325[_WORKMAN] = {
326 {_______, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, _______},
327 {_______, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, _______},
328 {_______, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, _______},
329 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
330},
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
368/* Punc
369 * ,-----------------------------------------------------------------------------------.
370 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | ` |
371 * |------+------+------+------+------+-------------+------+------+------+------+------|
372 * | | | \ | - | = | < | > | ( | ) | ' | | |
373 * |------+------+------+------+------+------|------+------+------+------+------+------|
374 * | | | | | _ | + | { | } | [ | ] | " | | |
375 * |------+------+------+------+------+------+------+------+------+------+------+------|
376 * | | | | | | | | | | | |
377 * `-----------------------------------------------------------------------------------'
378 */
379[_PUNC] = {
380 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_GRV },
381 {XXXXXXX, XXXXXXX, KC_BSLS, KC_MINS, KC_EQL, KC_LABK, KC_RABK, KC_LPRN, KC_RPRN, KC_QUOT, XXXXXXX, XXXXXXX},
382 {XXXXXXX, XXXXXXX, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_DQUO, XXXXXXX, XXXXXXX},
383 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
384},
385
386/* Num
387 * ,-----------------------------------------------------------------------------------.
388 * | ^ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
389 * |------+------+------+------+------+-------------+------+------+------+------+------|
390 * | Esc | @ | A | B | C | ( | ) | 4 | 5 | 6 | : |Enter |
391 * |------+------+------+------+------+------|------+------+------+------+------+------|
392 * | & | # | D | E | F | [ | ] | 1 | 2 | 3 | / | * |
393 * |------+------+------+------+------+------+------+------+------+------+------+------|
394 * | | | | x | | | 0 | , | . | + | - |
395 * `-----------------------------------------------------------------------------------'
396 */
397[_NUM] = {
398 {KC_CIRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
399 { KC_ESC, KC_AT, S(KC_A), S(KC_B), S(KC_C), KC_LPRN, KC_RPRN, KC_4, KC_5, KC_6, KC_COLN, KC_ENT},
400 {KC_AMPR, KC_HASH, S(KC_D), S(KC_E), S(KC_F), KC_LBRC, KC_RBRC, KC_1, KC_2, KC_3, KC_SLSH, KC_ASTR},
401 {_______, _______, _______, KC_X, _______, KC_SPC, KC_SPC, KC_0, KC_COMM, KC_DOT, KC_PLUS, KC_MINS}
402},
403
404/* Func
405 * ,-----------------------------------------------------------------------------------.
406 * | | F1 | F2 | F3 | F4 | | | PgUp | Up | PgDn | PgUp | Del |
407 * |------+------+------+------+------+-------------+------+------+------+------+------|
408 * | | F5 | F6 | F7 | F8 |PrtSc | | Left | Down | Right| PgDn | Ins |
409 * |------+------+------+------+------+------|------+------+------+------+------+------|
410 * | | F9 | F10 | F11 | F12 | | | | Home | End | | |
411 * |------+------+------+------+------+------+------+------+------+------+------+------|
412 * | | | | | | | | | | | |
413 * `-----------------------------------------------------------------------------------'
414 */
415[_FUNC] = {
416 {XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_DEL},
417 {XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8,KC_PSCREEN,XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_INS},
418 {_______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______},
419 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
420},
421
422/* Emoji
423 * ,-----------------------------------------------------------------------------------.
424 * | | | | | | | | | | | | |
425 * |------+------+------+------+------+-------------+------+------+------+------+------|
426 * | | | | | | | | | | | | |
427 * |------+------+------+------+------+------+------+------+------+------+------+------|
428 * | | | | | | | | | | | | |
429 * |------+------+------+------+------+------+------+------+------+------+------+------|
430 * | | | | | | | | | | | | |
431 * `-----------------------------------------------------------------------------------'
432 */
433[_EMOJI] = {
434 {X(HART2), X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY),X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV), X(PHEW)},
435 {X(THMUP), X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN),X(HEART), X(BYE), X(KISS),X(CELEB), X(COOL),X(NOEVS)},
436 {X(THMDN),X(SLEEP), X(CLAP), X(CRY), X(VIC),X(BHART), X(SUN),X(SMEYE), X(WINK), X(MOON),X(CONFU),X(NOEVH)},
437 { X(POO), X(EYES),X(HUNRD), _______,X(SKULL),X(HORNS), X(HALO), X(FEAR), _______,X(YUMMY),X(DISAP),X(NOEVK)}
438},
439
440/* GUI
441 * ,-----------------------------------------------------------------------------------.
442 * | | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 | D10 | |
443 * |------+------+------+------+------+-------------+------+------+------+------+------|
444 * |Linux | | Vol- | Mute | Vol+ | | | D- | | D+ | |Qwerty|
445 * |------+------+------+------+------+------+------+------+------+------+------+------|
446 * | Win | | Prev | Play | Next | | | | | | |Colmak|
447 * |------+------+------+------+------+------+------+------+------+------+------+------|
448 * | OSX | | | | | BL- | BL+ | | | | |Workmn|
449 * `-----------------------------------------------------------------------------------'
450 */
451[_GUI] = {
452 {_______, LGUI(KC_1),LGUI(KC_2),LGUI(KC_3),LGUI(KC_4),LGUI(KC_5),LGUI(KC_6),LGUI(KC_7),LGUI(KC_8),LGUI(KC_9),LGUI(KC_0), _______},
453 { LINUX, _______, KC_VOLD, KC_MUTE, KC_VOLU,_______,_______,KC_WWW_BACK,_______,KC_WWW_FORWARD,_______, QWERTY},
454 { WIN, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, COLEMAK},
455 { OSX, _______, _______, _______, _______, BL_DEC, BL_INC, _______, _______, _______, _______, WORKMAN}
456},
457
458};
459
460#ifdef AUDIO_ENABLE
461float tone_startup[][2] = SONG(STARTUP_SOUND);
462float tone_qwerty[][2] = SONG(QWERTY_SOUND);
463float tone_colemak[][2] = SONG(COLEMAK_SOUND);
464float tone_workman[][2] = SONG(DVORAK_SOUND);
465float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
466float tone_linux[][2] = SONG(CAPS_LOCK_ON_SOUND);
467float tone_windows[][2] = SONG(SCROLL_LOCK_ON_SOUND);
468float tone_osx[][2] = SONG(NUM_LOCK_ON_SOUND);
469float tone_click[][2] = SONG(MUSICAL_NOTE(_F3, 2));
470float tone_release[][2] = SONG(MUSICAL_NOTE(_A3, 2));
471float tone_tolelot[][2] = SONG(Q__NOTE(_E5), Q__NOTE(_C5), Q__NOTE(_D5));
472#endif
473
474void persistant_default_layer_set(uint16_t default_layer) {
475 eeconfig_update_default_layer(default_layer);
476 default_layer_set(default_layer);
477}
478
479bool process_record_user(uint16_t keycode, keyrecord_t *record) {
480 // faux clicky
481 // if (record->event.pressed) PLAY_NOTE_ARRAY(tone_click, false, 0);
482 #ifdef AUDIO_ENABLE
483 #ifdef TOLELOT_ENABLE
484 if (record->event.pressed) {
485 PLAY_NOTE_ARRAY(tone_tolelot, false, 0);
486 }
487 #else
488 if (record->event.pressed) {
489 PLAY_NOTE_ARRAY(tone_click, false, 0);
490 } else {
491 PLAY_NOTE_ARRAY(tone_release, false, 0);
492 }
493 #endif
494 #endif
495
496 bool lshifted = keyboard_report->mods & MOD_BIT(KC_LSFT);
497 bool rshifted = keyboard_report->mods & MOD_BIT(KC_RSFT);
498
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
535 // QWERTZ style comma and dot: semicolon and colon when shifted
536 case KC_COMM:
537 if (record->event.pressed) {
538 if (lshifted || rshifted) {
539 if (lshifted) unregister_code(KC_LSFT);
540 if (rshifted) unregister_code(KC_RSFT);
541 register_code(KC_SCLN);
542 unregister_code(KC_SCLN);
543 if (lshifted) register_code(KC_LSFT);
544 if (rshifted) register_code(KC_RSFT);
545 } else {
546 register_code(KC_COMM);
547 unregister_code(KC_COMM);
548 }
549 }
550 return false;
551 break;
552 case KC_DOT:
553 if (record->event.pressed) {
554 if ((keyboard_report->mods & MOD_BIT(KC_LSFT)) || (keyboard_report->mods & MOD_BIT(KC_RSFT))) {
555 register_code(KC_SCLN);
556 unregister_code(KC_SCLN);
557 } else {
558 register_code(KC_DOT);
559 unregister_code(KC_DOT);
560 }
561 }
562 return false;
563 break;
564
565 // layout switcher
566 case QWERTY:
567 if (record->event.pressed) {
568 #ifdef AUDIO_ENABLE
569 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
570 #endif
571 persistant_default_layer_set(1UL<<_QWERTY);
572 }
573 return false;
574 break;
575 case COLEMAK:
576 if (record->event.pressed) {
577 #ifdef AUDIO_ENABLE
578 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
579 #endif
580 persistant_default_layer_set(1UL<<_COLEMAK);
581 }
582 return false;
583 break;
584 case WORKMAN:
585 if (record->event.pressed) {
586 #ifdef AUDIO_ENABLE
587 PLAY_NOTE_ARRAY(tone_workman, false, 0);
588 #endif
589 persistant_default_layer_set(1UL<<_WORKMAN);
590 }
591 return false;
592 break;
593
594 // layer switchers
595 case PUNC:
596 if (record->event.pressed) {
597 layer_on(_PUNC);
598 update_tri_layer(_PUNC, _EMOJI, _GUI);
599 } else {
600 layer_off(_PUNC);
601 update_tri_layer(_PUNC, _EMOJI, _GUI);
602 }
603 return false;
604 break;
605 case EMOJI:
606 if (record->event.pressed) {
607 layer_on(_EMOJI);
608 update_tri_layer(_PUNC, _EMOJI, _GUI);
609 } else {
610 layer_off(_EMOJI);
611 update_tri_layer(_PUNC, _EMOJI, _GUI);
612 }
613 return false;
614 break;
615 case NUM:
616 if (record->event.pressed) {
617 layer_on(_NUM);
618 } else {
619 layer_off(_NUM);
620 }
621 return false;
622 break;
623 case FUNC:
624 if (record->event.pressed) {
625 layer_on(_FUNC);
626 } else {
627 layer_off(_FUNC);
628 }
629 return false;
630 break;
631
632 // OS switchers
633 case LINUX:
634 set_unicode_input_mode(UC_LNX);
635 #ifdef AUDIO_ENABLE
636 PLAY_NOTE_ARRAY(tone_linux, false, 0);
637 #endif
638 return false;
639 break;
640 case WIN:
641 set_unicode_input_mode(UC_WINC);
642 #ifdef AUDIO_ENABLE
643 PLAY_NOTE_ARRAY(tone_windows, false, 0);
644 #endif
645 return false;
646 break;
647 case OSX:
648 set_unicode_input_mode(UC_OSX);
649 #ifdef AUDIO_ENABLE
650 PLAY_NOTE_ARRAY(tone_osx, false, 0);
651 #endif
652 return false;
653 break;
654 }
655 return true;
656}
657
658void matrix_init_user(void) {
659 #ifdef AUDIO_ENABLE
660 startup_user();
661 #endif
662 set_unicode_input_mode(UC_LNX);
663}
664
665#ifdef AUDIO_ENABLE
666
667void startup_user()
668{
669 _delay_ms(20); // gets rid of tick
670 PLAY_NOTE_ARRAY(tone_startup, false, 0);
671}
672
673void shutdown_user()
674{
675 PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
676 _delay_ms(150);
677 stop_all_notes();
678}
679
680#endif \ No newline at end of file