6 // Add reconfigurable functions here, for keymap customization
7 // This allows for a global, userspace functions, and continued
8 // customization of the keymap. Use _keymap instead of _user
9 // functions in the keymaps
10 __attribute__ ((weak))
11 void matrix_init_keymap(void) {}
13 __attribute__ ((weak))
14 void matrix_scan_keymap(void) {}
16 __attribute__ ((weak))
17 bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
20 __attribute__ ((weak))
21 uint32_t layer_state_set_keymap (uint32_t state) {
25 bool is_overwatch = false;
27 // Call user matrix init, set default RGB colors and then
28 // call the keymap's init function
29 void matrix_init_user(void) {
30 #ifdef RGBLIGHT_ENABLE
31 uint8_t default_layer = eeconfig_read_default_layer();
36 if (default_layer & (1UL << _COLEMAK)) {
39 else if (default_layer & (1UL << _DVORAK)) {
42 else if (default_layer & (1UL << _WORKMAN)) {
58 // No global matrix scan code, so just run keymap's matix
60 void matrix_scan_user(void) {
65 float tone_qwerty[][2] = SONG(QWERTY_SOUND);
66 float tone_dvorak[][2] = SONG(DVORAK_SOUND);
67 float tone_colemak[][2] = SONG(COLEMAK_SOUND);
68 float tone_workman[][2] = SONG(PLOVER_SOUND);
72 void persistent_default_layer_set(uint16_t default_layer) {
73 eeconfig_update_default_layer(default_layer);
74 default_layer_set(default_layer);
77 // Defines actions tor my global custom keycodes. Defined in drashna.h file
78 // Then runs the _keymap's recod handier if not processed here
79 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
82 xprintf("KL: row: %u, column: %u, pressed: %u\n", record->event.key.col, record->event.key.row, record->event.pressed);
87 if (record->event.pressed) {
89 PLAY_SONG(tone_qwerty);
91 persistent_default_layer_set(1UL << _QWERTY);
96 if (record->event.pressed) {
98 PLAY_SONG(tone_colemak);
100 persistent_default_layer_set(1UL << _COLEMAK);
105 if (record->event.pressed) {
107 PLAY_SONG(tone_dvorak);
109 persistent_default_layer_set(1UL << _DVORAK);
114 if (record->event.pressed) {
116 PLAY_SONG(tone_workman);
118 persistent_default_layer_set(1UL << _WORKMAN);
123 if (record->event.pressed) {
125 update_tri_layer(_LOWER, _RAISE, _ADJUST);
129 update_tri_layer(_LOWER, _RAISE, _ADJUST);
134 if (record->event.pressed) {
136 update_tri_layer(_LOWER, _RAISE, _ADJUST);
140 update_tri_layer(_LOWER, _RAISE, _ADJUST);
145 if (record->event.pressed) {
153 #if !(defined(KEYBOARD_orthodox_rev1) || defined(KEYBOARD_ergodox_ez))
155 if (record->event.pressed) {
156 is_overwatch = !is_overwatch;
158 #ifdef RGBLIGHT_ENABLE
159 is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
164 if (!record->event.pressed) {
165 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
166 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
168 SEND_STRING("Salt, salt, salt...");
169 register_code(KC_ENTER);
170 unregister_code(KC_ENTER);
175 if (!record->event.pressed) {
176 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
177 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
179 SEND_STRING("Please sir, can I have some more salt?!");
180 register_code(KC_ENTER);
181 unregister_code(KC_ENTER);
186 if (!record->event.pressed) {
187 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
188 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
190 SEND_STRING("Your salt only makes me harder, and even more aggressive!");
191 register_code(KC_ENTER);
192 unregister_code(KC_ENTER);
197 if (!record->event.pressed) {
198 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
199 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
201 SEND_STRING("Good game, everyone!");
202 register_code(KC_ENTER);
203 unregister_code(KC_ENTER);
208 if (!record->event.pressed) {
209 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
210 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
212 SEND_STRING("Good luck, have fun!!!");
213 register_code(KC_ENTER);
214 unregister_code(KC_ENTER);
219 if (!record->event.pressed) {
220 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
221 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
223 SEND_STRING("Left click to win!");
224 register_code(KC_ENTER);
225 unregister_code(KC_ENTER);
230 if (!record->event.pressed) {
231 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
232 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
234 SEND_STRING("It may be a game, but if you don't want to actually try, please go play AI, so that people that actually want to take the game seriously and \"get good\" have a place to do so without trolls like you throwing games.");
235 register_code(KC_ENTER);
236 unregister_code(KC_ENTER);
241 if (!record->event.pressed) {
242 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
243 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
245 SEND_STRING("That was positively riveting!");
246 register_code(KC_ENTER);
247 unregister_code(KC_ENTER);
252 if (!record->event.pressed) {
253 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
254 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
256 SEND_STRING("That aim is absolutely amazing. It's almost like you're a machine!" SS_TAP(X_ENTER));
258 SEND_STRING("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!" SS_TAP(X_ENTER));
264 if (!record->event.pressed) {
265 SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP);
266 #ifndef CATERINA_BOOTLOADER
267 SEND_STRING(":teensy ");
271 #ifdef RGBLIGHT_ENABLE
272 SEND_STRING("RGBLIGHT_ENABLE=yes ");
274 SEND_STRING("RGBLIGHT_ENABLE=no ");
277 SEND_STRING("AUDIO_ENABLE=yes ");
279 SEND_STRING("AUDIO_ENABLE=no ");
281 #ifdef FAUXCLICKY_ENABLE
282 SEND_STRING("FAUXCLICKY_ENABLE=yes ");
284 SEND_STRING("FAUXCLICKY_ENABLE=no ");
286 SEND_STRING(SS_TAP(X_ENTER));
291 if (!record->event.pressed) {
292 #ifdef RGBLIGHT_ENABLE
295 rgblight_setrgb(0xff, 0x00, 0x00);
302 if (record->event.pressed) {
308 if (record->event.pressed) {
309 SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
314 return process_record_keymap(keycode, record);
317 // Runs state check and changes underglow color and animation
318 // on layer change, no matter where the change was initiated
319 // Then runs keymap's layer change check
320 uint32_t layer_state_set_user (uint32_t state) {
321 #ifdef RGBLIGHT_ENABLE
322 uint8_t default_layer = eeconfig_read_default_layer();
324 switch (biton32(state)) {
339 is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
369 if (default_layer & (1UL << _COLEMAK)) {
370 rgblight_set_magenta;
372 else if (default_layer & (1UL << _DVORAK)) {
375 else if (default_layer & (1UL << _WORKMAN)) {
385 return layer_state_set_keymap (state);