keyboard

My QMK keyboard layouts
git clone git://gtms.dev/keyboard
Log | Files | Refs | README | LICENSE

commit 1f07642db0c7d652e56ec01e3b1c7060140c209a
parent 612215413d2d411bfadfb599988cf410371de01f
Author: Tomas Nemec <owl@gtms.dev>
Date:   Wed, 13 Mar 2024 13:39:35 +0100

feat: add keyboards

Diffstat:
Akeyboards/ergodox_ez/glow/keymaps/tms/config.h | 1+
Akeyboards/ergodox_ez/glow/keymaps/tms/default.png.md | 1+
Akeyboards/ergodox_ez/glow/keymaps/tms/default_highres.png.md | 1+
Akeyboards/ergodox_ez/glow/keymaps/tms/keymap.c | 420+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Akeyboards/ergodox_ez/glow/keymaps/tms/readme.md | 16++++++++++++++++
Akeyboards/planck/ez/glow/keymaps/tms/config.h | 49+++++++++++++++++++++++++++++++++++++++++++++++++
Akeyboards/planck/ez/glow/keymaps/tms/keymap.c | 345+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Akeyboards/planck/ez/glow/keymaps/tms/readme.md | 2++
Akeyboards/planck/ez/glow/keymaps/tms/rules.mk | 3+++
Mqmk.json | 5++++-
10 files changed, 842 insertions(+), 1 deletion(-)

diff --git a/keyboards/ergodox_ez/glow/keymaps/tms/config.h b/keyboards/ergodox_ez/glow/keymaps/tms/config.h @@ -0,0 +1 @@ +// #define HOLD_ON_OTHER_KEY_PRESS diff --git a/keyboards/ergodox_ez/glow/keymaps/tms/default.png.md b/keyboards/ergodox_ez/glow/keymaps/tms/default.png.md @@ -0,0 +1 @@ +https://i.imgur.com/fKX0Zbs.png diff --git a/keyboards/ergodox_ez/glow/keymaps/tms/default_highres.png.md b/keyboards/ergodox_ez/glow/keymaps/tms/default_highres.png.md @@ -0,0 +1 @@ +https://i.imgur.com/giAc3M9.jpg diff --git a/keyboards/ergodox_ez/glow/keymaps/tms/keymap.c b/keyboards/ergodox_ez/glow/keymaps/tms/keymap.c @@ -0,0 +1,420 @@ +#include QMK_KEYBOARD_H +#include "version.h" + +enum layers { + QWRT, // qwerty layer + QSMB, // qwerty sembols + DVRK, // Dvorak + DSMB, // Dvorak symbols + MDIA, // media keys + MOVE, // move + NUME, // numberic + FKEY, // F-keys + SERV, // service +}; + +enum custom_keycodes { + DVORAK = SAFE_RANGE, + QWERTY, + VRSN, + S_TRUE, + S_FALSE, +}; + +// [Key Lock](feature_key_lock.md) +// |`QK_LOCK`|Hold down the next key pressed, until the key is pressed again| +// +// [Layer Switching](feature_layers.md#switching-and-toggling-layers) +// |`DF(layer)` |Set the base (default) layer | +// |`MO(layer)` |Momentarily turn on `layer` when pressed (requires `KC_TRNS` on destination layer)| +// |`OSL(layer)` |Momentarily activates `layer` until a key is pressed. See [One Shot Keys](one_shot_keys.md) for details. | +// |`LM(layer, mod)`|Momentarily turn on `layer` (like MO) with `mod` active as well. Where `mod` is a mods_bit. Mods can be viewed [here](mod_tap.md). Example Implementation: `LM(LAYER_1, MOD_LALT)`| +// |`LT(layer, kc)` |Turn on `layer` when held, `kc` when tapped | +// |`TG(layer)` |Toggle `layer` on or off | +// |`TO(layer)` |Turns on `layer` and turns off all other layers, except the default layer | +// |`TT(layer)` |Normally acts like MO unless it's tapped multiple times, which toggles `layer` on | +// +// [One Shot Keys](one_shot_keys.md) +// |`OSM(mod)` | |Hold `mod` for one keypress | +// |`OSL(layer)` | |Switch to `layer` for one keypress| +// |`QK_ONE_SHOT_TOGGLE`|`OS_TOGG`|Toggles One Shot keys status | +// |`QK_ONE_SHOT_ON` |`OS_ON` |Turns One Shot keys on | +// |`QK_ONE_SHOT_OFF` |`OS_OFF` |Turns One Shot keys off | + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// ┌──────────┬───────────┬────┬──────────┬──────────┬─────┬──────────┐ ┌──────────┬─────┬──────────┬────┬────┬───────────┬──────────┐ +// │ caps │ 1 │ 2 │ 3 │ 4 │ 5 │ QWERTY │ │ TG(DVRK) │ 6 │ 7 │ 8 │ 9 │ 0 │ XX │ +// ├──────────┼───────────┼────┼──────────┼──────────┼─────┼──────────┤ ├──────────┼─────┼──────────┼────┼────┼───────────┼──────────┤ +// │ tab │ ; │ , │ . │ p │ y │ MO(NUME) │ │ del │ f │ g │ c │ r │ l │ XX │ +// ├──────────┼───────────┼────┼──────────┼──────────┼─────┼──────────┘ └──────────┼─────┼──────────┼────┼────┼───────────┼──────────┤ +// │ esc │ a │ o │ e │ u │ i │ │ d │ h │ t │ n │ s │ - │ +// ├──────────┼───────────┼────┼──────────┼──────────┼─────┼──────────┐ ┌──────────┼─────┼──────────┼────┼────┼───────────┼──────────┤ +// │ lsft │ LCTL_T(') │ q │ j │ k │ x │ MOD_HYPR │ │ MOD_MEH │ b │ m │ w │ v │ RCTL_T(z) │ rsft │ +// ├──────────┼───────────┼────┼──────────┼──────────┼─────┴──────────┘ └──────────┴─────┼──────────┼────┼────┼───────────┼──────────┤ +// │ MO(SERV) │ XX │ XX │ MO(MOVE) │ lgui │ │ lgui │ XX │ XX │ XX │ MO(SERV) │ +// └──────────┴───────────┴────┴──────────┴──────────┼─────┬──────────┐ ┌──────────┬─────┼──────────┴────┴────┴───────────┴──────────┘ +// │ XX │ XX │ │ XX │ XX │ +// └─────┼──────────┤ ├──────────┼─────┘ +// │ XX │ │ XX │ +// ┌──────────┬─────┼──────────┤ ├──────────┼─────┬──────────┐ +// │ MO(DSMB) │ spc │ MO(MDIA) │ │ XX │ ent │ MO(DSMB) │ +// └──────────┴─────┴──────────┘ └──────────┴─────┴──────────┘ +[DVRK] = LAYOUT_ergodox_pretty( + KC_CAPS , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , QWERTY , TG(DVRK) , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , XXXXXXX , + KC_TAB , KC_SCLN , KC_COMM , KC_DOT , KC_P , KC_Y , MO(NUME) , KC_DEL , KC_F , KC_G , KC_C , KC_R , KC_L , XXXXXXX , + KC_ESC , KC_A , KC_O , KC_E , KC_U , KC_I , KC_D , KC_H , KC_T , KC_N , KC_S , KC_MINS , + KC_LSFT , LCTL_T(KC_QUOT) , KC_Q , KC_J , KC_K , KC_X , MOD_HYPR , MOD_MEH , KC_B , KC_M , KC_W , KC_V , RCTL_T(KC_Z) , KC_RSFT , + MO(SERV) , XXXXXXX , XXXXXXX , MO(MOVE) , KC_LGUI , KC_LGUI , XXXXXXX , XXXXXXX , XXXXXXX , MO(SERV), + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , + XXXXXXX , XXXXXXX , + MO(DSMB) , KC_SPC , MO(MDIA) , XXXXXXX , KC_ENT , MO(DSMB) +), + +// ┌─────┬─────────┬──────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬────────┬─────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// ├─────┼─────────┼──────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼────────┼─────┤ +// │ │ S_FALSE │ @ │ { │ [ │ # │ │ │ │ ^ │ ] │ } │ ` │ S_TRUE │ │ +// ├─────┼─────────┼──────┼─────┼─────┼─────┼─────┘ └─────┼─────┼─────┼─────┼─────┼────────┼─────┤ +// │ ~ │ | │ bspc │ ( │ 0 │ $ │ │ * │ 1 │ ) │ = │ + │ │ +// ├─────┼─────────┼──────┼─────┼─────┼─────┼─────┐ ┌─────┼─────┼─────┼─────┼─────┼────────┼─────┤ +// │ │ 6 │ 7 │ 8 │ 9 │ & │ │ │ │ % │ 2 │ 3 │ 4 │ 5 │ │ +// ├─────┼─────────┼──────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼────────┼─────┤ +// │ │ │ │ │ │ │ │ │ │ │ │ +// └─────┴─────────┴──────┴─────┴─────┼─────┬─────┐ ┌─────┬─────┼─────┴─────┴─────┴────────┴─────┘ +// │ │ │ │ │ │ +// └─────┼─────┤ ├─────┼─────┘ +// │ │ │ │ +// ┌─────┬─────┼─────┤ ├─────┼─────┬─────┐ +// │ ! │ \ │ │ │ │ / │ ? │ +// └─────┴─────┴─────┘ └─────┴─────┴─────┘ +[DSMB] = LAYOUT_ergodox_pretty( + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, + _______ , S_FALSE , KC_AT , KC_LCBR , KC_LBRC , KC_HASH , _______ , _______ , KC_CIRC , KC_RBRC , KC_RCBR , KC_GRV , S_TRUE , _______, + KC_TILD , KC_PIPE , KC_BSPC , KC_LPRN , KC_0 , KC_DLR , KC_ASTR , KC_1 , KC_RPRN , KC_EQL , KC_PLUS , _______, + _______ , KC_6 , KC_7 , KC_8 , KC_9 , KC_AMPR , _______ , _______ , KC_PERC , KC_2 , KC_3 , KC_4 , KC_5 , _______, + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, + _______ , _______ , _______ , _______ , + _______ , _______ , + KC_EXLM , KC_BSLS , _______ , _______ , KC_SLSH , KC_QUES +), + +// ┌───────────────┬─────────────┬─────────────┬──────────┬──────────┬─────┬────────┐ ┌──────────┬──────┬──────────┬────┬────┬────┬───────────────┐ +// │ caps │ 1 │ 2 │ 3 │ 4 │ 5 │ DVORAK │ │ TG(DVRK) │ 6 │ 7 │ 8 │ 9 │ 0 │ XX │ +// ├───────────────┼─────────────┼─────────────┼──────────┼──────────┼─────┼────────┤ ├──────────┼──────┼──────────┼────┼────┼────┼───────────────┤ +// │ tab │ q │ w │ e │ r │ t │ lalt │ │ ralt │ y │ u │ i │ o │ p │ XX │ +// ├───────────────┼─────────────┼─────────────┼──────────┼──────────┼─────┼────────┘ └──────────┼──────┼──────────┼────┼────┼────┼───────────────┤ +// │ esc │ a │ s │ d │ f │ g │ │ h │ j │ k │ l │ ; │ ' │ +// ├───────────────┼─────────────┼─────────────┼──────────┼──────────┼─────┼────────┐ ┌──────────┼──────┼──────────┼────┼────┼────┼───────────────┤ +// │ OSM(MOD_LSFT) │ LT(MOVE, z) │ LT(NUME, x) │ c │ v │ b │ bspc │ │ del │ n │ m │ , │ . │ / │ OSM(MOD_RSFT) │ +// ├───────────────┼─────────────┼─────────────┼──────────┼──────────┼─────┴────────┘ └──────────┴──────┼──────────┼────┼────┼────┼───────────────┤ +// │ MO(SERV) │ XX │ XX │ MO(MDIA) │ lgui │ │ lgui │ XX │ XX │ XX │ MO(SERV) │ +// └───────────────┴─────────────┴─────────────┴──────────┴──────────┼─────┬────────┐ ┌──────────┬──────┼──────────┴────┴────┴────┴───────────────┘ +// │ XX │ XX │ │ XX │ XX │ +// └─────┼────────┤ ├──────────┼──────┘ +// │ XX │ │ XX │ +// ┌──────────┬─────┼────────┤ ├──────────┼──────┬──────────┐ +// │ MO(QSMB) │ spc │ [ │ │ ] │ lctl │ MO(QSMB) │ +// └──────────┴─────┴────────┘ └──────────┴──────┴──────────┘ +[QWRT] = LAYOUT_ergodox_pretty( + KC_CAPS , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , DVORAK , TG(DVRK) , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , XXXXXXX , + KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_LALT , KC_RALT , KC_Y , KC_U , KC_I , KC_O , KC_P , XXXXXXX , + KC_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_QUOT , + OSM(MOD_LSFT) , LT(MOVE, KC_Z) , LT(NUME, KC_X) , KC_C , KC_V , KC_B , KC_BSPC , KC_DEL , KC_N , KC_M , KC_COMM , KC_DOT , KC_SLSH , OSM(MOD_RSFT), + MO(SERV) , XXXXXXX , XXXXXXX , MO(MDIA) , KC_LGUI , KC_LGUI , XXXXXXX , XXXXXXX , XXXXXXX , MO(SERV) , + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , + XXXXXXX , XXXXXXX , + MO(QSMB) , KC_SPC , KC_LBRC , KC_RBRC , KC_LCTL , MO(QSMB) +), + +// ┌─────┬─────┬──────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// ├─────┼─────┼──────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +// │ │ ! │ @ │ # │ $ │ % │ │ │ │ ^ │ & │ * │ │ │ │ +// ├─────┼─────┼──────┼─────┼─────┼─────┼─────┘ └─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +// │ ~ │ _ │ bspc │ ( │ { │ [ │ │ ent │ - │ + │ = │ : │ ` │ +// ├─────┼─────┼──────┼─────┼─────┼─────┼─────┐ ┌─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +// │ │ \ │ | │ ) │ } │ ] │ │ │ │ │ tab │ < │ > │ ? │ │ +// ├─────┼─────┼──────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ │ │ │ │ +// └─────┴─────┴──────┴─────┴─────┼─────┬─────┐ ┌─────┬─────┼─────┴─────┴─────┴─────┴─────┘ +// │ │ │ │ │ │ +// └─────┼─────┤ ├─────┼─────┘ +// │ │ │ │ +// ┌─────┬─────┼─────┤ ├─────┼─────┬─────┐ +// │ │ │ │ │ │ │ │ +// └─────┴─────┴─────┘ └─────┴─────┴─────┘ +[QSMB] = LAYOUT_ergodox_pretty( + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, + _______ , KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , _______ , _______ , KC_CIRC , KC_AMPR , KC_ASTR , _______ , _______ , _______, + KC_TILD , KC_UNDS , KC_BSPC , KC_LPRN , KC_LCBR , KC_LBRC , KC_ENT , KC_MINS , KC_PLUS , KC_EQL , KC_COLN , KC_GRV , + _______ , KC_BSLS , KC_PIPE , KC_RPRN , KC_RCBR , KC_RBRC , _______ , _______ , _______ , KC_TAB , KC_LT , KC_GT , KC_QUES , _______, + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, + _______ , _______ , _______ , _______ , + _______ , _______ , + _______ , _______ , _______ , _______ , _______ , _______ +), + +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬──────┬──────┬──────┬──────┬─────┬─────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼──────┼──────┼──────┼──────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ │ │ │ mply │ mstp │ │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼─────┘ └─────┼──────┼──────┼──────┼──────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ mprv │ vold │ volu │ mnxt │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼─────┐ ┌─────┼──────┼──────┼──────┼──────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ │ │ │ mute │ │ │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴──────┼──────┼──────┼──────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ │ │ │ │ +// └─────┴─────┴─────┴─────┴─────┼─────┬─────┐ ┌─────┬──────┼──────┴──────┴──────┴─────┴─────┘ +// │ │ │ │ │ │ +// └─────┼─────┤ ├─────┼──────┘ +// │ │ │ │ +// ┌─────┬─────┼─────┤ ├─────┼──────┬──────┐ +// │ │ │ │ │ │ │ │ +// └─────┴─────┴─────┘ └─────┴──────┴──────┘ +[MDIA] = LAYOUT_ergodox_pretty( + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_MPLY , KC_MSTP , _______ , _______ , _______, + _______ , _______ , _______ , _______ , _______ , _______ , KC_MPRV , KC_VOLD , KC_VOLU , KC_MNXT , _______ , _______, + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_MUTE , _______ , _______ , _______ , _______, + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, + _______ , _______ , _______ , _______ , + _______ , _______ , + _______ , _______ , _______ , _______ , _______ , _______ +), + +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬──────┬──────┬──────┬──────┬─────┬─────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼──────┼──────┼──────┼──────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ │ │ home │ pgdn │ pgup │ end │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼─────┘ └─────┼──────┼──────┼──────┼──────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ left │ down │ up │ rght │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼─────┐ ┌─────┼──────┼──────┼──────┼──────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ │ │ │ wh_d │ wh_u │ │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴──────┼──────┼──────┼──────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ │ │ │ │ +// └─────┴─────┴─────┴─────┴─────┼─────┬─────┐ ┌─────┬──────┼──────┴──────┴──────┴─────┴─────┘ +// │ │ │ │ │ │ +// └─────┼─────┤ ├─────┼──────┘ +// │ │ │ │ +// ┌─────┬─────┼─────┤ ├─────┼──────┬──────┐ +// │ │ │ │ │ │ │ │ +// └─────┴─────┴─────┘ └─────┴──────┴──────┘ +[MOVE] = LAYOUT_ergodox_pretty( + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_HOME , KC_PGDN , KC_PGUP , KC_END , _______ , _______, + _______ , _______ , _______ , _______ , _______ , _______ , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT , _______ , _______, + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_WH_D , KC_WH_U , _______ , _______ , _______, + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, + _______ , _______ , _______ , _______ , + _______ , _______ , + _______ , _______ , _______ , _______ , _______ , _______ +), + +// ┌─────┬─────┬─────┬──────────┬──────────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// ├─────┼─────┼─────┼──────────┼──────────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ │ │ ^ │ 7 │ 8 │ 9 │ ~ │ │ +// ├─────┼─────┼─────┼──────────┼──────────┼─────┼─────┘ └─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ + │ 4 │ 5 │ 6 │ - │ │ +// ├─────┼─────┼─────┼──────────┼──────────┼─────┼─────┐ ┌─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +// │ │ │ │ MO(FKEY) │ . │ │ │ │ │ * │ 1 │ 2 │ 3 │ / │ │ +// ├─────┼─────┼─────┼──────────┼──────────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ │ │ │ │ +// └─────┴─────┴─────┴──────────┴──────────┼─────┬─────┐ ┌─────┬─────┼─────┴─────┴─────┴─────┴─────┘ +// │ │ │ │ │ │ +// └─────┼─────┤ ├─────┼─────┘ +// │ │ │ │ +// ┌──────────┬─────┼─────┤ ├─────┼─────┬─────┐ +// │ MO(FKEY) │ . │ │ │ │ = │ 0 │ +// └──────────┴─────┴─────┘ └─────┴─────┴─────┘ +[NUME] = LAYOUT_ergodox_pretty( + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_CIRC , KC_7 , KC_8 , KC_9 , KC_TILD , _______, + _______ , _______ , _______ , _______ , _______ , _______ , KC_PLUS , KC_4 , KC_5 , KC_6 , KC_MINS , _______, + _______ , _______ , _______ , MO(FKEY) , KC_DOT , _______ , _______ , _______ , KC_ASTR , KC_1 , KC_2 , KC_3 , KC_SLSH , _______, + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, + _______ , _______ , _______ , _______ , + _______ , _______ , + MO(FKEY) , KC_DOT , _______ , _______ , KC_EQL , KC_0 +), + +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ │ │ f10 │ f7 │ f8 │ f9 │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼─────┘ └─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ f11 │ f4 │ f5 │ f6 │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼─────┐ ┌─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ │ │ f12 │ f1 │ f2 │ f3 │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┴─────┘ └─────┴─────┼─────┼─────┼─────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ │ │ │ │ +// └─────┴─────┴─────┴─────┴─────┼─────┬─────┐ ┌─────┬─────┼─────┴─────┴─────┴─────┴─────┘ +// │ │ │ │ │ │ +// └─────┼─────┤ ├─────┼─────┘ +// │ │ │ │ +// ┌─────┬─────┼─────┤ ├─────┼─────┬─────┐ +// │ │ │ │ │ │ │ │ +// └─────┴─────┴─────┘ └─────┴─────┴─────┘ +[FKEY] = LAYOUT_ergodox_pretty( + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_F10 , KC_F7 , KC_F8 , KC_F9 , _______ , _______, + _______ , _______ , _______ , _______ , _______ , _______ , KC_F11 , KC_F4 , KC_F5 , KC_F6 , _______ , _______, + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_F12 , KC_F1 , KC_F2 , KC_F3 , _______ , _______, + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, + _______ , _______ , _______ , _______ , + _______ , _______ , + _______ , _______ , _______ , _______ , _______ , _______ +), + +// ┌─────┬─────┬─────┬─────┬──────┬─────┬─────┐ ┌─────┬─────────┬─────────┬─────────┬─────────┬─────┬─────────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ QK_BOOT │ +// ├─────┼─────┼─────┼─────┼──────┼─────┼─────┤ ├─────┼─────────┼─────────┼─────────┼─────────┼─────┼─────────┤ +// │ │ │ │ │ │ │ │ │ │ RGB_TOG │ RGB_M_P │ RGB_MOD │ │ │ EE_CLR │ +// ├─────┼─────┼─────┼─────┼──────┼─────┼─────┘ └─────┼─────────┼─────────┼─────────┼─────────┼─────┼─────────┤ +// │ │ │ │ │ │ │ │ RGB_HUI │ RGB_VAI │ RGB_SAI │ RGB_SPI │ │ │ +// ├─────┼─────┼─────┼─────┼──────┼─────┼─────┐ ┌─────┼─────────┼─────────┼─────────┼─────────┼─────┼─────────┤ +// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ +// ├─────┼─────┼─────┼─────┼──────┼─────┴─────┘ └─────┴─────────┼─────────┼─────────┼─────────┼─────┼─────────┤ +// │ │ │ │ │ │ │ │ │ │ │ │ +// └─────┴─────┴─────┴─────┴──────┼─────┬─────┐ ┌─────┬─────────┼─────────┴─────────┴─────────┴─────┴─────────┘ +// │ │ │ │ │ │ +// └─────┼─────┤ ├─────┼─────────┘ +// │ │ │ │ +// ┌──────┬─────┼─────┤ ├─────┼─────────┬─────────┐ +// │ lsft │ │ │ │ │ │ │ +// └──────┴─────┴─────┘ └─────┴─────────┴─────────┘ +[SERV] = LAYOUT_ergodox_pretty( + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , QK_BOOT, + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , RGB_TOG , RGB_M_P , RGB_MOD , _______ , _______ , EE_CLR , + _______ , _______ , _______ , _______ , _______ , _______ , RGB_HUI , RGB_VAI , RGB_SAI , RGB_SPI , _______ , _______, + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, + _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, + _______ , _______ , _______ , _______ , + _______ , _______ , + KC_LSFT , _______ , _______ , _______ , _______ , _______ +) +}; +// clang-format on + +// clang-format off +const uint8_t PROGMEM ledmap[][RGB_MATRIX_LED_COUNT][3] = { +[MDIA] = { +// RIGHT +{000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, +{000, 000, 000}, {243, 222, 234}, {243, 222, 234}, {000, 000, 000}, {000, 000, 000}, +{243, 222, 234}, {243, 222, 234}, {243, 222, 234}, {243, 222, 234}, {000, 000, 000}, +{000, 000, 000}, {243, 222, 234}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, + {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, +// LEFT +{000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, +{000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, +{000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, +{000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, + {000, 000, 000}, {000, 000, 000}, {000, 000, 000}, {000, 000, 000} + }, +[MOVE] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {32, 176, 255}, {32, 176, 255}, {32, 176, 255}, {32, 176, 255}, {0, 0, 0}, {10, 225, 255}, {10, 225, 255}, {10, 225, 255}, {10, 225, 255}, {0, 0, 0}, {0, 0, 0}, {32, 176, 255}, {32, 176, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {85, 203, 158}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}}, +}; +// clang-format on + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (record->event.pressed) { + switch (keycode) { + case DVORAK: + set_single_persistent_default_layer(DVRK); + return false; + case QWERTY: + set_single_persistent_default_layer(QWRT); + return false; + case S_TRUE: + if (record->event.pressed) { + SEND_STRING("true"); + } + break; + case S_FALSE: + if (record->event.pressed) { + SEND_STRING("false"); + } + break; + case VRSN: + SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + return false; + } + } + return true; +} + +// Runs just one time when the keyboard initializes. +void keyboard_post_init_user(void) { +#ifdef RGBLIGHT_COLOR_LAYER_0 + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0); +#endif +}; + +// Runs whenever there is a layer state change. +layer_state_t layer_state_set_user(layer_state_t state) { + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + + uint8_t layer = get_highest_layer(state); + switch (layer) { + case 0: +#ifdef RGBLIGHT_COLOR_LAYER_0 + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0); +#endif + break; + case 1: + ergodox_right_led_1_on(); +#ifdef RGBLIGHT_COLOR_LAYER_1 + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_1); +#endif + break; + case 2: + ergodox_right_led_2_on(); +#ifdef RGBLIGHT_COLOR_LAYER_2 + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_2); +#endif + break; + case 3: + ergodox_right_led_3_on(); +#ifdef RGBLIGHT_COLOR_LAYER_3 + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_3); +#endif + break; + case 4: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); +#ifdef RGBLIGHT_COLOR_LAYER_4 + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_4); +#endif + break; + case 5: + ergodox_right_led_1_on(); + ergodox_right_led_3_on(); +#ifdef RGBLIGHT_COLOR_LAYER_5 + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_5); +#endif + break; + case 6: + ergodox_right_led_2_on(); + ergodox_right_led_3_on(); +#ifdef RGBLIGHT_COLOR_LAYER_6 + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6); +#endif + break; + case 7: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + ergodox_right_led_3_on(); +#ifdef RGBLIGHT_COLOR_LAYER_7 + rgblight_setrgb(RGBLIGHT_COLOR_LAYER_7); +#endif + break; + default: + break; + } + + return state; +}; diff --git a/keyboards/ergodox_ez/glow/keymaps/tms/readme.md b/keyboards/ergodox_ez/glow/keymaps/tms/readme.md @@ -0,0 +1,15 @@ +# ErgoDox EZ Default Configuration + +## Changelog + +* Dec 2016: + * Added LED keys + * Refreshed layout graphic, comes from http://configure.ergodox-ez.com now. +* Sep 22, 2016: + * Created a new key in layer 1 (bottom-corner key) that resets the EEPROM. +* Feb 2, 2016 (V1.1): + * Made the right-hand quote key double as Cmd/Win on hold. So you get ' when you tap it, " when you tap it with Shift, and Cmd or Win when you hold it. You can then use it as a modifier, or just press and hold it for a moment (and then let go) to send a single Cmd or Win keystroke (handy for opening the Start menu on Windows). + +This is what we ship with out of the factory. :) The image says it all: + +![Default](https://i.imgur.com/Be53jH7.png) +\ No newline at end of file diff --git a/keyboards/planck/ez/glow/keymaps/tms/config.h b/keyboards/planck/ez/glow/keymaps/tms/config.h @@ -0,0 +1,49 @@ +/* Copyright 2015-2021 Jack Humbert + * + * 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 <http://www.gnu.org/licenses/>. + */ + +#pragma once + +#ifdef AUDIO_ENABLE +# define STARTUP_SONG SONG(PLANCK_SOUND) +// #define STARTUP_SONG SONG(NO_SOUND) + +# define DEFAULT_LAYER_SONGS \ + { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND) } +#endif + +/* + * MIDI options + */ + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +// Most tactile encoders have detents every 4 stages +#define ENCODER_RESOLUTION 4 diff --git a/keyboards/planck/ez/glow/keymaps/tms/keymap.c b/keyboards/planck/ez/glow/keymaps/tms/keymap.c @@ -0,0 +1,345 @@ +/* Copyright 2015-2021 Jack Humbert + * + * 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 <http://www.gnu.org/licenses/>. + */ + +#include QMK_KEYBOARD_H + +#ifdef AUDIO_ENABLE +# include "muse.h" +#endif + +enum planck_layers { + _BASE, + _LOWER, + _RAISE, + _PLOVER, + _ADJUST, + _FKEY, + _MOVE, + _MDIA, +}; + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + PLOVER, + BACKLIT, + EXT_PLV, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// ┌──────┬──────┬─────┬──────┬───────┬─────┬────┬───────┬──────┬─────┬─────┬─────────────┐ +// │ tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ caps │ +// ├──────┼──────┼─────┼──────┼───────┼─────┼────┼───────┼──────┼─────┼─────┼─────────────┤ +// │ esc │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ "'" │ +// ├──────┼──────┼─────┼──────┼───────┼─────┼────┼───────┼──────┼─────┼─────┼─────────────┤ +// │ lsft │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ rsft │ +// ├──────┼──────┼─────┼──────┼───────┼─────┼────┼───────┼──────┼─────┼─────┼─────────────┤ +// │ lctl │ bspc │ │ lalt │ RAISE │ spc │ XX │ LOWER │ lgui │ │ ent │ WEBUSB_PAIR │ +// └──────┴──────┴─────┴──────┴───────┴─────┴────┴───────┴──────┴─────┴─────┴─────────────┘ +[_BASE] = 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_CAPSLOCK, + KC_ESCAPE , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCOLON , KC_QUOTE , + KC_LSHIFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMMA , KC_DOT , KC_SLASH , KC_RSHIFT , + KC_LCTRL , KC_BSPACE , KC_TRNS , KC_LALT , RAISE , KC_SPACE , KC_NO , LOWER , KC_LGUI , KC_TRNS , KC_ENTER , WEBUSB_PAIR +), + +// ┌─────┬─────┬──────┬──────┬─────┬─────┬─────┬─────┬──────┬──────┬──────┬──────┐ +// │ del │ ! │ @ │ '--' │ $ │ % │ ^ │ & │ * │ │ │ │ +// ├─────┼─────┼──────┼──────┼─────┼─────┼─────┼─────┼──────┼──────┼──────┼──────┤ +// │ ~ │ - │ bspc │ ( │ { │ [ │ ent │ _ │ + │ = │ : │ ` │ +// ├─────┼─────┼──────┼──────┼─────┼─────┼─────┼─────┼──────┼──────┼──────┼──────┤ +// │ │ '\' │ | │ ) │ } │ ] │ │ tab │ < │ > │ ? │ │ +// ├─────┼─────┼──────┼──────┼─────┼─────┼─────┼─────┼──────┼──────┼──────┼──────┤ +// │ │ │ │ │ │ │ XX │ │ mnxt │ vold │ volu │ mply │ +// └─────┴─────┴──────┴──────┴─────┴─────┴─────┴─────┴──────┴──────┴──────┴──────┘ +[_LOWER] = LAYOUT_planck_grid( + KC_DELETE , KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , KC_TRNS , KC_TRNS , KC_TRNS , + KC_TILD , KC_MINUS , KC_BSPACE , KC_LPRN , KC_LCBR , KC_LBRACKET , KC_ENTER , KC_UNDS , KC_PLUS , KC_EQUAL , KC_COLN , KC_GRAVE , + KC_TRNS , KC_BSLASH , KC_PIPE , KC_RPRN , KC_RCBR , KC_RBRACKET , KC_TRNS , KC_TAB , KC_LABK , KC_RABK , KC_QUES , KC_TRNS , + KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_NO , KC_TRNS , KC_MEDIA_NEXT_TRACK , KC_AUDIO_VOL_DOWN , KC_AUDIO_VOL_UP , KC_MEDIA_PLAY_PAUSE +), + +// ┌─────┬──────────┬──────────┬──────────┬─────┬─────┬──────┬─────┬─────┬─────┬──────┬─────┐ +// │ │ 1 │ 2 │ 3 │ 4 │ 5 │ ^ │ 7 │ 8 │ 9 │ ~ │ │ +// ├─────┼──────────┼──────────┼──────────┼─────┼─────┼──────┼─────┼─────┼─────┼──────┼─────┤ +// │ │ │ │ │ │ │ kp_+ │ 4 │ 5 │ 6 │ kp_- │ │ +// ├─────┼──────────┼──────────┼──────────┼─────┼─────┼──────┼─────┼─────┼─────┼──────┼─────┤ +// │ │ MO(MDIA) │ MO(MOVE) │ MO(FKEY) │ . │ │ kp_* │ 1 │ 2 │ 3 │ kp_/ │ │ +// ├─────┼──────────┼──────────┼──────────┼─────┼─────┼──────┼─────┼─────┼─────┼──────┼─────┤ +// │ │ │ │ │ │ 0 │ XX │ │ │ │ │ │ +// └─────┴──────────┴──────────┴──────────┴─────┴─────┴──────┴─────┴─────┴─────┴──────┴─────┘ +[_RAISE] = LAYOUT_planck_grid( + KC_TRNS , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_CIRC , KC_7 , KC_8 , KC_9 , KC_TILD , KC_TRNS, + KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_KP_PLUS , KC_4 , KC_5 , KC_6 , KC_KP_MINUS , KC_TRNS, + KC_TRNS , MO(MDIA) , MO(MOVE) , MO(FKEY) , KC_DOT , KC_TRNS , KC_KP_ASTERISK , KC_1 , KC_2 , KC_3 , KC_KP_SLASH , KC_TRNS, + KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_0 , KC_NO , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS +), + +// ┌─────┬─────┬───────┬────────┬────────┬─────┬─────┬─────────┬─────────┬─────────┬─────┬──────┐ +// │ │ │ │ │ │ │ │ │ │ │ │ │ +// ├─────┼─────┼───────┼────────┼────────┼─────┼─────┼─────────┼─────────┼─────────┼─────┼──────┤ +// │ │ │ AU_ON │ AU_OFF │ AU_TOG │ │ │ RGB_TOG │ RGB_VAI │ RGB_VAD │ │ boot │ +// ├─────┼─────┼───────┼────────┼────────┼─────┼─────┼─────────┼─────────┼─────────┼─────┼──────┤ +// │ │ │ MU_ON │ MU_OFF │ MU_TOG │ │ │ RGB_MOD │ RGB_HUI │ RGB_HUD │ │ │ +// ├─────┼─────┼───────┼────────┼────────┼─────┼─────┼─────────┼─────────┼─────────┼─────┼──────┤ +// │ │ │ │ │ │ │ XX │ │ │ │ │ │ +// └─────┴─────┴───────┴────────┴────────┴─────┴─────┴─────────┴─────────┴─────────┴─────┴──────┘ +[_ADJUST] = LAYOUT_planck_grid( + KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS, + KC_TRNS , KC_TRNS , AU_ON , AU_OFF , AU_TOG , KC_TRNS , KC_TRNS , RGB_TOG , RGB_VAI , RGB_VAD , KC_TRNS , RESET , + KC_TRNS , KC_TRNS , MU_ON , MU_OFF , MU_TOG , KC_TRNS , KC_TRNS , RGB_MOD , RGB_HUI , RGB_HUD , KC_TRNS , KC_TRNS, + KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_NO , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS +), + +// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ +// │ │ │ │ │ │ │ f10 │ f7 │ f8 │ f9 │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +// │ │ │ │ │ │ │ f11 │ f4 │ f5 │ f6 │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +// │ │ │ │ │ │ │ f12 │ f1 │ f2 │ f3 │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤ +// │ │ │ │ │ │ │ XX │ │ │ │ │ │ +// └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ +[_FKEY] = LAYOUT_planck_grid( + KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_F10 , KC_F7 , KC_F8 , KC_F9 , KC_TRNS , KC_TRNS, + KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_F11 , KC_F4 , KC_F5 , KC_F6 , KC_TRNS , KC_TRNS, + KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_TRNS , KC_TRNS, + KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_NO , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS +), + +// ┌─────┬─────┬─────┬─────┬─────┬─────┬──────┬──────┬──────┬──────┬─────┬─────┐ +// │ │ │ │ │ │ │ home │ pgdn │ pgup │ end │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼──────┼──────┼──────┼──────┼─────┼─────┤ +// │ │ │ │ │ │ │ left │ down │ up │ rght │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼──────┼──────┼──────┼──────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ wh_d │ wh_u │ │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼──────┼──────┼──────┼──────┼─────┼─────┤ +// │ │ │ │ │ │ │ XX │ │ │ │ │ │ +// └─────┴─────┴─────┴─────┴─────┴─────┴──────┴──────┴──────┴──────┴─────┴─────┘ +[_MOVE] = LAYOUT_planck_grid( + KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_HOME , KC_PGDOWN , KC_PGUP , KC_END , KC_TRNS , KC_TRNS, + KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_LEFT , KC_DOWN , KC_UP , KC_RIGHT , KC_TRNS , KC_TRNS, + KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_MS_WH_DOWN , KC_MS_WH_UP , KC_TRNS , KC_TRNS , KC_TRNS, + KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_NO , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS +), + +// ┌─────┬─────┬─────┬─────┬─────┬─────┬──────┬──────┬──────┬──────┬─────┬─────┐ +// │ │ │ │ │ │ │ │ mply │ mstp │ │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼──────┼──────┼──────┼──────┼─────┼─────┤ +// │ │ │ │ │ │ │ mprv │ vold │ volu │ mnxt │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼──────┼──────┼──────┼──────┼─────┼─────┤ +// │ │ │ │ │ │ │ │ mute │ │ │ │ │ +// ├─────┼─────┼─────┼─────┼─────┼─────┼──────┼──────┼──────┼──────┼─────┼─────┤ +// │ │ │ │ │ │ │ XX │ │ │ │ │ │ +// └─────┴─────┴─────┴─────┴─────┴─────┴──────┴──────┴──────┴──────┴─────┴─────┘ +[_MDIA] = LAYOUT_planck_grid( + KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_MEDIA_PLAY_PAUSE , KC_MEDIA_STOP , KC_TRNS , KC_TRNS , KC_TRNS, + KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_MEDIA_PREV_TRACK , KC_AUDIO_VOL_DOWN , KC_AUDIO_VOL_UP , KC_MEDIA_NEXT_TRACK , KC_TRNS , KC_TRNS, + KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_AUDIO_MUTE , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS, + KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_NO , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS +) +}; +// clang-format off + +#ifdef AUDIO_ENABLE +float plover_song[][2] = SONG(PLOVER_SOUND); +float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); +#endif + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + print("mode just switched to qwerty and this is a huge string\n"); + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); +#ifdef BACKLIGHT_ENABLE + backlight_step(); +#endif +#ifdef KEYBOARD_planck_rev5 + writePinLow(E6); +#endif + } else { + unregister_code(KC_RSFT); +#ifdef KEYBOARD_planck_rev5 + writePinHigh(E6); +#endif + } + return false; + break; + case PLOVER: + if (record->event.pressed) { +#ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_SONG(plover_song); +#endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { +#ifdef AUDIO_ENABLE + PLAY_SONG(plover_gb_song); +#endif + layer_off(_PLOVER); + } + return false; + break; + } + return true; +} + +bool muse_mode = false; +uint8_t last_muse_note = 0; +uint16_t muse_counter = 0; +uint8_t muse_offset = 70; +uint16_t muse_tempo = 50; + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (muse_mode) { + if (IS_LAYER_ON(_RAISE)) { + if (clockwise) { + muse_offset++; + } else { + muse_offset--; + } + } else { + if (clockwise) { + muse_tempo += 1; + } else { + muse_tempo -= 1; + } + } + } else { + if (clockwise) { +#ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_DOWN); +#else + tap_code(KC_PGDN); +#endif + } else { +#ifdef MOUSEKEY_ENABLE + tap_code(KC_MS_WH_UP); +#else + tap_code(KC_PGUP); +#endif + } + } + return true; +} + +bool dip_switch_update_user(uint8_t index, bool active) { + switch (index) { + case 0: { +#ifdef AUDIO_ENABLE + static bool play_sound = false; +#endif + if (active) { +#ifdef AUDIO_ENABLE + if (play_sound) { + PLAY_SONG(plover_song); + } +#endif + layer_on(_ADJUST); + } else { +#ifdef AUDIO_ENABLE + if (play_sound) { + PLAY_SONG(plover_gb_song); + } +#endif + layer_off(_ADJUST); + } +#ifdef AUDIO_ENABLE + play_sound = true; +#endif + break; + } + case 1: + if (active) { + muse_mode = true; + } else { + muse_mode = false; + } + } + return true; +} + +void matrix_scan_user(void) { +#ifdef AUDIO_ENABLE + if (muse_mode) { + if (muse_counter == 0) { + uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()]; + if (muse_note != last_muse_note) { + stop_note(compute_freq_for_midi_note(last_muse_note)); + play_note(compute_freq_for_midi_note(muse_note), 0xF); + last_muse_note = muse_note; + } + } + muse_counter = (muse_counter + 1) % muse_tempo; + } else { + if (muse_counter) { + stop_all_notes(); + muse_counter = 0; + } + } +#endif +} + +bool music_mask_user(uint16_t keycode) { + switch (keycode) { + case RAISE: + case LOWER: + return false; + default: + return true; + } +} diff --git a/keyboards/planck/ez/glow/keymaps/tms/readme.md b/keyboards/planck/ez/glow/keymaps/tms/readme.md @@ -0,0 +1,2 @@ +# The Default Planck Layout + diff --git a/keyboards/planck/ez/glow/keymaps/tms/rules.mk b/keyboards/planck/ez/glow/keymaps/tms/rules.mk @@ -0,0 +1,3 @@ +ifeq ($(strip $(AUDIO_ENABLE)), yes) + SRC += muse.c +endif diff --git a/qmk.json b/qmk.json @@ -1,4 +1,7 @@ { "userspace_version": "1.0", - "build_targets": [] + "build_targets": [ + ["ergodox_ez/glow", "tms"], + ["planck/ez/glow", "tms"] + ] } \ No newline at end of file