commit 1f07642db0c7d652e56ec01e3b1c7060140c209a
parent 612215413d2d411bfadfb599988cf410371de01f
Author: Tomas Nemec <owl@gtms.dev>
Date: Wed, 13 Mar 2024 13:39:35 +0100
feat: add keyboards
Diffstat:
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:
+
+
+\ 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