2 #include QMK_KEYBOARD_H
4 #ifdef BACKLIGHT_ENABLE
17 enum planck_keycodes
{
23 #define FKEYS LT(_FKEYS, KC_TAB)
24 #define NUMSYM TT(_NUMSYM)
25 #define FKEYGRV LT(_FKEYS, KC_GRV)
28 #define LAYERRESET M(7)
32 #include "dynamic_macro.h"
34 const uint16_t PROGMEM keymaps
[][MATRIX_ROWS
][MATRIX_COLS
] = {
36 {FKEYS
, KC_Q
, KC_W
, KC_E
, KC_R
, KC_T
, KC_Y
, KC_U
, KC_I
, KC_O
, KC_P
, KC_BSPC
},
37 {KC_ESC
, KC_A
, KC_S
, KC_D
, KC_F
, KC_G
, KC_H
, KC_J
, KC_K
, KC_L
, KC_SCLN
,KC_QUOT
},
38 {KC_LSFT
,KC_Z
, KC_X
, KC_C
, KC_V
, KC_B
, KC_N
, KC_M
, KC_COMM
,KC_DOT
,KC_SLSH
,SFT_T(KC_ENT
) },
39 {KC_LCTL
,KC_LALT
,KC_LGUI
, KC_SPC
,XXXXXXX
,XXXXXXX
,XXXXXXX
,NUMSYM
,KC_LEFT
,KC_DOWN
,KC_UP
,KC_RIGHT
}
42 {FKEYGRV
, KC_1
, KC_2
, KC_3
, KC_4
, KC_5
, KC_6
, KC_7
, KC_8
, KC_9
, KC_0
, _______
},
43 {KC_DEL
,KC_EXLM
, KC_AT
, KC_HASH
,KC_DLR
, KC_PERC
,KC_CIRC
,KC_AMPR
,KC_ASTR
,KC_LPRN
,KC_RPRN
, ADJUST
},
44 { _______
, KC_UNDS
,KC_PLUS
, KC_LCBR
,KC_RCBR
,KC_PIPE
, KC_MINS
,KC_EQL
,KC_LBRC
, KC_RBRC
, KC_BSLS
, _______
},
45 {_______
,_______
,_______
,_______
,XXXXXXX
,XXXXXXX
,XXXXXXX
,_______
, KC_HOME
, KC_PGDN
, KC_PGUP
, KC_END
}
48 {_______
, KC_F1
, KC_F2
, KC_F3
, KC_F4
, KC_F5
, KC_F6
, KC_F7
, KC_F8
, KC_F9
, KC_F10
, _______
},
49 {KC_DEL
, KC_F11
, KC_F12
, KC_F13
, KC_F14
, KC_F15
, _______
, _______
, _______
, MACSLEEP
, DYN_REC_START1
, DYN_REC_START2
},
50 {KC_CAPS
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, DYN_MACRO_PLAY1
, DYN_MACRO_PLAY2
,_______
,DYN_REC_STOP
},
51 {_______
,_______
,_______
,LAYERRESET
,XXXXXXX
,XXXXXXX
,XXXXXXX
,LAYERRESET
, KC_MNXT
, KC_VOLD
, KC_VOLU
, KC_MPLY
}
54 {KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
},
55 {XXXXXXX
, KC_Q
, KC_W
, KC_E
, KC_R
, KC_T
, KC_Y
, KC_U
, KC_I
, KC_O
, KC_P
, KC_LBRC
},
56 {XXXXXXX
, KC_A
, KC_S
, KC_D
, KC_F
, KC_G
, KC_H
, KC_J
, KC_K
, KC_L
, KC_SCLN
, KC_QUOT
},
57 {LAYERRESET
, XXXXXXX
, KC_C
, KC_V
, XXXXXXX
, XXXXXXX
, XXXXXXX
, KC_N
, KC_M
, XXXXXXX
, XXXXXXX
, XXXXXXX
}
60 {_______
, RESET
, _______
, _______
, _______
, _______
, _______
, _______
, KC_SLCK
, KC_PAUS
, KC_PSCR
, KC_DEL
},
61 {_______
, _______
, _______
, _______
, _______
, AG_NORM
, AG_SWAP
, QWERTY
, _______
, MACSLEEP
, PLOVER
, _______
},
62 {_______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
},
63 {BACKLIT
, _______
, _______
, LAYERRESET
, XXXXXXX
, XXXXXXX
, XXXXXXX
, _______
, _______
, _______
, _______
, _______
}
69 float tone_startup
[][2] = SONG(STARTUP_SOUND
);
70 float tone_qwerty
[][2] = SONG(QWERTY_SOUND
);
71 float tone_dyn_macro_rec
[][2] = SONG(DVORAK_SOUND
);
72 float tone_dyn_macro_play
[][2] = SONG(COLEMAK_SOUND
);
73 float tone_plover
[][2] = SONG(PLOVER_SOUND
);
74 float tone_adjust
[][2] = SONG(PLOVER_GOODBYE_SOUND
);
75 float music_scale
[][2] = SONG(MUSIC_SCALE_SOUND
);
77 float tone_goodbye
[][2] = SONG(GOODBYE_SOUND
);
80 void persistant_default_layer_set(uint16_t default_layer
) {
81 eeconfig_update_default_layer(default_layer
);
82 default_layer_set(default_layer
);
85 const macro_t
*action_get_macro(keyrecord_t
*record
, uint8_t id
, uint8_t opt
)
89 if (record
->event
.pressed
) {
90 register_code(KC_RSFT
);
91 register_code(KC_RCTL
);
92 register_code(KC_POWER
);
93 unregister_code(KC_POWER
);
94 unregister_code(KC_RCTL
);
95 unregister_code(KC_RSFT
);
99 if (record
->event
.pressed
) {
102 PLAY_NOTE_ARRAY(tone_plover
, false, 0);
110 case 7: // LAYERRESET
111 if (record
->event
.pressed
) {
113 PLAY_NOTE_ARRAY(tone_qwerty
, false, 0);
122 if (record
->event
.pressed
) {
123 register_code(KC_RSFT
);
124 #ifdef BACKLIGHT_ENABLE
128 unregister_code(KC_RSFT
);
132 if(record
->event
.pressed
) {
135 PLAY_NOTE_ARRAY(tone_adjust
, false, 0);
146 bool process_record_user(uint16_t keycode
, keyrecord_t
*record
) {
147 uint16_t macro_kc
= keycode
;
148 if (keycode
== FKEYS
|| keycode
== ADJUST
|| keycode
== FKEYGRV
){
149 macro_kc
= DYN_REC_STOP
;
151 if (!process_record_dynamic_macro(macro_kc
, record
)) {
158 void matrix_init_user(void) {
168 _delay_ms(20); // gets rid of tick
169 PLAY_NOTE_ARRAY(tone_startup
, false, 0);
174 PLAY_NOTE_ARRAY(tone_goodbye
, false, 0);
179 void music_on_user(void)
184 void music_scale_user(void)
186 PLAY_NOTE_ARRAY(music_scale
, false, 0);