diff options
| -rw-r--r-- | keyboards/keebio/bdn9/keymaps/eosti/config.h | 1 | ||||
| -rw-r--r-- | keyboards/keebio/bdn9/keymaps/eosti/keymap.c | 161 | ||||
| -rw-r--r-- | keyboards/keebio/bdn9/keymaps/eosti/readme.md | 9 | ||||
| -rw-r--r-- | keyboards/keebio/bdn9/keymaps/eosti/rules.mk | 1 |
4 files changed, 172 insertions, 0 deletions
diff --git a/keyboards/keebio/bdn9/keymaps/eosti/config.h b/keyboards/keebio/bdn9/keymaps/eosti/config.h new file mode 100644 index 000000000..4ba28f26a --- /dev/null +++ b/keyboards/keebio/bdn9/keymaps/eosti/config.h | |||
| @@ -0,0 +1 @@ | |||
| #define TAPPING_TERM 175 | |||
diff --git a/keyboards/keebio/bdn9/keymaps/eosti/keymap.c b/keyboards/keebio/bdn9/keymaps/eosti/keymap.c new file mode 100644 index 000000000..adec3984b --- /dev/null +++ b/keyboards/keebio/bdn9/keymaps/eosti/keymap.c | |||
| @@ -0,0 +1,161 @@ | |||
| 1 | #include QMK_KEYBOARD_H | ||
| 2 | |||
| 3 | enum layer_names { | ||
| 4 | _BASE, | ||
| 5 | _MACRO, | ||
| 6 | _MOD | ||
| 7 | }; | ||
| 8 | |||
| 9 | enum custom_keycodes { | ||
| 10 | M801 = SAFE_RANGE, | ||
| 11 | M802, | ||
| 12 | M803, | ||
| 13 | M804, | ||
| 14 | M805, | ||
| 15 | M806, | ||
| 16 | MAIL_C | ||
| 17 | }; | ||
| 18 | |||
| 19 | // tapdance keycodes | ||
| 20 | enum td_keycodes { | ||
| 21 | LAY // Our example key: `LALT` when held, `(` when tapped. Add additional keycodes for each tapdance. | ||
| 22 | }; | ||
| 23 | |||
| 24 | // define a type containing as many tapdance states as you need | ||
| 25 | typedef enum { | ||
| 26 | SINGLE_TAP, | ||
| 27 | SINGLE_HOLD, | ||
| 28 | } td_state_t; | ||
| 29 | |||
| 30 | // create a global instance of the tapdance state type | ||
| 31 | static td_state_t td_state; | ||
| 32 | |||
| 33 | // declare your tapdance functions: | ||
| 34 | |||
| 35 | // function to determine the current tapdance state | ||
| 36 | int cur_dance (qk_tap_dance_state_t *state); | ||
| 37 | |||
| 38 | // `finished` and `reset` functions for each tapdance keycode | ||
| 39 | void altlp_finished (qk_tap_dance_state_t *state, void *user_data); | ||
| 40 | void altlp_reset (qk_tap_dance_state_t *state, void *user_data); | ||
| 41 | |||
| 42 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
| 43 | switch (keycode) { | ||
| 44 | case M801: | ||
| 45 | if (record->event.pressed) { | ||
| 46 | SEND_STRING("M801" SS_TAP(X_ENTER)); | ||
| 47 | } | ||
| 48 | break; | ||
| 49 | case M802: | ||
| 50 | if (record->event.pressed) { | ||
| 51 | SEND_STRING("M802" SS_TAP(X_ENTER)); | ||
| 52 | } | ||
| 53 | break; | ||
| 54 | case M803: | ||
| 55 | if (record->event.pressed) { | ||
| 56 | SEND_STRING("M803" SS_TAP(X_ENTER)); | ||
| 57 | } | ||
| 58 | break; | ||
| 59 | case M804: | ||
| 60 | if (record->event.pressed) { | ||
| 61 | SEND_STRING("M804" SS_TAP(X_ENTER)); | ||
| 62 | } | ||
| 63 | break; | ||
| 64 | case M805: | ||
| 65 | if (record->event.pressed) { | ||
| 66 | SEND_STRING("M805" SS_TAP(X_ENTER)); | ||
| 67 | } | ||
| 68 | break; | ||
| 69 | case M806: | ||
| 70 | if (record->event.pressed) { | ||
| 71 | SEND_STRING("M806" SS_TAP(X_ENTER)); | ||
| 72 | } | ||
| 73 | break; | ||
| 74 | case MAIL_C: | ||
| 75 | if (record->event.pressed) { | ||
| 76 | SEND_STRING(SS_TAP(X_ENTER) SS_TAP(X_DOWN) SS_TAP(X_DOWN) SS_TAP(X_ENTER)); | ||
| 77 | } | ||
| 78 | break; | ||
| 79 | } | ||
| 80 | |||
| 81 | return true; | ||
| 82 | }; | ||
| 83 | |||
| 84 | #define EX_ARR LCTL(LSFT(KC_ENTER)) | ||
| 85 | |||
| 86 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 87 | [_BASE] = LAYOUT( | ||
| 88 | // ┌────────┬────────┬────────┐ | ||
| 89 | KC_MUTE, KC_UP, TD(LAY), | ||
| 90 | // ├────────┼────────┼────────┤ | ||
| 91 | KC_LEFT, KC_DOWN, KC_RGHT, | ||
| 92 | // ├────────┼────────┼────────┤ | ||
| 93 | KC_NO, KC_NO, KC_NO | ||
| 94 | // └────────┴────────┴────────┘ | ||
| 95 | ), | ||
| 96 | [_MACRO] = LAYOUT( | ||
| 97 | // ┌────────┬────────┬────────┐ | ||
| 98 | _______, KC_SPC, TG(_MACRO), | ||
| 99 | // ├────────┼────────┼────────┤ | ||
| 100 | M801, M802, M803, | ||
| 101 | // ├────────┼────────┼────────┤ | ||
| 102 | MAIL_C, KC_NO, EX_ARR | ||
| 103 | // └────────┴────────┴────────┘ | ||
| 104 | ), | ||
| 105 | [_MOD] = LAYOUT( | ||
| 106 | // ┌────────┬────────┬────────┐ | ||
| 107 | _______, BL_STEP,TG(_MOD), | ||
| 108 | // ├────────┼────────┼────────┤ | ||
| 109 | KC_NO, RGB_MOD, KC_NO, | ||
| 110 | // ├────────┼────────┼────────┤ | ||
| 111 | KC_NO, KC_NO, KC_NO | ||
| 112 | // └────────┴────────┴────────┘ | ||
| 113 | ) | ||
| 114 | }; | ||
| 115 | |||
| 116 | void encoder_update_user(uint8_t index, bool clockwise) { | ||
| 117 | if (index == 0) { | ||
| 118 | if (clockwise) { | ||
| 119 | tap_code(KC_VOLD); | ||
| 120 | } else { | ||
| 121 | tap_code(KC_VOLU); | ||
| 122 | } | ||
| 123 | } | ||
| 124 | } | ||
| 125 | |||
| 126 | // determine the tapdance state to return | ||
| 127 | int cur_dance (qk_tap_dance_state_t *state) { | ||
| 128 | if (state->count == 1) { | ||
| 129 | if (state->interrupted || !state->pressed) { return SINGLE_TAP; } | ||
| 130 | else { return SINGLE_HOLD; } | ||
| 131 | } else { return 3; } // any number higher than the maximum state value you return above | ||
| 132 | } | ||
| 133 | |||
| 134 | // handle the possible states for each tapdance keycode you define: | ||
| 135 | |||
| 136 | void altlp_finished (qk_tap_dance_state_t *state, void *user_data) { | ||
| 137 | td_state = cur_dance(state); | ||
| 138 | switch (td_state) { | ||
| 139 | case SINGLE_TAP: | ||
| 140 | layer_on(_MACRO); | ||
| 141 | break; | ||
| 142 | case SINGLE_HOLD: | ||
| 143 | layer_on(_MOD); | ||
| 144 | break; | ||
| 145 | } | ||
| 146 | } | ||
| 147 | |||
| 148 | void altlp_reset (qk_tap_dance_state_t *state, void *user_data) { | ||
| 149 | switch (td_state) { | ||
| 150 | case SINGLE_TAP: | ||
| 151 | break; | ||
| 152 | case SINGLE_HOLD: | ||
| 153 | layer_off(_MOD); | ||
| 154 | break; | ||
| 155 | } | ||
| 156 | } | ||
| 157 | |||
| 158 | // define `ACTION_TAP_DANCE_FN_ADVANCED()` for each tapdance keycode, passing in `finished` and `reset` functions | ||
| 159 | qk_tap_dance_action_t tap_dance_actions[] = { | ||
| 160 | [LAY] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altlp_finished, altlp_reset) | ||
| 161 | }; | ||
diff --git a/keyboards/keebio/bdn9/keymaps/eosti/readme.md b/keyboards/keebio/bdn9/keymaps/eosti/readme.md new file mode 100644 index 000000000..d93ce1e5f --- /dev/null +++ b/keyboards/keebio/bdn9/keymaps/eosti/readme.md | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | # EosTi's BDN9 Macropad Layout | ||
| 2 | |||
| 3 | ## Features | ||
| 4 | |||
| 5 | - Single encoder in the top left to control volume, push to mute | ||
| 6 | - Arrow keys on home layer | ||
| 7 | - Tap upper right to toggle to macro layer | ||
| 8 | - Hold upper right to change keyboard functions (aka RGB) | ||
| 9 | - 520 entire bytes free! | ||
diff --git a/keyboards/keebio/bdn9/keymaps/eosti/rules.mk b/keyboards/keebio/bdn9/keymaps/eosti/rules.mk new file mode 100644 index 000000000..31e0fcf29 --- /dev/null +++ b/keyboards/keebio/bdn9/keymaps/eosti/rules.mk | |||
| @@ -0,0 +1 @@ | |||
| TAP_DANCE_ENABLE=yes | |||
