aboutsummaryrefslogtreecommitdiff
path: root/quantum/quantum.c
diff options
context:
space:
mode:
authorJoel Challis <git@zvecr.com>2019-12-03 19:48:55 +0000
committerGitHub <noreply@github.com>2019-12-03 19:48:55 +0000
commitd598f01cb7b9d4d9e8fc7bbc951b70be7726a468 (patch)
tree84ca6e81fba9d76777636cd8cfd1c17e7ed13dd8 /quantum/quantum.c
parent1718dfa658dbe8ad144100b561794c5596ac5f08 (diff)
downloadqmk_firmware-d598f01cb7b9d4d9e8fc7bbc951b70be7726a468.tar.gz
qmk_firmware-d598f01cb7b9d4d9e8fc7bbc951b70be7726a468.zip
Relocate magic keycode processing (#7512)
* Move magic keycode processing to own file * Save some bytes * Update comments * Update define to one thats not already used... * Fix audio
Diffstat (limited to 'quantum/quantum.c')
-rw-r--r--quantum/quantum.c157
1 files changed, 3 insertions, 154 deletions
diff --git a/quantum/quantum.c b/quantum/quantum.c
index dd57d7a5e..7463c9d73 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -57,23 +57,7 @@ extern backlight_config_t backlight_config;
57# ifndef GOODBYE_SONG 57# ifndef GOODBYE_SONG
58# define GOODBYE_SONG SONG(GOODBYE_SOUND) 58# define GOODBYE_SONG SONG(GOODBYE_SOUND)
59# endif 59# endif
60# ifndef AG_NORM_SONG
61# define AG_NORM_SONG SONG(AG_NORM_SOUND)
62# endif
63# ifndef AG_SWAP_SONG
64# define AG_SWAP_SONG SONG(AG_SWAP_SOUND)
65# endif
66# ifndef CG_NORM_SONG
67# define CG_NORM_SONG SONG(AG_NORM_SOUND)
68# endif
69# ifndef CG_SWAP_SONG
70# define CG_SWAP_SONG SONG(AG_SWAP_SOUND)
71# endif
72float goodbye_song[][2] = GOODBYE_SONG; 60float goodbye_song[][2] = GOODBYE_SONG;
73float ag_norm_song[][2] = AG_NORM_SONG;
74float ag_swap_song[][2] = AG_SWAP_SONG;
75float cg_norm_song[][2] = CG_NORM_SONG;
76float cg_swap_song[][2] = CG_SWAP_SONG;
77# ifdef DEFAULT_LAYER_SONGS 61# ifdef DEFAULT_LAYER_SONGS
78float default_layer_songs[][16][2] = DEFAULT_LAYER_SONGS; 62float default_layer_songs[][16][2] = DEFAULT_LAYER_SONGS;
79# endif 63# endif
@@ -267,6 +251,9 @@ bool process_record_quantum(keyrecord_t *record) {
267#ifdef SPACE_CADET_ENABLE 251#ifdef SPACE_CADET_ENABLE
268 process_space_cadet(keycode, record) && 252 process_space_cadet(keycode, record) &&
269#endif 253#endif
254#ifdef MAGIC_KEYCODE_ENABLE
255 process_magic(keycode, record) &&
256#endif
270 true)) { 257 true)) {
271 return false; 258 return false;
272 } 259 }
@@ -478,144 +465,6 @@ bool process_record_quantum(keyrecord_t *record) {
478 465
479 // keycodes that depend on both pressed and non-pressed state 466 // keycodes that depend on both pressed and non-pressed state
480 switch (keycode) { 467 switch (keycode) {
481 case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_ALT_GUI:
482 case MAGIC_SWAP_LCTL_LGUI ... MAGIC_EE_HANDS_RIGHT:
483 if (record->event.pressed) {
484 // MAGIC actions (BOOTMAGIC without the boot)
485 if (!eeconfig_is_enabled()) {
486 eeconfig_init();
487 }
488 /* keymap config */
489 keymap_config.raw = eeconfig_read_keymap();
490 switch (keycode) {
491 case MAGIC_SWAP_CONTROL_CAPSLOCK:
492 keymap_config.swap_control_capslock = true;
493 break;
494 case MAGIC_CAPSLOCK_TO_CONTROL:
495 keymap_config.capslock_to_control = true;
496 break;
497 case MAGIC_SWAP_LALT_LGUI:
498 keymap_config.swap_lalt_lgui = true;
499 break;
500 case MAGIC_SWAP_RALT_RGUI:
501 keymap_config.swap_ralt_rgui = true;
502 break;
503 case MAGIC_SWAP_LCTL_LGUI:
504 keymap_config.swap_lctl_lgui = true;
505 break;
506 case MAGIC_SWAP_RCTL_RGUI:
507 keymap_config.swap_rctl_rgui = true;
508 break;
509 case MAGIC_NO_GUI:
510 keymap_config.no_gui = true;
511 break;
512 case MAGIC_SWAP_GRAVE_ESC:
513 keymap_config.swap_grave_esc = true;
514 break;
515 case MAGIC_SWAP_BACKSLASH_BACKSPACE:
516 keymap_config.swap_backslash_backspace = true;
517 break;
518 case MAGIC_HOST_NKRO:
519 clear_keyboard(); // clear first buffer to prevent stuck keys
520 keymap_config.nkro = true;
521 break;
522 case MAGIC_SWAP_ALT_GUI:
523 keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = true;
524#ifdef AUDIO_ENABLE
525 PLAY_SONG(ag_swap_song);
526#endif
527 break;
528 case MAGIC_SWAP_CTL_GUI:
529 keymap_config.swap_lctl_lgui = keymap_config.swap_rctl_rgui = true;
530#ifdef AUDIO_ENABLE
531 PLAY_SONG(cg_swap_song);
532#endif
533 break;
534 case MAGIC_UNSWAP_CONTROL_CAPSLOCK:
535 keymap_config.swap_control_capslock = false;
536 break;
537 case MAGIC_UNCAPSLOCK_TO_CONTROL:
538 keymap_config.capslock_to_control = false;
539 break;
540 case MAGIC_UNSWAP_LALT_LGUI:
541 keymap_config.swap_lalt_lgui = false;
542 break;
543 case MAGIC_UNSWAP_RALT_RGUI:
544 keymap_config.swap_ralt_rgui = false;
545 break;
546 case MAGIC_UNSWAP_LCTL_LGUI:
547 keymap_config.swap_lctl_lgui = false;
548 break;
549 case MAGIC_UNSWAP_RCTL_RGUI:
550 keymap_config.swap_rctl_rgui = false;
551 break;
552 case MAGIC_UNNO_GUI:
553 keymap_config.no_gui = false;
554 break;
555 case MAGIC_UNSWAP_GRAVE_ESC:
556 keymap_config.swap_grave_esc = false;
557 break;
558 case MAGIC_UNSWAP_BACKSLASH_BACKSPACE:
559 keymap_config.swap_backslash_backspace = false;
560 break;
561 case MAGIC_UNHOST_NKRO:
562 clear_keyboard(); // clear first buffer to prevent stuck keys
563 keymap_config.nkro = false;
564 break;
565 case MAGIC_UNSWAP_ALT_GUI:
566 keymap_config.swap_lalt_lgui = keymap_config.swap_ralt_rgui = false;
567#ifdef AUDIO_ENABLE
568 PLAY_SONG(ag_norm_song);
569#endif
570 break;
571 case MAGIC_UNSWAP_CTL_GUI:
572 keymap_config.swap_lctl_lgui = keymap_config.swap_rctl_rgui = false;
573#ifdef AUDIO_ENABLE
574 PLAY_SONG(cg_norm_song);
575#endif
576 break;
577 case MAGIC_TOGGLE_ALT_GUI:
578 keymap_config.swap_lalt_lgui = !keymap_config.swap_lalt_lgui;
579 keymap_config.swap_ralt_rgui = keymap_config.swap_lalt_lgui;
580#ifdef AUDIO_ENABLE
581 if (keymap_config.swap_ralt_rgui) {
582 PLAY_SONG(ag_swap_song);
583 } else {
584 PLAY_SONG(ag_norm_song);
585 }
586#endif
587 break;
588 case MAGIC_TOGGLE_CTL_GUI:
589 keymap_config.swap_lctl_lgui = !keymap_config.swap_lctl_lgui;
590 keymap_config.swap_rctl_rgui = keymap_config.swap_lctl_lgui;
591#ifdef AUDIO_ENABLE
592 if (keymap_config.swap_rctl_rgui) {
593 PLAY_SONG(cg_swap_song);
594 } else {
595 PLAY_SONG(cg_norm_song);
596 }
597#endif
598 break;
599 case MAGIC_TOGGLE_NKRO:
600 clear_keyboard(); // clear first buffer to prevent stuck keys
601 keymap_config.nkro = !keymap_config.nkro;
602 break;
603 case MAGIC_EE_HANDS_LEFT:
604 eeconfig_update_handedness(true);
605 break;
606 case MAGIC_EE_HANDS_RIGHT:
607 eeconfig_update_handedness(false);
608 break;
609 default:
610 break;
611 }
612 eeconfig_update_keymap(keymap_config.raw);
613 clear_keyboard(); // clear to prevent stuck keys
614
615 return false;
616 }
617 break;
618
619 case GRAVE_ESC: { 468 case GRAVE_ESC: {
620 /* true if the last press of GRAVE_ESC was shifted (i.e. GUI or SHIFT were pressed), false otherwise. 469 /* true if the last press of GRAVE_ESC was shifted (i.e. GUI or SHIFT were pressed), false otherwise.
621 * Used to ensure that the correct keycode is released if the key is released. 470 * Used to ensure that the correct keycode is released if the key is released.