From 3eefe31a54df07f5624f49632d986dff9725afe4 Mon Sep 17 00:00:00 2001 From: Niclas Date: Fri, 19 Jun 2020 01:32:27 +0000 Subject: [PATCH] Keymap: Add custom keymap for Planck (#9417) * Keymap: Add custom keymap for Planck * Fixup buffet's planck keymap --- keyboards/planck/keymaps/buffet/config.h | 46 +++ keyboards/planck/keymaps/buffet/keymap.c | 384 ++++++++++++++++++ keyboards/planck/keymaps/buffet/readme.md | 104 +++++ .../planck/keymaps/buffet/rgb_matrix_user.inc | 18 + keyboards/planck/keymaps/buffet/rules.mk | 6 + 5 files changed, 558 insertions(+) create mode 100644 keyboards/planck/keymaps/buffet/config.h create mode 100644 keyboards/planck/keymaps/buffet/keymap.c create mode 100644 keyboards/planck/keymaps/buffet/readme.md create mode 100644 keyboards/planck/keymaps/buffet/rgb_matrix_user.inc create mode 100644 keyboards/planck/keymaps/buffet/rules.mk diff --git a/keyboards/planck/keymaps/buffet/config.h b/keyboards/planck/keymaps/buffet/config.h new file mode 100644 index 00000000000..478b282b311 --- /dev/null +++ b/keyboards/planck/keymaps/buffet/config.h @@ -0,0 +1,46 @@ +#pragma once + +#define TAPPING_TERM 150 +#define PERMISSIVE_HOLD + +// Disable all RGB effects +#define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define DISABLE_RGB_MATRIX_ALPHAS_MODS +#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define DISABLE_RGB_MATRIX_BREATHING +#define DISABLE_RGB_MATRIX_BAND_SAT +#define DISABLE_RGB_MATRIX_BAND_VAL +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define DISABLE_RGB_MATRIX_CYCLE_ALL +#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN +#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define DISABLE_RGB_MATRIX_DUAL_BEACON +#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL +#define DISABLE_RGB_MATRIX_RAINBOW_BEACON +#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define DISABLE_RGB_MATRIX_RAINDROPS +#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define DISABLE_RGB_MATRIX_TYPING_HEATMAP +#define DISABLE_RGB_MATRIX_DIGITAL_RAIN +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define DISABLE_RGB_MATRIX_SPLASH +#define DISABLE_RGB_MATRIX_MULTISPLASH +#define DISABLE_RGB_MATRIX_SOLID_SPLASH +#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH + +// Most tactile encoders have detents every 4 stages +#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 00000000000..78a9f711c49 --- /dev/null +++ b/keyboards/planck/keymaps/buffet/keymap.c @@ -0,0 +1,384 @@ +/* Copyright 2015-2017 Jack Humbert + * 2020 Niclas Meyer + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +#define K(kc) (1ull<<((kc) - ALPHA)) + +#define KALPHA K(ALPHA) +#define KBETA K(BETA) +#define KGAMMA K(GAMMA) +#define KDELTA K(DELTA) +#define KEPSILON K(EPSILON) +#define KZETA K(ZETA) +#define KTHETA K(THETA) +#define KIOTA K(IOTA) +#define KKAPPA K(KAPPA) + +enum keys { + ALPHA = SAFE_RANGE, + BETA, + GAMMA, + DELTA, + EPSILON, + ZETA, + THETA, + IOTA, + KAPPA, + LOCK, + NONE, +}; + +enum layers { + NORMAL, + QWERTY, + GAME, + LOWER, + RAISE, + PHI, + FN, +}; + +#define XXXX KC_NO +#define ____ KC_TRNS + +#define CQWER LM(QWERTY, MOD_LCTL) +#define AQWER LM(QWERTY, MOD_LALT) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [NORMAL] = LAYOUT_planck_grid( + ALPHA, BETA, GAMMA, DELTA, ____, ____, ____, ____, DELTA, GAMMA, BETA, ALPHA, + EPSILON, ZETA, THETA, IOTA, ____, ____, ____, ____, IOTA, THETA, ZETA, EPSILON, + ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, + MO(PHI), CQWER, AQWER, MO(FN), KAPPA, ____, XXXX, KAPPA, MO(FN), ____, ____, MO(PHI) + ), + [QWERTY] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SFTENT, + MO(PHI), KC_LCTL, KC_LALT, KC_LGUI, MO(LOWER), KC_SPC, XXXX, MO(RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT + ), + [GAME] = LAYOUT_planck_grid( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_LCTL, KC_Z, KC_X, KC_C, KC_SPC, ____, XXXX, ____, KC_V, KC_B, ____, MO(PHI) + ), + [LOWER] = LAYOUT_planck_grid( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, + KC_DEL, ____, ____, ____, ____, ____, ____, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + ____, ____, ____, ____, ____, ____, ____, KC_PGUP, KC_PGDN, KC_HOME, KC_END, ____, + ____, ____, ____, ____, ____, ____, XXXX, ____, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [RAISE] = LAYOUT_planck_grid( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_DEL, ____, ____, ____, ____, ____, ____, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + ____, ____, ____, ____, ____, ____, ____, KC_PGUP, KC_PGDN, KC_HOME, KC_END, ____, + ____, ____, ____, ____, ____, ____, XXXX, ____, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [PHI] = LAYOUT_planck_grid( + RESET, KC_F1, KC_F2, KC_F3, KC_F4, ____, ____, ____, ____, ____, ____, KC_DEL, + ____, KC_F5, KC_F6, KC_F7, KC_F8, ____, ____, DF(QWERTY), DF(NORMAL), DF(GAME), ____, KC_F13, + ____, KC_F9, KC_F10, KC_F11, KC_F12, ____, ____, ____, ____, ____, ____, ____, + ____, RGB_TOG, RGB_MOD, ____, ____, ____, XXXX, ____, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [FN] = LAYOUT_planck_grid( + ____, ____, KC_UP, ____, ____, ____, ____, ____, ____, KC_UP, ____, ____, + KC_DEL, KC_LEFT, KC_DOWN, KC_RIGHT, ____, ____, ____, ____, KC_LEFT, KC_DOWN, KC_RIGHT, KC_DEL, + KC_HOME, KC_END, KC_PGUP, KC_PGDN, ____, ____, ____, ____, KC_PGDN, KC_PGUP, KC_HOME, KC_END, + ____, ____, ____, ____, ____, ____, XXXX, ____, ____, ____, ____, ____ + ), +}; + +static uint16_t left_chord = 0; +static uint16_t right_chord = 0; + +static bool locking = false; +static bool locked = false; +static uint16_t mods = 0; + +#define PROCESS_MOD(mod) \ + do { \ + if ((mods & MOD_##mod) && !(keys & MOD_##mod)) { \ + unregister_code16(KC_##mod); \ + } \ + if (!(mods & MOD_##mod) && (keys & MOD_##mod)) { \ + register_code16(KC_##mod); \ + } \ + } while (0) + +static void process_keys(uint16_t keys) { + if (keys == NONE) { + return; + } + + if (keys == LOCK) { + locking = !locking; + return; + } + + if ((keys & QK_ONE_SHOT_MOD) == QK_ONE_SHOT_MOD) { + PROCESS_MOD(LCTL); + PROCESS_MOD(LSFT); + PROCESS_MOD(LALT); + PROCESS_MOD(LGUI); + + mods = keys & ~QK_ONE_SHOT_MOD; + locked = false; + + if (locking) { + locking = false; + locked = true; + } + + return; + } + + // Normal key + tap_code16(keys); + locking = false; + + if (mods && !locked) { + if (mods & MOD_LCTL) { + unregister_code16(KC_LCTL); + } + + if (mods & MOD_LSFT) { + unregister_code16(KC_LSFT); + } + + if (mods & MOD_LALT) { + unregister_code16(KC_LALT); + } + + if (mods & MOD_LGUI) { + unregister_code16(KC_LGUI); + } + + mods = 0; + } +} + +static uint16_t chord_to_keys(uint16_t chord) { + switch (chord) { + // Unshifted Extra + case KKAPPA: return KC_SPC; + case KEPSILON | KZETA | KTHETA | KIOTA: return KC_ENT; + case KEPSILON | KZETA | KGAMMA | KIOTA: return KC_TAB; + case KEPSILON | KIOTA: return KC_BSPC; + case KKAPPA | KEPSILON: return KC_ESC; + + // Shifted Extra + case KKAPPA | KEPSILON | KZETA | KTHETA | KIOTA: return S(KC_ENT); + case KKAPPA | KEPSILON | KZETA | KGAMMA | KIOTA: return S(KC_TAB); + case KKAPPA | KEPSILON | KIOTA: return S(KC_BSPC); + + // Lowercase Letters + case KBETA: return KC_A; + case KZETA | KDELTA: return KC_B; + case KBETA | KGAMMA | KDELTA: return KC_C; + case KZETA | KTHETA | KIOTA: return KC_D; + case KDELTA: return KC_E; + case KGAMMA | KIOTA: return KC_F; + case KBETA | KTHETA: return KC_G; + case KZETA | KTHETA: return KC_H; + case KGAMMA: return KC_I; + case KBETA | KGAMMA | KIOTA: return KC_J; + case KBETA | KTHETA | KIOTA: return KC_K; + case KBETA | KGAMMA: return KC_L; + case KBETA | KDELTA: return KC_M; + case KZETA: return KC_N; + case KTHETA: return KC_O; + case KZETA | KGAMMA: return KC_P; + case KBETA | KTHETA | KDELTA: return KC_Q; + case KGAMMA | KDELTA: return KC_R; + case KTHETA | KIOTA: return KC_S; + case KIOTA: return KC_T; + case KZETA | KIOTA: return KC_U; + case KTHETA | KDELTA: return KC_V; + case KZETA | KGAMMA | KIOTA: return KC_W; + case KZETA | KTHETA | KDELTA: return KC_X; + case KBETA | KIOTA: return KC_Y; + case KZETA | KGAMMA | KDELTA: return KC_Z; + + // Uppercase Letters + case KKAPPA | KBETA: return S(KC_A); + case KKAPPA | KZETA | KDELTA: return S(KC_B); + case KKAPPA | KBETA | KGAMMA | KDELTA: return S(KC_C); + case KKAPPA | KZETA | KTHETA | KIOTA: return S(KC_D); + case KKAPPA | KDELTA: return S(KC_E); + case KKAPPA | KGAMMA | KIOTA: return S(KC_F); + case KKAPPA | KBETA | KTHETA: return S(KC_G); + case KKAPPA | KZETA | KTHETA: return S(KC_H); + case KKAPPA | KGAMMA: return S(KC_I); + case KKAPPA | KBETA | KGAMMA | KIOTA: return S(KC_J); + case KKAPPA | KBETA | KTHETA | KIOTA: return S(KC_K); + case KKAPPA | KBETA | KGAMMA: return S(KC_L); + case KKAPPA | KBETA | KDELTA: return S(KC_M); + case KKAPPA | KZETA: return S(KC_N); + case KKAPPA | KTHETA: return S(KC_O); + case KKAPPA | KZETA | KGAMMA: return S(KC_P); + case KKAPPA | KBETA | KTHETA | KDELTA: return S(KC_Q); + case KKAPPA | KGAMMA | KDELTA: return S(KC_R); + case KKAPPA | KTHETA | KIOTA: return S(KC_S); + case KKAPPA | KIOTA: return S(KC_T); + case KKAPPA | KZETA | KIOTA: return S(KC_U); + case KKAPPA | KTHETA | KDELTA: return S(KC_V); + case KKAPPA | KZETA | KGAMMA | KIOTA: return S(KC_W); + case KKAPPA | KZETA | KTHETA | KDELTA: return S(KC_X); + case KKAPPA | KBETA | KIOTA: return S(KC_Y); + case KKAPPA | KZETA | KGAMMA | KDELTA: return S(KC_Z); + + // Unshifted Numbers + case KEPSILON | KZETA: return KC_0; + case KEPSILON | KZETA | KIOTA: return KC_1; + case KEPSILON | KZETA | KTHETA: return KC_2; + case KEPSILON | KBETA: return KC_3; + case KEPSILON | KBETA | KDELTA: return KC_4; + case KEPSILON | KBETA | KGAMMA: return KC_5; + case KEPSILON | KBETA | KIOTA: return KC_6; + case KEPSILON | KTHETA: return KC_7; + case KEPSILON | KBETA | KGAMMA | KIOTA: return KC_8; + case KEPSILON | KGAMMA | KDELTA: return KC_9; + + // Shifted Numbers + case KKAPPA | KEPSILON | KZETA | KIOTA: return KC_EXLM; + case KKAPPA | KEPSILON | KZETA | KTHETA: return KC_AT; + case KKAPPA | KEPSILON | KBETA: return KC_HASH; + case KKAPPA | KEPSILON | KBETA | KDELTA: return KC_DLR; + case KKAPPA | KEPSILON | KBETA | KGAMMA: return KC_PERC; + case KKAPPA | KEPSILON | KBETA | KIOTA: return KC_CIRC; + case KKAPPA | KEPSILON | KTHETA: return KC_AMPR; + case KKAPPA | KEPSILON | KBETA | KGAMMA | KIOTA: return KC_ASTR; + case KKAPPA | KEPSILON | KGAMMA | KDELTA: return KC_LPRN; + case KKAPPA | KEPSILON | KZETA: return KC_RPRN; + + // Unshifted Symbols + case KEPSILON | KBETA | KTHETA | KIOTA: return KC_MINS; + case KEPSILON | KZETA | KTHETA | KDELTA: return KC_EQL; + case KEPSILON | KZETA | KGAMMA: return KC_LBRC; + case KEPSILON | KGAMMA | KIOTA: return KC_RBRC; + case KEPSILON | KBETA | KTHETA: return KC_BSLS; + case KEPSILON | KBETA | KGAMMA | KDELTA: return KC_SCLN; + case KEPSILON | KZETA | KDELTA: return KC_QUOT; + case KEPSILON | KTHETA | KIOTA: return KC_COMM; + case KEPSILON | KZETA | KGAMMA | KDELTA: return KC_DOT; + case KEPSILON | KGAMMA: return KC_SLSH; + case KEPSILON | KDELTA: return KC_GRV; + + // Shifted Symbols + case KKAPPA | KEPSILON | KBETA | KTHETA | KIOTA: return KC_UNDS; + case KKAPPA | KEPSILON | KZETA | KTHETA | KDELTA: return KC_PLUS; + case KKAPPA | KEPSILON | KZETA | KGAMMA: return KC_LCBR; + case KKAPPA | KEPSILON | KGAMMA | KIOTA: return KC_RCBR; + case KKAPPA | KEPSILON | KBETA | KTHETA: return KC_PIPE; + case KKAPPA | KEPSILON | KBETA | KGAMMA | KDELTA: return KC_COLN; + case KKAPPA | KEPSILON | KZETA | KDELTA: return KC_DQT; + case KKAPPA | KEPSILON | KTHETA | KIOTA: return KC_LT; + case KKAPPA | KEPSILON | KZETA | KGAMMA | KDELTA: return KC_GT; + case KKAPPA | KEPSILON | KGAMMA: return KC_QUES; + case KKAPPA | KEPSILON | KDELTA: return KC_TILD; + + // Modifiers + case KALPHA | KIOTA: return LOCK; + + case KALPHA: return QK_ONE_SHOT_MOD; // Release all + + case KALPHA | KBETA: return OSM(MOD_LCTL); + case KALPHA | KGAMMA: return OSM(MOD_LSFT); + case KALPHA | KDELTA: return OSM(MOD_LALT); + case KALPHA | KKAPPA: return OSM(MOD_LGUI); + + case KALPHA | KBETA | KGAMMA: return OSM(MOD_LCTL | MOD_LSFT); + case KALPHA | KBETA | KDELTA: return OSM(MOD_LCTL | MOD_LALT); + case KALPHA | KBETA | KKAPPA: return OSM(MOD_LCTL | MOD_LGUI); + case KALPHA | KGAMMA | KDELTA: return OSM(MOD_LSFT | MOD_LALT); + case KALPHA | KGAMMA | KKAPPA: return OSM(MOD_LSFT | MOD_LGUI); + case KALPHA | KDELTA | KKAPPA: return OSM(MOD_LALT | MOD_LGUI); + + case KALPHA | KBETA | KGAMMA | KDELTA: return OSM(MOD_LCTL | MOD_LSFT | MOD_LALT); + case KALPHA | KBETA | KGAMMA | KKAPPA: return OSM(MOD_LCTL | MOD_LSFT | MOD_LGUI); + case KALPHA | KBETA | KDELTA | KKAPPA: return OSM(MOD_LCTL | MOD_LALT | MOD_LGUI); + case KALPHA | KGAMMA | KDELTA | KKAPPA: return OSM(MOD_LSFT | MOD_LALT | MOD_LGUI); + + case KALPHA | KBETA | KGAMMA | KDELTA | KKAPPA: return OSM(MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI); + } + + return NONE; +} + +static uint16_t *get_hand(keypos_t *key) { + if (key->row <= 3) { + return &left_chord; + } + + if (key->row <= 6) { + return &right_chord; + } + + // row 7 + if (key->col <= 2) { + return &right_chord; + } else { + return &left_chord; + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (keycode < ALPHA) { + return true; + } + + uint16_t *chord = get_hand(&record->event.key); + + if (record->event.pressed) { + *chord |= K(keycode); + return false; + } + + if (*chord != 0) { + process_keys(chord_to_keys(*chord)); + *chord = 0; + } + + return false; +} + +#ifdef KEYBOARD_planck_ez + +#define LED_BRIGHTNESS 50 + +layer_state_t default_layer_state_set_user(layer_state_t state) { + switch (state) { + case 1U << NORMAL: + planck_ez_left_led_off(); + planck_ez_right_led_off(); + break; + case 1U << QWERTY: + planck_ez_left_led_level(LED_BRIGHTNESS); + planck_ez_right_led_off(); + break; + case 1U << GAME: + planck_ez_left_led_off(); + planck_ez_right_led_level(LED_BRIGHTNESS); + break; + } + + return state; +} + +#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 00000000000..223595b92c0 --- /dev/null +++ b/keyboards/planck/keymaps/buffet/readme.md @@ -0,0 +1,104 @@ +# buffet's planck layout + +## Layout + +The Layout is based on keychords. +The general idea is that you're able to type everything with either hand, so that you can alternate between hands as you type. + +The keys are in a 2x4 block in the top left and top right respectively (mirrored). +They have greek letter names (see `keymap.c` for more info). + +Thumb added to any key means shift is pressed as well. + +`-` means the finger presses nothing. +`^` means the finger presses the upper row. +`v` means the finger presses the lower row. + +``` +Space: thumb +Return: vvvv vvvv +Tab: vv^v v^vv +Bspace: v--v v--v +Esc: lower pinky and thumb +``` + +### Letters + +``` +a: -^-- --^- +b: -v-^ ^-v- +c: -^^^ ^^^- +d: -vvv vvv- +e: ---^ ^--- +f: --^v v^-- +g: -^v- -v^- +h: -vv- -vv- +i: --^- -^-- +j: -^^v v^^- +k: -^vv vv^- +l: -^^- -^^- +m: -^-^ ^-^- +n: -v-- --v- +o: --v- -v-- +p: -v^- -^v- +q: -^v^ ^v^- +r: --^^ ^^-- +s: --vv vv-- +t: ---v v--- +u: -v-v v-v- +v: --v^ ^v-- +w: -v^v v^v- +x: -vv^ ^vv- +y: -^-v v-^- +z: -v^^ ^^v- +``` + +### Numbers and Symbols + +``` +0: vv-- --vv +1: vv-v v-vv +2: vvv- -vvv +3: v^-- --^v +4: v^-^ ^-^v +5: v^^- -^^v +6: v^-v v-^v +7: v-v- -v-v +8: v^^v v^^v +9: v-^^ ^^-v +-: v^vv vv^v +=: vvv^ ^vvv +[: vv^- -^vv +]: v-^v v^-v +\: v^v- -v^v +;: v^^^ ^^^v +': vv-^ ^-vv +,: v-vv vv-v +.: vv^^ ^^vv +/: v-^- -^-v +`: v--^ ^--v +``` + +### Modifiers + +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). +For the modifiers the top row of keys is used. + +``` +Control: Ringfinger +Shift: Middlefinger +Alt: Indexfinger +Super: Thumb +``` + +`^--v v--^` can be used to lock the next modifier input. + +### Remaining + +These combinations are unused. + +``` +v^v^ +v-v^ +v--- +``` 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 00000000000..e217d1010a3 --- /dev/null +++ b/keyboards/planck/keymaps/buffet/rgb_matrix_user.inc @@ -0,0 +1,18 @@ +RGB_MATRIX_EFFECT(rainbow_stripe) + +#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +static HSV rainbow_stripe_math(HSV hsv, uint8_t i, uint8_t time) { + if (i >= 14 && i <= 21) { + hsv.h = g_led_config.point[i].x - time; + } else { + hsv.v = 0; + } + return hsv; +} + +bool rainbow_stripe(effect_params_t* params) { + return effect_runner_i(params, &rainbow_stripe_math); +} + +#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 00000000000..7774d766577 --- /dev/null +++ b/keyboards/planck/keymaps/buffet/rules.mk @@ -0,0 +1,6 @@ +AUDIO_ENABLE = no +BOOTMAGIC_ENABLE = lite +COMMAND_ENABLE = no +MOUSEKEY_ENABLE = no + +RGB_MATRIX_CUSTOM_USER = yes