#include QMK_KEYBOARD_H #include "seth.h" extern backlight_config_t backlight_config; enum layers { _QWERTY, _LOWER, _RAISE, _ADJUST }; enum custom_keycodes { QWERTY = SAFE_RANGE, LOWER, RAISE, ADJUST, }; #define KC_ KC_TRNS #define KC_LOWR LOWER #define KC_RASE RAISE #define KC_RST RESET #define KC_BL_S BL_STEP #define KC_RTOG RGB_TOG #define KC_RMOD RGB_MOD #define KC_RHUI RGB_HUI #define KC_RHUD RGB_HUD #define KC_RSAI RGB_SAI #define KC_RSAD RGB_SAD #define KC_RVAI RGB_VAI #define KC_RVAD RGB_VAD #define KC_VK VLK_TOG const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = LAYOUT_kc( //,----+----+----+----+----+----. ,----+----+----+----+----+----. ECAP, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,MINS, //|----+----+----+----+----+----| |----+----+----+----+----+----| TAB , Q , W , E , R , T , Y , U , I , O , P ,DEL , //|----+----+----+----+----+----| |----+----+----+----+----+----| LSFT, A , S , D , F , G , H , J , K , L ,SCLN,QUOT, //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| LCTL, Z , X , C , V , B , SPC, RASE, N , M ,COMM,DOT ,SLSH,RSFT, //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' LGUI,LOWR, SPC, BSPC ,ENT,LALT // `----+----+----' `----+----+----' ), [_LOWER] = LAYOUT_kc( //,----+----+----+----+----+----. ,----+----+----+----+----+----. TILD,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN,BSPC, //|----+----+----+----+----+----| |----+----+----+----+----+----| RST , , , UP , , , GRV , P7 , P8 , P9 , , , //|----+----+----+----+----+----| |----+----+----+----+----+----| DEL , ,LEFT,DOWN,RGHT,LBRC, RBRC, P4 , P5 , P6 ,PLUS,PIPE, //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| BL_S, , , , ,LCBR,LPRN, RPRN,RCBR, P1 , P2 , P3 ,MINS, , //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' , ,LPRN , DEL , , P0 // `----+----+----' `----+----+----' ), [_RAISE] = LAYOUT_kc( //,----+----+----+----+----+----. ,----+----+----+----+----+----. F12 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 , //|----+----+----+----+----+----| |----+----+----+----+----+----| , , , , , , , , , , , , //|----+----+----+----+----+----| |----+----+----+----+----+----| ,MPRV,MNXT,VOLU,PGUP,UNDS, EQL ,HOME, , , ,BSLS, //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| MUTE,MSTP,MPLY,VOLD,PGDN,MINS, , ,PLUS,END , , , , , //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' , , , , , // `----+----+----' `----+----+----' ), [_ADJUST] = LAYOUT_kc( //,----+----+----+----+----+----. ,----+----+----+----+----+----. , , , , , , , , , , , , //|----+----+----+----+----+----| |----+----+----+----+----+----| RTOG,RMOD,RHUI,RSAI,RVAI, , , , , , , , //|----+----+----+----+----+----| |----+----+----+----+----+----| VK, ,RHUD,RSAD,RVAD, , , , , , , , //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----| BL_S,RST , , , , , , , , , , , , , //`----+----+----+--+-+----+----+----/ \----+----+----+----+----+----+----' , , , , , // `----+----+----' `----+----+----' ) }; void keyboard_pre_init_user(void) { // Make sure the red LEDs don't light setPinOutput(D5); writePinHigh(D5); setPinOutput(B0); writePinHigh(B0); } void keyboard_post_init_user(void){ rgblight_enable_noeeprom(); // enable the RGBs rgblight_sethsv_noeeprom_red(); // set to red rgblight_mode_noeeprom(4); // set to breathing } void suspend_power_down_user(void){ backlight_config.enable = false; // disable LED backlight } void suspend_wakeup_init_user(void){ backlight_config.enable = true; // enable LED backlight } bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case QWERTY: if (record->event.pressed) { set_single_persistent_default_layer(_QWERTY); } return false; break; case LOWER: if (record->event.pressed) { layer_on(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } return false; break; case RAISE: if (record->event.pressed) { layer_on(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } return false; break; case ADJUST: if (record->event.pressed) { layer_on(_ADJUST); } else { layer_off(_ADJUST); } return false; break; } return true; } uint32_t layer_state_set_user(uint32_t state){ switch(biton32(state)) { case _QWERTY: rgblight_sethsv_noeeprom(HSV_RED); break; case _LOWER: rgblight_sethsv_noeeprom(HSV_GREEN); break; case _RAISE: rgblight_sethsv_noeeprom(HSV_BLUE); break; case _ADJUST: rgblight_sethsv_noeeprom(HSV_ORANGE); break; default: rgblight_mode_noeeprom(28); break; } return state; }