/* Copyright 2018 Kenneth Aloysius This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include QMK_KEYBOARD_H enum layers { _LAYER0, _LAYER1, _LAYER2, _LAYER3, _LAYER4 }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LAYER0] = LAYOUT( /* ┌─────────┬─────────┬─────────┐ */ KC_UP, TO(_LAYER1), /* ├─────────┼─────────┼─────────┤ */ KC_LEFT, KC_DOWN, KC_RIGHT /* └─────────┴─────────┴─────────┘ */ ), [_LAYER1] = LAYOUT( /* ┌─────────┬─────────┬─────────┐ */ KC_PGUP, TO(_LAYER2), /* ├─────────┼─────────┼─────────┤ */ KC_HOME, KC_PGDN, KC_END /* └─────────┴─────────┴─────────┘ */ ), [_LAYER2] = LAYOUT( /* ┌─────────┬─────────┬─────────┐ */ KC_MSEL, TO(_LAYER3), /* ├─────────┼─────────┼─────────┤ */ KC_MPRV, KC_MPLY, KC_MNXT /* └─────────┴─────────┴─────────┘ */ ), [_LAYER3] = LAYOUT( /* ┌─────────┬─────────┬─────────┐ */ KC_MS_U, TO(_LAYER4), /* ├─────────┼─────────┼─────────┤ */ KC_MS_L, KC_MS_D, KC_MS_R /* └─────────┴─────────┴─────────┘ */ ), [_LAYER4] = LAYOUT( /* ┌─────────┬─────────┬─────────┐ */ XXXXXXX, TO(_LAYER0), /* ├─────────┼─────────┼─────────┤ */ RGB_TOG, BL_TOGG, BL_STEP /* └─────────┴─────────┴─────────┘ */ ), }; void eeconfig_init_user(void) { // use the non noeeprom versions, to write these values to EEPROM too rgblight_enable(); rgblight_mode(RGBLIGHT_MODE_BREATHING+1); backlight_enable(); } void keyboard_post_init_user(void) { //layer_state_set_user is not called for inital state - set it here rgblight_sethsv_noeeprom_white(); } layer_state_t layer_state_set_user(layer_state_t state) { switch (get_highest_layer(state)) { case _LAYER1: rgblight_sethsv_noeeprom_cyan(); break; case _LAYER2: rgblight_sethsv_noeeprom_magenta(); break; case _LAYER3: rgblight_sethsv_noeeprom_red(); break; case _LAYER4: rgblight_sethsv_noeeprom_orange(); break; case _LAYER0: default: // for any other layers, or the default layer rgblight_sethsv_noeeprom_white(); break; } return state; }