From 6afdbeb7d91e1ea4ff89ccd2685344c97a04d8c1 Mon Sep 17 00:00:00 2001 From: Sadek Baroudi Date: Wed, 16 Jun 2021 08:28:46 -0700 Subject: [PATCH] LEADERKEY support, and added combo for DELETE --- .../enigma36/keymaps/sadekbaroudi/keymap.c | 24 ++-- users/sadekbaroudi/config.h | 3 + users/sadekbaroudi/rules.mk | 3 +- users/sadekbaroudi/sadekbaroudi.c | 111 +++++++++++++++++- 4 files changed, 131 insertions(+), 10 deletions(-) diff --git a/keyboards/handwired/enigma36/keymaps/sadekbaroudi/keymap.c b/keyboards/handwired/enigma36/keymaps/sadekbaroudi/keymap.c index 2f9fb80b28..5555783d04 100644 --- a/keyboards/handwired/enigma36/keymaps/sadekbaroudi/keymap.c +++ b/keyboards/handwired/enigma36/keymaps/sadekbaroudi/keymap.c @@ -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( diff --git a/users/sadekbaroudi/config.h b/users/sadekbaroudi/config.h index bcb6584346..d14beacc81 100755 --- a/users/sadekbaroudi/config.h +++ b/users/sadekbaroudi/config.h @@ -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 diff --git a/users/sadekbaroudi/rules.mk b/users/sadekbaroudi/rules.mk index c7b7578a33..c392d9c0f9 100755 --- a/users/sadekbaroudi/rules.mk +++ b/users/sadekbaroudi/rules.mk @@ -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 diff --git a/users/sadekbaroudi/sadekbaroudi.c b/users/sadekbaroudi/sadekbaroudi.c index 97d2f17439..22db6ce618 100755 --- a/users/sadekbaroudi/sadekbaroudi.c +++ b/users/sadekbaroudi/sadekbaroudi.c @@ -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; } +