mirror of
https://github.com/qmk/qmk_userspace.git
synced 2025-05-05 07:04:17 -04:00
commit
43ebbec89f
14 changed files with 250 additions and 183 deletions
|
@ -25,7 +25,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_NAVIGATION] = ROLLOW(LAYER_NAVIGATION),
|
[_NAVIGATION] = ROLLOW(LAYER_NAVIGATION),
|
||||||
[_NUMBER] = ROLLOW(LAYER_NUMBER),
|
[_NUMBER] = ROLLOW(LAYER_NUMBER),
|
||||||
[_SYMBOL] = ROLLOW(LAYER_SYMBOL),
|
[_SYMBOL] = ROLLOW(LAYER_SYMBOL),
|
||||||
[_FUNCTION] = ROLLOW(LAYER_FUNCTION),
|
|
||||||
[_CONFIG] = ROLLOW(LAYER_CONFIG)
|
[_CONFIG] = ROLLOW(LAYER_CONFIG)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -41,7 +40,6 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||||
[_NAVIGATION] = { ENCODER_CCW_CW(ZOOMIN, ZOOMOUT), ENCODER_CCW_CW(___x___, ___x___) },
|
[_NAVIGATION] = { ENCODER_CCW_CW(ZOOMIN, ZOOMOUT), ENCODER_CCW_CW(___x___, ___x___) },
|
||||||
[_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_RGHT, KC_LEFT) },
|
[_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_RGHT, KC_LEFT) },
|
||||||
[_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
|
[_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
|
||||||
[_FUNCTION] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_DOWN, KC_UP ) },
|
|
||||||
[_CONFIG] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
|
[_CONFIG] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_NAVIGATION] = CNANO(LAYER_NAVIGATION),
|
[_NAVIGATION] = CNANO(LAYER_NAVIGATION),
|
||||||
[_NUMBER] = CNANO(LAYER_NUMBER),
|
[_NUMBER] = CNANO(LAYER_NUMBER),
|
||||||
[_SYMBOL] = CNANO(LAYER_SYMBOL),
|
[_SYMBOL] = CNANO(LAYER_SYMBOL),
|
||||||
[_FUNCTION] = CNANO(LAYER_FUNCTION),
|
|
||||||
[_CONFIG] = CNANO(LAYER_CONFIG)
|
[_CONFIG] = CNANO(LAYER_CONFIG)
|
||||||
|
|
||||||
};
|
};
|
|
@ -25,7 +25,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_NAVIGATION] = SWOOP(LAYER_NAVIGATION),
|
[_NAVIGATION] = SWOOP(LAYER_NAVIGATION),
|
||||||
[_NUMBER] = SWOOP(LAYER_NUMBER),
|
[_NUMBER] = SWOOP(LAYER_NUMBER),
|
||||||
[_SYMBOL] = SWOOP(LAYER_SYMBOL),
|
[_SYMBOL] = SWOOP(LAYER_SYMBOL),
|
||||||
[_FUNCTION] = SWOOP(LAYER_FUNCTION),
|
|
||||||
[_CONFIG] = SWOOP(LAYER_CONFIG)
|
[_CONFIG] = SWOOP(LAYER_CONFIG)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -36,14 +35,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
/* The encoder presses are handled in the keymap */
|
/* The encoder presses are handled in the keymap */
|
||||||
|
|
||||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||||
[_DEFAULT_LAYER_1] = { ENCODER_CCW_CW(TR_MWHD, TR_MWHU), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
|
[_DEFAULT_LAYER_1] = { ENCODER_CCW_CW(TR_MWHU, TR_MWHD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||||
[_DEFAULT_LAYER_2] = { ENCODER_CCW_CW(TR_MWHD, TR_MWHU), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
|
[_DEFAULT_LAYER_2] = { ENCODER_CCW_CW(TR_MWHU, TR_MWHD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||||
[_DEFAULT_LAYER_3] = { ENCODER_CCW_CW(TR_MWHD, TR_MWHU), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
|
[_DEFAULT_LAYER_3] = { ENCODER_CCW_CW(TR_MWHU, TR_MWHD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||||
[_NAVIGATION] = { ENCODER_CCW_CW(ZOOMIN, ZOOMOUT), ENCODER_CCW_CW(___x___, ___x___) },
|
[_NAVIGATION] = { ENCODER_CCW_CW(ZOOMOUT, ZOOMIN), ENCODER_CCW_CW(___x___, ___x___) },
|
||||||
[_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_RGHT, KC_LEFT) },
|
[_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_LEFT, KC_RGHT) },
|
||||||
[_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
|
[_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
|
||||||
[_FUNCTION] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_DOWN, KC_UP ) },
|
[_CONFIG] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(LSFT(TR_RMOD), TR_RMOD) },
|
||||||
[_CONFIG] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -25,7 +25,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_NAVIGATION] = CRKBD(LAYER_NAVIGATION),
|
[_NAVIGATION] = CRKBD(LAYER_NAVIGATION),
|
||||||
[_NUMBER] = CRKBD(LAYER_NUMBER),
|
[_NUMBER] = CRKBD(LAYER_NUMBER),
|
||||||
[_SYMBOL] = CRKBD(LAYER_SYMBOL),
|
[_SYMBOL] = CRKBD(LAYER_SYMBOL),
|
||||||
[_FUNCTION] = CRKBD(LAYER_FUNCTION),
|
|
||||||
[_CONFIG] = CRKBD(LAYER_CONFIG)
|
[_CONFIG] = CRKBD(LAYER_CONFIG)
|
||||||
|
|
||||||
};
|
};
|
|
@ -25,7 +25,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
[_NAVIGATION] = PLANCK(LAYER_NAVIGATION),
|
[_NAVIGATION] = PLANCK(LAYER_NAVIGATION),
|
||||||
[_NUMBER] = PLANCK(LAYER_NUMBER),
|
[_NUMBER] = PLANCK(LAYER_NUMBER),
|
||||||
[_SYMBOL] = PLANCK(LAYER_SYMBOL),
|
[_SYMBOL] = PLANCK(LAYER_SYMBOL),
|
||||||
[_FUNCTION] = PLANCK(LAYER_FUNCTION),
|
|
||||||
[_CONFIG] = PLANCK(LAYER_CONFIG)
|
[_CONFIG] = PLANCK(LAYER_CONFIG)
|
||||||
|
|
||||||
};
|
};
|
|
@ -98,7 +98,7 @@ Explore These
|
||||||
#define RGB_MATRIX_DEFAULT_SPD 32
|
#define RGB_MATRIX_DEFAULT_SPD 32
|
||||||
|
|
||||||
//Set per keyboard configuration
|
//Set per keyboard configuration
|
||||||
#if defined(KEYBOARD_bastardkb_charybdis_3x5) || defined(KEYBOARD_dztech_dz60rgb_v2_1)
|
#if defined(KEYBOARD_bastardkb_charybdis_3x5) || defined(KEYBOARD_dztech_dz60rgb_v2_1) || defined(KEYBOARD_bluebell_swoop)
|
||||||
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
|
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
|
||||||
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||||
# define RGB_MATRIX_KEYPRESSES
|
# define RGB_MATRIX_KEYPRESSES
|
||||||
|
|
|
@ -39,7 +39,7 @@ bool get_combo_must_hold(uint16_t index, combo_t *combo) {
|
||||||
switch (index) {
|
switch (index) {
|
||||||
|
|
||||||
case LYR_CONFIG:
|
case LYR_CONFIG:
|
||||||
case LYR_FUNCTION:
|
//case LYR_FUNCTION:
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -39,13 +39,13 @@ const uint16_t PROGMEM mou_drg_combo[] = { KC_S, KC_D, COMBO_END };
|
||||||
|
|
||||||
const uint16_t PROGMEM key_esc_combo[] = { KC_W, KC_E, COMBO_END };
|
const uint16_t PROGMEM key_esc_combo[] = { KC_W, KC_E, COMBO_END };
|
||||||
const uint16_t PROGMEM key_ent_combo[] = { KC_X, KC_C, COMBO_END };
|
const uint16_t PROGMEM key_ent_combo[] = { KC_X, KC_C, COMBO_END };
|
||||||
const uint16_t PROGMEM lyr_fun_combo[] = { NUM, TR_LSFT, COMBO_END };
|
//const uint16_t PROGMEM lyr_fun_combo[] = { NUM, TR_LSFT, COMBO_END };
|
||||||
|
|
||||||
|
|
||||||
// right hand combos
|
// right hand combos
|
||||||
const uint16_t PROGMEM key_tab_combo[] = { KC_M, TR_COMM, COMBO_END };
|
const uint16_t PROGMEM key_tab_combo[] = { KC_U, KC_I, COMBO_END };
|
||||||
const uint16_t PROGMEM key_del_combo[] = { KC_U, KC_I, COMBO_END };
|
const uint16_t PROGMEM key_bspc_combo[] = { KC_M, TR_COMM, COMBO_END };
|
||||||
const uint16_t PROGMEM key_bspc_combo[] = { KC_I, KC_O, COMBO_END };
|
const uint16_t PROGMEM key_del_combo[] = { TR_COMM, TR_DOT, COMBO_END };
|
||||||
const uint16_t PROGMEM lyr_cfg_combo[] = { KC_SPC, NAV, COMBO_END };
|
const uint16_t PROGMEM lyr_cfg_combo[] = { KC_SPC, NAV, COMBO_END };
|
||||||
|
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ combo_t key_combos[COMBO_LENGTH] = {
|
||||||
|
|
||||||
[KEY_ESC] = COMBO(key_esc_combo, KC_ESC),
|
[KEY_ESC] = COMBO(key_esc_combo, KC_ESC),
|
||||||
[KEY_ENT] = COMBO(key_ent_combo, KC_ENT),
|
[KEY_ENT] = COMBO(key_ent_combo, KC_ENT),
|
||||||
[LYR_FUNCTION] = COMBO(lyr_fun_combo, FUNC),
|
//[LYR_FUNCTION] = COMBO(lyr_fun_combo, FUNC),
|
||||||
|
|
||||||
// right hand combos
|
// right hand combos
|
||||||
[KEY_TAB] = COMBO(key_tab_combo, KC_TAB),
|
[KEY_TAB] = COMBO(key_tab_combo, KC_TAB),
|
||||||
|
|
|
@ -37,7 +37,6 @@ void render_layer_state(void) {
|
||||||
oled_write_P(PSTR(OLED_RENDER_LAYER_NAVIGATION), get_highest_layer(layer_state) == _NAVIGATION);
|
oled_write_P(PSTR(OLED_RENDER_LAYER_NAVIGATION), get_highest_layer(layer_state) == _NAVIGATION);
|
||||||
oled_write_P(PSTR(OLED_RENDER_LAYER_NUMBER), get_highest_layer(layer_state) == _NUMBER);
|
oled_write_P(PSTR(OLED_RENDER_LAYER_NUMBER), get_highest_layer(layer_state) == _NUMBER);
|
||||||
oled_write_P(PSTR(OLED_RENDER_LAYER_SYMBOL), get_highest_layer(layer_state) == _SYMBOL);
|
oled_write_P(PSTR(OLED_RENDER_LAYER_SYMBOL), get_highest_layer(layer_state) == _SYMBOL);
|
||||||
oled_write_P(PSTR(OLED_RENDER_LAYER_FUNCTION), get_highest_layer(layer_state) == _FUNCTION);
|
|
||||||
oled_write_P(PSTR(OLED_RENDER_LAYER_CONFIG), get_highest_layer(layer_state) == _CONFIG);
|
oled_write_P(PSTR(OLED_RENDER_LAYER_CONFIG), get_highest_layer(layer_state) == _CONFIG);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
#define OLED_RENDER_LAYER_NUMBER " Num "
|
#define OLED_RENDER_LAYER_NUMBER " Num "
|
||||||
#define OLED_RENDER_LAYER_NAVIGATION " Nav "
|
#define OLED_RENDER_LAYER_NAVIGATION " Nav "
|
||||||
#define OLED_RENDER_LAYER_SYMBOL " Sym "
|
#define OLED_RENDER_LAYER_SYMBOL " Sym "
|
||||||
#define OLED_RENDER_LAYER_FUNCTION " Fun "
|
|
||||||
#define OLED_RENDER_LAYER_CONFIG " Cfg "
|
#define OLED_RENDER_LAYER_CONFIG " Cfg "
|
||||||
|
|
||||||
void render_crkbd_logo(void);
|
void render_crkbd_logo(void);
|
||||||
|
|
|
@ -1,128 +1,163 @@
|
||||||
#include "taphold.h"
|
#include "taphold.h"
|
||||||
|
|
||||||
void insert_brackets(uint16_t left, uint16_t right) {
|
void single_tap(uint16_t key, uint16_t altkey, bool isHold) {
|
||||||
|
isHold ? tap_code16(altkey) : tap_code16(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
void double_tap(uint16_t key, uint16_t altkey, uint32_t ms) {
|
||||||
|
tap_code16(key);
|
||||||
|
wait_ms(ms);
|
||||||
|
tap_code16(altkey);
|
||||||
|
}
|
||||||
|
|
||||||
|
void insert_brackets(uint16_t left, uint16_t right, uint32_t ms) {
|
||||||
tap_code16(left);
|
tap_code16(left);
|
||||||
|
wait_ms(ms);
|
||||||
tap_code16(right);
|
tap_code16(right);
|
||||||
|
wait_ms(ms);
|
||||||
tap_code16(KC_LEFT);
|
tap_code16(KC_LEFT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void double_tap(uint16_t keycode, uint32_t ms) {
|
|
||||||
tap_code16(keycode);
|
|
||||||
wait_ms(ms);
|
|
||||||
tap_code16(keycode);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//here we can have the holds be more complex, like sending "" when you hold "
|
//here we can have the holds be more complex, like sending "" when you hold "
|
||||||
bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode) {
|
bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode) {
|
||||||
|
|
||||||
//tap is record->tap.count && record->event.pressed
|
//tap is record->tap.count && record->event.pressed
|
||||||
//hold is record->event.pressed
|
//hold is record->event.pressed
|
||||||
|
|
||||||
|
//just saving this to handle mods
|
||||||
//bool isShift = ( (get_mods() & MOD_BIT(KC_LSFT)) || (get_oneshot_mods() & MOD_BIT(KC_LSFT)) );
|
//bool isShift = ( (get_mods() & MOD_BIT(KC_LSFT)) || (get_oneshot_mods() & MOD_BIT(KC_LSFT)) );
|
||||||
uint16_t key = KC_NO;
|
//isShift ? insert_brackets(LSFT(key), LSFT(altkey)) : insert_brackets(key, altkey);
|
||||||
uint16_t altkey = KC_NO;
|
|
||||||
|
|
||||||
switch(keycode) {
|
|
||||||
|
|
||||||
//Brackets
|
|
||||||
//open and close brackets and put the cursor inside
|
|
||||||
case TR_LCBR:
|
|
||||||
key = KC_LCBR;
|
|
||||||
altkey = KC_RCBR;
|
|
||||||
break;
|
|
||||||
case TR_LABK:
|
|
||||||
key = KC_LABK;
|
|
||||||
altkey = KC_RABK;
|
|
||||||
break;
|
|
||||||
case TR_LBRC:
|
|
||||||
key = KC_LBRC;
|
|
||||||
altkey = KC_RBRC;
|
|
||||||
break;
|
|
||||||
case TR_SQUO:
|
|
||||||
key = KC_QUOT;
|
|
||||||
altkey = KC_QUOT;
|
|
||||||
break;
|
|
||||||
case TR_DQUO:
|
|
||||||
key = KC_DQUO;
|
|
||||||
altkey = KC_DQUO;
|
|
||||||
break;
|
|
||||||
|
|
||||||
//Custom
|
|
||||||
case TR_LPRN: //tap for comma, hold for bracket parenthesis
|
|
||||||
case TR_COMM: //tap for comma, hold for left parenthesis
|
|
||||||
key = KC_COMM;
|
|
||||||
altkey = KC_LPRN;
|
|
||||||
break;
|
|
||||||
case TR_DOT: //tap for dot, hold for right parenthesis
|
|
||||||
key = KC_DOT;
|
|
||||||
altkey = KC_RPRN;
|
|
||||||
break;
|
|
||||||
case TR_PERC: //tap for percent, hold for carat. for saving room on symbols layer
|
|
||||||
key = KC_PERC;
|
|
||||||
altkey = KC_CIRC;
|
|
||||||
break;
|
|
||||||
|
|
||||||
//faux auto-shift
|
|
||||||
case TR_EQL: //tap for equal, hold for plus
|
|
||||||
key = KC_EQL;
|
|
||||||
altkey = KC_PLUS;
|
|
||||||
break;
|
|
||||||
case TR_MINS: //tap for minus, hold for underscore
|
|
||||||
key = KC_MINS;
|
|
||||||
altkey = KC_UNDS;
|
|
||||||
break;
|
|
||||||
case TR_GRV: //tap for grave, hold for tilde
|
|
||||||
key = KC_GRV;
|
|
||||||
altkey = KC_TILDE;
|
|
||||||
break;
|
|
||||||
case TR_SCLN: //tap for semicolon, hold for colon
|
|
||||||
key = KC_SCLN;
|
|
||||||
altkey = KC_COLN;
|
|
||||||
break;
|
|
||||||
case TR_QUOT: //tap for single quote, hold for double quote
|
|
||||||
key = KC_QUOT;
|
|
||||||
altkey = KC_DQUO;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
bool isHold = false;
|
||||||
|
|
||||||
if (record->tap.count && record->event.pressed) {
|
if (record->tap.count && record->event.pressed) {
|
||||||
|
|
||||||
tap_code16(key);
|
switch(keycode) {
|
||||||
|
|
||||||
|
case TR_LCBR:
|
||||||
|
single_tap(TAPHOLD_LCBR, isHold);
|
||||||
|
break;
|
||||||
|
case TR_LABK:
|
||||||
|
single_tap(TAPHOLD_LABK, isHold);
|
||||||
|
break;
|
||||||
|
case TR_LBRC:
|
||||||
|
single_tap(TAPHOLD_LBRC, isHold);
|
||||||
|
break;
|
||||||
|
case TR_LPRN:
|
||||||
|
single_tap(TAPHOLD_LPRN, isHold);
|
||||||
|
break;
|
||||||
|
case TR_SQUO:
|
||||||
|
single_tap(TAPHOLD_SQUO, isHold);
|
||||||
|
break;
|
||||||
|
case TR_DQUO:
|
||||||
|
single_tap(TAPHOLD_DQUO, isHold);
|
||||||
|
break;
|
||||||
|
case TR_EQL:
|
||||||
|
single_tap(TAPHOLD_EQL, isHold);
|
||||||
|
break;
|
||||||
|
case TR_PLUS:
|
||||||
|
single_tap(TAPHOLD_PLUS, isHold);
|
||||||
|
break;
|
||||||
|
case TR_PIPE:
|
||||||
|
single_tap(TAPHOLD_PIPE, isHold);
|
||||||
|
break;
|
||||||
|
case TR_COMM:
|
||||||
|
single_tap(TAPHOLD_COMM, isHold);
|
||||||
|
break;
|
||||||
|
case TR_DOT:
|
||||||
|
single_tap(TAPHOLD_DOT, isHold);
|
||||||
|
break;
|
||||||
|
case TR_PERC:
|
||||||
|
single_tap(TAPHOLD_PERC, isHold);
|
||||||
|
break;
|
||||||
|
case TR_EXLM:
|
||||||
|
single_tap(TAPHOLD_EXLM, isHold);
|
||||||
|
break;
|
||||||
|
case TR_MINS:
|
||||||
|
single_tap(TAPHOLD_MINS, isHold);
|
||||||
|
break;
|
||||||
|
case TR_GRV:
|
||||||
|
single_tap(TAPHOLD_GRV, isHold);
|
||||||
|
break;
|
||||||
|
case TR_SCLN:
|
||||||
|
single_tap(TAPHOLD_SCLN, isHold);
|
||||||
|
break;
|
||||||
|
case TR_QUOT:
|
||||||
|
single_tap(TAPHOLD_QUOT, isHold);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
} else if (record->tap.count == 0 && record->event.pressed) {
|
} else if (record->tap.count == 0 && record->event.pressed) {
|
||||||
|
|
||||||
|
isHold = true;
|
||||||
|
|
||||||
switch(keycode) {
|
switch(keycode) {
|
||||||
|
|
||||||
//Brackets
|
//Brackets
|
||||||
case TR_LCBR:
|
case TR_LCBR:
|
||||||
|
insert_brackets(TAPHOLD_LCBR, WAIT_DELAY);
|
||||||
|
break;
|
||||||
case TR_LABK:
|
case TR_LABK:
|
||||||
|
insert_brackets(TAPHOLD_LABK, WAIT_DELAY);
|
||||||
|
break;
|
||||||
case TR_LBRC:
|
case TR_LBRC:
|
||||||
|
insert_brackets(TAPHOLD_LBRC, WAIT_DELAY);
|
||||||
|
break;
|
||||||
case TR_SQUO:
|
case TR_SQUO:
|
||||||
|
insert_brackets(TAPHOLD_SQUO, WAIT_DELAY);
|
||||||
|
break;
|
||||||
case TR_DQUO:
|
case TR_DQUO:
|
||||||
//isShift ? insert_brackets(LSFT(key), LSFT(altkey)) : insert_brackets(key, altkey);
|
insert_brackets(TAPHOLD_DQUO, WAIT_DELAY);
|
||||||
insert_brackets(key, altkey);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//custom and faux auto-shift
|
|
||||||
case TR_LPRN:
|
case TR_LPRN:
|
||||||
insert_brackets(KC_LPRN, KC_RPRN);
|
insert_brackets(TAPHOLD_LPRN, WAIT_DELAY);
|
||||||
break;
|
break;
|
||||||
case TR_COMM:
|
|
||||||
case TR_DOT:
|
//double tap
|
||||||
case TR_PERC:
|
|
||||||
case TR_EQL:
|
case TR_EQL:
|
||||||
|
double_tap(TAPHOLD_EQL, WAIT_DELAY);
|
||||||
|
break;
|
||||||
|
case TR_PLUS:
|
||||||
|
double_tap(TAPHOLD_PLUS, WAIT_DELAY);
|
||||||
|
break;
|
||||||
|
case TR_PIPE:
|
||||||
|
double_tap(TAPHOLD_PIPE, WAIT_DELAY);
|
||||||
|
break;
|
||||||
|
|
||||||
|
//custom action
|
||||||
|
case TR_COMM:
|
||||||
|
single_tap(TAPHOLD_COMM, isHold);
|
||||||
|
break;
|
||||||
|
case TR_DOT:
|
||||||
|
single_tap(TAPHOLD_DOT, isHold);
|
||||||
|
break;
|
||||||
|
case TR_PERC:
|
||||||
|
single_tap(TAPHOLD_PERC, isHold);
|
||||||
|
break;
|
||||||
|
case TR_EXLM:
|
||||||
|
double_tap(TAPHOLD_NEQL, WAIT_DELAY);
|
||||||
|
break;
|
||||||
|
|
||||||
|
//simulates auto-shift
|
||||||
case TR_MINS:
|
case TR_MINS:
|
||||||
|
single_tap(TAPHOLD_MINS, isHold);
|
||||||
|
break;
|
||||||
case TR_GRV:
|
case TR_GRV:
|
||||||
|
single_tap(TAPHOLD_GRV, isHold);
|
||||||
|
break;
|
||||||
case TR_SCLN:
|
case TR_SCLN:
|
||||||
|
single_tap(TAPHOLD_SCLN, isHold);
|
||||||
|
break;
|
||||||
case TR_QUOT:
|
case TR_QUOT:
|
||||||
tap_code16(altkey);
|
single_tap(TAPHOLD_QUOT, isHold);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true; // Continue default handling.
|
return true; // Continue default handling.
|
||||||
|
|
|
@ -1,6 +1,42 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "t4corun.h"
|
#include "t4corun.h"
|
||||||
|
|
||||||
void insert_brackets(uint16_t left, uint16_t right);
|
void single_tap(uint16_t key, uint16_t altkey, bool isHold);
|
||||||
void double_tap(uint16_t keycode, uint32_t ms);
|
void double_tap(uint16_t key, uint16_t altkey, uint32_t ms);
|
||||||
bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode);
|
void insert_brackets(uint16_t left, uint16_t right, uint32_t ms);
|
||||||
|
bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode);
|
||||||
|
|
||||||
|
/* the first element is the alt key (tap action)
|
||||||
|
* the second is altkey (hold action usually)
|
||||||
|
*
|
||||||
|
* I was doing a switch statement to assign these each time, but this is faster
|
||||||
|
* and easier to maintain
|
||||||
|
*/
|
||||||
|
|
||||||
|
//Brackets: open and close brackets and put the cursor inside
|
||||||
|
#define TAPHOLD_LCBR KC_LCBR, KC_RCBR
|
||||||
|
#define TAPHOLD_LABK KC_LABK, KC_RABK
|
||||||
|
#define TAPHOLD_LBRC KC_LBRC, KC_RBRC
|
||||||
|
#define TAPHOLD_SQUO KC_QUOT, KC_QUOT
|
||||||
|
#define TAPHOLD_DQUO KC_DQUO, KC_DQUO
|
||||||
|
#define TAPHOLD_LPRN KC_LPRN, KC_RPRN
|
||||||
|
|
||||||
|
//double tap
|
||||||
|
#define TAPHOLD_EQL KC_EQL, KC_EQL
|
||||||
|
#define TAPHOLD_PLUS KC_PLUS, KC_PLUS
|
||||||
|
#define TAPHOLD_PIPE KC_PIPE, KC_PIPE
|
||||||
|
|
||||||
|
//Custom: things like overriding default shifted key
|
||||||
|
#define TAPHOLD_COMM KC_COMM, KC_LPRN
|
||||||
|
#define TAPHOLD_DOT KC_DOT, KC_RPRN
|
||||||
|
#define TAPHOLD_PERC KC_PERC, KC_CIRC
|
||||||
|
#define TAPHOLD_EXLM KC_EXLM, KC_EXLM
|
||||||
|
#define TAPHOLD_NEQL KC_EXLM, KC_EQL
|
||||||
|
|
||||||
|
//auto shift
|
||||||
|
#define TAPHOLD_MINS KC_MINS, KC_UNDS
|
||||||
|
#define TAPHOLD_GRV KC_GRV, KC_TILD
|
||||||
|
#define TAPHOLD_SCLN KC_SCLN, KC_COLN
|
||||||
|
#define TAPHOLD_QUOT KC_QUOT, KC_DQUO
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -13,44 +13,48 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
|
|
||||||
case BASELYR:
|
case BASELYR:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
current_base_layer = (current_base_layer + 1) % NUM_BASE_LAYER;
|
current_base_layer = (current_base_layer + 1) % NUM_BASE_LAYER;
|
||||||
set_single_persistent_default_layer(current_base_layer);
|
set_single_persistent_default_layer(current_base_layer);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
case PN_DRGS:
|
case PN_DRGS:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
double_tap(KC_NUM, WAIT_DELAY);
|
//tap numlock twice to toggle ploopy nano drag scroll
|
||||||
}
|
double_tap(KC_NUM, KC_NUM,WAIT_DELAY);
|
||||||
return false;
|
}
|
||||||
|
return false;
|
||||||
case PN_PDPI:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
double_tap(KC_CAPS, WAIT_DELAY);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
|
|
||||||
//https://docs.qmk.fm/#/mod_tap?id=changing-both-tasp-and-hold
|
case PN_PDPI:
|
||||||
//https://getreuer.info/posts/keyboards/triggers/index.html#tap-vs.-long-press
|
if (record->event.pressed) {
|
||||||
//https://www.jonashietala.se/series/t-34/ he focuses on a keymap for programming/VIM
|
//tap capslock twice to cycle ploopy nano pointer DPI
|
||||||
case TR_LCBR:
|
double_tap(KC_CAPS, KC_CAPS, WAIT_DELAY);
|
||||||
case TR_LABK:
|
}
|
||||||
case TR_LBRC:
|
return false;
|
||||||
case TR_SQUO:
|
|
||||||
case TR_DQUO:
|
|
||||||
case TR_LPRN:
|
|
||||||
case TR_COMM:
|
|
||||||
case TR_DOT:
|
|
||||||
case TR_PERC:
|
|
||||||
case TR_EQL:
|
|
||||||
case TR_MINS:
|
|
||||||
case TR_GRV:
|
|
||||||
case TR_SCLN:
|
|
||||||
case TR_QUOT:
|
|
||||||
return process_tap_hold_key(record, keycode);
|
|
||||||
|
|
||||||
|
//https://docs.qmk.fm/#/mod_tap?id=changing-both-tasp-and-hold
|
||||||
|
//https://getreuer.info/posts/keyboards/triggers/index.html#tap-vs.-long-press
|
||||||
|
//https://www.jonashietala.se/series/t-34/ he focuses on a keymap for programming/VIM
|
||||||
|
case TR_LCBR:
|
||||||
|
case TR_LABK:
|
||||||
|
case TR_LBRC:
|
||||||
|
case TR_LPRN:
|
||||||
|
case TR_SQUO:
|
||||||
|
case TR_DQUO:
|
||||||
|
case TR_EQL:
|
||||||
|
case TR_PLUS:
|
||||||
|
case TR_PIPE:
|
||||||
|
case TR_COMM:
|
||||||
|
case TR_DOT:
|
||||||
|
case TR_PERC:
|
||||||
|
case TR_EXLM:
|
||||||
|
case TR_MINS:
|
||||||
|
case TR_GRV:
|
||||||
|
case TR_SCLN:
|
||||||
|
case TR_QUOT:
|
||||||
|
return process_tap_hold_key(record, keycode);
|
||||||
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -11,22 +11,27 @@ enum layers {
|
||||||
_NAVIGATION,
|
_NAVIGATION,
|
||||||
_NUMBER,
|
_NUMBER,
|
||||||
_SYMBOL,
|
_SYMBOL,
|
||||||
_FUNCTION,
|
|
||||||
_CONFIG
|
_CONFIG
|
||||||
};
|
};
|
||||||
|
|
||||||
enum keycodes {
|
enum keycodes {
|
||||||
//These are only here to make the case statements unique in taphold.c
|
//These are only here to make the taphold/defines unique
|
||||||
TH_LCBR = QK_USER,
|
TH_LCBR = QK_USER,
|
||||||
TH_LABK,
|
TH_LABK,
|
||||||
TH_LBRC,
|
TH_LBRC,
|
||||||
|
TH_LPRN,
|
||||||
TH_SQUO,
|
TH_SQUO,
|
||||||
TH_DQUO,
|
TH_DQUO,
|
||||||
TH_LPRN,
|
|
||||||
|
TH_EQL,
|
||||||
|
TH_PLUS,
|
||||||
|
TH_PIPE,
|
||||||
|
|
||||||
TH_COMM,
|
TH_COMM,
|
||||||
TH_DOT,
|
TH_DOT,
|
||||||
TH_PERC,
|
TH_PERC,
|
||||||
TH_EQL,
|
TH_EXLM,
|
||||||
|
|
||||||
TH_MINS,
|
TH_MINS,
|
||||||
TH_GRV,
|
TH_GRV,
|
||||||
TH_SCLN,
|
TH_SCLN,
|
||||||
|
@ -44,7 +49,6 @@ enum keycodes {
|
||||||
#define NAV MO(_NAVIGATION)
|
#define NAV MO(_NAVIGATION)
|
||||||
#define NAV_0 LT(_NAVIGATION, KC_0)
|
#define NAV_0 LT(_NAVIGATION, KC_0)
|
||||||
#define NUM MO(_NUMBER)
|
#define NUM MO(_NUMBER)
|
||||||
#define FUNC MO(_FUNCTION)
|
|
||||||
#define CONFIG MO(_CONFIG)
|
#define CONFIG MO(_CONFIG)
|
||||||
|
|
||||||
// Windows Shortcuts
|
// Windows Shortcuts
|
||||||
|
@ -75,19 +79,24 @@ enum keycodes {
|
||||||
#define TR_LGUI OSM(MOD_LGUI)
|
#define TR_LGUI OSM(MOD_LGUI)
|
||||||
|
|
||||||
|
|
||||||
//tap hoLd
|
//tap hoLd. These will be intercepted and overridden. The LT will be ignored
|
||||||
#define TR_LCBR LT(_DEFAULT_LAYER_1, TH_LCBR) // bracket behvavior
|
#define TR_LCBR LT(_DEFAULT_LAYER_1, TH_LCBR) // bracket behvavior
|
||||||
#define TR_LABK LT(_DEFAULT_LAYER_1, TH_LABK)
|
#define TR_LABK LT(_DEFAULT_LAYER_1, TH_LABK)
|
||||||
#define TR_LBRC LT(_DEFAULT_LAYER_1, TH_LBRC)
|
#define TR_LBRC LT(_DEFAULT_LAYER_1, TH_LBRC)
|
||||||
|
#define TR_LPRN LT(_DEFAULT_LAYER_1, TH_LPRN)
|
||||||
#define TR_SQUO LT(_DEFAULT_LAYER_1, TH_SQUO)
|
#define TR_SQUO LT(_DEFAULT_LAYER_1, TH_SQUO)
|
||||||
#define TR_DQUO LT(_DEFAULT_LAYER_1, TH_DQUO)
|
#define TR_DQUO LT(_DEFAULT_LAYER_1, TH_DQUO)
|
||||||
|
|
||||||
#define TR_LPRN LT(_DEFAULT_LAYER_1, TH_LPRN) // custom behavior
|
#define TR_EQL LT(_DEFAULT_LAYER_1, TH_EQL) // double tap
|
||||||
#define TR_COMM LT(_DEFAULT_LAYER_1, TH_COMM)
|
#define TR_PLUS LT(_DEFAULT_LAYER_1, TH_PLUS)
|
||||||
|
#define TR_PIPE LT(_DEFAULT_LAYER_1, TH_PIPE)
|
||||||
|
|
||||||
|
#define TR_COMM LT(_DEFAULT_LAYER_1, TH_COMM) // custom behavior
|
||||||
#define TR_DOT LT(_DEFAULT_LAYER_1, TH_DOT)
|
#define TR_DOT LT(_DEFAULT_LAYER_1, TH_DOT)
|
||||||
#define TR_PERC LT(_DEFAULT_LAYER_1, TH_PERC)
|
#define TR_PERC LT(_DEFAULT_LAYER_1, TH_PERC)
|
||||||
|
#define TR_EXLM LT(_DEFAULT_LAYER_1, TH_EXLM)
|
||||||
|
|
||||||
#define TR_EQL LT(_DEFAULT_LAYER_1, TH_EQL) // basically auto shift
|
// basically auto shift
|
||||||
#define TR_MINS LT(_DEFAULT_LAYER_1, TH_MINS)
|
#define TR_MINS LT(_DEFAULT_LAYER_1, TH_MINS)
|
||||||
#define TR_GRV LT(_DEFAULT_LAYER_1, TH_GRV)
|
#define TR_GRV LT(_DEFAULT_LAYER_1, TH_GRV)
|
||||||
#define TR_SCLN LT(_DEFAULT_LAYER_1, TH_SCLN)
|
#define TR_SCLN LT(_DEFAULT_LAYER_1, TH_SCLN)
|
||||||
|
@ -96,12 +105,7 @@ enum keycodes {
|
||||||
|
|
||||||
#if defined(MOUSEKEY_ENABLE)
|
#if defined(MOUSEKEY_ENABLE)
|
||||||
|
|
||||||
# define TR_MOUU KC_MS_U
|
# define TR_MWHU KC_WH_U
|
||||||
# define TR_MOUD KC_MS_D
|
|
||||||
# define TR_MOUL KC_MS_L
|
|
||||||
# define TR_MOUR KC_MS_R
|
|
||||||
|
|
||||||
# define TR_MWHU KC_WH_U //Mouse wheel keys are not needed unless the board has no encoders
|
|
||||||
# define TR_MWHD KC_WH_D
|
# define TR_MWHD KC_WH_D
|
||||||
|
|
||||||
# define TR_BTN1 KC_BTN1
|
# define TR_BTN1 KC_BTN1
|
||||||
|
@ -125,11 +129,6 @@ enum keycodes {
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
# define TR_MOUU ___x___
|
|
||||||
# define TR_MOUD ___x___
|
|
||||||
# define TR_MOUL ___x___
|
|
||||||
# define TR_MOUR ___x___
|
|
||||||
|
|
||||||
# define TR_MWHU ___x___
|
# define TR_MWHU ___x___
|
||||||
# define TR_MWHD ___x___
|
# define TR_MWHD ___x___
|
||||||
|
|
||||||
|
@ -185,7 +184,6 @@ enum keycodes {
|
||||||
#define _NONE_3__________________ ___x___, ___x___, ___x___
|
#define _NONE_3__________________ ___x___, ___x___, ___x___
|
||||||
#define _NONE_5____________________________________ ___x___, ___x___, ___x___, ___x___, ___x___
|
#define _NONE_5____________________________________ ___x___, ___x___, ___x___, ___x___, ___x___
|
||||||
#define _GACS_MODS________________________ TR_LGUI, TR_LALT, TR_LCTL, TR_LSFT
|
#define _GACS_MODS________________________ TR_LGUI, TR_LALT, TR_LCTL, TR_LSFT
|
||||||
#define _GACS_MOUSE_MODS_________ TR_LALT, TR_LCTL, TR_LSFT
|
|
||||||
#define _SCAG_MODS________________________ TR_LSFT, TR_LCTL, TR_LALT, TR_LGUI
|
#define _SCAG_MODS________________________ TR_LSFT, TR_LCTL, TR_LALT, TR_LGUI
|
||||||
#define _UCCPR_L___________________________________ SC_UNDO, SC_CUT, SC_COPY, SC_PAST, SC_REDO
|
#define _UCCPR_L___________________________________ SC_UNDO, SC_CUT, SC_COPY, SC_PAST, SC_REDO
|
||||||
|
|
||||||
|
@ -218,35 +216,38 @@ enum keycodes {
|
||||||
|
|
||||||
|
|
||||||
#define LAYER_NAVIGATION \
|
#define LAYER_NAVIGATION \
|
||||||
KC_ESC, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_INS, KC_CAPS, KC_SCRL, ___x___, ___x___, \
|
___x___, KC_HOME, KC_UP, KC_END, KC_PGUP, TR_MWHU, TR_DRGS, TR_SNIP, TR_SDPI, TR_PDPI, \
|
||||||
___x___, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, ___x___, _SCAG_MODS________________________, \
|
KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, TR_MWHD, _SCAG_MODS________________________, \
|
||||||
_UCCPR_L___________________________________, ___x___, KC_APP, KC_VOLD, KC_VOLU, KC_MUTE, \
|
_UCCPR_L___________________________________, ___x___, KC_APP, KC_VOLD, KC_VOLU, KC_MUTE, \
|
||||||
ZOOMRST, _______, KC_ENT, _LAYER_TRANS_____________
|
ZOOMRST, _______, KC_ENT, _LAYER_TRANS_____________
|
||||||
|
|
||||||
|
|
||||||
#define LAYER_NUMBER \
|
#define LAYER_NUMBER \
|
||||||
___x___, SC_SNIP, SC_FILE, ___x___, TR_GRV, ___x___, KC_7, KC_8, KC_9, ___x___, \
|
___x___, SC_SNIP, SC_FILE, ___x___, ___x___, ___x___, KC_7, KC_8, KC_9, ___x___, \
|
||||||
_GACS_MODS________________________, TR_SCLN, ___x___, KC_4, KC_5, KC_6, KC_DOT, \
|
_GACS_MODS________________________, ___x___, KC_DOT, KC_4, KC_5, KC_6, ___x___, \
|
||||||
_UCCPR_L___________________________________, ___x___, KC_1, KC_2, KC_3, TR_MINS, \
|
_UCCPR_L___________________________________, KC_COMM, KC_1, KC_2, KC_3, TR_MINS, \
|
||||||
_LAYER_TRANS_____________, KC_SPC, NAV_0, ___x___
|
_LAYER_TRANS_____________, KC_SPC, NAV_0, ___x___
|
||||||
|
|
||||||
|
|
||||||
#define LAYER_SYMBOL \
|
#define LAYER_SYMBOL \
|
||||||
___x___, ___x___, KC_AT, KC_DLR, TR_GRV, TR_EQL, KC_HASH, KC_ASTR, ___x___, TR_DQUO, \
|
___x___, ___x___, KC_AT, KC_DLR, TR_GRV, TR_EQL, KC_HASH, KC_ASTR, ___x___, TR_DQUO, \
|
||||||
KC_AMPR, TR_LCBR, KC_RCBR, KC_PIPE, TR_SCLN, ___x___, KC_QUES, TR_LBRC, KC_RBRC, TR_SQUO, \
|
KC_AMPR, TR_LCBR, KC_RCBR, TR_PIPE, TR_SCLN, TR_PLUS, KC_QUES, TR_LBRC, KC_RBRC, TR_SQUO, \
|
||||||
TR_PERC, TR_LABK, KC_RABK, KC_BSLS, KC_EXLM, ___x___, KC_SLSH, TR_LPRN, TR_DOT, TR_MINS, \
|
TR_PERC, TR_LABK, KC_RABK, KC_BSLS, TR_EXLM, ___x___, KC_SLSH, TR_LPRN, KC_RPRN, TR_MINS, \
|
||||||
_LAYER_TRANS_____________, _LAYER_TRANS_____________
|
_LAYER_TRANS_____________, _LAYER_TRANS_____________
|
||||||
|
|
||||||
|
|
||||||
#define LAYER_FUNCTION \
|
|
||||||
___x___, ___x___, TR_MOUU, ___x___, TR_MWHU, KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F10, \
|
|
||||||
___x___, TR_MOUL, TR_MOUD, TR_MOUR, TR_MWHD, KC_NUM, KC_F4, KC_F5, KC_F6, KC_F11, \
|
|
||||||
TR_PDPI, TR_SDPI, ___x___, TR_DRGS, TR_SNIP, KC_PAUS, KC_F1, KC_F2, KC_F3, KC_F12, \
|
|
||||||
_LAYER_TRANS_____________, TR_DMP1, TR_DMR1, ___x___
|
|
||||||
|
|
||||||
|
|
||||||
#define LAYER_CONFIG \
|
#define LAYER_CONFIG \
|
||||||
_NONE_5____________________________________, EE_CLR, QK_RBT, QK_BOOT, ___x___, ___x___, \
|
KC_F10, KC_F7, KC_F8, KC_F9, ___x___, TR_RMOD, ___x___, ___x___, ___x___, QK_BOOT, \
|
||||||
TR_RTOG, TR_RMOD, _NONE_3__________________, BASELYR, _SCAG_MODS________________________, \
|
KC_F11, KC_F4, KC_F5, KC_F6, ___x___, BASELYR, TR_LSFT, _NONE_3__________________, \
|
||||||
TR_RHUI, TR_RSAI, TR_RVAI, TR_RSPI, ___x___, _NONE_5____________________________________, \
|
KC_F12, KC_F1, KC_F2, KC_F3, ___x___, TR_RHUI, TR_RSAI, TR_RVAI, TR_RSPI, TR_RTOG, \
|
||||||
_NONE_3__________________, _NONE_3__________________
|
___x___, TR_DMR1, TR_DMP1, _NONE_3__________________
|
||||||
|
|
||||||
|
/*
|
||||||
|
If I was going to combine number and symbols together, it'd look like this
|
||||||
|
|
||||||
|
#define LAYER_NUMBER \
|
||||||
|
___x___, SC_SNIP, SC_FILE, TR_LABK, KC_RABK, TR_LBRC, KC_7, KC_8, KC_9, KC_RBRC, \
|
||||||
|
_GACS_MODS________________________, TR_GRV, TR_SCLN, KC_4, KC_5, KC_6, TR_EQL, \
|
||||||
|
_UCCPR_L___________________________________, KC_SLSH, KC_1, KC_2, KC_3, KC_BSLS, \
|
||||||
|
_LAYER_TRANS_____________, KC_SPC, NAV_0, ___x___
|
||||||
|
*/
|
Loading…
Add table
Add a link
Reference in a new issue