* 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
#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.)
#define ONESHOT_TAP_TOGGLE 2
#undef PRODUCT
#define PRODUCT DrashnaDox - Hacked ErgoDox EZ Shine
@ -35,15 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define MASTER_RIGHT
#define EE_HANDS
#define EE_HANDS
#ifdef TAPPING_TERM
#undef TAPPING_TERM
#endif
#define TAPPING_TERM 150
#undef PERMISSIVE_HOLD
#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.)
#define ONESHOT_TAP_TOGGLE 2
/* key combination for command */
/* key combination for command */
#ifdef IS_COMMAND
#ifdef IS_COMMAND
@ -64,12 +55,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
#define RGBLIGHT_SLEEP
#endif // RGBLIGHT_ENABLE
#endif // RGBLIGHT_ENABLE
#ifdef AUDIO_ENABLE
#ifdef AUDIO_ENABLE
#define C6_AUDIO
#define C6_AUDIO
#define STARTUP_SONG SONG(IMPERIAL_MARCH)
#define NO_MUSIC_MODE
#define NO_MUSIC_MODE
#endif
#endif
@ -79,4 +68,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
if(!record->event.pressed){send_game_macro("Good luck, have fun!!!");}
returnsend_game_macro("Good luck, have fun!!!",record,false);
returnfalse;break;
caseKC_SYMM:
caseKC_SYMM:
if(!record->event.pressed){send_game_macro("Left click to win!");}
returnsend_game_macro("Left click to win!",record,false);
returnfalse;break;
caseKC_JUSTGAME:
caseKC_JUSTGAME:
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.");}
returnsend_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);
returnfalse;break;
caseKC_TORB:
caseKC_TORB:
if(!record->event.pressed){send_game_macro("That was positively riveting!");}
returnsend_game_macro("That was positively riveting!",record,false);
returnfalse;break;
caseKC_AIM:
caseKC_AIM:
if(!record->event.pressed){
send_game_macro("That aim is absolutely amazing. It's almost like you're a machine!",record,true);
send_game_macro("That aim is absolutely amazing. It's almost like you're a machine!");
returnsend_game_macro("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!",record,false);
wait_ms(3000);
send_game_macro("Wait! That aim is TOO good! You're clearly using an aim hack! CHEATER!");
This is my personal userspace file. Most of my code exists here, as it's heavily shared.
This is my personal userspace file. Most of my code exists here, as it's heavily shared.
Userspace Config.h
------------------
By 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.
The 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.
However, 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:
```
ifneq ("$(wildcard users/$(KEYMAP)/config.h)","")
CONFIG_H += users/$(KEYMAP)/config.h
endif
```
You 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.
As 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: