diff options
| author | stanrc85 <47038504+stanrc85@users.noreply.github.com> | 2019-03-22 23:50:56 -0400 |
|---|---|---|
| committer | Drashna Jaelre <drashna@live.com> | 2019-03-22 20:50:56 -0700 |
| commit | 3a7816843cb3fc890351cae2182d65b5deaa323e (patch) | |
| tree | c7585ab05696c0560f7f1fe0333f66b5e5d6e8ba /users/stanrc85/stanrc85.c | |
| parent | 1dda671e4ab44b978cf4fa78fd39c5d647b5ab86 (diff) | |
| download | qmk_firmware-3a7816843cb3fc890351cae2182d65b5deaa323e.tar.gz qmk_firmware-3a7816843cb3fc890351cae2182d65b5deaa323e.zip | |
[Keymap] New tap dance code added to userspace and keymaps (#5468)
* Adding new tap dance key
* Adding new tap dance code
* add code for copy/paste to tap dance
* testing tap dance enums
* New tap dance keycodes
* Fix enums
Diffstat (limited to 'users/stanrc85/stanrc85.c')
| -rw-r--r-- | users/stanrc85/stanrc85.c | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/users/stanrc85/stanrc85.c b/users/stanrc85/stanrc85.c index e8fc5c1df..3838f33ef 100644 --- a/users/stanrc85/stanrc85.c +++ b/users/stanrc85/stanrc85.c | |||
| @@ -1,13 +1,53 @@ | |||
| 1 | #include "stanrc85.h" | 1 | #include "stanrc85.h" |
| 2 | 2 | ||
| 3 | static td_state_t td_state; | ||
| 4 | |||
| 3 | __attribute__ ((weak)) | 5 | __attribute__ ((weak)) |
| 4 | bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { | 6 | bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { |
| 5 | return true; | 7 | return true; |
| 6 | } | 8 | } |
| 7 | 9 | ||
| 10 | // determine the tapdance state to return | ||
| 11 | int cur_dance (qk_tap_dance_state_t *state) { | ||
| 12 | if (state->count == 1) { | ||
| 13 | if (state->interrupted || !state->pressed) { return SINGLE_TAP; } | ||
| 14 | else { return SINGLE_HOLD; } | ||
| 15 | } | ||
| 16 | if (state->count == 2) { return DOUBLE_TAP; } | ||
| 17 | else { return 3; } // any number higher than the maximum state value you return above | ||
| 18 | } | ||
| 19 | |||
| 20 | // handle the possible states for each tapdance keycode you define: | ||
| 21 | void ctl_copy_finished (qk_tap_dance_state_t *state, void *user_data) { | ||
| 22 | td_state = cur_dance(state); | ||
| 23 | switch (td_state) { | ||
| 24 | case SINGLE_TAP: | ||
| 25 | SEND_STRING(SS_LCTRL("c")); | ||
| 26 | break; | ||
| 27 | case SINGLE_HOLD: | ||
| 28 | register_mods(MOD_BIT(KC_RCTL)); | ||
| 29 | break; | ||
| 30 | case DOUBLE_TAP: | ||
| 31 | SEND_STRING(SS_LCTRL("v")); | ||
| 32 | } | ||
| 33 | } | ||
| 34 | |||
| 35 | void ctl_copy_reset (qk_tap_dance_state_t *state, void *user_data) { | ||
| 36 | switch (td_state) { | ||
| 37 | case SINGLE_TAP: | ||
| 38 | break; | ||
| 39 | case SINGLE_HOLD: | ||
| 40 | unregister_mods(MOD_BIT(KC_RCTL)); | ||
| 41 | break; | ||
| 42 | case DOUBLE_TAP: | ||
| 43 | break; | ||
| 44 | } | ||
| 45 | } | ||
| 46 | |||
| 8 | qk_tap_dance_action_t tap_dance_actions[] = { | 47 | qk_tap_dance_action_t tap_dance_actions[] = { |
| 9 | [TD_WIN] = ACTION_TAP_DANCE_DOUBLE(KC_CAD, KC_LOCK), | 48 | [TD_WIN] = ACTION_TAP_DANCE_DOUBLE(KC_CAD, KC_LOCK), |
| 10 | [TD_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_GRV) | 49 | [TD_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_GRV), |
| 50 | [TD_RCTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctl_copy_finished, ctl_copy_reset) | ||
| 11 | }; | 51 | }; |
| 12 | 52 | ||
| 13 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | 53 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { |
