aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2018-03-25 13:01:15 -0700
committerGitHub <noreply@github.com>2018-03-25 13:01:15 -0700
commit0c665696d7b498bd278d05eed3b52c1fac89ff29 (patch)
treea14f3ca315d4e9d044163b219d78d34e48f3eb7f
parenta09a042b8fe6a0369a7c479168492125efa24e59 (diff)
downloadqmk_firmware-0c665696d7b498bd278d05eed3b52c1fac89ff29.tar.gz
qmk_firmware-0c665696d7b498bd278d05eed3b52c1fac89ff29.zip
Update to drashna files (#2587)
* Add Colemak Mod-DH vars * Add Norman Layot vars * Set Shift Indicator to include CAPS Lock as well * Change MEH to GUI * Add Enter to Macro layer * Switch raise and lower layers to make more sense (to me) * Replace unused quote on Ergodox * Add One Shot defines * Dim indicator LEDs * Add short codes for KC_SECRET * Fix typos * Update OLKB code in userspace * Add global userspace config.h * add compile fix * Automatically include from userspace * update readme * Re-add QMK Scan loop * Add EEPROM reset code to all keymaps * Shorten fauxclick sound * Use layouts instead of keymap, when possible * Add OSM detection to ergodox * Convert Viterbi to LAYOUT macro * Clean up game macros * Because I accidently removed the C6 AUDIO define from my viterbi... Whoops * Minor formatting * Fix Woodpad because it's still there * Move Ergodox keymap into layouts folder * Add build date to version macro * Remove PREVENT_STUCK_MODIFIERS from config
-rw-r--r--keyboards/ergodox_ez/keymaps/drashna/config.h27
-rw-r--r--keyboards/handwired/woodpad/keymaps/drashna/config.h2
-rw-r--r--keyboards/handwired/woodpad/keymaps/drashna/keymap.c18
-rw-r--r--keyboards/orthodox/keymaps/drashna/config.h12
-rw-r--r--keyboards/orthodox/keymaps/drashna/keymap.c18
-rw-r--r--keyboards/viterbi/keymaps/drashna/config.h24
-rw-r--r--keyboards/viterbi/keymaps/drashna/keymap.c16
-rw-r--r--keyboards/viterbi/keymaps/drashna/rules.mk1
-rw-r--r--layouts/community/ergodox/drashna/README.md (renamed from keyboards/ergodox_ez/keymaps/drashna/README.md)0
-rw-r--r--layouts/community/ergodox/drashna/config.h18
-rw-r--r--layouts/community/ergodox/drashna/keymap.c (renamed from keyboards/ergodox_ez/keymaps/drashna/keymap.c)27
-rw-r--r--layouts/community/ergodox/drashna/rules.mk (renamed from keyboards/ergodox_ez/keymaps/drashna/rules.mk)0
-rw-r--r--users/drashna/config.h61
-rw-r--r--users/drashna/drashna.c125
-rw-r--r--users/drashna/drashna.h64
-rw-r--r--users/drashna/readme.md27
-rw-r--r--users/drashna/rules.mk4
17 files changed, 245 insertions, 199 deletions
diff --git a/keyboards/ergodox_ez/keymaps/drashna/config.h b/keyboards/ergodox_ez/keymaps/drashna/config.h
deleted file mode 100644
index 71c7de466..000000000
--- a/keyboards/ergodox_ez/keymaps/drashna/config.h
+++ /dev/null
@@ -1,27 +0,0 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include QMK_KEYBOARD_CONFIG_H
5
6
7#ifdef RGBLIGHT_ENABLE
8#undef RGBLIGHT_SAT_STEP
9#define RGBLIGHT_SAT_STEP 12
10#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 7
11#define RGBLIGHT_EFFECT_SNAKE_LENGTH 7
12#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
13#define RGBLIGHT_SLEEP
14#endif // RGBLIGHT_ENABLE
15
16#ifdef TAPPING_TERM
17#undef TAPPING_TERM
18#endif
19#define TAPPING_TERM 175
20#undef PERMISSIVE_HOLD
21#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)
22#define ONESHOT_TAP_TOGGLE 2
23
24#undef PRODUCT
25#define PRODUCT DrashnaDox - Hacked ErgoDox EZ Shine
26
27#endif
diff --git a/keyboards/handwired/woodpad/keymaps/drashna/config.h b/keyboards/handwired/woodpad/keymaps/drashna/config.h
index c83a1ac37..c4f28034c 100644
--- a/keyboards/handwired/woodpad/keymaps/drashna/config.h
+++ b/keyboards/handwired/woodpad/keymaps/drashna/config.h
@@ -19,7 +19,7 @@
19 19
20#include QMK_KEYBOARD_CONFIG_H 20#include QMK_KEYBOARD_CONFIG_H
21 21
22#ifdef TAP_DANCE_ENABLE 22#if (defined(TAP_DANCE_ENABLE) && !defined(TAPPING_TERM))
23#define TAPPING_TERM 200 23#define TAPPING_TERM 200
24#endif // TAP_DANCE_ENABLE 24#endif // TAP_DANCE_ENABLE
25 25
diff --git a/keyboards/handwired/woodpad/keymaps/drashna/keymap.c b/keyboards/handwired/woodpad/keymaps/drashna/keymap.c
index 51b90913c..fd1ff0053 100644
--- a/keyboards/handwired/woodpad/keymaps/drashna/keymap.c
+++ b/keyboards/handwired/woodpad/keymaps/drashna/keymap.c
@@ -24,21 +24,9 @@
24// Fillers to make layering more clear 24// Fillers to make layering more clear
25#define _______ KC_TRNS 25#define _______ KC_TRNS
26#define XXXXXXX KC_NO 26#define XXXXXXX KC_NO
27#ifdef TAP_DANCE_ENABLE 27
28#define KC_D3_1 TD(TD_D3_1) 28
29#define KC_D3_2 TD(TD_D3_2) 29
30#define KC_D3_3 TD(TD_D3_3)
31#define KC_D3_4 TD(TD_D3_4)
32#else
33#define KC_D3_1 KC_1
34#define KC_D3_2 KC_2
35#define KC_D3_3 KC_3
36#define KC_D3_4 KC_4
37#endif
38
39
40//define layer change stuff for underglow indicator
41bool skip_leds = false;
42 30
43 31
44 32
diff --git a/keyboards/orthodox/keymaps/drashna/config.h b/keyboards/orthodox/keymaps/drashna/config.h
index dd8439a44..f8a850394 100644
--- a/keyboards/orthodox/keymaps/drashna/config.h
+++ b/keyboards/orthodox/keymaps/drashna/config.h
@@ -35,15 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
35// #define MASTER_RIGHT 35// #define MASTER_RIGHT
36#define EE_HANDS 36#define EE_HANDS
37 37
38#ifdef TAPPING_TERM
39#undef TAPPING_TERM
40#endif
41#define TAPPING_TERM 150
42#undef PERMISSIVE_HOLD
43#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)
44#define ONESHOT_TAP_TOGGLE 2
45
46
47 38
48/* key combination for command */ 39/* key combination for command */
49#ifdef IS_COMMAND 40#ifdef IS_COMMAND
@@ -64,12 +55,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
64#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2 55#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
65#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2 56#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
66#define RGBLIGHT_EFFECT_BREATHE_CENTER 1 57#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
67#define RGBLIGHT_SLEEP
68#endif // RGBLIGHT_ENABLE 58#endif // RGBLIGHT_ENABLE
69 59
70#ifdef AUDIO_ENABLE 60#ifdef AUDIO_ENABLE
71#define C6_AUDIO 61#define C6_AUDIO
72#define STARTUP_SONG SONG(IMPERIAL_MARCH)
73#define NO_MUSIC_MODE 62#define NO_MUSIC_MODE
74#endif 63#endif
75 64
@@ -79,4 +68,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
79#elif KEYBOARD_orthodox_rev3 68#elif KEYBOARD_orthodox_rev3
80#define PRODUCT Drashna Hacked Orthodox Rev.3 69#define PRODUCT Drashna Hacked Orthodox Rev.3
81#endif 70#endif
71
82#endif 72#endif
diff --git a/keyboards/orthodox/keymaps/drashna/keymap.c b/keyboards/orthodox/keymaps/drashna/keymap.c
index c0a348689..a70da63bb 100644
--- a/keyboards/orthodox/keymaps/drashna/keymap.c
+++ b/keyboards/orthodox/keymaps/drashna/keymap.c
@@ -32,6 +32,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
32#define _______ KC_TRNS 32#define _______ KC_TRNS
33#define XXXXXXX KC_NO 33#define XXXXXXX KC_NO
34 34
35#define MG_NKRO MAGIC_TOGGLE_NKRO
36
35const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 37const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
36 38
37[_QWERTY] = KEYMAP_wrapper(\ 39[_QWERTY] = KEYMAP_wrapper(\
@@ -63,21 +65,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
63), 65),
64 66
65[_LOWER] = KEYMAP(\ 67[_LOWER] = KEYMAP(\
66 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
67 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, _______, KC_RCTL, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
68 _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_HOME, KC_COMM, KC_DOT, KC_END, _______ \
69),
70
71[_RAISE] = KEYMAP(\
72 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ 68 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
73 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, _______, _______, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ 69 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, _______, _______, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
74 _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_PGUP, KC_COMM, KC_DOT, KC_PGDN, _______ \ 70 _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_PGUP, KC_COMM, KC_DOT, KC_PGDN, _______ \
75), 71),
76 72
73[_RAISE] = KEYMAP(\
74 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
75 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, _______, KC_RCTL, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
76 _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_HOME, KC_COMM, KC_DOT, KC_END, _______ \
77),
78
77[_ADJUST] = KEYMAP(\ 79[_ADJUST] = KEYMAP(\
78 KC_MAKE,KC_RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ 80 KC_MAKE,KC_RESET, EPRM, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
79 RGB_SMOD,RGB_HUI, KC_FXCL, AUD_ON, AUD_OFF, AG_NORM, _______, _______, _______, _______, AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, TG(_MODS), \ 81 RGB_SMOD,RGB_HUI, KC_FXCL, AUD_ON, AUD_OFF, AG_NORM, _______, _______, _______, _______, AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, TG(_MODS), \
80 KC_RGB_T,RGB_HUD, MU_ON, MU_OFF, MU_TOG, MU_MOD, _______, _______, _______, _______, _______, _______, MAGIC_TOGGLE_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY \ 82 KC_RGB_T,RGB_HUD, MU_ON, MU_OFF, MU_TOG, MU_MOD, _______, _______, _______, _______, _______, _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY \
81) 83)
82 84
83 85
diff --git a/keyboards/viterbi/keymaps/drashna/config.h b/keyboards/viterbi/keymaps/drashna/config.h
index 02786cfc7..cc87e813d 100644
--- a/keyboards/viterbi/keymaps/drashna/config.h
+++ b/keyboards/viterbi/keymaps/drashna/config.h
@@ -31,31 +31,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
31#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2 31#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
32#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2 32#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
33#define RGBLIGHT_EFFECT_BREATHE_CENTER 1 33#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
34#define RGBLIGHT_SLEEP
35#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 300 34#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 300
36#define RGBLIGHT_EFFECT_CHRISTMAS_STEP 1 35#define RGBLIGHT_EFFECT_CHRISTMAS_STEP 1
37
38#endif // RGBLIGHT_ENABLE 36#endif // RGBLIGHT_ENABLE
39 37
40#define TAPPING_TOGGLE 1
41
42#ifdef AUDIO_ENABLE
43#define C6_AUDIO
44#define STARTUP_SONG SONG(IMPERIAL_MARCH)
45#define GOODBYE_SONG SONG(SONIC_RING)
46#endif
47 38
48#undef LOCKING_SUPPORT_ENABLE 39#undef LOCKING_SUPPORT_ENABLE
49#undef LOCKING_RESYNC_ENABLE 40#undef LOCKING_RESYNC_ENABLE
50 41
51#ifndef NO_DEBUG 42#ifndef NO_DEBUG
52#define NO_DEBUG 43#define NO_DEBUG
53#endif // NO_DEBUG 44#endif // !NO_DEBUG
54
55/* disable print */
56#ifndef NO_PRINT 45#ifndef NO_PRINT
57#define NO_PRINT 46#define NO_PRINT
58#endif // NO_PRINT 47#endif // !NO_PRINT
48
59/* disable action features */ 49/* disable action features */
60//#define NO_ACTION_LAYER 50//#define NO_ACTION_LAYER
61//#define NO_ACTION_TAPPING 51//#define NO_ACTION_TAPPING
@@ -67,8 +57,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
67#define PRODUCT Drashnas Viterbi Macro Pad 57#define PRODUCT Drashnas Viterbi Macro Pad
68 58
69#define USE_I2C 59#define USE_I2C
60
61#ifdef AUDIO_ENABLE
62#define C6_AUDIO
70#define NO_MUSIC_MODE 63#define NO_MUSIC_MODE
71#define half_KEYMAP( \ 64#endif
65
66#define LAYOUT_ortho_5x7( \
72 L00, L01, L02, L03, L04, L05, L06, \ 67 L00, L01, L02, L03, L04, L05, L06, \
73 L10, L11, L12, L13, L14, L15, L16, \ 68 L10, L11, L12, L13, L14, L15, L16, \
74 L20, L21, L22, L23, L24, L25, L26, \ 69 L20, L21, L22, L23, L24, L25, L26, \
@@ -82,4 +77,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
82 L30, L31, L32, L33, L34, L35, L36, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \ 77 L30, L31, L32, L33, L34, L35, L36, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
83 L40, L41, L42, L43, L44, L45, L46, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO \ 78 L40, L41, L42, L43, L44, L45, L46, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO \
84 ) 79 )
80
85#endif 81#endif
diff --git a/keyboards/viterbi/keymaps/drashna/keymap.c b/keyboards/viterbi/keymaps/drashna/keymap.c
index 585695243..cff6ebf69 100644
--- a/keyboards/viterbi/keymaps/drashna/keymap.c
+++ b/keyboards/viterbi/keymaps/drashna/keymap.c
@@ -26,7 +26,7 @@ extern keymap_config_t keymap_config;
26 26
27const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 27const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
28 28
29 [_NUMLOCK] = half_KEYMAP( 29 [_NUMLOCK] = LAYOUT_ortho_5x7(
30 LMACRO, DIABLO, GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS, \ 30 LMACRO, DIABLO, GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS, \
31 MEDIA, KC_CALC, COVECUBE,KC_P7, KC_P8, KC_P9, KC_PAST, \ 31 MEDIA, KC_CALC, COVECUBE,KC_P7, KC_P8, KC_P9, KC_PAST, \
32 KC_HOME, KC_DEL, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PMNS, \ 32 KC_HOME, KC_DEL, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PMNS, \
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
34 KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_COLN, KC_PENT \ 34 KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_COLN, KC_PENT \
35 ), 35 ),
36 36
37 [_DIABLO] = half_KEYMAP( 37 [_DIABLO] = LAYOUT_ortho_5x7(
38 KC_ESC, DIABLO, KC_V, KC_D, XXXXXXX, XXXXXXX, KC_L, \ 38 KC_ESC, DIABLO, KC_V, KC_D, XXXXXXX, XXXXXXX, KC_L, \
39 KC_TAB, KC_S, KC_F, KC_I, KC_M, KC_T, KC_J, \ 39 KC_TAB, KC_S, KC_F, KC_I, KC_M, KC_T, KC_J, \
40 KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_F, \ 40 KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_F, \
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
42 KC_LALT, KC_F4, KC_F5, KC_F8, KC_F9, KC_F10, SFT_T(KC_SPACE) \ 42 KC_LALT, KC_F4, KC_F5, KC_F8, KC_F9, KC_F10, SFT_T(KC_SPACE) \
43 ), 43 ),
44 44
45 [_GAMEPAD] = half_KEYMAP( // Game pad layout designed primarily for Overwatch 45 [_GAMEPAD] = LAYOUT_ortho_5x7( // Game pad layout designed primarily for Overwatch
46 LMACRO, KC_ESC, GAMEPAD, KC_1, KC_2, KC_3, KC_4, \ 46 LMACRO, KC_ESC, GAMEPAD, KC_1, KC_2, KC_3, KC_4, \
47 MEDIA, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, \ 47 MEDIA, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, \
48 KC_Z, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, \ 48 KC_Z, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, \
@@ -50,15 +50,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
50 KC_F1, KC_U, KC_I, KC_Y, KC_V, KC_SPC, KC_V \ 50 KC_F1, KC_U, KC_I, KC_Y, KC_V, KC_SPC, KC_V \
51 ), 51 ),
52 52
53 [_MACROS] = half_KEYMAP( 53 [_MACROS] = LAYOUT_ortho_5x7(
54 LMACRO, KC_OVERWATCH,GAMEPAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 54 LMACRO, KC_OVERWATCH,GAMEPAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
55 KC_C9, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 55 KC_C9, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
56 KC_SYMM, KC_TORB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 56 KC_SYMM, KC_TORB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
57 KC_GLHF, KC_GOODGAME, KC_GGEZ, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 57 KC_GLHF, KC_GOODGAME, KC_GGEZ, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
58 KC_SALT, KC_MORESALT, KC_SALTHARD, KC_JUSTGAME, KC_AIM, XXXXXXX, XXXXXXX \ 58 KC_SALT, KC_MORESALT, KC_SALTHARD, KC_JUSTGAME, KC_AIM, XXXXXXX, KC_PENT \
59 ), 59 ),
60 60
61 [_COVECUBE] = half_KEYMAP( 61 [_COVECUBE] = LAYOUT_ortho_5x7(
62 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 62 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
63 XXXXXXX, XXXXXXX, COVECUBE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 63 XXXXXXX, XXXXXXX, COVECUBE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
64 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ 64 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
@@ -66,9 +66,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
66 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ 66 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
67 ), 67 ),
68 68
69 [_MEDIA] = half_KEYMAP( 69 [_MEDIA] = LAYOUT_ortho_5x7(
70 KC_MAKE, KC_RESET,MU_TOG, AUD_ON, AUD_OFF, KC_FXCL, RGB_SAD, \ 70 KC_MAKE, KC_RESET,MU_TOG, AUD_ON, AUD_OFF, KC_FXCL, RGB_SAD, \
71 MEDIA, XXXXXXX, KC_RGB_T,RGB_M_P, RGB_M_B, RGB_M_R, RGB_SAI, \ 71 MEDIA, EPRM, KC_RGB_T,RGB_M_P, RGB_M_B, RGB_M_R, RGB_SAI, \
72 RGB_TOG, RGB_MOD, RGB_RMOD,RGB_M_SW,RGB_M_SN,RGB_M_K, RGB_HUD, \ 72 RGB_TOG, RGB_MOD, RGB_RMOD,RGB_M_SW,RGB_M_SN,RGB_M_K, RGB_HUD, \
73 KC_MPLY, KC_MPRV, KC_MNXT, RGB_M_X, RGB_M_G, RGB_M_P, RGB_HUI, \ 73 KC_MPLY, KC_MPRV, KC_MNXT, RGB_M_X, RGB_M_G, RGB_M_P, RGB_HUI, \
74 KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI \ 74 KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI \
diff --git a/keyboards/viterbi/keymaps/drashna/rules.mk b/keyboards/viterbi/keymaps/drashna/rules.mk
index 83c37115c..4dc6bbdac 100644
--- a/keyboards/viterbi/keymaps/drashna/rules.mk
+++ b/keyboards/viterbi/keymaps/drashna/rules.mk
@@ -9,3 +9,4 @@ AUDIO_ENABLE = yes
9NKRO_ENABLE = yes 9NKRO_ENABLE = yes
10 10
11CUSTOM_MATRIX = no 11CUSTOM_MATRIX = no
12LAYOUTS = ortho_5x7
diff --git a/keyboards/ergodox_ez/keymaps/drashna/README.md b/layouts/community/ergodox/drashna/README.md
index e77defc91..e77defc91 100644
--- a/keyboards/ergodox_ez/keymaps/drashna/README.md
+++ b/layouts/community/ergodox/drashna/README.md
diff --git a/layouts/community/ergodox/drashna/config.h b/layouts/community/ergodox/drashna/config.h
new file mode 100644
index 000000000..27124dbe2
--- /dev/null
+++ b/layouts/community/ergodox/drashna/config.h
@@ -0,0 +1,18 @@
1#ifndef CONFIG_USER_H
2#define CONFIG_USER_H
3
4#include QMK_KEYBOARD_CONFIG_H
5
6#ifdef RGBLIGHT_ENABLE
7#undef RGBLIGHT_SAT_STEP
8#define RGBLIGHT_SAT_STEP 12
9#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 7
10#define RGBLIGHT_EFFECT_SNAKE_LENGTH 7
11#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
12#endif // RGBLIGHT_ENABLE
13
14
15#undef PRODUCT
16#define PRODUCT DrashnaDox - Hacked ErgoDox EZ Shine
17
18#endif
diff --git a/keyboards/ergodox_ez/keymaps/drashna/keymap.c b/layouts/community/ergodox/drashna/keymap.c
index 1b30196ec..6801f4f49 100644
--- a/keyboards/ergodox_ez/keymaps/drashna/keymap.c
+++ b/layouts/community/ergodox/drashna/keymap.c
@@ -31,8 +31,8 @@ bool skip_leds = false;
31 31
32const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 32const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33/* Keymap 0: Basic layer 33/* Keymap 0: Basic layer
34 * 34 *
35 * 35 *
36 * ,--------------------------------------------------. ,--------------------------------------------------. 36 * ,--------------------------------------------------. ,--------------------------------------------------.
37 * | = + | 1 ! | 2 @ | 3 # | 4 $ | 5 % | TG(4)| | TG(4)| 6 ^ | 7 & | 8 * | 9 ( | 0 ) | - _ | 37 * | = + | 1 ! | 2 @ | 3 # | 4 $ | 5 % | TG(4)| | TG(4)| 6 ^ | 7 & | 8 * | 9 ( | 0 ) | - _ |
38 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| 38 * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
63 KC_HOME, KC_PGUP, 63 KC_HOME, KC_PGUP,
64 KC_SPACE,KC_BSPC, KC_END, KC_PGDN, KC_DEL, KC_ENTER 64 KC_SPACE,KC_BSPC, KC_END, KC_PGDN, KC_DEL, KC_ENTER
65 65
66 66
67 ), 67 ),
68/* Keymap 0: Basic layer 68/* Keymap 0: Basic layer
69 * 69 *
@@ -88,7 +88,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
88 */ 88 */
89// If it accepts an argument (i.e, is a function), it doesn't need KC_. 89// If it accepts an argument (i.e, is a function), it doesn't need KC_.
90// Otherwise, it needs KC_* 90// Otherwise, it needs KC_*
91[_COLEMAK] = LAYOUT_ergodox_pretty_wrapper( 91[_COLEMAK] = LAYOUT_ergodox_pretty_wrapper(
92 // left hand // right hand 92 // left hand // right hand
93 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, OSL(_MOUS), OSL(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, 93 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, OSL(_MOUS), OSL(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
94 KC_TAB, _________________COLEMAK_L1________________, TG(_DIABLO), TG(_DIABLO), _________________COLEMAK_R1________________, KC_BSLS, 94 KC_TAB, _________________COLEMAK_L1________________, TG(_DIABLO), TG(_DIABLO), _________________COLEMAK_R1________________, KC_BSLS,
@@ -122,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
122 */ 122 */
123// If it accepts an argument (i.e, is a function), it doesn't need KC_. 123// If it accepts an argument (i.e, is a function), it doesn't need KC_.
124// Otherwise, it needs KC_* 124// Otherwise, it needs KC_*
125[_DVORAK] = LAYOUT_ergodox_pretty_wrapper( 125[_DVORAK] = LAYOUT_ergodox_pretty_wrapper(
126 // left hand // right hand 126 // left hand // right hand
127 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, OSL(_MOUS), OSL(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, 127 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, OSL(_MOUS), OSL(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
128 KC_TAB, _________________DVORAK_L1_________________, TG(_DIABLO), TG(_DIABLO), _________________DVORAK_R1_________________, KC_SLSH, 128 KC_TAB, _________________DVORAK_L1_________________, TG(_DIABLO), TG(_DIABLO), _________________DVORAK_R1_________________, KC_SLSH,
@@ -156,7 +156,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
156 */ 156 */
157// If it accepts an argument (i.e, is a function), it doesn't need KC_. 157// If it accepts an argument (i.e, is a function), it doesn't need KC_.
158// Otherwise, it needs KC_* 158// Otherwise, it needs KC_*
159[_WORKMAN] = LAYOUT_ergodox_pretty_wrapper( 159[_WORKMAN] = LAYOUT_ergodox_pretty_wrapper(
160 // left hand 160 // left hand
161 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, OSL(_MOUS), OSL(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, 161 KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, OSL(_MOUS), OSL(_MOUS), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
162 KC_TAB, _________________WORKMAN_L1________________, TG(_DIABLO), TG(_DIABLO), _________________WORKMAN_R1________________, KC_BSLS, 162 KC_TAB, _________________WORKMAN_L1________________, TG(_DIABLO), TG(_DIABLO), _________________WORKMAN_R1________________, KC_BSLS,
@@ -297,7 +297,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
297 * `--------------------' `--------------------' 297 * `--------------------' `--------------------'
298 */ 298 */
299 [_MOUS] = LAYOUT_ergodox_pretty( 299 [_MOUS] = LAYOUT_ergodox_pretty(
300 KC_NO, KC_SECRET_1,KC_SECRET_2,KC_SECRET_3,KC_SECRET_4,KC_SECRET_5,KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 300 KC_NO, KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
301 KC_NO, KC_NO, KC_MS_U, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 301 KC_NO, KC_NO, KC_MS_U, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
302 KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_NO, KC_NO, 302 KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_NO, KC_NO,
303 KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, 303 KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO,
@@ -334,6 +334,8 @@ void matrix_init_keymap(void) { // Runs boot tasks for keyboard
334 334
335void matrix_scan_keymap(void) { // runs frequently to update info 335void matrix_scan_keymap(void) { // runs frequently to update info
336 uint8_t modifiders = get_mods(); 336 uint8_t modifiders = get_mods();
337 uint8_t led_usb_state = host_keyboard_leds();
338 uint8_t one_shot = get_oneshot_mods();
337 339
338 if (!skip_leds) { 340 if (!skip_leds) {
339 ergodox_board_led_off(); 341 ergodox_board_led_off();
@@ -343,15 +345,18 @@ void matrix_scan_keymap(void) { // runs frequently to update info
343 345
344 // Since we're not using the LEDs here for layer indication anymore, 346 // Since we're not using the LEDs here for layer indication anymore,
345 // then lets use them for modifier indicators. Shame we don't have 4... 347 // then lets use them for modifier indicators. Shame we don't have 4...
346 // Also, no "else", since we want to know each, independantly. 348 // Also, no "else", since we want to know each, independently.
347 if (modifiders & MODS_SHIFT_MASK) { 349 if (modifiders & MODS_SHIFT_MASK || led_usb_state & (1<<USB_LED_CAPS_LOCK) || one_shot & MODS_SHIFT_MASK) {
348 ergodox_right_led_2_on(); 350 ergodox_right_led_2_on();
351 ergodox_right_led_2_set( 10 );
349 } 352 }
350 if (modifiders & MODS_CTRL_MASK) { 353 if (modifiders & MODS_CTRL_MASK || one_shot & MODS_CTRL_MASK) {
351 ergodox_right_led_1_on(); 354 ergodox_right_led_1_on();
355 ergodox_right_led_1_set( 10 );
352 } 356 }
353 if (modifiders & MODS_ALT_MASK) { 357 if (modifiders & MODS_ALT_MASK || one_shot & MODS_ALT_MASK) {
354 ergodox_right_led_3_on(); 358 ergodox_right_led_3_on();
359 ergodox_right_led_3_set( 10 );
355 } 360 }
356 361
357 } 362 }
diff --git a/keyboards/ergodox_ez/keymaps/drashna/rules.mk b/layouts/community/ergodox/drashna/rules.mk
index 12f100d66..12f100d66 100644
--- a/keyboards/ergodox_ez/keymaps/drashna/rules.mk
+++ b/layouts/community/ergodox/drashna/rules.mk
diff --git a/users/drashna/config.h b/users/drashna/config.h
new file mode 100644
index 000000000..f33721d23
--- /dev/null
+++ b/users/drashna/config.h
@@ -0,0 +1,61 @@
1#ifndef USERSPACE_CONFIG_H
2#define USERSPACE_CONFIG_H
3
4
5#ifdef AUDIO_ENABLE
6#define STARTUP_SONG SONG(IMPERIAL_MARCH)
7#define GOODBYE_SONG SONG(SONIC_RING)
8#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
9 SONG(COLEMAK_SOUND), \
10 SONG(DVORAK_SOUND), \
11 SONG(PLOVER_SOUND) \
12 }
13#endif
14
15#ifdef RGBLIGHT_ENABLE
16#define RGBLIGHT_SLEEP
17#endif // RGBLIGHT_ENABLE
18
19
20
21#ifndef ONESHOT_TAP_TOGGLE
22#define ONESHOT_TAP_TOGGLE 2
23#endif // !ONESHOT_TAP_TOGGLE
24
25#ifndef ONESHOT_TIMEOUT
26#define ONESHOT_TIMEOUT 3000
27#endif// !ONESHOT_TIMEOUT
28
29#ifndef QMK_KEYS_PER_SCAN
30#define QMK_KEYS_PER_SCAN 4
31#endif // !QMK_KEYS_PER_SCAN
32
33
34
35// this makes it possible to do rolling combos (zx) with keys that
36// convert to other keys on hold (z becomes ctrl when you hold it,
37// and when this option isn't enabled, z rapidly followed by x
38// actually sends Ctrl-x. That's bad.)
39#define IGNORE_MOD_TAP_INTERRUPT
40#undef PERMISSIVE_HOLD
41#undef PREVENT_STUCK_MODIFIERS
42
43#ifndef TAPPING_TOGGLE
44#define TAPPING_TOGGLE 1
45#endif
46
47#ifdef TAPPING_TERM
48#undef TAPPING_TERM
49#endif
50#define TAPPING_TERM 150
51
52
53// Disable action_get_macro and fn_actions, since we don't use these
54// and it saves on space in the firmware.
55#define NO_ACTION_MACRO
56#define NO_ACTION_FUNCTION
57
58
59
60#endif // !USERSPACE_CONFIG_H
61
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c
index 678570958..09b3891dd 100644
--- a/users/drashna/drashna.c
+++ b/users/drashna/drashna.c
@@ -22,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
22#include "secrets.h" 22#include "secrets.h"
23#else 23#else
24// `PROGMEM const char secret[][x]` may work better, but it takes up more space in the firmware 24// `PROGMEM const char secret[][x]` may work better, but it takes up more space in the firmware
25// And I'm not familar enough to know which is better or why... 25// And I'm not familiar enough to know which is better or why...
26PROGMEM const char secret[][64] = { 26PROGMEM const char secret[][64] = {
27 "test1", 27 "test1",
28 "test2", 28 "test2",
@@ -32,20 +32,13 @@ PROGMEM const char secret[][64] = {
32}; 32};
33#endif 33#endif
34 34
35#ifdef AUDIO_ENABLE
36float tone_qwerty[][2] = SONG(QWERTY_SOUND);
37float tone_dvorak[][2] = SONG(DVORAK_SOUND);
38float tone_colemak[][2] = SONG(COLEMAK_SOUND);
39float tone_workman[][2] = SONG(PLOVER_SOUND);
40float tone_hackstartup[][2] = SONG(ONE_UP_SOUND);
41#endif
42 35
43#ifdef FAUXCLICKY_ENABLE 36#ifdef FAUXCLICKY_ENABLE
44float fauxclicky_pressed_note[2] = MUSICAL_NOTE(_A6, 2); // (_D4, 0.25); 37float fauxclicky_pressed_note[2] = MUSICAL_NOTE(_A6, 2); // (_D4, 0.25);
45float fauxclicky_released_note[2] = MUSICAL_NOTE(_A6, 2); // (_C4, 0.125); 38float fauxclicky_released_note[2] = MUSICAL_NOTE(_A6, 2); // (_C4, 0.125);
46#else 39#else
47float fauxclicky_pressed[][2] = SONG(E__NOTE(_A6)); // change to your tastes 40float fauxclicky_pressed[][2] = SONG(S__NOTE(_A6)); // change to your tastes
48float fauxclicky_released[][2] = SONG(E__NOTE(_A6)); // change to your tastes 41float fauxclicky_released[][2] = SONG(S__NOTE(_A6)); // change to your tastes
49#endif 42#endif
50 43
51bool faux_click_enabled = false; 44bool faux_click_enabled = false;
@@ -191,7 +184,7 @@ void matrix_init_user(void) {
191#endif 184#endif
192 matrix_init_keymap(); 185 matrix_init_keymap();
193} 186}
194// No global matrix scan code, so just run keymap's matix 187// No global matrix scan code, so just run keymap's matrix
195// scan function 188// scan function
196void matrix_scan_user(void) { 189void matrix_scan_user(void) {
197#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code. 190#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code.
@@ -202,17 +195,20 @@ void matrix_scan_user(void) {
202 195
203// This block is for all of the gaming macros, as they were all doing 196// This block is for all of the gaming macros, as they were all doing
204// the same thing, but with differring text sent. 197// the same thing, but with differring text sent.
205void send_game_macro(const char *str) { 198bool send_game_macro(const char *str, keyrecord_t *record, bool override) {
206 clear_keyboard(); 199 if (!record->event.pressed || override) {
207 register_code(is_overwatch ? KC_BSPC : KC_ENTER); 200 clear_keyboard();
208 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER); 201 register_code(is_overwatch ? KC_BSPC : KC_ENTER);
209 wait_ms(50); 202 unregister_code(is_overwatch ? KC_BSPC : KC_ENTER);
210 send_string(str); 203 wait_ms(50);
211 register_code(KC_ENTER); 204 send_string(str);
212 unregister_code(KC_ENTER); 205 register_code(KC_ENTER);
206 unregister_code(KC_ENTER);
207 }
208 if (override) wait_ms(3000);
209 return false;
213} 210}
214 211
215
216// Sent the default layer 212// Sent the default layer
217void persistent_default_layer_set(uint16_t default_layer) { 213void persistent_default_layer_set(uint16_t default_layer) {
218 eeconfig_update_default_layer(default_layer); 214 eeconfig_update_default_layer(default_layer);
@@ -221,7 +217,7 @@ void persistent_default_layer_set(uint16_t default_layer) {
221 217
222 218
223// Defines actions tor my global custom keycodes. Defined in drashna.h file 219// Defines actions tor my global custom keycodes. Defined in drashna.h file
224// Then runs the _keymap's recod handier if not processed here 220// Then runs the _keymap's record handier if not processed here
225bool process_record_user(uint16_t keycode, keyrecord_t *record) { 221bool process_record_user(uint16_t keycode, keyrecord_t *record) {
226 222
227// If console is enabled, it will print the matrix position and status of each key pressed 223// If console is enabled, it will print the matrix position and status of each key pressed
@@ -230,7 +226,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
230#endif //CONSOLE_ENABLE 226#endif //CONSOLE_ENABLE
231 227
232// Run custom faux click code, but only if faux clicky is enabled 228// Run custom faux click code, but only if faux clicky is enabled
233#ifdef AUDIO_ENABLE 229#ifdef AUDIO_ENABLE
234 if ( (faux_click_enabled && keycode != KC_FXCL) || (!faux_click_enabled && keycode == KC_FXCL) ) { 230 if ( (faux_click_enabled && keycode != KC_FXCL) || (!faux_click_enabled && keycode == KC_FXCL) ) {
235 if (record->event.pressed) { 231 if (record->event.pressed) {
236 PLAY_SONG(fauxclicky_pressed); 232 PLAY_SONG(fauxclicky_pressed);
@@ -245,37 +241,25 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
245 switch (keycode) { 241 switch (keycode) {
246 case KC_QWERTY: 242 case KC_QWERTY:
247 if (record->event.pressed) { 243 if (record->event.pressed) {
248#ifdef AUDIO_ENABLE 244 set_single_persistent_default_layer(_QWERTY);
249 PLAY_SONG(tone_qwerty);
250#endif //AUDIO_ENABLE
251 persistent_default_layer_set(1UL << _QWERTY);
252 } 245 }
253 return false; 246 return false;
254 break; 247 break;
255 case KC_COLEMAK: 248 case KC_COLEMAK:
256 if (record->event.pressed) { 249 if (record->event.pressed) {
257#ifdef AUDIO_ENABLE 250 set_single_persistent_default_layer(_COLEMAK);
258 PLAY_SONG(tone_colemak);
259#endif //AUDIO_ENABLE
260 persistent_default_layer_set(1UL << _COLEMAK);
261 } 251 }
262 return false; 252 return false;
263 break; 253 break;
264 case KC_DVORAK: 254 case KC_DVORAK:
265 if (record->event.pressed) { 255 if (record->event.pressed) {
266#ifdef AUDIO_ENABLE 256 set_single_persistent_default_layer(_DVORAK);
267 PLAY_SONG(tone_dvorak);
268#endif //AUDIO_ENABLE
269 persistent_default_layer_set(1UL << _DVORAK);
270 } 257 }
271 return false; 258 return false;
272 break; 259 break;
273 case KC_WORKMAN: 260 case KC_WORKMAN:
274 if (record->event.pressed) { 261 if (record->event.pressed) {
275#ifdef AUDIO_ENABLE 262 set_single_persistent_default_layer(_WORKMAN);
276 PLAY_SONG(tone_workman);
277#endif //AUDIO_ENABLE
278 persistent_default_layer_set(1UL << _WORKMAN);
279 } 263 }
280 return false; 264 return false;
281 break; 265 break;
@@ -328,7 +312,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
328 } 312 }
329 return false; 313 return false;
330 break; 314 break;
331 case KC_RESET: // Custom RESET code that setr RGBLights to RED 315
316
317 case KC_RESET: // Custom RESET code that sets RGBLights to RED
332 if (!record->event.pressed) { 318 if (!record->event.pressed) {
333#ifdef RGBLIGHT_ENABLE 319#ifdef RGBLIGHT_ENABLE
334 rgblight_enable(); 320 rgblight_enable();
@@ -339,6 +325,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
339 } 325 }
340 return false; 326 return false;
341 break; 327 break;
328
329
342 case EPRM: // Resets EEPROM 330 case EPRM: // Resets EEPROM
343 if (record->event.pressed) { 331 if (record->event.pressed) {
344 eeconfig_init(); 332 eeconfig_init();
@@ -347,11 +335,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
347 break; 335 break;
348 case VRSN: // Prints firmware version 336 case VRSN: // Prints firmware version
349 if (record->event.pressed) { 337 if (record->event.pressed) {
350 SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); 338 SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE);
351 } 339 }
352 return false; 340 return false;
353 break; 341 break;
354 case KC_SECRET_1 ... KC_SECRET_5: // Custom 342
343
344 case KC_SECRET_1 ... KC_SECRET_5: // Secrets! Externally defined strings, not stored in repo
355 if (!record->event.pressed) { 345 if (!record->event.pressed) {
356 clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED); 346 clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
357 send_string_P(secret[keycode - KC_SECRET_1]); 347 send_string_P(secret[keycode - KC_SECRET_1]);
@@ -364,61 +354,42 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
364// Only enables for the viterbi, basically, 354// Only enables for the viterbi, basically,
365// to save on firmware space, since it's limited. 355// to save on firmware space, since it's limited.
366#if !(defined(KEYBOARD_orthodox_rev1) || defined(KEYBOARD_orthodox_rev3) || defined(KEYBOARD_ergodox_ez)) 356#if !(defined(KEYBOARD_orthodox_rev1) || defined(KEYBOARD_orthodox_rev3) || defined(KEYBOARD_ergodox_ez))
367
368
369 case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros 357 case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros
370 if (record->event.pressed) { is_overwatch = !is_overwatch; } 358 if (record->event.pressed) { is_overwatch = !is_overwatch; }
371#ifdef RGBLIGHT_ENABLE 359#ifdef RGBLIGHT_ENABLE
372 is_overwatch ? rgblight_mode(17) : rgblight_mode(18); 360 is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
373#endif //RGBLIGHT_ENABLE 361#endif //RGBLIGHT_ENABLE
374 return false;
375 break;
376
377 case KC_SALT:
378 if (!record->event.pressed) { send_game_macro("Salt, salt, salt..."); }
379 return false; break; 362 return false; break;
363 case KC_SALT:
364 return send_game_macro("Salt, salt, salt...", record, false);
380 case KC_MORESALT: 365 case KC_MORESALT:
381 if (!record->event.pressed) { send_game_macro("Please sir, can I have some more salt?!"); } 366 return send_game_macro("Please sir, can I have some more salt?!", record, false);
382 return false; break;
383 case KC_SALTHARD: 367 case KC_SALTHARD:
384 if (!record->event.pressed) { send_game_macro("Your salt only makes me harder, and even more aggressive!"); } 368 return send_game_macro("Your salt only makes me harder, and even more aggressive!", record, false);
385 return false; break;
386 case KC_GOODGAME: 369 case KC_GOODGAME:
387 if (!record->event.pressed) { send_game_macro("Good game, everyone!"); } 370 return send_game_macro("Good game, everyone!", record, false);
388 return false; break;
389 case KC_GLHF: 371 case KC_GLHF:
390 if (!record->event.pressed) { send_game_macro("Good luck, have fun!!!"); } 372 return send_game_macro("Good luck, have fun!!!", record, false);
391 return false; break;
392 case KC_SYMM: 373 case KC_SYMM:
393 if (!record->event.pressed) { send_game_macro("Left click to win!"); } 374 return send_game_macro("Left click to win!", record, false);
394 return false; break;
395 case KC_JUSTGAME: 375 case KC_JUSTGAME:
396 if (!record->event.pressed) { send_game_macro("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."); } 376 return send_game_macro("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.", record, false);
397 return false; break;
398 case KC_TORB: 377 case KC_TORB:
399 if (!record->event.pressed) { send_game_macro("That was positively riveting!"); } 378 return send_game_macro("That was positively riveting!", record, false);
400 return false; break;
401 case KC_AIM: 379 case KC_AIM:
402 if (!record->event.pressed) { 380 send_game_macro("That aim is absolutely amazing. It's almost like you're a machine!", record, true);
403 send_game_macro("That aim is absolutely amazing. It's almost like you're a machine!"); 381 return send_game_macro("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!", record, false);
404 wait_ms(3000);
405 send_game_macro("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!");
406 }
407 return false; break;
408 case KC_C9: 382 case KC_C9:
409 if (!record->event.pressed) { send_game_macro("OMG!!! C9!!!"); } 383 return send_game_macro("OMG!!! C9!!!", record, false);
410 return false; break;
411 case KC_GGEZ: 384 case KC_GGEZ:
412 if (!record->event.pressed) { send_game_macro("That was a fantastic game, though it was a bit easy. Try harder next time!"); } 385 return send_game_macro("That was a fantastic game, though it was a bit easy. Try harder next time!", record, false);
413 return false; break;
414#endif // !(defined(KEYBOARD_orthodox_rev1) || defined(KEYBOARD_orthodox_rev3) || defined(KEYBOARD_ergodox_ez)) 386#endif // !(defined(KEYBOARD_orthodox_rev1) || defined(KEYBOARD_orthodox_rev3) || defined(KEYBOARD_ergodox_ez))
415 387
416 388
417#ifdef TAP_DANCE_ENABLE 389#ifdef TAP_DANCE_ENABLE
418 case KC_DIABLO_CLEAR: // reset all Diable timers, disabling them 390 case KC_DIABLO_CLEAR: // reset all Diablo timers, disabling them
419 if (record->event.pressed) { 391 if (record->event.pressed) {
420 uint8_t dtime; 392 uint8_t dtime;
421
422 for (dtime = 0; dtime < 4; dtime++) { 393 for (dtime = 0; dtime < 4; dtime++) {
423 diablo_key_time[dtime] = diablo_times[0]; 394 diablo_key_time[dtime] = diablo_times[0];
424 } 395 }
@@ -437,14 +408,14 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
437 if (record->event.pressed) { 408 if (record->event.pressed) {
438 rgb_layer_change = !rgb_layer_change; 409 rgb_layer_change = !rgb_layer_change;
439 if (rgb_layer_change) { 410 if (rgb_layer_change) {
440 layer_state_set(layer_state); // This is needed to immediately set the layer color (looks beetter) 411 layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
441 } 412 }
442 } 413 }
443#endif // RGBLIGHT_ENABLE 414#endif // RGBLIGHT_ENABLE
444 return false; break; 415 return false; break;
445#ifdef RGBLIGHT_ENABLE 416#ifdef RGBLIGHT_ENABLE
446 case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions 417 case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
447 if (record->event.pressed) { //This disrables layer indication, as it's assumed that if you're changing this ... you want that disabled 418 if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
448 rgb_layer_change = false; 419 rgb_layer_change = false;
449 } 420 }
450 return true; break; 421 return true; break;
@@ -534,7 +505,7 @@ uint32_t layer_state_set_user(uint32_t state) {
534 505
535// Any custom LED code goes here. 506// Any custom LED code goes here.
536// So far, I only have keyboard specific code, 507// So far, I only have keyboard specific code,
537// So nothing goes here. 508// So nothing goes here.
538void led_set_user(uint8_t usb_led) { 509void led_set_user(uint8_t usb_led) {
539 led_set_keymap(usb_led); 510 led_set_keymap(usb_led);
540} 511}
diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h
index 8a022cd14..0df9abb46 100644
--- a/users/drashna/drashna.h
+++ b/users/drashna/drashna.h
@@ -17,10 +17,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
18#ifndef USERSPACE 18#ifndef USERSPACE
19#define USERSPACE 19#define USERSPACE
20
21#include "quantum.h" 20#include "quantum.h"
22 21
23// Define layer names 22// Define layer names
24#define _QWERTY 0 23#define _QWERTY 0
25#define _NUMLOCK 0 24#define _NUMLOCK 0
26#define _COLEMAK 1 25#define _COLEMAK 1
@@ -118,6 +117,12 @@ enum userspace_custom_keycodes {
118 NEW_SAFE_RANGE //use "NEWPLACEHOLDER for keymap specific codes 117 NEW_SAFE_RANGE //use "NEWPLACEHOLDER for keymap specific codes
119}; 118};
120 119
120#define KC_SEC1 KC_SECRET_1
121#define KC_SEC2 KC_SECRET_2
122#define KC_SEC3 KC_SECRET_3
123#define KC_SEC4 KC_SECRET_4
124#define KC_SEC5 KC_SECRET_5
125
121#ifdef TAP_DANCE_ENABLE 126#ifdef TAP_DANCE_ENABLE
122enum { 127enum {
123 TD_D3_1 = 0, 128 TD_D3_1 = 0,
@@ -129,8 +134,8 @@ enum {
129 134
130 135
131// Custom Keycodes for Diablo 3 layer 136// Custom Keycodes for Diablo 3 layer
132// But since TD() doesn't work when tapdance is disabled 137// But since TD() doesn't work when tap dance is disabled
133// We use custom codes here, so we can substituet the right stuff 138// We use custom codes here, so we can substitute the right stuff
134#ifdef TAP_DANCE_ENABLE 139#ifdef TAP_DANCE_ENABLE
135#define KC_D3_1 TD(TD_D3_1) 140#define KC_D3_1 TD(TD_D3_1)
136#define KC_D3_2 TD(TD_D3_2) 141#define KC_D3_2 TD(TD_D3_2)
@@ -146,26 +151,10 @@ enum {
146// OSM keycodes, to keep things clean and easy to change 151// OSM keycodes, to keep things clean and easy to change
147#define KC_MLSF OSM(MOD_LSFT) 152#define KC_MLSF OSM(MOD_LSFT)
148#define KC_MRSF OSM(MOD_RSFT) 153#define KC_MRSF OSM(MOD_RSFT)
149#define ONESHOT_TIMEOUT 3000
150
151#define QMK_KEYS_PER_SCAN 8
152 154
153#ifdef RGBLIGHT_ENABLE
154#define RGBLIGHT_SLEEP
155#endif // RGBLIGHT_ENABLE
156 155
157// this makes it possible to do rolling combos (zx) with keys that
158// convert to other keys on hold (z becomes ctrl when you hold it,
159// and when this option isn't enabled, z rapidly followed by x
160// actually sends Ctrl-x. That's bad.)
161#define IGNORE_MOD_TAP_INTERRUPT
162 156
163// Disable action_get_macro and fn_actions, since we don't use these 157// If we're still using the official Faux Clicky feature, substitute codes
164// and it saves on space in the firmware.
165#define NO_ACTION_MACRO
166#define NO_ACTION_FUNCTION
167
168// If we're still using the official Faux Clicky feature, substituet codes
169// so that we don't have any unused/blank keys. 158// so that we don't have any unused/blank keys.
170#ifdef FAUXCLICKY_ENABLE 159#ifdef FAUXCLICKY_ENABLE
171#define AUD_ON FC_ON 160#define AUD_ON FC_ON
@@ -177,23 +166,27 @@ enum {
177 166
178 167
179 168
180// Since our quirky block definitions are basically a list of comma separated 169// Since our quirky block definitions are basically a list of comma separated
181// arguments, we need a wrapper in order for these definitions to be 170// arguments, we need a wrapper in order for these definitions to be
182// expanded before being used as arguments to the LAYOUT_xxx macro. 171// expanded before being used as arguments to the LAYOUT_xxx macro.
172#if (!defined(LAYOUT) && defined(KEYMAP))
173#define LAYOUT KEYMAP
174#endif
175
183#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__) 176#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)
184#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__) 177#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
185#define KEYMAP_wrapper(...) KEYMAP(__VA_ARGS__) 178#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__)
186 179
187 180
188// Blocks for each of the four major keyboard layouts 181// Blocks for each of the four major keyboard layouts
189// Organized so we can quickly adapt and modify all of them 182// Organized so we can quickly adapt and modify all of them
190// at once, rather than for each keyboard, one at a time. 183// at once, rather than for each keyboard, one at a time.
191// And this allows wor much cleaner blocks in the keymaps. 184// And this allows for much cleaner blocks in the keymaps.
192// For instance Tap/Hold for Control on all of the layouts 185// For instance Tap/Hold for Control on all of the layouts
193 186
194// NOTE: These are all the same length. If you do a search/replace 187// NOTE: These are all the same length. If you do a search/replace
195// then you need to add/remove underscores to keep the 188// then you need to add/remove underscores to keep the
196// lengths consistent. 189// lengths consistent.
197 190
198#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T 191#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T
199#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G 192#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G
@@ -212,6 +205,14 @@ enum {
212#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O 205#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O
213#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLASH) 206#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLASH)
214 207
208#define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B
209#define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G
210#define ______________COLEMAK_MOD_DH_L3____________ CTL_T(KC_Z), KC_X, KC_C, KC_D, KC_V
211
212#define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
213#define ______________COLEMAK_MOD_DH_R2____________ KC_K, KC_N, KC_E, KC_I, KC_O
214#define ______________COLEMAK_MOD_DH_R3____________ KC_M, KC_H, KC_COMM, KC_DOT, CTL_T(KC_SLASH)
215
215 216
216#define _________________DVORAK_L1_________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y 217#define _________________DVORAK_L1_________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y
217#define _________________DVORAK_L2_________________ KC_A, KC_O, KC_E, KC_U, KC_I 218#define _________________DVORAK_L2_________________ KC_A, KC_O, KC_E, KC_U, KC_I
@@ -231,12 +232,21 @@ enum {
231#define _________________WORKMAN_R3________________ KC_B, KC_M, KC_W, KC_V, CTL_T(KC_Z) 232#define _________________WORKMAN_R3________________ KC_B, KC_M, KC_W, KC_V, CTL_T(KC_Z)
232 233
233 234
235#define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K
236#define _________________NORMAN_L2_________________ KC_A, KC_S, KC_E, KC_T, KC_G
237#define _________________NORMAN_L3_________________ CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B
238
239#define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN
240#define _________________NORMAN_R2_________________ KC_J, KC_N, KC_I, KC_O, KC_U
241#define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLASH)
242
243
234 244
235// Since we have 4 default layouts (QWERTY, DVORAK, COLEMAK and WORKMAN), 245// Since we have 4 default layouts (QWERTY, DVORAK, COLEMAK and WORKMAN),
236// this allows us to quickly modify the bottom row for all of the layouts 246// this allows us to quickly modify the bottom row for all of the layouts
237// so we don't have to alter it 4 times and hope that we haven't missed 247// so we don't have to alter it 4 times and hope that we haven't missed
238// anything 248// anything
239#define ___________ERGODOX_BOTTOM_LEFT_____________ KC_QUOT, KC_MEH, KC_LBRC, KC_RBRC 249#define ___________ERGODOX_BOTTOM_LEFT_____________ KC_MEH, KC_LGUI, KC_LBRC, KC_RBRC
240#define ___________ERGODOX_BOTTOM_RIGHT____________ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT 250#define ___________ERGODOX_BOTTOM_RIGHT____________ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
241 251
242 252
diff --git a/users/drashna/readme.md b/users/drashna/readme.md
index 92792fb97..2229a3fe0 100644
--- a/users/drashna/readme.md
+++ b/users/drashna/readme.md
@@ -3,6 +3,33 @@ Overview
3 3
4This is my personal userspace file. Most of my code exists here, as it's heavily shared. 4This is my personal userspace file. Most of my code exists here, as it's heavily shared.
5 5
6Userspace Config.h
7------------------
8
9By default, the userspace feature doesn't include a `config.h` file the way that that keyboards, revisions, keymaps and layouts handle them. This means that if you want global configurations via userspace, it's very difficult to implement.
10
11The reason for using seperate files here is that the `drashna.h` file doesn't get called in such a way that will actually define QMK settings. Additionally, attempting to add it to the `config.h` files has issues. Namely, the `drashna.h` file requires the `quantum.h` file... but including this to the `config.h` attemps to redefines a bunch of settings and breaks the firmare. Removing the `quantum.h` include means that a number of data structures no longer get added, and the `SAFE_RANGE` value is no longer defined, as well. So we need both a `config.h` for global config, and we need a seperate h file for local settings.
12
13However, the `rules.mk` file is included when building the firmware. So we can hijack that process to "manually" add a `config.h`. To do so, you would need to add the following to the `rules.mk` in your userspace:
14
15```
16ifneq ("$(wildcard users/$(KEYMAP)/config.h)","")
17 CONFIG_H += users/$(KEYMAP)/config.h
18endif
19```
20
21You can replace `$(KEYMAP)` with your name, but it's not necessary. This checks for the existence of `/users/<name>/config.h`, and if it exists, includes it like every other `config.h` file, allowing you to make global `config.h` settings.
22
23As for the `config.h` file, you want to make sure that it has an "ifdef" in it to make sure it's only used once. So you want something like this:
24
25```
26#ifndef USERSPACE_CONFIG_H
27#define USERSPACE_CONFIG_H
28
29// put stuff here
30
31#endif
32```
6 33
7Custom userspace handlers 34Custom userspace handlers
8------------------------- 35-------------------------
diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk
index ab2ab607d..6d9f0664e 100644
--- a/users/drashna/rules.mk
+++ b/users/drashna/rules.mk
@@ -1,3 +1,7 @@
1 1
2SRC += drashna.c 2SRC += drashna.c
3EXTRAFLAGS += -flto 3EXTRAFLAGS += -flto
4
5ifneq ("$(wildcard users/$(KEYMAP)/config.h)","")
6 CONFIG_H += users/$(KEYMAP)/config.h
7endif