aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrashna <drashna@live.com>2017-11-10 19:58:53 -0800
committerJack Humbert <jack.humb@gmail.com>2017-11-10 22:58:53 -0500
commit0533362e8205957493d52d4356aa20537a151118 (patch)
tree106e6feb82d31192ce349f68b4763c5a3d71dcaa
parent4df4fa7c265e1e5c9b262851a704db7755971229 (diff)
downloadqmk_firmware-0533362e8205957493d52d4356aa20537a151118.tar.gz
qmk_firmware-0533362e8205957493d52d4356aa20537a151118.zip
Cleaned uppersonal userspace and keymaps (#1998)
* Cleanup of keymaps * Remove Tap Dance from Orthodox keymap * Cleaned up userspace and keymaps * Added sample (template)userspace files to my folder
-rw-r--r--keyboards/ergodox_ez/keymaps/drashna/keymap.c4
-rw-r--r--keyboards/ergodox_ez/keymaps/drashna/rules.mk3
-rw-r--r--keyboards/handwired/woodpad/keymaps/drashna/config.h6
-rw-r--r--keyboards/handwired/woodpad/keymaps/drashna/keymap.c22
-rw-r--r--keyboards/handwired/woodpad/keymaps/drashna/rules.mk1
-rw-r--r--keyboards/orthodox/keymaps/drashna/config.h3
-rw-r--r--keyboards/orthodox/keymaps/drashna/keymap.c47
-rw-r--r--keyboards/orthodox/keymaps/drashna/rules.mk5
-rw-r--r--keyboards/viterbi/keymaps/drashna/keymap.c50
-rw-r--r--users/drashna/drashna.c115
-rw-r--r--users/drashna/drashna.h7
-rw-r--r--users/drashna/rules.mk1
-rw-r--r--users/drashna/template.c82
-rw-r--r--users/drashna/template.h18
14 files changed, 218 insertions, 146 deletions
diff --git a/keyboards/ergodox_ez/keymaps/drashna/keymap.c b/keyboards/ergodox_ez/keymaps/drashna/keymap.c
index 651703c1e..1f9161236 100644
--- a/keyboards/ergodox_ez/keymaps/drashna/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/drashna/keymap.c
@@ -225,7 +225,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
225 KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D, 225 KC_BSPC, KC_A, KC_R, KC_S, KC_T, KC_D,
226 KC_LSFT, LCTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, TG(_OVERWATCH), 226 KC_LSFT, LCTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, TG(_OVERWATCH),
227 LT(_SYMB,KC_GRV),KC_QUOT, KC_LGUI, KC_LBRACKET,KC_RBRACKET, 227 LT(_SYMB,KC_GRV),KC_QUOT, KC_LGUI, KC_LBRACKET,KC_RBRACKET,
228 ALT_T(KC_APP), KC_LEAD, 228 ALT_T(KC_APP), KC_LGUI,
229 KC_HOME, 229 KC_HOME,
230 KC_SPC,KC_BSPC,KC_END, 230 KC_SPC,KC_BSPC,KC_END,
231 // right hand 231 // right hand
@@ -234,7 +234,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
234 KC_H, KC_N, KC_E, KC_I, KC_O, GUI_T(KC_QUOTE), 234 KC_H, KC_N, KC_E, KC_I, KC_O, GUI_T(KC_QUOTE),
235 TG(_OVERWATCH),KC_K, KC_M, KC_COMM,KC_DOT, RCTL_T(KC_SLASH), KC_RSHIFT, 235 TG(_OVERWATCH),KC_K, KC_M, KC_COMM,KC_DOT, RCTL_T(KC_SLASH), KC_RSHIFT,
236 KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TT(_SYMB), 236 KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TT(_SYMB),
237 KC_LALT, CTL_T(KC_ESC), 237 KC_RGUI, CTL_T(KC_ESC),
238 KC_PGUP, 238 KC_PGUP,
239 KC_PGDN,KC_DELETE, KC_ENT 239 KC_PGDN,KC_DELETE, KC_ENT
240 ), 240 ),
diff --git a/keyboards/ergodox_ez/keymaps/drashna/rules.mk b/keyboards/ergodox_ez/keymaps/drashna/rules.mk
index b6c5ed3bd..bfeb6be49 100644
--- a/keyboards/ergodox_ez/keymaps/drashna/rules.mk
+++ b/keyboards/ergodox_ez/keymaps/drashna/rules.mk
@@ -1,8 +1,7 @@
1TAP_DANCE_ENABLE = yes 1TAP_DANCE_ENABLE = yes
2SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend 2SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
3COMMAND_ENABLE = yes # Commands for debug and configuration 3COMMAND_ENABLE = no # Commands for debug and configuration
4RGBLIGHT_ENABLE = yes 4RGBLIGHT_ENABLE = yes
5MIDI_ENABLE = no
6CONSOLE_ENABLE = no 5CONSOLE_ENABLE = no
7 6
8EXTRAFLAGS = -flto 7EXTRAFLAGS = -flto
diff --git a/keyboards/handwired/woodpad/keymaps/drashna/config.h b/keyboards/handwired/woodpad/keymaps/drashna/config.h
index be1e4df59..780192cf3 100644
--- a/keyboards/handwired/woodpad/keymaps/drashna/config.h
+++ b/keyboards/handwired/woodpad/keymaps/drashna/config.h
@@ -28,13 +28,13 @@
28 28
29#ifdef RGBLIGHT_ENABLE 29#ifdef RGBLIGHT_ENABLE
30#define RGB_DI_PIN D3 30#define RGB_DI_PIN D3
31#define RGBLED_NUM 7 // Number of LEDs 31#define RGBLED_NUM 14 // Number of LEDs
32#define RGBLIGHT_ANIMATIONS 32#define RGBLIGHT_ANIMATIONS
33#define RGBLIGHT_HUE_STEP 12 33#define RGBLIGHT_HUE_STEP 12
34#define RGBLIGHT_SAT_STEP 12 34#define RGBLIGHT_SAT_STEP 12
35#define RGBLIGHT_VAL_STEP 12 35#define RGBLIGHT_VAL_STEP 12
36#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2 36#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 4
37#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2 37#define RGBLIGHT_EFFECT_SNAKE_LENGTH 3
38#define RGBLIGHT_EFFECT_BREATHE_CENTER 1 38#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
39#endif // RGBLIGHT_ENABLE 39#endif // RGBLIGHT_ENABLE
40 40
diff --git a/keyboards/handwired/woodpad/keymaps/drashna/keymap.c b/keyboards/handwired/woodpad/keymaps/drashna/keymap.c
index 6ec7f52fd..e53c65f10 100644
--- a/keyboards/handwired/woodpad/keymaps/drashna/keymap.c
+++ b/keyboards/handwired/woodpad/keymaps/drashna/keymap.c
@@ -47,10 +47,10 @@ bool check_dtimer(uint8_t dtimer) {
47 47
48#ifdef TAP_DANCE_ENABLE 48#ifdef TAP_DANCE_ENABLE
49enum { 49enum {
50 TD_DIABLO_1 = 0, 50 TD_D3_1 = 0,
51 TD_DIABLO_2, 51 TD_D3_2,
52 TD_DIABLO_3, 52 TD_D3_3,
53 TD_DIABLO_4 53 TD_D3_4
54}; 54};
55 55
56 56
@@ -89,10 +89,10 @@ void diablo_tapdance4(qk_tap_dance_state_t *state, void *user_data) {
89//Tap Dance Definitions 89//Tap Dance Definitions
90qk_tap_dance_action_t tap_dance_actions[] = { 90qk_tap_dance_action_t tap_dance_actions[] = {
91 // tap once to disable, and more to enable timed micros 91 // tap once to disable, and more to enable timed micros
92 [TD_DIABLO_1] = ACTION_TAP_DANCE_FN(diablo_tapdance1), 92 [TD_D3_1] = ACTION_TAP_DANCE_FN(diablo_tapdance1),
93 [TD_DIABLO_2] = ACTION_TAP_DANCE_FN(diablo_tapdance2), 93 [TD_D3_2] = ACTION_TAP_DANCE_FN(diablo_tapdance2),
94 [TD_DIABLO_3] = ACTION_TAP_DANCE_FN(diablo_tapdance3), 94 [TD_D3_3] = ACTION_TAP_DANCE_FN(diablo_tapdance3),
95 [TD_DIABLO_4] = ACTION_TAP_DANCE_FN(diablo_tapdance4), 95 [TD_D3_4] = ACTION_TAP_DANCE_FN(diablo_tapdance4),
96 96
97}; 97};
98#endif 98#endif
@@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
117 KC_ESC, _______, _______, _______,\ 117 KC_ESC, _______, _______, _______,\
118 KC_S, KC_F, KC_I, KC_M, \ 118 KC_S, KC_F, KC_I, KC_M, \
119 KC_1, KC_2, KC_3, KC_4, \ 119 KC_1, KC_2, KC_3, KC_4, \
120 TD(TD_DIABLO_1), TD(TD_DIABLO_2), TD(TD_DIABLO_3), TD(TD_DIABLO_4), \ 120 TD(TD_D3_1), TD(TD_D3_2), TD(TD_D3_3), TD(TD_D3_4), \
121 _______, KC_DIABLO_CLEAR, KC_Q, SFT_T(KC_SPACE) \ 121 _______, KC_DIABLO_CLEAR, KC_Q, SFT_T(KC_SPACE) \
122), 122),
123#else 123#else
@@ -135,7 +135,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
135 KC_OVERWATCH, _______, _______, XXXXXXX,\ 135 KC_OVERWATCH, _______, _______, XXXXXXX,\
136 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 136 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
137 XXXXXXX, XXXXXXX, XXXXXXX, KC_JUSTGAME, \ 137 XXXXXXX, XXXXXXX, XXXXXXX, KC_JUSTGAME, \
138 KC_SYMM, KC_DOOMFIST, KC_TORB, KC_GOODGAME, \ 138 KC_SYMM, KC_TORB, XXXXXXX, KC_GOODGAME, \
139 KC_SALT, KC_MORESALT, KC_SALTHARD, KC_GLHF \ 139 KC_SALT, KC_MORESALT, KC_SALTHARD, KC_GLHF \
140), 140),
141[_MEDIA] = KEYMAP( /* Base */ 141[_MEDIA] = KEYMAP( /* Base */
@@ -226,7 +226,7 @@ void matrix_init_keymap(void) {
226 226
227void matrix_scan_keymap(void) { 227void matrix_scan_keymap(void) {
228 numlock_led_off(); 228 numlock_led_off();
229 if (is_overwatch && biton32(layer_state) == _MACROS) { 229 if ((is_overwatch && biton32(layer_state) == _MACROS) || (biton32(layer_state) == _NAV)) {
230 numlock_led_on(); 230 numlock_led_on();
231 } 231 }
232 232
diff --git a/keyboards/handwired/woodpad/keymaps/drashna/rules.mk b/keyboards/handwired/woodpad/keymaps/drashna/rules.mk
index b6c5ed3bd..bee3ecf50 100644
--- a/keyboards/handwired/woodpad/keymaps/drashna/rules.mk
+++ b/keyboards/handwired/woodpad/keymaps/drashna/rules.mk
@@ -4,6 +4,7 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
4RGBLIGHT_ENABLE = yes 4RGBLIGHT_ENABLE = yes
5MIDI_ENABLE = no 5MIDI_ENABLE = no
6CONSOLE_ENABLE = no 6CONSOLE_ENABLE = no
7NKRO_ENABLE = yes
7 8
8EXTRAFLAGS = -flto 9EXTRAFLAGS = -flto
9 10
diff --git a/keyboards/orthodox/keymaps/drashna/config.h b/keyboards/orthodox/keymaps/drashna/config.h
index fc483b08e..d88481fd6 100644
--- a/keyboards/orthodox/keymaps/drashna/config.h
+++ b/keyboards/orthodox/keymaps/drashna/config.h
@@ -61,5 +61,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
61#define RGBLIGHT_EFFECT_BREATHE_CENTER 1 61#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
62#endif // RGBLIGHT_ENABLE 62#endif // RGBLIGHT_ENABLE
63 63
64#ifdef AUDIO_ENABLE
65#define C6_AUDIO
66#endif
64 67
65#endif 68#endif
diff --git a/keyboards/orthodox/keymaps/drashna/keymap.c b/keyboards/orthodox/keymaps/drashna/keymap.c
index b6618f151..ca4e6dc2c 100644
--- a/keyboards/orthodox/keymaps/drashna/keymap.c
+++ b/keyboards/orthodox/keymaps/drashna/keymap.c
@@ -20,11 +20,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
20*/ 20*/
21 21
22#include "orthodox.h" 22#include "orthodox.h"
23#include "action_layer.h"
24#include "eeconfig.h"
25#include "drashna.h" 23#include "drashna.h"
26 24
27extern keymap_config_t keymap_config;
28 25
29// Each layer gets a name for readability, which is then used in the keymap matrix below. 26// Each layer gets a name for readability, which is then used in the keymap matrix below.
30// The underscores don't mean anything - you can have a layer called STUFF or any other name. 27// The underscores don't mean anything - you can have a layer called STUFF or any other name.
@@ -36,38 +33,6 @@ extern keymap_config_t keymap_config;
36#define XXXXXXX KC_NO 33#define XXXXXXX KC_NO
37 34
38 35
39#ifdef TAP_DANCE_ENABLE
40enum {
41 TD_FLSH = 0,
42};
43
44
45
46
47
48// on the fourth tap, set the keyboard on flash state
49// and set the underglow to red, because red == bad
50void dance_flsh_finished(qk_tap_dance_state_t *state, void *user_data) {
51 if (state->count >= 4) {
52#ifdef RGBLIGHT_ENABLE
53 rgblight_mode(1);
54 rgblight_setrgb(0xff, 0x00, 0x00);
55#endif
56 reset_tap_dance(state);
57 reset_keyboard();
58 }
59}
60
61
62
63//Tap Dance Definitions
64qk_tap_dance_action_t tap_dance_actions[] = {
65 //Once for Blue, Twice for Green, Thrice for Red, and four to flash
66 [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_flsh_finished, NULL),
67
68};
69#endif
70
71const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 36const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
72 37
73[_QWERTY] = KEYMAP(\ 38[_QWERTY] = KEYMAP(\
@@ -106,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
106), 71),
107 72
108[_ADJUST] = KEYMAP(\ 73[_ADJUST] = KEYMAP(\
109 KC_MAKE, KC_RESET, TD(TD_FLSH), _______, _______, _______, _______, _______, _______, _______, _______, _______, \ 74 KC_MAKE,KC_RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
110 _______, _______, _______, AU_ON, AU_OFF, AG_NORM, _______, XXXXXXX, _______, _______, XXXXXXX, _______, AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, _______, \ 75 _______, _______, _______, AU_ON, AU_OFF, AG_NORM, _______, XXXXXXX, _______, _______, XXXXXXX, _______, AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, _______, \
111 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MAGIC_TOGGLE_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY \ 76 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MAGIC_TOGGLE_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY \
112) 77)
@@ -114,8 +79,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
114 79
115}; 80};
116 81
117 82#ifdef FAUXCLICKY_ENABLE
118bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { 83float fauxclicky_pressed_note[2] = MUSICAL_NOTE(_A4, 0.0625); // (_D4, 0.25);
119 return true; 84float fauxclicky_released_note[2] = MUSICAL_NOTE(_A4, 0.0625); // (_C4, 0.125);
120} 85float fauxclicky_beep_note[2] = MUSICAL_NOTE(_C6, 0.25); // (_C4, 0.25);
121 86#endif
diff --git a/keyboards/orthodox/keymaps/drashna/rules.mk b/keyboards/orthodox/keymaps/drashna/rules.mk
index e6eb954bc..293faf13e 100644
--- a/keyboards/orthodox/keymaps/drashna/rules.mk
+++ b/keyboards/orthodox/keymaps/drashna/rules.mk
@@ -1,11 +1,10 @@
1CONSOLE_ENABLE = no 1CONSOLE_ENABLE = no
2TAP_DANCE_ENABLE = yes 2TAP_DANCE_ENABLE = no
3RGBLIGHT_ENABLE = yes 3RGBLIGHT_ENABLE = yes
4AUDIO_ENABLE = no 4AUDIO_ENABLE = no
5MOUSEKEY_ENABLE = no 5MOUSEKEY_ENABLE = no
6NKRO_ENABLE = yes 6NKRO_ENABLE = yes
7FAUXCLICKY_ENABLE = no 7FAUXCLICKY_ENABLE = yes
8EXTRAFLAGS = -flto
9 8
10ifndef QUANTUM_DIR 9ifndef QUANTUM_DIR
11 include ../../../../Makefile 10 include ../../../../Makefile
diff --git a/keyboards/viterbi/keymaps/drashna/keymap.c b/keyboards/viterbi/keymaps/drashna/keymap.c
index b33f05027..48a146958 100644
--- a/keyboards/viterbi/keymaps/drashna/keymap.c
+++ b/keyboards/viterbi/keymaps/drashna/keymap.c
@@ -38,10 +38,10 @@ bool check_dtimer(uint8_t dtimer) {
38 38
39 39
40enum { 40enum {
41 TD_DIABLO_1 = 0, 41 TD_D3_1 = 0,
42 TD_DIABLO_2, 42 TD_D3_2,
43 TD_DIABLO_3, 43 TD_D3_3,
44 TD_DIABLO_4 44 TD_D3_4
45}; 45};
46 46
47 47
@@ -80,10 +80,10 @@ void diablo_tapdance4(qk_tap_dance_state_t *state, void *user_data) {
80//Tap Dance Definitions 80//Tap Dance Definitions
81qk_tap_dance_action_t tap_dance_actions[] = { 81qk_tap_dance_action_t tap_dance_actions[] = {
82 // tap once to disable, and more to enable timed micros 82 // tap once to disable, and more to enable timed micros
83 [TD_DIABLO_1] = ACTION_TAP_DANCE_FN(diablo_tapdance1), 83 [TD_D3_1] = ACTION_TAP_DANCE_FN(diablo_tapdance1),
84 [TD_DIABLO_2] = ACTION_TAP_DANCE_FN(diablo_tapdance2), 84 [TD_D3_2] = ACTION_TAP_DANCE_FN(diablo_tapdance2),
85 [TD_DIABLO_3] = ACTION_TAP_DANCE_FN(diablo_tapdance3), 85 [TD_D3_3] = ACTION_TAP_DANCE_FN(diablo_tapdance3),
86 [TD_DIABLO_4] = ACTION_TAP_DANCE_FN(diablo_tapdance4), 86 [TD_D3_4] = ACTION_TAP_DANCE_FN(diablo_tapdance4),
87 87
88}; 88};
89#endif 89#endif
@@ -92,33 +92,33 @@ qk_tap_dance_action_t tap_dance_actions[] = {
92const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 92const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
93 93
94 [_NUMLOCK] = KEYMAP( 94 [_NUMLOCK] = KEYMAP(
95 LMACRO, DIABLO, GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 95 LMACRO, DIABLO, GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
96 MEDIA, KC_CALC, COVECUBE,KC_P7, KC_P8, KC_P9, KC_PAST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 96 MEDIA, KC_CALC, COVECUBE, KC_P7, KC_P8, KC_P9, KC_PAST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
97 KC_HOME, KC_DEL, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PMNS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 97 KC_HOME, KC_DEL, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PMNS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
98 KC_END, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PPLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 98 KC_END, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PPLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
99 KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P00, KC_PDOT, KC_PENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ 99 KC_LEFT, KC_DOWN, K C_RGHT, KC_P0, KC_KP_00,KC_PDOT, KC_PENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
100 ), 100 ),
101 101
102 [_DIABLO] = KEYMAP( 102 [_DIABLO] = KEYMAP(
103 KC_ESC, DIABLO, KC_V, KC_D, XXXXXXX, XXXXXXX, KC_L, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 103 KC_ESC, DIABLO, KC_V, KC_D, XXXXXXX, XXXXXXX, KC_L, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
104 KC_TAB, KC_S, KC_F, KC_I, KC_M, KC_T, KC_J, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 104 KC_TAB, KC_S, KC_F, KC_I, KC_M, KC_T, KC_J, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
105 KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_F, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 105 KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_F, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
106 KC_LCTL, TD(TD_DIABLO_1), TD(TD_DIABLO_2), TD(TD_DIABLO_3), TD(TD_DIABLO_4), KC_Z, KC_DIABLO_CLEAR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 106 KC_LCTL, TD(TD_D3_1), TD(TD_D3_2), TD(TD_D3_3), TD(TD_D3_4), KC_Z, KC_DIABLO_CLEAR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
107 KC_LALT, KC_F4, KC_F5, KC_F8, KC_F9, KC_F10, SFT_T(KC_SPACE), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ 107 KC_LALT, KC_F4, KC_F5, KC_F8, KC_F9, KC_F10, SFT_T(KC_SPACE), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
108 ), 108 ),
109 109
110 [_OVERWATCH] = KEYMAP( // Game pad layout designed primarily for Overwatch 110 [_OVERWATCH] = KEYMAP( // Game pad layout designed primarily for Overwatch
111 LMACRO, KC_ESC, GAMEPAD, KC_1, KC_2, KC_3, KC_4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 111 LMACRO, KC_ESC, GAMEPAD, KC_1, KC_2, KC_3, KC_4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
112 MEDIA, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 112 MEDIA, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
113 KC_Z, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 113 KC_Z, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
114 KC_Y, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 114 KC_Y, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
115 KC_F1, KC_U, KC_I, KC_Y, KC_V, KC_SPC, KC_V, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ 115 KC_F1, KC_U, KC_I, KC_Y, KC_V, KC_SPC, KC_V, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
116 ), 116 ),
117 117
118 [_MACROS] = KEYMAP( 118 [_MACROS] = KEYMAP(
119 LMACRO, XXXXXXX, GAMEPAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 119 LMACRO, XXXXXXX, GAMEPAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
120 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 120 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
121 KC_SYMM, KC_TORB, KC_DOOMFIST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 121 KC_SYMM, KC_TORB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
122 KC_GLHF, KC_GOODGAME, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 122 KC_GLHF, KC_GOODGAME, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
123 KC_SALT, KC_MORESALT, KC_SALTHARD, KC_JUSTGAME, KC_AIM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ 123 KC_SALT, KC_MORESALT, KC_SALTHARD, KC_JUSTGAME, KC_AIM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
124 ), 124 ),
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c
index 47565ff9c..30da7414e 100644
--- a/users/drashna/drashna.c
+++ b/users/drashna/drashna.c
@@ -3,6 +3,10 @@
3#include "action.h" 3#include "action.h"
4#include "version.h" 4#include "version.h"
5 5
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
6__attribute__ ((weak)) 10__attribute__ ((weak))
7void matrix_init_keymap(void) {} 11void matrix_init_keymap(void) {}
8 12
@@ -13,8 +17,15 @@ __attribute__ ((weak))
13bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { 17bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
14 return true; 18 return true;
15} 19}
20__attribute__ ((weak))
21uint32_t layer_state_set_keymap (uint32_t state) {
22 return state;
23}
16 24
25bool is_overwatch = false;
17 26
27// Call user matrix init, set default RGB colors and then
28// call the keymap's init function
18void matrix_init_user(void) { 29void matrix_init_user(void) {
19#ifdef RGBLIGHT_ENABLE 30#ifdef RGBLIGHT_ENABLE
20 uint8_t default_layer = eeconfig_read_default_layer(); 31 uint8_t default_layer = eeconfig_read_default_layer();
@@ -44,6 +55,8 @@ void matrix_init_user(void) {
44 matrix_init_keymap(); 55 matrix_init_keymap();
45} 56}
46 57
58// No global matrix scan code, so just run keymap's matix
59// scan function
47void matrix_scan_user(void) { 60void matrix_scan_user(void) {
48 matrix_scan_keymap(); 61 matrix_scan_keymap();
49} 62}
@@ -61,16 +74,10 @@ void persistent_default_layer_set(uint16_t default_layer) {
61 default_layer_set(default_layer); 74 default_layer_set(default_layer);
62} 75}
63 76
64 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
65bool process_record_user(uint16_t keycode, keyrecord_t *record) { 79bool process_record_user(uint16_t keycode, keyrecord_t *record) {
66 80
67 uint16_t kc;
68 if (is_overwatch) {
69 kc = KC_BSPC;
70 }
71 else {
72 kc = KC_ENTER;
73 }
74#ifdef CONSOLE_ENABLE 81#ifdef CONSOLE_ENABLE
75 xprintf("KL: row: %u, column: %u, pressed: %u\n", record->event.key.col, record->event.key.row, record->event.pressed); 82 xprintf("KL: row: %u, column: %u, pressed: %u\n", record->event.key.col, record->event.key.row, record->event.pressed);
76#endif 83#endif
@@ -143,6 +150,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
143 } 150 }
144 return false; 151 return false;
145 break; 152 break;
153#if !(defined(KEYBOARD_orthodox_rev1) || defined(KEYBOARD_ergodox_ez))
146 case KC_OVERWATCH: 154 case KC_OVERWATCH:
147 if (record->event.pressed) { 155 if (record->event.pressed) {
148 is_overwatch = !is_overwatch; 156 is_overwatch = !is_overwatch;
@@ -154,8 +162,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
154 break; 162 break;
155 case KC_SALT: 163 case KC_SALT:
156 if (!record->event.pressed) { 164 if (!record->event.pressed) {
157 register_code(kc); 165 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
158 unregister_code(kc); 166 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
159 _delay_ms(50); 167 _delay_ms(50);
160 SEND_STRING("Salt, salt, salt..."); 168 SEND_STRING("Salt, salt, salt...");
161 register_code(KC_ENTER); 169 register_code(KC_ENTER);
@@ -165,8 +173,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
165 break; 173 break;
166 case KC_MORESALT: 174 case KC_MORESALT:
167 if (!record->event.pressed) { 175 if (!record->event.pressed) {
168 register_code(kc); 176 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
169 unregister_code(kc); 177 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
170 _delay_ms(50); 178 _delay_ms(50);
171 SEND_STRING("Please sir, can I have some more salt?!"); 179 SEND_STRING("Please sir, can I have some more salt?!");
172 register_code(KC_ENTER); 180 register_code(KC_ENTER);
@@ -176,10 +184,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
176 break; 184 break;
177 case KC_SALTHARD: 185 case KC_SALTHARD:
178 if (!record->event.pressed) { 186 if (!record->event.pressed) {
179 register_code(kc); 187 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
180 unregister_code(kc); 188 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
181 _delay_ms(50); 189 _delay_ms(50);
182 SEND_STRING("Your salt only makes my penis that much harder, and even more aggressive!"); 190 SEND_STRING("Your salt only makes me harder, and even more aggressive!");
183 register_code(KC_ENTER); 191 register_code(KC_ENTER);
184 unregister_code(KC_ENTER); 192 unregister_code(KC_ENTER);
185 } 193 }
@@ -187,8 +195,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
187 break; 195 break;
188 case KC_GOODGAME: 196 case KC_GOODGAME:
189 if (!record->event.pressed) { 197 if (!record->event.pressed) {
190 register_code(kc); 198 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
191 unregister_code(kc); 199 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
192 _delay_ms(50); 200 _delay_ms(50);
193 SEND_STRING("Good game, everyone!"); 201 SEND_STRING("Good game, everyone!");
194 register_code(KC_ENTER); 202 register_code(KC_ENTER);
@@ -198,8 +206,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
198 break; 206 break;
199 case KC_GLHF: 207 case KC_GLHF:
200 if (!record->event.pressed) { 208 if (!record->event.pressed) {
201 register_code(kc); 209 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
202 unregister_code(kc); 210 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
203 _delay_ms(50); 211 _delay_ms(50);
204 SEND_STRING("Good luck, have fun!!!"); 212 SEND_STRING("Good luck, have fun!!!");
205 register_code(KC_ENTER); 213 register_code(KC_ENTER);
@@ -209,8 +217,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
209 break; 217 break;
210 case KC_SYMM: 218 case KC_SYMM:
211 if (!record->event.pressed) { 219 if (!record->event.pressed) {
212 register_code(kc); 220 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
213 unregister_code(kc); 221 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
214 _delay_ms(50); 222 _delay_ms(50);
215 SEND_STRING("Left click to win!"); 223 SEND_STRING("Left click to win!");
216 register_code(KC_ENTER); 224 register_code(KC_ENTER);
@@ -218,21 +226,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
218 } 226 }
219 return false; 227 return false;
220 break; 228 break;
221 case KC_DOOMFIST:
222 if (!record->event.pressed) {
223 register_code(kc);
224 unregister_code(kc);
225 _delay_ms(50);
226 SEND_STRING("Hey, look at me. I'm Doomfist, and I'm overpowered! All I do is spam punches all day! I'm DPS, tank and defense, rolled into one! All I need is team healing to be complete!");
227 register_code(KC_ENTER);
228 unregister_code(KC_ENTER);
229 }
230 return false;
231 break;
232 case KC_JUSTGAME: 229 case KC_JUSTGAME:
233 if (!record->event.pressed) { 230 if (!record->event.pressed) {
234 register_code(kc); 231 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
235 unregister_code(kc); 232 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
236 _delay_ms(50); 233 _delay_ms(50);
237 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."); 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.");
238 register_code(KC_ENTER); 235 register_code(KC_ENTER);
@@ -242,8 +239,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
242 break; 239 break;
243 case KC_TORB: 240 case KC_TORB:
244 if (!record->event.pressed) { 241 if (!record->event.pressed) {
245 register_code(kc); 242 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
246 unregister_code(kc); 243 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
247 _delay_ms(50); 244 _delay_ms(50);
248 SEND_STRING("That was positively riveting!"); 245 SEND_STRING("That was positively riveting!");
249 register_code(KC_ENTER); 246 register_code(KC_ENTER);
@@ -253,8 +250,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
253 break; 250 break;
254 case KC_AIM: 251 case KC_AIM:
255 if (!record->event.pressed) { 252 if (!record->event.pressed) {
256 register_code(kc); 253 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
257 unregister_code(kc); 254 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
258 _delay_ms(50); 255 _delay_ms(50);
259 SEND_STRING("That aim is absolutely amazing. It's almost like you're a machine!" SS_TAP(X_ENTER)); 256 SEND_STRING("That aim is absolutely amazing. It's almost like you're a machine!" SS_TAP(X_ENTER));
260 _delay_ms(50); 257 _delay_ms(50);
@@ -262,13 +259,31 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
262 } 259 }
263 return false; 260 return false;
264 break; 261 break;
262#endif
265 case KC_MAKE: 263 case KC_MAKE:
266 if (!record->event.pressed) { 264 if (!record->event.pressed) {
265 SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP);
266#ifndef CATERINA_BOOTLOADER
267 SEND_STRING(":teensy ");
268#else
269 SEND_STRING(" ");
270#endif
267#ifdef RGBLIGHT_ENABLE 271#ifdef RGBLIGHT_ENABLE
268 SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP " RGBLIGHT_ENABLE=yes" SS_TAP(X_ENTER)); 272 SEND_STRING("RGBLIGHT_ENABLE=yes ");
273#else
274 SEND_STRING("RGBLIGHT_ENABLE=no ");
275#endif
276#ifdef AUDIO_ENABLE
277 SEND_STRING("AUDIO_ENABLE=yes ");
278#else
279 SEND_STRING("AUDIO_ENABLE=no ");
280#endif
281#ifdef FAUXCLICKY_ENABLE
282 SEND_STRING("FAUXCLICKY_ENABLE=yes ");
269#else 283#else
270 SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP " RGBLIGHT_ENABLE=no"SS_TAP(X_ENTER)); 284 SEND_STRING("FAUXCLICKY_ENABLE=no ");
271#endif 285#endif
286 SEND_STRING(SS_TAP(X_ENTER));
272 } 287 }
273 return false; 288 return false;
274 break; 289 break;
@@ -295,21 +310,14 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
295 } 310 }
296 return false; 311 return false;
297 break; 312 break;
298 case KC_P00:
299 if (!record->event.pressed) {
300 register_code(KC_P0);
301 unregister_code(KC_P0);
302 register_code(KC_P0);
303 unregister_code(KC_P0);
304 }
305 return false;
306 break;
307 } 313 }
308 return process_record_keymap(keycode, record); 314 return process_record_keymap(keycode, record);
309} 315}
310 316
311 317// Runs state check and changes underglow color and animation
312uint32_t layer_state_set_kb(uint32_t state) { 318// on layer change, no matter where the change was initiated
319// Then runs keymap's layer change check
320uint32_t layer_state_set_user (uint32_t state) {
313#ifdef RGBLIGHT_ENABLE 321#ifdef RGBLIGHT_ENABLE
314 uint8_t default_layer = eeconfig_read_default_layer(); 322 uint8_t default_layer = eeconfig_read_default_layer();
315 323
@@ -329,7 +337,6 @@ uint32_t layer_state_set_kb(uint32_t state) {
329 case _MACROS: 337 case _MACROS:
330 rgblight_set_orange; 338 rgblight_set_orange;
331 is_overwatch ? rgblight_mode(17) : rgblight_mode(18); 339 is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
332 rgblight_mode(18);
333 break; 340 break;
334 case _MEDIA: 341 case _MEDIA:
335 rgblight_set_green; 342 rgblight_set_green;
@@ -375,5 +382,5 @@ uint32_t layer_state_set_kb(uint32_t state) {
375 break; 382 break;
376 } 383 }
377#endif 384#endif
378 return state; 385 return layer_state_set_keymap (state);
379} 386}
diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h
index 0e7b25d2d..6e897ad99 100644
--- a/users/drashna/drashna.h
+++ b/users/drashna/drashna.h
@@ -38,8 +38,7 @@
38#define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF); 38#define rgblight_set_purple rgblight_sethsv (0x10E, 0xFF, 0xFF);
39#endif 39#endif
40 40
41__attribute__ ((weak)) 41extern bool is_overwatch;
42bool is_overwatch = false;
43 42
44enum custom_keycodes { 43enum custom_keycodes {
45 PLACEHOLDER = SAFE_RANGE, // can always be here 44 PLACEHOLDER = SAFE_RANGE, // can always be here
@@ -59,15 +58,13 @@ enum custom_keycodes {
59 KC_SALTHARD, 58 KC_SALTHARD,
60 KC_GOODGAME, 59 KC_GOODGAME,
61 KC_SYMM, 60 KC_SYMM,
62 KC_DOOMFIST,
63 KC_JUSTGAME, 61 KC_JUSTGAME,
64 KC_GLHF, 62 KC_GLHF,
65 KC_TORB, 63 KC_TORB,
66 KC_AIM, 64 KC_AIM,
67 KC_MAKE, 65 KC_MAKE,
68 KC_RESET, 66 KC_RESET,
69 KC_P00, 67 NEWPLACEHOLDER //use "NEWPLACEHOLDER for keymap specific codes
70 NEWPLACEHOLDER
71}; 68};
72 69
73#endif 70#endif
diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk
index 0150bb608..6ce1ff5ba 100644
--- a/users/drashna/rules.mk
+++ b/users/drashna/rules.mk
@@ -1,2 +1,3 @@
1 1
2SRC += drashna.c 2SRC += drashna.c
3EXTRAFLAGS = -flto
diff --git a/users/drashna/template.c b/users/drashna/template.c
new file mode 100644
index 000000000..027c780e9
--- /dev/null
+++ b/users/drashna/template.c
@@ -0,0 +1,82 @@
1#include "drashna.h"
2#include "quantum.h"
3#include "action.h"
4#include "version.h"
5
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))
11void matrix_init_keymap(void) {}
12
13__attribute__ ((weak))
14void matrix_scan_keymap(void) {}
15
16__attribute__ ((weak))
17bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
18 return true;
19}
20__attribute__ ((weak))
21uint32_t layer_state_set_keymap (uint32_t state) {
22 return state;
23}
24
25// Call user matrix init, then call the keymap's init function
26void matrix_init_user(void) {
27 matrix_init_keymap();
28}
29
30// No global matrix scan code, so just run keymap's matix
31// scan function
32void matrix_scan_user(void) {
33 matrix_scan_keymap();
34}
35
36
37// Defines actions tor my global custom keycodes. Defined in drashna.h file
38// Then runs the _keymap's recod handier if not processed here,
39// And use "NEWPLACEHOLDER" for new safe range
40bool process_record_user(uint16_t keycode, keyrecord_t *record) {
41
42 switch (keycode) {
43 case KC_MAKE:
44 if (!record->event.pressed) {
45 SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP);
46#ifndef CATERINA_BOOTLOADER
47 SEND_STRING(":teensy ");
48#else
49 SEND_STRING(" ");
50#endif
51 SEND_STRING(SS_TAP(X_ENTER));
52 }
53 return false;
54 break;
55 case KC_RESET:
56 if (!record->event.pressed) {
57 reset_keyboard();
58 }
59 return false;
60 break;
61 case EPRM:
62 if (record->event.pressed) {
63 eeconfig_init();
64 }
65 return false;
66 break;
67 case VRSN:
68 if (record->event.pressed) {
69 SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
70 }
71 return false;
72 break;
73 }
74 return process_record_keymap(keycode, record);
75}
76
77// Runs state check and changes underglow color and animation
78// on layer change, no matter where the change was initiated
79// Then runs keymap's layer change check
80uint32_t layer_state_set_user (uint32_t state) {
81 return layer_state_set_keymap (state);
82}
diff --git a/users/drashna/template.h b/users/drashna/template.h
new file mode 100644
index 000000000..d1251462b
--- /dev/null
+++ b/users/drashna/template.h
@@ -0,0 +1,18 @@
1#ifndef USERSPACE
2#define USERSPACE
3
4#include "quantum.h"
5
6// Define layer names
7#define BASE 0
8
9enum custom_keycodes {
10 PLACEHOLDER = SAFE_RANGE, // can always be here
11 EPRM,
12 VRSN,
13 KC_MAKE,
14 KC_RESET,
15 NEWPLACEHOLDER //use "NEWPLACEHOLDER for keymap specific codes
16};
17
18#endif