diff --git a/keyboards/betalupi_ergodox/keymaps/default/layers/definitions/main.h b/keyboards/betalupi_ergodox/keymaps/default/layers/definitions/main.h index 418f736..0815d0d 100644 --- a/keyboards/betalupi_ergodox/keymaps/default/layers/definitions/main.h +++ b/keyboards/betalupi_ergodox/keymaps/default/layers/definitions/main.h @@ -15,7 +15,7 @@ KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, TO(LAYER_NUMPAD),\ OSL(LAYER_DESKTOP), KC_NO, KC_LALT, KC_LSHIFT, MO(LAYER_ARROWS),\ \ - KC_PSCREEN, LSFT(KC_PSCREEN),\ + TD(TD_SCREENSHOT), TD(TD_OCR),\ TD(TD_WMLAYOUT),\ KC_SPACE, KC_BSPACE, LCTL(KC_BSPACE),\ \ diff --git a/keyboards/betalupi_ergodox/keymaps/default/rules.mk b/keyboards/betalupi_ergodox/keymaps/default/rules.mk index 0fe174b..a48b821 100644 --- a/keyboards/betalupi_ergodox/keymaps/default/rules.mk +++ b/keyboards/betalupi_ergodox/keymaps/default/rules.mk @@ -5,5 +5,6 @@ TAP_DANCE_ENABLE = yes SRC += \ tapdance/wmlayout.c \ + tapdance/screenshot.c \ tapdance/tapdance.c \ layers/layers.c diff --git a/keyboards/betalupi_ergodox/keymaps/default/tapdance/screenshot.c b/keyboards/betalupi_ergodox/keymaps/default/tapdance/screenshot.c new file mode 100644 index 0000000..6cb057d --- /dev/null +++ b/keyboards/betalupi_ergodox/keymaps/default/tapdance/screenshot.c @@ -0,0 +1,65 @@ +#include "keymap.h" +#include "tapdance.h" + +// Called on every tap +void td_screenshot_dance(qk_tap_dance_state_t *state, void *user_data) {} + +// Called when action finishes +void td_screenshot_finished(qk_tap_dance_state_t *state, void *user_data) { + dance_state[1].step = dance_step(state); + switch (dance_state[1].step) { + case SINGLE_TAP: + register_code16(KC_PRINT_SCREEN); + break; + case DOUBLE_TAP: + register_code16(LSFT(KC_PRINT_SCREEN)); + break; + } +} + +// Called when action resets +void td_screenshot_reset(qk_tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[1].step) { + case SINGLE_TAP: + unregister_code16(KC_PSCREEN); + break; + case DOUBLE_TAP: + unregister_code16(LSFT(KC_PSCREEN)); + break; + } + dance_state[1].step = 0; +} + + + +// Called on every tap +void td_ocr_dance(qk_tap_dance_state_t *state, void *user_data) {} + +// Called when action finishes +void td_ocr_finished(qk_tap_dance_state_t *state, void *user_data) { + dance_state[1].step = dance_step(state); + switch (dance_state[1].step) { + case SINGLE_TAP: + register_code16(LCTL(KC_PSCREEN)); + break; + case DOUBLE_TAP: + register_code16(LCTL(LSFT(KC_PSCREEN))); + break; + } +} + +// Called when action resets +void td_ocr_reset(qk_tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[1].step) { + case SINGLE_TAP: + unregister_code16(LCTL(KC_PRINT_SCREEN)); + break; + case DOUBLE_TAP: + unregister_code16(LCTL(LSFT(KC_PSCREEN))); + break; + } + dance_state[1].step = 0; +} + diff --git a/keyboards/betalupi_ergodox/keymaps/default/tapdance/tapdance.c b/keyboards/betalupi_ergodox/keymaps/default/tapdance/tapdance.c index 422ba0f..5662563 100644 --- a/keyboards/betalupi_ergodox/keymaps/default/tapdance/tapdance.c +++ b/keyboards/betalupi_ergodox/keymaps/default/tapdance/tapdance.c @@ -1,6 +1,8 @@ #include "keymap.h" #include "tapdance.h" +tap dance_state[2]; + uint8_t dance_step(qk_tap_dance_state_t *state) { if (state->count == 1) { if (state->interrupted || !state->pressed) { @@ -22,4 +24,6 @@ uint8_t dance_step(qk_tap_dance_state_t *state) { qk_tap_dance_action_t tap_dance_actions[] = { [TD_WMLAYOUT] = ACTION_TAP_DANCE_FN_ADVANCED(td_wmlayout_dance, td_wmlayout_finished, td_wmlayout_reset), -}; + [TD_SCREENSHOT] = ACTION_TAP_DANCE_FN_ADVANCED(td_screenshot_dance, td_screenshot_finished, td_screenshot_reset), + [TD_OCR] = ACTION_TAP_DANCE_FN_ADVANCED(td_ocr_dance, td_ocr_finished, td_ocr_reset), +}; \ No newline at end of file diff --git a/keyboards/betalupi_ergodox/keymaps/default/tapdance/tapdance.h b/keyboards/betalupi_ergodox/keymaps/default/tapdance/tapdance.h index d5bdb81..ae45cec 100644 --- a/keyboards/betalupi_ergodox/keymaps/default/tapdance/tapdance.h +++ b/keyboards/betalupi_ergodox/keymaps/default/tapdance/tapdance.h @@ -3,6 +3,8 @@ enum tap_dance_codes { TD_WMLAYOUT, + TD_SCREENSHOT, + TD_OCR }; enum { @@ -14,8 +16,22 @@ enum { MORE_TAPS }; +typedef struct { + bool is_press_action; + uint8_t step; +} tap; + +extern tap dance_state[2]; + uint8_t dance_step(qk_tap_dance_state_t *state); void td_wmlayout_dance(qk_tap_dance_state_t *state, void *user_data); void td_wmlayout_finished(qk_tap_dance_state_t *state, void *user_data); void td_wmlayout_reset(qk_tap_dance_state_t *state, void *user_data); + +void td_screenshot_dance(qk_tap_dance_state_t *state, void *user_data); +void td_screenshot_finished(qk_tap_dance_state_t *state, void *user_data); +void td_screenshot_reset(qk_tap_dance_state_t *state, void *user_data); +void td_ocr_dance(qk_tap_dance_state_t *state, void *user_data); +void td_ocr_finished(qk_tap_dance_state_t *state, void *user_data); +void td_ocr_reset(qk_tap_dance_state_t *state, void *user_data); diff --git a/keyboards/betalupi_ergodox/keymaps/default/tapdance/wmlayout.c b/keyboards/betalupi_ergodox/keymaps/default/tapdance/wmlayout.c index e09ca91..7e96e49 100644 --- a/keyboards/betalupi_ergodox/keymaps/default/tapdance/wmlayout.c +++ b/keyboards/betalupi_ergodox/keymaps/default/tapdance/wmlayout.c @@ -1,13 +1,6 @@ #include "keymap.h" #include "tapdance.h" -typedef struct { - bool is_press_action; - uint8_t step; -} tap; - -static tap dance_state[1]; - // Called on every tap void td_wmlayout_dance(qk_tap_dance_state_t *state, void *user_data) { if(state->count == 3) {