From e4f4ceaf3f2e3d25fb282273a81f9b58790fc427 Mon Sep 17 00:00:00 2001 From: lokher Date: Wed, 26 Apr 2023 16:32:15 +0800 Subject: merge upstream 713427c --- users/333fred/333fred.c | 8 +- users/333fred/333fred.h | 4 +- users/alfrdmalr/alfrdmalr.c | 16 +- users/alfrdmalr/alfrdmalr.h | 4 +- users/arkag/arkag.c | 261 ++++++++++----------- users/bcat/config.h | 2 +- users/billypython/tap_dance.c | 12 +- users/brandonschlack/process_records.c | 6 +- users/brandonschlack/tap_dances.c | 22 +- users/brandonschlack/tap_dances.h | 10 +- users/charlesrocket/apl.c | 2 +- users/curry/leader.c | 24 -- users/curry/leader.h | 3 - users/curry/leader_user.c | 31 +++ users/curry/leader_user.h | 3 + users/curry/rules.mk | 2 +- users/curry/tap_dances.c | 2 +- users/curry/wrappers.h | 2 +- users/cwebster2/config.h | 2 +- users/d4mation/d4mation.c | 4 +- users/d4mation/tap-dance.c | 2 +- users/danielo515/danielo515.c | 171 ++++++++------ users/danielo515/tap_dance.c | 22 +- users/danielo515/tap_dance.h | 22 +- users/draevin/draevin.c | 2 +- users/drashna/audio_config.h | 33 +++ users/drashna/callbacks.c | 127 +++++++--- users/drashna/callbacks.md | 2 +- users/drashna/config.h | 47 +--- users/drashna/drashna.c | 51 +++- users/drashna/drashna.h | 6 +- users/drashna/keyrecords/capwords.md | 36 --- users/drashna/keyrecords/process_records.c | 35 ++- users/drashna/keyrecords/process_records.h | 17 +- users/drashna/keyrecords/readme.md | 2 - users/drashna/keyrecords/tap_dance.md | 4 +- users/drashna/keyrecords/tap_dances.c | 4 +- users/drashna/keyrecords/tapping.c | 23 +- users/drashna/keyrecords/wrappers.h | 2 +- users/drashna/oled/oled_stuff.c | 58 ++--- users/drashna/oled/oled_stuff.h | 9 +- users/drashna/oled/sh110x.c | 113 +++++---- users/drashna/pointing/pointing.c | 13 +- users/drashna/pointing/pointing_config.h | 6 + users/drashna/post_config.h | 2 +- users/drashna/rgb/rgb_matrix_stuff.c | 5 +- users/drashna/rgb/rgb_matrix_stuff.h | 2 +- users/drashna/rules.mk | 5 + users/drashna/split/split_config.h | 12 +- users/drashna/split/transport_sync.c | 2 +- users/drashna/split/transport_sync.h | 2 +- users/dshields/config.h | 2 +- users/dshields/dshields.c | 7 +- users/dshields/dshields.h | 4 +- users/dvorak_42_key/config.h | 8 + users/dvorak_42_key/dvorak_42_key.c | 205 ++++++++++++++++ users/dvorak_42_key/dvorak_42_key.h | 161 +++++++++++++ users/dvorak_42_key/rules.mk | 7 + users/dvorak_42_key/vscode_macros.h | 35 +++ users/edvorakjp/edvorakjp.c | 2 +- users/edvorakjp/edvorakjp_tap_dance.c | 12 +- users/ericgebhart/extensions/keycodes.h | 6 +- users/ericgebhart/extensions/oneshot.c | 4 +- users/ericgebhart/extensions/tap_dances.c | 14 +- users/ericgebhart/layers/utility.h | 2 +- users/ericgebhart/oled/oled_stuff.c | 2 +- users/ericgebhart/rules.mk | 2 +- users/gourdo1/gourdo1.c | 2 +- users/greatwizard/tap_dances.c | 12 +- users/greatwizard/tap_dances.h | 10 +- users/haervig/haervig.c | 30 +-- users/hvp/tap_dances.c | 22 +- users/imchipwood/imchipwood.c | 16 +- users/imchipwood/imchipwood.h | 16 +- users/ishtob/config.h | 2 - users/ishtob/ishtob.h | 2 +- users/jdelkins/jdelkins.c | 4 +- users/jdelkins/jdelkins.h | 4 +- users/jjerrell/jjerrell.c | 65 +++-- users/jjerrell/wrappers.h | 6 +- users/jonavin/jonavin.c | 8 +- users/klackygears/klackygears.h | 2 +- users/klackygears/tap_dances.c | 28 +-- users/konstantin/konstantin.c | 2 +- users/konstantin/tap_dance.c | 34 +-- users/konstantin/unicode.c | 2 +- users/konstantin/unicode.h | 2 +- users/kuatsure/kuatsure.c | 143 ++++++----- users/kuchosauronad0/config.h | 2 +- users/kuchosauronad0/encoder.c | 4 +- users/kuchosauronad0/leader.c | 116 --------- users/kuchosauronad0/leader.h | 6 - users/kuchosauronad0/leader_user.c | 113 +++++++++ users/kuchosauronad0/leader_user.h | 6 + users/kuchosauronad0/readme.md | 4 +- users/kuchosauronad0/rgblight_user.c | 2 +- users/kuchosauronad0/rules.mk | 2 +- users/kuchosauronad0/tap_dances.c | 6 +- users/kuchosauronad0/tap_dances.h | 2 +- users/kuchosauronad0/unicode.c | 2 +- users/kuchosauronad0/wrappers.h | 4 +- users/losinggeneration/losinggeneration-keymap.h | 12 +- users/manna-harbour_miryoku/config.h | 3 +- .../manna-harbour_miryoku/manna-harbour_miryoku.c | 6 +- users/mattly/mattly.c | 2 +- users/miles2go/babblePaste.c | 4 +- .../keymaps/handwired/ms_sculpt_mobile/keymap.c | 84 +++---- users/miles2go/milestogo.h | 2 +- users/mnil/mnil.c | 12 +- users/muppetjones/config.h | 2 +- users/muppetjones/features/dancelayers.c | 6 +- users/muppetjones/features/dancelayers.h | 8 +- users/muppetjones/wrappers.h | 2 - users/ninjonas/ninjonas.c | 2 +- users/ninjonas/tap_dances.c | 12 +- users/nstickney/nstickney.c | 8 +- users/nstickney/unicodemap.h | 2 +- users/pvinis/pvinis.c | 2 +- users/replicaJunction/features/.gitignore | 2 - users/replicaJunction/features/caps_word.c | 105 --------- users/replicaJunction/features/caps_word.h | 26 -- users/replicaJunction/features/mouse_jiggle.c | 46 ---- users/replicaJunction/features/mouse_jiggle.h | 23 -- users/replicaJunction/features/num_word.c | 129 ---------- users/replicaJunction/features/num_word.h | 27 --- users/replicaJunction/features/secrets.c | 51 ---- users/replicaJunction/features/secrets.h | 30 --- users/replicaJunction/features/super_alt_tab.c | 52 ---- users/replicaJunction/features/super_alt_tab.h | 27 --- users/replicaJunction/keycode_aliases.h | 85 ------- users/replicaJunction/matrix_scan.c | 35 --- users/replicaJunction/process_records.c | 149 ------------ users/replicaJunction/process_records.h | 21 -- users/replicaJunction/readme.md | 93 -------- users/replicaJunction/replicaJunction.c | 25 -- users/replicaJunction/replicaJunction.h | 42 ---- users/replicaJunction/rj_keycodes.h | 63 ----- users/replicaJunction/rj_layers.h | 40 ---- users/replicaJunction/rules.mk | 33 --- users/riblee/riblee.c | 10 +- users/riblee/riblee.h | 10 +- users/ridingqwerty/config.h | 2 +- users/ridingqwerty/ridingqwerty.c | 14 +- users/ridingqwerty/tapdances.c | 6 +- users/ridingqwerty/unicode.c | 2 +- users/ridingqwerty/unicode.h | 2 +- users/rmeli/keyrecords/tap_dances.c | 12 +- users/rmeli/keyrecords/tap_dances.h | 10 +- users/rmeli/keyrecords/unicode.h | 2 +- users/rmeli/keyrecords/wrappers.h | 6 +- users/rmw/tapdances.c | 44 ++-- users/rmw/tapdances.h | 42 ++-- users/romus/romus.c | 4 +- users/romus/romus.h | 4 +- users/rupa/unicode.c | 2 +- users/rverst/unicode.h | 2 +- users/sethBarberee/config.h | 3 - users/sethBarberee/tap_dance.c | 8 +- users/sigma/sigma.c | 33 +-- users/snowe/wrappers.h | 2 +- users/spidey3/layer_rgb.c | 2 +- users/spidey3/spidey3_unicode.c | 2 +- users/stanrc85/stanrc85.c | 10 +- users/stanrc85/stanrc85.h | 6 +- users/talljoe/macros.c | 6 +- users/talljoe/talljoe.h | 2 +- users/talljoe/tapdance/actions/td.function.c | 4 +- users/talljoe/tapdance/actions/td.grave.c | 4 +- users/talljoe/tapdance/actions/td.lock.c | 4 +- users/talljoe/tapdance/actions/td.semicolon.c | 6 +- users/talljoe/tapdance/tapdance_actions.c | 2 +- users/talljoe/tapdance/td_setup.c | 4 +- users/talljoe/tapdance/td_setup.h | 4 +- users/tominabox1/tominabox1.c | 8 +- users/twschum/xtonhasvim.c | 2 +- users/uqs/config.h | 2 +- users/uqs/uqs.c | 47 ++-- users/vosechu/config.h | 2 +- users/wanleg/tapdances.c | 28 +-- users/xtonhasvim/xtonhasvim.c | 2 +- users/xulkal/config.h | 5 +- users/xulkal/custom_tap_dance.c | 2 +- users/xulkal/layouts.h | 4 +- users/yet-another-developer/config.h | 2 +- users/yet-another-developer/leader.c | 46 ---- users/yet-another-developer/leader.h | 6 - users/yet-another-developer/leader_user.c | 41 ++++ users/yet-another-developer/leader_user.h | 6 + users/yet-another-developer/rules.mk | 2 +- users/yet-another-developer/tap_dances.c | 6 +- users/yet-another-developer/tap_dances.h | 2 +- users/yet-another-developer/unicode.c | 2 +- users/zer09/tap_dance.c | 28 +-- users/zer09/tap_dance.h | 26 +- users/zigotica/tapdances.c | 4 +- users/zyber/zyber.c | 18 +- users/zyber/zyber.h | 16 +- 197 files changed, 1818 insertions(+), 2449 deletions(-) delete mode 100644 users/curry/leader.c delete mode 100644 users/curry/leader.h create mode 100644 users/curry/leader_user.c create mode 100644 users/curry/leader_user.h create mode 100644 users/drashna/audio_config.h delete mode 100644 users/drashna/keyrecords/capwords.md create mode 100644 users/drashna/pointing/pointing_config.h create mode 100644 users/dvorak_42_key/config.h create mode 100644 users/dvorak_42_key/dvorak_42_key.c create mode 100644 users/dvorak_42_key/dvorak_42_key.h create mode 100644 users/dvorak_42_key/rules.mk create mode 100644 users/dvorak_42_key/vscode_macros.h delete mode 100644 users/kuchosauronad0/leader.c delete mode 100644 users/kuchosauronad0/leader.h create mode 100644 users/kuchosauronad0/leader_user.c create mode 100644 users/kuchosauronad0/leader_user.h delete mode 100644 users/replicaJunction/features/.gitignore delete mode 100644 users/replicaJunction/features/caps_word.c delete mode 100644 users/replicaJunction/features/caps_word.h delete mode 100644 users/replicaJunction/features/mouse_jiggle.c delete mode 100644 users/replicaJunction/features/mouse_jiggle.h delete mode 100644 users/replicaJunction/features/num_word.c delete mode 100644 users/replicaJunction/features/num_word.h delete mode 100644 users/replicaJunction/features/secrets.c delete mode 100644 users/replicaJunction/features/secrets.h delete mode 100644 users/replicaJunction/features/super_alt_tab.c delete mode 100644 users/replicaJunction/features/super_alt_tab.h delete mode 100644 users/replicaJunction/keycode_aliases.h delete mode 100644 users/replicaJunction/matrix_scan.c delete mode 100644 users/replicaJunction/process_records.c delete mode 100644 users/replicaJunction/process_records.h delete mode 100644 users/replicaJunction/readme.md delete mode 100644 users/replicaJunction/replicaJunction.c delete mode 100644 users/replicaJunction/replicaJunction.h delete mode 100644 users/replicaJunction/rj_keycodes.h delete mode 100644 users/replicaJunction/rj_layers.h delete mode 100644 users/replicaJunction/rules.mk delete mode 100644 users/yet-another-developer/leader.c delete mode 100644 users/yet-another-developer/leader.h create mode 100644 users/yet-another-developer/leader_user.c create mode 100644 users/yet-another-developer/leader_user.h (limited to 'users') diff --git a/users/333fred/333fred.c b/users/333fred/333fred.c index c035493e37..e75a862a3e 100644 --- a/users/333fred/333fred.c +++ b/users/333fred/333fred.c @@ -31,7 +31,7 @@ typedef enum { static tap_dance_state_enum tap_dance_state; static bool tap_dance_active = false; -void tap_dance_sym_vim_finished(qk_tap_dance_state_t *state, void *user_data) { +void tap_dance_sym_vim_finished(tap_dance_state_t *state, void *user_data) { // Determine the current state if (state->count == 1) { if (state->interrupted || state->pressed == 0) tap_dance_state = SINGLE_TAP; @@ -60,7 +60,7 @@ void tap_dance_sym_vim_finished(qk_tap_dance_state_t *state, void *user_data) { } } -void tap_dance_sym_vim_reset(qk_tap_dance_state_t *state, void *user_data) { +void tap_dance_sym_vim_reset(tap_dance_state_t *state, void *user_data) { switch(tap_dance_state) { case SINGLE_TAP: clear_oneshot_layer_state(ONESHOT_PRESSED); @@ -74,7 +74,7 @@ void tap_dance_sym_vim_reset(qk_tap_dance_state_t *state, void *user_data) { } } -void tap_dance_copy_paste_finished(qk_tap_dance_state_t *state, void *user_data) { +void tap_dance_copy_paste_finished(tap_dance_state_t *state, void *user_data) { bool is_paste = state->count == 2; // If either the one-shot shift is set, or if shift is being held, count as shift being held. // We'll clear the one-shot shift if it was held @@ -103,7 +103,7 @@ void tap_dance_copy_paste_finished(qk_tap_dance_state_t *state, void *user_data) } } -qk_tap_dance_action_t tap_dance_actions[] = { +tap_dance_action_t tap_dance_actions[] = { [TD_SYM_VIM] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_dance_sym_vim_finished, tap_dance_sym_vim_reset), [TD_COPY_PASTE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_dance_copy_paste_finished, NULL) }; diff --git a/users/333fred/333fred.h b/users/333fred/333fred.h index 0532ff2df7..e8473e7ce1 100644 --- a/users/333fred/333fred.h +++ b/users/333fred/333fred.h @@ -45,7 +45,7 @@ enum custom_keys { PSCREEN_APP }; -void tap_dance_sym_vim_finished(qk_tap_dance_state_t*, void*); -void tap_dance_sym_vim_reset(qk_tap_dance_state_t*, void*); +void tap_dance_sym_vim_finished(tap_dance_state_t*, void*); +void tap_dance_sym_vim_reset(tap_dance_state_t*, void*); void tap_dance_process_keycode(uint16_t); bool try_handle_macro(uint16_t keycode, keyrecord_t *record); diff --git a/users/alfrdmalr/alfrdmalr.c b/users/alfrdmalr/alfrdmalr.c index 18ce8bad7c..7bc04fb55c 100644 --- a/users/alfrdmalr/alfrdmalr.c +++ b/users/alfrdmalr/alfrdmalr.c @@ -7,7 +7,12 @@ uint16_t muse_counter = 0; uint8_t muse_offset = 70; uint16_t muse_tempo = 50; -LEADER_EXTERNS(); +void leader_end_user(void) { + // reset keyboard to bootloader + if (leader_sequence_five_keys(KC_R, KC_E, KC_S, KC_E, KC_T)) { + reset_keyboard(); + } +} void matrix_scan_user(void) { #ifdef AUDIO_ENABLE @@ -28,15 +33,6 @@ void matrix_scan_user(void) { } } #endif - - LEADER_DICTIONARY() { - leading = false; - // reset keyboard to bootloader - SEQ_FIVE_KEYS(KC_R, KC_E, KC_S, KC_E, KC_T) { - reset_keyboard(); - } - leader_end(); - } } bool syml_pressed = false; diff --git a/users/alfrdmalr/alfrdmalr.h b/users/alfrdmalr/alfrdmalr.h index 851ab02815..0709f80b86 100644 --- a/users/alfrdmalr/alfrdmalr.h +++ b/users/alfrdmalr/alfrdmalr.h @@ -58,7 +58,7 @@ enum alfrdmalr_keycodes { #define K47 SYMR #define K48 KC_RALT #define K49 SETLAYER -#define K4A MU_TOG +#define K4A MU_TOGG // leftmost column #define K00 KC_ESC @@ -261,7 +261,7 @@ enum alfrdmalr_keycodes { // - CORE #define ___SETTINGS_L1___ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO #define ___SETTINGS_L2___ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO -#define ___SETTINGS_L3___ MU_TOG, AU_OFF, AU_ON, KC_NO, KC_NO +#define ___SETTINGS_L3___ MU_TOGG, AU_OFF, AU_ON, KC_NO, KC_NO // - MODS #define ___SETTINGS_L4___ KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO diff --git a/users/arkag/arkag.c b/users/arkag/arkag.c index e7c8218587..4e80b318a7 100644 --- a/users/arkag/arkag.c +++ b/users/arkag/arkag.c @@ -19,11 +19,11 @@ #define TYPING_SPEED_MAX_VALUE 200 uint8_t typing_speed = 0; -void velocikey_accelerate() { +void velocikey_accelerate(void) { if (typing_speed < TYPING_SPEED_MAX_VALUE) typing_speed += (TYPING_SPEED_MAX_VALUE / 50); } -void velocikey_decelerate() { +void velocikey_decelerate(void) { static uint16_t decay_timer = 0; if (timer_elapsed(decay_timer) > 500 || decay_timer == 0) { @@ -303,146 +303,141 @@ void pri_mod_keystroke(uint16_t key) { pri_mod(false); } +void leader_end_user(void) { + // begin OS functions + if (leader_sequence_two_keys(KC_P, KC_B)) { + if (current_os == OS_WIN) { + long_keystroke(2, (uint16_t[]){KC_LGUI, KC_PAUSE}); + } else { + return; + } + } + if (leader_sequence_two_keys(KC_S, KC_S)) { + if (current_os == OS_MAC) { + long_keystroke(3, (uint16_t[]){KC_LGUI, KC_LSFT, KC_4}); + } else if (current_os == OS_WIN) { + long_keystroke(3, (uint16_t[]){KC_LGUI, KC_LSFT, KC_S}); + } else { + return; + } + } + if (leader_sequence_three_keys(KC_C, KC_A, KC_D)) { + if (current_os == OS_WIN) { + long_keystroke(3, (uint16_t[]){KC_LCTL, KC_LALT, KC_DEL}); + } else { + } + } + if (leader_sequence_three_keys(KC_C, KC_A, KC_E)) { + if (current_os == OS_WIN) { + long_keystroke(3, (uint16_t[]){KC_LCTL, KC_LALT, KC_END}); + } else { + } + } + // end OS functions + + // begin format functions + if (leader_sequence_one_key(KC_B)) { + surround_type(2, KC_8, true); + } + if (leader_sequence_one_key(KC_I)) { + surround_type(2, KC_MINS, true); + } + if (leader_sequence_one_key(KC_U)) { + surround_type(4, KC_MINS, true); + } + if (leader_sequence_one_key(KC_S)) { + surround_type(4, KC_GRAVE, true); + } + if (leader_sequence_one_key(KC_C)) { + register_unicode(0x00E7); // ç + } + if (leader_sequence_two_keys(KC_A, KC_V)) { + surround_type(2, KC_QUOT, true); + pair_surround_type(2, KC_LCBR, true); + surround_type(2, KC_SPC, false); + } + if (leader_sequence_two_keys(KC_M, KC_L)) { + pair_surround_type(1, KC_LBRC, false); + SEND_STRING("LINK_NAME"); + tap_code(KC_RGHT); + pair_surround_type(1, KC_LPRN, true); + pri_mod_keystroke(KC_V); + } + if (leader_sequence_two_keys(KC_C, KC_C)) { + surround_type(2, KC_GRAVE, false); + } + if (leader_sequence_three_keys(KC_C, KC_C, KC_C)) { + surround_type(6, KC_GRAVE, false); + } + if (leader_sequence_one_key(KC_E)) { + register_unicode(0x00E8); // è + } + if (leader_sequence_two_keys(KC_E, KC_E)) { + register_unicode(0x00E9); // é + } + // end format functions + + // start fancy functions + if (leader_sequence_two_keys(KC_V, KC_P)) { + SEND_STRING("ggvG}x:set paste\ni"); + pri_mod_keystroke(KC_V); + } + if (leader_sequence_three_keys(KC_C, KC_C, KC_ENT)) { + surround_type(6, KC_GRAVE, false); + pri_mod_keystroke(KC_V); + multi_tap(3, KC_RGHT, false); + tap_code(KC_ENTER); + } + if (leader_sequence_three_keys(KC_T, KC_C, KC_ENT)) { + multi_tap(3, KC_GRAVE, false); + pri_mod_keystroke(KC_V); + multi_tap(2, KC_ENTER, false); + } + // end fancy functions + + // start typing functions + if (leader_sequence_two_keys(KC_T, KC_M)) { + register_unicode(0x2122); // ™ + } + if (leader_sequence_two_keys(KC_D, KC_D)) { + SEND_STRING(".\\Administrator"); + } + if (leader_sequence_three_keys(KC_D, KC_D, KC_D)) { + SEND_STRING(".\\Administrator"); + tap_code(KC_TAB); + pri_mod_keystroke(KC_V); + tap_code(KC_ENTER); + } + if (leader_sequence_three_keys(KC_L, KC_O, KC_D)) { + send_unicode_string("ಠ__ಠ"); + } + if (leader_sequence_three_keys(KC_M, KC_A, KC_P)) { + SEND_STRING("https://github.com/qmk/qmk_firmware/tree/master/users/arkag"); + } + if (leader_sequence_two_keys(KC_F, KC_F)) { + send_unicode_string("(╯‵Д′)╯彡┻━┻"); + } + if (leader_sequence_three_keys(KC_F, KC_F, KC_F)) { + send_unicode_string("┬─┬ノ( º _ º ノ)"); + } + if (leader_sequence_three_keys(KC_L, KC_O, KC_L)) { + send_unicode_string("( ͡° ͜ʖ ͡°)"); + } + if (leader_sequence_three_keys(KC_S, KC_S, KC_S)) { + send_unicode_string("¯\\_(ツ)_/¯"); + } + // end typing functions +} + void matrix_init_user(void) { current_os = eeprom_read_byte(EECONFIG_USERSPACE); set_os(current_os, false); } -LEADER_EXTERNS(); - void matrix_scan_user(void) { check_state(); flash_rgb(); fade_rgb(); - LEADER_DICTIONARY() { - leading = false; - leader_end(); - - // begin OS functions - SEQ_TWO_KEYS(KC_P, KC_B) { - if (current_os == OS_WIN) { - long_keystroke(2, (uint16_t[]){KC_LGUI, KC_PAUSE}); - } else { - return; - } - } - SEQ_TWO_KEYS(KC_S, KC_S) { - if (current_os == OS_MAC) { - long_keystroke(3, (uint16_t[]){KC_LGUI, KC_LSFT, KC_4}); - } else if (current_os == OS_WIN) { - long_keystroke(3, (uint16_t[]){KC_LGUI, KC_LSFT, KC_S}); - } else { - return; - } - } - SEQ_THREE_KEYS(KC_C, KC_A, KC_D) { - if (current_os == OS_WIN) { - long_keystroke(3, (uint16_t[]){KC_LCTL, KC_LALT, KC_DEL}); - } else { - } - } - SEQ_THREE_KEYS(KC_C, KC_A, KC_E) { - if (current_os == OS_WIN) { - long_keystroke(3, (uint16_t[]){KC_LCTL, KC_LALT, KC_END}); - } else { - } - } - // end OS functions - - // begin format functions - SEQ_ONE_KEY(KC_B) { - surround_type(2, KC_8, true); - } - SEQ_ONE_KEY(KC_I) { - surround_type(2, KC_MINS, true); - } - SEQ_ONE_KEY(KC_U) { - surround_type(4, KC_MINS, true); - } - SEQ_ONE_KEY(KC_S) { - surround_type(4, KC_GRAVE, true); - } - SEQ_ONE_KEY(KC_C) { - register_unicode(0x00E7); // ç - } - SEQ_TWO_KEYS(KC_A, KC_V) { - surround_type(2, KC_QUOT, true); - pair_surround_type(2, KC_LCBR, true); - surround_type(2, KC_SPC, false); - } - SEQ_TWO_KEYS(KC_M, KC_L) { - pair_surround_type(1, KC_LBRC, false); - SEND_STRING("LINK_NAME"); - tap_code(KC_RGHT); - pair_surround_type(1, KC_LPRN, true); - pri_mod_keystroke(KC_V); - } - SEQ_TWO_KEYS(KC_C, KC_C) { - surround_type(2, KC_GRAVE, false); - } - SEQ_THREE_KEYS(KC_C, KC_C, KC_C) { - surround_type(6, KC_GRAVE, false); - } - SEQ_ONE_KEY(KC_E) { - register_unicode(0x00E8); // è - } - SEQ_TWO_KEYS(KC_E, KC_E) { - register_unicode(0x00E9); // é - } - // end format functions - - // start fancy functions - SEQ_TWO_KEYS(KC_V, KC_P) { - SEND_STRING("ggvG}x:set paste\ni"); - pri_mod_keystroke(KC_V); - } - SEQ_THREE_KEYS(KC_C, KC_C, KC_ENT) { - surround_type(6, KC_GRAVE, false); - pri_mod_keystroke(KC_V); - multi_tap(3, KC_RGHT, false); - tap_code(KC_ENTER); - } - SEQ_THREE_KEYS(KC_T, KC_C, KC_ENT) { - multi_tap(3, KC_GRAVE, false); - pri_mod_keystroke(KC_V); - multi_tap(2, KC_ENTER, false); - } - // end fancy functions - - // start typing functions - SEQ_TWO_KEYS(KC_T, KC_M) { - register_unicode(0x2122); // ™ - } - SEQ_TWO_KEYS(KC_D, KC_D) { - SEND_STRING(".\\Administrator"); - } - SEQ_THREE_KEYS(KC_D, KC_D, KC_D) { - SEND_STRING(".\\Administrator"); - tap_code(KC_TAB); - pri_mod_keystroke(KC_V); - tap_code(KC_ENTER); - } - SEQ_THREE_KEYS(KC_L, KC_O, KC_D) { - send_unicode_string("ಠ__ಠ"); - } - SEQ_THREE_KEYS(KC_M, KC_A, KC_P) { - SEND_STRING("https://github.com/qmk/qmk_firmware/tree/master/users/arkag"); - } - SEQ_TWO_KEYS(KC_F, KC_F) { - send_unicode_string("(╯‵Д′)╯彡┻━┻"); - } - SEQ_THREE_KEYS(KC_F, KC_F, KC_F) { - send_unicode_string("┬─┬ノ( º _ º ノ)"); - } - SEQ_THREE_KEYS(KC_L, KC_O, KC_L) { - send_unicode_string("( ͡° ͜ʖ ͡°)"); - } - SEQ_THREE_KEYS(KC_S, KC_S, KC_S) { - send_unicode_string("¯\\_(ツ)_/¯"); - } - // end typing functions - - } } bool process_record_user(uint16_t keycode, keyrecord_t *record) { diff --git a/users/bcat/config.h b/users/bcat/config.h index 7bb5d71bae..b9eac74ff6 100644 --- a/users/bcat/config.h +++ b/users/bcat/config.h @@ -35,7 +35,7 @@ /* Turn off key repeat support of the tap keycode for tap-hold keys, enabling * holds to work correctly in quick succession after taps. */ -#define TAPPING_FORCE_HOLD +#define QUICK_TAP_TERM 0 #if defined(OLED_ENABLE) /* The built-in OLED timeout wakes the OLED screen every time the buffer is diff --git a/users/billypython/tap_dance.c b/users/billypython/tap_dance.c index 74ae166393..c55f9e9133 100644 --- a/users/billypython/tap_dance.c +++ b/users/billypython/tap_dance.c @@ -2,11 +2,11 @@ #define ACTION_TAP_DANCE_DOUBLE_MODS(mod1, mod2) { \ .fn = { td_double_mods_each, NULL, td_double_mods_reset }, \ - .user_data = &(qk_tap_dance_pair_t){ mod1, mod2 }, \ + .user_data = &(tap_dance_pair_t){ mod1, mod2 }, \ } -void td_double_mods_each(qk_tap_dance_state_t *state, void *user_data) { - qk_tap_dance_pair_t *mods = (qk_tap_dance_pair_t *)user_data; +void td_double_mods_each(tap_dance_state_t *state, void *user_data) { + tap_dance_pair_t *mods = (tap_dance_pair_t *)user_data; // Single tap → mod1, double tap → mod2, triple tap etc. → mod1+mod2 if (state->count == 1 || state->count == 3) { register_code(mods->kc1); @@ -18,8 +18,8 @@ void td_double_mods_each(qk_tap_dance_state_t *state, void *user_data) { state->weak_mods &= ~(MOD_BIT(mods->kc1) | MOD_BIT(mods->kc2)); } -void td_double_mods_reset(qk_tap_dance_state_t *state, void *user_data) { - qk_tap_dance_pair_t *mods = (qk_tap_dance_pair_t *)user_data; +void td_double_mods_reset(tap_dance_state_t *state, void *user_data) { + tap_dance_pair_t *mods = (tap_dance_pair_t *)user_data; if (state->count == 1 || state->count >= 3) { unregister_code(mods->kc1); } @@ -28,6 +28,6 @@ void td_double_mods_reset(qk_tap_dance_state_t *state, void *user_data) { } } -qk_tap_dance_action_t tap_dance_actions[] = { +tap_dance_action_t tap_dance_actions[] = { [TD_RSF_RCT] = ACTION_TAP_DANCE_DOUBLE_MODS(KC_RSFT, KC_RCTL), }; diff --git a/users/brandonschlack/process_records.c b/users/brandonschlack/process_records.c index 892bc7e062..f40eeaf8b6 100644 --- a/users/brandonschlack/process_records.c +++ b/users/brandonschlack/process_records.c @@ -141,14 +141,14 @@ void matrix_scan_cmd_tab(void) { * * Sends 'qmk compile -kb keyboard -km keymap' command to compile firmware * Uses 'qmk flash' and resets keyboard, if flash_bootloader set to true - * Sends CTPC and/or FORCE_LAYOUT parameters if built with those options + * Sends CONVERT_TO and/or FORCE_LAYOUT parameters if built with those options */ void send_make_command(bool flash_bootloader) { #ifdef FORCE_LAYOUT // Add layout string if built with FORCE_LAYOUT SEND_STRING("FORCE_LAYOUT=" FORCE_LAYOUT " "); #endif -#ifdef CONVERT_TO_PROTON_C // Add CTPC if built with CONVERT_TO_PROTON_C - SEND_STRING("CTPC=yes "); +#ifdef CONVERT_TO_PROTON_C // Add CONVERT_TO if built with converter + SEND_STRING("CONVERT_TO=proton_c "); #endif SEND_STRING("qmk "); if (flash_bootloader) { diff --git a/users/brandonschlack/tap_dances.c b/users/brandonschlack/tap_dances.c index 861b31805b..4a4a530ff2 100644 --- a/users/brandonschlack/tap_dances.c +++ b/users/brandonschlack/tap_dances.c @@ -16,7 +16,7 @@ #include "tap_dances.h" #include "process_keycode/process_tap_dance.h" -int cur_dance (qk_tap_dance_state_t *state) { +int cur_dance (tap_dance_state_t *state) { if (state->count == 1) { if (state->interrupted || !state->pressed) return SINGLE_TAP; else return SINGLE_HOLD; @@ -35,8 +35,8 @@ int cur_dance (qk_tap_dance_state_t *state) { __attribute__ ((weak)) void process_tap_dance_keycode (bool reset, uint8_t toggle_layer) { }; -void td_trigger_layer_finished (qk_tap_dance_state_t *state, void *user_data) { - qk_tap_dance_trigger_layer_t *data = (qk_tap_dance_trigger_layer_t *)user_data; +void td_trigger_layer_finished (tap_dance_state_t *state, void *user_data) { + tap_dance_trigger_layer_t *data = (tap_dance_trigger_layer_t *)user_data; data->state = cur_dance(state); if (data->state == data->trigger) { @@ -46,8 +46,8 @@ void td_trigger_layer_finished (qk_tap_dance_state_t *state, void *user_data) { } } -void td_trigger_layer_reset (qk_tap_dance_state_t *state, void *user_data) { - qk_tap_dance_trigger_layer_t *data = (qk_tap_dance_trigger_layer_t *)user_data; +void td_trigger_layer_reset (tap_dance_state_t *state, void *user_data) { + tap_dance_trigger_layer_t *data = (tap_dance_trigger_layer_t *)user_data; if (data->state == data->trigger) { switch (data->trigger) { case SINGLE_HOLD: @@ -63,8 +63,8 @@ void td_trigger_layer_reset (qk_tap_dance_state_t *state, void *user_data) { } /* Tap Dance: Layer Mod. Toggles Layer when tapped, Mod when held. */ -void td_layer_mod_each(qk_tap_dance_state_t *state, void *user_data) { - qk_tap_dance_dual_role_t *data = (qk_tap_dance_dual_role_t *)user_data; +void td_layer_mod_each(tap_dance_state_t *state, void *user_data) { + tap_dance_dual_role_t *data = (tap_dance_dual_role_t *)user_data; // Single tap → toggle layer, Single hold → mod if (state->pressed) { @@ -74,16 +74,16 @@ void td_layer_mod_each(qk_tap_dance_state_t *state, void *user_data) { } } -void td_layer_mod_finished(qk_tap_dance_state_t *state, void *user_data) { - qk_tap_dance_dual_role_t *data = (qk_tap_dance_dual_role_t *)user_data; +void td_layer_mod_finished(tap_dance_state_t *state, void *user_data) { + tap_dance_dual_role_t *data = (tap_dance_dual_role_t *)user_data; if (state->count == 1 && !state->pressed) { layer_invert(data->layer); } } -void td_layer_mod_reset(qk_tap_dance_state_t *state, void *user_data) { - qk_tap_dance_dual_role_t *data = (qk_tap_dance_dual_role_t *)user_data; +void td_layer_mod_reset(tap_dance_state_t *state, void *user_data) { + tap_dance_dual_role_t *data = (tap_dance_dual_role_t *)user_data; if (state->count == 1) { unregister_code(data->kc); diff --git a/users/brandonschlack/tap_dances.h b/users/brandonschlack/tap_dances.h index 3747619a5e..62c585631e 100644 --- a/users/brandonschlack/tap_dances.h +++ b/users/brandonschlack/tap_dances.h @@ -29,7 +29,7 @@ enum tap_dance_states { TRIPLE_HOLD = 7 }; -int cur_dance (qk_tap_dance_state_t *state); +int cur_dance (tap_dance_state_t *state); void process_tap_dance_keycode (bool reset, uint8_t toggle_layer); /* Tap Dance: Trigger Layer @@ -41,12 +41,12 @@ typedef struct { uint8_t trigger; uint8_t layer; uint8_t state; -} qk_tap_dance_trigger_layer_t; +} tap_dance_trigger_layer_t; #define ACTION_TAP_DANCE_TRIGGER_LAYER(trigger, layer) { \ .fn = { NULL, td_trigger_layer_finished, td_trigger_layer_reset }, \ - .user_data = (void *)&((qk_tap_dance_trigger_layer_t) { trigger, layer, 0 }), \ + .user_data = (void *)&((tap_dance_trigger_layer_t) { trigger, layer, 0 }), \ } -void td_trigger_layer_finished (qk_tap_dance_state_t *state, void *user_data); -void td_trigger_layer_reset (qk_tap_dance_state_t *state, void *user_data); +void td_trigger_layer_finished (tap_dance_state_t *state, void *user_data); +void td_trigger_layer_reset (tap_dance_state_t *state, void *user_data); diff --git a/users/charlesrocket/apl.c b/users/charlesrocket/apl.c index 63d835c909..92c1ea9f3d 100644 --- a/users/charlesrocket/apl.c +++ b/users/charlesrocket/apl.c @@ -99,7 +99,7 @@ enum unicode_names { QUAD_COLON }; -const uint32_t PROGMEM unicode_map[] = { +const uint32_t unicode_map[] PROGMEM = { [DIAMOND] = 0x25CA, // ◊ 0 [QUAD_DIAMOND] = 0x233A, // ⌺ [DIAERESIS] = 0x00A8, // ¨ diff --git a/users/curry/leader.c b/users/curry/leader.c deleted file mode 100644 index 3fca6a2ec3..0000000000 --- a/users/curry/leader.c +++ /dev/null @@ -1,24 +0,0 @@ -#include "curry.h" -#include "leader.h" - -LEADER_EXTERNS(); - -void matrix_scan_user(void) { - static bool has_ran_yet; - if (!has_ran_yet) { - has_ran_yet = true; - startup_user(); - } - -#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) - matrix_scan_rgb(); -#endif // RGBLIGHT_ENABLE - LEADER_DICTIONARY() { - leading = false; - leader_end(); - SEQ_ONE_KEY(KC_F) { SEND_STRING(SS_LCTL("akf")); } // Select all and format - SEQ_ONE_KEY(KC_P) { SEND_STRING(SS_LCTL(SS_LSFT("4"))); } // Screenshot region - SEQ_TWO_KEYS(KC_D, KC_D) { SEND_STRING(SS_LCTL("ac")); } // Copy all - } - matrix_scan_keymap(); -} diff --git a/users/curry/leader.h b/users/curry/leader.h deleted file mode 100644 index f215893b9e..0000000000 --- a/users/curry/leader.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void matrix_scan_user(void); diff --git a/users/curry/leader_user.c b/users/curry/leader_user.c new file mode 100644 index 0000000000..9cee19af49 --- /dev/null +++ b/users/curry/leader_user.c @@ -0,0 +1,31 @@ +#include "curry.h" +#include "leader_user.h" + +void leader_end_user(void) { + if (leader_sequence_one_key(KC_F)) { + // Select all and format + SEND_STRING(SS_LCTL("akf")); + } + if (leader_sequence_one_key(KC_P)) { + // Screenshot region + SEND_STRING(SS_LCTL(SS_LSFT("4"))); + } + if (leader_sequence_two_keys(KC_D, KC_D)) { + // Copy all + SEND_STRING(SS_LCTL("ac")); + } +} + +void matrix_scan_user(void) { + static bool has_ran_yet; + if (!has_ran_yet) { + has_ran_yet = true; + startup_user(); + } + +#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE) + matrix_scan_rgb(); +#endif // RGBLIGHT_ENABLE + + matrix_scan_keymap(); +} diff --git a/users/curry/leader_user.h b/users/curry/leader_user.h new file mode 100644 index 0000000000..f215893b9e --- /dev/null +++ b/users/curry/leader_user.h @@ -0,0 +1,3 @@ +#pragma once + +void matrix_scan_user(void); diff --git a/users/curry/rules.mk b/users/curry/rules.mk index 724f97f5eb..aa89110276 100644 --- a/users/curry/rules.mk +++ b/users/curry/rules.mk @@ -29,7 +29,7 @@ ifeq ($(strip $(OLED_ENABLE)), yes) endif ifeq ($(strip $(LEADER_ENABLE)), yes) - SRC += leader.c + SRC += leader_user.c endif ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) diff --git a/users/curry/tap_dances.c b/users/curry/tap_dances.c index 166ea2c686..86a8f679d2 100644 --- a/users/curry/tap_dances.c +++ b/users/curry/tap_dances.c @@ -1,4 +1,4 @@ #include "tap_dances.h" #include "curry.h" -qk_tap_dance_action_t tap_dance_actions[] = {}; +tap_dance_action_t tap_dance_actions[] = {}; diff --git a/users/curry/wrappers.h b/users/curry/wrappers.h index dbc7368739..490a9e0b0b 100644 --- a/users/curry/wrappers.h +++ b/users/curry/wrappers.h @@ -78,7 +78,7 @@ expanded before being used as arguments to the LAYOUT_xxx macro. #define _________________RAISE_R3__________________ KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC #define _________________ADJUST_L1_________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG -#define _________________ADJUST_L2_________________ MU_TOG , CK_TOGG, AU_ON, AU_OFF, CG_NORM +#define _________________ADJUST_L2_________________ MU_TOGG, CK_TOGG, AU_ON, AU_OFF, CG_NORM #define _________________ADJUST_L3_________________ RGB_RMOD,RGB_HUD,RGB_SAD, RGB_VAD, KC_RGB_T #define _________________ADJUST_R1_________________ KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5 diff --git a/users/cwebster2/config.h b/users/cwebster2/config.h index 78733687cc..313e6d533f 100644 --- a/users/cwebster2/config.h +++ b/users/cwebster2/config.h @@ -18,7 +18,7 @@ #define TAPPING_TOGGLE 1 #define TAPPING_TERM 200 #define TAPPING_TERM_PER_KEY -//#define TAPPING_FORCE_HOLD +//#define QUICK_TAP_TERM 0 #undef PERMISSIVE_HOLD #define IGNORE_MOD_TAP_INTERRUPT #define NO_ACTION_ONESHOT diff --git a/users/d4mation/d4mation.c b/users/d4mation/d4mation.c index 5aa58a9f0d..5d1092cd72 100644 --- a/users/d4mation/d4mation.c +++ b/users/d4mation/d4mation.c @@ -7,12 +7,12 @@ bool process_record_keymap( uint16_t keycode, keyrecord_t *record ) { } __attribute__ ((weak)) -void matrix_init_keymap() { +void matrix_init_keymap(void) { /* If you want a matrix init specific to your keymap, you need to define this function in your keymap */ } __attribute__ ((weak)) -void matrix_scan_keymap() { +void matrix_scan_keymap(void) { /* If you want a matrix scan specific to your keymap, you need to define this function in your keymap */ } diff --git a/users/d4mation/tap-dance.c b/users/d4mation/tap-dance.c index 77d09962d6..928a932611 100644 --- a/users/d4mation/tap-dance.c +++ b/users/d4mation/tap-dance.c @@ -1,6 +1,6 @@ #include "tap-dance.h" -qk_tap_dance_action_t tap_dance_actions[] = { +tap_dance_action_t tap_dance_actions[] = { /* Tap once/hold for Shift, tap twice for Caps Lock */ [SHIFT_CAPS] = ACTION_TAP_DANCE_DOUBLE( KC_LSFT, KC_CAPS ) }; \ No newline at end of file diff --git a/users/danielo515/danielo515.c b/users/danielo515/danielo515.c index 9b09aed9d7..aa33f55d66 100644 --- a/users/danielo515/danielo515.c +++ b/users/danielo515/danielo515.c @@ -4,84 +4,121 @@ bool onMac = true; //**************** LEADER *********************// #ifdef LEADER_ENABLE -LEADER_EXTERNS(); +void leader_start_user(vodi) { # ifdef RGBLIGHT_ENABLE - -void leader_start() { rgblight_setrgb_range(5, 100, 199, 10, 15); }; - -void leader_end() { rgblight_setrgb_range(200, 200, 255, 10, 15); }; + rgblight_setrgb_range(5, 100, 199, 10, 15); # endif +} -void matrix_scan_user(void) { - if (leading && leader_sequence_size > 0 && timer_elapsed(leader_time) > LEADER_TIMEOUT) { - leading = false; - SEQ_ONE_KEY(KC_T) { SEND_STRING("``" SS_TAP(X_LEFT)); } - // Triple ticks - SEQ_TWO_KEYS(KC_T, KC_T) { SEND_STRING("```" SS_TAP(X_ENTER) SS_TAP(X_ENTER) "```" SS_TAP(X_UP)); } - // ==== International spanish accent vowels ==== - SEQ_ONE_KEY(KC_A) { SEND_STRING(SS_LALT("e") "a"); } - SEQ_ONE_KEY(KC_E) { SEND_STRING(SS_LALT("e") "e"); } - SEQ_ONE_KEY(KC_I) { SEND_STRING(SS_LALT("e") "i"); } - SEQ_ONE_KEY(KC_O) { SEND_STRING(SS_LALT("e") "o"); } - SEQ_ONE_KEY(KC_U) { SEND_STRING(SS_LALT("e") "u"); } - SEQ_ONE_KEY(KC_N) { SEND_STRING(SS_LALT("n") "n"); } - // ==== MACROS === - SEQ_ONE_KEY(KC_G) { SEND_STRING(" | grep "); } - SEQ_ONE_KEY(KC_K) { onMac ? SEND_STRING(SS_LCTL(" ")) : SEND_STRING(SS_LCTL("f")); } - // vim delete all - SEQ_TWO_KEYS(KC_D, KC_G) { - if (onMac) { - SEND_STRING(SS_LGUI("a") SS_TAP(X_D)); - } else { - SEND_STRING(SS_LCTL("a") SS_TAP(X_D)); - } +void leader_end_user() { + if (leader_sequence_one_key(KC_T)) { + SEND_STRING("``" SS_TAP(X_LEFT)); + } + // Triple ticks + if (leader_sequence_two_keys(KC_T, KC_T)) { + SEND_STRING("```" SS_TAP(X_ENTER) SS_TAP(X_ENTER) "```" SS_TAP(X_UP)); + } + // ==== International spanish accent vowels ==== + if (leader_sequence_one_key(KC_A)) { + SEND_STRING(SS_LALT("e") "a"); + } + if (leader_sequence_one_key(KC_E)) { + SEND_STRING(SS_LALT("e") "e"); + } + if (leader_sequence_one_key(KC_I)) { + SEND_STRING(SS_LALT("e") "i"); + } + if (leader_sequence_one_key(KC_O)) { + SEND_STRING(SS_LALT("e") "o"); + } + if (leader_sequence_one_key(KC_U)) { + SEND_STRING(SS_LALT("e") "u"); + } + if (leader_sequence_one_key(KC_N)) { + SEND_STRING(SS_LALT("n") "n"); + } + // ==== MACROS === + if (leader_sequence_one_key(KC_G)) { + SEND_STRING(" | grep "); + } + if (leader_sequence_one_key(KC_K)) { + onMac ? SEND_STRING(SS_LCTL(" ")) : SEND_STRING(SS_LCTL("f")); + } + // vim delete all + if (leader_sequence_two_keys(KC_D, KC_G)) { + if (onMac) { + SEND_STRING(SS_LGUI("a") SS_TAP(X_D)); + } else { + SEND_STRING(SS_LCTL("a") SS_TAP(X_D)); } - // tripe delete! - SEQ_ONE_KEY(KC_BACKSPACE) { SEND_STRING(SS_TAP(X_BACKSPACE) SS_TAP(X_BACKSPACE) SS_TAP(X_BACKSPACE)); } - SEQ_TWO_KEYS(KC_P, KC_G) { SEND_STRING("ps -ef | grep "); } - SEQ_TWO_KEYS(KC_J, KC_A) { SEND_STRING("() => {}" SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_TAP(X_LEFT)); } - // this is a pain to type - SEQ_TWO_KEYS(KC_S, KC_S) { SEND_STRING("~/.ssh/ "); } - SEQ_TWO_KEYS(KC_F, KC_T) { SEND_STRING("feat():" SS_TAP(X_LEFT) SS_TAP(X_LEFT)); } - // ### LAYER CHANGE - SEQ_ONE_KEY(KC_1) { layer_on(1); } - // control enter, because yes - SEQ_ONE_KEY(KC_H) { SEND_STRING(SS_DOWN(X_LCTL) SS_TAP(X_ENTER) SS_UP(X_LCTL)); } - // paste all - SEQ_ONE_KEY(KC_P) { - if (onMac) { - SEND_STRING(SS_LGUI("a") SS_LGUI("v")); - } else { - SEND_STRING(SS_LCTL("a") SS_LCTL("v")); - } + } + // tripe delete! + if (leader_sequence_one_key(KC_BACKSPACE)) { + SEND_STRING(SS_TAP(X_BACKSPACE) SS_TAP(X_BACKSPACE) SS_TAP(X_BACKSPACE)); + } + if (leader_sequence_two_keys(KC_P, KC_G)) { + SEND_STRING("ps -ef | grep "); + } + if (leader_sequence_two_keys(KC_J, KC_A)) { + SEND_STRING("() => {}" SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_TAP(X_LEFT) SS_TAP(X_LEFT)); + } + // this is a pain to type + if (leader_sequence_two_keys(KC_S, KC_S)) { + SEND_STRING("~/.ssh/ "); + } + if (leader_sequence_two_keys(KC_F, KC_T)) { + SEND_STRING("feat():" SS_TAP(X_LEFT) SS_TAP(X_LEFT)); + } + // ### LAYER CHANGE + if (leader_sequence_one_key(KC_1)) { + layer_on(1); + } + // control enter, because yes + if (leader_sequence_one_key(KC_H)) { + SEND_STRING(SS_DOWN(X_LCTL) SS_TAP(X_ENTER) SS_UP(X_LCTL)); + } + // paste all + if (leader_sequence_one_key(KC_P)) { + if (onMac) { + SEND_STRING(SS_LGUI("a") SS_LGUI("v")); + } else { + SEND_STRING(SS_LCTL("a") SS_LCTL("v")); } - SEQ_THREE_KEYS(KC_M, KC_A, KC_C) { - onMac = true; + } + if (leader_sequence_three_keys(KC_M, KC_A, KC_C)) { + onMac = true; # ifdef RGBLIGHT_ENABLE - rgblight_setrgb(255, 255, 255); + rgblight_setrgb(255, 255, 255); # endif - } - SEQ_THREE_KEYS(KC_W, KC_I, KC_N) { - onMac = false; + } + if (leader_sequence_three_keys(KC_W, KC_I, KC_N)) { + onMac = false; # ifdef RGBLIGHT_ENABLE - rgblight_setrgb(255, 255, 0); + rgblight_setrgb(255, 255, 0); # endif + } + /* Copy all */ + if (leader_sequence_one_key(KC_Y)) { + if (onMac) { + SEND_STRING(SS_LGUI("a") SS_LGUI("c")); + } else { + SEND_STRING(SS_LCTL("a") SS_LCTL("c")); } - /* Copy all */ - SEQ_ONE_KEY(KC_Y) { - if (onMac) { - SEND_STRING(SS_LGUI("a") SS_LGUI("c")); - } else { - SEND_STRING(SS_LCTL("a") SS_LCTL("c")); - } - } - // emoji bar - SEQ_TWO_KEYS(KC_E, KC_E) { SEND_STRING(SS_DOWN(X_LGUI) SS_LCTL(" ") SS_UP(X_LGUI)); } - - SEQ_TWO_KEYS(KC_F, KC_F) { SEND_STRING("ps -ef | grep "); } - SEQ_TWO_KEYS(KC_H, KC_T) { SEND_STRING("https://"); } + } + // emoji bar + if (leader_sequence_two_keys(KC_E, KC_E)) { + SEND_STRING(SS_DOWN(X_LGUI) SS_LCTL(" ") SS_UP(X_LGUI)); + } - leader_end(); + if (leader_sequence_two_keys(KC_F, KC_F)) { + SEND_STRING("ps -ef | grep "); } + if (leader_sequence_two_keys(KC_H, KC_T)) { + SEND_STRING("https://"); + } + +# ifdef RGBLIGHT_ENABLE + rgblight_setrgb_range(200, 200, 255, 10, 15); +# endif } #endif // LEADER diff --git a/users/danielo515/tap_dance.c b/users/danielo515/tap_dance.c index a07b4c792f..b69ee715d4 100644 --- a/users/danielo515/tap_dance.c +++ b/users/danielo515/tap_dance.c @@ -1,7 +1,7 @@ #include "tap_dance.h" //**************** Definitions needed for quad function to work *********************// #ifdef QUAD_DANCE -int cur_dance(qk_tap_dance_state_t *state) +int cur_dance(tap_dance_state_t *state) { if (state->count == 1) { @@ -30,8 +30,8 @@ int cur_dance(qk_tap_dance_state_t *state) # endif // Slightly better tap dance double: interruption sends double single and any number over double sends the single that number of times -void qk_tap_dance_pair_finished_safe(qk_tap_dance_state_t *state, void *user_data) { - qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data; +void tap_dance_pair_finished_safe(tap_dance_state_t *state, void *user_data) { + tap_dance_pair_t *pair = (tap_dance_pair_t *)user_data; int count = state->count; if (state->count == 2) { if (state->interrupted){ @@ -47,8 +47,8 @@ void qk_tap_dance_pair_finished_safe(qk_tap_dance_state_t *state, void *user_dat } } -void qk_tap_dance_pair_reset_safe(qk_tap_dance_state_t *state, void *user_data) { - qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data; +void tap_dance_pair_reset_safe(tap_dance_state_t *state, void *user_data) { + tap_dance_pair_t *pair = (tap_dance_pair_t *)user_data; if (state->count == 2) { unregister_code16 (pair->kc2); return; @@ -58,7 +58,7 @@ void qk_tap_dance_pair_reset_safe(qk_tap_dance_state_t *state, void *user_data) //**************** Tap dance functions *********************// -qk_tap_dance_action_t tap_dance_actions[] = { +tap_dance_action_t tap_dance_actions[] = { [COPY_CUT] = ACTION_TAP_DANCE_FN(td_copy_cut), [PASTE_DANCE] = ACTION_TAP_DANCE_FN(td_paste), [_TD_F1] = ACTION_TAP_DANCE_DOUBLE(KC_1, KC_F1), @@ -86,7 +86,7 @@ qk_tap_dance_action_t tap_dance_actions[] = { [_TD_PASTE] = ACTION_TAP_DANCE_FN(dance_paste) }; -void td_copy_cut(qk_tap_dance_state_t *state, void *user_data) +void td_copy_cut(tap_dance_state_t *state, void *user_data) { if (state->count == 2) { @@ -99,7 +99,7 @@ void td_copy_cut(qk_tap_dance_state_t *state, void *user_data) reset_tap_dance(state); }; -void td_paste(qk_tap_dance_state_t *state, void *user_data) +void td_paste(tap_dance_state_t *state, void *user_data) { if (state->count == 2) { @@ -113,7 +113,7 @@ void td_paste(qk_tap_dance_state_t *state, void *user_data) }; //===== The awesome tap dance for CUT, COPY and PASTE letters -void dance_copy (qk_tap_dance_state_t *state, void *user_data) { +void dance_copy (tap_dance_state_t *state, void *user_data) { if (state->count == 1) { tap_code16(KC_C); } else if (state->interrupted) { tap_code16(KC_C);tap_code16(KC_C);} @@ -122,13 +122,13 @@ void dance_copy (qk_tap_dance_state_t *state, void *user_data) { reset_tap_dance (state); } -void dance_cut (qk_tap_dance_state_t *state, void *user_data) { +void dance_cut (tap_dance_state_t *state, void *user_data) { if (state->count == 1) { tap_code16(KC_X); } else { CMD(KC_X); } reset_tap_dance (state); } -void dance_paste (qk_tap_dance_state_t *state, void *user_data) { +void dance_paste (tap_dance_state_t *state, void *user_data) { if (state->count == 1) { tap_code16(KC_V); } diff --git a/users/danielo515/tap_dance.h b/users/danielo515/tap_dance.h index 880ad525ee..aaf3864841 100644 --- a/users/danielo515/tap_dance.h +++ b/users/danielo515/tap_dance.h @@ -4,8 +4,8 @@ extern bool onMac; #define ACTION_TAP_DANCE_DOUBLE_SAFE(kc1, kc2) { \ - .fn = { NULL, qk_tap_dance_pair_finished_safe, qk_tap_dance_pair_reset_safe }, \ - .user_data = (void *)&((qk_tap_dance_pair_t) { kc1, kc2 }), \ + .fn = { NULL, tap_dance_pair_finished_safe, tap_dance_pair_reset_safe }, \ + .user_data = (void *)&((tap_dance_pair_t) { kc1, kc2 }), \ } #ifdef QUAD_DANCE @@ -18,7 +18,7 @@ enum { DOUBLE_SINGLE_TAP = 5 //send SINGLE_TAP twice - NOT DOUBLE_TAP // Add more enums here if you want for triple, quadruple, etc. }; -int cur_dance (qk_tap_dance_state_t *state); +int cur_dance (tap_dance_state_t *state); # endif enum tap_dance { @@ -48,14 +48,14 @@ enum tap_dance { _TD_CUT, _TD_PASTE, }; -void qk_tap_dance_pair_finished_safe(qk_tap_dance_state_t *state, void *user_data); -void qk_tap_dance_pair_reset_safe(qk_tap_dance_state_t *state, void *user_data); -void td_copy_cut (qk_tap_dance_state_t *state, void *user_data); -void td_paste(qk_tap_dance_state_t *state, void *user_data); -int cur_dance (qk_tap_dance_state_t *state); -void dance_cut (qk_tap_dance_state_t *state, void *user_data); -void dance_copy (qk_tap_dance_state_t *state, void *user_data); -void dance_paste (qk_tap_dance_state_t *state, void *user_data); +void tap_dance_pair_finished_safe(tap_dance_state_t *state, void *user_data); +void tap_dance_pair_reset_safe(tap_dance_state_t *state, void *user_data); +void td_copy_cut (tap_dance_state_t *state, void *user_data); +void td_paste(tap_dance_state_t *state, void *user_data); +int cur_dance (tap_dance_state_t *state); +void dance_cut (tap_dance_state_t *state, void *user_data); +void dance_copy (tap_dance_state_t *state, void *user_data); +void dance_paste (tap_dance_state_t *state, void *user_data); // Ready to use Tap dance definitions, just put them on your layout #define TD_COPY TD(_TD_COPY) diff --git a/users/draevin/draevin.c b/users/draevin/draevin.c index 95570bf377..70b465a33d 100644 --- a/users/draevin/draevin.c +++ b/users/draevin/draevin.c @@ -54,6 +54,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; } -qk_tap_dance_action_t tap_dance_actions[] = { +tap_dance_action_t tap_dance_actions[] = { [TD_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS) // shift/caps TD }; diff --git a/users/drashna/audio_config.h b/users/drashna/audio_config.h new file mode 100644 index 0000000000..21fe27ee6b --- /dev/null +++ b/users/drashna/audio_config.h @@ -0,0 +1,33 @@ +// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define AUDIO_CLICKY +#define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f + +#if __has_include("user_song_list.h") +# include "user_song_list.h" +#endif + +#ifdef USER_SONG_LIST +# define STARTUP_SONG SONG(RICK_ROLL) +# define GOODBYE_SONG SONG(SONIC_RING) +# define DEFAULT_LAYER_SONGS \ + { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(OVERWATCH_THEME) } +# define UNICODE_SONG_MAC SONG(MARIO_THEME) +# define UNICODE_SONG_LNX SONG(MARIO_POWERUP) +# define UNICODE_SONG_WIN SONG(MARIO_ONEUP) +# define UNICODE_SONG_BSD SONG(RICK_ROLL) +# define UNICODE_SONG_WINC SONG(RICK_ROLL) +#else +# define STARTUP_SONG SONG(STARTUP_SOUND) +# define GOODBYE_SONG SONG(GOODBYE_SOUND) +# define DEFAULT_LAYER_SONGS \ + { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(WORKMAN_SOUND) } +# define UNICODE_SONG_MAC SONG(QWERTY_SOUND) +# define UNICODE_SONG_LNX SONG(COLEMAK_SOUND) +# define UNICODE_SONG_WIN SONG(DVORAK_SOUND) +# define UNICODE_SONG_BSD SONG(WORKMAN_SOUND) +# define UNICODE_SONG_WINC SONG(PLOVER_GOODBYE_SOUND) +#endif diff --git a/users/drashna/callbacks.c b/users/drashna/callbacks.c index c2f1156cee..568f56c8d1 100644 --- a/users/drashna/callbacks.c +++ b/users/drashna/callbacks.c @@ -3,9 +3,8 @@ #include "drashna.h" - #ifdef I2C_SCANNER_ENABLE -void matrix_scan_i2c(void); +void housekeeping_task_i2c_scanner(void); void keyboard_post_init_i2c(void); #endif @@ -21,6 +20,64 @@ void keyboard_pre_init_user(void) { // Call user matrix init, set default RGB colors and then // call the keymap's init function +#ifdef CUSTOM_QUANTUM_PAINTER_ENABLE +void keyboard_post_init_qp(void); +#endif + +#ifdef OS_DETECTION_ENABLE +os_variant_t os_type; + +uint32_t startup_exec(uint32_t trigger_time, void *cb_arg) { + /* do something */ + + if (is_keyboard_master()) { + os_type = detected_host_os(); + if (os_type) { + bool is_mac = (os_type == OS_MACOS) || (os_type == OS_IOS); + keymap_config.swap_lctl_lgui = keymap_config.swap_rctl_rgui = is_mac; +# ifdef UNICODE_COMMON_ENABLE + uint8_t mode = is_mac ? UNICODE_MODE_MACOS : UNICODE_MODE_WINCOMPOSE; + if (mode != get_unicode_input_mode()) { + set_unicode_input_mode(mode); + } +# endif + switch (os_type) { + case OS_UNSURE: + xprintf("unknown OS Detected\n"); + break; + case OS_LINUX: + xprintf("Linux Detected\n"); + break; + case OS_WINDOWS: + xprintf("Windows Detected\n"); + break; +# if 0 + case OS_WINDOWS_UNSURE: + xprintf("Windows? Detected\n"); + break; +# endif + case OS_MACOS: + xprintf("MacOS Detected\n"); + break; + case OS_IOS: + xprintf("iOS Detected\n"); + break; +# if 0 + case OS_PS5: + xprintf("PlayStation 5 Detected\n"); + break; + case OS_HANDHELD: + xprintf("Nintend Switch/Quest 2 Detected\n"); + break; +# endif + } + } + } + + return os_type ? 0 : 500; +} +#endif + __attribute__((weak)) void keyboard_post_init_keymap(void) {} void keyboard_post_init_user(void) { #if defined(CUSTOM_RGBLIGHT) @@ -47,6 +104,10 @@ void keyboard_post_init_user(void) { PORTB &= ~(1 << 0); #endif +#ifdef OS_DETECTION_ENABLE + defer_exec(100, startup_exec, NULL); +#endif + keyboard_post_init_keymap(); } @@ -102,25 +163,6 @@ void suspend_wakeup_init_user(void) { // scan function __attribute__((weak)) void matrix_scan_keymap(void) {} void matrix_scan_user(void) { - static bool has_ran_yet; - if (!has_ran_yet) { - has_ran_yet = true; - startup_user(); - } - -#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code. - run_diablo_macro_check(); -#endif // TAP_DANCE_ENABLE -#if defined(CUSTOM_RGB_MATRIX) - matrix_scan_rgb_matrix(); -#endif -#ifdef I2C_SCANNER_ENABLE - matrix_scan_i2c(); -#endif -#ifdef CUSTOM_OLED_DRIVER - matrix_scan_oled(); -#endif - matrix_scan_keymap(); } @@ -134,10 +176,6 @@ __attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) return state; } layer_state_t layer_state_set_user(layer_state_t state) { - if (!is_keyboard_master()) { - return state; - } - state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); #if defined(CUSTOM_POINTING_DEVICE) state = layer_state_set_pointing(state); @@ -145,18 +183,33 @@ layer_state_t layer_state_set_user(layer_state_t state) { #if defined(CUSTOM_RGBLIGHT) state = layer_state_set_rgb_light(state); #endif // CUSTOM_RGBLIGHT -#if defined(AUDIO_ENABLE) && !defined(__arm__) +#if defined(AUDIO_ENABLE) static bool is_gamepad_on = false; if (layer_state_cmp(state, _GAMEPAD) != is_gamepad_on) { - is_gamepad_on = layer_state_cmp(state, _GAMEPAD); + static bool is_click_on = false; + is_gamepad_on = layer_state_cmp(state, _GAMEPAD); if (is_gamepad_on) { + is_click_on = is_clicky_on(); + if (is_click_on) { + clicky_off(); + } PLAY_LOOP(doom_song); } else { + if (is_click_on) { + clicky_on(); + } stop_all_notes(); } } #endif state = layer_state_set_keymap(state); + +#ifdef CONSOLE_ENABLE + char layer_buffer[16 + 5]; + format_layer_bitmap_string(layer_buffer, state, default_layer_state); + dprintf("layer state: %s\n", layer_buffer); +#endif + return state; } @@ -227,9 +280,27 @@ void matrix_slave_scan_user(void) { #endif __attribute__((weak)) void housekeeping_task_keymap(void) {} -void housekeeping_task_user(void) { +void housekeeping_task_user(void) { + static bool has_ran_yet; + if (!has_ran_yet) { + has_ran_yet = true; + startup_user(); + } +#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code. + run_diablo_macro_check(); +#endif // TAP_DANCE_ENABLE +#if defined(CUSTOM_RGB_MATRIX) + housekeeping_task_rgb_matrix(); +#endif +#ifdef I2C_SCANNER_ENABLE + housekeeping_task_i2c_scanner(); +#endif +#ifdef CUSTOM_OLED_DRIVER + housekeeping_task_oled(); +#endif #if defined(SPLIT_KEYBOARD) && defined(SPLIT_TRANSACTION_IDS_USER) housekeeping_task_transport_sync(); #endif + housekeeping_task_keymap(); } diff --git a/users/drashna/callbacks.md b/users/drashna/callbacks.md index 5908a66142..e23f7f6d86 100644 --- a/users/drashna/callbacks.md +++ b/users/drashna/callbacks.md @@ -2,7 +2,7 @@ Specifically QMK works by using customized callback functions for everything. This allows for multiple levels of customization. -`matrix_scan` calls `matrix_scan_quantum`, which calls `matrix_scan_kb`, which calls `matrix_scan_user`. +`matrix_scan` calls `matrix_scan_kb`, which calls `matrix_scan_user`. `process_record` calls a bunch of stuff, but eventually calls `process_record_kb` which calls `process_record_user` The same goes for `matrix_init`, `layer_state_set`, `led_set`, and a few other functions. diff --git a/users/drashna/config.h b/users/drashna/config.h index 5c5c131e36..465ea63ee2 100644 --- a/users/drashna/config.h +++ b/users/drashna/config.h @@ -11,7 +11,6 @@ #endif #define IS_COMMAND() (((get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) - #if defined(SPLIT_KEYBOARD) # include "split/split_config.h" #endif @@ -27,51 +26,26 @@ # include "oled/oled_config.h" #endif +#ifdef POINTING_DEVICE_ENABLE +# include "pointing/pointing_config.h" +#endif // POINTING_DEVICE_ENABLE + +#ifdef AUDIO_ENABLE +# include "audio_config.h" +#endif // AUDIO_ENABLE + #if defined(WPM_ENABLE) // # define WPM_LAUNCH_CONTROL -// # define WPM_ALLOW_COUNT_REGRESSOIN // # define WPM_UNFILTERED +# define WPM_ALLOW_COUNT_REGRESSION # define WPM_SAMPLE_SECONDS 10 # define WPM_SAMPLE_PERIODS 50 # define WPM_ESTIMATED_WORD_SIZE 5 #endif -#ifdef AUDIO_ENABLE -# define AUDIO_CLICKY -# define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f - -# ifdef USER_SONG_LIST -# define STARTUP_SONG SONG(RICK_ROLL) -# define GOODBYE_SONG SONG(SONIC_RING) -# define DEFAULT_LAYER_SONGS \ - { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(OVERWATCH_THEME) } -# define UNICODE_SONG_MAC SONG(MARIO_THEME) -# define UNICODE_SONG_LNX SONG(MARIO_POWERUP) -# define UNICODE_SONG_WIN SONG(MARIO_ONEUP) -# define UNICODE_SONG_BSD SONG(RICK_ROLL) -# define UNICODE_SONG_WINC SONG(RICK_ROLL) -# else -# define STARTUP_SONG SONG(STARTUP_SOUND) -# define GOODBYE_SONG SONG(GOODBYE_SOUND) -# define DEFAULT_LAYER_SONGS \ - { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(WORKMAN_SOUND) } -# define UNICODE_SONG_MAC SONG(QWERTY_SOUND) -# define UNICODE_SONG_LNX SONG(COLEMAK_SOUND) -# define UNICODE_SONG_WIN SONG(DVORAK_SOUND) -# define UNICODE_SONG_BSD SONG(WORKMAN_SOUND) -# define UNICODE_SONG_WINC SONG(PLOVER_GOODBYE_SOUND) -# endif -#endif // !AUDIO_ENABLE #define UNICODE_SELECTED_MODES UNICODE_MODE_WINCOMPOSE, UNICODE_MODE_MACOS -// #define WPM_ESTIMATED_WORD_SIZE 5 -#define WPM_ALLOW_COUNT_REGRESSION -// #define WPM_UNFILTERED -// #define WPM_SAMPLE_SECONDS 5 -// #define WPM_SAMPLE_PERIODS 50 -// #define WPM_LAUNCH_CONTROL - #ifndef ONESHOT_TAP_TOGGLE # define ONESHOT_TAP_TOGGLE 2 #endif // !ONESHOT_TAP_TOGGLE @@ -81,9 +55,8 @@ #endif // !ONESHOT_TIMEOUT #if defined(PER_KEY_TAPPING) -# define IGNORE_MOD_TAP_INTERRUPT_PER_KEY # define PERMISSIVE_HOLD_PER_KEY -# define TAPPING_FORCE_HOLD_PER_KEY +# define QUICK_TAP_TERM_PER_KEY # define HOLD_ON_OTHER_KEY # define RETRO_TAPPING_PER_KEY # define HOLD_ON_OTHER_KEY_PRESS_PER_KEY diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c index 283e82d13d..259810c70f 100644 --- a/users/drashna/drashna.c +++ b/users/drashna/drashna.c @@ -117,7 +117,7 @@ void do_scan(void) { uint16_t scan_timer = 0; -void matrix_scan_i2c(void) { +void housekeeping_task_i2c_scanner(void) { if (timer_elapsed(scan_timer) > 5000) { do_scan(); scan_timer = timer_read(); @@ -139,7 +139,7 @@ float autocorrect_song[][2] = SONG(PLOVER_GOODBYE_SOUND); # endif # endif -bool apply_autocorrect(uint8_t backspaces, const char *str) { +bool apply_autocorrect(uint8_t backspaces, const char* str) { if (layer_state_is(_GAMEPAD)) { return false; } @@ -153,7 +153,31 @@ bool apply_autocorrect(uint8_t backspaces, const char *str) { } #endif -#if defined(CAPS_WORD_ENABLE) && !defined(NO_ACTION_ONESHOT) +#if defined(CAPS_WORD_ENABLE) +bool caps_word_press_user(uint16_t keycode) { + switch (keycode) { + // Keycodes that continue Caps Word, with shift applied. + case KC_MINS: + if (!keymap_config.swap_lctl_lgui) { + return true; + } + case KC_A ... KC_Z: + add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift