201 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			201 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#include QMK_KEYBOARD_H
 | 
						|
 | 
						|
#define _QWERTY 0
 | 
						|
#define _LOWER 3
 | 
						|
#define _RAISE 4
 | 
						|
#define _ADJUST 16
 | 
						|
 | 
						|
enum custom_keycodes {
 | 
						|
  LOWER = SAFE_RANGE,
 | 
						|
  RAISE,
 | 
						|
  ADJUST,
 | 
						|
  RGBRST
 | 
						|
};
 | 
						|
 | 
						|
#define KC______ KC_TRNS
 | 
						|
#define KC_XXXXX KC_NO
 | 
						|
#define KC_KANJI KC_GRV
 | 
						|
 | 
						|
#define KC_LOWER LOWER
 | 
						|
#define KC_RAISE RAISE
 | 
						|
#define KC_ADJST ADJUST
 | 
						|
 | 
						|
#define KC_RST   RESET
 | 
						|
 | 
						|
#define KC_LRST  RGBRST
 | 
						|
#define KC_LTOG  RGB_TOG
 | 
						|
#define KC_LHUI  RGB_HUI
 | 
						|
#define KC_LHUD  RGB_HUD
 | 
						|
#define KC_LSAI  RGB_SAI
 | 
						|
#define KC_LSAD  RGB_SAD
 | 
						|
#define KC_LVAI  RGB_VAI
 | 
						|
#define KC_LVAD  RGB_VAD
 | 
						|
#define KC_LSMOD RGB_SMOD
 | 
						|
#define KC_BTOG  BL_TOGG
 | 
						|
#define KC_BINC  BL_INC
 | 
						|
#define KC_BDEC  BL_DEC
 | 
						|
// #define KC_BRTG  BL_BRTG
 | 
						|
 | 
						|
#define KC_KNRM  AG_NORM
 | 
						|
#define KC_KSWP  AG_SWAP
 | 
						|
 | 
						|
// Layer Mode aliases
 | 
						|
// #define KC_L_LO  MO(_LOWER)
 | 
						|
// #define KC_L_RA  MO(_RAISE)
 | 
						|
// #define KC_L_AD  MO(_ADJUST)
 | 
						|
#define KC_TBSF  LSFT_T(KC_TAB)
 | 
						|
// #define KC_SPSF  LSFT_T(KC_SPC)
 | 
						|
// #define KC_GUAP  LALT_T(KC_APP)
 | 
						|
 | 
						|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
						|
  [_QWERTY] = KC_LAYOUT_ortho_4x12( \
 | 
						|
  //,-----------------------------------------------------------------------------------.
 | 
						|
        ESC,     Q,     W,     E,     R,     T,     Y,     U,     I,     O,     P,  MINS,\
 | 
						|
  //|------+------+------+------+------+------|------+------+------+------+------+------|
 | 
						|
       TBSF,     A,     S,     D,     F,     G,     H,     J,     K,     L,  SCLN,   ENT,\
 | 
						|
  //|------+------+------+------+------+------|------+------+------+------+------+------|
 | 
						|
       LSFT,     Z,     X,     C,     V,     B,     N,     M,  COMM,   DOT,    UP,  RSFT,\
 | 
						|
  //|------+------+------+------+------+------|------+------+------+------+------+------|
 | 
						|
      LCTRL,  LALT,  LGUI, ADJST, LOWER,  BSPC,   SPC, RAISE,   APP,  LEFT,  DOWN,  RGHT \
 | 
						|
  //|------+------+------+------+------+-------------+------+------+------+------+------|
 | 
						|
  ),
 | 
						|
 | 
						|
  [_LOWER] = KC_LAYOUT_ortho_4x12( \
 | 
						|
  //,-----------------------------------------------------------------------------------.
 | 
						|
        TAB,    F1,    F2,    F3,    F4,    F5, XXXXX,  MINS,   EQL,  JYEN,  LBRC,  RBRC,\
 | 
						|
  //|------+------+------+------+------+------|------+------+------+------+------+------|
 | 
						|
      _____,    F6,    F7,    F8,    F9,   F10, XXXXX, XXXXX, XXXXX,  SCLN,  QUOT,  BSLS,\
 | 
						|
  //|------+------+------+------+------+------|------+------+------+------+------+------|
 | 
						|
      _____,   F11,   F12, XXXXX, KANJI,   ENT, XXXXX, XXXXX,  COMM,   DOT,  SLSH,    RO,\
 | 
						|
  //|------+------+------+------+------+-------------+------+------+------+------+------|
 | 
						|
      _____, _____, _____, _____, _____,   DEL, _____, _____, _____, _____, _____, _____ \
 | 
						|
  //|------+------+------+------+------+-------------+------+------+------+------+------|
 | 
						|
  ),
 | 
						|
 | 
						|
  [_RAISE] = KC_LAYOUT_ortho_4x12( \
 | 
						|
  //,-----------------------------------------------------------------------------------.
 | 
						|
      _____,     1,     2,     3,     4,     5,     6,     7,     8,     9,     0,  MINS,\
 | 
						|
  //|------+------+------+------+------+------|------+------+------+------+------+------|
 | 
						|
      _____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,     4,     5,     6,  QUOT,  PLUS,\
 | 
						|
  //|------+------+------+------+------+------|------+------+------+------+------+------|
 | 
						|
      _____, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX,     0,     1,     2,     3,   DOT,  SLSH,\
 | 
						|
  //|------+------+------+------+------+-------------+------+------+------+------+------|
 | 
						|
      _____, _____, _____, _____, _____,  BSPC, _____, _____, _____, _____, _____, _____ \
 | 
						|
  //|------+------+------+------+------+-------------+------+------+------+------+------|
 | 
						|
  ),
 | 
						|
 | 
						|
  [_ADJUST] = KC_LAYOUT_ortho_4x12( \
 | 
						|
  //,-----------------------------------------------------------------------------------.
 | 
						|
      XXXXX,   RST,  LRST,  KNRM,  KSWP, XXXXX, XXXXX,  WH_L,  WH_U,  HOME,  PGUP, XXXXX,\
 | 
						|
  //|------+------+------+------+------+------|------+------+------+------+------+------|
 | 
						|
      XXXXX,  LTOG,  LHUI,  LSAI,  LVAI,  BTOG,  BINC,  WH_R,  WH_D,   END,  PGDN, XXXXX,\
 | 
						|
  //|------+------+------+------+------+------|------+------+------+------+------+------|
 | 
						|
      XXXXX, LSMOD,  LHUD,  LSAD,  LVAD, XXXXX,  BDEC, XXXXX,  BTN1,  BTN2,  MS_U, XXXXX,\
 | 
						|
  //|------+------+------+------+------+-------------+------+------+------+------+------|
 | 
						|
      _____, _____, _____, _____, _____, XXXXX, XXXXX, _____, _____,  MS_L,  MS_D,  MS_R \
 | 
						|
  //|------+------+------+------+------+-------------+------+------+------+------+------|
 | 
						|
  )
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
#ifdef BACKLIGHT_ENABLE
 | 
						|
  extern backlight_config_t backlight_config;
 | 
						|
 | 
						|
  inline void enable_backright(bool on) {
 | 
						|
      backlight_config.enable = on;
 | 
						|
      if (backlight_config.raw == 1) // enabled but level = 0
 | 
						|
          backlight_config.level = 1;
 | 
						|
      eeconfig_update_backlight(backlight_config.raw);
 | 
						|
      // dprintf("backlight toggle: %u\n", backlight_config.enable);
 | 
						|
      backlight_set(backlight_config.enable ? backlight_config.level : 0);
 | 
						|
  }
 | 
						|
 | 
						|
  uint8_t bl_breath_count;
 | 
						|
  uint8_t bl_breath_speed = 10;
 | 
						|
  int8_t bl_breath_updown = 1;
 | 
						|
  bool bl_breath_on;
 | 
						|
  backlight_config_t bl_breath_backup;
 | 
						|
 | 
						|
  void bl_breath_start(uint8_t speed) {
 | 
						|
 | 
						|
    bl_breath_on = true;
 | 
						|
    bl_breath_speed = speed;
 | 
						|
    bl_breath_backup = backlight_config;
 | 
						|
  }
 | 
						|
 | 
						|
  void bl_breath_end(void) {
 | 
						|
 | 
						|
    bl_breath_on = false;
 | 
						|
    backlight_config = bl_breath_backup;
 | 
						|
    eeconfig_update_backlight(backlight_config.raw);
 | 
						|
    backlight_set(backlight_config.enable ? backlight_config.level : 0);
 | 
						|
  }
 | 
						|
 | 
						|
  void bl_breath_update(void) {
 | 
						|
 | 
						|
    if (bl_breath_on) {
 | 
						|
      ++bl_breath_count;
 | 
						|
      if (bl_breath_count > bl_breath_speed) {
 | 
						|
        bl_breath_count = 0;
 | 
						|
 | 
						|
        backlight_config.level += bl_breath_updown;
 | 
						|
        bl_breath_updown = (backlight_config.level > BACKLIGHT_LEVELS) ? -1 :
 | 
						|
                          (backlight_config.level <= 0) ? 1 :
 | 
						|
                          bl_breath_updown;
 | 
						|
        enable_backright(true);
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  #define BL_BREATH_START bl_breath_start
 | 
						|
  #define BL_BREATH_END bl_breath_end
 | 
						|
  #define BL_BREATH_UPDATE bl_breath_update
 | 
						|
 | 
						|
#else
 | 
						|
 | 
						|
  #define BL_BREATH_START(a)
 | 
						|
  #define BL_BREATH_END()
 | 
						|
  #define BL_BREATH_UPDATE()
 | 
						|
#endif
 | 
						|
 | 
						|
// Loop
 | 
						|
void matrix_scan_user(void) {
 | 
						|
 | 
						|
  BL_BREATH_UPDATE();
 | 
						|
}
 | 
						|
 | 
						|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
						|
 | 
						|
  switch (keycode) {
 | 
						|
    case LOWER:
 | 
						|
      if (record->event.pressed) {
 | 
						|
        BL_BREATH_START(50);
 | 
						|
        layer_on(_LOWER);
 | 
						|
      } else {
 | 
						|
        BL_BREATH_END();
 | 
						|
        layer_off(_LOWER);
 | 
						|
      }
 | 
						|
      break;
 | 
						|
    case RAISE:
 | 
						|
      if (record->event.pressed) {
 | 
						|
        BL_BREATH_START(100);
 | 
						|
        layer_on(_RAISE);
 | 
						|
      } else {
 | 
						|
        BL_BREATH_END();
 | 
						|
        layer_off(_RAISE);
 | 
						|
      }
 | 
						|
      break;
 | 
						|
    case ADJUST:
 | 
						|
      if (record->event.pressed) {
 | 
						|
        layer_on(_ADJUST);
 | 
						|
      } else {
 | 
						|
        layer_off(_ADJUST);
 | 
						|
      }
 | 
						|
      break;
 | 
						|
    default:
 | 
						|
      return true;
 | 
						|
  }
 | 
						|
 | 
						|
  return false;
 | 
						|
}
 |