* Minor tweaks
modified: users/drashna/drashna.c
* Fix Workman ASCII art
* Add OSM for shifts
* Make Viterbi's 00 code consistant
* Minor Cleanup off Userspace
* Change Tapping Term on Ergodox
* Re-add EEPROM code
* Minor updates and tweaks
* Use QMK_H variables to make keymaps more universal
* Forgot 'break;' for covecube layer
* Tweak Viterbi files now that I have hands on
* Add secrets to Ergodox
* RGB tweaks to Viterbi
* Viterbi RGB layout tweeks
* Minor tweaks
* Add One Shot Mod tap toggle
* Add Faux Clicky to Viterbi, and disable controller's LEDs
* Minor tweaks
* Move D3 keycode defines into userspace
* Updated Userspace Readme
#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,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CONFIG_USER_H
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
#define CONFIG_USER_H
#include"config_common.h"
#includeQMK_KEYBOARD_CONFIG_H
/* Use I2C or Serial, not both */
/* Use I2C or Serial, not both */
@ -35,9 +35,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define MASTER_RIGHT
#define EE_HANDS
#define EE_HANDS
#ifndef TAPPING_TERM
#ifdef TAPPING_TERM
#define TAPPING_TERM 200
#undef TAPPING_TERM
#endif
#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 */
@ -63,7 +68,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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.)
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.
Custom handlers
Custom userspace handlers
---------------
-------------------------
Specifically QMK works by using customized handlers for everything. This allows for multiple levels of customization.
`matrix_scan` calls `matrix_scan_quantum`, which alls `matrix_scan_kb`, which calls `matrix_scan_user`.
`process_record` calls a bunch of stuff, but eventually calls `process_record_kb` which calls `process_record_user`
The same goes for `matrix_init`, `layer_state_set`, `led_set`, and a few other functions.
All (most) `_user` functions are handled here instead. To allow keyboard specific configuration, I've created `_keymap` functions that can be called by the keymap.c files instead.
All (most) `_user` functions are handled here instead. To allow keyboard specific configuration, I've created `_keymap` functions that can be called by the keymap.c files instead.
This allows for keyboard specific configuration while maintaining the ability to customize the board.
This allows for keyboard specific configuration while maintaining the ability to customize the board.
My Ergodox EZ Keymap is a good example of this, as it uses the LEDs as modifier indicators.
My [Ergodox EZ Keymap](https://github.com/qmk/qmk_firmware/blob/master/keyboards/ergodox_ez/keymaps/drashna/keymap.c#L399) is a good example of this, as it uses the LEDs as modifier indicators.
Custom Keycodes
Custom Keycodes
---------------
---------------
Keycods are defined in the drashna.h file and need to be included in the keymap.c files, so that they can be used there.
Keycodes are defined in the drashna.h file and need to be included in the keymap.c files, so that they can be used there.
A bunch of macros are present and are only included on boards that are not the Ergodox EZ or Orthodox, as they are not needed for those boards.
A bunch of macros are present and are only included on boards that are not the Ergodox EZ or Orthodox, as they are not needed for those boards.