Yet another update to drashna keymaps and userspace (EEPROM, RGB indicators) (#2959)

* More Iris Tweaks

* Mess with iris arrow keys

* Massive layout overhaul to make everything more OLKB

* Additional tweaks

* Cleanup Userspace

Remove unused layer code, and properly set userspace eeprom structure.

* EEPROM stuff

* Only use indicators if layer indication is enabled

* Iris and Orthodox Tweaks (Status Indicators)

* Additional tweaks to finish tri layer conversion

* Disable ProMicro ligths globally

* Add Pro Micro hacking info

* Successfully get mod indication working on thumb clusters

* Enable printing when console is enabled

* Make Modifier Indicator lights more modular

* Keymap cleanup

* Tapping test changes

* Cleanup and minor tweaks
This commit is contained in:
Drashna Jaelre 2018-05-15 19:34:34 -07:00 committed by Jack Humbert
parent a572323f94
commit 53a6501d71
12 changed files with 273 additions and 249 deletions

View File

@ -41,6 +41,8 @@ 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_LIMIT_VAL 225
#endif // RGBLIGHT_ENABLE #endif // RGBLIGHT_ENABLE
#ifdef AUDIO_ENABLE #ifdef AUDIO_ENABLE

View File

@ -2,79 +2,94 @@
#include QMK_KEYBOARD_H #include QMK_KEYBOARD_H
#include "drashna.h" #include "drashna.h"
#ifdef INDICATOR_LIGHTS
extern userspace_config_t userspace_config;
uint8_t last_mod;
uint8_t last_led;
uint8_t last_osm;
bool has_mods_changed = false;
#endif
#define KC_ALAP ALT_T(KC_APP) #define KC_ALAP ALT_T(KC_APP)
#define KC_OSLG OSM(MOD_LGUI)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_wrapper( [_QWERTY] = LAYOUT_wrapper(
KC_GESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS,
KC_TAB , _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSLS, KC_TAB , _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSLS,
KC_C1R3, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT, KC_CCCV, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT,
KC_MLSF, _________________QWERTY_L3_________________, KC_ALAP, KC_LGUI, _________________QWERTY_R3_________________, KC_MRSF, KC_MLSF, _________________QWERTY_L3_________________, KC_ALAP, KC_OSLG, _________________QWERTY_R3_________________, KC_MRSF,
LOWER, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE
), ),
[_COLEMAK] = LAYOUT_wrapper( [_COLEMAK] = LAYOUT_wrapper(
KC_GESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, KC_ESC , ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS,
KC_TAB , _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, KC_BSLS, KC_TAB , _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, KC_BSLS,
KC_C1R3, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, KC_QUOT, KC_CCCV, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, KC_QUOT,
KC_MLSF, _________________COLEMAK_L3________________, KC_ALAP, KC_LGUI, _________________COLEMAK_R3________________, KC_MRSF, KC_MLSF, _________________COLEMAK_L3________________, KC_ALAP, KC_OSLG, _________________COLEMAK_R3________________, KC_MRSF,
LOWER, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE
), ),
[_DVORAK] = LAYOUT_wrapper( [_DVORAK] = LAYOUT_wrapper(
KC_GESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS,
KC_TAB , _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, KC_BSLS, KC_TAB , _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, KC_BSLS,
KC_C1R3, _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, KC_QUOT, KC_CCCV, _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, KC_QUOT,
KC_MLSF, _________________DVORAK_L3_________________, KC_ALAP, KC_LGUI, _________________DVORAK_R3_________________, KC_MRSF, KC_MLSF, _________________DVORAK_L3_________________, KC_ALAP, KC_OSLG, _________________DVORAK_R3_________________, KC_MRSF,
LOWER, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE
), ),
[_WORKMAN] = LAYOUT_wrapper( [_WORKMAN] = LAYOUT_wrapper(
KC_GESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS,
KC_TAB , _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, KC_BSLS, KC_TAB , _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, KC_BSLS,
KC_C1R3, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT, KC_CCCV, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT,
KC_MLSF, _________________WORKMAN_L3________________, KC_ALAP, KC_LGUI, _________________WORKMAN_R3________________, KC_MRSF, KC_MLSF, _________________WORKMAN_L3________________, KC_ALAP, KC_OSLG, _________________WORKMAN_R3________________, KC_MRSF,
LOWER, KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE
), ),
[_MODS] = LAYOUT( [_MODS] = LAYOUT_wrapper(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT,
_______, _______, _______, _______, _______, _______ _______, _______, _______, _______, _______, _______
), ),
[_LOWER] = LAYOUT( [_LOWER] = LAYOUT_wrapper(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, _______, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_RBRC, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_LPRN, KC_RPRN, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______,
_______, _______, KC_DEL, _______, _______, _______ _______, _______, _______, _______, _______, _______
), ),
[_RAISE] = LAYOUT( [_RAISE] = LAYOUT_wrapper(
KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_UNDS, KC_EQL , KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
_______, _______, _______, _______, _______, _______, _______, _______, KC_PLUS, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______,
_______, _______, _______, _______, _______, _______ _______, _______, _______, _______, _______, _______
), ),
[_ADJUST] = LAYOUT( [_ADJUST] = LAYOUT_wrapper(
KC_MAKE, KC_RST, EPRM, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE, _______, _______, _______, _______, _______, KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5, KC_RST,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, VRSN, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, _______, _______, _______, _______, _______, EPRM,
RGB_SMOD,RGB_HUI, CK_TOGG, AU_ON, AU_OFF, AG_NORM, AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, TG(_MODS), _______, _______, CK_TOGG, AU_ON, AU_OFF, AG_NORM, AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, _______,
KC_RGB_T,RGB_SMOD,RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY, TG(_MODS),RGB_SMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T,_______, _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY,
_______, _______, _______, _______, _______, _______ _______, _______, _______, _______, _______, _______
) )
}; };
void matrix_init_keymap(void) {
#ifdef INDICATOR_LIGHTS
last_mod = get_mods();
last_led = host_keyboard_leds();
last_osm =get_oneshot_mods();
#endif
}
#ifdef INDICATOR_LIGHT
uint32_t layer_state_set_keymap (uint32_t state) { uint32_t layer_state_set_keymap (uint32_t state) {
#ifdef INDICATOR_LIGHTS
uint8_t modifiders = get_mods(); uint8_t modifiders = get_mods();
uint8_t led_usb_state = host_keyboard_leds(); uint8_t led_usb_state = host_keyboard_leds();
uint8_t one_shot = get_oneshot_mods(); uint8_t one_shot = get_oneshot_mods();
@ -92,41 +107,49 @@ uint32_t layer_state_set_keymap (uint32_t state) {
rgblight_sethsv_at(120, 255, 255, 7); rgblight_sethsv_at(120, 255, 255, 7);
rgblight_sethsv_at(120, 255, 255, 8); rgblight_sethsv_at(120, 255, 255, 8);
} }
#endif
return state; return state;
} }
void matrix_scan_keymap (void) { void matrix_scan_keymap (void) {
static uint8_t current_mods;
static uint8_t current_host_leds;
static uint8_t current_oneshot_mods;
static bool has_status_changed = true;
if ( current_mods != get_mods() || current_host_leds != host_keyboard_leds() || current_oneshot_mods != get_oneshot_mods()) { #ifdef INDICATOR_LIGHTS
has_status_changed = true; uint8_t current_mod = get_mods();
current_mods = get_mods(); uint8_t current_led = host_keyboard_leds();
current_host_leds = host_keyboard_leds(); uint8_t current_osm =get_oneshot_mods();
current_oneshot_mods = get_oneshot_mods();
if (last_mod == current_mod) {
last_mod = current_mod;
has_mods_changed = true;
}
if (last_led == current_led) {
last_led = current_led;
has_mods_changed = true;
}
if (last_osm == current_osm) {
last_osm = current_osm;
has_mods_changed = true;
} }
if (has_status_changed) {
has_status_changed = false;
if (current_mods & MODS_SHIFT_MASK || current_host_leds & (1<<USB_LED_CAPS_LOCK) || current_oneshot_mods & MODS_SHIFT_MASK) {
if (userspace_config.rgb_layer_change && has_mods_changed && biton32(layer_state) == 0) {
if (current_mod & MODS_SHIFT_MASK || current_led & (1<<USB_LED_CAPS_LOCK) || current_osm & MODS_SHIFT_MASK) {
rgblight_sethsv_at(0, 255, 255, 5); rgblight_sethsv_at(0, 255, 255, 5);
rgblight_sethsv_at(0, 255, 255, 10); rgblight_sethsv_at(0, 255, 255, 10);
} else { } else {
rgblight_sethsv_default_helper(5); rgblight_sethsv_default_helper(5);
rgblight_sethsv_default_helper(10); rgblight_sethsv_default_helper(10);
} }
if (current_mods & MODS_CTRL_MASK || current_oneshot_mods & MODS_CTRL_MASK) { if (current_mod & MODS_CTRL_MASK || current_osm & MODS_CTRL_MASK) {
rgblight_sethsv_at(51, 255, 255, 6); rgblight_sethsv_at(51, 255, 255, 6);
rgblight_sethsv_at(51, 255, 255, 9); rgblight_sethsv_at(51, 255, 255, 9);
} else { } else {
rgblight_sethsv_default_helper(6); rgblight_sethsv_default_helper(6);
rgblight_sethsv_default_helper(9); rgblight_sethsv_default_helper(9);
} }
if (current_mods & MODS_GUI_MASK || current_oneshot_mods & MODS_GUI_MASK) { if (current_mod & MODS_GUI_MASK || current_osm & MODS_GUI_MASK) {
rgblight_sethsv_at(120, 255, 255, 7); rgblight_sethsv_at(120, 255, 255, 7);
rgblight_sethsv_at(120, 255, 255, 8); rgblight_sethsv_at(120, 255, 255, 8);
} else { } else {
@ -135,7 +158,6 @@ void matrix_scan_keymap (void) {
} }
} }
}
#endif #endif
}

View File

@ -9,3 +9,4 @@ AUDIO_ENABLE = yes
NKRO_ENABLE = yes NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no BACKLIGHT_ENABLE = no
SWAP_HANDS_ENABLE = yes SWAP_HANDS_ENABLE = yes
INDICATOR_LIGHTS = yes

View File

@ -22,6 +22,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include QMK_KEYBOARD_H #include QMK_KEYBOARD_H
#include "drashna.h" #include "drashna.h"
#ifdef INDICATOR_LIGHTS
extern userspace_config_t userspace_config;
uint8_t last_mod;
uint8_t last_led;
uint8_t last_osm;
bool has_mods_changed = false;
#endif
// Each layer gets a name for readability, which is then used in the keymap matrix below. // Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name. // The underscores don't mean anything - you can have a layer called STUFF or any other name.
@ -33,6 +41,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define XXXXXXX KC_NO #define XXXXXXX KC_NO
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_wrapper(\ [_QWERTY] = LAYOUT_wrapper(\
@ -65,27 +74,35 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LOWER] = LAYOUT_wrapper(\ [_LOWER] = LAYOUT_wrapper(\
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_PGUP, KC_PGDN, KC_HOME, KC_END, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, _________________FUNC_LEFT_________________, KC_PGUP, KC_PGDN, KC_HOME, KC_END, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, _______, _______ _______, _________________FUNC_RIGHT________________, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______
), ),
[_RAISE] = LAYOUT_wrapper(\ [_RAISE] = LAYOUT_wrapper(\
KC_GRV, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_BSPC, KC_GRV, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_BSPC,
_______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_HOME, KC_END, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_HOME, KC_END, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, _______, _______ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______
), ),
[_ADJUST] = LAYOUT_wrapper(\ [_ADJUST] = LAYOUT_wrapper(\
KC_MAKE,KC_RESET, EPRM, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5, KC_RESET,
RGB_SMOD,RGB_HUI, CK_TOGG, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, _______, AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, TG(_MODS), VRSN, _______, CK_TOGG, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, _______, AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, EPRM,
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 TG(_MODS),RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T,_______, _______, _______, _______, _______, _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY
) )
}; };
#ifdef RGBLIGHT_ENABLE void matrix_init_keymap(void) {
#ifdef INDICATOR_LIGHTS
last_mod = get_mods();
last_led = host_keyboard_leds();
last_osm =get_oneshot_mods();
#endif
}
uint32_t layer_state_set_keymap (uint32_t state) { uint32_t layer_state_set_keymap (uint32_t state) {
#ifdef INDICATOR_LIGHTS
uint8_t modifiders = get_mods(); uint8_t modifiders = get_mods();
uint8_t led_usb_state = host_keyboard_leds(); uint8_t led_usb_state = host_keyboard_leds();
uint8_t one_shot = get_oneshot_mods(); uint8_t one_shot = get_oneshot_mods();
@ -103,41 +120,49 @@ uint32_t layer_state_set_keymap (uint32_t state) {
rgblight_sethsv_at(120, 255, 255, 7); rgblight_sethsv_at(120, 255, 255, 7);
rgblight_sethsv_at(120, 255, 255, 8); rgblight_sethsv_at(120, 255, 255, 8);
} }
#endif
return state; return state;
} }
void matrix_scan_keymap (void) { void matrix_scan_keymap (void) {
static uint8_t current_mods;
static uint8_t current_host_leds;
static uint8_t current_oneshot_mods;
static bool has_status_changed = true;
if ( current_mods != get_mods() || current_host_leds != host_keyboard_leds() || current_oneshot_mods != get_oneshot_mods()) { #ifdef INDICATOR_LIGHTS
has_status_changed = true; uint8_t current_mod = get_mods();
current_mods = get_mods(); uint8_t current_led = host_keyboard_leds();
current_host_leds = host_keyboard_leds(); uint8_t current_osm =get_oneshot_mods();
current_oneshot_mods = get_oneshot_mods();
if (last_mod == current_mod) {
last_mod = current_mod;
has_mods_changed = true;
}
if (last_led == current_led) {
last_led = current_led;
has_mods_changed = true;
}
if (last_osm == current_osm) {
last_osm = current_osm;
has_mods_changed = true;
} }
if (has_status_changed) {
has_status_changed = false;
if (current_mods & MODS_SHIFT_MASK || current_host_leds & (1<<USB_LED_CAPS_LOCK) || current_oneshot_mods & MODS_SHIFT_MASK) {
if (userspace_config.rgb_layer_change && has_mods_changed && biton32(layer_state) == 0) {
if (current_mod & MODS_SHIFT_MASK || current_led & (1<<USB_LED_CAPS_LOCK) || current_osm & MODS_SHIFT_MASK) {
rgblight_sethsv_at(0, 255, 255, 5); rgblight_sethsv_at(0, 255, 255, 5);
rgblight_sethsv_at(0, 255, 255, 10); rgblight_sethsv_at(0, 255, 255, 10);
} else { } else {
rgblight_sethsv_default_helper(5); rgblight_sethsv_default_helper(5);
rgblight_sethsv_default_helper(10); rgblight_sethsv_default_helper(10);
} }
if (current_mods & MODS_CTRL_MASK || current_oneshot_mods & MODS_CTRL_MASK) { if (current_mod & MODS_CTRL_MASK || current_osm & MODS_CTRL_MASK) {
rgblight_sethsv_at(51, 255, 255, 6); rgblight_sethsv_at(51, 255, 255, 6);
rgblight_sethsv_at(51, 255, 255, 9); rgblight_sethsv_at(51, 255, 255, 9);
} else { } else {
rgblight_sethsv_default_helper(6); rgblight_sethsv_default_helper(6);
rgblight_sethsv_default_helper(9); rgblight_sethsv_default_helper(9);
} }
if (current_mods & MODS_GUI_MASK || current_oneshot_mods & MODS_GUI_MASK) { if (current_mod & MODS_GUI_MASK || current_osm & MODS_GUI_MASK) {
rgblight_sethsv_at(120, 255, 255, 7); rgblight_sethsv_at(120, 255, 255, 7);
rgblight_sethsv_at(120, 255, 255, 8); rgblight_sethsv_at(120, 255, 255, 8);
} else { } else {
@ -146,5 +171,7 @@ void matrix_scan_keymap (void) {
} }
} }
}
#endif #endif
}

View File

@ -7,3 +7,4 @@ TAP_DANCE_ENABLE = no
RGBLIGHT_ENABLE = yes RGBLIGHT_ENABLE = yes
AUDIO_ENABLE = yes AUDIO_ENABLE = yes
NKRO_ENABLE = yes NKRO_ENABLE = yes
INDICATOR_LIGHTS = yes

View File

@ -17,7 +17,6 @@ extern keymap_config_t keymap_config;
#define DIABLO TG(_DIABLO) #define DIABLO TG(_DIABLO)
#define GAMEPAD TG(_GAMEPAD) #define GAMEPAD TG(_GAMEPAD)
#define MEDIA TT(_MEDIA) #define MEDIA TT(_MEDIA)
#define COVECUBE TG(_COVECUBE)
//enum more_custom_keycodes { //enum more_custom_keycodes {
@ -28,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NUMLOCK] = LAYOUT_ortho_5x7( [_NUMLOCK] = LAYOUT_ortho_5x7(
LMACRO, DIABLO, GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS, LMACRO, DIABLO, GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS,
MEDIA, KC_CALC, COVECUBE,KC_P7, KC_P8, KC_P9, KC_PAST, MEDIA, KC_CALC, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PAST,
KC_HOME, KC_DEL, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_HOME, KC_DEL, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PMNS,
KC_END, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_END, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PPLS,
KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_COLN, KC_PENT KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_COLN, KC_PENT
@ -58,13 +57,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_SALT, KC_MORESALT, KC_SALTHARD, KC_JUSTGAME, KC_AIM, XXXXXXX, KC_PENT KC_SALT, KC_MORESALT, KC_SALTHARD, KC_JUSTGAME, KC_AIM, XXXXXXX, KC_PENT
), ),
[_COVECUBE] = LAYOUT_ortho_5x7(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, COVECUBE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),
[_MEDIA] = LAYOUT_ortho_5x7( [_MEDIA] = LAYOUT_ortho_5x7(
KC_MAKE, KC_RESET,MU_TOG, AU_ON, AU_OFF, CK_TOGG, RGB_SAD, KC_MAKE, KC_RESET,MU_TOG, AU_ON, AU_OFF, CK_TOGG, RGB_SAD,
@ -77,13 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}; };
void matrix_init_keymap(void) {
DDRD &= ~(1<<5);
PORTD &= ~(1<<5);
DDRB &= ~(1<<0);
PORTB &= ~(1<<0);
}
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {

View File

@ -57,11 +57,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/ */
[_QWERTY] = LAYOUT_ergodox_pretty_wrapper( [_QWERTY] = LAYOUT_ergodox_pretty_wrapper(
// left hand // right hand // left hand // right hand
KC_EQL, ________________NUMBER_LEFT________________, OSL(_MOUS), OSL(_MOUS), ________________NUMBER_RIGHT_______________, KC_MINS, KC_EQL, ________________NUMBER_LEFT________________, _______, _______, ________________NUMBER_RIGHT_______________, KC_MINS,
KC_TAB, _________________QWERTY_L1_________________, TG(_DIABLO), TG(_DIABLO), _________________QWERTY_R1_________________, KC_BSLS, KC_TAB, _________________QWERTY_L1_________________, TG(_DIABLO), TG(_DIABLO), _________________QWERTY_R1_________________, KC_BSLS,
KC_C1R3, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT, KC_C1R3, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT,
KC_MLSF, _________________QWERTY_L3_________________, TG(_GAMEPAD), TG(_GAMEPAD), _________________QWERTY_R3_________________, KC_MRSF, KC_MLSF, _________________QWERTY_L3_________________, TG(_GAMEPAD), TG(_GAMEPAD), _________________QWERTY_R3_________________, KC_MRSF,
LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), KC_GRV, ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, KC_CCCV,
__________________ERGODOX_THUMB_CLUSTER_____________________ __________________ERGODOX_THUMB_CLUSTER_____________________
), ),
/* Keymap 0: COLEMAK layer /* Keymap 0: COLEMAK layer
@ -89,11 +89,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Otherwise, it needs KC_* // Otherwise, it needs KC_*
[_COLEMAK] = LAYOUT_ergodox_pretty_wrapper( [_COLEMAK] = LAYOUT_ergodox_pretty_wrapper(
// left hand // right hand // left hand // right hand
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, KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
KC_TAB, _________________COLEMAK_L1________________, TG(_DIABLO), TG(_DIABLO), _________________COLEMAK_R1________________, KC_BSLS, KC_TAB, _________________COLEMAK_L1________________, TG(_DIABLO), TG(_DIABLO), _________________COLEMAK_R1________________, KC_BSLS,
KC_C1R3, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, KC_QUOT, KC_C1R3, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, KC_QUOT,
KC_MLSF, _________________COLEMAK_L3________________, TG(_GAMEPAD), TG(_GAMEPAD), _________________COLEMAK_R3________________, KC_MRSF, KC_MLSF, _________________COLEMAK_L3________________, TG(_GAMEPAD), TG(_GAMEPAD), _________________COLEMAK_R3________________, KC_MRSF,
LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), KC_GRV, ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, KC_CCCV,
__________________ERGODOX_THUMB_CLUSTER_____________________ __________________ERGODOX_THUMB_CLUSTER_____________________
), ),
/* Keymap 0: DVORAK Layout /* Keymap 0: DVORAK Layout
@ -121,11 +121,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Otherwise, it needs KC_* // Otherwise, it needs KC_*
[_DVORAK] = LAYOUT_ergodox_pretty_wrapper( [_DVORAK] = LAYOUT_ergodox_pretty_wrapper(
// left hand // right hand // left hand // right hand
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, KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
KC_TAB, _________________DVORAK_L1_________________, TG(_DIABLO), TG(_DIABLO), _________________DVORAK_R1_________________, KC_SLSH, KC_TAB, _________________DVORAK_L1_________________, TG(_DIABLO), TG(_DIABLO), _________________DVORAK_R1_________________, KC_SLSH,
KC_C1R3, _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, KC_MINS, KC_C1R3, _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, KC_MINS,
KC_MLSF, _________________DVORAK_L3_________________, TG(_GAMEPAD), TG(_GAMEPAD), _________________DVORAK_R3_________________, KC_MRSF, KC_MLSF, _________________DVORAK_L3_________________, TG(_GAMEPAD), TG(_GAMEPAD), _________________DVORAK_R3_________________, KC_MRSF,
LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), KC_GRV, ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, KC_CCCV,
__________________ERGODOX_THUMB_CLUSTER_____________________ __________________ERGODOX_THUMB_CLUSTER_____________________
), ),
/* Keymap 0: WORKMAN layer /* Keymap 0: WORKMAN layer
@ -153,16 +153,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Otherwise, it needs KC_* // Otherwise, it needs KC_*
[_WORKMAN] = LAYOUT_ergodox_pretty_wrapper( [_WORKMAN] = LAYOUT_ergodox_pretty_wrapper(
// left hand // left hand
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, KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
KC_TAB, _________________WORKMAN_L1________________, TG(_DIABLO), TG(_DIABLO), _________________WORKMAN_R1________________, KC_BSLS, KC_TAB, _________________WORKMAN_L1________________, TG(_DIABLO), TG(_DIABLO), _________________WORKMAN_R1________________, KC_BSLS,
KC_C1R3, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT, KC_C1R3, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT,
KC_MLSF, _________________WORKMAN_L3________________, TG(_GAMEPAD), TG(_GAMEPAD), _________________WORKMAN_R3________________, KC_MRSF, KC_MLSF, _________________WORKMAN_L3________________, TG(_GAMEPAD), TG(_GAMEPAD), _________________WORKMAN_R3________________, KC_MRSF,
LT(_SYMB,KC_GRV), ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, TT(_SYMB), KC_GRV, ___________ERGODOX_BOTTOM_LEFT_____________, ___________ERGODOX_BOTTOM_RIGHT____________, KC_CCCV,
__________________ERGODOX_THUMB_CLUSTER_____________________ __________________ERGODOX_THUMB_CLUSTER_____________________
), ),
// Reverts OSM(Shift) to normal Shifts. However, may not need since we fixed the issue with RDP (LOCAL RESOURCES) // Reverts OSM(Shift) to normal Shifts. However, may not need since we fixed the issue with RDP (LOCAL RESOURCES)
[_MODS] = LAYOUT_ergodox_pretty( [_MODS] = LAYOUT_ergodox_pretty_wrapper(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@ -173,37 +173,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______ _______, _______, _______, _______, _______, _______
), ),
/* Keymap 3: Symbol Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | ESC | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | RESET | ! | @ | { | } | | | | | | + | 7 | 8 | 9 | * | F12 |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | MAKE | # | $ | ( | ) | ` |------| |------| - | 4 | 5 | 6 | / | PrtSc |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | VRSN | % | ^ | [ | ] | ~ | | | | NUM | 1 | 2 | 3 | = | PAUSE |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | LT0 | & | * | : | ; | | | 0 | NUM. | ENT | ENT |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | RGBM | RED | | OFF | SOLID|
* ,------|------|------| |------+------+------.
* | | | GREEN| | | | |
* | RGB | RGB |------| |------| NUM0 | NUME |
* | DARK |BRITE | BLUE | | | | |
* `--------------------' `--------------------'
*/
[_SYMB] = LAYOUT_ergodox_pretty(
EPRM, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_QWERTY, KC_QWERTY, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_RST, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_COLEMAK, KC_WORKMAN, KC_PPLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PAST, KC_F12,
KC_MAKE, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRAVE, KC_PMNS, KC_KP_4, KC_KP_5, KC_KP_6, KC_PSLS, KC_PSCREEN,
VRSN, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_DVORAK, TG(_MODS), KC_NLCK, KC_KP_1, KC_KP_2, KC_KP_3, KC_PEQL, KC_PAUSE,
KC_TRNS, KC_AMPR, KC_ASTR, KC_COLN, KC_SCLN, KC_KP_0, KC_KP_0, KC_PDOT, KC_PENT, KC_TRNS,
RGB_SMOD, KC_RGB_T, KC_TRNS, KC_TRNS,
RGB_HUI, KC_TRNS,
RGB_M_R, RGB_M_SW, RGB_HUD, KC_PDOT, KC_KP_0, KC_PENT
),
/* Keymap 4: Customized Overwatch Layout /* Keymap 4: Customized Overwatch Layout
* *
@ -226,7 +195,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | H | | | | | * | | | H | | | | |
* `--------------------' `--------------------' * `--------------------' `--------------------'
*/ */
[_GAMEPAD] = LAYOUT_ergodox_pretty( [_GAMEPAD] = LAYOUT_ergodox_pretty_wrapper(
KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, HYPR(KC_D), HYPR(KC_Q), HYPR(KC_GRV), KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, HYPR(KC_D), HYPR(KC_Q), HYPR(KC_GRV), KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO, KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO,
@ -258,7 +227,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | SHIFT| ALT | 0MAC | | | | | * | SHIFT| ALT | 0MAC | | | | |
* `--------------------' `--------------------' * `--------------------' `--------------------'
*/ */
[_DIABLO] = LAYOUT_ergodox_pretty( [_DIABLO] = LAYOUT_ergodox_pretty_wrapper(
KC_ESC, KC_V, KC_D, KC_LALT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_ESC, KC_V, KC_D, KC_LALT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
@ -269,36 +238,37 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
SFT_T(KC_SPACE), ALT_T(KC_Q), KC_DIABLO_CLEAR, KC_PGDN, KC_DEL, KC_ENT SFT_T(KC_SPACE), ALT_T(KC_Q), KC_DIABLO_CLEAR, KC_PGDN, KC_DEL, KC_ENT
), ),
/* Keymap 4: Media and mouse keys [_LOWER] = LAYOUT_ergodox_pretty_wrapper(
* _______, _________________FUNC_LEFT_________________, _______, _______, _________________FUNC_RIGHT________________, KC_F11,
* ,--------------------------------------------------. ,--------------------------------------------------. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
* | | | | | | | | | | | | | | | | _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
* | | | MsUp | | | | | | | | | | | | | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| _______, _______, _______, _______,
* | |MsLeft|MsDown|MsRght| | |------| |------| | | Acc0 | Acc1 | Acc2 | | _______, _______,
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| _______, _______, _______, _______, _______, _______
* | | Acc0 | Acc1 | Acc2 | | | | | | | Mute |VolDn |VolUp | | | ),
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | Play | Stop | | | | [_RAISE] = LAYOUT_ergodox_pretty_wrapper(
* `----------------------------------' `----------------------------------' _______, _________________FUNC_LEFT_________________, _______, _______, _________________FUNC_RIGHT________________, _______,
* ,-------------. ,-------------. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
* | | | | | | _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
* ,------|------|------| |------+------+------. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT,
* | | | MWUp | | | | | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
* | Lclk | Rclk |------| |------| MBn4 | MBn5 | _______, _______, _______, _______,
* | | | MWDn | | Mclk | | | _______, _______,
* `--------------------' `--------------------' _______, _______, _______, _______, _______, _______
*/ ),
[_MOUS] = LAYOUT_ergodox_pretty(
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, [_ADJUST] = LAYOUT_ergodox_pretty_wrapper(
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, KC_MAKE, _______, _______, _______, _______, _______, _______, _______, KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5, KC_RST,
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, VRSN, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, EPRM,
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, RGB_SMOD,RGB_HUI, CK_TOGG, AU_ON, AU_OFF, AG_NORM, AG_SWAP, KC_QWERTY, KC_COLEMAK, KC_DVORAK, KC_WORKMAN, TG(_MODS),
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TG(_MODS),RGB_SMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T,_______, _______, MG_NKRO, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY,
KC_NO, KC_NO, KC_NO, KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_WH_U, KC_NO, _______, _______, _______, _______,
KC_BTN1, KC_BTN2, KC_WH_D, KC_BTN3, KC_BTN4, KC_BTN5 _______, _______,
_______, _______, _______, _______, _______, _______
), ),
}; };

View File

@ -4,7 +4,6 @@
#ifdef AUDIO_ENABLE #ifdef AUDIO_ENABLE
#define AUDIO_CLICKY #define AUDIO_CLICKY
#define AUDIO_CLICKY_ON
#define STARTUP_SONG SONG(E1M1_DOOM) #define STARTUP_SONG SONG(E1M1_DOOM)
#define GOODBYE_SONG SONG(SONIC_RING) #define GOODBYE_SONG SONG(SONIC_RING)
#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
@ -43,6 +42,8 @@
#define IGNORE_MOD_TAP_INTERRUPT #define IGNORE_MOD_TAP_INTERRUPT
#undef PERMISSIVE_HOLD #undef PERMISSIVE_HOLD
#undef PREVENT_STUCK_MODIFIERS #undef PREVENT_STUCK_MODIFIERS
#define TAPPING_FORCE_HOLD
//#define RETRO_TAPPING
#define FORCE_NKRO #define FORCE_NKRO
@ -53,7 +54,7 @@
#ifdef TAPPING_TERM #ifdef TAPPING_TERM
#undef TAPPING_TERM #undef TAPPING_TERM
#endif // TAPPING_TERM #endif // TAPPING_TERM
#define TAPPING_TERM 176 #define TAPPING_TERM 200
// Disable action_get_macro and fn_actions, since we don't use these // Disable action_get_macro and fn_actions, since we don't use these
@ -61,7 +62,7 @@
#ifndef NO_DEBUG #ifndef NO_DEBUG
#define NO_DEBUG #define NO_DEBUG
#endif // !NO_DEBUG #endif // !NO_DEBUG
#ifndef NO_PRINT #if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
#define NO_PRINT #define NO_PRINT
#endif // !NO_PRINT #endif // !NO_PRINT
#define NO_ACTION_MACRO #define NO_ACTION_MACRO

View File

@ -38,10 +38,6 @@ float tone_paste[][2] = SONG(SCROLL_LOCK_OFF_SOUND);
static uint16_t copy_paste_timer; static uint16_t copy_paste_timer;
#ifdef RGBLIGHT_ENABLE
bool rgb_layer_change = true;
#endif
userspace_config_t userspace_config; userspace_config_t userspace_config;
// Helper Functions // Helper Functions
@ -164,31 +160,42 @@ void led_set_keymap(uint8_t usb_led) {}
// call the keymap's init function // call the keymap's init function
void matrix_init_user(void) { void matrix_init_user(void) {
uint8_t default_layer = eeconfig_read_default_layer(); uint8_t default_layer = eeconfig_read_default_layer();
userspace_config.raw = eeprom_read_byte(EECONFIG_USERSPACE);
#ifdef RGBLIGHT_ENABLE #ifdef BOOTLOADER_CATERINA
rgblight_enable(); DDRD &= ~(1<<5);
#endif // RGBLIGHT_ENABLE PORTD &= ~(1<<5);
if (default_layer & (1UL << _COLEMAK)) { DDRB &= ~(1<<0);
PORTB &= ~(1<<0);
#endif
if (userspace_config.rgb_layer_change) {
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
rgblight_sethsv_magenta(); rgblight_enable();
#endif // RGBLIGHT_ENABLE
} else if (default_layer & (1UL << _DVORAK)) {
#ifdef RGBLIGHT_ENABLE
rgblight_sethsv_green();
#endif // RGBLIGHT_ENABLE
} else if (default_layer & (1UL << _WORKMAN)) {
#ifdef RGBLIGHT_ENABLE
rgblight_sethsv_goldenrod();
#endif // RGBLIGHT_ENABLE
} else {
#ifdef RGBLIGHT_ENABLE
rgblight_sethsv_teal();
#endif // RGBLIGHT_ENABLE #endif // RGBLIGHT_ENABLE
if (default_layer & (1UL << _COLEMAK)) {
#ifdef RGBLIGHT_ENABLE
rgblight_sethsv_magenta();
#endif // RGBLIGHT_ENABLE
} else if (default_layer & (1UL << _DVORAK)) {
#ifdef RGBLIGHT_ENABLE
rgblight_sethsv_green();
#endif // RGBLIGHT_ENABLE
} else if (default_layer & (1UL << _WORKMAN)) {
#ifdef RGBLIGHT_ENABLE
rgblight_sethsv_goldenrod();
#endif // RGBLIGHT_ENABLE
} else {
#ifdef RGBLIGHT_ENABLE
rgblight_sethsv_teal();
#endif // RGBLIGHT_ENABLE
}
} }
userspace_config.raw = eeprom_read_byte(EECONFIG_USERSPACE); #ifdef AUDIO_CLICKY
clicky_enable = userspace_config.clicky_enable; clicky_enable = userspace_config.clicky_enable;
#endif
#if ( defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE) ) #if ( defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE) )
set_unicode_input_mode(UC_WINC); set_unicode_input_mode(UC_WINC);
@ -364,8 +371,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
if (record->event.pressed) { if (record->event.pressed) {
rgb_layer_change = !rgb_layer_change; userspace_config.rgb_layer_change ^= 1;
if (rgb_layer_change) { eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);
if (userspace_config.rgb_layer_change) {
layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better) layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
} }
} }
@ -374,7 +382,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
rgb_layer_change = false; userspace_config.rgb_layer_change = false;
eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);
} }
return true; break; return true; break;
#endif // RGBLIGHT_ENABLE #endif // RGBLIGHT_ENABLE
@ -403,8 +412,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false; return false;
break; break;
case CLICKY_TOGGLE: case CLICKY_TOGGLE:
#ifdef AUDIO_CLICKY
userspace_config.clicky_enable = clicky_enable; userspace_config.clicky_enable = clicky_enable;
eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw); eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);
#endif
break; break;
#ifdef UNICODE_ENABLE #ifdef UNICODE_ENABLE
case UC_FLIP: // (╯°□°)╯ ︵ ┻━┻ case UC_FLIP: // (╯°□°)╯ ︵ ┻━┻
@ -445,123 +456,104 @@ uint32_t layer_state_set_user(uint32_t state) {
state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
switch (biton32(state)) { switch (biton32(state)) {
case _NAV:
#ifdef RGBLIGHT_ENABLE
if (rgb_layer_change) {
rgblight_sethsv_blue();
rgblight_mode(1);
}
#endif // RGBLIGHT_ENABLE
break;
case _SYMB:
#ifdef RGBLIGHT_ENABLE
if (rgb_layer_change) {
rgblight_sethsv_blue();
rgblight_mode(2);
}
#endif // RGBLIGHT_ENABLE
break;
case _MOUS:
#ifdef RGBLIGHT_ENABLE
if (rgb_layer_change) {
rgblight_sethsv_yellow();
rgblight_mode(1);
}
#endif // RGBLIGHT_ENABLE
break;
case _MACROS: case _MACROS:
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
if (rgb_layer_change) { if (userspace_config.rgb_layer_change) {
rgblight_sethsv_orange(); rgblight_sethsv_orange();
userspace_config.is_overwatch ? rgblight_mode(17) : rgblight_mode(18); userspace_config.is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
} }
#endif // RGBLIGHT_ENABLE #endif // RGBLIGHT_ENABLE
break; break;
case _MEDIA: case _MEDIA:
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
if (rgb_layer_change) { if (userspace_config.rgb_layer_change) {
rgblight_sethsv_chartreuse(); rgblight_sethsv_chartreuse();
rgblight_mode(22); rgblight_mode(22);
} }
#endif // RGBLIGHT_ENABLE #endif // RGBLIGHT_ENABLE
break; break;
case _GAMEPAD: case _GAMEPAD:
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
if (rgb_layer_change) { if (userspace_config.rgb_layer_change) {
rgblight_sethsv_orange(); rgblight_sethsv_orange();
rgblight_mode(17); rgblight_mode(17);
} }
#endif // RGBLIGHT_ENABLE #endif // RGBLIGHT_ENABLE
break; break;
case _DIABLO: case _DIABLO:
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
if (rgb_layer_change) { if (userspace_config.rgb_layer_change) {
rgblight_sethsv_red(); rgblight_sethsv_red();
rgblight_mode(5); rgblight_mode(5);
} }
#endif // RGBLIGHT_ENABLE #endif // RGBLIGHT_ENABLE
break; break;
case _RAISE: case _RAISE:
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
if (rgb_layer_change) { if (userspace_config.rgb_layer_change) {
rgblight_sethsv_yellow(); rgblight_sethsv_yellow();
rgblight_mode(5); rgblight_mode(5);
} }
#endif // RGBLIGHT_ENABLE #endif // RGBLIGHT_ENABLE
break; break;
case _LOWER: case _LOWER:
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
if (rgb_layer_change) { if (userspace_config.rgb_layer_change) {
rgblight_sethsv_orange(); rgblight_sethsv_orange();
rgblight_mode(5); rgblight_mode(5);
} }
#endif // RGBLIGHT_ENABLE #endif // RGBLIGHT_ENABLE
break; break;
case _ADJUST: case _ADJUST:
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
if (rgb_layer_change) { if (userspace_config.rgb_layer_change) {
rgblight_sethsv_red(); rgblight_sethsv_red();
rgblight_mode(23); rgblight_mode(23);
} }
#endif // RGBLIGHT_ENABLE #endif // RGBLIGHT_ENABLE
break;
case _COVECUBE:
#ifdef RGBLIGHT_ENABLE
if (rgb_layer_change) {
rgblight_sethsv_green();
rgblight_mode(2);
}
#endif // RGBLIGHT_ENABLE
break; break;
default: // for any other layers, or the default layer default: // for any other layers, or the default layer
if (default_layer & (1UL << _COLEMAK)) { if (default_layer & (1UL << _COLEMAK)) {
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
if (rgb_layer_change) { rgblight_sethsv_magenta(); } if (userspace_config.rgb_layer_change) { rgblight_sethsv_magenta(); }
#endif // RGBLIGHT_ENABLE #endif // RGBLIGHT_ENABLE
} }
else if (default_layer & (1UL << _DVORAK)) { else if (default_layer & (1UL << _DVORAK)) {
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
if (rgb_layer_change) { rgblight_sethsv_green(); } if (userspace_config.rgb_layer_change) { rgblight_sethsv_green(); }
#endif // RGBLIGHT_ENABLE #endif // RGBLIGHT_ENABLE
} }
else if (default_layer & (1UL << _WORKMAN)) { else if (default_layer & (1UL << _WORKMAN)) {
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
if (rgb_layer_change) { rgblight_sethsv_goldenrod(); } if (userspace_config.rgb_layer_change) { rgblight_sethsv_goldenrod(); }
#endif // RGBLIGHT_ENABLE #endif // RGBLIGHT_ENABLE
} }
else { else {
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
if (rgb_layer_change) { rgblight_sethsv_teal(); } if (userspace_config.rgb_layer_change) { rgblight_sethsv_teal(); }
#endif // RGBLIGHT_ENABLE #endif // RGBLIGHT_ENABLE
} }
if (biton32(state) == _MODS) { // If the non-OSM layer is enabled, then breathe if (biton32(state) == _MODS) { // If the non-OSM layer is enabled, then breathe
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
if (rgb_layer_change) { rgblight_mode(2); } if (userspace_config.rgb_layer_change) { rgblight_mode(2); }
#endif // RGBLIGHT_ENABLE #endif // RGBLIGHT_ENABLE
} else { // otherwise, stay solid } else { // otherwise, stay solid
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
if (rgb_layer_change) { rgblight_mode(1); } if (userspace_config.rgb_layer_change) { rgblight_mode(1); }
#endif // RGBLIGHT_ENABLE #endif // RGBLIGHT_ENABLE
} }
break; break;
} }

View File

@ -27,12 +27,8 @@ enum userspace_layers {
_DVORAK, _DVORAK,
_WORKMAN, _WORKMAN,
_MODS, _MODS,
_NAV,
_COVECUBE,
_SYMB,
_GAMEPAD, _GAMEPAD,
_DIABLO, _DIABLO,
_MOUS,
_MACROS, _MACROS,
_MEDIA, _MEDIA,
_LOWER, _LOWER,
@ -49,7 +45,6 @@ enum userspace_layers {
// RGB color codes are no longer located here anymore. Instead, you will want to // RGB color codes are no longer located here anymore. Instead, you will want to
// head to https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight_list.h // head to https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight_list.h
extern bool rgb_layer_change;
extern bool clicky_enable; extern bool clicky_enable;
#ifdef RGBLIGHT_ENABLE #ifdef RGBLIGHT_ENABLE
@ -59,10 +54,11 @@ void rgblight_sethsv_default_helper(uint8_t index);
#define EECONFIG_USERSPACE (uint8_t *)20 #define EECONFIG_USERSPACE (uint8_t *)20
typedef union { typedef union {
uint32_t raw; uint8_t raw;
struct { struct {
bool clicky_enable :1; bool clicky_enable :1;
bool is_overwatch :1; bool rgb_layer_change :1;
bool is_overwatch :1;
}; };
} userspace_config_t; } userspace_config_t;
@ -166,10 +162,10 @@ enum {
#define LAYOUT KEYMAP #define LAYOUT KEYMAP
#endif #endif
#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__) #define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)
#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__) #define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__) #define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__)
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
// Blocks for each of the four major keyboard layouts // Blocks for each of the four major keyboard layouts
@ -236,6 +232,8 @@ enum {
#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 #define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5
#define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0 #define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0
#define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
#define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
// Since we have 4 default layouts (QWERTY, DVORAK, COLEMAK and WORKMAN), // Since we have 4 default layouts (QWERTY, DVORAK, COLEMAK and WORKMAN),
// this allows us to quickly modify the bottom row for all of the layouts // this allows us to quickly modify the bottom row for all of the layouts
@ -245,9 +243,9 @@ enum {
#define ___________ERGODOX_BOTTOM_RIGHT____________ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT #define ___________ERGODOX_BOTTOM_RIGHT____________ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
#define __________________ERGODOX_THUMB_CLUSTER_____________________ ALT_T(KC_APP), KC_LGUI, KC_RGUI, CTL_T(KC_ESCAPE), \ #define __________________ERGODOX_THUMB_CLUSTER_____________________ ALT_T(KC_APP), KC_LGUI, KC_RGUI, CTL_T(KC_ESCAPE), \
KC_HOME, KC_PGUP, \ KC_HOME, KC_PGUP, \
KC_SPACE,KC_BSPC, KC_END, KC_PGDN, KC_DEL, KC_ENTER LT(_LOWER, KC_SPACE),KC_BSPC, KC_END, KC_PGDN, KC_DEL, LT(_RAISE, KC_ENTER)
#endif // !USERSPACE #endif // !USERSPACE

View File

@ -162,7 +162,7 @@ This tells us where in the EEPROM that the data structure is located, and this s
```c ```c
typedef union { typedef union {
uint32_t raw; uint8_t raw;
struct { struct {
bool clicky_enable :1; bool clicky_enable :1;
bool is_overwatch :1; bool is_overwatch :1;
@ -174,3 +174,23 @@ Then, in your C file, you want to add: `userspace_config_t userspace_config;`, a
From there, you'd want to use the data structure (such as `userspace_config.is_overwatch`) when you want to check this value. From there, you'd want to use the data structure (such as `userspace_config.is_overwatch`) when you want to check this value.
And if you want to update it, update directly and then use `eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);` to write the value back to the EEPROM. And if you want to update it, update directly and then use `eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);` to write the value back to the EEPROM.
Pro Micro Hacking
-----------------
Well, you can get the QMK DFU bootloader working on the ProMicro. But you need to change fuses.
What worked to get into the firmware properly was:
```
Low: 0x5E High: 0x99 Extended: 0xF3 Lock: 0xFF
```
But some of the columns and rows didn't work, like the pin mapping was wrong. Even when setting the bootloader settings.
This is here for future reference. And the default fuse settings I believe were:
```
Low: 0xFF High: 0xD8 Extended: 0xC3 Lock: 0x3F
```

View File

@ -5,3 +5,7 @@ EXTRAFLAGS += -flto
ifeq ($(strip $(NO_SECRETS)), yes) ifeq ($(strip $(NO_SECRETS)), yes)
OPT_DEFS += -DNO_SECRETS OPT_DEFS += -DNO_SECRETS
endif endif
ifeq ($(strip $(INDICATOR_LIGHTS)), yes)
OPT_DEFS += -DINDICATOR_LIGHTS
endif