Created
March 6, 2019 01:23
-
-
Save fdidron/37ad2cb50e2271a174e391b2b39a4257 to your computer and use it in GitHub Desktop.
Ergodox EZ: Disable autoshift per layer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "ergodox_ez.h" | |
#include "debug.h" | |
#include "action_layer.h" | |
#include "version.h" | |
#include "keymap_german.h" | |
#include "keymap_nordic.h" | |
#include "keymap_french.h" | |
#include "keymap_spanish.h" | |
enum custom_keycodes { | |
PLACEHOLDER = SAFE_RANGE, // can always be here | |
EPRM, | |
RGB_SLD, | |
}; | |
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |
[0] = LAYOUT_ergodox(KC_ESCAPE,KC_EXLM,KC_AT,KC_HASH,KC_DLR,KC_PERC,KC_TRANSPARENT,KC_TRANSPARENT,KC_QUOTE,KC_COMMA,KC_DOT,KC_P,KC_Y,MO(3),MT(MOD_MEH, KC_TAB),KC_A,KC_O,KC_E,KC_U,KC_I,KC_LSHIFT,KC_SCOLON,KC_Q,KC_J,KC_K,KC_X,KC_TRANSPARENT,KC_LCTRL,KC_LALT,KC_LALT,KC_UP,KC_DOWN,MO(4),TO(2),KC_TRANSPARENT,KC_LGUI,KC_ENTER,MO(1),KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,KC_LBRACKET,KC_RBRACKET,KC_GRAVE,KC_EQUAL,KC_F,KC_G,KC_C,KC_R,KC_L,KC_TRANSPARENT,KC_D,KC_H,KC_T,KC_N,KC_S,KC_TRANSPARENT,KC_MINUS,KC_B,KC_M,KC_W,KC_V,KC_Z,RSFT_T(KC_TAB),KC_LEFT,KC_RIGHT,KC_SLASH,KC_BSLASH,KC_PLUS,KC_CIRC,KC_TRANSPARENT,KC_TRANSPARENT,KC_DELETE,KC_BSPACE,KC_SPACE), | |
[1] = LAYOUT_ergodox(KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_KP_SLASH,KC_KP_ASTERISK,KC_KP_MINUS,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_KP_7,KC_KP_8,KC_KP_9,KC_KP_PLUS,KC_TRANSPARENT,KC_TRANSPARENT,KC_KP_4,KC_KP_5,KC_KP_6,KC_KP_PLUS,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_KP_1,KC_KP_2,KC_KP_3,KC_KP_ENTER,KC_TRANSPARENT,KC_KP_0,KC_KP_0,KC_KP_DOT,KC_KP_ENTER,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT), | |
[2] = LAYOUT_ergodox(KC_ESCAPE,KC_1,KC_2,KC_3,KC_4,KC_5,KC_TRANSPARENT,KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_ENTER,KC_I,KC_A,KC_S,KC_D,KC_F,KC_G,KC_LSHIFT,KC_Z,KC_6,KC_7,KC_8,KC_9,KC_0,KC_LCTRL,KC_X,KC_J,KC_Y,KC_M,KC_LALT,TO(0),KC_TRANSPARENT,KC_SPACE,KC_C,KC_V,KC_TRANSPARENT,KC_TRANSPARENT,KC_KP_7,KC_KP_8,KC_KP_9,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_KP_4,KC_KP_5,KC_KP_6,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_KP_1,KC_KP_2,KC_KP_3,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_UP,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LEFT,KC_DOWN,KC_RIGHT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT), | |
[3] = LAYOUT_ergodox(KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_F6,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_F12,KC_TRANSPARENT,KC_TRANSPARENT,KC_AUDIO_VOL_DOWN,KC_AUDIO_MUTE,KC_AUDIO_VOL_UP,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MEDIA_PREV_TRACK,KC_MEDIA_PLAY_PAUSE,KC_MEDIA_NEXT_TRACK,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT), | |
[4] = LAYOUT_ergodox(KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_BTN1,KC_MS_UP,KC_MS_BTN2,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_LEFT,KC_MS_DOWN,KC_MS_RIGHT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT), | |
}; | |
bool suspended = false; | |
rgb_config_t rgb_matrix_config; | |
const uint8_t PROGMEM ledmap[][DRIVER_LED_TOTAL][3] = { | |
[1] = { {0,0,0}, {0,0,0}, {105,255,255}, {35,255,255}, {105,255,255}, {0,0,0}, {154,255,255}, {154,255,255}, {154,255,255}, {249,228,255}, {0,0,0}, {154,255,255}, {154,255,255}, {154,255,255}, {249,228,255}, {0,0,0}, {154,255,255}, {154,255,255}, {154,255,255}, {14,255,255}, {154,255,255}, {154,255,255}, {35,255,255}, {14,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, | |
[2] = { {0,0,0}, {105,255,255}, {105,255,255}, {105,255,255}, {0,0,0}, {0,0,0}, {105,255,255}, {105,255,255}, {105,255,255}, {0,0,0}, {0,0,0}, {105,255,255}, {105,255,255}, {105,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {154,255,255}, {0,0,0}, {0,0,0}, {154,255,255}, {154,255,255}, {154,255,255}, {0,0,0}, {14,255,255}, {14,255,255}, {14,255,255}, {14,255,255}, {14,255,255}, {35,255,255}, {105,255,255}, {35,255,255}, {154,255,255}, {35,255,255}, {35,255,255}, {35,255,255}, {154,255,255}, {154,255,255}, {154,255,255}, {14,255,255}, {14,255,255}, {14,255,255}, {14,255,255}, {35,255,255}, {35,255,255}, {35,255,255}, {35,255,255}, {35,255,255} }, | |
[3] = { {249,228,255}, {249,228,255}, {249,228,255}, {249,228,255}, {249,228,255}, {0,0,0}, {154,255,255}, {154,255,255}, {154,255,255}, {0,0,0}, {0,0,0}, {105,255,255}, {105,255,255}, {105,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {249,228,255}, {249,228,255}, {249,228,255}, {249,228,255}, {249,228,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, | |
}; | |
void set_leds_color( int layer) { | |
rgb_matrix_mode_noeeprom(1); | |
for (int i = 0; i < DRIVER_LED_TOTAL; i++) { | |
uint8_t val = pgm_read_byte(&ledmap[layer][i][2]); | |
HSV hsv = { | |
.h = pgm_read_byte(&ledmap[layer][i][0]), | |
.s = pgm_read_byte(&ledmap[layer][i][1]), | |
.v = val == 0 ? 0 : rgb_matrix_config.val | |
}; | |
RGB rgb = hsv_to_rgb( hsv ); | |
rgb_matrix_set_color( i, rgb.r, rgb.g, rgb.b ); | |
} | |
} | |
void rgb_matrix_indicators_user(void) { | |
if(suspended == false) { | |
uint8_t layer = biton32(layer_state); | |
switch (layer) { | |
case 0: | |
rgb_matrix_config.raw = eeprom_read_dword(EECONFIG_RGB_MATRIX); | |
rgb_matrix_mode_noeeprom(rgb_matrix_config.mode); | |
if(rgb_matrix_config.mode != 1) { | |
rgb_matrix_sethsv_noeeprom(rgb_matrix_config.hue, rgb_matrix_config.sat, rgb_matrix_config.val); | |
} | |
break; | |
case 1: | |
set_leds_color(1); | |
break; | |
case 2: | |
set_leds_color(2); | |
break; | |
case 3: | |
set_leds_color(3); | |
break; | |
} | |
} | |
} | |
const uint16_t PROGMEM fn_actions[] = { | |
[1] = ACTION_LAYER_TAP_TOGGLE(1) | |
}; | |
// leaving this in place for compatibilty with old keymaps cloned and re-compiled. | |
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |
{ | |
switch(id) { | |
case 0: | |
if (record->event.pressed) { | |
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); | |
} | |
break; | |
} | |
return MACRO_NONE; | |
}; | |
bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |
switch (keycode) { | |
// dynamically generate these. | |
case EPRM: | |
if (record->event.pressed) { | |
eeconfig_init(); | |
} | |
return false; | |
break; | |
case RGB_SLD: | |
if (record->event.pressed) { | |
rgblight_mode(1); | |
} | |
return false; | |
break; | |
} | |
return true; | |
} | |
uint32_t layer_state_set_user(uint32_t state) { | |
uint8_t layer = biton32(state); | |
ergodox_board_led_off(); | |
ergodox_right_led_1_off(); | |
ergodox_right_led_2_off(); | |
ergodox_right_led_3_off(); | |
switch (layer) { | |
case 1: | |
ergodox_right_led_1_on(); | |
break; | |
case 2: | |
ergodox_right_led_2_on(); | |
break; | |
case 3: | |
ergodox_right_led_3_on(); | |
break; | |
case 4: | |
ergodox_right_led_1_on(); | |
ergodox_right_led_2_on(); | |
break; | |
case 5: | |
ergodox_right_led_1_on(); | |
ergodox_right_led_3_on(); | |
break; | |
case 6: | |
ergodox_right_led_2_on(); | |
ergodox_right_led_3_on(); | |
break; | |
case 7: | |
ergodox_right_led_1_on(); | |
ergodox_right_led_2_on(); | |
ergodox_right_led_3_on(); | |
break; | |
default: | |
break; | |
} | |
if(layer == 2) { | |
autoshift_disable(); | |
} | |
else { | |
autoshift_enable(); | |
} | |
return state; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment