Migrate SHIFT_ESC and RGB fn_actions to Grave Escape and RGB keycodes (#13360)
				
					
				
			This commit is contained in:
		
							parent
							
								
									50d4dfd2e6
								
							
						
					
					
						commit
						82137e14f2
					
				
					 20 changed files with 22 additions and 1114 deletions
				
			
		| 
						 | 
					@ -11,8 +11,6 @@
 | 
				
			||||||
#define GUIOFF MAGIC_NO_GUI
 | 
					#define GUIOFF MAGIC_NO_GUI
 | 
				
			||||||
#define GUION MAGIC_UNNO_GUI
 | 
					#define GUION MAGIC_UNNO_GUI
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* TODO: create handy quick-ref list here for easy grokking of the actual shortcuts in place */
 | 
					/* TODO: create handy quick-ref list here for easy grokking of the actual shortcuts in place */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
| 
						 | 
					@ -64,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 * Hit MO(_FN) and Alt in that order to lock into the _FN layer.
 | 
					 * Hit MO(_FN) and Alt in that order to lock into the _FN layer.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
  [_DFT] = LAYOUT_mitchsplit( /* Basic QWERTY */
 | 
					  [_DFT] = LAYOUT_mitchsplit( /* Basic QWERTY */
 | 
				
			||||||
      F(0),    KC_1,    KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, \
 | 
					      KC_GESC, KC_1,    KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, \
 | 
				
			||||||
      KC_TAB,  KC_Q,    KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,  \
 | 
					      KC_TAB,  KC_Q,    KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS,  \
 | 
				
			||||||
      MO(_FN), KC_A,    KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,  \
 | 
					      MO(_FN), KC_A,    KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,  \
 | 
				
			||||||
      KC_LSFT, KC_Z,    KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, MO(_FN), \
 | 
					      KC_LSFT, KC_Z,    KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, MO(_FN), \
 | 
				
			||||||
| 
						 | 
					@ -169,37 +167,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    SHIFT_ESC,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(SHIFT_ESC),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  static uint8_t shift_esc_shift_mask;
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case SHIFT_ESC:
 | 
					 | 
				
			||||||
      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          add_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          add_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          del_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          del_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,8 +18,6 @@
 | 
				
			||||||
#include QMK_KEYBOARD_H
 | 
					#include QMK_KEYBOARD_H
 | 
				
			||||||
#include "turbomech.h"
 | 
					#include "turbomech.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define _QWERTY 0 //BASE layer
 | 
					#define _QWERTY 0 //BASE layer
 | 
				
			||||||
#define _FUNCTION 1 //Function layer
 | 
					#define _FUNCTION 1 //Function layer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -121,37 +119,3 @@ void led_set_user(uint8_t usb_led) {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    SHIFT_ESC,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(SHIFT_ESC),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  static uint8_t shift_esc_shift_mask;
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case SHIFT_ESC:
 | 
					 | 
				
			||||||
      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          add_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          add_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          del_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          del_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,9 +4,6 @@
 | 
				
			||||||
#include "rgblight.h"
 | 
					#include "rgblight.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Used for SHIFT_ESC
 | 
					 | 
				
			||||||
#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
					// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
				
			||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
					// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
				
			||||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
					// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
				
			||||||
| 
						 | 
					@ -64,37 +61,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
    KC_LEFT, KC_DOWN, KC_UP,   KC_RIGHT
 | 
					    KC_LEFT, KC_DOWN, KC_UP,   KC_RIGHT
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    SHIFT_ESC,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(SHIFT_ESC),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  static uint8_t shift_esc_shift_mask;
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case SHIFT_ESC:
 | 
					 | 
				
			||||||
      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          add_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          add_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          del_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          del_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -94,79 +94,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
  [_SFX] = LAYOUT_60_ansi_split_bs_rshift(
 | 
					  [_SFX] = LAYOUT_60_ansi_split_bs_rshift(
 | 
				
			||||||
      ______,   ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
 | 
					      ______,   ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
 | 
				
			||||||
      ______,   ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,  \
 | 
					      ______,   ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,  \
 | 
				
			||||||
      ______,   F(0),   F(1),   ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,   \
 | 
					      ______,   RGB_TOG,RGB_MOD,______, ______, ______, ______, ______, ______, ______, ______, ______, ______,   \
 | 
				
			||||||
      ______,   F(2),   F(3),   F(4),   F(5),   F(6),   F(7),   ______, ______, ______, ______, ______, ______,  \
 | 
					      ______,   RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,______, ______, ______, ______, ______, ______,  \
 | 
				
			||||||
      ______,   ______, ______,                 ______,                 ______, ______, ______, ______ \
 | 
					      ______,   ______, ______,                 ______,                 ______, ______, ______, ______ \
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    RGBLED_TOGGLE,
 | 
					 | 
				
			||||||
    RGBLED_STEP_MODE,
 | 
					 | 
				
			||||||
    RGBLED_INCREASE_HUE,
 | 
					 | 
				
			||||||
    RGBLED_DECREASE_HUE,
 | 
					 | 
				
			||||||
    RGBLED_INCREASE_SAT,
 | 
					 | 
				
			||||||
    RGBLED_DECREASE_SAT,
 | 
					 | 
				
			||||||
    RGBLED_INCREASE_VAL,
 | 
					 | 
				
			||||||
    RGBLED_DECREASE_VAL
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(RGBLED_TOGGLE),
 | 
					 | 
				
			||||||
  [1]  = ACTION_FUNCTION(RGBLED_STEP_MODE),
 | 
					 | 
				
			||||||
  [2]  = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
 | 
					 | 
				
			||||||
  [3]  = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
 | 
					 | 
				
			||||||
  [4]  = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
 | 
					 | 
				
			||||||
  [5]  = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
 | 
					 | 
				
			||||||
  [6]  = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
 | 
					 | 
				
			||||||
  [7]  = ACTION_FUNCTION(RGBLED_DECREASE_VAL)
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case RGBLED_TOGGLE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_toggle();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_INCREASE_HUE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_increase_hue();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_DECREASE_HUE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_decrease_hue();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_INCREASE_SAT:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_increase_sat();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_DECREASE_SAT:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_decrease_sat();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_INCREASE_VAL:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_increase_val();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_DECREASE_VAL:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_decrease_val();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_STEP_MODE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_step();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void matrix_scan_user(void) {
 | 
					void matrix_scan_user(void) {
 | 
				
			||||||
    uint32_t layer = layer_state;
 | 
					    uint32_t layer = layer_state;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,7 +21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
   * `-----------------------------------------------------------'
 | 
					   * `-----------------------------------------------------------'
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  [_BL] = LAYOUT(
 | 
					  [_BL] = LAYOUT(
 | 
				
			||||||
        F(12),KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_BSPC, \
 | 
					        KC_GESC,KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_BSPC, \
 | 
				
			||||||
        KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_BSLS, \
 | 
					        KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_BSLS, \
 | 
				
			||||||
        LT(2, KC_CAPS),KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_NO,KC_ENT,  \
 | 
					        LT(2, KC_CAPS),KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_NO,KC_ENT,  \
 | 
				
			||||||
        KC_LSFT,KC_NO,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_NO,KC_RSFT, \
 | 
					        KC_LSFT,KC_NO,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_NO,KC_RSFT, \
 | 
				
			||||||
| 
						 | 
					@ -88,35 +88,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
  [_UL] = LAYOUT(
 | 
					  [_UL] = LAYOUT(
 | 
				
			||||||
        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
 | 
					        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
 | 
				
			||||||
        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
 | 
					        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
 | 
				
			||||||
        KC_TRNS,F(4),F(5),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
 | 
					        KC_TRNS,RGB_TOG,RGB_MOD,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \
 | 
				
			||||||
        KC_TRNS,KC_TRNS,KC_TRNS,F(6),F(7),F(8),F(9),F(10),F(11),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,   \
 | 
					        KC_TRNS,KC_TRNS,KC_TRNS,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,   \
 | 
				
			||||||
        KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
 | 
					        KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,               KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    RGBLED_TOGGLE,
 | 
					 | 
				
			||||||
    RGBLED_STEP_MODE,
 | 
					 | 
				
			||||||
    RGBLED_INCREASE_HUE,
 | 
					 | 
				
			||||||
    RGBLED_DECREASE_HUE,
 | 
					 | 
				
			||||||
    RGBLED_INCREASE_SAT,
 | 
					 | 
				
			||||||
    RGBLED_DECREASE_SAT,
 | 
					 | 
				
			||||||
    RGBLED_INCREASE_VAL,
 | 
					 | 
				
			||||||
    RGBLED_DECREASE_VAL,
 | 
					 | 
				
			||||||
    SHIFT_ESC,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
    [4]  = ACTION_FUNCTION(RGBLED_TOGGLE), //Turn on/off underglow
 | 
					 | 
				
			||||||
    [5]  = ACTION_FUNCTION(RGBLED_STEP_MODE), // Change underglow mode
 | 
					 | 
				
			||||||
    [6]  = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
 | 
					 | 
				
			||||||
    [7]  = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
 | 
					 | 
				
			||||||
    [8]  = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
 | 
					 | 
				
			||||||
    [9]  = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
 | 
					 | 
				
			||||||
    [10] = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
 | 
					 | 
				
			||||||
    [11] = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
 | 
					 | 
				
			||||||
    [12] = ACTION_FUNCTION(SHIFT_ESC),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void matrix_scan_user(void) {
 | 
					void matrix_scan_user(void) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Layer LED indicators
 | 
					// Layer LED indicators
 | 
				
			||||||
| 
						 | 
					@ -134,73 +110,3 @@ void matrix_scan_user(void) {
 | 
				
			||||||
        gh60_esc_led_off();
 | 
					        gh60_esc_led_off();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					 | 
				
			||||||
#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case RGBLED_TOGGLE:
 | 
					 | 
				
			||||||
      //led operations
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_toggle();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
    case RGBLED_INCREASE_HUE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_increase_hue();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
    case RGBLED_DECREASE_HUE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_decrease_hue();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
    case RGBLED_INCREASE_SAT:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_increase_sat();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
    case RGBLED_DECREASE_SAT:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_decrease_sat();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
    case RGBLED_INCREASE_VAL:
 | 
					 | 
				
			||||||
        if (record->event.pressed) {
 | 
					 | 
				
			||||||
          rgblight_increase_val();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
    case RGBLED_DECREASE_VAL:
 | 
					 | 
				
			||||||
        if (record->event.pressed) {
 | 
					 | 
				
			||||||
          rgblight_decrease_val();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
    case RGBLED_STEP_MODE:
 | 
					 | 
				
			||||||
        if (record->event.pressed) {
 | 
					 | 
				
			||||||
          rgblight_step();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
    static uint8_t shift_esc_shift_mask;
 | 
					 | 
				
			||||||
    // Shift + ESC = ~
 | 
					 | 
				
			||||||
    case SHIFT_ESC:
 | 
					 | 
				
			||||||
      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          add_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          add_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          del_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          del_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,12 +1,9 @@
 | 
				
			||||||
#include QMK_KEYBOARD_H
 | 
					#include QMK_KEYBOARD_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
					const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
    /* 0: qwerty */
 | 
					    /* 0: qwerty */
 | 
				
			||||||
  LAYOUT_60_ansi_split_bs_rshift(
 | 
					  LAYOUT_60_ansi_split_bs_rshift(
 | 
				
			||||||
        F(0),KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_BSLS,KC_GRV,\
 | 
					        KC_GESC,KC_1,KC_2,KC_3,KC_4,KC_5,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINS,KC_EQL,KC_BSLS,KC_GRV,\
 | 
				
			||||||
        KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_BSPC,\
 | 
					        KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_LBRC,KC_RBRC,KC_BSPC,\
 | 
				
			||||||
        KC_LCTL,KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_ENT,\
 | 
					        KC_LCTL,KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_ENT,\
 | 
				
			||||||
        KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_RSFT,MO(1),\
 | 
					        KC_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_RSFT,MO(1),\
 | 
				
			||||||
| 
						 | 
					@ -19,37 +16,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PPLS,KC_PMNS,KC_END,KC_PGDN,KC_DOWN,KC_TRNS,KC_TRNS,\
 | 
					        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_PPLS,KC_PMNS,KC_END,KC_PGDN,KC_DOWN,KC_TRNS,KC_TRNS,\
 | 
				
			||||||
        KC_TRNS,KC_TRNS,KC_TRNS,      KC_TRNS,           KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
 | 
					        KC_TRNS,KC_TRNS,KC_TRNS,      KC_TRNS,           KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS),
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    SHIFT_ESC,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
    [0] = ACTION_FUNCTION(SHIFT_ESC),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  static uint8_t shift_esc_shift_mask;
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case SHIFT_ESC:
 | 
					 | 
				
			||||||
      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          add_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          add_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          del_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          del_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,10 +1,5 @@
 | 
				
			||||||
#include QMK_KEYBOARD_H
 | 
					#include QMK_KEYBOARD_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Used for SHIFT_ESC
 | 
					 | 
				
			||||||
#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
					// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
				
			||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
					// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
				
			||||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
					// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
				
			||||||
| 
						 | 
					@ -27,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
   * `-----------------------------------------------------------'
 | 
					   * `-----------------------------------------------------------'
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
[_BL] = LAYOUT_all(
 | 
					[_BL] = LAYOUT_all(
 | 
				
			||||||
    F(0)        ,KC_1   ,KC_2   ,KC_3   ,KC_4   ,KC_5   ,KC_6   ,KC_7   ,KC_8   ,KC_9   ,KC_0   ,KC_MINS,KC_EQL ,KC_BSPC    , _______,  \
 | 
					    KC_GESC     ,KC_1   ,KC_2   ,KC_3   ,KC_4   ,KC_5   ,KC_6   ,KC_7   ,KC_8   ,KC_9   ,KC_0   ,KC_MINS,KC_EQL ,KC_BSPC    , _______,  \
 | 
				
			||||||
    KC_TAB      ,KC_Q   ,KC_W   ,KC_E   ,KC_R   ,KC_T   ,KC_Y   ,KC_U   ,KC_I   ,KC_O   ,KC_P   ,KC_LBRC,KC_RBRC,KC_BSLS    ,           \
 | 
					    KC_TAB      ,KC_Q   ,KC_W   ,KC_E   ,KC_R   ,KC_T   ,KC_Y   ,KC_U   ,KC_I   ,KC_O   ,KC_P   ,KC_LBRC,KC_RBRC,KC_BSLS    ,           \
 | 
				
			||||||
    KC_CAPS     ,KC_A   ,KC_S   ,KC_D   ,KC_F   ,KC_G   ,KC_H   ,KC_J   ,KC_K   ,KC_L   ,KC_SCLN,KC_QUOT,_______,KC_ENT     ,           \
 | 
					    KC_CAPS     ,KC_A   ,KC_S   ,KC_D   ,KC_F   ,KC_G   ,KC_H   ,KC_J   ,KC_K   ,KC_L   ,KC_SCLN,KC_QUOT,_______,KC_ENT     ,           \
 | 
				
			||||||
    KC_LSHIFT   ,_______,KC_Z   ,KC_X   ,KC_C   ,KC_V   ,KC_B   ,KC_N   ,KC_M   ,KC_COMM,KC_DOT ,KC_SLSH,KC_UP  ,MO(_FL)    ,           \
 | 
					    KC_LSHIFT   ,_______,KC_Z   ,KC_X   ,KC_C   ,KC_V   ,KC_B   ,KC_N   ,KC_M   ,KC_COMM,KC_DOT ,KC_SLSH,KC_UP  ,MO(_FL)    ,           \
 | 
				
			||||||
| 
						 | 
					@ -52,37 +47,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
    _______     ,_______    ,_______    ,_______    ,_______      ,_______,_______,_______,_______,_______,_______,_______,KC_PGUP    ,_______    ,          \
 | 
					    _______     ,_______    ,_______    ,_______    ,_______      ,_______,_______,_______,_______,_______,_______,_______,KC_PGUP    ,_______    ,          \
 | 
				
			||||||
    KC_LCTL     ,_______    ,KC_LALT    ,                                  _______,                        KC_RCTL,KC_HOME,KC_PGDOWN  ,KC_END ),
 | 
					    KC_LCTL     ,_______    ,KC_LALT    ,                                  _______,                        KC_RCTL,KC_HOME,KC_PGDOWN  ,KC_END ),
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    SHIFT_ESC,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(SHIFT_ESC),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  static uint8_t shift_esc_shift_mask;
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case SHIFT_ESC:
 | 
					 | 
				
			||||||
      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          add_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          add_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          del_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          del_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -71,75 +71,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
  [_SFX] = LAYOUT_60_ansi_split_bs_rshift(
 | 
					  [_SFX] = LAYOUT_60_ansi_split_bs_rshift(
 | 
				
			||||||
      ______,   ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,  RESET, \
 | 
					      ______,   ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,  RESET, \
 | 
				
			||||||
      ______,   BL_DEC, BL_INC, BL_TOGG,______, ______, ______, ______, ______, ______, ______, ______, ______, ______,  \
 | 
					      ______,   BL_DEC, BL_INC, BL_TOGG,______, ______, ______, ______, ______, ______, ______, ______, ______, ______,  \
 | 
				
			||||||
      ______,   F(0),   F(1),   ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,   \
 | 
					      ______,   RGB_TOG,RGB_MOD,______, ______, ______, ______, ______, ______, ______, ______, ______, ______,   \
 | 
				
			||||||
      ______,   F(2),   F(3),   F(4),   F(5),   F(6),   F(7),   ______, ______, ______, ______, ______, ______,  \
 | 
					      ______,   RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,______, ______, ______, ______, ______, ______,  \
 | 
				
			||||||
      ______,   ______, ______,                 ______,                 ______, ______, ______, ______ \
 | 
					      ______,   ______, ______,                 ______,                 ______, ______, ______, ______ \
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    RGBLED_TOGGLE,
 | 
					 | 
				
			||||||
    RGBLED_STEP_MODE,
 | 
					 | 
				
			||||||
    RGBLED_INCREASE_HUE,
 | 
					 | 
				
			||||||
    RGBLED_DECREASE_HUE,
 | 
					 | 
				
			||||||
    RGBLED_INCREASE_SAT,
 | 
					 | 
				
			||||||
    RGBLED_DECREASE_SAT,
 | 
					 | 
				
			||||||
    RGBLED_INCREASE_VAL,
 | 
					 | 
				
			||||||
    RGBLED_DECREASE_VAL
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(RGBLED_TOGGLE),
 | 
					 | 
				
			||||||
  [1]  = ACTION_FUNCTION(RGBLED_STEP_MODE),
 | 
					 | 
				
			||||||
  [2]  = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
 | 
					 | 
				
			||||||
  [3]  = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
 | 
					 | 
				
			||||||
  [4]  = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
 | 
					 | 
				
			||||||
  [5]  = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
 | 
					 | 
				
			||||||
  [6]  = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
 | 
					 | 
				
			||||||
  [7]  = ACTION_FUNCTION(RGBLED_DECREASE_VAL)
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case RGBLED_TOGGLE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_toggle();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_INCREASE_HUE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_increase_hue();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_DECREASE_HUE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_decrease_hue();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_INCREASE_SAT:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_increase_sat();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_DECREASE_SAT:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_decrease_sat();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_INCREASE_VAL:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_increase_val();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_DECREASE_VAL:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_decrease_val();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_STEP_MODE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_step();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,9 +5,6 @@
 | 
				
			||||||
#include "rgblight.h"
 | 
					#include "rgblight.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Used for SHIFT_ESC
 | 
					 | 
				
			||||||
#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
					// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
				
			||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
					// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
				
			||||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
					// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
				
			||||||
| 
						 | 
					@ -31,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
   * `-----------------------------------------------------------'
 | 
					   * `-----------------------------------------------------------'
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
[_BL] = LAYOUT_60_ansi(
 | 
					[_BL] = LAYOUT_60_ansi(
 | 
				
			||||||
  F(0),      KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,     KC_9,    KC_0,    KC_MINS,  KC_EQL,   KC_BSPC, \
 | 
					  KC_GESC,   KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,     KC_9,    KC_0,    KC_MINS,  KC_EQL,   KC_BSPC, \
 | 
				
			||||||
  KC_TAB,    KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,     KC_O,    KC_P,    KC_LBRC,  KC_RBRC,  KC_BSLS, \
 | 
					  KC_TAB,    KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,     KC_O,    KC_P,    KC_LBRC,  KC_RBRC,  KC_BSLS, \
 | 
				
			||||||
  MO(_FL),   KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,     KC_L,    KC_SCLN, KC_QUOT,            KC_ENT,  \
 | 
					  MO(_FL),   KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,     KC_L,    KC_SCLN, KC_QUOT,            KC_ENT,  \
 | 
				
			||||||
  KC_LSFT,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,  KC_DOT,  KC_SLSH,                     KC_RSFT, \
 | 
					  KC_LSFT,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,  KC_DOT,  KC_SLSH,                     KC_RSFT, \
 | 
				
			||||||
| 
						 | 
					@ -55,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
  KC_GRV,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,   \
 | 
					  KC_GRV,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,   \
 | 
				
			||||||
  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC,  BL_INC,  BL_TOGG, \
 | 
					  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC,  BL_INC,  BL_TOGG, \
 | 
				
			||||||
  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, \
 | 
					  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,          KC_TRNS, \
 | 
				
			||||||
  KC_TRNS, F(1),    F(2),    F(3),    F(4),    F(5),    F(6),    F(7),     F(8),    KC_TRNS, KC_TRNS,                   KC_TRNS, \
 | 
					  KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI,  RGB_VAD, KC_TRNS, KC_TRNS,                   KC_TRNS, \
 | 
				
			||||||
  KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
 | 
					  KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                             KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
 | 
				
			||||||
  #else
 | 
					  #else
 | 
				
			||||||
  KC_GRV,   KC_F1,    KC_F2,    KC_F3,     KC_F4,    KC_F5,    KC_F6,    KC_F7,          KC_F8,        KC_F9,          KC_F10,   KC_F11,  KC_F12,  KC_DEL,  \
 | 
					  KC_GRV,   KC_F1,    KC_F2,    KC_F3,     KC_F4,    KC_F5,    KC_F6,    KC_F7,          KC_F8,        KC_F9,          KC_F10,   KC_F11,  KC_F12,  KC_DEL,  \
 | 
				
			||||||
| 
						 | 
					@ -72,100 +69,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
  KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC,  BL_TOGG, BL_INC,  LSFT(KC_HOME), LCTL(LSFT(KC_LEFT)), LCTL(LSFT(KC_END)), LCTL(LSFT(KC_RIGHT)), KC_TRNS,                        RESET,   \
 | 
					  KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC,  BL_TOGG, BL_INC,  LSFT(KC_HOME), LCTL(LSFT(KC_LEFT)), LCTL(LSFT(KC_END)), LCTL(LSFT(KC_RIGHT)), KC_TRNS,                        RESET,   \
 | 
				
			||||||
  KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                                                                      KC_TRNS,      KC_TRNS, KC_TRNS, KC_TRNS),
 | 
					  KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS,                                                                      KC_TRNS,      KC_TRNS, KC_TRNS, KC_TRNS),
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    SHIFT_ESC,
 | 
					 | 
				
			||||||
    #ifdef RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
    RGBLED_TOGGLE,
 | 
					 | 
				
			||||||
    RGBLED_STEP_MODE,
 | 
					 | 
				
			||||||
    RGBLED_INCREASE_HUE,
 | 
					 | 
				
			||||||
    RGBLED_DECREASE_HUE,
 | 
					 | 
				
			||||||
    RGBLED_INCREASE_SAT,
 | 
					 | 
				
			||||||
    RGBLED_DECREASE_SAT,
 | 
					 | 
				
			||||||
    RGBLED_INCREASE_VAL,
 | 
					 | 
				
			||||||
    RGBLED_DECREASE_VAL
 | 
					 | 
				
			||||||
    #endif
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(SHIFT_ESC),
 | 
					 | 
				
			||||||
  #ifdef RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
  [1]  = ACTION_FUNCTION(RGBLED_TOGGLE),
 | 
					 | 
				
			||||||
  [2]  = ACTION_FUNCTION(RGBLED_STEP_MODE),
 | 
					 | 
				
			||||||
  [3]  = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
 | 
					 | 
				
			||||||
  [4]  = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
 | 
					 | 
				
			||||||
  [5]  = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
 | 
					 | 
				
			||||||
  [6]  = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
 | 
					 | 
				
			||||||
  [7]  = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
 | 
					 | 
				
			||||||
  [8]  = ACTION_FUNCTION(RGBLED_DECREASE_VAL),
 | 
					 | 
				
			||||||
  #endif
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  static uint8_t shift_esc_shift_mask;
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case SHIFT_ESC:
 | 
					 | 
				
			||||||
      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          add_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          add_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          del_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          del_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    //led operations
 | 
					 | 
				
			||||||
    #ifdef RGBLIGHT_ENABLE
 | 
					 | 
				
			||||||
    case RGBLED_TOGGLE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_toggle();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_INCREASE_HUE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_increase_hue();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_DECREASE_HUE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_decrease_hue();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_INCREASE_SAT:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_increase_sat();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_DECREASE_SAT:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_decrease_sat();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_INCREASE_VAL:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_increase_val();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_DECREASE_VAL:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_decrease_val();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_STEP_MODE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        rgblight_step();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    #endif
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,8 +1,5 @@
 | 
				
			||||||
#include QMK_KEYBOARD_H
 | 
					#include QMK_KEYBOARD_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Used for SHIFT_ESC
 | 
					 | 
				
			||||||
#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
					// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
				
			||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
					// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
				
			||||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
					// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
				
			||||||
| 
						 | 
					@ -31,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
   *
 | 
					   *
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  [_BL] = LAYOUT_60_iso_split_rshift( \
 | 
					  [_BL] = LAYOUT_60_iso_split_rshift( \
 | 
				
			||||||
    F(0),          KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,        KC_BSPC,
 | 
					    KC_GESC,       KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,        KC_BSPC,
 | 
				
			||||||
    KC_TAB,        KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC,
 | 
					    KC_TAB,        KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC,
 | 
				
			||||||
    KC_LCTRL,      KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_ENYE, KC_SCLN, KC_QUOT,       KC_ENT,
 | 
					    KC_LCTRL,      KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_ENYE, KC_SCLN, KC_QUOT,       KC_ENT,
 | 
				
			||||||
    OSM(MOD_LSFT), _______, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, OSM(MOD_RSFT), MO(_FL),
 | 
					    OSM(MOD_LSFT), _______, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, OSM(MOD_RSFT), MO(_FL),
 | 
				
			||||||
| 
						 | 
					@ -61,40 +58,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    SHIFT_ESC,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(SHIFT_ESC),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  static uint8_t shift_esc_shift_mask;
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case SHIFT_ESC:
 | 
					 | 
				
			||||||
      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          add_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          add_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          del_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          del_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
					bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
				
			||||||
    if (record->event.pressed) {
 | 
					    if (record->event.pressed) {
 | 
				
			||||||
        switch(keycode) {
 | 
					        switch(keycode) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,5 @@
 | 
				
			||||||
#include QMK_KEYBOARD_H
 | 
					#include QMK_KEYBOARD_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
// Used for SHIFT_ESC
 | 
					 | 
				
			||||||
#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
					// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
				
			||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
					// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
				
			||||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
					// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
				
			||||||
| 
						 | 
					@ -26,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
   * `-----------------------------------------------------------'
 | 
					   * `-----------------------------------------------------------'
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  [_BL] = LAYOUT_60_ansi_split_bs_rshift(
 | 
					  [_BL] = LAYOUT_60_ansi_split_bs_rshift(
 | 
				
			||||||
    F(0),    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSLS, KC_GRV, \
 | 
					    KC_GESC, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSLS, KC_GRV, \
 | 
				
			||||||
    KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSPC, \
 | 
					    KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSPC, \
 | 
				
			||||||
    KC_LCTL, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,          KC_ENT,  \
 | 
					    KC_LCTL, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,          KC_ENT,  \
 | 
				
			||||||
    KC_LSFT,          KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, MO(_FL), \
 | 
					    KC_LSFT,          KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, MO(_FL), \
 | 
				
			||||||
| 
						 | 
					@ -49,37 +45,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    SHIFT_ESC,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(SHIFT_ESC),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  static uint8_t shift_esc_shift_mask;
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case SHIFT_ESC:
 | 
					 | 
				
			||||||
      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          add_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          add_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          del_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          del_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,5 @@
 | 
				
			||||||
#include QMK_KEYBOARD_H
 | 
					#include QMK_KEYBOARD_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
// Used for SHIFT_ESC
 | 
					 | 
				
			||||||
#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
					// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
				
			||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
					// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
				
			||||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
					// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
				
			||||||
| 
						 | 
					@ -19,7 +15,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
  // Base Default Layer
 | 
					  // Base Default Layer
 | 
				
			||||||
  // Mac Modifier Layout. Use BootMagic to toggle GUI and ALT positions.
 | 
					  // Mac Modifier Layout. Use BootMagic to toggle GUI and ALT positions.
 | 
				
			||||||
  [_BL] = LAYOUT_60_ansi_split_bs_rshift(
 | 
					  [_BL] = LAYOUT_60_ansi_split_bs_rshift(
 | 
				
			||||||
    F(0),             KC_1,    KC_2,    KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, XXXXXXX, \
 | 
					    KC_GESC,          KC_1,    KC_2,    KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, XXXXXXX, \
 | 
				
			||||||
    KC_TAB,           KC_Q,    KC_W,    KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS, \
 | 
					    KC_TAB,           KC_Q,    KC_W,    KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS, \
 | 
				
			||||||
    LT(_FL, KC_CAPS), KC_A,    KC_S,    KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,    KC_L,    KC_SCLN, KC_QUOT,          KC_ENT,  \
 | 
					    LT(_FL, KC_CAPS), KC_A,    KC_S,    KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,    KC_L,    KC_SCLN, KC_QUOT,          KC_ENT,  \
 | 
				
			||||||
    KC_LSFT,                   KC_Z,    KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_UP,   MO(_FL), \
 | 
					    KC_LSFT,                   KC_Z,    KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_UP,   MO(_FL), \
 | 
				
			||||||
| 
						 | 
					@ -52,37 +48,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    SHIFT_ESC,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(SHIFT_ESC),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  static uint8_t shift_esc_shift_mask;
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case SHIFT_ESC:
 | 
					 | 
				
			||||||
      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          add_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          add_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          del_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          del_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,10 +1,5 @@
 | 
				
			||||||
#include QMK_KEYBOARD_H
 | 
					#include QMK_KEYBOARD_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Used for SHIFT_ESC
 | 
					 | 
				
			||||||
#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
					// Each layer gets a name for readability, which is then used in the keymap matrix below.
 | 
				
			||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
					// The underscores don't mean anything - you can have a layer called STUFF or any other name.
 | 
				
			||||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
					// Layer names don't all need to be of the same length, obviously, and you can also skip them
 | 
				
			||||||
| 
						 | 
					@ -87,37 +82,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    SHIFT_ESC,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(SHIFT_ESC),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  static uint8_t shift_esc_shift_mask;
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case SHIFT_ESC:
 | 
					 | 
				
			||||||
      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          add_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          add_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          del_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          del_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,5 @@
 | 
				
			||||||
#include QMK_KEYBOARD_H
 | 
					#include QMK_KEYBOARD_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
					const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[0] = LAYOUT(
 | 
						[0] = LAYOUT(
 | 
				
			||||||
| 
						 | 
					@ -23,37 +21,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    SHIFT_ESC,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(SHIFT_ESC),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  static uint8_t shift_esc_shift_mask;
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case SHIFT_ESC:
 | 
					 | 
				
			||||||
      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          add_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          add_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          del_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          del_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
// Base Default Layer
 | 
					// Base Default Layer
 | 
				
			||||||
// Mac Modifier Layout. Use BootMagic to toggle GUI and ALT positions.
 | 
					// Mac Modifier Layout. Use BootMagic to toggle GUI and ALT positions.
 | 
				
			||||||
[_BL] = LAYOUT(
 | 
					[_BL] = LAYOUT(
 | 
				
			||||||
  F(0),             KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS,  KC_EQL,   KC_BSPC, \
 | 
					  KC_GESC,          KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS,  KC_EQL,   KC_BSPC, \
 | 
				
			||||||
  KC_TAB,           KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_LBRC,  KC_RBRC,  KC_BSLS, \
 | 
					  KC_TAB,           KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_LBRC,  KC_RBRC,  KC_BSLS, \
 | 
				
			||||||
  LT(_FL, KC_CAPS), KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,KC_QUOT,  KC_NO,    KC_ENT,  \
 | 
					  LT(_FL, KC_CAPS), KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,KC_QUOT,  KC_NO,    KC_ENT,  \
 | 
				
			||||||
  KC_LSFT, KC_NO,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,  MO(_FL),  KC_UP,   \
 | 
					  KC_LSFT, KC_NO,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,  MO(_FL),  KC_UP,   \
 | 
				
			||||||
| 
						 | 
					@ -46,39 +46,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
  KC_TRNS,KC_TRNS,KC_TRNS,                KC_TRNS,                        KC_NO,  KC_TRNS,KC_TRNS,  KC_TRNS,  KC_TRNS),
 | 
					  KC_TRNS,KC_TRNS,KC_TRNS,                KC_TRNS,                        KC_NO,  KC_TRNS,KC_TRNS,  KC_TRNS,  KC_TRNS),
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    SHIFT_ESC,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(SHIFT_ESC),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  static uint8_t shift_esc_shift_mask;
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case SHIFT_ESC:
 | 
					 | 
				
			||||||
      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          add_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          add_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          del_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          del_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,11 +4,10 @@
 | 
				
			||||||
#define _FN1 1
 | 
					#define _FN1 1
 | 
				
			||||||
#define _FN2 2
 | 
					#define _FN2 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 | 
					 | 
				
			||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
					const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[_BL] = LAYOUT_2u_space_ortho(
 | 
						[_BL] = LAYOUT_2u_space_ortho(
 | 
				
			||||||
		F(0), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
 | 
							KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
 | 
				
			||||||
		KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
 | 
							KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
 | 
				
			||||||
		KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
 | 
							KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
 | 
				
			||||||
		KC_CAPS, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT),
 | 
							KC_CAPS, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT),
 | 
				
			||||||
| 
						 | 
					@ -44,81 +43,3 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return MACRO_NONE;
 | 
						return MACRO_NONE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
void matrix_init_user(void) {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void matrix_scan_user(void) {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
					 | 
				
			||||||
	return true;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void led_set_user(uint8_t usb_led) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (usb_led & (1 << USB_LED_NUM_LOCK)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (usb_led & (1 << USB_LED_COMPOSE)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (usb_led & (1 << USB_LED_KANA)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    SHIFT_ESC,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(SHIFT_ESC),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  static uint8_t shift_esc_shift_mask;
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case SHIFT_ESC:
 | 
					 | 
				
			||||||
      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          add_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          add_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          del_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          del_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,11 +4,10 @@
 | 
				
			||||||
#define _FN1 1
 | 
					#define _FN1 1
 | 
				
			||||||
#define _FN2 2
 | 
					#define _FN2 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 | 
					 | 
				
			||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
					const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[_BL] = LAYOUT_625_space(
 | 
						[_BL] = LAYOUT_625_space(
 | 
				
			||||||
		F(0), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
 | 
							KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
 | 
				
			||||||
		KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
 | 
							KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
 | 
				
			||||||
		KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_LSFT, KC_DOT,
 | 
							KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_LSFT, KC_DOT,
 | 
				
			||||||
		KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, MO(1), MO(2)),
 | 
							KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, MO(1), MO(2)),
 | 
				
			||||||
| 
						 | 
					@ -27,37 +26,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    SHIFT_ESC,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(SHIFT_ESC),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  static uint8_t shift_esc_shift_mask;
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case SHIFT_ESC:
 | 
					 | 
				
			||||||
      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          add_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          add_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          del_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          del_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,11 +4,10 @@
 | 
				
			||||||
#define _FN1 1
 | 
					#define _FN1 1
 | 
				
			||||||
#define _FN2 2
 | 
					#define _FN2 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 | 
					 | 
				
			||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
					const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[_BL] = LAYOUT_ortho(
 | 
						[_BL] = LAYOUT_ortho(
 | 
				
			||||||
		F(0), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
 | 
							KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
 | 
				
			||||||
		KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
 | 
							KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
 | 
				
			||||||
		KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
 | 
							KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
 | 
				
			||||||
		KC_CAPS, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT),
 | 
							KC_CAPS, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT),
 | 
				
			||||||
| 
						 | 
					@ -44,81 +43,3 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return MACRO_NONE;
 | 
						return MACRO_NONE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
void matrix_init_user(void) {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void matrix_scan_user(void) {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
					 | 
				
			||||||
	return true;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void led_set_user(uint8_t usb_led) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (usb_led & (1 << USB_LED_NUM_LOCK)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (usb_led & (1 << USB_LED_COMPOSE)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (usb_led & (1 << USB_LED_KANA)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    SHIFT_ESC,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(SHIFT_ESC),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  static uint8_t shift_esc_shift_mask;
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case SHIFT_ESC:
 | 
					 | 
				
			||||||
      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          add_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          add_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          del_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          del_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,11 +4,10 @@
 | 
				
			||||||
#define _FN1 1
 | 
					#define _FN1 1
 | 
				
			||||||
#define _FN2 2
 | 
					#define _FN2 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MODS_CTRL_MASK  (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
 | 
					 | 
				
			||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
					const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	[_BL] = LAYOUT_split_space(
 | 
						[_BL] = LAYOUT_split_space(
 | 
				
			||||||
		F(0), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
 | 
							KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
 | 
				
			||||||
		KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
 | 
							KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
 | 
				
			||||||
		KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_RSFT, KC_DOT,
 | 
							KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_RSFT, KC_DOT,
 | 
				
			||||||
		KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_RCTL, MO(1), MO(2)),
 | 
							KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_RCTL, MO(1), MO(2)),
 | 
				
			||||||
| 
						 | 
					@ -26,37 +25,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
		KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
 | 
							KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    SHIFT_ESC,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(SHIFT_ESC),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  static uint8_t shift_esc_shift_mask;
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case SHIFT_ESC:
 | 
					 | 
				
			||||||
      shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK;
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          add_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          add_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if (shift_esc_shift_mask) {
 | 
					 | 
				
			||||||
          del_key(KC_GRV);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          del_key(KC_ESC);
 | 
					 | 
				
			||||||
          send_keyboard_report();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -67,135 +67,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
  [_SFX] = LAYOUT(
 | 
					  [_SFX] = LAYOUT(
 | 
				
			||||||
      ______,   ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
 | 
					      ______,   ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
 | 
				
			||||||
      ______,   BL_TOGG,BL_STEP,BL_DEC, BL_INC, ______, ______, ______, ______, ______, ______, ______, ______, ______,  \
 | 
					      ______,   BL_TOGG,BL_STEP,BL_DEC, BL_INC, ______, ______, ______, ______, ______, ______, ______, ______, ______,  \
 | 
				
			||||||
      ______,   F(0),   F(1),   ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,  \
 | 
					      ______,   RGB_TOG,RGB_MOD,______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,  \
 | 
				
			||||||
      ______,   ______, F(2),   F(3),   F(4),   F(5),   F(6),   F(7),   ______, ______, ______, ______,         ______, ______,  \
 | 
					      ______,   ______, RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,______, ______, ______, ______,         ______, ______,  \
 | 
				
			||||||
      ______,   ______, ______,                         ______,                         ______, ______, ______, ______ \
 | 
					      ______,   ______, ______,                         ______,                         ______, ______, ______, ______ \
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					 | 
				
			||||||
enum function_id {
 | 
					 | 
				
			||||||
    RGBLED_TOGGLE,
 | 
					 | 
				
			||||||
    RGBLED_STEP_MODE,
 | 
					 | 
				
			||||||
    RGBLED_INCREASE_HUE,
 | 
					 | 
				
			||||||
    RGBLED_DECREASE_HUE,
 | 
					 | 
				
			||||||
    RGBLED_INCREASE_SAT,
 | 
					 | 
				
			||||||
    RGBLED_DECREASE_SAT,
 | 
					 | 
				
			||||||
    RGBLED_INCREASE_VAL,
 | 
					 | 
				
			||||||
    RGBLED_DECREASE_VAL
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const uint16_t PROGMEM fn_actions[] = {
 | 
					 | 
				
			||||||
  [0]  = ACTION_FUNCTION(RGBLED_TOGGLE),
 | 
					 | 
				
			||||||
  [1]  = ACTION_FUNCTION(RGBLED_STEP_MODE),
 | 
					 | 
				
			||||||
  [2]  = ACTION_FUNCTION(RGBLED_INCREASE_HUE),
 | 
					 | 
				
			||||||
  [3]  = ACTION_FUNCTION(RGBLED_DECREASE_HUE),
 | 
					 | 
				
			||||||
  [4]  = ACTION_FUNCTION(RGBLED_INCREASE_SAT),
 | 
					 | 
				
			||||||
  [5]  = ACTION_FUNCTION(RGBLED_DECREASE_SAT),
 | 
					 | 
				
			||||||
  [6]  = ACTION_FUNCTION(RGBLED_INCREASE_VAL),
 | 
					 | 
				
			||||||
  [7]  = ACTION_FUNCTION(RGBLED_DECREASE_VAL)
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
 | 
					 | 
				
			||||||
  switch (id) {
 | 
					 | 
				
			||||||
    case RGBLED_TOGGLE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        #ifdef RGB_ENABLE
 | 
					 | 
				
			||||||
        rgblight_toggle();
 | 
					 | 
				
			||||||
        #endif
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_INCREASE_HUE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        #ifdef RGB_ENABLE
 | 
					 | 
				
			||||||
        rgblight_increase_hue();
 | 
					 | 
				
			||||||
        #endif
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_DECREASE_HUE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        #ifdef RGB_ENABLE
 | 
					 | 
				
			||||||
        rgblight_decrease_hue();
 | 
					 | 
				
			||||||
        #endif
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_INCREASE_SAT:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        #ifdef RGB_ENABLE
 | 
					 | 
				
			||||||
        rgblight_increase_sat();
 | 
					 | 
				
			||||||
        #endif
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_DECREASE_SAT:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        #ifdef RGB_ENABLE
 | 
					 | 
				
			||||||
        rgblight_decrease_sat();
 | 
					 | 
				
			||||||
        #endif
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_INCREASE_VAL:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        #ifdef RGB_ENABLE
 | 
					 | 
				
			||||||
        rgblight_increase_val();
 | 
					 | 
				
			||||||
        #endif
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_DECREASE_VAL:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        #ifdef RGB_ENABLE
 | 
					 | 
				
			||||||
        rgblight_decrease_val();
 | 
					 | 
				
			||||||
        #endif
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
    case RGBLED_STEP_MODE:
 | 
					 | 
				
			||||||
      if (record->event.pressed) {
 | 
					 | 
				
			||||||
        #ifdef RGB_ENABLE
 | 
					 | 
				
			||||||
        rgblight_step();
 | 
					 | 
				
			||||||
        #endif
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      break;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void matrix_init_user(void) {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void matrix_scan_user(void) {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
					 | 
				
			||||||
	return true;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void led_set_user(uint8_t usb_led) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (usb_led & (1 << USB_LED_NUM_LOCK)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (usb_led & (1 << USB_LED_COMPOSE)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (usb_led & (1 << USB_LED_KANA)) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue