diff options
| author | Seth Barberee <seth.barberee@gmail.com> | 2021-05-08 10:26:51 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-08 10:26:51 -0700 |
| commit | b7fe24923e29218b15233163d9fe0ac5f332d3fc (patch) | |
| tree | 442ad0be96649a8031e12be9006d6e307ec2f98a /users | |
| parent | 067a6f017477938f965b1c4af4dace288d906730 (diff) | |
| download | qmk_firmware-b7fe24923e29218b15233163d9fe0ac5f332d3fc.tar.gz qmk_firmware-b7fe24923e29218b15233163d9fe0ac5f332d3fc.zip | |
Update sethBarberee Userspace (#12620)
* update for LTO and guard RGBLED_SPLIT
* Revert "update for LTO and guard RGBLED_SPLIT"
This reverts commit ce81177cbe330ae3e1e14c264dc0cb0946f08d70.
* Revert "Revert "update for LTO and guard RGBLED_SPLIT""
This reverts commit 67da0ce9f38777064ad094c1ecba7ce17a40994f.
* update iris keymap for keymap_kc removal and overhaul userspace
* add licenses
* fix tap_dance error when rgblight is disabled and update/clean iris/sinc maps
Diffstat (limited to 'users')
| -rw-r--r-- | users/sethBarberee/config.h | 69 | ||||
| -rw-r--r-- | users/sethBarberee/rgb_light.c | 52 | ||||
| -rw-r--r-- | users/sethBarberee/rgb_light.h | 21 | ||||
| -rw-r--r-- | users/sethBarberee/rules.mk | 9 | ||||
| -rw-r--r-- | users/sethBarberee/sethBarberee.c | 112 | ||||
| -rw-r--r-- | users/sethBarberee/sethBarberee.h | 56 | ||||
| -rw-r--r-- | users/sethBarberee/tap_dance.c | 89 | ||||
| -rw-r--r-- | users/sethBarberee/tap_dance.h | 43 | ||||
| -rw-r--r-- | users/sethBarberee/wrappers.h | 55 |
9 files changed, 453 insertions, 53 deletions
diff --git a/users/sethBarberee/config.h b/users/sethBarberee/config.h index a849ac0e7..785c7bc88 100644 --- a/users/sethBarberee/config.h +++ b/users/sethBarberee/config.h | |||
| @@ -1,8 +1,69 @@ | |||
| 1 | /* Copyright 2021 SethBarberee <seth.barberee@gmail.com> | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | #pragma once | ||
| 17 | |||
| 1 | #ifdef RGBLIGHT_ENABLE | 18 | #ifdef RGBLIGHT_ENABLE |
| 2 | # ifndef CAPS_LOCK_MODE | 19 | # define RGBLIGHT_SLEEP |
| 3 | # define CAPS_LOCK_MODE 1 | 20 | # ifndef RGBLIGHT_HUE_STEP |
| 21 | # define RGBLIGHT_HUE_STEP 8 | ||
| 22 | #endif | ||
| 23 | # ifndef RGBLIGHT_SAT_STEPT | ||
| 24 | # define RGBLIGHT_SAT_STEP 8 | ||
| 25 | #endif | ||
| 26 | # ifndef RGBLIGHT_VAL_STEP | ||
| 27 | # define RGBLIGHT_VAL_STEP 8 | ||
| 28 | #endif | ||
| 29 | // Trim animations I don't use/like | ||
| 30 | # ifdef RGBLIGHT_ANIMATIONS | ||
| 31 | # undef RGBLIGHT_ANIMATIONS | ||
| 4 | # endif | 32 | # endif |
| 5 | # ifndef NORMAL_MODE | 33 | # define RGBLIGHT_EFFECT_BREATHING |
| 6 | # define NORMAL_MODE 4 | 34 | # define RGBLIGHT_EFFECT_STATIC_GRADIENT |
| 35 | # define RGBLIGHT_EFFECT_TWINKLE | ||
| 36 | # ifndef CAPS_LOCK_MODE | ||
| 37 | # define CAPS_LOCK_MODE RGBLIGHT_MODE_STATIC_LIGHT | ||
| 7 | # endif | 38 | # endif |
| 39 | #endif // RGBLIGHT_ENABLE | ||
| 40 | |||
| 41 | #ifndef AUDIO_ENABLE | ||
| 42 | # define NO_MUSIC_MODE | ||
| 43 | #endif // AUDIO_ENABLE | ||
| 44 | |||
| 45 | #define FORCE_NKRO // Force NKRO on by default | ||
| 46 | |||
| 47 | // Totally taken from @drashna's userspace | ||
| 48 | #ifdef TAPPING_TERM | ||
| 49 | # undef TAPPING_TERM | ||
| 50 | #endif // TAPPING_TERM | ||
| 51 | // | ||
| 52 | // Keeping these commented for examples when I want to tweak per keyboard | ||
| 53 | // but setting a default across my boards for now | ||
| 54 | // | ||
| 55 | //#if defined(KEYBOARD_ergodox_ez) | ||
| 56 | //# define TAPPING_TERM 185 | ||
| 57 | #if defined(KEYBOARD_crkbd) | ||
| 58 | # define TAPPING_TERM 185 | ||
| 59 | #else | ||
| 60 | # define TAPPING_TERM 200 | ||
| 61 | #endif | ||
| 62 | |||
| 63 | /* Disable unused and unneeded features to reduce on firmware size */ | ||
| 64 | #ifdef LOCKING_SUPPORT_ENABLE | ||
| 65 | # undef LOCKING_SUPPORT_ENABLE | ||
| 66 | #endif | ||
| 67 | #ifdef LOCKING_RESYNC_ENABLE | ||
| 68 | # undef LOCKING_RESYNC_ENABLE | ||
| 8 | #endif | 69 | #endif |
diff --git a/users/sethBarberee/rgb_light.c b/users/sethBarberee/rgb_light.c new file mode 100644 index 000000000..51cc938c5 --- /dev/null +++ b/users/sethBarberee/rgb_light.c | |||
| @@ -0,0 +1,52 @@ | |||
| 1 | /* Copyright 2021 SethBarberee <seth.barberee@gmail.com> | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | #include "rgb_light.h" | ||
| 17 | |||
| 18 | #if defined(RGBLIGHT_ENABLE) | ||
| 19 | layer_state_t layer_state_set_rgb_light(layer_state_t state){ | ||
| 20 | switch(get_highest_layer(state)) { | ||
| 21 | case _QWERTY: | ||
| 22 | rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_BREATHING + 3); | ||
| 23 | break; | ||
| 24 | case _LOWER: | ||
| 25 | rgblight_set_hsv_and_mode(HSV_GREEN, RGBLIGHT_MODE_BREATHING + 3); | ||
| 26 | break; | ||
| 27 | case _RAISE: | ||
| 28 | rgblight_set_hsv_and_mode(HSV_BLUE, RGBLIGHT_MODE_BREATHING + 3); | ||
| 29 | break; | ||
| 30 | case _ADJUST: | ||
| 31 | rgblight_set_hsv_and_mode(HSV_GOLDENROD, RGBLIGHT_MODE_BREATHING + 3); | ||
| 32 | break; | ||
| 33 | default: | ||
| 34 | rgblight_set_hsv_and_mode(HSV_PINK, RGBLIGHT_MODE_TWINKLE + 3); | ||
| 35 | break; | ||
| 36 | |||
| 37 | } | ||
| 38 | return state; | ||
| 39 | } | ||
| 40 | |||
| 41 | void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) { | ||
| 42 | rgblight_sethsv_noeeprom(hue, sat, val); | ||
| 43 | // wait_us(175); // Add a slight delay between color and mode to ensure it's processed correctly | ||
| 44 | rgblight_mode_noeeprom(mode); | ||
| 45 | } | ||
| 46 | |||
| 47 | void keyboard_post_init_rgb_light(void) | ||
| 48 | { | ||
| 49 | layer_state_set_rgb_light(layer_state); | ||
| 50 | } | ||
| 51 | #endif | ||
| 52 | |||
diff --git a/users/sethBarberee/rgb_light.h b/users/sethBarberee/rgb_light.h new file mode 100644 index 000000000..2e0477ce5 --- /dev/null +++ b/users/sethBarberee/rgb_light.h | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | /* Copyright 2021 SethBarberee <seth.barberee@gmail.com> | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | #pragma once | ||
| 17 | #include "sethBarberee.h" | ||
| 18 | |||
| 19 | layer_state_t layer_state_set_rgb_light(layer_state_t state); | ||
| 20 | void keyboard_post_init_rgb_light(void); | ||
| 21 | void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode); | ||
diff --git a/users/sethBarberee/rules.mk b/users/sethBarberee/rules.mk index d8aef6052..f1bc3325f 100644 --- a/users/sethBarberee/rules.mk +++ b/users/sethBarberee/rules.mk | |||
| @@ -1 +1,10 @@ | |||
| 1 | SRC += sethBarberee.c | 1 | SRC += sethBarberee.c |
| 2 | |||
| 3 | # Add in custom tap dances when tap dance is enabled | ||
| 4 | ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) | ||
| 5 | SRC += tap_dance.c | ||
| 6 | endif | ||
| 7 | |||
| 8 | ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) | ||
| 9 | SRC += rgb_light.c | ||
| 10 | endif | ||
diff --git a/users/sethBarberee/sethBarberee.c b/users/sethBarberee/sethBarberee.c index 10f78f63b..536f3f921 100644 --- a/users/sethBarberee/sethBarberee.c +++ b/users/sethBarberee/sethBarberee.c | |||
| @@ -1,45 +1,85 @@ | |||
| 1 | /* Copyright 2021 SethBarberee <seth.barberee@gmail.com> | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 1 | #include "sethBarberee.h" | 16 | #include "sethBarberee.h" |
| 2 | #ifdef RGBLIGHT_ENABLE | 17 | #include "version.h" |
| 3 | #ifdef TAP_DANCE_ENABLE | 18 | |
| 4 | 19 | __attribute__ ((weak)) void keyboard_pre_init_keymap(void) {} | |
| 5 | // Initialize it now | 20 | |
| 6 | tap caps_status = { | 21 | void keyboard_pre_init_user(void){ |
| 7 | .toggled = false, | 22 | #if defined(BOOTLOADER_CATERINA) |
| 8 | .toggle_mode = CAPS_LOCK_MODE, | 23 | // Make sure the red LEDs don't light |
| 9 | .normal_mode = NORMAL_MODE | 24 | setPinOutput(D5); |
| 10 | }; | 25 | writePinHigh(D5); |
| 11 | 26 | ||
| 12 | void dance_ecap_finished (qk_tap_dance_state_t *state, void *user_data){ | 27 | setPinOutput(B0); |
| 13 | if(state->count == 1){ | 28 | writePinHigh(B0); |
| 14 | register_code(KC_ESC); | 29 | #endif |
| 15 | } else { | 30 | keyboard_pre_init_keymap(); |
| 16 | register_code(KC_CAPS); | ||
| 17 | if(!caps_status.toggled){ | ||
| 18 | // Toggling caps so indicate | ||
| 19 | caps_status.toggled = true; | ||
| 20 | rgblight_mode_noeeprom(caps_status.toggle_mode); | ||
| 21 | } else { | ||
| 22 | // Turning off so return to normal mode | ||
| 23 | caps_status.toggled = false; | ||
| 24 | rgblight_mode_noeeprom(caps_status.normal_mode); | ||
| 25 | } | ||
| 26 | } | ||
| 27 | } | 31 | } |
| 28 | 32 | ||
| 29 | void dance_ecap_reset (qk_tap_dance_state_t *state, void *user_data){ | 33 | __attribute__ ((weak)) layer_state_t layer_state_set_keymap (layer_state_t state) { return state; } |
| 30 | if(state->count == 1){ | 34 | |
| 31 | unregister_code(KC_ESC); | 35 | layer_state_t layer_state_set_user(layer_state_t state){ |
| 32 | } else { | 36 | |
| 33 | unregister_code(KC_CAPS); | 37 | if (!is_keyboard_master()) { |
| 38 | return state; | ||
| 34 | } | 39 | } |
| 40 | |||
| 41 | state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); | ||
| 42 | #if defined(RGBLIGHT_ENABLE) | ||
| 43 | state = layer_state_set_rgb_light(state); | ||
| 44 | #endif | ||
| 45 | return layer_state_set_keymap(state); | ||
| 35 | } | 46 | } |
| 36 | 47 | ||
| 37 | //Tap Dance Definitions | 48 | __attribute__ ((weak)) void keyboard_post_init_keymap(void) {} |
| 38 | qk_tap_dance_action_t tap_dance_actions[] = { | ||
| 39 | //Tap once for Esc, twice for Caps Lock | ||
| 40 | [TD_ECAP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_ecap_finished, dance_ecap_reset), | ||
| 41 | // Other declarations would go here, separated by commas, if you have them | ||
| 42 | }; | ||
| 43 | 49 | ||
| 50 | void keyboard_post_init_user(void) | ||
| 51 | { | ||
| 52 | #if defined(RGBLIGHT_ENABLE) | ||
| 53 | keyboard_post_init_rgb_light(); | ||
| 44 | #endif | 54 | #endif |
| 55 | keyboard_post_init_keymap(); | ||
| 56 | } | ||
| 57 | |||
| 58 | __attribute__((weak)) void suspend_power_down_keymap(void) {} | ||
| 59 | |||
| 60 | void suspend_power_down_user(void) { | ||
| 61 | #ifdef OLED_DRIVER_ENABLE | ||
| 62 | oled_off(); | ||
| 45 | #endif | 63 | #endif |
| 64 | suspend_power_down_keymap(); | ||
| 65 | } | ||
| 66 | |||
| 67 | __attribute__((weak)) void suspend_wakeup_init_keymap(void) {} | ||
| 68 | |||
| 69 | void suspend_wakeup_init_user(void) { suspend_wakeup_init_keymap(); } | ||
| 70 | |||
| 71 | __attribute__ ((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true;} | ||
| 72 | |||
| 73 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
| 74 | if (process_record_keymap(keycode, record)) | ||
| 75 | { | ||
| 76 | switch (keycode) { | ||
| 77 | case KC_VRSN: // Prints firmware version | ||
| 78 | if (record->event.pressed) { | ||
| 79 | SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE); | ||
| 80 | } | ||
| 81 | break; | ||
| 82 | } | ||
| 83 | } | ||
| 84 | return true; | ||
| 85 | } | ||
diff --git a/users/sethBarberee/sethBarberee.h b/users/sethBarberee/sethBarberee.h index 23774ba4e..1da79e1a6 100644 --- a/users/sethBarberee/sethBarberee.h +++ b/users/sethBarberee/sethBarberee.h | |||
| @@ -1,20 +1,50 @@ | |||
| 1 | #ifndef USERSPACE | 1 | /* Copyright 2021 SethBarberee <seth.barberee@gmail.com> |
| 2 | #define USERSPACE | 2 | * |
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | #pragma once | ||
| 3 | 17 | ||
| 4 | #include "quantum.h" | 18 | #include QMK_KEYBOARD_H |
| 5 | 19 | ||
| 6 | #ifdef TAP_DANCE_ENABLE // only enable for tap dances | 20 | #include "wrappers.h" |
| 7 | enum { | ||
| 8 | TD_ECAP = 0, | ||
| 9 | }; | ||
| 10 | 21 | ||
| 11 | #define KC_ECAP TD(TD_ECAP) | 22 | enum layers { |
| 23 | _QWERTY, | ||
| 24 | _LOWER, | ||
| 25 | _RAISE, | ||
| 26 | _ADJUST | ||
| 27 | }; | ||
| 12 | 28 | ||
| 13 | typedef struct { | 29 | enum userspace_keycodes { |
| 14 | bool toggled; // store whether we have toggled caps lock | 30 | KC_VRSN = SAFE_RANGE, |
| 15 | int toggle_mode; // idk why but maybe do something with this.. | 31 | NEW_SAFE_RANGE |
| 16 | int normal_mode; | 32 | }; |
| 17 | } tap; | 33 | |
| 34 | #define KC_LOWR MO(_LOWER) | ||
| 35 | #define KC_RASE MO(_RAISE) | ||
| 36 | |||
| 37 | #ifdef TAP_DANCE_ENABLE | ||
| 38 | # include "tap_dance.h" | ||
| 18 | #endif | 39 | #endif |
| 19 | 40 | ||
| 41 | #ifdef RGBLIGHT_ENABLE | ||
| 42 | # include "rgb_light.h" | ||
| 20 | #endif | 43 | #endif |
| 44 | |||
| 45 | void keyboard_pre_init_keymap(void); | ||
| 46 | void keyboard_post_init_keymap(void); | ||
| 47 | void suspend_power_down_keymap(void); | ||
| 48 | void suspend_wakeup_init_keymap(void); | ||
| 49 | layer_state_t layer_state_set_keymap (layer_state_t state); | ||
| 50 | bool process_record_keymap(uint16_t keycode, keyrecord_t *record); | ||
diff --git a/users/sethBarberee/tap_dance.c b/users/sethBarberee/tap_dance.c new file mode 100644 index 000000000..588ac9be6 --- /dev/null +++ b/users/sethBarberee/tap_dance.c | |||
| @@ -0,0 +1,89 @@ | |||
| 1 | /* Copyright 2021 SethBarberee <seth.barberee@gmail.com> | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | #include "tap_dance.h" | ||
| 17 | |||
| 18 | // Shamelessly stolen from QMK Docs | ||
| 19 | int cur_dance (qk_tap_dance_state_t *state) { | ||
| 20 | if (state->count == 1) { | ||
| 21 | if (state->interrupted || !state->pressed) { | ||
| 22 | return SINGLE_TAP; | ||
| 23 | } else { | ||
| 24 | return SINGLE_HOLD; | ||
| 25 | } | ||
| 26 | } | ||
| 27 | else if (state->count == 2) { | ||
| 28 | if (state->interrupted) return DOUBLE_SINGLE_TAP; | ||
| 29 | else if (state->pressed) return DOUBLE_HOLD; | ||
| 30 | else return DOUBLE_TAP; | ||
| 31 | } | ||
| 32 | if (state->count == 3) { | ||
| 33 | if (state->interrupted || !state->pressed) return TRIPLE_TAP; | ||
| 34 | else return TRIPLE_HOLD; | ||
| 35 | } | ||
| 36 | else return 8; | ||
| 37 | } | ||
| 38 | |||
| 39 | |||
| 40 | // Initialize it now | ||
| 41 | tap caps_status = { | ||
| 42 | .toggled = false, | ||
| 43 | .state = 0 | ||
| 44 | }; | ||
| 45 | |||
| 46 | |||
| 47 | void dance_ecap_finished (qk_tap_dance_state_t *state, void *user_data){ | ||
| 48 | caps_status.state = cur_dance(state); | ||
| 49 | switch(caps_status.state){ | ||
| 50 | case SINGLE_TAP: | ||
| 51 | tap_code(KC_ESC); | ||
| 52 | break; | ||
| 53 | case SINGLE_HOLD: | ||
| 54 | register_code(KC_LCTRL); | ||
| 55 | break; | ||
| 56 | case DOUBLE_TAP: | ||
| 57 | tap_code(KC_CAPS); | ||
| 58 | if(!caps_status.toggled){ | ||
| 59 | // Toggling caps so indicate | ||
| 60 | caps_status.toggled = true; | ||
| 61 | #ifdef RGBLIGHT_ENABLE | ||
| 62 | // Save mode we can from | ||
| 63 | caps_status.normal_mode = rgblight_get_mode(); | ||
| 64 | rgblight_mode_noeeprom(CAPS_LOCK_MODE); | ||
| 65 | #endif | ||
| 66 | } else { | ||
| 67 | // Turning off so return to normal mode | ||
| 68 | caps_status.toggled = false; | ||
| 69 | #ifdef RGBLIGHT_ENABLE | ||
| 70 | rgblight_mode_noeeprom(caps_status.normal_mode); | ||
| 71 | #endif | ||
| 72 | } | ||
| 73 | break; | ||
| 74 | } | ||
| 75 | } | ||
| 76 | |||
| 77 | void dance_ecap_reset (qk_tap_dance_state_t *state, void *user_data){ | ||
| 78 | if(caps_status.state == SINGLE_HOLD){ | ||
| 79 | unregister_code(KC_LCTRL); | ||
| 80 | } | ||
| 81 | caps_status.state = 0; | ||
| 82 | } | ||
| 83 | |||
| 84 | //Tap Dance Definitions | ||
| 85 | qk_tap_dance_action_t tap_dance_actions[] = { | ||
| 86 | //Tap once for Esc, twice for Caps Lock | ||
| 87 | [TD_ECAP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_ecap_finished, dance_ecap_reset), | ||
| 88 | // Other declarations would go here, separated by commas, if you have them | ||
| 89 | }; | ||
diff --git a/users/sethBarberee/tap_dance.h b/users/sethBarberee/tap_dance.h new file mode 100644 index 000000000..709185b39 --- /dev/null +++ b/users/sethBarberee/tap_dance.h | |||
| @@ -0,0 +1,43 @@ | |||
| 1 | /* Copyright 2021 SethBarberee <seth.barberee@gmail.com> | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | #pragma once | ||
| 17 | #include "sethBarberee.h" | ||
| 18 | |||
| 19 | //Define a type for as many tap dance states as you need | ||
| 20 | enum { | ||
| 21 | SINGLE_TAP = 1, | ||
| 22 | SINGLE_HOLD = 2, | ||
| 23 | DOUBLE_TAP = 3, | ||
| 24 | DOUBLE_HOLD = 4, | ||
| 25 | DOUBLE_SINGLE_TAP = 5, //send two single taps | ||
| 26 | TRIPLE_TAP = 6, | ||
| 27 | TRIPLE_HOLD = 7 | ||
| 28 | }; | ||
| 29 | |||
| 30 | |||
| 31 | enum { | ||
| 32 | TD_ECAP = 0, | ||
| 33 | }; | ||
| 34 | |||
| 35 | #define KC_ECAP TD(TD_ECAP) | ||
| 36 | |||
| 37 | typedef struct { | ||
| 38 | bool toggled; // store whether we have toggled caps lock | ||
| 39 | #ifdef RGBLIGHT_ENABLE | ||
| 40 | int normal_mode; | ||
| 41 | #endif // RGBLIGHT_ENABLE | ||
| 42 | int state; | ||
| 43 | } tap; | ||
diff --git a/users/sethBarberee/wrappers.h b/users/sethBarberee/wrappers.h new file mode 100644 index 000000000..b24f52b33 --- /dev/null +++ b/users/sethBarberee/wrappers.h | |||
| @@ -0,0 +1,55 @@ | |||
| 1 | /* Copyright 2021 SethBarberee <seth.barberee@gmail.com> | ||
| 2 | * | ||
| 3 | * This program is free software: you can redistribute it and/or modify | ||
| 4 | * it under the terms of the GNU General Public License as published by | ||
| 5 | * the Free Software Foundation, either version 2 of the License, or | ||
| 6 | * (at your option) any later version. | ||
| 7 | * | ||
| 8 | * This program is distributed in the hope that it will be useful, | ||
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 11 | * GNU General Public License for more details. | ||
| 12 | * | ||
| 13 | * You should have received a copy of the GNU General Public License | ||
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 15 | */ | ||
| 16 | #pragma once | ||
| 17 | |||
| 18 | #include "sethBarberee.h" | ||
| 19 | |||
| 20 | /* | ||
| 21 | Since our quirky block definitions are basically a list of comma separated | ||
| 22 | arguments, we need a wrapper in order for these definitions to be | ||
| 23 | expanded before being used as arguments to the LAYOUT_xxx macro. | ||
| 24 | */ | ||
| 25 | |||
| 26 | /* | ||
| 27 | Blocks for each of the four major keyboard layouts | ||
| 28 | Organized so we can quickly adapt and modify all of them | ||
| 29 | at once, rather than for each keyboard, one at a time. | ||
| 30 | And this allows for much cleaner blocks in the keymaps. | ||
| 31 | For instance Tap/Hold for Control on all of the layouts | ||
| 32 | |||
| 33 | NOTE: These are all the same length. If you do a search/replace | ||
| 34 | then you need to add/remove underscores to keep the | ||
| 35 | lengths consistent. | ||
| 36 | */ | ||
| 37 | |||
| 38 | // clang-format off | ||
| 39 | #define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T | ||
| 40 | #define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G | ||
| 41 | #define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B | ||
| 42 | |||
| 43 | #define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P | ||
| 44 | #define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT | ||
| 45 | #define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH | ||
| 46 | |||
| 47 | #define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 | ||
| 48 | #define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0 | ||
| 49 | #define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5 | ||
| 50 | #define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 | ||
| 51 | |||
| 52 | #define ___________________BLANK___________________ _______, _______, _______, _______, _______ | ||
| 53 | |||
| 54 | // clang-format on | ||
| 55 | |||
