qmk-keychron-q3-colemak-dh/users/wanleg/wanleg.c
2022-11-15 16:52:01 +00:00

177 lines
4.4 KiB
C

#include "wanleg.h"
// Defines actions for my global custom keycodes. Defined in wanleg.h file
// Then runs the _keymap's record handier if not processed here
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QWERTY:
if (record->event.pressed) {
set_single_persistent_default_layer(_QW);
#if defined(RGBLIGHT_ENABLE)
rgblight_sethsv_noeeprom(0,0,128);
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING);
#endif
}
return false;
break;
case GHERKIN:
if (record->event.pressed) {
set_single_persistent_default_layer(_GK);
#if defined(RGBLIGHT_ENABLE)
rgblight_sethsv_noeeprom(128,255,64);
#endif
}
return false;
break;
case gGHERKIN:
if (record->event.pressed) {
set_single_persistent_default_layer(gGK);
#if defined(RGBLIGHT_ENABLE)
rgblight_sethsv_noeeprom(128,255,128);
rgblight_mode_noeeprom(RGBLIGHT_MODE_KNIGHT);
#endif
}
return false;
break;
case ONEHAND:
if (record->event.pressed) {
set_single_persistent_default_layer(ONE);
}
return false;
break;
case NUMPAD:
if (record->event.pressed) {
set_single_persistent_default_layer(PAD);
}
return false;
break;
case GHERKIN50:
if (record->event.pressed) {
set_single_persistent_default_layer(GK50);
}
return false;
break;
case SUBTER:
if (record->event.pressed) {
layer_on(SUB);
} else {
layer_off(SUB);
}
return false;
break;
case SUPRA:
if (record->event.pressed) {
layer_on(SUP);
} else {
layer_off(SUP);
}
return false;
break;
case NUMBER:
if (record->event.pressed) {
layer_on(NUM);
} else {
layer_off(NUM);
}
return false;
break;
case DIRECTION:
if (record->event.pressed) {
layer_on(DIR);
} else {
layer_off(DIR);
}
return false;
break;
case ETCETERA:
if (record->event.pressed) {
layer_on(ETC);
} else {
layer_off(ETC);
}
return false;
break;
case gNUMBER:
if (record->event.pressed) {
layer_on(gNUM);
} else {
layer_off(gNUM);
}
return false;
break;
case gDIRECTION:
if (record->event.pressed) {
layer_on(gDIR);
} else {
layer_off(gDIR);
}
return false;
break;
case gETCETERA:
if (record->event.pressed) {
layer_on(gETC);
} else {
layer_off(gETC);
}
return false;
break;
case FUNCTION:
if (record->event.pressed) {
layer_on(_FN);
} else {
layer_off(_FN);
}
return false;
break;
//on RESET, underglow red if present
case QK_BOOT:
if (record->event.pressed) {
#if defined(RGBLIGHT_ENABLE)
rgblight_enable_noeeprom(); // enables Rgb, without saving settings
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
rgblight_sethsv_noeeprom(HSV_RED);
#endif
}
return true; // Let QMK send the press/release events as normal
break;
}
return true;
}
/// Turn off LEDs on ProMicros of Let's Split ///
// LEDs only on by default on Let's Split
// Add reconfigurable functions here, for keymap customization
// This allows for a global, userspace functions, and continued
// customization of the keymap. Use _keymap instead of _user
// functions in the keymaps
__attribute__ ((weak))
void matrix_init_keymap(void) {}
// Call user matrix init, then call the keymap's init function
void matrix_init_user(void) {
//turn off pro micro LEDs
#if defined(KEYBOARD_lets_split_rev2)
DDRD &= ~(1<<5);
PORTD &= ~(1<<5);
DDRB &= ~(1<<0);
PORTB &= ~(1<<0);
#endif
//disable backlight breathing for keyboard using random flashing RGB LEDs for backlight
//(breathing provides insufficient power to integrated LED IC)
#if defined(KEYBOARD_kbdfans_kbd6x) && defined(BACKLIGHT_BREATHING)
breathing_disable();
#endif
matrix_init_keymap();
}
//at end of firmware startup process, change powerup default layer and underglow colour for kbd6x
void keyboard_post_init_user(void) {
#if defined(KEYBOARD_kbdfans_kbd6x)
set_single_persistent_default_layer(_QW);
rgblight_mode_noeeprom(RGBLIGHT_MODE_SNAKE + 5);
rgblight_sethsv_noeeprom(0,0,128);
#endif
}