diff options
| -rw-r--r-- | keyboards/planck/keymaps/buffet/config.h | 46 | ||||
| -rw-r--r-- | keyboards/planck/keymaps/buffet/keymap.c | 384 | ||||
| -rw-r--r-- | keyboards/planck/keymaps/buffet/readme.md | 104 | ||||
| -rw-r--r-- | keyboards/planck/keymaps/buffet/rgb_matrix_user.inc | 18 | ||||
| -rw-r--r-- | keyboards/planck/keymaps/buffet/rules.mk | 6 |
5 files changed, 558 insertions, 0 deletions
diff --git a/keyboards/planck/keymaps/buffet/config.h b/keyboards/planck/keymaps/buffet/config.h new file mode 100644 index 000000000..478b282b3 --- /dev/null +++ b/keyboards/planck/keymaps/buffet/config.h | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | #pragma once | ||
| 2 | |||
| 3 | #define TAPPING_TERM 150 | ||
| 4 | #define PERMISSIVE_HOLD | ||
| 5 | |||
| 6 | // Disable all RGB effects | ||
| 7 | #define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT | ||
| 8 | #define DISABLE_RGB_MATRIX_ALPHAS_MODS | ||
| 9 | #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN | ||
| 10 | #define DISABLE_RGB_MATRIX_BREATHING | ||
| 11 | #define DISABLE_RGB_MATRIX_BAND_SAT | ||
| 12 | #define DISABLE_RGB_MATRIX_BAND_VAL | ||
| 13 | #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT | ||
| 14 | #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL | ||
| 15 | #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT | ||
| 16 | #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL | ||
| 17 | #define DISABLE_RGB_MATRIX_CYCLE_ALL | ||
| 18 | #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT | ||
| 19 | #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN | ||
| 20 | #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN | ||
| 21 | #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL | ||
| 22 | #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON | ||
| 23 | #define DISABLE_RGB_MATRIX_DUAL_BEACON | ||
| 24 | #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL | ||
| 25 | #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL | ||
| 26 | #define DISABLE_RGB_MATRIX_RAINBOW_BEACON | ||
| 27 | #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS | ||
| 28 | #define DISABLE_RGB_MATRIX_RAINDROPS | ||
| 29 | #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS | ||
| 30 | #define DISABLE_RGB_MATRIX_TYPING_HEATMAP | ||
| 31 | #define DISABLE_RGB_MATRIX_DIGITAL_RAIN | ||
| 32 | #define DISABLE_RGB_MATRIX_SOLID_REACTIVE | ||
| 33 | #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE | ||
| 34 | #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE | ||
| 35 | #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE | ||
| 36 | #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS | ||
| 37 | #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS | ||
| 38 | #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS | ||
| 39 | #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS | ||
| 40 | #define DISABLE_RGB_MATRIX_SPLASH | ||
| 41 | #define DISABLE_RGB_MATRIX_MULTISPLASH | ||
| 42 | #define DISABLE_RGB_MATRIX_SOLID_SPLASH | ||
| 43 | #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH | ||
| 44 | |||
| 45 | // Most tactile encoders have detents every 4 stages | ||
| 46 | #define ENCODER_RESOLUTION 4 | ||
diff --git a/keyboards/planck/keymaps/buffet/keymap.c b/keyboards/planck/keymaps/buffet/keymap.c new file mode 100644 index 000000000..78a9f711c --- /dev/null +++ b/keyboards/planck/keymaps/buffet/keymap.c | |||
| @@ -0,0 +1,384 @@ | |||
| 1 | /* Copyright 2015-2017 Jack Humbert | ||
| 2 | * 2020 Niclas Meyer | ||
| 3 | * | ||
| 4 | * This program is free software: you can redistribute it and/or modify | ||
| 5 | * it under the terms of the GNU General Public License as published by | ||
| 6 | * the Free Software Foundation, either version 2 of the License, or | ||
| 7 | * (at your option) any later version. | ||
| 8 | * | ||
| 9 | * This program is distributed in the hope that it will be useful, | ||
| 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 12 | * GNU General Public License for more details. | ||
| 13 | * | ||
| 14 | * You should have received a copy of the GNU General Public License | ||
| 15 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| 16 | */ | ||
| 17 | |||
| 18 | #include QMK_KEYBOARD_H | ||
| 19 | |||
| 20 | #define K(kc) (1ull<<((kc) - ALPHA)) | ||
| 21 | |||
| 22 | #define KALPHA K(ALPHA) | ||
| 23 | #define KBETA K(BETA) | ||
| 24 | #define KGAMMA K(GAMMA) | ||
| 25 | #define KDELTA K(DELTA) | ||
| 26 | #define KEPSILON K(EPSILON) | ||
| 27 | #define KZETA K(ZETA) | ||
| 28 | #define KTHETA K(THETA) | ||
| 29 | #define KIOTA K(IOTA) | ||
| 30 | #define KKAPPA K(KAPPA) | ||
| 31 | |||
| 32 | enum keys { | ||
| 33 | ALPHA = SAFE_RANGE, | ||
| 34 | BETA, | ||
| 35 | GAMMA, | ||
| 36 | DELTA, | ||
| 37 | EPSILON, | ||
| 38 | ZETA, | ||
| 39 | THETA, | ||
| 40 | IOTA, | ||
| 41 | KAPPA, | ||
| 42 | LOCK, | ||
| 43 | NONE, | ||
| 44 | }; | ||
| 45 | |||
| 46 | enum layers { | ||
| 47 | NORMAL, | ||
| 48 | QWERTY, | ||
| 49 | GAME, | ||
| 50 | LOWER, | ||
| 51 | RAISE, | ||
| 52 | PHI, | ||
| 53 | FN, | ||
| 54 | }; | ||
| 55 | |||
| 56 | #define XXXX KC_NO | ||
| 57 | #define ____ KC_TRNS | ||
| 58 | |||
| 59 | #define CQWER LM(QWERTY, MOD_LCTL) | ||
| 60 | #define AQWER LM(QWERTY, MOD_LALT) | ||
| 61 | |||
| 62 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 63 | [NORMAL] = LAYOUT_planck_grid( | ||
| 64 | ALPHA, BETA, GAMMA, DELTA, ____, ____, ____, ____, DELTA, GAMMA, BETA, ALPHA, | ||
| 65 | EPSILON, ZETA, THETA, IOTA, ____, ____, ____, ____, IOTA, THETA, ZETA, EPSILON, | ||
| 66 | ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, | ||
| 67 | MO(PHI), CQWER, AQWER, MO(FN), KAPPA, ____, XXXX, KAPPA, MO(FN), ____, ____, MO(PHI) | ||
| 68 | ), | ||
| 69 | [QWERTY] = LAYOUT_planck_grid( | ||
| 70 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, | ||
| 71 | KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, | ||
| 72 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SFTENT, | ||
| 73 | MO(PHI), KC_LCTL, KC_LALT, KC_LGUI, MO(LOWER), KC_SPC, XXXX, MO(RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT | ||
| 74 | ), | ||
| 75 | [GAME] = LAYOUT_planck_grid( | ||
| 76 | KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, | ||
| 77 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, | ||
| 78 | KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, | ||
| 79 | KC_LCTL, KC_Z, KC_X, KC_C, KC_SPC, ____, XXXX, ____, KC_V, KC_B, ____, MO(PHI) | ||
| 80 | ), | ||
| 81 | [LOWER] = LAYOUT_planck_grid( | ||
| 82 | KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, | ||
| 83 | KC_DEL, ____, ____, ____, ____, ____, ____, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, | ||
| 84 | ____, ____, ____, ____, ____, ____, ____, KC_PGUP, KC_PGDN, KC_HOME, KC_END, ____, | ||
| 85 | ____, ____, ____, ____, ____, ____, XXXX, ____, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY | ||
| 86 | ), | ||
| 87 | [RAISE] = LAYOUT_planck_grid( | ||
| 88 | KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, | ||
| 89 | KC_DEL, ____, ____, ____, ____, ____, ____, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, | ||
| 90 | ____, ____, ____, ____, ____, ____, ____, KC_PGUP, KC_PGDN, KC_HOME, KC_END, ____, | ||
| 91 | ____, ____, ____, ____, ____, ____, XXXX, ____, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY | ||
| 92 | ), | ||
| 93 | [PHI] = LAYOUT_planck_grid( | ||
| 94 | RESET, KC_F1, KC_F2, KC_F3, KC_F4, ____, ____, ____, ____, ____, ____, KC_DEL, | ||
| 95 | ____, KC_F5, KC_F6, KC_F7, KC_F8, ____, ____, DF(QWERTY), DF(NORMAL), DF(GAME), ____, KC_F13, | ||
| 96 | ____, KC_F9, KC_F10, KC_F11, KC_F12, ____, ____, ____, ____, ____, ____, ____, | ||
| 97 | ____, RGB_TOG, RGB_MOD, ____, ____, ____, XXXX, ____, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY | ||
| 98 | ), | ||
| 99 | [FN] = LAYOUT_planck_grid( | ||
| 100 | ____, ____, KC_UP, ____, ____, ____, ____, ____, ____, KC_UP, ____, ____, | ||
| 101 | KC_DEL, KC_LEFT, KC_DOWN, KC_RIGHT, ____, ____, ____, ____, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, | ||
| 102 | KC_HOME, KC_END, KC_PGUP, KC_PGDN, ____, ____, ____, ____, KC_PGDN, KC_PGUP, KC_HOME, KC_END, | ||
| 103 | ____, ____, ____, ____, ____, ____, XXXX, ____, ____, ____, ____, ____ | ||
| 104 | ), | ||
| 105 | }; | ||
| 106 | |||
| 107 | static uint16_t left_chord = 0; | ||
| 108 | static uint16_t right_chord = 0; | ||
| 109 | |||
| 110 | static bool locking = false; | ||
| 111 | static bool locked = false; | ||
| 112 | static uint16_t mods = 0; | ||
| 113 | |||
| 114 | #define PROCESS_MOD(mod) \ | ||
| 115 | do { \ | ||
| 116 | if ((mods & MOD_##mod) && !(keys & MOD_##mod)) { \ | ||
| 117 | unregister_code16(KC_##mod); \ | ||
| 118 | } \ | ||
| 119 | if (!(mods & MOD_##mod) && (keys & MOD_##mod)) { \ | ||
| 120 | register_code16(KC_##mod); \ | ||
| 121 | } \ | ||
| 122 | } while (0) | ||
| 123 | |||
| 124 | static void process_keys(uint16_t keys) { | ||
| 125 | if (keys == NONE) { | ||
| 126 | return; | ||
| 127 | } | ||
| 128 | |||
| 129 | if (keys == LOCK) { | ||
| 130 | locking = !locking; | ||
| 131 | return; | ||
| 132 | } | ||
| 133 | |||
| 134 | if ((keys & QK_ONE_SHOT_MOD) == QK_ONE_SHOT_MOD) { | ||
| 135 | PROCESS_MOD(LCTL); | ||
| 136 | PROCESS_MOD(LSFT); | ||
| 137 | PROCESS_MOD(LALT); | ||
| 138 | PROCESS_MOD(LGUI); | ||
| 139 | |||
| 140 | mods = keys & ~QK_ONE_SHOT_MOD; | ||
| 141 | locked = false; | ||
| 142 | |||
| 143 | if (locking) { | ||
| 144 | locking = false; | ||
| 145 | locked = true; | ||
| 146 | } | ||
| 147 | |||
| 148 | return; | ||
| 149 | } | ||
| 150 | |||
| 151 | // Normal key | ||
| 152 | tap_code16(keys); | ||
| 153 | locking = false; | ||
| 154 | |||
| 155 | if (mods && !locked) { | ||
| 156 | if (mods & MOD_LCTL) { | ||
| 157 | unregister_code16(KC_LCTL); | ||
| 158 | } | ||
| 159 | |||
| 160 | if (mods & MOD_LSFT) { | ||
| 161 | unregister_code16(KC_LSFT); | ||
| 162 | } | ||
| 163 | |||
| 164 | if (mods & MOD_LALT) { | ||
| 165 | unregister_code16(KC_LALT); | ||
| 166 | } | ||
| 167 | |||
| 168 | if (mods & MOD_LGUI) { | ||
| 169 | unregister_code16(KC_LGUI); | ||
| 170 | } | ||
| 171 | |||
| 172 | mods = 0; | ||
| 173 | } | ||
| 174 | } | ||
| 175 | |||
| 176 | static uint16_t chord_to_keys(uint16_t chord) { | ||
| 177 | switch (chord) { | ||
| 178 | // Unshifted Extra | ||
| 179 | case KKAPPA: return KC_SPC; | ||
| 180 | case KEPSILON | KZETA | KTHETA | KIOTA: return KC_ENT; | ||
| 181 | case KEPSILON | KZETA | KGAMMA | KIOTA: return KC_TAB; | ||
| 182 | case KEPSILON | KIOTA: return KC_BSPC; | ||
| 183 | case KKAPPA | KEPSILON: return KC_ESC; | ||
| 184 | |||
| 185 | // Shifted Extra | ||
| 186 | case KKAPPA | KEPSILON | KZETA | KTHETA | KIOTA: return S(KC_ENT); | ||
| 187 | case KKAPPA | KEPSILON | KZETA | KGAMMA | KIOTA: return S(KC_TAB); | ||
| 188 | case KKAPPA | KEPSILON | KIOTA: return S(KC_BSPC); | ||
| 189 | |||
| 190 | // Lowercase Letters | ||
| 191 | case KBETA: return KC_A; | ||
| 192 | case KZETA | KDELTA: return KC_B; | ||
| 193 | case KBETA | KGAMMA | KDELTA: return KC_C; | ||
| 194 | case KZETA | KTHETA | KIOTA: return KC_D; | ||
| 195 | case KDELTA: return KC_E; | ||
| 196 | case KGAMMA | KIOTA: return KC_F; | ||
| 197 | case KBETA | KTHETA: return KC_G; | ||
| 198 | case KZETA | KTHETA: return KC_H; | ||
| 199 | case KGAMMA: return KC_I; | ||
| 200 | case KBETA | KGAMMA | KIOTA: return KC_J; | ||
| 201 | case KBETA | KTHETA | KIOTA: return KC_K; | ||
| 202 | case KBETA | KGAMMA: return KC_L; | ||
| 203 | case KBETA | KDELTA: return KC_M; | ||
| 204 | case KZETA: return KC_N; | ||
| 205 | case KTHETA: return KC_O; | ||
| 206 | case KZETA | KGAMMA: return KC_P; | ||
| 207 | case KBETA | KTHETA | KDELTA: return KC_Q; | ||
| 208 | case KGAMMA | KDELTA: return KC_R; | ||
| 209 | case KTHETA | KIOTA: return KC_S; | ||
| 210 | case KIOTA: return KC_T; | ||
| 211 | case KZETA | KIOTA: return KC_U; | ||
| 212 | case KTHETA | KDELTA: return KC_V; | ||
| 213 | case KZETA | KGAMMA | KIOTA: return KC_W; | ||
| 214 | case KZETA | KTHETA | KDELTA: return KC_X; | ||
| 215 | case KBETA | KIOTA: return KC_Y; | ||
| 216 | case KZETA | KGAMMA | KDELTA: return KC_Z; | ||
| 217 | |||
| 218 | // Uppercase Letters | ||
| 219 | case KKAPPA | KBETA: return S(KC_A); | ||
| 220 | case KKAPPA | KZETA | KDELTA: return S(KC_B); | ||
| 221 | case KKAPPA | KBETA | KGAMMA | KDELTA: return S(KC_C); | ||
| 222 | case KKAPPA | KZETA | KTHETA | KIOTA: return S(KC_D); | ||
| 223 | case KKAPPA | KDELTA: return S(KC_E); | ||
| 224 | case KKAPPA | KGAMMA | KIOTA: return S(KC_F); | ||
| 225 | case KKAPPA | KBETA | KTHETA: return S(KC_G); | ||
| 226 | case KKAPPA | KZETA | KTHETA: return S(KC_H); | ||
| 227 | case KKAPPA | KGAMMA: return S(KC_I); | ||
| 228 | case KKAPPA | KBETA | KGAMMA | KIOTA: return S(KC_J); | ||
| 229 | case KKAPPA | KBETA | KTHETA | KIOTA: return S(KC_K); | ||
| 230 | case KKAPPA | KBETA | KGAMMA: return S(KC_L); | ||
| 231 | case KKAPPA | KBETA | KDELTA: return S(KC_M); | ||
| 232 | case KKAPPA | KZETA: return S(KC_N); | ||
| 233 | case KKAPPA | KTHETA: return S(KC_O); | ||
| 234 | case KKAPPA | KZETA | KGAMMA: return S(KC_P); | ||
| 235 | case KKAPPA | KBETA | KTHETA | KDELTA: return S(KC_Q); | ||
| 236 | case KKAPPA | KGAMMA | KDELTA: return S(KC_R); | ||
| 237 | case KKAPPA | KTHETA | KIOTA: return S(KC_S); | ||
| 238 | case KKAPPA | KIOTA: return S(KC_T); | ||
| 239 | case KKAPPA | KZETA | KIOTA: return S(KC_U); | ||
| 240 | case KKAPPA | KTHETA | KDELTA: return S(KC_V); | ||
| 241 | case KKAPPA | KZETA | KGAMMA | KIOTA: return S(KC_W); | ||
| 242 | case KKAPPA | KZETA | KTHETA | KDELTA: return S(KC_X); | ||
| 243 | case KKAPPA | KBETA | KIOTA: return S(KC_Y); | ||
| 244 | case KKAPPA | KZETA | KGAMMA | KDELTA: return S(KC_Z); | ||
| 245 | |||
| 246 | // Unshifted Numbers | ||
| 247 | case KEPSILON | KZETA: return KC_0; | ||
| 248 | case KEPSILON | KZETA | KIOTA: return KC_1; | ||
| 249 | case KEPSILON | KZETA | KTHETA: return KC_2; | ||
| 250 | case KEPSILON | KBETA: return KC_3; | ||
| 251 | case KEPSILON | KBETA | KDELTA: return KC_4; | ||
| 252 | case KEPSILON | KBETA | KGAMMA: return KC_5; | ||
| 253 | case KEPSILON | KBETA | KIOTA: return KC_6; | ||
| 254 | case KEPSILON | KTHETA: return KC_7; | ||
| 255 | case KEPSILON | KBETA | KGAMMA | KIOTA: return KC_8; | ||
| 256 | case KEPSILON | KGAMMA | KDELTA: return KC_9; | ||
| 257 | |||
| 258 | // Shifted Numbers | ||
| 259 | case KKAPPA | KEPSILON | KZETA | KIOTA: return KC_EXLM; | ||
| 260 | case KKAPPA | KEPSILON | KZETA | KTHETA: return KC_AT; | ||
| 261 | case KKAPPA | KEPSILON | KBETA: return KC_HASH; | ||
| 262 | case KKAPPA | KEPSILON | KBETA | KDELTA: return KC_DLR; | ||
| 263 | case KKAPPA | KEPSILON | KBETA | KGAMMA: return KC_PERC; | ||
| 264 | case KKAPPA | KEPSILON | KBETA | KIOTA: return KC_CIRC; | ||
| 265 | case KKAPPA | KEPSILON | KTHETA: return KC_AMPR; | ||
| 266 | case KKAPPA | KEPSILON | KBETA | KGAMMA | KIOTA: return KC_ASTR; | ||
| 267 | case KKAPPA | KEPSILON | KGAMMA | KDELTA: return KC_LPRN; | ||
| 268 | case KKAPPA | KEPSILON | KZETA: return KC_RPRN; | ||
| 269 | |||
| 270 | // Unshifted Symbols | ||
| 271 | case KEPSILON | KBETA | KTHETA | KIOTA: return KC_MINS; | ||
| 272 | case KEPSILON | KZETA | KTHETA | KDELTA: return KC_EQL; | ||
| 273 | case KEPSILON | KZETA | KGAMMA: return KC_LBRC; | ||
| 274 | case KEPSILON | KGAMMA | KIOTA: return KC_RBRC; | ||
| 275 | case KEPSILON | KBETA | KTHETA: return KC_BSLS; | ||
| 276 | case KEPSILON | KBETA | KGAMMA | KDELTA: return KC_SCLN; | ||
| 277 | case KEPSILON | KZETA | KDELTA: return KC_QUOT; | ||
| 278 | case KEPSILON | KTHETA | KIOTA: return KC_COMM; | ||
| 279 | case KEPSILON | KZETA | KGAMMA | KDELTA: return KC_DOT; | ||
| 280 | case KEPSILON | KGAMMA: return KC_SLSH; | ||
| 281 | case KEPSILON | KDELTA: return KC_GRV; | ||
| 282 | |||
| 283 | // Shifted Symbols | ||
| 284 | case KKAPPA | KEPSILON | KBETA | KTHETA | KIOTA: return KC_UNDS; | ||
| 285 | case KKAPPA | KEPSILON | KZETA | KTHETA | KDELTA: return KC_PLUS; | ||
| 286 | case KKAPPA | KEPSILON | KZETA | KGAMMA: return KC_LCBR; | ||
| 287 | case KKAPPA | KEPSILON | KGAMMA | KIOTA: return KC_RCBR; | ||
| 288 | case KKAPPA | KEPSILON | KBETA | KTHETA: return KC_PIPE; | ||
| 289 | case KKAPPA | KEPSILON | KBETA | KGAMMA | KDELTA: return KC_COLN; | ||
| 290 | case KKAPPA | KEPSILON | KZETA | KDELTA: return KC_DQT; | ||
| 291 | case KKAPPA | KEPSILON | KTHETA | KIOTA: return KC_LT; | ||
| 292 | case KKAPPA | KEPSILON | KZETA | KGAMMA | KDELTA: return KC_GT; | ||
| 293 | case KKAPPA | KEPSILON | KGAMMA: return KC_QUES; | ||
| 294 | case KKAPPA | KEPSILON | KDELTA: return KC_TILD; | ||
| 295 | |||
| 296 | // Modifiers | ||
| 297 | case KALPHA | KIOTA: return LOCK; | ||
| 298 | |||
| 299 | case KALPHA: return QK_ONE_SHOT_MOD; // Release all | ||
| 300 | |||
| 301 | case KALPHA | KBETA: return OSM(MOD_LCTL); | ||
| 302 | case KALPHA | KGAMMA: return OSM(MOD_LSFT); | ||
| 303 | case KALPHA | KDELTA: return OSM(MOD_LALT); | ||
| 304 | case KALPHA | KKAPPA: return OSM(MOD_LGUI); | ||
| 305 | |||
| 306 | case KALPHA | KBETA | KGAMMA: return OSM(MOD_LCTL | MOD_LSFT); | ||
| 307 | case KALPHA | KBETA | KDELTA: return OSM(MOD_LCTL | MOD_LALT); | ||
| 308 | case KALPHA | KBETA | KKAPPA: return OSM(MOD_LCTL | MOD_LGUI); | ||
| 309 | case KALPHA | KGAMMA | KDELTA: return OSM(MOD_LSFT | MOD_LALT); | ||
| 310 | case KALPHA | KGAMMA | KKAPPA: return OSM(MOD_LSFT | MOD_LGUI); | ||
| 311 | case KALPHA | KDELTA | KKAPPA: return OSM(MOD_LALT | MOD_LGUI); | ||
| 312 | |||
| 313 | case KALPHA | KBETA | KGAMMA | KDELTA: return OSM(MOD_LCTL | MOD_LSFT | MOD_LALT); | ||
| 314 | case KALPHA | KBETA | KGAMMA | KKAPPA: return OSM(MOD_LCTL | MOD_LSFT | MOD_LGUI); | ||
| 315 | case KALPHA | KBETA | KDELTA | KKAPPA: return OSM(MOD_LCTL | MOD_LALT | MOD_LGUI); | ||
| 316 | case KALPHA | KGAMMA | KDELTA | KKAPPA: return OSM(MOD_LSFT | MOD_LALT | MOD_LGUI); | ||
| 317 | |||
| 318 | case KALPHA | KBETA | KGAMMA | KDELTA | KKAPPA: return OSM(MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI); | ||
| 319 | } | ||
| 320 | |||
| 321 | return NONE; | ||
| 322 | } | ||
| 323 | |||
| 324 | static uint16_t *get_hand(keypos_t *key) { | ||
| 325 | if (key->row <= 3) { | ||
| 326 | return &left_chord; | ||
| 327 | } | ||
| 328 | |||
| 329 | if (key->row <= 6) { | ||
| 330 | return &right_chord; | ||
| 331 | } | ||
| 332 | |||
| 333 | // row 7 | ||
| 334 | if (key->col <= 2) { | ||
| 335 | return &right_chord; | ||
| 336 | } else { | ||
| 337 | return &left_chord; | ||
| 338 | } | ||
| 339 | } | ||
| 340 | |||
| 341 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
| 342 | if (keycode < ALPHA) { | ||
| 343 | return true; | ||
| 344 | } | ||
| 345 | |||
| 346 | uint16_t *chord = get_hand(&record->event.key); | ||
| 347 | |||
| 348 | if (record->event.pressed) { | ||
| 349 | *chord |= K(keycode); | ||
| 350 | return false; | ||
| 351 | } | ||
| 352 | |||
| 353 | if (*chord != 0) { | ||
| 354 | process_keys(chord_to_keys(*chord)); | ||
| 355 | *chord = 0; | ||
| 356 | } | ||
| 357 | |||
| 358 | return false; | ||
| 359 | } | ||
| 360 | |||
| 361 | #ifdef KEYBOARD_planck_ez | ||
| 362 | |||
| 363 | #define LED_BRIGHTNESS 50 | ||
| 364 | |||
| 365 | layer_state_t default_layer_state_set_user(layer_state_t state) { | ||
| 366 | switch (state) { | ||
| 367 | case 1U << NORMAL: | ||
| 368 | planck_ez_left_led_off(); | ||
| 369 | planck_ez_right_led_off(); | ||
| 370 | break; | ||
| 371 | case 1U << QWERTY: | ||
| 372 | planck_ez_left_led_level(LED_BRIGHTNESS); | ||
| 373 | planck_ez_right_led_off(); | ||
| 374 | break; | ||
| 375 | case 1U << GAME: | ||
| 376 | planck_ez_left_led_off(); | ||
| 377 | planck_ez_right_led_level(LED_BRIGHTNESS); | ||
| 378 | break; | ||
| 379 | } | ||
| 380 | |||
| 381 | return state; | ||
| 382 | } | ||
| 383 | |||
| 384 | #endif /* KEYBOARD_planck_ez */ | ||
diff --git a/keyboards/planck/keymaps/buffet/readme.md b/keyboards/planck/keymaps/buffet/readme.md new file mode 100644 index 000000000..223595b92 --- /dev/null +++ b/keyboards/planck/keymaps/buffet/readme.md | |||
| @@ -0,0 +1,104 @@ | |||
| 1 | # buffet's planck layout | ||
| 2 | |||
| 3 | ## Layout | ||
| 4 | |||
| 5 | The Layout is based on keychords. | ||
| 6 | The general idea is that you're able to type everything with either hand, so that you can alternate between hands as you type. | ||
| 7 | |||
| 8 | The keys are in a 2x4 block in the top left and top right respectively (mirrored). | ||
| 9 | They have greek letter names (see `keymap.c` for more info). | ||
| 10 | |||
| 11 | Thumb added to any key means shift is pressed as well. | ||
| 12 | |||
| 13 | `-` means the finger presses nothing. | ||
| 14 | `^` means the finger presses the upper row. | ||
| 15 | `v` means the finger presses the lower row. | ||
| 16 | |||
| 17 | ``` | ||
| 18 | Space: thumb | ||
| 19 | Return: vvvv vvvv | ||
| 20 | Tab: vv^v v^vv | ||
| 21 | Bspace: v--v v--v | ||
| 22 | Esc: lower pinky and thumb | ||
| 23 | ``` | ||
| 24 | |||
| 25 | ### Letters | ||
| 26 | |||
| 27 | ``` | ||
| 28 | a: -^-- --^- | ||
| 29 | b: -v-^ ^-v- | ||
| 30 | c: -^^^ ^^^- | ||
| 31 | d: -vvv vvv- | ||
| 32 | e: ---^ ^--- | ||
| 33 | f: --^v v^-- | ||
| 34 | g: -^v- -v^- | ||
| 35 | h: -vv- -vv- | ||
| 36 | i: --^- -^-- | ||
| 37 | j: -^^v v^^- | ||
| 38 | k: -^vv vv^- | ||
| 39 | l: -^^- -^^- | ||
| 40 | m: -^-^ ^-^- | ||
| 41 | n: -v-- --v- | ||
| 42 | o: --v- -v-- | ||
| 43 | p: -v^- -^v- | ||
| 44 | q: -^v^ ^v^- | ||
| 45 | r: --^^ ^^-- | ||
| 46 | s: --vv vv-- | ||
| 47 | t: ---v v--- | ||
| 48 | u: -v-v v-v- | ||
| 49 | v: --v^ ^v-- | ||
| 50 | w: -v^v v^v- | ||
| 51 | x: -vv^ ^vv- | ||
| 52 | y: -^-v v-^- | ||
| 53 | z: -v^^ ^^v- | ||
| 54 | ``` | ||
| 55 | |||
| 56 | ### Numbers and Symbols | ||
| 57 | |||
| 58 | ``` | ||
| 59 | 0: vv-- --vv | ||
| 60 | 1: vv-v v-vv | ||
| 61 | 2: vvv- -vvv | ||
| 62 | 3: v^-- --^v | ||
| 63 | 4: v^-^ ^-^v | ||
| 64 | 5: v^^- -^^v | ||
| 65 | 6: v^-v v-^v | ||
| 66 | 7: v-v- -v-v | ||
| 67 | 8: v^^v v^^v | ||
| 68 | 9: v-^^ ^^-v | ||
| 69 | -: v^vv vv^v | ||
| 70 | =: vvv^ ^vvv | ||
| 71 | [: vv^- -^vv | ||
| 72 | ]: v-^v v^-v | ||
| 73 | \: v^v- -v^v | ||
| 74 | ;: v^^^ ^^^v | ||
| 75 | ': vv-^ ^-vv | ||
| 76 | ,: v-vv vv-v | ||
| 77 | .: vv^^ ^^vv | ||
| 78 | /: v-^- -^-v | ||
| 79 | `: v--^ ^--v | ||
| 80 | ``` | ||
| 81 | |||
| 82 | ### Modifiers | ||
| 83 | |||
| 84 | Modifiers all use the top pinky key, and a combinations of modifiers you want to activate for the next keypress (very similar to how OMS work). | ||
| 85 | For the modifiers the top row of keys is used. | ||
| 86 | |||
| 87 | ``` | ||
| 88 | Control: Ringfinger | ||
| 89 | Shift: Middlefinger | ||
| 90 | Alt: Indexfinger | ||
| 91 | Super: Thumb | ||
| 92 | ``` | ||
| 93 | |||
| 94 | `^--v v--^` can be used to lock the next modifier input. | ||
| 95 | |||
| 96 | ### Remaining | ||
| 97 | |||
| 98 | These combinations are unused. | ||
| 99 | |||
| 100 | ``` | ||
| 101 | v^v^ | ||
| 102 | v-v^ | ||
| 103 | v--- | ||
| 104 | ``` | ||
diff --git a/keyboards/planck/keymaps/buffet/rgb_matrix_user.inc b/keyboards/planck/keymaps/buffet/rgb_matrix_user.inc new file mode 100644 index 000000000..e217d1010 --- /dev/null +++ b/keyboards/planck/keymaps/buffet/rgb_matrix_user.inc | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | RGB_MATRIX_EFFECT(rainbow_stripe) | ||
| 2 | |||
| 3 | #ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS | ||
| 4 | |||
| 5 | static HSV rainbow_stripe_math(HSV hsv, uint8_t i, uint8_t time) { | ||
| 6 | if (i >= 14 && i <= 21) { | ||
| 7 | hsv.h = g_led_config.point[i].x - time; | ||
| 8 | } else { | ||
| 9 | hsv.v = 0; | ||
| 10 | } | ||
| 11 | return hsv; | ||
| 12 | } | ||
| 13 | |||
| 14 | bool rainbow_stripe(effect_params_t* params) { | ||
| 15 | return effect_runner_i(params, &rainbow_stripe_math); | ||
| 16 | } | ||
| 17 | |||
| 18 | #endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS | ||
diff --git a/keyboards/planck/keymaps/buffet/rules.mk b/keyboards/planck/keymaps/buffet/rules.mk new file mode 100644 index 000000000..7774d7665 --- /dev/null +++ b/keyboards/planck/keymaps/buffet/rules.mk | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | AUDIO_ENABLE = no | ||
| 2 | BOOTMAGIC_ENABLE = lite | ||
| 3 | COMMAND_ENABLE = no | ||
| 4 | MOUSEKEY_ENABLE = no | ||
| 5 | |||
| 6 | RGB_MATRIX_CUSTOM_USER = yes | ||
