You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

137 lines
5.3 KiB

#include "ergodash.h"
#include "action_layer.h"
#include "eeconfig.h"
extern keymap_config_t keymap_config;
#define _QWERTY 0
#define _LOWER 1
#define _RAISE 2
#define _ADJUST 16
enum custom_keycodes {
QWERTY = SAFE_RANGE,
LOWER,
RAISE,
ADJUST,
};
// Fillers to make layering more clear
#define KC_ KC_TRNS
#define _______ KC_TRNS
#define XXXXXXX KC_NO
#define KC_AJST ADJUST
#define KC_LOWR LOWER
#define KC_RASE RAISE
#define KC_JPN LALT(KC_GRV)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* QWERTY
*/
[_QWERTY] = KC_KEYMAP(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
ESC, 1, 2, 3, 4, 5, LBRC, RBRC, 6, 7, 8, 9, 0, CAPS,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
GRV , Q , W , E , R , T , MINS, EQL, Y , U , I , O , P ,BSLS,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
TAB , A , S , D , F , G ,DEL , BSPC, H , J , K , L ,SCLN,QUOT,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
LSFT, Z , X , C , V , B ,JPN, ENT, N , M ,COMM, DOT,SLSH,RSFT,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
LCTL,LGUI,LALT, AJST, LOWR,SPC, ENT,RASE, LEFT,DOWN, UP ,RGHT
//`----+----+----+----+----+----+----' `----+----+----+----+----+----+----'
),
/* Lower
*/
[_LOWER] = KC_KEYMAP(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
F11, F1, F2, F3, F4, F5, LCBR, RCBR, F6, F7, F8, F9, F10, F12,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
TILD,EXLM, AT ,HASH, DLR,PERC,UNDS, PLUS,CIRC,AMPR,ASTR,LPRN,RPRN,PIPE,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
TAB , 1 , 2 , 3 , 4 , 5 ,DEL , BSPC, H , J , K , L ,COLN, DQT,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
LSFT, 6 , 7 , 8 , 9 , 0 ,JPN, ENT, N , M , LT , GT ,QUES,RSFT,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
LCTL,LGUI,LALT, AJST, LOWR,SPC, ENT,RASE, HOME,PGDN,PGUP, END
//`----+----+----+----+----+----+----' `----+----+----+----+----+----+----'
),
/* Raise
*/
[_RAISE] = KC_KEYMAP(
//,----+----+----+----+----+----+----. ,----+----+----+----+----+----+----.
F11, F1, F2, F3, F4, F5, LCBR, RCBR, F6, F7, F8, F9, F10, F12,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
TILD,EXLM, AT ,HASH, DLR,PERC,UNDS, PLUS,CIRC,AMPR,ASTR,LPRN,RPRN,PIPE,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
TAB , 1 , 2 , 3 , 4 , 5 ,DEL , BSPC, H , J , K , L ,COLN, DQT,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
LSFT, 6 , 7 , 8 , 9 , 0 ,JPN, ENT, N , M , LT , GT ,QUES,RSFT,
//|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
LCTL,LGUI,LALT, AJST, LOWR,SPC, ENT,RASE, HOME,PGDN,PGUP, END
//`----+----+----+----+----+----+----' `----+----+----+----+----+----+----'
),
[_ADJUST] = KEYMAP(
_______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, \
_______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI,_______, _______, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, \
_______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______ \
)
};
#ifdef AUDIO_ENABLE
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
#endif
void persistent_default_layer_set(uint16_t default_layer) {
eeconfig_update_default_layer(default_layer);
default_layer_set(default_layer);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QWERTY:
if (record->event.pressed) {
#ifdef AUDIO_ENABLE
PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
#endif
persistent_default_layer_set(1UL<<_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;
}