LEADERKEY support, and added combo for DELETE

This commit is contained in:
Sadek Baroudi 2021-06-16 08:28:46 -07:00
parent 854f60be2b
commit 6afdbeb7d9
4 changed files with 131 additions and 10 deletions

View File

@ -27,18 +27,21 @@
enum combo_events {
UNDO,
REDO,
CAPSWORD
//CAPSWORD,
DELETE
};
const uint16_t PROGMEM undo_combo[] = {KC_Z, KC_X, COMBO_END};
// TODO - this doesn't work at all since I tuse the KC_SLSH for mouse keys. Need to change that before I can use this.
const uint16_t PROGMEM redo_combo[] = {KC_DOT, KC_SLSH, COMBO_END};
const uint16_t PROGMEM capsword_combo[] = {KC_X, KC_C, COMBO_END};
const uint16_t PROGMEM delete_combo[] = {KC_X, KC_C, COMBO_END};
//const uint16_t PROGMEM capsword_combo[] = {KC_X, KC_C, COMBO_END};
combo_t key_combos[COMBO_COUNT] = {
[UNDO] = COMBO_ACTION(undo_combo),
[REDO] = COMBO_ACTION(redo_combo),
[CAPSWORD] = COMBO_ACTION(capsword_combo),
[DELETE] = COMBO_ACTION(delete_combo),
// [CAPSWORD] = COMBO_ACTION(capsword_combo),
};
void process_combo_event(uint16_t combo_index, bool pressed) {
@ -53,12 +56,17 @@ void process_combo_event(uint16_t combo_index, bool pressed) {
tap_code16(LCTL(KC_Y));
}
break;
case CAPSWORD:
// NOTE: if you change this behavior, may want to update in process_records.c for capsword macro behavior
case DELETE:
if (pressed) {
enable_caps_word();
tap_code16(KC_DEL);
}
break;
// case CAPSWORD:
// // NOTE: if you change this behavior, may want to update in process_records.c for capsword macro behavior
// if (pressed) {
// enable_caps_word();
// }
// break;
}
}
// END COMBOS
@ -81,7 +89,7 @@ void process_combo_event(uint16_t combo_index, bool pressed) {
K01, K02, K03, K04, K05, K06, K07, LT(_WINNAV,K08), K09, K0A, \
LCTL_T(K11), LGUI_T(K12), LALT_T(K13), LSFT_T(K14), K15, K16, RSFT_T(K17), RALT_T(K18), RGUI_T(K19), RCTL_T(K1A), \
K21, K22, K23, K24, K25, K26, K27, K28, K29, LT(_MOUSE, K2A), \
KC_DEL, LT(_NAVIGATION,KC_ENT), LT(_FUNCTION,KC_TAB), LT(_FUNCTION,KC_BSPC), LT(_SYMBOLS,KC_SPACE), KC_QUOT \
KC_LEAD, LT(_NAVIGATION,KC_ENT), LT(_FUNCTION,KC_TAB), LT(_FUNCTION,KC_BSPC), LT(_SYMBOLS,KC_SPACE), KC_QUOT \
)
/* Re-pass though to allow templates to be used */
@ -118,7 +126,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
________________SYMBOLS_L1_________________, ________________SYMBOLS_R1_________________,
________________SYMBOLS_L2_________________, ________________SYMBOLS_R2_________________,
________________SYMBOLS_L3_________________, ________________SYMBOLS_R3_________________,
_______, MO(_MEDIA), KC_TAB, KC_BSPC, _______, _______
_______, MO(_MEDIA), KC_DEL, KC_BSPC, _______, _______
),
[_FUNCTION] = LAYOUT_wrapper(

View File

@ -91,6 +91,9 @@
#define TAP_CODE_DELAY 25
#define LEADER_TIMEOUT 500
#define LEADER_PER_KEY_TIMING
#define TAPPING_FORCE_HOLD
#define IGNORE_MOD_TAP_INTERRUPT

View File

@ -8,9 +8,10 @@ SWAP_HANDS_ENABLE= no # Allow swapping hands of keyboard
MOUSEKEY_ENABLE = yes
BACKLIGHT_ENABLE = no
NKRO_ENABLE = no
RAW_ENABLE = yes
RAW_ENABLE = no
CASEMODES_ENABLE = yes
COMBO_ENABLE = yes
LEADER_ENABLE = yes
# UNCOMMENT TO DISABLE MACROS
# EXTRAFLAGS += -flto

View File

@ -3,13 +3,117 @@
userspace_config_t userspace_config;
bool is_caps_lock_on;
void handle_caps_lock_change(void) {
#if defined(RGBLIGHT_ENABLE) // We only do this because we want the layer color to change
layer_state_set_user(layer_state);
#endif // RGBLIGHT_ENABLE
}
// Leader key combos - TODO move into another file?
#if defined(LEADER_ENABLE)
LEADER_EXTERNS();
void matrix_scan_leader_key(void) {
LEADER_DICTIONARY() {
leading = false;
leader_end();
SEQ_ONE_KEY(KC_Q) {
// Anything you can do in a macro.
SEND_STRING("QMK is awesome.");
}
// Time shortcuts
SEQ_TWO_KEYS(KC_H, KC_SLSH) {
SEND_STRING("1:00");
}
SEQ_TWO_KEYS(KC_COMM, KC_SLSH) {
SEND_STRING("2:00");
}
SEQ_TWO_KEYS(KC_DOT, KC_SLSH) {
SEND_STRING("3:00");
}
SEQ_TWO_KEYS(KC_N, KC_SLSH) {
SEND_STRING("4:00");
}
SEQ_TWO_KEYS(KC_E, KC_SLSH) {
SEND_STRING("5:00");
}
SEQ_TWO_KEYS(KC_I, KC_SLSH) {
SEND_STRING("6:00");
}
SEQ_TWO_KEYS(KC_L, KC_SLSH) {
SEND_STRING("7:00");
}
SEQ_TWO_KEYS(KC_U, KC_SLSH) {
SEND_STRING("8:00");
}
SEQ_TWO_KEYS(KC_Y, KC_SLSH) {
SEND_STRING("9:00");
}
SEQ_THREE_KEYS(KC_H, KC_SLSH, KC_SLSH) {
SEND_STRING("10:00");
}
SEQ_THREE_KEYS(KC_H, KC_H, KC_SLSH) {
SEND_STRING("11:00");
}
SEQ_THREE_KEYS(KC_H, KC_COMM, KC_SLSH) {
SEND_STRING("12:00");
}
SEQ_TWO_KEYS(KC_H, KC_DOT) {
SEND_STRING("1:30");
}
SEQ_TWO_KEYS(KC_COMM, KC_DOT) {
SEND_STRING("2:30");
}
SEQ_TWO_KEYS(KC_DOT, KC_DOT) {
SEND_STRING("3:30");
}
SEQ_TWO_KEYS(KC_N, KC_DOT) {
SEND_STRING("4:30");
}
SEQ_TWO_KEYS(KC_E, KC_DOT) {
SEND_STRING("5:30");
}
SEQ_TWO_KEYS(KC_I, KC_DOT) {
SEND_STRING("6:30");
}
SEQ_TWO_KEYS(KC_L, KC_DOT) {
SEND_STRING("7:30");
}
SEQ_TWO_KEYS(KC_U, KC_DOT) {
SEND_STRING("8:30");
}
SEQ_TWO_KEYS(KC_Y, KC_DOT) {
SEND_STRING("9:30");
}
SEQ_THREE_KEYS(KC_H, KC_SLSH, KC_DOT) {
SEND_STRING("10:30");
}
SEQ_THREE_KEYS(KC_H, KC_H, KC_DOT) {
SEND_STRING("11:30");
}
SEQ_THREE_KEYS(KC_H, KC_COMM, KC_DOT) {
SEND_STRING("12:30");
}
//
SEQ_TWO_KEYS(KC_D, KC_D) {
SEND_STRING(SS_LCTL("a") SS_LCTL("c"));
}
SEQ_THREE_KEYS(KC_D, KC_D, KC_S) {
SEND_STRING("https://start.duckduckgo.com\n");
}
SEQ_TWO_KEYS(KC_A, KC_S) {
register_code(KC_LGUI);
register_code(KC_S);
unregister_code(KC_S);
unregister_code(KC_LGUI);
}
}
}
#endif
__attribute__((weak)) void keyboard_pre_init_keymap(void) {}
void keyboard_pre_init_user(void) {
@ -98,6 +202,10 @@ void matrix_scan_user(void) {
matrix_scan_rgb_matrix();
#endif
#if defined(LEADER_ENABLE)
matrix_scan_leader_key();
#endif
matrix_scan_keymap();
}
@ -151,3 +259,4 @@ bool hasAllBitsInMask(uint8_t value, uint8_t mask) {
return (value & mask) == mask;
}