summaryrefslogtreecommitdiff
path: root/keyboards/planck
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/planck')
-rw-r--r--keyboards/planck/ez/ez.c11
-rw-r--r--keyboards/planck/ez/ez.h95
-rw-r--r--keyboards/planck/ez/info.json115
-rw-r--r--keyboards/planck/ez/readme.md15
-rw-r--r--keyboards/planck/keymaps/callum/config.h7
-rw-r--r--keyboards/planck/keymaps/callum/keymap.c526
-rw-r--r--keyboards/planck/keymaps/callum/readme.md27
-rw-r--r--keyboards/planck/keymaps/callum/rules.mk2
-rw-r--r--keyboards/planck/keymaps/deft/config.h39
-rw-r--r--keyboards/planck/keymaps/deft/deft-plank.json141
-rw-r--r--keyboards/planck/keymaps/deft/keymap.c138
-rw-r--r--keyboards/planck/keymaps/deft/readme.md73
-rw-r--r--keyboards/planck/keymaps/deft/rules.mk1
-rw-r--r--keyboards/planck/keymaps/dvorak2space/config.h3
-rw-r--r--keyboards/planck/keymaps/dvorak2space/keymap.c242
-rw-r--r--keyboards/planck/keymaps/dvorak2space/passwords.c28
-rw-r--r--keyboards/planck/keymaps/dvorak2space/readme.md5
-rw-r--r--keyboards/planck/keymaps/dvorak2space/rules.mk20
-rw-r--r--keyboards/planck/keymaps/spacebarracecar/keymap.c4
-rw-r--r--keyboards/planck/keymaps/tylerwince/config.h18
-rw-r--r--keyboards/planck/keymaps/tylerwince/keymap.c294
-rw-r--r--keyboards/planck/keymaps/tylerwince/rules.mk7
-rw-r--r--keyboards/planck/light/info.json113
-rw-r--r--keyboards/planck/light/light.h46
-rw-r--r--keyboards/planck/light/readme.md15
-rw-r--r--keyboards/planck/planck.h157
-rw-r--r--keyboards/planck/readme.md2
-rw-r--r--keyboards/planck/rev1/info.json115
-rw-r--r--keyboards/planck/rev1/readme.md13
-rw-r--r--keyboards/planck/rev1/rev1.h49
-rw-r--r--keyboards/planck/rev2/info.json115
-rw-r--r--keyboards/planck/rev2/readme.md13
-rw-r--r--keyboards/planck/rev2/rev2.h49
-rw-r--r--keyboards/planck/rev3/info.json115
-rw-r--r--keyboards/planck/rev3/readme.md13
-rw-r--r--keyboards/planck/rev3/rev3.h49
-rw-r--r--keyboards/planck/rev4/info.json115
-rw-r--r--keyboards/planck/rev4/readme.md13
-rw-r--r--keyboards/planck/rev4/rev4.h49
-rw-r--r--keyboards/planck/rev5/info.json115
-rw-r--r--keyboards/planck/rev5/readme.md13
-rw-r--r--keyboards/planck/rev5/rev5.h49
-rw-r--r--keyboards/planck/rev6/info.json4
-rw-r--r--keyboards/planck/rev6/readme.md13
-rw-r--r--keyboards/planck/rev6/rev6.h106
45 files changed, 2617 insertions, 535 deletions
diff --git a/keyboards/planck/ez/ez.c b/keyboards/planck/ez/ez.c
index 3ad694c4a3..e739b90b8c 100644
--- a/keyboards/planck/ez/ez.c
+++ b/keyboards/planck/ez/ez.c
@@ -15,6 +15,7 @@
*/
#include "ez.h"
+#ifdef RGB_MATRIX_ENABLE
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
@@ -100,6 +101,16 @@ led_config_t g_led_config = { {
1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1
} };
+void suspend_power_down_kb(void) {
+ rgb_matrix_set_suspend_state(true);
+ suspend_power_down_user();
+}
+
+ void suspend_wakeup_init_kb(void) {
+ rgb_matrix_set_suspend_state(false);
+ suspend_wakeup_init_user();
+}
+#endif
void matrix_init_kb(void) {
matrix_init_user();
diff --git a/keyboards/planck/ez/ez.h b/keyboards/planck/ez/ez.h
index a3ca2b6ece..55c4032422 100644
--- a/keyboards/planck/ez/ez.h
+++ b/keyboards/planck/ez/ez.h
@@ -21,87 +21,32 @@
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a \
+ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
) \
{ \
- { k00, k01, k02, k03, k04, k05 }, \
- { k10, k11, k12, k13, k14, k15 }, \
- { k20, k21, k22, k23, k24, k25 }, \
- { k30, k31, k32, k39, k3a, k3b }, \
- { k06, k07, k08, k09, k0a, k0b }, \
- { k16, k17, k18, k19, k1a, k1b }, \
- { k26, k27, k28, k29, k2a, k2b }, \
- { k36, k37, k38, k33, k34, k35 } \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k20, k21, k22, k23, k24, k25 }, \
+ { k30, k31, k32, k3a, k3b, KC_NO }, \
+ { k06, k07, k08, k09, k0a, k0b }, \
+ { k16, k17, k18, k19, k1a, k1b }, \
+ { k26, k27, k28, k29, k2a, k2b }, \
+ { k37, k38, k39, k33, k34, k35 } \
}
-#define LAYOUT_planck_1x2uR( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a \
+#define LAYOUT_ortho_4x12( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, KC_NO, k37, k38, k39, k3a, k3b \
) \
-{ \
- { k00, k01, k02, k03, k04, k05 }, \
- { k10, k11, k12, k13, k14, k15 }, \
- { k20, k21, k22, k23, k24, k25 }, \
- { k30, k31, k32, k39, k3a, k3b }, \
- { k06, k07, k08, k09, k0a, k0b }, \
- { k16, k17, k18, k19, k1a, k1b }, \
- { k26, k27, k28, k29, k2a, k2b }, \
- { k36, k37, k38, k33, k34, k35 } \
-}
-
-#define LAYOUT_planck_1x2uL( \
+LAYOUT_planck_1x2uC( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05 }, \
- { k10, k11, k12, k13, k14, k15 }, \
- { k20, k21, k22, k23, k24, k25 }, \
- { k30, k31, k32, k39, k3a, k3b }, \
- { k06, k07, k08, k09, k0a, k0b }, \
- { k16, k17, k18, k19, k1a, k1b }, \
- { k26, k27, k28, k29, k2a, k2b }, \
- { k36, k37, k38, k33, k34, k35 } \
-}
-
-#define LAYOUT_planck_2x2u( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05 }, \
- { k10, k11, k12, k13, k14, k15 }, \
- { k20, k21, k22, k23, k24, k25 }, \
- { k30, k31, k32, k39, k3a, k3b }, \
- { k06, k07, k08, k09, k0a, k0b }, \
- { k16, k17, k18, k19, k1a, k1b }, \
- { k26, k27, k28, k29, k2a, k2b }, \
- { k36, k37, k38, k33, k34, k35 } \
-}
-
-#define LAYOUT_planck_grid( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k35, KC_NO, k36, k37, k38, k39, k3a \
-) \
-{ \
- { k00, k01, k02, k03, k04, k05 }, \
- { k10, k11, k12, k13, k14, k15 }, \
- { k20, k21, k22, k23, k24, k25 }, \
- { k30, k31, k32, k39, k3a, KC_NO }, \
- { k06, k07, k08, k09, k0a, k0b }, \
- { k16, k17, k18, k19, k1a, k1b }, \
- { k26, k27, k28, k29, k2a, k2b }, \
- { k36, k37, k38, k33, k34, k35 } \
-}
+ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
+)
-#define KEYMAP LAYOUT_planck_grid
-#define LAYOUT_ortho_4x12 LAYOUT_planck_grid
-#define KC_LAYOUT_ortho_4x12 KC_KEYMAP
+#define KEYMAP LAYOUT_ortho_4x12
+#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
+#define LAYOUT_planck_grid LAYOUT_ortho_4x12
diff --git a/keyboards/planck/ez/info.json b/keyboards/planck/ez/info.json
new file mode 100644
index 0000000000..b8382bfe0a
--- /dev/null
+++ b/keyboards/planck/ez/info.json
@@ -0,0 +1,115 @@
+{
+ "keyboard_name": "Planck EZ",
+ "keyboard_folder": "planck/ez",
+ "url": "https://ergodox-ez.com/pages/planck",
+ "maintainer": "jackhumbert",
+ "width": 12,
+ "height": 4,
+ "layouts": {
+ "LAYOUT_planck_1x2uC": {
+ "key_count": 47,
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 0, "y": 1 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 0, "y": 2 },
+ { "x": 1, "y": 2 },
+ { "x": 2, "y": 2 },
+ { "x": 3, "y": 2 },
+ { "x": 4, "y": 2 },
+ { "x": 5, "y": 2 },
+ { "x": 6, "y": 2 },
+ { "x": 7, "y": 2 },
+ { "x": 8, "y": 2 },
+ { "x": 9, "y": 2 },
+ { "x": 10, "y": 2 },
+ { "x": 11, "y": 2 },
+ { "x": 0, "y": 3 },
+ { "x": 1, "y": 3 },
+ { "x": 2, "y": 3 },
+ { "x": 3, "y": 3 },
+ { "x": 4, "y": 3 },
+ { "x": 5, "y": 3, "w": 2 },
+ { "x": 7, "y": 3 },
+ { "x": 8, "y": 3 },
+ { "x": 9, "y": 3 },
+ { "x": 10, "y": 3 },
+ { "x": 11, "y": 3 }
+ ]
+ },
+ "LAYOUT_ortho_4x12": {
+ "key_count": 48,
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 0, "y": 1 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 0, "y": 2 },
+ { "x": 1, "y": 2 },
+ { "x": 2, "y": 2 },
+ { "x": 3, "y": 2 },
+ { "x": 4, "y": 2 },
+ { "x": 5, "y": 2 },
+ { "x": 6, "y": 2 },
+ { "x": 7, "y": 2 },
+ { "x": 8, "y": 2 },
+ { "x": 9, "y": 2 },
+ { "x": 10, "y": 2 },
+ { "x": 11, "y": 2 },
+ { "x": 0, "y": 3 },
+ { "x": 1, "y": 3 },
+ { "x": 2, "y": 3 },
+ { "x": 3, "y": 3 },
+ { "x": 4, "y": 3 },
+ { "x": 5, "y": 3 },
+ { "x": 6, "y": 3 },
+ { "x": 7, "y": 3 },
+ { "x": 8, "y": 3 },
+ { "x": 9, "y": 3 },
+ { "x": 10, "y": 3 },
+ { "x": 11, "y": 3 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/planck/ez/readme.md b/keyboards/planck/ez/readme.md
new file mode 100644
index 0000000000..9bd161abdf
--- /dev/null
+++ b/keyboards/planck/ez/readme.md
@@ -0,0 +1,15 @@
+# Planck EZ
+
+![Planck EZ](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/planck/ez/neat-planck-banner.png)
+
+A variant of the Planck featuring a 2u spacebar and per-key RGB backlighting.
+
+Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
+Hardware Supported: Planck EZ
+Hardware Availability: [ergodox-ez.com](https://ergodox-ez.com/pages/planck)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make planck/ez:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/planck/keymaps/callum/config.h b/keyboards/planck/keymaps/callum/config.h
index e66db1d7e8..e69de29bb2 100644
--- a/keyboards/planck/keymaps/callum/config.h
+++ b/keyboards/planck/keymaps/callum/config.h
@@ -1,7 +0,0 @@
-#define MOUSEKEY_DELAY 0
-#define MOUSEKEY_INTERVAL 16
-#define MOUSEKEY_MAX_SPEED 20
-#define MOUSEKEY_TIME_TO_MAX 100
-#define MOUSEKEY_WHEEL_DELAY 0
-#define MOUSEKEY_WHEEL_MAX_SPEED 1
-#define MOUSEKEY_WHEEL_TIME_TO_MAX 100
diff --git a/keyboards/planck/keymaps/callum/keymap.c b/keyboards/planck/keymaps/callum/keymap.c
index 08d0c69b88..2a7a53d38d 100644
--- a/keyboards/planck/keymaps/callum/keymap.c
+++ b/keyboards/planck/keymaps/callum/keymap.c
@@ -1,331 +1,259 @@
#include "planck.h"
#include "action_layer.h"
-extern keymap_config_t keymap_config;
+#define a KC_A
+#define b KC_B
+#define c KC_C
+#define d KC_D
+#define e KC_E
+#define f KC_F
+#define g KC_G
+#define h KC_H
+#define i KC_I
+#define j KC_J
+#define k KC_K
+#define l KC_L
+#define m KC_M
+#define n KC_N
+#define o KC_O
+#define p KC_P
+#define q KC_Q
+#define r KC_R
+#define s KC_S
+#define t KC_T
+#define u KC_U
+#define v KC_V
+#define w KC_W
+#define x KC_X
+#define y KC_Y
+#define z KC_Z
+
+#define lalt KC_LALT
+#define lctl KC_LCTL
+#define lsft KC_LSFT
+#define ralt KC_RALT
+#define rctl KC_RCTL
+#define rsft KC_RSFT
+
+#define n0 KC_0
+#define n1 KC_1
+#define n2 KC_2
+#define n3 KC_3
+#define n4 KC_4
+#define n5 KC_5
+#define n6 KC_6
+#define n7 KC_7
+#define n8 KC_8
+#define n9 KC_9
+
+#define bspc KC_BSPC
+#define caps KC_CAPS
+#define comm KC_COMM
+#define dash A(KC_MINS)
+#define scln KC_SCLN
+#define slsh KC_SLSH
+#define spc KC_SPC
+#define tab KC_TAB
+#define del KC_DEL
+#define dot KC_DOT
+#define ent KC_ENT
+#define mins KC_MINS
+#define quot KC_QUOT
+#define esc KC_ESC
+#define gbp A(KC_3)
+
+#define down KC_DOWN
+#define home KC_HOME
+#define end KC_END
+#define up KC_UP
+#define pgdn KC_PGDN
+#define pgup KC_PGUP
+#define left KC_LEFT
+#define rght KC_RGHT
+
+#define tabl S(C(KC_TAB))
+#define tabr C(KC_TAB)
+#define fwd G(KC_RBRC)
+#define back G(KC_LBRC)
+#define dtl C(KC_LEFT)
+#define dtr C(KC_RGHT)
+#define slup S(A(KC_UP))
+#define sldn S(A(KC_DOWN))
+
+#define f1 KC_F1
+#define f2 KC_F2
+#define f3 KC_F3
+#define f4 KC_F4
+#define f5 KC_F5
+#define f6 KC_F6
+#define f7 KC_F7
+#define f8 KC_F8
+#define f9 KC_F9
+#define f10 KC_F10
+#define f11 KC_F11
+#define f12 KC_F12
+#define f13 KC_F13
+#define f14 KC_F14
+#define f15 KC_F15
+#define f16 KC_F16
+#define f17 KC_F17
+#define f18 KC_F18
+#define f19 KC_F19
+#define f20 KC_F20
+
+#define mute KC_MUTE
+#define next KC_MNXT
+#define play KC_MPLY
+#define prev KC_MPRV
+#define vold KC_F11
+#define volu KC_F12
+
+#define symb MO(SYMB)
+#define move MO(MOVE)
+#define func MO(FUNC)
+
+#define rset RESET
+#define powr KC_POWER
+
+#define ____ KC_TRNS
+#define xxxx KC_NO
-#define AC(X) A(C(X))
-#define SC(X) S(C(X))
+extern keymap_config_t keymap_config;
enum planck_layers {
- _COLEMAK,
- _QWERTY,
- _SYMB,
- _MOVE,
- _FUNC,
- _MOUSE,
-};
-
-enum planck_keycodes {
- COLEMAK = SAFE_RANGE,
- QWERTY,
+ BASE,
SYMB,
MOVE,
FUNC,
- MOUSE,
};
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- /* COLEMAK
- * ,-----------------------------------------------------------------------.
- * |Tab | Q | W | F | P | G | J | L | U | Y | ; | - |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * |Bksp | A | R | S | T | D | H | N | E | I | O | ' |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * |Shift| Z | X | C | V | B | K | M | , | . | / |Shift|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * |Func |Ctrl | Alt |Super|Symb |Enter|Space|Move |Super| Alt |Ctrl |Func |
- * `-----------------------------------------------------------------------'
- */
- [_COLEMAK] = LAYOUT_planck_grid(
- KC_TAB, KC_Q, KC_W, KC_F,
- KC_P, KC_G, KC_J, KC_L,
- KC_U, KC_Y, KC_SCLN, KC_MINS,
-
- KC_BSPC, KC_A, KC_R, KC_S,
- KC_T, KC_D, KC_H, KC_N,
- KC_E, KC_I, KC_O, KC_QUOT,
-
- KC_LSFT, KC_Z, KC_X, KC_C,
- KC_V, KC_B, KC_K, KC_M,
- KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+enum planck_keycodes {
+ ampr = SAFE_RANGE,
+ astr,
+ at,
+ bsls,
+ circ,
+ dlr,
+ eql,
+ exlm,
+ grv,
+ hash,
+ lbrc,
+ lcbr,
+ lprn,
+ perc,
+ pipe,
+ plus,
+ rbrc,
+ rcbr,
+ rprn,
+ tild,
+
+ cmd,
+};
- FUNC, KC_LCTL, KC_LALT, KC_LGUI,
- SYMB, KC_ENT, KC_SPC, MOVE,
- KC_RGUI, KC_RALT, KC_RCTL, FUNC
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT_planck_grid(
+ tab, q, w, f, p, g, j, l, u, y, scln, mins,
+ bspc, a, r, s, t, d, h, n, e, i, o, quot,
+ lsft, z, x, c, v, b, k, m, comm, dot, slsh, rsft,
+ func, lctl, lalt, cmd, move, ent, spc, symb, cmd, ralt, rctl, func
),
- /* QWERTY
- * ,-----------------------------------------------------------------------.
- * |Tab | Q | W | E | R | T | Y | U | I | O | P | - |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * |Bksp | A | S | D | F | G | H | J | K | L | ; | ' |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * |Shift| Z | X | C | V | B | N | M | , | . | / |Shift|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * |Func |Ctrl | Alt |Super|Symb |Enter|Space|Move |Super| Alt |Ctrl |Func |
- * `-----------------------------------------------------------------------'
- */
- [_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_MINS,
-
- KC_BSPC, 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_RSFT,
-
- FUNC, KC_LCTL, KC_LALT, KC_LGUI,
- SYMB, KC_ENT, KC_SPC, MOVE,
- KC_RGUI, KC_RALT, KC_RCTL, FUNC
+ [SYMB] = LAYOUT_planck_grid(
+ esc, n7, n5, n3, n1, n9, n8, n0, n2, n4, n6, dash,
+ del, bsls, hash, astr, eql, pipe, at, rprn, lprn, dlr, ampr, gbp,
+ caps, grv, exlm, lbrc, rbrc, circ, tild, rcbr, lcbr, plus, perc, caps,
+ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____
),
- /* SYMB
- * ,-----------------------------------------------------------------------.
- * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |ndash|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | £ |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | ~ | ` | + | = | | | \ | [ | ] | { | } | |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | | | | | | | | | |
- * `-----------------------------------------------------------------------'
- */
- [_SYMB] = LAYOUT_planck_grid(
- KC_ESC, KC_1, KC_2, KC_3,
- KC_4, KC_5, KC_6, KC_7,
- KC_8, KC_9, KC_0, A(KC_MINS),
-
- KC_DEL, KC_EXLM, KC_AT, KC_HASH,
- KC_DLR, KC_PERC, KC_CIRC, KC_AMPR,
- KC_ASTR, KC_LPRN, KC_RPRN, A(KC_3),
-
- _______, KC_TILD, KC_GRV, KC_PLUS,
- KC_EQL, KC_PIPE, KC_BSLS, KC_LBRC,
- KC_RBRC, KC_LCBR, KC_RCBR, _______,
-
- _______, _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______, _______
+ [MOVE] = LAYOUT_planck_grid(
+ esc, xxxx, slup, dtl, dtr, xxxx, xxxx, home, up, end, xxxx, xxxx,
+ del, xxxx, sldn, tabl, tabr, xxxx, xxxx, left, down, rght, xxxx, xxxx,
+ ____, xxxx, xxxx, back, fwd, xxxx, xxxx, pgdn, pgup, xxxx, xxxx, ____,
+ ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____
),
- /* MOVE
- * ,-----------------------------------------------------------------------.
- * | | | | | | |CtrUp|Home | Up | End |Caps |Mouse|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | | | |CtrL |Left |Down |Right|CtrR | |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | | | |CtrDn|PgDn |PgUp |TabL |TabR | |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | | | | | | | | | |
- * `-----------------------------------------------------------------------'
- */
- [_MOVE] = LAYOUT_planck_grid(
- AC(KC_A), AC(KC_B), AC(KC_C), AC(KC_D),
- AC(KC_E), AC(KC_F), C(KC_UP), KC_HOME,
- KC_UP, KC_END, KC_CAPS, MOUSE,
-
- AC(KC_G), AC(KC_H), AC(KC_I), AC(KC_J),
- AC(KC_K), AC(KC_L), C(KC_LEFT), KC_LEFT,
- KC_DOWN, KC_RGHT, C(KC_RIGHT), XXXXXXX,
-
- _______, AC(KC_M), AC(KC_N), AC(KC_O),
- AC(KC_P), AC(KC_Q), C(KC_DOWN), KC_PGDN,
- KC_PGUP, SC(KC_TAB), C(KC_TAB), _______,
-
- _______, _______, _______, _______,
- _______, _______, _______, _______,
- _______, _______, _______, _______
+ [FUNC] = LAYOUT_planck_grid(
+ rset, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, volu,
+ powr, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, vold,
+ ____, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, xxxx, ____,
+ ____, ____, ____, ____, prev, mute, play, next, ____, ____, ____, ____
),
-
- /* FUNC
- * ,-----------------------------------------------------------------------.
- * |Reset| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 |VolUp|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * |Power| F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 |VolDn|
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | | | | | | |Clmak|Qwrty| |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | |Prev |Mute |Play |Next | | | | |
- * `-----------------------------------------------------------------------'
- */
- [_FUNC] = LAYOUT_planck_grid(
- RESET, KC_F1, KC_F2, KC_F3,
- KC_F4, KC_F5, KC_F6, KC_F7,
- KC_F8, KC_F9, KC_F10, KC_VOLU,
-
- KC_POWER, KC_F11, KC_F12, KC_F13,
- KC_F14, KC_F15, KC_F16, KC_F17,
- KC_F18, KC_F19, KC_F20, KC_VOLD,
-
- _______, XXXXXXX, KC_HOME, SC(KC_TAB),
- C(KC_TAB), KC_END, XXXXXXX, XXXXXXX,
- XXXXXXX, COLEMAK, QWERTY, _______,
-
- _______, _______, _______, _______,
- KC_MPRV, KC_MUTE, KC_MPLY, KC_MNXT,
- _______, _______, _______, _______
- ),
-
- /* MOUSE
- * ,-----------------------------------------------------------------------.
- * | | |CtrL |CtrU |CtrR | B5 |CtrU | ScL |Up | ScR | | |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | Ac0 | Ac1 | Ac2 | B4 |CtrL |Left |Down |Right|CtrR | |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | |Home | End | B3 |CtrD | ScD | ScU |TabL |TabR | |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | | | | | | B2 | B1 | | | | | |
- * `-----------------------------------------------------------------------'
- */
- [_MOUSE] = LAYOUT_planck_grid(
- _______, XXXXXXX, C(KC_LEFT), C(KC_UP),
- C(KC_RIGHT), KC_BTN5, C(KC_UP), KC_WH_R,
- KC_MS_U, KC_WH_L, XXXXXXX, XXXXXXX,
-
- _______, XXXXXXX, KC_ACL0, KC_ACL1,
- KC_ACL2, KC_BTN4, C(KC_LEFT), KC_MS_L,
- KC_MS_D, KC_MS_R, C(KC_RIGHT), XXXXXXX,
-
- _______, XXXXXXX, XXXXXXX, KC_HOME,
- KC_END, KC_BTN3, C(KC_DOWN), KC_WH_U,
- KC_WH_D, SC(KC_TAB), C(KC_TAB), _______,
-
- _______, _______, _______, _______,
- _______, KC_BTN2, KC_BTN1, _______,
- _______, _______, _______, _______
- )
};
-#ifdef AUDIO_ENABLE
-float colemak_song[][2] = SONG(COLEMAK_SOUND);
-float qwerty_song[][2] = SONG(QWERTY_SOUND);
-#endif
-
-void set_colemak(void) {
-#ifdef AUDIO_ENABLE
- stop_all_notes();
- PLAY_SONG(colemak_song);
-#endif
- set_single_persistent_default_layer(_COLEMAK);
+bool send_string_if_keydown(keyrecord_t *record, const char *s) {
+ if (record->event.pressed) {
+ send_string(s);
+ }
+ return true;
}
-void set_qwerty(void) {
-#ifdef AUDIO_ENABLE
- stop_all_notes();
- PLAY_SONG(qwerty_song);
-#endif
- set_single_persistent_default_layer(_QWERTY);
-}
+int cmd_keys_down = 0;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
- case COLEMAK:
- if (record->event.pressed) {
- set_colemak();
- }
- return false;
- case QWERTY:
+ // Override the defualt auto shifted symbols to use SEND_STRING See
+ // https://github.com/qmk/qmk_firmware/issues/4072
+ case ampr:
+ return send_string_if_keydown(record, "&");
+ case astr:
+ return send_string_if_keydown(record, "*");
+ case at:
+ return send_string_if_keydown(record, "@");
+ case bsls:
+ return send_string_if_keydown(record, "\\");
+ case circ:
+ return send_string_if_keydown(record, "^");
+ case dlr:
+ return send_string_if_keydown(record, "$");
+ case eql:
+ return send_string_if_keydown(record, "=");
+ case exlm:
+ return send_string_if_keydown(record, "!");
+ case grv:
+ return send_string_if_keydown(record, "`");
+ case hash:
+ return send_string_if_keydown(record, "#");
+ case lbrc:
+ return send_string_if_keydown(record, "[");
+ case lcbr:
+ return send_string_if_keydown(record, "{");
+ case lprn:
+ return send_string_if_keydown(record, "(");
+ case perc:
+ return send_string_if_keydown(record, "%");
+ case pipe:
+ return send_string_if_keydown(record, "|");
+ case plus:
+ return send_string_if_keydown(record, "+");
+ case rbrc:
+ return send_string_if_keydown(record, "]");
+ case rcbr:
+ return send_string_if_keydown(record, "}");
+ case rprn:
+ return send_string_if_keydown(record, ")");
+ case tild:
+ return send_string_if_keydown(record, "~");
+
+ // cmd + cmd -> cmd + ctl
+ case cmd:
if (record->event.pressed) {
- set_qwerty();
- }
- return false;
- case SYMB:
- if (record->event.pressed) {
- layer_off(_MOUSE);
- layer_on(_SYMB);
- } else {
- layer_off(_SYMB);
- }
- return false;
- case MOVE:
- if (record->event.pressed) {
- layer_off(_MOUSE);
- layer_on(_MOVE);
+ if (cmd_keys_down == 0) {
+ register_code(KC_LCMD);
+ } else {
+ register_code(KC_LCTL);
+ }
+ cmd_keys_down++;
} else {
- layer_off(_MOVE);
+ if (cmd_keys_down == 1) {
+ unregister_code(KC_LCMD);
+ } else {
+ unregister_code(KC_LCTL);
+ }
+ cmd_keys_down--;
}
- return false;
- case FUNC:
- if (record->event.pressed) {
- layer_off(_MOUSE);
- layer_on(_FUNC);
- } else {
- layer_off(_FUNC);
- }
- return false;
- case MOUSE:
- if (record->event.pressed) {
- layer_on(_MOUSE);
- }
- return false;
-
- // Override the defualt auto shifted symbols to use SEND_STRING
- // See https://github.com/qmk/qmk_firmware/issues/4072
- case KC_EXLM:
- if (record->event.pressed) { SEND_STRING("!"); }
- return false;
- case KC_AT:
- if (record->event.pressed) { SEND_STRING("@"); }
- return false;
- case KC_HASH:
- if (record->event.pressed) { SEND_STRING("#"); }
- return false;
- case KC_DLR:
- if (record->event.pressed) { SEND_STRING("$"); }
- return false;
- case KC_PERC:
- if (record->event.pressed) { SEND_STRING("%"); }
- return false;
- case KC_CIRC:
- if (record->event.pressed) { SEND_STRING("^"); }
- return false;
- case KC_AMPR:
- if (record->event.pressed) { SEND_STRING("&"); }
- return false;
- case KC_ASTR:
- if (record->event.pressed) { SEND_STRING("*"); }
- return false;
- case KC_LPRN:
- if (record->event.pressed) { SEND_STRING("("); }
- return false;
- case KC_RPRN:
- if (record->event.pressed) { SEND_STRING(")"); }
- return false;
- case KC_TILD:
- if (record->event.pressed) { SEND_STRING("~"); }
- return false;
- case KC_GRV:
- if (record->event.pressed) { SEND_STRING("`"); }
- return false;
- case KC_PLUS:
- if (record->event.pressed) { SEND_STRING("+"); }
- return false;
- case KC_EQL:
- if (record->event.pressed) { SEND_STRING("="); }
- return false;
- case KC_PIPE:
- if (record->event.pressed) { SEND_STRING("|"); }
- return false;
- case KC_BSLS:
- if (record->event.pressed) { SEND_STRING("\\"); }
- return false;
- case KC_LBRC:
- if (record->event.pressed) { SEND_STRING("["); }
- return false;
- case KC_RBRC:
- if (record->event.pressed) { SEND_STRING("]"); }
- return false;
- case KC_LCBR:
- if (record->event.pressed) { SEND_STRING("{"); }
- return false;
- case KC_RCBR:
- if (record->event.pressed) { SEND_STRING("}"); }
- return false;
+ return true;
}
return true;
}
diff --git a/keyboards/planck/keymaps/callum/readme.md b/keyboards/planck/keymaps/callum/readme.md
index 99b6dfbeff..190c2b23a5 100644
--- a/keyboards/planck/keymaps/callum/readme.md
+++ b/keyboards/planck/keymaps/callum/readme.md
@@ -1,11 +1,11 @@
-# callum’s planck layout
+# callum's planck layout
This is a layout for the grid planck, built with a few ideals in mind:
- Consistent and minimal response times should be maintained. Keys that react
differently depending on whether they are tapped or held, keys that react
- differently if they are double tapped, etc. should be avoided -- they
- inevitably send their keycode later than a normal key -- interrupting the
+ differently if they are double tapped, etc. should be avoided – they
+ inevitably send their keycode later than a normal key – interrupting the
immediate feedback from the screen. Therefore we restrict ourselves to
chording as our only means of getting more than one symbol out of a single
physical key.
@@ -17,7 +17,22 @@ This is a layout for the grid planck, built with a few ideals in mind:
- There should be two of every modifier (one on each side), otherwise certain
long key combinations become hard to make.
-A layout graphic can be found [here][keyboard-layout-editor] (excludes window
-management keys).
+- It should be possible to do things you might want to do while using the mouse
+ with only the left hand (e.g. change tabs, navigate back or forwards in
+ browser history).
-[keyboard-layout-editor]: http://www.keyboard-layout-editor.com/#/gists/ade5ec1f814bf83046489a4b632575ff
+- Symbols should be arranged so that the most frequently used are easiest to
+ reach. This includes numbers, and lower numbers are more commonly used than
+ higher ones. (number arrangement borrowed from [dustypomeleau's minidox
+ layout][].
+
+Layout rendered with [keyboard-layout-editor.com][]:
+
+![](https://callum-oakley.github.io/images/keymap.png)
+
+The only behaviour not captured in this graphic is: pressing both cmd keys will
+send cmd+ctrl. See [keymap.c][] for details.
+
+[dustypomeleau's minidox layout]: https://github.com/qmk/qmk_firmware/tree/master/keyboards/minidox/keymaps/dustypomerleau
+[keyboard-layout-editor.com]: http://www.keyboard-layout-editor.com
+[keymap.c]: keymap.c
diff --git a/keyboards/planck/keymaps/callum/rules.mk b/keyboards/planck/keymaps/callum/rules.mk
index 182322ae23..db87d5ecec 100644
--- a/keyboards/planck/keymaps/callum/rules.mk
+++ b/keyboards/planck/keymaps/callum/rules.mk
@@ -3,7 +3,7 @@
# the appropriate keymap folder that will get included automatically
#
BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = yes # Commands for debug and configuration
diff --git a/keyboards/planck/keymaps/deft/config.h b/keyboards/planck/keymaps/deft/config.h
new file mode 100644
index 0000000000..6fa31cc8a7
--- /dev/null
+++ b/keyboards/planck/keymaps/deft/config.h
@@ -0,0 +1,39 @@
+#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
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* 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/keymaps/deft/deft-plank.json b/keyboards/planck/keymaps/deft/deft-plank.json
new file mode 100644
index 0000000000..49dc57c3e5
--- /dev/null
+++ b/keyboards/planck/keymaps/deft/deft-plank.json
@@ -0,0 +1,141 @@
+[
+ {
+ "backcolor": "#ffffff",
+ "name": "Deft Plank",
+ "author": "Michael Speiserß",
+ "switchMount": "cherry",
+ "switchBrand": "gateron",
+ "switchType": "KS-3-Tea",
+ "plate": true,
+ "pcb": true
+ },
+ [
+ {
+ "c": "#ba0000",
+ "sb": "gateron",
+ "st": "KS-3-Tea",
+ "a": 5
+ },
+ "\nDel\n\n\n\n\nEsc",
+ {
+ "c": "#cccccc",
+ "a": 4
+ },
+ "\n\n!\n\n\n\n\n\n1\nQ\nAlt 1",
+ "\n\n@\n\n\n\n\n\n2\nW\nAlt 2",
+ "\n\n#\n\n\n\n\n\n3\nE\nAlt 3",
+ "\n\n$\n\n\n\n\n\n4\nR\nAlt 4",
+ "\n\n%\n\n\n\n\n\n5\nT\n(",
+ "\n\n^\n\n\n\n\n\n6\nY\n)",
+ "\n\n&\n\n\n\n\n\n7\nU\nNum 7",
+ "\n\n*\n\n\n\n\n\n8\nI\nNum 8",
+ "\n\n(\n\n\n\n\n\n9\nO\nNum 9",
+ "\n\n)\n\n\n\n\n\n0\nP\nNum 0",
+ {
+ "c": "#ba0000",
+ "a": 7
+ },
+ "Bksp"
+ ],
+ [
+ {
+ "c": "#365eff"
+ },
+ "Tab",
+ {
+ "c": "#cccccc",
+ "a": 4
+ },
+ "\n\n\n~\n\n\n\n\nF1\nA\n`",
+ "\n\n\n|\n\n\n\n\nF2\nS\n\\",
+ "\n\n\n+\n\n\n\n\nF3\nD\n=",
+ {
+ "n": true
+ },
+ "\n\n\n_\n\n\n\n\nF4\nF\n-",
+ {
+ "a": 5
+ },
+ "F5\n<\n\n\n\n\nG",
+ "F6\n>\n\n\n\n\nH",
+ {
+ "n": true
+ },
+ "F7\nNum 4\n\n\n\n\nJ",
+ "F8\nNum 5\n\n\n\n\nK",
+ "F9\nNum 6\n\n\n\n\nL",
+ {
+ "a": 4
+ },
+ "\n\n\n\n\n\n\n:\nF10\n;\nNum .",
+ "\n\n\n\n\n\n\n\"\n\n'\nNumLk"
+ ],
+ [
+ {
+ "c": "#365eff",
+ "a": 7
+ },
+ "Shift",
+ {
+ "c": "#cccccc",
+ "a": 5
+ },
+ "F11\nNum /\n\n\n\n\nZ",
+ "F12\nNum *\n\n\n\n\nX",
+ "F13\nNum -\n\n\n\n\nC",
+ "F14\nNum +\n\n\n\n\nV",
+ "F15\n[\n\n\n\n\nB",
+ "F16\n]\n\n\n\n\nN",
+ "F17\nNum 1\n\n\n\n\nM",
+ {
+ "a": 4
+ },
+ "\n\n\n\n\n\n\n<\nF18\n,\nNum 2",
+ "\n\n\n\n\n\n\n>\nF19\n.\nNum 3",
+ {
+ "c": "#365eff",
+ "a": 5
+ },
+ "Vol+\nPgup\n\n\n\n\n&uarr;",
+ {
+ "c": "#cccccc",
+ "a": 4
+ },
+ "\n\n\n\n\n\n\n?\n\n/\nNum ="
+ ],
+ [
+ {
+ "c": "#365eff",
+ "a": 7
+ },
+ "Ctrl",
+ {
+ "a": 5
+ },
+ "\nOption\n\n\n\n\nAlt",
+ "\n⌘\n\n\n\n\nWin",
+ "Cut\nPaste\n\n\n\n\nCopy",
+ {
+ "c": "#3f8f00",
+ "a": 7
+ },
+ "Lower",
+ {
+ "c": "#cccccc",
+ "w": 2
+ },
+ "",
+ {
+ "c": "#3f8f00"
+ },
+ "Raise",
+ {
+ "c": "#365eff",
+ "a": 5
+ },
+ "\nNumE\n\n\n\n\nReturn",
+ "Play\nHome\n\n\n\n\n&larr;",
+ "Vol -\nPgdn\n\n\n\n\n&darr;",
+ "Next\nEnd\n\n\n\n\n&rarr;"
+ ]
+] \ No newline at end of file
diff --git a/keyboards/planck/keymaps/deft/keymap.c b/keyboards/planck/keymaps/deft/keymap.c
new file mode 100644
index 0000000000..25a0a9f446
--- /dev/null
+++ b/keyboards/planck/keymaps/deft/keymap.c
@@ -0,0 +1,138 @@
+/*
+ * The Deft layout for the Planck Keyboard
+ * Version 1.0
+ *
+ * A keyboard layout designed for efficiency in programming and transferability between ortholinear boards.
+ * Deft is currently supported on the following boards:
+ * Planck (12x4)
+ *
+ * The Deft keyboard layout was designed by Michael Speiser. You can find other Deft layouts at my Github:
+ * https://github.com/Speiserm
+ *
+ * For questions, issues, or feedback, feel free to email me at Speiserm@pm.me.
+ *
+ *
+ * Flashing:
+ *
+ * Rev 5 or earlier:
+ * make planck/revX:deft:dfu
+ *
+ * Rev 6:
+ * make planck/rev6:deft:dfu-util
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * Follow my cat:
+ * https://twitter.com/CatBucha
+ * https://www.instagram.com/buchathecat/
+ *
+ */
+
+#include QMK_KEYBOARD_H
+
+extern keymap_config_t keymap_config;
+
+enum planck_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+enum planck_keycodes {
+ QWERTY = SAFE_RANGE
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Tab | A | S | D | F | G | H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * |Shift | Z | X | C | V | B | N | M | , | . | Up | / |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt | GUI | Copy |Lower | Space |Raise |Enter | Left | Down |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_planck_grid(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_TAB, 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_UP, KC_SLSH,
+ KC_LCTL, KC_LALT, KC_LGUI, C(KC_C), LOWER, KC_SPC, KC_SPC, RAISE, KC_ENT, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | Del | Alt1 | Alt2 | Alt3 | Alt4 | ( | ) | Num7 | Num8 | Num9 | Num0 | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | ` | \ | = | - | < | > | Num4 | Num5 | Num6 | Num. | NumL |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | Num/ | Num* | Num- | Num+ | [ | ] | Num1 | Num2 | Num3 | Pgup | Num= |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | |Paste | | | | NumE | Home | Pgdn | End |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_planck_grid(
+ KC_DEL, A(KC_1), A(KC_2), A(KC_3), A(KC_4), S(KC_9), S(KC_0), KC_P7, KC_P8, KC_P9, KC_P0, _______,
+ _______, KC_GRV,KC_BSLS,KC_EQL, KC_MINS,S(KC_COMM),S(KC_DOT), KC_P4, KC_P5, KC_P6, KC_PDOT, KC_NLCK,
+ _______, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, KC_LBRC, KC_RBRC, KC_P1, KC_P2, KC_P3, KC_PGUP, KC_PEQL,
+ _______, _______, _______, C(KC_V), _______, _______, _______, _______, KC_PENT, KC_HOME,KC_PGDOWN, KC_END
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | Vol+ | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | Cut | | | | | Play | Vol- | Next |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_planck_grid(
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
+ _______, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_VOLU, _______,
+ _______, _______, _______, C(KC_X), _______, _______, _______, _______, _______, KC_MPLY, KC_VOLD, KC_MNXT
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * |Reset | | | | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_planck_grid(
+ RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+};
+
+uint32_t layer_state_set_user(uint32_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
diff --git a/keyboards/planck/keymaps/deft/readme.md b/keyboards/planck/keymaps/deft/readme.md
new file mode 100644
index 0000000000..715ab37965
--- /dev/null
+++ b/keyboards/planck/keymaps/deft/readme.md
@@ -0,0 +1,73 @@
+# The Deft Planck Layout
+
+![Deft layout for the Planck keyboard](https://i.imgur.com/VtUkAyh.png)
+
+The Deft Planck layout is designed for efficiency in programming and transferability between ortholinear boards. It features a fairly standard default layer with properly placed arrow keys, a lower layer with a usable numpad and symbols, and a raise layer for numbers, f-keys, and music controls. The code is also cut down to only what you need. The result is a very usable Planck that can easily replace fullsize layouts.
+
+The strangely placed Enter key is meant to be closer to your thumb and moving it allows for proper arrow key placement without disturbing our layout too much. I wanted to separate the enter key from the forward slash key anyway, as I was commonly pressing enter when I meant to type a question mark. You get used to it pretty fast.
+
+Follow my cat:
+
+https://twitter.com/CatBucha
+
+https://www.instagram.com/buchathecat/
+
+
+## Flashing:
+| Rev 5 or earlier: | Rev 6: |
+|-|-|
+| `make planck/revX:deft:dfu` | `make planck/rev6:deft:dfu-util` |
+
+## Layout:
+
+### QWERTY layer
+```
+,-----------------------------------------------------------------------------------.
+| Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| Tab | A | S | D | F | G | H | J | K | L | ; | ' |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+|Shift | Z | X | C | V | B | N | M | , | . | Up | / |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Ctrl | Alt | GUI | Copy |Lower | Space |Raise |Enter | Left | Down |Right |
+`-----------------------------------------------------------------------------------'
+```
+
+### Lower layer
+```
+,-----------------------------------------------------------------------------------.
+| Del | Alt1 | Alt2 | Alt3 | Alt4 | ( | ) | Num7 | Num8 | Num9 | Num0 | |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| | ` | \ | = | - | < | > | Num4 | Num5 | Num6 | Num. | NumL |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| | Num/ | Num* | Num- | Num+ | [ | ] | Num1 | Num2 | Num3 | Pgup | Num= |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| | | |Paste | | | | NumE | Home | Pgdn | End |
+`-----------------------------------------------------------------------------------'
+```
+
+### Raise layer
+```
+,-----------------------------------------------------------------------------------.
+| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | Vol+ | |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| | | | Cut | | | | | Play | Vol- | Next |
+`-----------------------------------------------------------------------------------'
+```
+
+### Adjust layer
+```
+,-----------------------------------------------------------------------------------.
+|Reset | | | | | | | | | | | |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| | | | | | | | | | | | |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| | | | | | | | | | | | |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| | | | | | | | | | | |
+`-----------------------------------------------------------------------------------'
+```
diff --git a/keyboards/planck/keymaps/deft/rules.mk b/keyboards/planck/keymaps/deft/rules.mk
new file mode 100644
index 0000000000..dcf16bef39
--- /dev/null
+++ b/keyboards/planck/keymaps/deft/rules.mk
@@ -0,0 +1 @@
+SRC += muse.c
diff --git a/keyboards/planck/keymaps/dvorak2space/config.h b/keyboards/planck/keymaps/dvorak2space/config.h
new file mode 100644
index 0000000000..0927fa016e
--- /dev/null
+++ b/keyboards/planck/keymaps/dvorak2space/config.h
@@ -0,0 +1,3 @@
+#pragma once
+#define TAPPING_TOGGLE 1
+#define PERMISSIVE_HOLD
diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c
new file mode 100644
index 0000000000..4b07759452
--- /dev/null
+++ b/keyboards/planck/keymaps/dvorak2space/keymap.c
@@ -0,0 +1,242 @@
+#include QMK_KEYBOARD_H
+#include "passwords.c" //Instead of extern just to cut down on compile time. Holds a single array.
+#define MOUSEL KC_BTN1
+#define MOUSER KC_BTN2
+#define CTRLL LCTL(KC_LEFT)
+#define CTRLR LCTL(KC_RGHT)
+#define CAD LCTL(LALT(KC_DEL))
+
+#define BASE_L 0
+#define SHFT_L 1
+#define MOD_L 2
+#define NAV_L 3
+#define AHK_L 4
+#define LOCK_L 5
+#define PASS_L 6
+
+static host_driver_t *host_driver = 0;
+
+enum {
+ HK_SLP = SAFE_RANGE,
+ HK_IF,
+ HK_ELSE,
+ HK_COSL
+};
+
+enum {
+ FB = 0,
+ LPN,
+ RPN,
+ BCK,
+ DSH
+};
+
+enum {
+ SINGLE_TAP = 1,
+ SINGLE_HOLD = 2,
+ DOUBLE_TAP = 3,
+ DOUBLE_HOLD = 4,
+ DOUBLE_SINGLE_TAP = 5, //Distinguishes between double tapping and typing, "tapping", for example. Not sure how accurate it is, and I have no need, so avoiding it at the moment.
+ TRIPLE_TAP = 6,
+ TRIPLE_HOLD = 7
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Base
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | ' | , | . | p | y | f | g | c | r | l | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Nav | a | o | e | u | i | d | h | t | n | s | Enter|
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shft | ; | q | j | k | x | b | m | w | v | z | Shft |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | RClk | LClk | Ctrl | Space | Modifier | GUI | VolD | VolU |Macros|
+ * `-----------------------------------------------------------------------------------'
+ */
+ [0] = LAYOUT_planck_2x2u(
+ KC_TAB, KC_QUOT,KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, TD(BCK),
+ MO(NAV_L),KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT,
+ KC_LSFT, KC_SCLN,KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
+ KC_ESC, MOUSER, MOUSEL, KC_LCTL, KC_SPC, MO(MOD_L), KC_LGUI, KC_VOLD, KC_VOLU, OSL(AHK_L)
+ ),
+/* Custom Shifts
+ * ,-----------------------------------------------------------------------------------.
+ * | | | ? | ! | | | | | | | | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [1] = LAYOUT_planck_2x2u(
+ KC_TRNS,KC_TRNS,KC_SLSH,KC_1, 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,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,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
+ ),
+/* Modifier
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | + | - | * | / \ | if | else | ( [ | ) ] | { | } | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | = | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Enter|
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | ` | < | > | & | | | _ | $ | @ | # | % | ^ | ~ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | Space | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [2] = LAYOUT_planck_2x2u(
+ KC_TRNS,KC_PLUS,TD(DSH),KC_ASTR,TD(FB), HK_IF, HK_ELSE,TD(LPN),TD(RPN),KC_LCBR,KC_RCBR,KC_TRNS,
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_GRV, KC_LT, KC_GT, KC_AMPR,KC_PIPE,KC_UNDS,KC_DLR, KC_AT, KC_HASH,KC_PERC,KC_CIRC,LSFT(KC_GRV),
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+//Nav
+ [3] = LAYOUT_planck_2x2u(
+ KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME,KC_UP, KC_END, KC_NO, KC_TRNS,
+ KC_TRNS,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, CTRLL, KC_LEFT,KC_DOWN,KC_RGHT, CTRLR, KC_TRNS,
+ KC_LSFT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+//AHK-Bindable Macros
+ [4] = LAYOUT_planck_2x2u(
+ KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24,
+ LCTL(KC_F13),LCTL(KC_F14),LCTL(KC_F15),LCTL(KC_F16),LCTL(KC_F17),LCTL(KC_F18),LCTL(KC_F19),LCTL(KC_F20),LCTL(KC_F21),LCTL(KC_F22),LCTL(KC_F23),LCTL(KC_F24),
+ LSFT(KC_F13),LSFT(KC_F14),LSFT(KC_F15),LSFT(KC_F16),LSFT(KC_F17),LSFT(KC_F18),LSFT(KC_F19),LSFT(KC_F20),LSFT(KC_F21),LSFT(KC_F22),LSFT(KC_F23),LSFT(KC_F24),
+ RESET, LALT(KC_F14),LALT(KC_F15),OSL(PASS_L), CAD, LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),HK_SLP, HK_COSL
+ ),
+//Locked Screen
+ [5] = LAYOUT_planck_2x2u(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, HK_SLP, KC_NO
+ ),
+//Passwords (by first letter of service name, at least better than just one)
+ [6] = LAYOUT_planck_2x2u(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_NO,
+ KC_NO, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_NO,
+ KC_NO, KC_NO, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_NO,
+ KC_NO, KC_NO, KC_NO, HK_COSL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) { //X_KEY doesn't support aliases
+ switch(keycode) {
+ //if shift pressed and not shift layer or released and other shift not pressed
+ //in separate things because MOD_BIT (probably?) isn't toggled until after this returns true and shift is actually toggled
+ case KC_LSFT: //if pressed and not shift layer or released and other shift not pressed
+ if((record->event.pressed && IS_LAYER_OFF(SHFT_L)) || (!record->event.pressed && !(get_mods() & MOD_BIT(KC_RSFT)))) { layer_invert(SHFT_L); }
+ break;
+ case KC_RSFT:
+ if((record->event.pressed && IS_LAYER_OFF(SHFT_L)) || (!record->event.pressed && !(get_mods() & MOD_BIT(KC_LSFT)))) { layer_invert(SHFT_L); }
+ break;
+ case KC_ENT: //won't repeat on hold and I can't find a solution other than hardcoding timers but I kinda prefer it anyway. Swaps enter and shift enter
+ if(record->event.pressed) {
+ (IS_LAYER_ON(SHFT_L)) //if shifted release correct shift, send, and press same shift, else send shift enter
+ ? (get_mods() & MOD_BIT(KC_LSFT))
+ ? SEND_STRING(SS_UP(X_LSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_LSHIFT))
+ : SEND_STRING(SS_UP(X_RSHIFT) SS_TAP(X_ENTER) SS_DOWN(X_RSHIFT))
+ : SEND_STRING(SS_LSFT(SS_TAP(X_ENTER)));
+ }
+ return false;
+ case HK_IF:
+ if(record->event.pressed) { SEND_STRING("if"); }
+ break;
+ case HK_ELSE:
+ if(record->event.pressed) { SEND_STRING("else"); }
+ break;
+ case HK_COSL:
+ clear_keyboard();
+ break;
+ case HK_SLP:
+ if(record->event.pressed) {
+ if(IS_LAYER_OFF(LOCK_L)) {
+ host_driver = host_get_driver();
+ SEND_STRING(SS_LALT(SS_TAP(X_F23)));
+ host_set_driver(0);
+ }
+ else {
+ host_set_driver(host_driver);
+ SEND_STRING(SS_LALT(SS_TAP(X_F24)));
+ }
+ return false;
+ }
+ layer_invert(LOCK_L);
+ if(IS_LAYER_ON(AHK_L))
+ layer_invert(AHK_L);
+ break;
+ default:
+ if(IS_LAYER_ON(PASS_L) && keycode <= KC_Z) {
+ SEND_STRING(passwords[keycode - KC_A]);
+ layer_invert(PASS_L);
+ return false;
+ }
+ }
+ return true;
+};
+
+//tapdance state evaluation
+int cur_dance(qk_tap_dance_state_t *state) {
+ int press = 0;
+ switch(state->count) {
+ case 1:
+ press = (state->interrupted || !state->pressed)
+ ? SINGLE_TAP
+ : SINGLE_HOLD;
+ break;
+ case 2:
+ press = DOUBLE_TAP;
+ break;
+ case 3:
+ press = TRIPLE_TAP;
+ }
+ return press;
+}
+
+void back_tap(qk_tap_dance_state_t *state, void *user_data) { tap_code(KC_BSPACE); }
+
+void back_finished(qk_tap_dance_state_t *state, void *user_data) { if(!(state->interrupted || !state->pressed)) tap_code16(LCTL(KC_BSPACE)); }
+
+void slash_finished(qk_tap_dance_state_t *state, void *user_data) {
+ int td_state = cur_dance(state);
+ switch(td_state) {
+ case SINGLE_TAP:
+ clear_mods();
+ clear_weak_mods();
+ tap_code(KC_SLSH);
+ break;
+ case DOUBLE_TAP:
+ tap_code(KC_NUBS);
+ }
+}
+
+void dash_finished(qk_tap_dance_state_t *state, void *user_data) {
+ int td_state = cur_dance(state);
+ switch(td_state) {
+ case SINGLE_TAP:
+ tap_code(KC_PMNS);
+ break;
+ case SINGLE_HOLD:
+ register_mods(MOD_BIT(KC_LALT));
+ tap_code(KC_KP_0);
+ tap_code(KC_KP_1);
+ tap_code(KC_KP_5);
+ tap_code(KC_KP_1);
+ unregister_mods(MOD_BIT(KC_LALT));
+ break;
+ case DOUBLE_TAP:
+ tap_code(KC_PMNS);
+ tap_code(KC_PMNS);
+ }
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [LPN] = ACTION_TAP_DANCE_DOUBLE(KC_LPRN, KC_LBRC),
+ [RPN] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RBRC),
+ [FB] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, slash_finished, NULL),
+ [BCK] = ACTION_TAP_DANCE_FN_ADVANCED(back_tap, back_finished, NULL), //each tap, on finished, and reset. Normally register_code on press unregister on reset so keys can be held down.
+ [DSH] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dash_finished, NULL)
+};
diff --git a/keyboards/planck/keymaps/dvorak2space/passwords.c b/keyboards/planck/keymaps/dvorak2space/passwords.c
new file mode 100644
index 0000000000..161c564dd5
--- /dev/null
+++ b/keyboards/planck/keymaps/dvorak2space/passwords.c
@@ -0,0 +1,28 @@
+char *passwords[26] = {
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+};
diff --git a/keyboards/planck/keymaps/dvorak2space/readme.md b/keyboards/planck/keymaps/dvorak2space/readme.md
new file mode 100644
index 0000000000..1844a57f37
--- /dev/null
+++ b/keyboards/planck/keymaps/dvorak2space/readme.md
@@ -0,0 +1,5 @@
+![Keyboard Layout](https://i.imgur.com/9jYjllM.png)
+
+# IsaacElenbaas's Planck Layout
+
+Split spacebar, Dvorak. Bottom right button leads to layer with lots of things to be mapped in AutoHotkey. The ones I use (of which the best are sleep, which turns off the monitors and locks all inputs, rebinding keyboard-only mouse inputs, and redirecting media keys to a specific player) can be found [here.](https://github.com/IsaacElenbaas/personal_scripts/blob/master/Keyboard.ahk) Capslock goes to a right-hand navigation layer, there is a custom layer when holding shift, holding dash gives an em dash, holding backspace deletes a word, and I have a obfuscation-based password system you probably shouldn't use, but the rest is pretty standard.
diff --git a/keyboards/planck/keymaps/dvorak2space/rules.mk b/keyboards/planck/keymaps/dvorak2space/rules.mk
new file mode 100644
index 0000000000..59f9f1dff2
--- /dev/null
+++ b/keyboards/planck/keymaps/dvorak2space/rules.mk
@@ -0,0 +1,20 @@
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work. Can make windows not recognize device.
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = no # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
+API_SYSEX_ENABLE = no
+TAP_DANCE_ENABLE = yes
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+LAYOUTS_HAS_RGB = no
diff --git a/keyboards/planck/keymaps/spacebarracecar/keymap.c b/keyboards/planck/keymaps/spacebarracecar/keymap.c
index 7ace789034..71f44c996e 100644
--- a/keyboards/planck/keymaps/spacebarracecar/keymap.c
+++ b/keyboards/planck/keymaps/spacebarracecar/keymap.c
@@ -108,10 +108,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_NAV] = LAYOUT_ortho_4x12(
- ALTF4, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL,
+ _______, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL,
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, EMOJI, KC_ENT,
_______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, MU_ON, XXXXXXX, XXXXXXX, XXXXXXX, _______,
- RESET, CU_ESCT, _______, _______, _______, KC_SPC, CTLENT, _______, _______, _______, _______, CU_GAME
+ RESET, CU_ESCT, ALTF4, _______, _______, KC_SPC, CTLENT, _______, _______, _______, _______, CU_GAME
)
};
diff --git a/keyboards/planck/keymaps/tylerwince/config.h b/keyboards/planck/keymaps/tylerwince/config.h
new file mode 100644
index 0000000000..24adad94f3
--- /dev/null
+++ b/keyboards/planck/keymaps/tylerwince/config.h
@@ -0,0 +1,18 @@
+#pragma once
+
+#ifdef AUDIO_ENABLE
+#define STARTUP_SONG SONG(PLANCK_SOUND)
+#endif
+
+#define MIDI_BASIC
+
+#define ENCODER_RESOLUTION 4
+
+/*
+ Set any config.h overrides for your specific keymap here.
+ See config.h options at https://docs.qmk.fm/#/config_options?id=the-configh-file
+*/
+#define TAPPING_FORCE_HOLD
+#define IGNORE_MOD_TAP_INTERRUPT
+
+#define EECONFIG_RGB_MATRIX (uint32_t *)16
diff --git a/keyboards/planck/keymaps/tylerwince/keymap.c b/keyboards/planck/keymaps/tylerwince/keymap.c
new file mode 100644
index 0000000000..30412e9db5
--- /dev/null
+++ b/keyboards/planck/keymaps/tylerwince/keymap.c
@@ -0,0 +1,294 @@
+#include QMK_KEYBOARD_H
+#include "muse.h"
+
+enum planck_keycodes {
+ RGB_SLD = SAFE_RANGE,
+ TOGGLE_LAYER_COLOR,
+};
+
+enum planck_layers {
+ _BASE,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+ _LAYER4,
+};
+
+//Tap Dance Declarations
+enum {
+ TD_SEMI_COLON,
+};
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_SEMI_COLON] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_COLN),
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_planck_grid(
+ /* _BASE
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | ' | , | . | P | Y | F | G | C | R | L | / |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |CtlEsc| A | O | E | U | I | D | H | T | N | S | Bksp |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | ; | Q | J | K | X | B | M | W | V | Z |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | Ctrl | Alt | GUI |LOWER | Shift/Space | RAISE| | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ KC_TAB, KC_QUOTE, KC_COMMA, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLASH,
+ LCTL_T(KC_ESCAPE), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_BSPACE,
+ _______, TD(TD_SEMI_COLON), KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENTER,
+ _______, KC_LCTRL, KC_LALT, KC_LGUI, LOWER, LSFT_T(KC_SPACE), KC_NO, RAISE, _______, _______, _______, _______
+ ),
+
+ [_LOWER] = LAYOUT_planck_grid(
+ /* _LOWER
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | \ |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | _ | + | { | } |Delete|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | Ctrl | Alt | GUI |LOWER | Shift/Space | RAISE| | [ | ] | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLASH,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE,
+ _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_DELETE,
+ _______, KC_LCTRL, KC_LALT, KC_LGUI, _______, _______, KC_NO, _______, _______, KC_LBRACKET, KC_RBRACKET, _______
+ ),
+
+ [_RAISE] = LAYOUT_planck_grid(
+ /* _RAISE
+ * ,-----------------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | | | | |RIGHT | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | F7 | F8 | F9 | F10 | F11 | F12 | | LEFT | | | |Delete|
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | DOWN | UP | | | - | = | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |THINGS|1PASS | | |LOWER | Shift/Space | RAISE| | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, _______, _______, KC_RIGHT, _______,
+ KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_LEFT, _______, _______, _______, KC_DELETE,
+ _______, _______, _______, KC_DOWN, KC_UP, _______, _______, KC_MINUS, KC_EQUAL, _______, _______, _______,
+ LALT(KC_SPACE), LGUI(KC_BSLASH), _______, _______, _______, _______, KC_NO, _______, _______, _______, _______, _______
+ ),
+
+ [_ADJUST] = LAYOUT_planck_grid(
+ /* _LOWER
+ * ,-----------------------------------------------------------------------------------.
+ * |Reset | | | | |WIN-TL|WIN-TR| | | |WIN-R | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | |WIN-BL|WIN-BR|WIN-L | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | |WIN-B |WIN-T | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | BASE |LAYER4| | |LOWER | Shift/Space | RAISE|VOL-DN| BR-DN|BR-UP |VOL-UP|
+ * `-----------------------------------------------------------------------------------'
+ */
+
+ RESET, _______, _______, _______, _______, LALT(LCTL(KC_7)), LALT(LCTL(KC_8)), _______, _______, _______, LALT(LCTL(KC_L)), _______,
+ _______, _______, _______, _______, _______, LALT(LCTL(KC_U)), LALT(LCTL(KC_I)), LALT(LCTL(KC_H)), _______, _______, _______, _______,
+ _______, _______, _______, LALT(LCTL(KC_J)), LALT(LCTL(KC_K)), _______, _______, _______, _______, _______, _______, LALT(LCTL(KC_ENTER)),
+ TO(0), TO(4), _______, _______, _______, _______, KC_NO, _______, KC_AUDIO_VOL_DOWN, KC_F14, KC_F15, KC_AUDIO_VOL_UP
+ ),
+
+ [_LAYER4] = LAYOUT_planck_grid(
+ /* _LOWER
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | ' |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |CtlEsc| A | S | D | F | G | H | J | K | L | ; | Bksp |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | Ctrl | Alt | GUI |LOWER | Shift/Space | RAISE| | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_QUOTE,
+ LCTL_T(KC_ESCAPE), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_BSPACE,
+ _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_ENTER,
+ _______, KC_LCTL, KC_LALT, KC_LGUI, LOWER, LSFT_T(KC_SPACE), KC_NO, RAISE, _______, _______, _______, _______
+ ),
+
+};
+
+extern bool g_suspend_state;
+extern rgb_config_t rgb_matrix_config;
+bool disable_layer_color = 0;
+
+void keyboard_post_init_user(void) {
+ rgb_matrix_enable();
+}
+
+const uint8_t PROGMEM ledmap[][DRIVER_LED_TOTAL][3] = {
+ [0] = { {32,255,234}, {32,255,234}, {12,225,241}, {12,225,241}, {0,204,255}, {0,204,255}, {169,120,255}, {169,120,255}, {169,120,255}, {146,224,255}, {146,224,255}, {146,224,255},
+ {32,255,234}, {32,255,234}, {12,225,241}, {12,225,241}, {0,204,255}, {0,204,255}, {169,120,255}, {169,120,255}, {169,120,255}, {146,224,255}, {146,224,255}, {146,224,255},
+ {32,255,234}, {32,255,234}, {12,225,241}, {12,225,241}, {0,204,255}, {0,204,255}, {169,120,255}, {169,120,255}, {169,120,255}, {146,224,255}, {146,224,255}, {146,224,255},
+ {32,255,234}, {32,255,234}, {12,225,241}, {12,225,241}, {0,204,255}, {0,0,0}, {169,120,255}, {169,120,255}, {146,224,255}, {146,224,255}, {146,224,255} },
+
+ [1] = { {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255},
+ {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255},
+ {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255},
+ {0,0,0}, {0,204,255}, {0,204,255}, {0,204,255}, {0,204,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,204,255}, {0,204,255}, {0,0,0} },
+
+ [2] = { {169,120,255}, {169,120,255}, {169,120,255}, {169,120,255}, {169,120,255}, {169,120,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {169,120,255}, {0,0,0},
+ {169,120,255}, {169,120,255}, {169,120,255}, {169,120,255}, {169,120,255}, {169,120,255}, {0,0,0}, {169,120,255}, {0,0,0}, {0,0,0}, {0,0,0}, {169,120,255},
+ {0,0,0}, {0,0,0}, {0,0,0}, {169,120,255}, {169,120,255}, {0,0,0}, {0,0,0}, {169,120,255}, {169,120,255}, {0,0,0}, {0,0,0}, {0,0,0},
+ {169,120,255}, {169,120,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {169,120,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} },
+
+ [4] = { {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255}, {105,255,255} },
+
+};
+
+void set_layer_color(int layer) {
+ for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
+ HSV hsv = {
+ .h = pgm_read_byte(&ledmap[layer][i][0]),
+ .s = pgm_read_byte(&ledmap[layer][i][1]),
+ .v = pgm_read_byte(&ledmap[layer][i][2]),
+ };
+ if (!hsv.h && !hsv.s && !hsv.v) {
+ rgb_matrix_set_color( i, 0, 0, 0 );
+ } else {
+ RGB rgb = hsv_to_rgb( hsv );
+ rgb_matrix_set_color( i, rgb.r, rgb.g, rgb.b );
+ }
+ }
+}
+
+void rgb_matrix_indicators_user(void) {
+ if (g_suspend_state || disable_layer_color) { return; }
+ switch (biton32(layer_state)) {
+ case 0:
+ set_layer_color(0);
+ break;
+ case 1:
+ set_layer_color(1);
+ break;
+ case 2:
+ set_layer_color(2);
+ break;
+ case 4:
+ set_layer_color(4);
+ break;
+ }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case RGB_SLD:
+ if (record->event.pressed) {
+ rgblight_mode(1);
+ }
+ return false;
+ case RGB_TOG:
+ if (record->event.pressed) {
+ if (rgb_matrix_config.val) {
+ rgb_matrix_sethsv(rgb_matrix_config.hue, rgb_matrix_config.sat, 0);
+ } else {
+ rgb_matrix_sethsv(rgb_matrix_config.hue, rgb_matrix_config.sat, 255);
+ }
+ }
+ return false;
+ case TOGGLE_LAYER_COLOR:
+ if (record->event.pressed) {
+ disable_layer_color ^= 1;
+ }
+ return false;
+ }
+ 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;
+
+void encoder_update(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
+ }
+ }
+}
+
+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;
+ }
+#endif
+}
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ case RAISE:
+ case LOWER:
+ return false;
+ default:
+ return true;
+ }
+}
+uint32_t layer_state_set_user(uint32_t state) {
+ palClearPad(GPIOB, 8);
+ palClearPad(GPIOB, 9);
+ uint8_t layer = biton32(state);
+ switch (layer) {
+ case _LOWER:
+ palSetPad(GPIOB, 9);
+ break;
+ case _RAISE:
+ palSetPad(GPIOB, 8);
+ break;
+ case _ADJUST:
+ palSetPad(GPIOB, 9);
+ palSetPad(GPIOB, 8);
+ break;
+ default:
+ break;
+ }
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
diff --git a/keyboards/planck/keymaps/tylerwince/rules.mk b/keyboards/planck/keymaps/tylerwince/rules.mk
new file mode 100644
index 0000000000..a4f1a0b84f
--- /dev/null
+++ b/keyboards/planck/keymaps/tylerwince/rules.mk
@@ -0,0 +1,7 @@
+SRC += muse.c
+# Set any rules.mk overrides for your specific keymap here.
+# See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file
+LINK_TIME_OPTIMIZATION_ENABLE = yes
+COMMAND_ENABLE = no
+MOUSEKEY_ENABLE = no
+TAP_DANCE_ENABLE=yes
diff --git a/keyboards/planck/light/info.json b/keyboards/planck/light/info.json
index 34566f85d3..fa8f4c43be 100644
--- a/keyboards/planck/light/info.json
+++ b/keyboards/planck/light/info.json
@@ -1,4 +1,115 @@
{
"keyboard_name": "Planck Light",
- "keyboard_folder": "planck/light"
+ "keyboard_folder": "planck/light",
+ "url": "https://olkb.com/planck",
+ "maintainer": "jackhumbert",
+ "width": 12,
+ "height": 4,
+ "layouts": {
+ "LAYOUT_planck_1x2uC": {
+ "key_count": 47,
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 0, "y": 1 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 0, "y": 2 },
+ { "x": 1, "y": 2 },
+ { "x": 2, "y": 2 },
+ { "x": 3, "y": 2 },
+ { "x": 4, "y": 2 },
+ { "x": 5, "y": 2 },
+ { "x": 6, "y": 2 },
+ { "x": 7, "y": 2 },
+ { "x": 8, "y": 2 },
+ { "x": 9, "y": 2 },
+ { "x": 10, "y": 2 },
+ { "x": 11, "y": 2 },
+ { "x": 0, "y": 3 },
+ { "x": 1, "y": 3 },
+ { "x": 2, "y": 3 },
+ { "x": 3, "y": 3 },
+ { "x": 4, "y": 3 },
+ { "x": 5, "y": 3, "w": 2 },
+ { "x": 7, "y": 3 },
+ { "x": 8, "y": 3 },
+ { "x": 9, "y": 3 },
+ { "x": 10, "y": 3 },
+ { "x": 11, "y": 3 }
+ ]
+ },
+ "LAYOUT_ortho_4x12": {
+ "key_count": 48,
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 0, "y": 1 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 0, "y": 2 },
+ { "x": 1, "y": 2 },
+ { "x": 2, "y": 2 },
+ { "x": 3, "y": 2 },
+ { "x": 4, "y": 2 },
+ { "x": 5, "y": 2 },
+ { "x": 6, "y": 2 },
+ { "x": 7, "y": 2 },
+ { "x": 8, "y": 2 },
+ { "x": 9, "y": 2 },
+ { "x": 10, "y": 2 },
+ { "x": 11, "y": 2 },
+ { "x": 0, "y": 3 },
+ { "x": 1, "y": 3 },
+ { "x": 2, "y": 3 },
+ { "x": 3, "y": 3 },
+ { "x": 4, "y": 3 },
+ { "x": 5, "y": 3 },
+ { "x": 6, "y": 3 },
+ { "x": 7, "y": 3 },
+ { "x": 8, "y": 3 },
+ { "x": 9, "y": 3 },
+ { "x": 10, "y": 3 },
+ { "x": 11, "y": 3 }
+ ]
+ }
+ }
}
diff --git a/keyboards/planck/light/light.h b/keyboards/planck/light/light.h
index a395f30e88..2cf46c2a27 100644
--- a/keyboards/planck/light/light.h
+++ b/keyboards/planck/light/light.h
@@ -20,4 +20,50 @@
#include "planck.h"
#include "rgb_matrix.h"
+#define LAYOUT_planck_1x2uC( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \
+}
+
+#define LAYOUT_ortho_4x12( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
+}
+
+// Used to create a keymap using only KC_ prefixed keys
+#define LAYOUT_kc( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
+) \
+LAYOUT_ortho_4x12( \
+ KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b, \
+ KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \
+ KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b, \
+ KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \
+)
+
+#define KEYMAP LAYOUT_ortho_4x12
+#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
+#define LAYOUT_planck_grid LAYOUT_ortho_4x12
+#define LAYOUT_kc_ortho_4x12 LAYOUT_kc
+#define KC_KEYMAP LAYOUT_kc
+
#endif \ No newline at end of file
diff --git a/keyboards/planck/light/readme.md b/keyboards/planck/light/readme.md
new file mode 100644
index 0000000000..f372e1fcc2
--- /dev/null
+++ b/keyboards/planck/light/readme.md
@@ -0,0 +1,15 @@
+# Planck Light
+
+![Planck Light](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/planck/light/planck_light.jpg)
+
+A Planck variant sold by Massdrop. Designed for Kailh PG1350 "Choc" switches, the Planck Light Features per-key RGB backlighting and a dual-channel speaker. [More info on qmk.fm](http://qmk.fm/planck/)
+
+Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
+Hardware Supported: Planck Light
+Hardware Availability: [Massdrop](https://www.massdrop.com/buy/massdrop-x-olkb-planck-light-mechanical-keyboard?mode=guest_open)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make planck/light:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/planck/planck.h b/keyboards/planck/planck.h
index 09ac0c6077..1beafa7764 100644
--- a/keyboards/planck/planck.h
+++ b/keyboards/planck/planck.h
@@ -5,147 +5,22 @@
#define encoder_update(clockwise) encoder_update_user(uint8_t index, clockwise)
-#ifdef KEYBOARD_planck_ez
+#if defined(KEYBOARD_planck_ez)
#include "ez.h"
-#endif
-
-#ifdef __AVR__ // Planck revs. 1-5
-
- #define LAYOUT_planck_1x2uC( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
- ) \
- { \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
- { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \
- }
-
- #define LAYOUT_ortho_4x12( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
- ) \
- { \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
- { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
- { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
- }
-
-#elif KEYBOARD_planck_rev6
-
- #define LAYOUT_planck_1x2uC( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a, k3b \
- ) \
- { \
- { k00, k01, k02, k03, k04, k05 }, \
- { k10, k11, k12, k13, k14, k15 }, \
- { k20, k21, k22, k23, k24, k25 }, \
- { k30, k31, k32, k39, k3a, k3b }, \
- { k06, k07, k08, k09, k0a, k0b }, \
- { k16, k17, k18, k19, k1a, k1b }, \
- { k26, k27, k28, k29, k2a, k2b }, \
- { k36, k37, k38, k33, k34, KC_NO } \
- }
-
- #define LAYOUT_planck_1x2uR( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
- ) \
- { \
- { k00, k01, k02, k03, k04, k05 }, \
- { k10, k11, k12, k13, k14, k15 }, \
- { k20, k21, k22, k23, k24, k25 }, \
- { k30, k31, k32, k39, k3a, k3b }, \
- { k06, k07, k08, k09, k0a, k0b }, \
- { k16, k17, k18, k19, k1a, k1b }, \
- { k26, k27, k28, k29, k2a, k2b }, \
- { KC_NO, k37, k38, k33, k34, k35 } \
- }
-
- #define LAYOUT_planck_1x2uL( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k35, k36, k37, k38, k39, k3a, k3b \
- ) \
- { \
- { k00, k01, k02, k03, k04, k05 }, \
- { k10, k11, k12, k13, k14, k15 }, \
- { k20, k21, k22, k23, k24, k25 }, \
- { k30, k31, k32, k39, k3a, k3b }, \
- { k06, k07, k08, k09, k0a, k0b }, \
- { k16, k17, k18, k19, k1a, k1b }, \
- { k26, k27, k28, k29, k2a, k2b }, \
- { k36, k37, k38, k33, KC_NO, k35 } \
- }
-
- #define LAYOUT_planck_2x2u( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k35, k37, k38, k39, k3a, k3b \
- ) \
- { \
- { k00, k01, k02, k03, k04, k05 }, \
- { k10, k11, k12, k13, k14, k15 }, \
- { k20, k21, k22, k23, k24, k25 }, \
- { k30, k31, k32, k39, k3a, k3b }, \
- { k06, k07, k08, k09, k0a, k0b }, \
- { k16, k17, k18, k19, k1a, k1b }, \
- { k26, k27, k28, k29, k2a, k2b }, \
- { KC_NO, k37, k38, k33, KC_NO, k35 } \
- }
-
- #define LAYOUT_ortho_4x12( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
- ) \
- { \
- { k00, k01, k02, k03, k04, k05 }, \
- { k10, k11, k12, k13, k14, k15 }, \
- { k20, k21, k22, k23, k24, k25 }, \
- { k30, k31, k32, k39, k3a, k3b }, \
- { k06, k07, k08, k09, k0a, k0b }, \
- { k16, k17, k18, k19, k1a, k1b }, \
- { k26, k27, k28, k29, k2a, k2b }, \
- { k36, k37, k38, k33, k34, k35 } \
- }
-
-#endif
-
-// all Planck keyboards
-
-// Used to create a keymap using only KC_ prefixed keys
-#define LAYOUT_kc( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
-) \
-LAYOUT_ortho_4x12( \
- KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b, \
- KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \
- KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b, \
- KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \
-)
-
-#define KEYMAP LAYOUT_ortho_4x12
-#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
-#define LAYOUT_planck_grid LAYOUT_ortho_4x12
-#define LAYOUT_kc_ortho_4x12 LAYOUT_kc
-#define KC_KEYMAP LAYOUT_kc
+#elif defined(KEYBOARD_planck_light)
+ #include "light.h"
+#elif defined(KEYBOARD_planck_rev1)
+ #include "rev1.h"
+#elif defined(KEYBOARD_planck_rev2)
+ #include "rev2.h"
+#elif defined(KEYBOARD_planck_rev3)
+ #include "rev3.h"
+#elif defined(KEYBOARD_planck_rev4)
+ #include "rev4.h"
+#elif defined(KEYBOARD_planck_rev5)
+ #include "rev5.h"
+#elif defined(KEYBOARD_planck_rev6)
+ #include "rev6.h"
+#endif // Planck revisions
#endif
diff --git a/keyboards/planck/readme.md b/keyboards/planck/readme.md
index 94b256c745..0d836563c4 100644
--- a/keyboards/planck/readme.md
+++ b/keyboards/planck/readme.md
@@ -6,7 +6,7 @@ Planck
A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. [More info on qmk.fm](http://qmk.fm/planck/)
Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
-Hardware Supported: Planck PCB rev1, rev2, rev3, rev4, rev5, rev6; Planck Light
+Hardware Supported: Planck PCB rev1, rev2, rev3, rev4, rev5, rev6; Planck Light, Planck EZ
Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/planck/rev1/info.json b/keyboards/planck/rev1/info.json
new file mode 100644
index 0000000000..c64cdbfde8
--- /dev/null
+++ b/keyboards/planck/rev1/info.json
@@ -0,0 +1,115 @@
+{
+ "keyboard_name": "Planck rev 1",
+ "keyboard_folder": "planck/rev1",
+ "url": "https://olkb.com/planck",
+ "maintainer": "jackhumbert",
+ "width": 12,
+ "height": 4,
+ "layouts": {
+ "LAYOUT_planck_1x2uC": {
+ "key_count": 47,
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 0, "y": 1 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 0, "y": 2 },
+ { "x": 1, "y": 2 },
+ { "x": 2, "y": 2 },
+ { "x": 3, "y": 2 },
+ { "x": 4, "y": 2 },
+ { "x": 5, "y": 2 },
+ { "x": 6, "y": 2 },
+ { "x": 7, "y": 2 },
+ { "x": 8, "y": 2 },
+ { "x": 9, "y": 2 },
+ { "x": 10, "y": 2 },
+ { "x": 11, "y": 2 },
+ { "x": 0, "y": 3 },
+ { "x": 1, "y": 3 },
+ { "x": 2, "y": 3 },
+ { "x": 3, "y": 3 },
+ { "x": 4, "y": 3 },
+ { "x": 5, "y": 3, "w": 2 },
+ { "x": 7, "y": 3 },
+ { "x": 8, "y": 3 },
+ { "x": 9, "y": 3 },
+ { "x": 10, "y": 3 },
+ { "x": 11, "y": 3 }
+ ]
+ },
+ "LAYOUT_ortho_4x12": {
+ "key_count": 48,
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 0, "y": 1 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 0, "y": 2 },
+ { "x": 1, "y": 2 },
+ { "x": 2, "y": 2 },
+ { "x": 3, "y": 2 },
+ { "x": 4, "y": 2 },
+ { "x": 5, "y": 2 },
+ { "x": 6, "y": 2 },
+ { "x": 7, "y": 2 },
+ { "x": 8, "y": 2 },
+ { "x": 9, "y": 2 },
+ { "x": 10, "y": 2 },
+ { "x": 11, "y": 2 },
+ { "x": 0, "y": 3 },
+ { "x": 1, "y": 3 },
+ { "x": 2, "y": 3 },
+ { "x": 3, "y": 3 },
+ { "x": 4, "y": 3 },
+ { "x": 5, "y": 3 },
+ { "x": 6, "y": 3 },
+ { "x": 7, "y": 3 },
+ { "x": 8, "y": 3 },
+ { "x": 9, "y": 3 },
+ { "x": 10, "y": 3 },
+ { "x": 11, "y": 3 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/planck/rev1/readme.md b/keyboards/planck/rev1/readme.md
new file mode 100644
index 0000000000..b5561fc1a7
--- /dev/null
+++ b/keyboards/planck/rev1/readme.md
@@ -0,0 +1,13 @@
+# Planck
+
+A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. [More info on qmk.fm](http://qmk.fm/planck/)
+
+Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
+Hardware Supported: Planck PCB rev1
+Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make planck/rev1:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/planck/rev1/rev1.h b/keyboards/planck/rev1/rev1.h
new file mode 100644
index 0000000000..f81b36b316
--- /dev/null
+++ b/keyboards/planck/rev1/rev1.h
@@ -0,0 +1,49 @@
+#pragma once
+
+#include "planck.h"
+
+#define LAYOUT_planck_1x2uC( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \
+}
+
+#define LAYOUT_ortho_4x12( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
+}
+
+// Used to create a keymap using only KC_ prefixed keys
+#define LAYOUT_kc( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
+) \
+LAYOUT_ortho_4x12( \
+ KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b, \
+ KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \
+ KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b, \
+ KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \
+)
+
+#define KEYMAP LAYOUT_ortho_4x12
+#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
+#define LAYOUT_planck_grid LAYOUT_ortho_4x12
+#define LAYOUT_kc_ortho_4x12 LAYOUT_kc
+#define KC_KEYMAP LAYOUT_kc
diff --git a/keyboards/planck/rev2/info.json b/keyboards/planck/rev2/info.json
new file mode 100644
index 0000000000..68f89f601b
--- /dev/null
+++ b/keyboards/planck/rev2/info.json
@@ -0,0 +1,115 @@
+{
+ "keyboard_name": "Planck rev 2",
+ "keyboard_folder": "planck/rev2",
+ "url": "https://olkb.com/planck",
+ "maintainer": "jackhumbert",
+ "width": 12,
+ "height": 4,
+ "layouts": {
+ "LAYOUT_planck_1x2uC": {
+ "key_count": 47,
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 0, "y": 1 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 0, "y": 2 },
+ { "x": 1, "y": 2 },
+ { "x": 2, "y": 2 },
+ { "x": 3, "y": 2 },
+ { "x": 4, "y": 2 },
+ { "x": 5, "y": 2 },
+ { "x": 6, "y": 2 },
+ { "x": 7, "y": 2 },
+ { "x": 8, "y": 2 },
+ { "x": 9, "y": 2 },
+ { "x": 10, "y": 2 },
+ { "x": 11, "y": 2 },
+ { "x": 0, "y": 3 },
+ { "x": 1, "y": 3 },
+ { "x": 2, "y": 3 },
+ { "x": 3, "y": 3 },
+ { "x": 4, "y": 3 },
+ { "x": 5, "y": 3, "w": 2 },
+ { "x": 7, "y": 3 },
+ { "x": 8, "y": 3 },
+ { "x": 9, "y": 3 },
+ { "x": 10, "y": 3 },
+ { "x": 11, "y": 3 }
+ ]
+ },
+ "LAYOUT_ortho_4x12": {
+ "key_count": 48,
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 0, "y": 1 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 0, "y": 2 },
+ { "x": 1, "y": 2 },
+ { "x": 2, "y": 2 },
+ { "x": 3, "y": 2 },
+ { "x": 4, "y": 2 },
+ { "x": 5, "y": 2 },
+ { "x": 6, "y": 2 },
+ { "x": 7, "y": 2 },
+ { "x": 8, "y": 2 },
+ { "x": 9, "y": 2 },
+ { "x": 10, "y": 2 },
+ { "x": 11, "y": 2 },
+ { "x": 0, "y": 3 },
+ { "x": 1, "y": 3 },
+ { "x": 2, "y": 3 },
+ { "x": 3, "y": 3 },
+ { "x": 4, "y": 3 },
+ { "x": 5, "y": 3 },
+ { "x": 6, "y": 3 },
+ { "x": 7, "y": 3 },
+ { "x": 8, "y": 3 },
+ { "x": 9, "y": 3 },
+ { "x": 10, "y": 3 },
+ { "x": 11, "y": 3 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/planck/rev2/readme.md b/keyboards/planck/rev2/readme.md
new file mode 100644
index 0000000000..16fa8b7fd2
--- /dev/null
+++ b/keyboards/planck/rev2/readme.md
@@ -0,0 +1,13 @@
+# Planck
+
+A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. [More info on qmk.fm](http://qmk.fm/planck/)
+
+Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
+Hardware Supported: Planck PCB rev2
+Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make planck/rev2:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/planck/rev2/rev2.h b/keyboards/planck/rev2/rev2.h
new file mode 100644
index 0000000000..f81b36b316
--- /dev/null
+++ b/keyboards/planck/rev2/rev2.h
@@ -0,0 +1,49 @@
+#pragma once
+
+#include "planck.h"
+
+#define LAYOUT_planck_1x2uC( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \
+}
+
+#define LAYOUT_ortho_4x12( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
+}
+
+// Used to create a keymap using only KC_ prefixed keys
+#define LAYOUT_kc( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
+) \
+LAYOUT_ortho_4x12( \
+ KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b, \
+ KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \
+ KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b, \
+ KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \
+)
+
+#define KEYMAP LAYOUT_ortho_4x12
+#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
+#define LAYOUT_planck_grid LAYOUT_ortho_4x12
+#define LAYOUT_kc_ortho_4x12 LAYOUT_kc
+#define KC_KEYMAP LAYOUT_kc
diff --git a/keyboards/planck/rev3/info.json b/keyboards/planck/rev3/info.json
new file mode 100644
index 0000000000..65e59adc83
--- /dev/null
+++ b/keyboards/planck/rev3/info.json
@@ -0,0 +1,115 @@
+{
+ "keyboard_name": "Planck rev 3",
+ "keyboard_folder": "planck/rev3",
+ "url": "https://olkb.com/planck",
+ "maintainer": "jackhumbert",
+ "width": 12,
+ "height": 4,
+ "layouts": {
+ "LAYOUT_planck_1x2uC": {
+ "key_count": 47,
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 0, "y": 1 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 0, "y": 2 },
+ { "x": 1, "y": 2 },
+ { "x": 2, "y": 2 },
+ { "x": 3, "y": 2 },
+ { "x": 4, "y": 2 },
+ { "x": 5, "y": 2 },
+ { "x": 6, "y": 2 },
+ { "x": 7, "y": 2 },
+ { "x": 8, "y": 2 },
+ { "x": 9, "y": 2 },
+ { "x": 10, "y": 2 },
+ { "x": 11, "y": 2 },
+ { "x": 0, "y": 3 },
+ { "x": 1, "y": 3 },
+ { "x": 2, "y": 3 },
+ { "x": 3, "y": 3 },
+ { "x": 4, "y": 3 },
+ { "x": 5, "y": 3, "w": 2 },
+ { "x": 7, "y": 3 },
+ { "x": 8, "y": 3 },
+ { "x": 9, "y": 3 },
+ { "x": 10, "y": 3 },
+ { "x": 11, "y": 3 }
+ ]
+ },
+ "LAYOUT_ortho_4x12": {
+ "key_count": 48,
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 0, "y": 1 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 0, "y": 2 },
+ { "x": 1, "y": 2 },
+ { "x": 2, "y": 2 },
+ { "x": 3, "y": 2 },
+ { "x": 4, "y": 2 },
+ { "x": 5, "y": 2 },
+ { "x": 6, "y": 2 },
+ { "x": 7, "y": 2 },
+ { "x": 8, "y": 2 },
+ { "x": 9, "y": 2 },
+ { "x": 10, "y": 2 },
+ { "x": 11, "y": 2 },
+ { "x": 0, "y": 3 },
+ { "x": 1, "y": 3 },
+ { "x": 2, "y": 3 },
+ { "x": 3, "y": 3 },
+ { "x": 4, "y": 3 },
+ { "x": 5, "y": 3 },
+ { "x": 6, "y": 3 },
+ { "x": 7, "y": 3 },
+ { "x": 8, "y": 3 },
+ { "x": 9, "y": 3 },
+ { "x": 10, "y": 3 },
+ { "x": 11, "y": 3 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/planck/rev3/readme.md b/keyboards/planck/rev3/readme.md
new file mode 100644
index 0000000000..26ef898311
--- /dev/null
+++ b/keyboards/planck/rev3/readme.md
@@ -0,0 +1,13 @@
+# Planck
+
+A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. [More info on qmk.fm](http://qmk.fm/planck/)
+
+Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
+Hardware Supported: Planck PCB rev3
+Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make planck/rev3:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/planck/rev3/rev3.h b/keyboards/planck/rev3/rev3.h
new file mode 100644
index 0000000000..f81b36b316
--- /dev/null
+++ b/keyboards/planck/rev3/rev3.h
@@ -0,0 +1,49 @@
+#pragma once
+
+#include "planck.h"
+
+#define LAYOUT_planck_1x2uC( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \
+}
+
+#define LAYOUT_ortho_4x12( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
+}
+
+// Used to create a keymap using only KC_ prefixed keys
+#define LAYOUT_kc( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
+) \
+LAYOUT_ortho_4x12( \
+ KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b, \
+ KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \
+ KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b, \
+ KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \
+)
+
+#define KEYMAP LAYOUT_ortho_4x12
+#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
+#define LAYOUT_planck_grid LAYOUT_ortho_4x12
+#define LAYOUT_kc_ortho_4x12 LAYOUT_kc
+#define KC_KEYMAP LAYOUT_kc
diff --git a/keyboards/planck/rev4/info.json b/keyboards/planck/rev4/info.json
new file mode 100644
index 0000000000..ad135b6cb3
--- /dev/null
+++ b/keyboards/planck/rev4/info.json
@@ -0,0 +1,115 @@
+{
+ "keyboard_name": "Planck rev 4",
+ "keyboard_folder": "planck/rev4",
+ "url": "https://olkb.com/planck",
+ "maintainer": "jackhumbert",
+ "width": 12,
+ "height": 4,
+ "layouts": {
+ "LAYOUT_planck_1x2uC": {
+ "key_count": 47,
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 0, "y": 1 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 0, "y": 2 },
+ { "x": 1, "y": 2 },
+ { "x": 2, "y": 2 },
+ { "x": 3, "y": 2 },
+ { "x": 4, "y": 2 },
+ { "x": 5, "y": 2 },
+ { "x": 6, "y": 2 },
+ { "x": 7, "y": 2 },
+ { "x": 8, "y": 2 },
+ { "x": 9, "y": 2 },
+ { "x": 10, "y": 2 },
+ { "x": 11, "y": 2 },
+ { "x": 0, "y": 3 },
+ { "x": 1, "y": 3 },
+ { "x": 2, "y": 3 },
+ { "x": 3, "y": 3 },
+ { "x": 4, "y": 3 },
+ { "x": 5, "y": 3, "w": 2 },
+ { "x": 7, "y": 3 },
+ { "x": 8, "y": 3 },
+ { "x": 9, "y": 3 },
+ { "x": 10, "y": 3 },
+ { "x": 11, "y": 3 }
+ ]
+ },
+ "LAYOUT_ortho_4x12": {
+ "key_count": 48,
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 0, "y": 1 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 0, "y": 2 },
+ { "x": 1, "y": 2 },
+ { "x": 2, "y": 2 },
+ { "x": 3, "y": 2 },
+ { "x": 4, "y": 2 },
+ { "x": 5, "y": 2 },
+ { "x": 6, "y": 2 },
+ { "x": 7, "y": 2 },
+ { "x": 8, "y": 2 },
+ { "x": 9, "y": 2 },
+ { "x": 10, "y": 2 },
+ { "x": 11, "y": 2 },
+ { "x": 0, "y": 3 },
+ { "x": 1, "y": 3 },
+ { "x": 2, "y": 3 },
+ { "x": 3, "y": 3 },
+ { "x": 4, "y": 3 },
+ { "x": 5, "y": 3 },
+ { "x": 6, "y": 3 },
+ { "x": 7, "y": 3 },
+ { "x": 8, "y": 3 },
+ { "x": 9, "y": 3 },
+ { "x": 10, "y": 3 },
+ { "x": 11, "y": 3 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/planck/rev4/readme.md b/keyboards/planck/rev4/readme.md
new file mode 100644
index 0000000000..4cf6e8cf2d
--- /dev/null
+++ b/keyboards/planck/rev4/readme.md
@@ -0,0 +1,13 @@
+# Planck
+
+A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. The first revision of the Planck to support Audio. [More info on qmk.fm](http://qmk.fm/planck/)
+
+Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
+Hardware Supported: Planck PCB rev4
+Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make planck/rev4:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/planck/rev4/rev4.h b/keyboards/planck/rev4/rev4.h
new file mode 100644
index 0000000000..f81b36b316
--- /dev/null
+++ b/keyboards/planck/rev4/rev4.h
@@ -0,0 +1,49 @@
+#pragma once
+
+#include "planck.h"
+
+#define LAYOUT_planck_1x2uC( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \
+}
+
+#define LAYOUT_ortho_4x12( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
+}
+
+// Used to create a keymap using only KC_ prefixed keys
+#define LAYOUT_kc( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
+) \
+LAYOUT_ortho_4x12( \
+ KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b, \
+ KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \
+ KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b, \
+ KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \
+)
+
+#define KEYMAP LAYOUT_ortho_4x12
+#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
+#define LAYOUT_planck_grid LAYOUT_ortho_4x12
+#define LAYOUT_kc_ortho_4x12 LAYOUT_kc
+#define KC_KEYMAP LAYOUT_kc
diff --git a/keyboards/planck/rev5/info.json b/keyboards/planck/rev5/info.json
new file mode 100644
index 0000000000..6f31472f5a
--- /dev/null
+++ b/keyboards/planck/rev5/info.json
@@ -0,0 +1,115 @@
+{
+ "keyboard_name": "Planck rev 5",
+ "keyboard_folder": "planck/rev5",
+ "url": "https://olkb.com/planck",
+ "maintainer": "jackhumbert",
+ "width": 12,
+ "height": 4,
+ "layouts": {
+ "LAYOUT_planck_1x2uC": {
+ "key_count": 47,
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 0, "y": 1 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 0, "y": 2 },
+ { "x": 1, "y": 2 },
+ { "x": 2, "y": 2 },
+ { "x": 3, "y": 2 },
+ { "x": 4, "y": 2 },
+ { "x": 5, "y": 2 },
+ { "x": 6, "y": 2 },
+ { "x": 7, "y": 2 },
+ { "x": 8, "y": 2 },
+ { "x": 9, "y": 2 },
+ { "x": 10, "y": 2 },
+ { "x": 11, "y": 2 },
+ { "x": 0, "y": 3 },
+ { "x": 1, "y": 3 },
+ { "x": 2, "y": 3 },
+ { "x": 3, "y": 3 },
+ { "x": 4, "y": 3 },
+ { "x": 5, "y": 3, "w": 2 },
+ { "x": 7, "y": 3 },
+ { "x": 8, "y": 3 },
+ { "x": 9, "y": 3 },
+ { "x": 10, "y": 3 },
+ { "x": 11, "y": 3 }
+ ]
+ },
+ "LAYOUT_ortho_4x12": {
+ "key_count": 48,
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 0, "y": 1 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 0, "y": 2 },
+ { "x": 1, "y": 2 },
+ { "x": 2, "y": 2 },
+ { "x": 3, "y": 2 },
+ { "x": 4, "y": 2 },
+ { "x": 5, "y": 2 },
+ { "x": 6, "y": 2 },
+ { "x": 7, "y": 2 },
+ { "x": 8, "y": 2 },
+ { "x": 9, "y": 2 },
+ { "x": 10, "y": 2 },
+ { "x": 11, "y": 2 },
+ { "x": 0, "y": 3 },
+ { "x": 1, "y": 3 },
+ { "x": 2, "y": 3 },
+ { "x": 3, "y": 3 },
+ { "x": 4, "y": 3 },
+ { "x": 5, "y": 3 },
+ { "x": 6, "y": 3 },
+ { "x": 7, "y": 3 },
+ { "x": 8, "y": 3 },
+ { "x": 9, "y": 3 },
+ { "x": 10, "y": 3 },
+ { "x": 11, "y": 3 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/planck/rev5/readme.md b/keyboards/planck/rev5/readme.md
new file mode 100644
index 0000000000..fed975a390
--- /dev/null
+++ b/keyboards/planck/rev5/readme.md
@@ -0,0 +1,13 @@
+# Planck
+
+A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. [More info on qmk.fm](http://qmk.fm/planck/)
+
+Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
+Hardware Supported: Planck PCB rev5
+Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make planck/rev5:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/planck/rev5/rev5.h b/keyboards/planck/rev5/rev5.h
new file mode 100644
index 0000000000..f81b36b316
--- /dev/null
+++ b/keyboards/planck/rev5/rev5.h
@@ -0,0 +1,49 @@
+#pragma once
+
+#include "planck.h"
+
+#define LAYOUT_planck_1x2uC( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b } \
+}
+
+#define LAYOUT_ortho_4x12( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \
+}
+
+// Used to create a keymap using only KC_ prefixed keys
+#define LAYOUT_kc( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
+) \
+LAYOUT_ortho_4x12( \
+ KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b, \
+ KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \
+ KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b, \
+ KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \
+)
+
+#define KEYMAP LAYOUT_ortho_4x12
+#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
+#define LAYOUT_planck_grid LAYOUT_ortho_4x12
+#define LAYOUT_kc_ortho_4x12 LAYOUT_kc
+#define KC_KEYMAP LAYOUT_kc
diff --git a/keyboards/planck/rev6/info.json b/keyboards/planck/rev6/info.json
index 81eacabc39..66dd8f575a 100644
--- a/keyboards/planck/rev6/info.json
+++ b/keyboards/planck/rev6/info.json
@@ -1,6 +1,6 @@
{
- "keyboard_name": "Planck",
- "keyboard_folder": "planck",
+ "keyboard_name": "Planck rev 6",
+ "keyboard_folder": "planck/rev6",
"url": "https://olkb.com/planck",
"maintainer": "jackhumbert",
"width": 12,
diff --git a/keyboards/planck/rev6/readme.md b/keyboards/planck/rev6/readme.md
new file mode 100644
index 0000000000..1034eb9d7a
--- /dev/null
+++ b/keyboards/planck/rev6/readme.md
@@ -0,0 +1,13 @@
+# Planck
+
+A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. A complete hardware rework of the Planck, sporting a faster and more powerful STM32 ARM Cortex-M4 microcontroller, with support for rotary encoders and three additional layouts. [More info on qmk.fm](http://qmk.fm/planck/)
+
+Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert)
+Hardware Supported: Planck PCB rev6
+Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make planck/rev6:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/planck/rev6/rev6.h b/keyboards/planck/rev6/rev6.h
index 75c2904c5c..601e347f5e 100644
--- a/keyboards/planck/rev6/rev6.h
+++ b/keyboards/planck/rev6/rev6.h
@@ -18,4 +18,110 @@
#include "planck.h"
+#define LAYOUT_planck_1x2uC( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k20, k21, k22, k23, k24, k25 }, \
+ { k30, k31, k32, k39, k3a, k3b }, \
+ { k06, k07, k08, k09, k0a, k0b }, \
+ { k16, k17, k18, k19, k1a, k1b }, \
+ { k26, k27, k28, k29, k2a, k2b }, \
+ { k36, k37, k38, k33, k34, KC_NO } \
+}
+
+#define LAYOUT_planck_1x2uR( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k20, k21, k22, k23, k24, k25 }, \
+ { k30, k31, k32, k39, k3a, k3b }, \
+ { k06, k07, k08, k09, k0a, k0b }, \
+ { k16, k17, k18, k19, k1a, k1b }, \
+ { k26, k27, k28, k29, k2a, k2b }, \
+ { KC_NO, k37, k38, k33, k34, k35 } \
+}
+
+#define LAYOUT_planck_1x2uL( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k35, k36, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k20, k21, k22, k23, k24, k25 }, \
+ { k30, k31, k32, k39, k3a, k3b }, \
+ { k06, k07, k08, k09, k0a, k0b }, \
+ { k16, k17, k18, k19, k1a, k1b }, \
+ { k26, k27, k28, k29, k2a, k2b }, \
+ { k36, k37, k38, k33, KC_NO, k35 } \
+}
+
+#define LAYOUT_planck_2x2u( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k35, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k20, k21, k22, k23, k24, k25 }, \
+ { k30, k31, k32, k39, k3a, k3b }, \
+ { k06, k07, k08, k09, k0a, k0b }, \
+ { k16, k17, k18, k19, k1a, k1b }, \
+ { k26, k27, k28, k29, k2a, k2b }, \
+ { KC_NO, k37, k38, k33, KC_NO, k35 } \
+}
+
+#define LAYOUT_ortho_4x12( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k20, k21, k22, k23, k24, k25 }, \
+ { k30, k31, k32, k39, k3a, k3b }, \
+ { k06, k07, k08, k09, k0a, k0b }, \
+ { k16, k17, k18, k19, k1a, k1b }, \
+ { k26, k27, k28, k29, k2a, k2b }, \
+ { k36, k37, k38, k33, k34, k35 } \
+}
+
+
+// Used to create a keymap using only KC_ prefixed keys
+#define LAYOUT_kc( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
+) \
+LAYOUT_ortho_4x12( \
+ KC_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, KC_##k0a, KC_##k0b, \
+ KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, KC_##k1a, KC_##k1b, \
+ KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, KC_##k2a, KC_##k2b, \
+ KC_##k30, KC_##k31, KC_##k32, KC_##k33, KC_##k34, KC_##k35, KC_##k36, KC_##k37, KC_##k38, KC_##k39, KC_##k3a, KC_##k3b \
+)
+
+#define KEYMAP LAYOUT_ortho_4x12
+#define LAYOUT_planck_mit LAYOUT_planck_1x2uC
+#define LAYOUT_planck_grid LAYOUT_ortho_4x12
+#define LAYOUT_kc_ortho_4x12 LAYOUT_kc
+#define KC_KEYMAP LAYOUT_kc
+
#endif