summaryrefslogtreecommitdiffstats
path: root/layouts/community/ortho_4x12
diff options
context:
space:
mode:
Diffstat (limited to 'layouts/community/ortho_4x12')
-rw-r--r--layouts/community/ortho_4x12/bakingpy/config.h11
-rw-r--r--layouts/community/ortho_4x12/bakingpy/keymap.c77
-rw-r--r--layouts/community/ortho_4x12/bakingpy/rules.mk8
-rw-r--r--layouts/community/ortho_4x12/buswerks/keymap.c64
-rw-r--r--layouts/community/ortho_4x12/buswerks/readme.md23
-rw-r--r--layouts/community/ortho_4x12/buswerks/rules.mk9
-rw-r--r--layouts/community/ortho_4x12/drashna/config.h20
-rw-r--r--layouts/community/ortho_4x12/drashna/keymap.c240
-rw-r--r--layouts/community/ortho_4x12/drashna/rules.mk13
-rw-r--r--layouts/community/ortho_4x12/grahampheath/config.h (renamed from layouts/community/ortho_4x12/guidoism/config.h)14
-rw-r--r--layouts/community/ortho_4x12/grahampheath/keymap.c301
-rw-r--r--layouts/community/ortho_4x12/grahampheath/rules.mk0
-rw-r--r--layouts/community/ortho_4x12/guidoism/generate_c.py59
-rw-r--r--layouts/community/ortho_4x12/guidoism/guidoism.json1
-rw-r--r--layouts/community/ortho_4x12/guidoism/keymap.c96
-rw-r--r--layouts/community/ortho_4x12/guidoism/keys.json316
-rw-r--r--layouts/community/ortho_4x12/guidoism/readme.md76
-rw-r--r--layouts/community/ortho_4x12/mindsound/config.h33
-rw-r--r--layouts/community/ortho_4x12/mindsound/flicker.h5
-rw-r--r--layouts/community/ortho_4x12/mindsound/keymap.c230
-rw-r--r--layouts/community/ortho_4x12/mindsound/readme.md19
-rw-r--r--layouts/community/ortho_4x12/mindsound/rules.mk26
-rw-r--r--layouts/community/ortho_4x12/symbolic/README.md70
-rw-r--r--layouts/community/ortho_4x12/symbolic/config.h43
-rw-r--r--layouts/community/ortho_4x12/symbolic/keymap.c171
-rw-r--r--layouts/community/ortho_4x12/wanleg/config.h34
-rw-r--r--layouts/community/ortho_4x12/wanleg/keymap.c32
-rw-r--r--layouts/community/ortho_4x12/wanleg/readme.md40
-rw-r--r--layouts/community/ortho_4x12/wanleg/rules.mk10
-rw-r--r--layouts/community/ortho_4x12/xyverz/rules.mk5
30 files changed, 1289 insertions, 757 deletions
diff --git a/layouts/community/ortho_4x12/bakingpy/config.h b/layouts/community/ortho_4x12/bakingpy/config.h
index a90f38001..b6b2ac577 100644
--- a/layouts/community/ortho_4x12/bakingpy/config.h
+++ b/layouts/community/ortho_4x12/bakingpy/config.h
@@ -1,20 +1,15 @@
#pragma once
-/* Use I2C or Serial, not both */
-
-#define USE_SERIAL
-// #define USE_I2C
+#define USE_I2C
/* Select hand configuration */
-#define MASTER_LEFT
-// #define MASTER_RIGHT
-// #define EE_HANDS
+//#define MASTER_RIGHT
#define TAPPING_TERM 150
#undef RGBLED_NUM
#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 8
+#define RGBLED_NUM 12
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
diff --git a/layouts/community/ortho_4x12/bakingpy/keymap.c b/layouts/community/ortho_4x12/bakingpy/keymap.c
index e71e5d5d2..06e4a589c 100644
--- a/layouts/community/ortho_4x12/bakingpy/keymap.c
+++ b/layouts/community/ortho_4x12/bakingpy/keymap.c
@@ -2,18 +2,18 @@
extern keymap_config_t keymap_config;
-#define _QWERTY 0
-#define _COLEMAK 1
-#define _DVORAK 2
+#define _MAC 0
+#define _WINDOWS 1
+#define _TESTMODE 2
#define _LOWER 3
#define _RAISE 4
#define _FKEYS 5
#define _ADJUST 16
enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- COLEMAK,
- DVORAK,
+ MAC = SAFE_RANGE,
+ WINDOWS,
+ TESTMODE,
LOWER,
RAISE,
ADJUST,
@@ -34,11 +34,11 @@ enum custom_keycodes {
#define KC_ENTS MT(MOD_LSFT, KC_ENT)
#define KC_BL_S BL_STEP
#define KC_BL_T BL_TOGG
-#define KC_ALLS PLAY_ALLSTAR
+#define KC_RMOD RGB_MOD
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = LAYOUT_kc_ortho_4x12(
+ [_MAC] = LAYOUT_kc_ortho_4x12(
//┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
TAB , Q , W , E , R , T , Y , U , I , O , P ,MINS,
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
@@ -50,33 +50,33 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//└────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
),
- [_COLEMAK] = LAYOUT_kc_ortho_4x12(
+ [_WINDOWS] = LAYOUT_kc_ortho_4x12(
//┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
- TAB , Q , W , F , P , G , J , L , U , Y ,SCLN,MINS,
+ TAB , Q , W , E , R , T , Y , U , I , O , P ,MINS,
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
- ESCC, A , R , S , T , D , H , N , E , I , O ,QUOT,
+ ESCC, A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
- LSFT, Z , X , C , V , B , K , M ,COMM,DOT ,SLSH,ENTS,
+ LSFT, Z , X , C , V , B , N , M ,COMM,DOT ,SLSH,ENTS,
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
- GRVF,LCTL,LALT,LGUI,LOWR,SPC , BSPC,RASE,LEFT,DOWN, UP ,RGHT
+ GRVF,LALT,LGUI,LCTL,LOWR,SPC , BSPC,RASE,LEFT,DOWN, UP ,RGHT
//└────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
),
- [_DVORAK] = LAYOUT_kc_ortho_4x12(
+ [_TESTMODE] = LAYOUT_kc_ortho_4x12(
//┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
- TAB ,QUOT,COMM,DOT , P , Y , F , G , C , R , L ,MINS,
+ TAB , Q , W , E , R , T , Y , U , I , O , P ,MINS,
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
- ESCC, A , O , E , U , I , D , H , T , N , S ,SLSH,
+ RMOD,BL_S, S , D , F , G , RMOD,BL_S, K , L ,SCLN,QUOT,
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
- LSFT,SCLN, Q , J , K , X , B , M , W , V , Z ,ENTS,
+ LSFT, Z , X , C , V , B , N , M ,COMM,DOT ,SLSH,ENTS,
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
- GRVF,LCTL,LALT,LGUI,LOWR,SPC , BSPC,RASE,LEFT,DOWN, UP ,RGHT
+ GRVF,LALT,LGUI,LCTL,LOWR,SPC , BSPC,RASE,LEFT,DOWN, UP ,RGHT
//└────┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴────┴────┘
),
[_LOWER] = LAYOUT_kc_ortho_4x12(
//┌────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┐
- ALLS, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , ,
+ , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , ,
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
DEL ,CAPP,LEFT,RGHT, UP ,LBRC, RBRC, P4 , P5 , P6 ,PLUS,PIPE,
//├────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┤
@@ -123,7 +123,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_ortho_4x12( \
_______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, \
- _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, MAC, WINDOWS, TESTMODE,_______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
)
@@ -131,13 +131,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
-#ifdef AUDIO_ENABLE
-float tone_qwerty[][2] = SONG(QWERTY_SOUND);
-float tone_dvorak[][2] = SONG(DVORAK_SOUND);
-float tone_colemak[][2] = SONG(COLEMAK_SOUND);
-float all_star_song[][2] = SONG(ALL_STAR);
-#endif
-
void persistent_default_layer_set(uint16_t default_layer) {
eeconfig_update_default_layer(default_layer);
default_layer_set(default_layer);
@@ -145,30 +138,21 @@ void persistent_default_layer_set(uint16_t default_layer) {
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
- case QWERTY:
+ case MAC:
if (record->event.pressed) {
- #ifdef AUDIO_ENABLE
- PLAY_SONG(tone_qwerty);
- #endif
- persistent_default_layer_set(1UL<<_QWERTY);
+ persistent_default_layer_set(1UL<<_MAC);
}
return false;
break;
- case COLEMAK:
+ case WINDOWS:
if (record->event.pressed) {
- #ifdef AUDIO_ENABLE
- PLAY_SONG(tone_colemak);
- #endif
- persistent_default_layer_set(1UL<<_COLEMAK);
+ persistent_default_layer_set(1UL<<_WINDOWS);
}
return false;
break;
- case DVORAK:
+ case TESTMODE:
if (record->event.pressed) {
- #ifdef AUDIO_ENABLE
- PLAY_SONG(tone_dvorak);
- #endif
- persistent_default_layer_set(1UL<<_DVORAK);
+ persistent_default_layer_set(1UL<<_TESTMODE);
}
return false;
break;
@@ -200,15 +184,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
return false;
break;
- case PLAY_ALLSTAR:
- if (record->event.pressed) {
- #ifdef AUDIO_ENABLE
- PLAY_SONG(all_star_song);
- SEND_STRING("Hey now, you're an all-star, get your game on, go play. Hey now, you're a rock star, get the show on, get paid. All that glitters is gold. Only shooting stars break the mold.");
- #endif
- }
- return false;
- break;
}
return true;
}
diff --git a/layouts/community/ortho_4x12/bakingpy/rules.mk b/layouts/community/ortho_4x12/bakingpy/rules.mk
index 0d568c401..9be2f01d4 100644
--- a/layouts/community/ortho_4x12/bakingpy/rules.mk
+++ b/layouts/community/ortho_4x12/bakingpy/rules.mk
@@ -3,4 +3,10 @@ ifeq ($(LAYOUTS_HAS_RGB),yes)
RGBLIGHT_ENABLE = yes
endif
AUDIO_ENABLE = no
-BACKLIGHT_ENABLE = yes
+ifeq ($(strip $(KEYBOARD)), zlant)
+ BACKLIGHT_ENABLE = no
+else ifeq ($(strip $(KEYBOARD)), 40percentclub/4x4)
+ BACKLIGHT_ENABLE = no
+else
+ BACKLIGHT_ENABLE = yes
+endif
diff --git a/layouts/community/ortho_4x12/buswerks/keymap.c b/layouts/community/ortho_4x12/buswerks/keymap.c
index 776ea461b..72c592a0c 100644
--- a/layouts/community/ortho_4x12/buswerks/keymap.c
+++ b/layouts/community/ortho_4x12/buswerks/keymap.c
@@ -7,6 +7,7 @@ extern keymap_config_t keymap_config;
#define _DVORAK 2
#define _LOWER 3
#define _RAISE 4
+#define _MOUSE 5
#define _ADJUST 16
enum custom_keycodes {
@@ -15,6 +16,7 @@ enum custom_keycodes {
DVORAK,
LOWER,
RAISE,
+ MOUSE,
ADJUST,
};
@@ -28,18 +30,34 @@ enum custom_keycodes {
#define KC_LOWR LOWER
#define KC_RASE RAISE
#define KC_ADJ ADJUST
+#define MOUSE TG(_MOUSE)
+
+#define DESK_L LCTL(KC_LEFT)
+#define DESK_R LCTL(KC_RGHT)
+#define MSN_CTL LCTL(KC_UP)
+#define APP_WND LCTL(KC_DOWN)
+#define SWITCHR LGUI(KC_TAB)
+
+#define WORD_L LALT(KC_LEFT)
+#define WORD_R LALT(KC_RGHT)
+#define LINE_L LGUI(KC_LEFT)
+#define LINE_R LGUI(KC_RGHT)
+
+#define COPY LGUI(KC_C)
+#define CUT LGUI(KC_X)
+#define PASTE LGUI(KC_V)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[_QWERTY] = LAYOUT_ortho_4x12( \
+[_QWERTY] = LAYOUT_ortho_4x12(
// .--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------.
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I, KC_O , KC_P , KC_BSPC, \
// |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- KC_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K, KC_L , KC_SCLN, KC_QUOT, \
+ ESC_CMD, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K, KC_L , KC_SCLN, KC_QUOT, \
// |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
KC_LSPO, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSPC, \
// |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER , KC_SPC , KC_LSFT, RSE_ENT, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT \
+ KC_LCTL, KC_HYPR, MOUSE , KC_LALT, LOWER , KC_SPC , KC_SPC , RSE_ENT, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT \
// '--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------'
),
@@ -51,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
KC_LSPO, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSPC, \
// |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER , KC_SPC , KC_LSFT, RSE_ENT, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT \
+ KC_LCTL, KC_HYPR, MOUSE , KC_LALT, LOWER , KC_SPC , KC_SPC , RSE_ENT, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT \
// '--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------'
),
@@ -59,42 +77,54 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// .--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------.
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
// |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
+ ESC_CMD, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
// |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \
// |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER , KC_SPC , KC_LSFT, RSE_ENT, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT \
+ KC_LCTL, KC_HYPR, MOUSE , KC_LALT, LOWER , KC_SPC , KC_SPC , RSE_ENT, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT \
// '--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------'
),
[_LOWER] = LAYOUT_ortho_4x12( \
// .--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------.
- KC_TILD, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, KC_MINS, KC_DEL, \
+ SWITCHR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_7, KC_8, KC_9, KC_MINS, _______, \
// |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, KC_4, KC_5, KC_6, KC_PLUS, KC_PIPE, \
+ KC_TILD, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_4, KC_5, KC_6, KC_PLUS, KC_PIPE, \
// |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- _______, KC_CIRC, KC_ASTR, KC_UNDS, KC_EQL, KC_AMPR, _______, KC_1, KC_2, KC_3, KC_SLSH, _______, \
+ _______, _______, _______, KC_UNDS, KC_EQL, _______, _______, KC_1, KC_2, KC_3, _______, _______, \
// |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, _______, _______, _______, _______, KC_0, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_COMM, _______, _______ \
// '--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------'
),
[_RAISE] = LAYOUT_ortho_4x12( \
// .--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------.
- KC_GRV, _______, _______, KC_LPRN, KC_RPRN, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, KC_DEL, \
+ KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_UNDS, KC_EQL, KC_DEL, \
+ // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, KC_LBRC, KC_LCBR, KC_RCBR, KC_RBRC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_BSLS, \
+ // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, LINE_L, WORD_L, WORD_R, LINE_R, _______, _______, \
+ // |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT \
+ // '--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------'
+),
+
+[_MOUSE] = LAYOUT_ortho_4x12( \
+ // .--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------.
+ SWITCHR, _______, _______, KC_MS_U, _______, _______, _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, \
// |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, KC_LCBR, KC_RCBR, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, KC_BSLS, \
+ _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, \
// |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, KC_LBRC, KC_RBRC, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, \
+ _______, _______, _______, KC_WH_U, KC_WH_D, COPY, PASTE, KC_BTN4, KC_BTN5, _______, _______, _______, \
// |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ _______, _______, MOUSE , _______, _______, KC_SPC, KC_SPC, KC_ENT, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT \
// '--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------'
),
[_ADJUST] = LAYOUT_ortho_4x12( \
- KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, \
- _______, _______, RESET, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, QWERTY, COLEMAK, DVORAK, RESET, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, \
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, AU_OFF , AU_ON , _______, \
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
)
diff --git a/layouts/community/ortho_4x12/buswerks/readme.md b/layouts/community/ortho_4x12/buswerks/readme.md
index 452116423..43c1aaf93 100644
--- a/layouts/community/ortho_4x12/buswerks/readme.md
+++ b/layouts/community/ortho_4x12/buswerks/readme.md
@@ -5,24 +5,25 @@ For use on Planck, Let's Split, and similar keyboards
### Layout Overview
- Main Layer
- - An additional shift key is located on the right space key (only works for grid layouts)
- Enter is located on the Raise key (layer-tap)
- - The left and right shift keys function as Space Cadet shift keys
+ - Space Cadet shift keys
+ - Lower + shift keys = Brackets[]
+ - Raise + shift keys = Braces{}
- The bottom left key is the Adjust modifier
- Escape is in the traditional Caps Lock position
- Holding down the escape key acts as LGUI (intended for macOS use)
- Lower
- There is a numpad on the right hand (4, 5, and 6 are located under JKL/NEI/HTN)
- Plus and minus keys are located to the right of the numpad
- - All other symbols are located on the other side of the keyboard, in a somewhat logical order
- - Symbols from the number row are in order, starting on the left pinky.
- - Equals and underscore are in easily accessible spots, because they are more commonly used in programming
- - The ampersand is less common, so it is moved to the right of the equals symbol
+ - There are macOS desktop navigation keys and volume controls under the left hand
+
- Raise
- Vim-style arrow keys
- - Above the arrow keys are media controls
- - Below are home, end, pgup, and pgdn
- - The left hand has all three types of braces
- - Curly braces are under the index and middle fingers for easy access during programming, and because parentheses are already available through Space Cadet shift
+ - Below the arrow keys are home, end, pgup, and pgdn
+ - Symbols are located on the right side of the keyboard, in a somewhat logical order
+ - Symbols from the number row are in order, starting on the left pinky.
+ - Equals and underscore are in easily accessible spots, since they're commonly used in programming
+ - The ampersand is less common, so it's to the right of the equals symbol
+
- Adjust
- - Function keys are located along the top row (reset is moved to accommodate this) \ No newline at end of file
+ - Function keys are located along the top row (reset is moved to the Colemak 'R' position) \ No newline at end of file
diff --git a/layouts/community/ortho_4x12/buswerks/rules.mk b/layouts/community/ortho_4x12/buswerks/rules.mk
new file mode 100644
index 000000000..72f825732
--- /dev/null
+++ b/layouts/community/ortho_4x12/buswerks/rules.mk
@@ -0,0 +1,9 @@
+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
+TAP_DANCE_ENABLE = no
+AUDIO_ENABLE = yes
+
+MACROS_ENABLED = no \ No newline at end of file
diff --git a/layouts/community/ortho_4x12/drashna/config.h b/layouts/community/ortho_4x12/drashna/config.h
index 0bb6a4f50..0b0110dfa 100644
--- a/layouts/community/ortho_4x12/drashna/config.h
+++ b/layouts/community/ortho_4x12/drashna/config.h
@@ -1,11 +1,10 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
+#pragma once
#if defined(RGBLIGHT_ENABLE) && !defined(RGBLED_NUM)
#define RGB_DI_PIN D3
#define RGBLED_NUM 16 // Number of LEDs
-#define RGBLIGHT_ANIMATIONS
+
#define RGBLIGHT_HUE_STEP 12
#define RGBLIGHT_SAT_STEP 12
#define RGBLIGHT_VAL_STEP 12
@@ -14,6 +13,15 @@
#define RGBLIGHT_EFFECT_BREATHE_CENTER 1
#endif // RGBLIGHT_ENABLE
+#ifdef RGB_MATRIX_ENABLE
+#define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot)
+// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened)
+// #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+// #define RGB_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended
+// #define RGB_MATRIX_SKIP_FRAMES 1 // number of frames to skip when displaying animations (0 is full effect) if not defined defaults to 1
+// #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
+// #define EECONFIG_RGB_MATRIX (uint32_t *)16
+#endif
#if defined(KEYBOARD_lets_split_rev2)
#define USE_SERIAL
@@ -22,11 +30,11 @@
#define EE_HANDS
#endif
-#if defined(KEYBOARD_planck_rev5)
+#if !defined(KEYBOARD_planck_light)
#ifdef RGBLIGHT_ENABLE
#define NO_MUSIC_MODE
#endif // RGBLIGHT_ENABLE
-#endif // KEYBOARD_planck_rev5
+#endif // KEYBOARD_planck_light
/*
@@ -52,5 +60,3 @@
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
//#define MIDI_TONE_KEYCODE_OCTAVES 2
-
-#endif
diff --git a/layouts/community/ortho_4x12/drashna/keymap.c b/layouts/community/ortho_4x12/drashna/keymap.c
index a5443939c..5d3218934 100644
--- a/layouts/community/ortho_4x12/drashna/keymap.c
+++ b/layouts/community/ortho_4x12/drashna/keymap.c
@@ -17,86 +17,65 @@
#include QMK_KEYBOARD_H
#include "drashna.h"
+#ifdef RGB_MATRIX_ENABLE
+extern bool g_suspend_state;
+#endif
+#ifdef BACKLIGHT_ENABLE
enum planck_keycodes {
BACKLIT = NEW_SAFE_RANGE,
};
+#else
+ #define BACKLIT OSM(MOD_LSFT)
+#endif
+
+#define LAYOUT_ortho_4x12_base( \
+ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
+ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
+ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
+ ) \
+ LAYOUT_ortho_4x12_wrapper( \
+ KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \
+ KC_TAB, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_QUOT, \
+ KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, CTL_T(K2A), KC_ENT, \
+ BACKLIT, OS_LCTL, OS_LALT, OS_LGUI, SP_LWER, BK_LWER, DL_RAIS, ET_RAIS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+ )
+#define LAYOUT_ortho_4x12_base_wrapper(...) LAYOUT_ortho_4x12_base(__VA_ARGS__)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Qwerty
- * ,-----------------------------------------------------------------------------------.
- * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_QWERTY] = LAYOUT_ortho_4x12_wrapper(
- KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSPC,
- KC_ESC, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT,
- KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_ENT,
- BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+[_QWERTY] = LAYOUT_ortho_4x12_base_wrapper(
+ _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
+ _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
+ _________________QWERTY_L3_________________, _________________QWERTY_R3_________________
),
-/* Colemak
- * ,-----------------------------------------------------------------------------------.
- * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | A | R | S | T | D | H | N | E | I | O | " |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_COLEMAK] = LAYOUT_ortho_4x12_wrapper(
- KC_TAB, _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, KC_BSPC,
- KC_ESC, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, KC_QUOT,
- KC_LSFT, _________________COLEMAK_L3________________, _________________COLEMAK_R3________________, KC_ENT,
- BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+[_COLEMAK] = LAYOUT_ortho_4x12_base_wrapper(
+ _________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
+ _________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
+ _________________COLEMAK_L3________________, _________________COLEMAK_R3________________
),
-/* Dvorak
- * ,-----------------------------------------------------------------------------------.
- * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Esc | A | O | E | U | I | D | H | T | N | S | / |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_DVORAK] = LAYOUT_ortho_4x12_wrapper(
- KC_TAB, _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, KC_BSPC,
- KC_ESC, _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, KC_SLSH,
- KC_LSFT, _________________DVORAK_L3_________________, _________________DVORAK_R3_________________, KC_ENT,
- BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+[_DVORAK] = LAYOUT_ortho_4x12_base_wrapper(
+ _________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
+ _________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
+ _________________DVORAK_L3_________________, _________________DVORAK_R3_________________
),
+[_WORKMAN] = LAYOUT_ortho_4x12_base_wrapper(
+ _________________WORKMAN_L1________________, _________________WORKMAN_R1________________,
+ _________________WORKMAN_L2________________, _________________WORKMAN_R2________________,
+ _________________WORKMAN_L3________________, _________________WORKMAN_R3________________
+),
-[_WORKMAN] = LAYOUT_ortho_4x12_wrapper(
- KC_TAB, _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, KC_BSPC,
- KC_ESC, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT,
- KC_LSFT, _________________WORKMAN_L3________________, _________________WORKMAN_R3________________, KC_ENT,
- BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+[_MODS] = LAYOUT_ortho_4x12_wrapper(
+ _______, ___________________BLANK___________________, ___________________BLANK___________________, _______,
+ _______, ___________________BLANK___________________, ___________________BLANK___________________, _______,
+ KC_LSFT, ___________________BLANK___________________, ___________________BLANK___________________, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
-/* Lower
- * ,-----------------------------------------------------------------------------------.
- * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | Next | Vol- | Vol+ | Play |
- * `-----------------------------------------------------------------------------------'
- */
[_LOWER] = LAYOUT_ortho_4x12_wrapper(
KC_TILD, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_BSPC,
KC_DEL, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE,
@@ -104,40 +83,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
-/* Raise
- * ,-----------------------------------------------------------------------------------.
- * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | Next | Vol- | Vol+ | Play |
- * `-----------------------------------------------------------------------------------'
- */
[_RAISE] = LAYOUT_ortho_4x12_wrapper(
KC_GRV, _________________RAISE_L1__________________, _________________RAISE_R1__________________, KC_BSPC,
KC_DEL, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS,
_______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, _______, _______, _________________RAISE_R3__________________
),
-/* Adjust (Lower + Raise)
- * ,-----------------------------------------------------------------------------------.
- * | | Reset| | | | | | | | | | Del |
- * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
- * |------+------+------+------+------+------|------+------+------+------+------+------|
- * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | |
- * `-----------------------------------------------------------------------------------'
- */
[_ADJUST] = LAYOUT_ortho_4x12_wrapper(
- _______, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_DEL,
- _______, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, _______,
- _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RST,
+ VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
+ _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NUKE
)
@@ -147,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
-#ifdef KEYBOARD_planck
+#ifdef BACKLIGHT_ENABLE
case BACKLIT:
if (record->event.pressed) {
register_code(KC_RSFT);
@@ -170,8 +127,107 @@ bool music_mask_user(uint16_t keycode) {
switch (keycode) {
case RAISE:
case LOWER:
+ case BK_LWER:
+ case SP_LWER:
+ case DL_RAIS:
+ case ET_RAIS:
return false;
default:
return true;
}
}
+
+#ifdef RGB_MATRIX_ENABLE
+
+void suspend_power_down_keymap(void)
+{
+ rgb_matrix_set_suspend_state(true);
+}
+
+void suspend_wakeup_init_keymap(void)
+{
+ rgb_matrix_set_suspend_state(false);
+}
+
+void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue, bool default_layer) {
+ rgb_led led;
+ for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
+ led = g_rgb_leds[i];
+ if (led.matrix_co.raw < 0xFF) {
+ if (led.modifier) {
+ rgb_matrix_set_color( i, red, green, blue );
+ }
+ }
+ }
+}
+
+void rgb_matrix_indicators_user(void) {
+ uint8_t this_mod = get_mods();
+ uint8_t this_led = host_keyboard_leds();
+ uint8_t this_osm = get_oneshot_mods();
+ if (!g_suspend_state) {
+ switch (biton32(layer_state)) {
+ case _RAISE:
+ rgb_matrix_layer_helper(0xFF, 0xFF, 0x00, false); break;
+ case _LOWER:
+ rgb_matrix_layer_helper(0x00, 0xFF, 0x00, false); break;
+ case _ADJUST:
+ rgb_matrix_layer_helper(0xFF, 0x00, 0x00, false); break;
+ default:
+ switch (biton32(default_layer_state)) {
+ case _QWERTY:
+ rgb_matrix_layer_helper(0x00, 0xFF, 0xFF, true); break;
+ case _COLEMAK:
+ rgb_matrix_layer_helper(0xFF, 0x00, 0xFF, true); break;
+ case _DVORAK:
+ rgb_matrix_layer_helper(0x00, 0xFF, 0x00, true); break;
+ case _WORKMAN:
+ rgb_matrix_layer_helper(0xD9, 0xA5, 0x21, true); break;
+ }
+ }
+ }
+
+ switch (biton32(default_layer_state)) {
+ case _QWERTY:
+ rgb_matrix_set_color(42, 0x00, 0xFF, 0xFF); break;
+ case _COLEMAK:
+ rgb_matrix_set_color(42, 0xFF, 0x00, 0xFF); break;
+ case _DVORAK:
+ rgb_matrix_set_color(42, 0x00, 0xFF, 0x00); break;
+ case _WORKMAN:
+ rgb_matrix_set_color(42, 0xD9, 0xA5, 0x21); break;
+ }
+
+ if (this_mod & MODS_SHIFT_MASK || this_led & (1<<USB_LED_CAPS_LOCK) || this_osm & MODS_SHIFT_MASK) {
+ rgb_matrix_set_color(24, 0x00, 0xFF, 0x00);
+ rgb_matrix_set_color(36, 0x00, 0xFF, 0x00);
+ }
+ if (this_mod & MODS_CTRL_MASK || this_osm & MODS_CTRL_MASK) {
+ rgb_matrix_set_color(25, 0xFF, 0x00, 0x00);
+ rgb_matrix_set_color(34, 0xFF, 0x00, 0x00);
+ rgb_matrix_set_color(37, 0xFF, 0x00, 0x00);
+
+ }
+ if (this_mod & MODS_GUI_MASK || this_osm & MODS_GUI_MASK) {
+ rgb_matrix_set_color(39, 0xFF, 0xD9, 0x00);
+ }
+ if (this_mod & MODS_ALT_MASK || this_osm & MODS_ALT_MASK) {
+ rgb_matrix_set_color(38, 0x00, 0x00, 0xFF);
+ }
+}
+
+void matrix_init_keymap(void) {
+ rgblight_mode(RGB_MATRIX_MULTISPLASH);
+}
+#else //RGB_MATRIX_INIT
+
+void matrix_init_keymap(void) {
+ #ifndef CONVERT_TO_PROTON_C
+ setPinOutput(D5);
+ writePinHigh(D5);
+
+ setPinOutput(B0);
+ writePinHigh(B0);
+ #endif
+}
+#endif //RGB_MATRIX_INIT
diff --git a/layouts/community/ortho_4x12/drashna/rules.mk b/layouts/community/ortho_4x12/drashna/rules.mk
index ebd8b26b0..a5429b8ff 100644
--- a/layouts/community/ortho_4x12/drashna/rules.mk
+++ b/layouts/community/ortho_4x12/drashna/rules.mk
@@ -4,9 +4,16 @@ EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
TAP_DANCE_ENABLE = no
-RGBLIGHT_ENABLE = yes
AUDIO_ENABLE = yes
-
+ifeq (,$(findstring planck/rev6,$(KEYBOARD))) # Make sure it's NOT the Planck Rev6
+ RGBLIGHT_ENABLE = yes
+ INDICATOR_LIGHTS = yes
+ RGBLIGHT_TWINKLE = yes
+endif
+ifneq (,$(findstring planck/light,$(KEYBOARD))) # Make sure it IS the Planck Light
+ RGB_MATRIX_ENABLE = yes
+ RGBLIGHT_ENABLE = no
+endif
ifeq ($(strip $(PROTOCOL)), VUSB)
NKRO_ENABLE = no
@@ -15,6 +22,4 @@ NKRO_ENABLE = yes
endif
-INDICATOR_LIGHTS = yes
MACROS_ENABLED = no
-RGBLIGHT_TWINKLE = yes
diff --git a/layouts/community/ortho_4x12/guidoism/config.h b/layouts/community/ortho_4x12/grahampheath/config.h
index 607539327..8bc3d7762 100644
--- a/layouts/community/ortho_4x12/guidoism/config.h
+++ b/layouts/community/ortho_4x12/grahampheath/config.h
@@ -21,9 +21,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
-#include QMK_KEYBOARD_CONFIG_H
+#include "keyboards/lets_split/config.h"
-#define IGNORE_MOD_TAP_INTERRUPT
-#define USB_MAX_POWER_CONSUMPTION 50
+/* Use I2C or Serial, not both */
+
+#define USE_SERIAL
+// #define USE_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
#endif
diff --git a/layouts/community/ortho_4x12/grahampheath/keymap.c b/layouts/community/ortho_4x12/grahampheath/keymap.c
new file mode 100644
index 000000000..0b84b66eb
--- /dev/null
+++ b/layouts/community/ortho_4x12/grahampheath/keymap.c
@@ -0,0 +1,301 @@
+#include QMK_KEYBOARD_H
+
+extern keymap_config_t keymap_config;
+
+enum custom_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _EMOJI,
+};
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ LOWER,
+ RAISE,
+ EMOJI,
+ ABOVE,
+ BUG,
+ CONFUSED,
+ CRY,
+ CLAP,
+ ELIP,
+ FLIP,
+ FNGLEFT,
+ FNGRIGHT,
+ FROWN,
+ GRIN,
+ HEART,
+ JOY,
+ LLAP,
+ ROFL,
+ SHIT,
+ SING,
+ SHRUG,
+ THINK,
+ THMBDN,
+ THMBUP,
+ TOUNGE,
+ THANKS,
+ WINK
+};
+
+#define KC_X0 MT(MOD_LCTL, KC_ESC) // Hold for Left Ctrl, Tap for GraveESC
+#define KC_X1 MT(MOD_RSFT, KC_ENT) // Hold for Right Shift, Tap for Enter
+#define KC_X2 MT(MOD_RSFT, LGUI(KC_ENT)) // Send Command Enter
+#define KC_BACK LGUI(KC_LBRC) // Back
+#define KC_FORWARD LGUI(KC_RBRC) // Forward
+#define KC_EMOJ TT(_EMOJI) // Hold for Emoji Layer, or tap 5 times.
+#define KC_QS LGUI(KC_SPC) // Send Command + Space (for QuickSilver).
+#define KC_WTAB LGUI(KC_TILD) // Send Command + ~ (for window changing).
+#define KC_TABR LGUI(KC_RCBR) // Send Command + } (for tab changing).
+#define KC_TABL LGUI(KC_LCBR) // Send Command + { (for tab changing).
+#define HYPR_0 HYPR(KC_TILD) // Send Hyper + ~.
+#define HYPR_1 HYPR(KC_EXLM) // Send Hyper + !.
+#define HYPR_2 HYPR(KC_AT) // Send Hyper + @.
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+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 | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |Emoji | Ctrl | Alt |Lower | Cmd |Space |Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_X0, 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_X1,
+ KC_EMOJ, KC_LCTL, KC_LALT, KC_LGUI, MO(_LOWER), KC_SPC, KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |cmd(~)| <- | -> | TAB_L| TAB_R| F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Tab- | Vol- | Vol+ | Tab+ |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_ortho_4x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
+ KC_WTAB, KC_BACK, KC_FORWARD, KC_TABL, KC_TABR, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ KC_LSFT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_QS, KC_QS, _______, _______, _______, _______, _______
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * |cmd(~)| F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Home | PgUp | PgDn | End |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
+ KC_WTAB, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_LSFT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, KC_X2,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+),
+
+/* Emoji Layer
+ * ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
+ * │HYPR0│ Q │ ;-) │ E │ 🤣 │ :-P │ 🙏🏼 │ U │:'-( │FLIP │ P │ │
+ * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+ * │HYPR1│ 👆 │SHRUG│ GRIN│ :-( │ G │ <3 │ :-) │ k │LLAP │ ; │ │
+ * ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
+ * │HYPR2│🎶^🎶│💭^💭│ 👏 | :-\ │ 🐛 │ n │ :-D │ SHIT│ ... │ / │ │
+ * ├─────┼─────┼─────┼─────┼─────┼─────┴─────┼─────┼─────┼─────┼─────┼─────┤
+ * │ │ │ │ │Brig-│ Sleep │Brig+│ 👈 │ 👎 | 👍 │ 👉 │
+ * └─────┴─────┴─────┴─────┴─────┴───────────┴─────┴─────┴─────┴─────┴─────┘
+ */
+[_EMOJI] = LAYOUT_ortho_4x12(
+ HYPR_0, _______, WINK, _______, ROFL, TOUNGE, THANKS, _______, CRY, FLIP, _______, _______ ,
+ HYPR_1, ABOVE, SHRUG, GRIN, FROWN, _______, HEART, JOY, _______, LLAP, _______, _______ ,
+ HYPR_2, SING, THINK, CLAP, CONFUSED, BUG, _______, _______, SHIT, ELIP, _______, _______ ,
+ _______, _______, _______, _______, KC_SLCK, KC_SLEP, KC_SLEP, KC_PAUS, FNGLEFT, THMBDN, THMBUP, FNGRIGHT
+),
+};
+
+#ifdef AUDIO_ENABLE
+float tone_qwerty[][2] = SONG(QWERTY_SOUND);
+float tone_dvorak[][2] = SONG(DVORAK_SOUND);
+float tone_colemak[][2] = SONG(COLEMAK_SOUND);
+#endif
+
+void persistent_default_layer_set(uint16_t default_layer) {
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case ABOVE:
+ if (record->event.pressed) {
+ SEND_STRING("&above; ");
+ }
+ return false;
+ break;
+ case BUG:
+ if (record->event.pressed) {
+ SEND_STRING("&bug;");
+ }
+ return false;
+ break;
+ case CONFUSED:
+ if (record->event.pressed) {
+ SEND_STRING(":-\\");
+ }
+ return false;
+ break;
+ case CRY:
+ if (record->event.pressed) {
+ SEND_STRING(":'-( ");
+ }
+ return false;
+ break;
+ case CLAP:
+ if (record->event.pressed) {
+ SEND_STRING("&clap; ");
+ }
+ return false;
+ break;
+ case ELIP:
+ if (record->event.pressed) {
+ SEND_STRING("...");
+ }
+ return false;
+ break;
+ case FLIP:
+ if (record->event.pressed) {
+ SEND_STRING("&fliptable;");
+ }
+ return false;
+ break;
+ case FNGLEFT:
+ if (record->event.pressed) {
+ SEND_STRING("&fingerleft; ");
+ }
+ return false;
+ break;
+ case FNGRIGHT:
+ if (record->event.pressed) {
+ SEND_STRING("&fingerright; ");
+ }
+ return false;
+ break;
+ case FROWN:
+ if (record->event.pressed) {
+ SEND_STRING(":-( ");
+ }
+ return false;
+ break;
+ case GRIN:
+ if (record->event.pressed) {
+ SEND_STRING(":-D ");
+ }
+ return false;
+ break;
+ case HEART:
+ if (record->event.pressed) {
+ SEND_STRING("<3 ");
+ }
+ return false;
+ break;
+ case JOY:
+ if (record->event.pressed) {
+ SEND_STRING(":-) ");
+ }
+ return false;
+ break;
+ case LLAP:
+ if (record->event.pressed) {
+ SEND_STRING("&llap; ");
+ }
+ return false;
+ break;
+ case ROFL:
+ if (record->event.pressed) {
+ SEND_STRING("&rofl; ");
+ }
+ return false;
+ break;
+ case SHIT:
+ if (record->event.pressed) {
+ SEND_STRING("&shit; ");
+ }
+ return false;
+ break;
+ case SING:
+ if (record->event.pressed) {
+ SEND_STRING("_sing_");
+ }
+ return false;
+ break;
+ case SHRUG:
+ if (record->event.pressed) {
+ SEND_STRING("&shrug; ");
+ }
+ return false;
+ break;
+ case THANKS:
+ if (record->event.pressed) {
+ SEND_STRING("&thanks;");
+ }
+ return false;
+ break;
+ case THINK:
+ if (record->event.pressed) {
+ SEND_STRING("_think_");
+ }
+ return false;
+ break;
+ case THMBDN:
+ if (record->event.pressed) {
+ SEND_STRING("&thumbdown; ");
+ }
+ return false;
+ break;
+ case THMBUP:
+ if (record->event.pressed) {
+ SEND_STRING("&thumbup; ");
+ }
+ return false;
+ break;
+ case TOUNGE:
+ if (record->event.pressed) {
+ SEND_STRING(":-P ");
+ }
+ return false;
+ break;
+ case WINK:
+ if (record->event.pressed) {
+ SEND_STRING(";-) ");
+ }
+ return false;
+ break;
+
+ }
+ return true;
+}
+
+void matrix_scan_user(void) {
+ return;
+};
+
diff --git a/layouts/community/ortho_4x12/grahampheath/rules.mk b/layouts/community/ortho_4x12/grahampheath/rules.mk
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/layouts/community/ortho_4x12/grahampheath/rules.mk
diff --git a/layouts/community/ortho_4x12/guidoism/generate_c.py b/layouts/community/ortho_4x12/guidoism/generate_c.py
deleted file mode 100644
index 7876bee68..000000000
--- a/layouts/community/ortho_4x12/guidoism/generate_c.py
+++ /dev/null
@@ -1,59 +0,0 @@
-import itertools
-import json
-from pprint import pprint as pp
-
-layers = dict(enumerate(['_QWERTY', '_LOWER', '_RAISE', '_MOVEMENT', '_NUMPAD']))
-key_names = {('MO(%d)' % i): layers.get(i).strip('_') for i in layers.keys()}
-
-unicodes = {
- "<i class='fa fa-fast-forward'></i>": "next",
- "<i class='fa fa-volume-down'></i>": "vol-",
- "<i class='fa fa-volume-up'></i>": "vol+",
- "<i class='fa fa-play'></i>": "play",
-}
-
-d = json.load(open('layouts/community/ortho_4x12/guidoism/guidoism.json'))
-
-def grouper(iterable, n):
- args = [iter(iterable)] * n
- return itertools.zip_longest(*args, fillvalue='')
-
-def truthy(s):
- return [a for a in s if a]
-
-def just(s, n):
- return [a.center(n*2+1 if len(s) == 11 and i == 5 else n) for i, a in enumerate(s)]
-
-def replace(s):
- return [key_names.get(a, a) for a in s]
-
-def layer(i, l):
- n = max(len(s) for s in l)
- rows = [', '.join(replace(truthy(row))) for row in grouper(l, 12)]
- return '[%s] = %s(\n%s)' % (layers[i], d['layout'], ',\n'.join(rows))
-
-print(',\n\n'.join(layer(i, l) for i, l in enumerate(d['layers'])))
-
-def surround(s, a, b, c):
- return a + b.join(s) + c
-
-def pattern(cell, table):
- return ['─'*cell for i in range(table)]
-
-keys = json.load(open('layouts/community/ortho_4x12/guidoism/keys.json'))
-
-def layer2(i, l):
- def replace(s):
- s = [keys.get(a, a) for a in s]
- return [unicodes.get(a, a) for a in s]
- n = max(len(s) for s in l)
- return [surround(just(replace(truthy(row)), 5), '│', '│', '│') for row in grouper(l, 12)]
-
-for i, l in enumerate(d['layers']):
- print(surround(pattern(5, 12), '┌', '┬', '┐'))
- for n, row in enumerate(layer2(i, l)):
- print(row)
- if n < 3:
- print(surround(pattern(5, 12), '├', '┼', '┤'))
- else:
- print(surround(pattern(5, 12), '└', '┴', '┘'))
diff --git a/layouts/community/ortho_4x12/guidoism/guidoism.json b/layouts/community/ortho_4x12/guidoism/guidoism.json
deleted file mode 100644
index fd287cf60..000000000
--- a/layouts/community/ortho_4x12/guidoism/guidoism.json
+++ /dev/null
@@ -1 +0,0 @@
-{"keyboard":"planck/rev4","keymap":"guidoism","layout":"LAYOUT_planck_mit","layers":[["KC_TAB","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_BSPC","LCTL_T(KC_ESC)","KC_A","KC_S","KC_D","KC_F","KC_G","KC_H","KC_J","KC_K","KC_L","KC_COLN","KC_ENT","LSFT_T(KC_CAPS)","KC_Z","KC_X","KC_C","KC_V","KC_B","KC_N","KC_M","KC_COMM","KC_DOT","KC_SLSH","KC_NO","MO(3)","KC_NO","KC_LALT","KC_LGUI","MO(1)","LSFT_T(KC_SPC)","MO(2)","KC_RGUI","KC_RALT","KC_SCLN","KC_NO"],["KC_TILD","KC_EXLM","KC_AT","KC_HASH","KC_DLR","KC_PERC","KC_CIRC","KC_AMPR","KC_ASTR","KC_NO","KC_NO","KC_UNDO","KC_TRNS","KC_NO","KC_CUT","KC_COPY","KC_PSTE","KC_NO","KC_NO","KC_UNDS","KC_PLUS","KC_DQUO","KC_QUOT","KC_PIPE","KC_TRNS","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_MNXT","KC_VOLD","KC_VOLU","KC_MPLY"],["KC_GRV","KC_P1","KC_P2","KC_P3","KC_P4","KC_P5","KC_P6","KC_P7","KC_P8","KC_P9","KC_P0","KC_TRNS","KC_TRNS","KC_LBRC","KC_RBRC","KC_LPRN","KC_RPRN","KC_NO","KC_NO","KC_PMNS","KC_PEQL","KC_NO","KC_NO","KC_BSLS","KC_TRNS","KC_LT","KC_GT","KC_LCBR","KC_RCBR","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS"],["RESET","DEBUG","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_PGUP","KC_UP","KC_PGDN","KC_NO","KC_TRNS","KC_TRNS","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_LEFT","KC_DOWN","KC_RGHT","KC_NO","KC_TRNS","KC_TRNS","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_HOME","KC_NO","KC_END","KC_NO","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_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_P7","KC_P8","KC_P9","KC_PSLS","KC_TRNS","KC_TRNS","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_P4","KC_P5","KC_P6","KC_PAST","KC_TRNS","KC_TRNS","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_P1","KC_P2","KC_P3","KC_PMNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_PCMM","KC_P0","KC_PDOT","KC_PPLS","KC_TRNS"]]}
diff --git a/layouts/community/ortho_4x12/guidoism/keymap.c b/layouts/community/ortho_4x12/guidoism/keymap.c
deleted file mode 100644
index 093fe140b..000000000
--- a/layouts/community/ortho_4x12/guidoism/keymap.c
+++ /dev/null
@@ -1,96 +0,0 @@
-#include QMK_KEYBOARD_H
-#include "action_layer.h"
-#include "eeconfig.h"
-
-extern keymap_config_t keymap_config;
-
-enum planck_layers {
- _QWERTY,
- _LOWER,
- _RAISE,
- _MOVEMENT,
- _NUMPAD,
-};
-
-enum planck_keycodes {
- QWERTY = SAFE_RANGE,
- LOWER,
- RAISE,
- MOVEMENT,
- NUMPAD,
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_QWERTY] = LAYOUT_planck_mit(
-KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
-LCTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_COLN, KC_ENT,
-LSFT_T(KC_CAPS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO,
-MOVEMENT, KC_NO, KC_LALT, KC_LGUI, LOWER, LSFT_T(KC_SPC), RAISE, KC_RGUI, KC_RALT, KC_SCLN, KC_NO),
-
- [_LOWER] = LAYOUT_planck_mit(
-KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_NO, KC_NO, KC_UNDO,
-KC_TRNS, KC_NO, KC_CUT, KC_COPY, KC_PSTE, KC_NO, KC_NO, KC_UNDS, KC_PLUS, KC_DQUO, KC_QUOT, KC_PIPE,
-KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
-KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY),
-
- [_RAISE] = LAYOUT_planck_mit(
-KC_GRV, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, KC_TRNS,
-KC_TRNS, KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_NO, KC_NO, KC_PMNS, KC_PEQL, KC_NO, KC_NO, KC_BSLS,
-KC_TRNS, KC_LT, KC_GT, KC_LCBR, KC_RCBR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
-KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-
- [_MOVEMENT] = LAYOUT_planck_mit(
-RESET, DEBUG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_UP, KC_PGDN, KC_NO, KC_TRNS,
-KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_TRNS,
-KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_NO, KC_END, KC_NO, KC_TRNS,
-KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
-
- [_NUMPAD] = LAYOUT_planck_mit(
-KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS,
-KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TRNS,
-KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_TRNS,
-KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PCMM, KC_P0, KC_PDOT, KC_PPLS, KC_TRNS)
-
-};
-
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case QWERTY:
- if (record->event.pressed) {
- set_single_persistent_default_layer(_QWERTY);
- }
- return false;
- break;
- case LOWER:
- if (record->event.pressed) {
- layer_on(_LOWER);
- update_tri_layer(_LOWER, _MOVEMENT, _NUMPAD);
- } else {
- layer_off(_LOWER);
- update_tri_layer(_LOWER, _MOVEMENT, _NUMPAD);
- }
- return false;
- break;
- case RAISE:
- if (record->event.pressed) {
- layer_on(_RAISE);
- } else {
- layer_off(_RAISE);
- }
- return false;
- break;
- case MOVEMENT:
- if (record->event.pressed) {
- layer_on(_MOVEMENT);
- update_tri_layer(_LOWER, _MOVEMENT, _NUMPAD);
- } else {
- layer_off(_MOVEMENT);
- update_tri_layer(_LOWER, _MOVEMENT, _NUMPAD);
- }
- return false;
- break;
- }
- return true;
-}
diff --git a/layouts/community/ortho_4x12/guidoism/keys.json b/layouts/community/ortho_4x12/guidoism/keys.json
deleted file mode 100644
index 762deb706..000000000
--- a/layouts/community/ortho_4x12/guidoism/keys.json
+++ /dev/null
@@ -1,316 +0,0 @@
-{
- "KC_1": "1",
- "SHIFTED_KC_1": "!",
- "KC_2": "2",
- "SHIFTED_KC_2": "@",
- "KC_3": "3",
- "SHIFTED_KC_3": "#",
- "KC_4": "4",
- "SHIFTED_KC_4": "$",
- "KC_5": "5",
- "SHIFTED_KC_5": "%",
- "KC_6": "6",
- "SHIFTED_KC_6": "^",
- "KC_7": "7",
- "SHIFTED_KC_7": "&",
- "KC_8": "8",
- "SHIFTED_KC_8": "*",
- "KC_9": "9",
- "SHIFTED_KC_9": "(",
- "KC_0": "0",
- "SHIFTED_KC_0": ")",
- "KC_A": "a",
- "SHIFTED_KC_A": "A",
- "KC_B": "b",
- "SHIFTED_KC_B": "B",
- "KC_C": "c",
- "SHIFTED_KC_C": "C",
- "KC_D": "d",
- "SHIFTED_KC_D": "D",
- "KC_E": "e",
- "SHIFTED_KC_E": "E",
- "KC_F": "f",
- "SHIFTED_KC_F": "F",
- "KC_G": "g",
- "SHIFTED_KC_G": "G",
- "KC_H": "h",
- "SHIFTED_KC_H": "H",
- "KC_I": "i",
- "SHIFTED_KC_I": "I",
- "KC_J": "j",
- "SHIFTED_KC_J": "J",
- "KC_K": "k",
- "SHIFTED_KC_K": "K",
- "KC_L": "l",
- "SHIFTED_KC_L": "L",
- "KC_M": "m",
- "SHIFTED_KC_M": "M",
- "KC_N": "n",
- "SHIFTED_KC_N": "N",
- "KC_O": "o",
- "SHIFTED_KC_O": "O",
- "KC_P": "p",
- "SHIFTED_KC_P": "P",
- "KC_Q": "q",
- "SHIFTED_KC_Q": "Q",
- "KC_R": "r",
- "SHIFTED_KC_R": "R",
- "KC_S": "s",
- "SHIFTED_KC_S": "S",
- "KC_T": "t",
- "SHIFTED_KC_T": "T",
- "KC_U": "u",
- "SHIFTED_KC_U": "U",
- "KC_V": "v",
- "SHIFTED_KC_V": "V",
- "KC_W": "w",
- "SHIFTED_KC_W": "W",
- "KC_X": "x",
- "SHIFTED_KC_X": "X",
- "KC_Y": "y",
- "SHIFTED_KC_Y": "Y",
- "KC_Z": "z",
- "SHIFTED_KC_Z": "Z",
- "KC_ENTER": "\u23ce",
- "KC_ENT": "\u23ce",
- "KC_ESCAPE": "\u238b",
- "KC_ESC": "\u238b",
- "KC_BSPACE": "\u232b",
- "KC_BSPC": "\u232b",
- "KC_TAB": "\u21e5",
- "KC_SPACE": "",
- "KC_SPC": "",
- "KC_MINUS": "-",
- "KC_MINS": "-",
- "KC_EQUAL": "+",
- "KC_EQL": "=",
- "KC_LBRACKET": "{",
- "KC_LBRC": "[",
- "KC_RBRACKET": "}",
- "KC_RBRC": "]",
- "KC_BSLS": "\\",
- "KC_BSLASH": "\\",
- "KC_SCOLON": ":",
- "KC_SCLN": ";",
- "KC_QUOTE": "\"",
- "KC_QUOT": "'",
- "KC_GRAVE": "`",
- "KC_GRV": "`",
- "KC_COMMA": ",",
- "KC_COMM": ",",
- "KC_DOT": ".",
- "KC_SLASH": "/",
- "KC_NUBS": "/",
- "KC_NUHS": "#",
- "KC_CAPSLOCK": "Caps Lock",
- "KC_CAPS": "Caps Lock",
- "KC_LCTRL": "Ctrl",
- "KC_LCTL": "Ctrl",
- "KC_LSHIFT": "\u21e7",
- "KC_LSFT": "\u21e7",
- "KC_LALT": "\u2325",
- "KC_LGUI": "\u2318",
- "KC_LCMD": "\u2318",
- "KC_RCTRL": "Right Control",
- "KC_RCTL": "Right Control",
- "KC_RSHIFT": "\u21e7",
- "KC_RSFT": "\u21e7",
- "KC_RALT": "\u2325",
- "KC_RGUI": "\u2318",
- "KC_RCMD": "\u2318",
- "KC_LOCKING_CAPS": "Locking Caps Lock",
- "KC_LCAP": "Locking Caps Lock",
- "KC_LOCKING_NUM": "Locking Num Lock",
- "KC_LNUM": "Locking Num Lock",
- "KC_LOCKING_SCROLL": "Locking Scroll Lock",
- "KC_LSCR": "Locking Scroll Lock",
- "KC_INT4": "JIS Henkan",
- "KC_HENK": "JIS Henkan",
- "KC_INT5": "JIS Muhenkan",
- "KC_MHEN": "JIS Muhenkan",
- "KC_PSCREEN": "Print Screen",
- "KC_PSCR": "Print Screen",
- "KC_SCROLLLOCK": "Scroll Lock",
- "KC_SLCK": "Scroll Lock",
- "KC_PAUSE": "Pause",
- "KC_PAUS": "Pause",
- "KC_INSERT": "Insert",
- "KC_INS": "Insert",
- "KC_HOME": "Home",
- "KC_PGUP": "PgUp",
- "KC_DELETE": "\u2326",
- "KC_DEL": "\u2326",
- "KC_END": "End",
- "KC_PGDOWN": "PgDn",
- "KC_PGDN": "PgDn",
- "KC_RIGHT": "→",
- "KC_RGHT": "→",
- "KC_LEFT": "←",
- "KC_DOWN": "↓",
- "KC_UP": "↑",
- "KC_APPLICATION": "Application (Windows Menu Key)",
- "KC_APP": "Application (Windows Menu Key)",
- "KC_POWER": "Deprecated by MS in favor of KC_SYSTEM_POWER.",
- "KC_EXECUTE": "Execute",
- "KC_HELP": "Help",
- "KC_MENU": "Menu",
- "KC_SELECT": "Select",
- "KC_AGAIN": "Again",
- "KC_UNDO": "Undo",
- "KC_CUT": "Cut",
- "KC_COPY": "Copy",
- "KC_PASTE": "Paste",
- "KC_FIND": "Find",
- "KC_ALT_ERASE": "Alternate Erase",
- "KC_SYSREQ": "SysReq/Attention",
- "KC_CANCEL": "Cancel",
- "KC_CLEAR": "Clear",
- "KC_PRIOR": "Prior",
- "KC_RETURN": "Return",
- "KC_SEPARATOR": "Separator",
- "KC_OUT": "Out",
- "KC_OPER": "Oper",
- "KC_CLEAR_AGAIN": "Clear/Again",
- "KC_CRSEL": "CrSel/Props",
- "KC_EXSEL": "ExSel",
- "KC_SYSTEM_POWER": "System Power Down.",
- "KC_PWR": "System Power Down.",
- "KC_SYSTEM_SLEEP": "System Sleep",
- "KC_SLEP": "System Sleep",
- "KC_SYSTEM_WAKE": "System Wake",
- "KC_WAKE": "System Wake",
- "KC_STOP": "Stop",
- "KC__MUTE": "Mute (macOS)",
- "KC__VOLUP": "<i class='fa fa-volume-up'></i>",
- "KC__VOLDOWN": "<i class='fa fa-volume-down'></i>",
- "KC_AUDIO_MUTE": "Mute",
- "KC_MUTE": "Mute",
- "KC_AUDIO_VOL_UP": "<i class='fa fa-volume-up'></i>",
- "KC_VOLU": "<i class='fa fa-volume-up'></i>",
- "KC_AUDIO_VOL_DOWN": "<i class='fa fa-volume-down'></i>",
- "KC_VOLD": "<i class='fa fa-volume-down'></i>",
- "KC_MEDIA_NEXT_TRACK": "<i class='fa fa-fast-forward'></i>",
- "KC_MNXT": "<i class='fa fa-fast-forward'></i>",
- "KC_MEDIA_PREV_TRACK": "Previous Track (Windows)",
- "KC_MPRV": "Previous Track (Windows)",
- "KC_MEDIA_FAST_FORWARD": "<i class='fa fa-fast-forward'></i>",
- "KC_MFFD": "<i class='fa fa-fast-forward'></i>",
- "KC_MEDIA_REWIND": "Previous Track (macOS)",
- "KC_MRWD": "Previous Track (macOS)",
- "KC_MEDIA_STOP": "Stop Track",
- "KC_MSTP": "Stop Track",
- "KC_MEDIA_PLAY_PAUSE": "<i class='fa fa-play'></i>",
- "KC_MPLY": "<i class='fa fa-play'></i>",
- "KC_NUMLOCK": "Keypad Num Lock and Clear",
- "KC_NLCK": "Keypad Num Lock and Clear",
- "KC_SLSH": "/",
- "KC_KP_SLASH": "/",
- "KC_PSLS": "/",
- "KC_KP_ASTERISK": "*",
- "KC_PAST": "*",
- "KC_KP_MINUS": "-",
- "KC_PMNS": "-",
- "KC_PPLS": "+",
- "KC_KP_ENTER": "Enter",
- "KC_PENT": "Enter",
- "KC_KP_1": "1",
- "KC_KP_2": "2",
- "KC_KP_3": "3",
- "KC_KP_4": "4",
- "KC_KP_5": "5",
- "KC_KP_6": "6",
- "KC_KP_7": "7",
- "KC_KP_8": "8",
- "KC_KP_9": "9",
- "KC_KP_0": "0",
- "KC_F1": "F1",
- "KC_F2": "F2",
- "KC_F3": "F3",
- "KC_F4": "F4",
- "KC_F5": "F5",
- "KC_F6": "F6",
- "KC_F7": "F7",
- "KC_F8": "F8",
- "KC_F9": "F9",
- "KC_F10": "F10",
- "KC_F11": "F11",
- "KC_F12": "F12",
- "_______": "",
- "KC_TILDE": "~",
- "KC_TILD": "~",
- "KC_EXCLAIM": "!",
- "KC_EXLM": "!",
- "KC_AT": "@",
- "KC_HASH": "#",
- "KC_DOLLAR": "$",
- "KC_DLR": "$",
- "KC_PERCENT": "%",
- "KC_PERC": "%",
- "KC_CIRCUMFLEX": "^",
- "KC_CIRC": "^",
- "KC_AMPERSAND": "&",
- "KC_AMPR": "&",
- "KC_ASTERISK": "*",
- "KC_ASTR": "*",
- "KC_LEFT_PAREN": "(",
- "KC_LPRN": "(",
- "KC_RIGHT_PAREN": ")",
- "KC_RPRN": ")",
- "KC_UNDERSCORE": "_",
- "KC_UNDS": "_",
- "KC_PLUS": "+",
- "KC_LEFT_CURLY_BRACE": "{",
- "KC_LCBR": "{",
- "KC_RIGHT_CURLY_BRACE": "}",
- "KC_RCBR": "}",
- "KC_PIPE": "|",
- "KC_COLON": ":",
- "KC_COLN": ":",
- "KC_DOUBLE_QUOTE": "\"",
- "KC_DQUO": "\"",
- "KC_DQT": "\"",
- "KC_LEFT_ANGLE_BRACKET": "<",
- "KC_LABK": "<",
- "KC_LT": "<",
- "KC_RIGHT_ANGLE_BRACKET": ">",
- "KC_RABK": ">",
- "KC_GT": ">",
- "KC_QUESTION": "?",
- "KC_QUES": "?",
- "KC_KP_PLUS": "+",
- "LSFT_T(KC_CAPS)": "\u21e7",
-
- "LGUI(KC_X)": "<i class='fa fa-cut'></i>",
- "LGUI(KC_C)": "<i class='fa fa-copy'></i>",
- "LGUI(S(LALT(KC_V)))": "<i class='fa fa-paste'></i>",
-
- "S(KC_NUHS)": "#",
- "S(KC_NUBS)": "/",
- "MOVEMENT": "\u0394",
- "RAISE": "\u2350",
- "LOWER": "\u2357",
- "LCTL_T(KC_ESC)": "c/e",
- "KC_NO": " ",
-
- "MO(3)": "mov",
- "MO(1)": "lower",
- "MO(2)": "raise",
- "LSFT_T(KC_SPC)": "sp/sh",
- "KC_TRNS": "",
- "KC_PSTE": "Paste",
-
- "KC_P1": "1",
- "KC_P2": "2",
- "KC_P3": "3",
- "KC_P4": "4",
- "KC_P5": "5",
- "KC_P6": "6",
- "KC_P7": "7",
- "KC_P8": "8",
- "KC_P9": "9",
- "KC_P0": "0",
-
- "KC_PCMM": ",",
- "KC_PDOT": ".",
- "KC_PEQL": "="
-}
diff --git a/layouts/community/ortho_4x12/guidoism/readme.md b/layouts/community/ortho_4x12/guidoism/readme.md
deleted file mode 100644
index 7137ffd14..000000000
--- a/layouts/community/ortho_4x12/guidoism/readme.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# Guido's Planck Keyboard Layout
-
-* Left palm to the `mov` key gets you the `Move` layer
-* Right thumb on the `raise` key gets you the various programming brackets and parens on your left hand
-* Left palm on `mov` key and left thumb on `lower` key gets you a numpad on your right hand
-* Shift with the spacebar
-* Left pinky is control on hold and escape on tap
-* Left shift is caps lock on double-tap
-
-```
-┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
-│ ⇥ │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ ⌫ │
-├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
-│ c/e │ a │ s │ d │ f │ g │ h │ j │ k │ l │ : │ ⏎ │
-├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
-│ ⇧ │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ │
-├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
-│ mov │ │ ⌥ │ ⌘ │lower│ sp/sh │raise│ ⌘ │ ⌥ │ ; │ │
-└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
-```
-
-## Lower
-```
-┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
-│ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ │ │ Undo│
-├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
-│ │ │ Cut │ Copy│Paste│ │ │ _ │ + │ " │ ' │ | │
-├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
-│ │ │ │ │ │ │ │ │ │ │ │ │
-├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
-│ │ │ │ │ │ │ │ next│ vol-│ vol+│ play│
-└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
-```
-
-## Raise
-```
-┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
-│ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ │
-├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
-│ │ [ │ ] │ ( │ ) │ │ │ - │ = │ │ │ \ │
-├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
-│ │ < │ > │ { │ } │ │ │ │ │ │ │ │
-├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
-│ │ │ │ │ │ │ │ │ │ │ │
-└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
-```
-
-## Move
-```
-┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
-│RESET│DEBUG│ │ │ │ │ │ PgUp│ ↑ │ PgDn│ │ │
-├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
-│ │ │ │ │ │ │ │ ← │ ↓ │ → │ │ │
-├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
-│ │ │ │ │ │ │ │ Home│ │ End │ │ │
-├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
-│ │ │ │ │ │ │ │ │ │ │ │
-└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
-```
-
-## Numpad
-```
-┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
-│ │ │ │ │ │ │ │ 7 │ 8 │ 9 │ / │ │
-├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
-│ │ │ │ │ │ │ │ 4 │ 5 │ 6 │ * │ │
-├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
-│ │ │ │ │ │ │ │ 1 │ 2 │ 3 │ - │ │
-├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
-│ │ │ │ │ │ │ , │ 0 │ . │ + │ │
-└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
-```
-
-Use the [QMK Configurator](https://config.qmk.fm/#/planck/rev4/LAYOUT_planck_mit)
-to edit the guidoism.json file. Then update it and run `python3 layouts/community/ortho_4x12/guidoism/generate_c.py`
-to get the update C structs and Markdown for this file.
diff --git a/layouts/community/ortho_4x12/mindsound/config.h b/layouts/community/ortho_4x12/mindsound/config.h
new file mode 100644
index 000000000..76e7da204
--- /dev/null
+++ b/layouts/community/ortho_4x12/mindsound/config.h
@@ -0,0 +1,33 @@
+#pragma once
+
+#define ADVENTURE_TIME \
+ H__NOTE(_F5), \
+ Q__NOTE(_F5), \
+ H__NOTE(_F5), \
+ H__NOTE(_G5), \
+ H__NOTE(_E5), \
+ H__NOTE(_E5), \
+ H__NOTE(_D5), \
+ H__NOTE(_C5), \
+ HD_NOTE(_C6),
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(ADVENTURE_TIME)
+ #define AUDIO_CLICKY
+ #define AUDIO_CLICKY_ON
+ #define AUDIO_CLICKY_FREQ_MAX 2500.0f
+ #define AUDIO_CLICKY_FREQ_RANDOMNESS 0.2f
+ #define AUDIO_CLICKY_FREQ_DEFAULT 110.0f
+#endif
+
+// for some reason the LSvi rev1 disables action tapping...
+#ifdef NO_ACTION_TAPPING
+ #undef NO_ACTION_TAPPING
+#endif
+
+#undef BACKLIGHT_LEVELS
+#define BACKLIGHT_LEVELS 15
+
+// let's split configuration:
+#define USE_I2C
+#define EE_HANDS
diff --git a/layouts/community/ortho_4x12/mindsound/flicker.h b/layouts/community/ortho_4x12/mindsound/flicker.h
new file mode 100644
index 000000000..a982f19ae
--- /dev/null
+++ b/layouts/community/ortho_4x12/mindsound/flicker.h
@@ -0,0 +1,5 @@
+#pragma once
+
+void flicker_toggle(void);
+void flicker_keydown(void);
+void flicker_keyup(void);
diff --git a/layouts/community/ortho_4x12/mindsound/keymap.c b/layouts/community/ortho_4x12/mindsound/keymap.c
new file mode 100644
index 000000000..2c9ceaf69
--- /dev/null
+++ b/layouts/community/ortho_4x12/mindsound/keymap.c
@@ -0,0 +1,230 @@
+#include QMK_KEYBOARD_H
+
+#ifdef BACKLIGHT_ENABLE
+#include "flicker.h"
+#endif
+
+extern keymap_config_t keymap_config;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+
+enum planck_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+// keycodes custom to this keymap:
+enum planck_keycodes {
+ QWERTY = SAFE_RANGE,
+ BL_FLICKER
+};
+
+// flicker state:
+#ifdef BACKLIGHT_ENABLE
+bool flicker_enable = true;
+bool flicker_isdown = false;
+const uint8_t flicker_min_levels = 2;
+const uint8_t flicker_max_levels = 7;
+uint8_t flicker_restore_level = 0;
+#endif
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+// mod tap definitions:
+#define CTRL_ESC MT(MOD_LCTL, KC_ESC)
+#define HYPR_SPC MT(MOD_HYPR, KC_SPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | Del | GUI | Alt |Lower |HyprSp|Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_ortho_4x12(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
+ CTRL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
+ KC_MPLY, KC_DEL, KC_LGUI, KC_LALT, LOWER, HYPR_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
+),
+
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_ortho_4x12(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+),
+
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
+),
+
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset| | | | | | | | | | Del |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | |Aud on|Audoff|AGnorm|AGswap| | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | |Clicky|ClkDn |ClkUp |ClkRst|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_ortho_4x12(
+ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, \
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, BL_TOGG, BL_DEC, BL_INC, BL_FLICKER, \
+ _______, _______, _______, _______, _______, _______, _______, _______, CLICKY_TOGGLE, CLICKY_DOWN, CLICKY_UP, CLICKY_RESET \
+),
+
+}; // end keymaps
+
+// if backlighting is enabled, configure it on boot
+#ifdef BACKLIGHT_ENABLE
+void matrix_init_user(void) {
+ // set to max
+ backlight_level(BACKLIGHT_LEVELS);
+ flicker_restore_level = get_backlight_level();
+
+ // if breathing happens to be compiled in, turn it off
+#ifdef BACKLIGHT_BREATHING
+ breathing_disable();
+#endif
+}
+#endif
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ return MACRO_NONE;
+};
+
+void persistant_default_layer_set(uint16_t default_layer) {
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ // handle the _ADJUST layer and custom keycodes:
+ switch (keycode) {
+ case LOWER:
+ if (record->event.pressed) {
+ layer_on(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+ case RAISE:
+ if (record->event.pressed) {
+ layer_on(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _ADJUST);
+ }
+ return false;
+ break;
+#ifdef BACKLIGHT_ENABLE
+ case BL_FLICKER:
+ if (record->event.pressed) {
+ flicker_toggle();
+ }
+ return false;
+ break;
+#endif
+ } // end switch case over custom keycodes
+
+#ifdef BACKLIGHT_ENABLE
+ if (flicker_enable) {
+ if (record->event.pressed) {
+ flicker_keydown();
+ } else {
+ flicker_keyup();
+ }
+ }
+#endif
+
+ return true;
+}
+
+void encoder_update(bool clockwise) {
+ if (clockwise) {
+ register_code(KC_VOLU);
+ unregister_code(KC_VOLU);
+ } else {
+ register_code(KC_VOLD);
+ unregister_code(KC_VOLD);
+ }
+}
+
+// flicker implementation:
+#ifdef BACKLIGHT_ENABLE
+void flicker_toggle(void) {
+ flicker_enable = !flicker_enable;
+}
+
+void flicker_keydown(void) {
+ // guard condition: only set the level to restore if the flicker is NOT already down
+ if (!flicker_isdown) {
+ flicker_restore_level = get_backlight_level();
+ flicker_isdown = true;
+ }
+
+ // calculate a random flicker level between min and max
+ uint8_t flicker_level = (rand() % (flicker_max_levels - flicker_min_levels)) + flicker_min_levels;
+ uint8_t level_to_set = flicker_level <= flicker_restore_level ? flicker_restore_level - flicker_level : 0;
+ backlight_level(level_to_set);
+}
+
+void flicker_keyup(void) {
+ backlight_level(flicker_restore_level);
+ flicker_isdown = false;
+}
+#endif
diff --git a/layouts/community/ortho_4x12/mindsound/readme.md b/layouts/community/ortho_4x12/mindsound/readme.md
new file mode 100644
index 000000000..e9db48049
--- /dev/null
+++ b/layouts/community/ortho_4x12/mindsound/readme.md
@@ -0,0 +1,19 @@
+# Josh's 4x12 layout
+
+Notable features:
+
+* Esc is Ctrl on hold
+* Left space is `MOD_HYPER` on hold
+* Backspace is still backspace on `RAISE` and `LOWER`
+* Faux clicky controls are on the arrow keys on the `ADJUST` layer, and the backlight controls are directly above that
+* Backlight breathing is disabled; backlight flickering is implemented instead
+* Colemak and other layouts are thoroughly disabled
+* Rotary encoder controls media volume on base layer
+
+This layout has been tested on:
+
+* Let's Split (rev 2)
+* Let's Split Vitamins Included (rev 1)
+* Planck (rev 4)
+
+It builds for the Planck rev 6 but has not been tested yet.
diff --git a/layouts/community/ortho_4x12/mindsound/rules.mk b/layouts/community/ortho_4x12/mindsound/rules.mk
new file mode 100644
index 000000000..c01a1ddb5
--- /dev/null
+++ b/layouts/community/ortho_4x12/mindsound/rules.mk
@@ -0,0 +1,26 @@
+# none of my keyboards need LTO and it screws up I2C on my LSVI:
+EXTRAFLAGS:=$(filter-out -flto,$(EXTRAFLAGS))
+
+# turning off backlighting and audio for the split keebs
+ifneq (,$(findstring lets_split,$(KEYBOARD)))
+ BACKLIGHT_ENABLE = no
+ BACKLIGHT_BREATHING = no
+ AUDIO_ENABLE = no
+endif
+ifneq (,$(findstring vitamins_included,$(KEYBOARD)))
+ BACKLIGHT_ENABLE = no
+ BACKLIGHT_BREATHING = no
+ AUDIO_ENABLE = no
+endif
+
+# both my plancks use audio but only the rev4 has backlighting
+ifneq (,$(findstring planck,$(KEYBOARD)))
+ ifneq (,$(findstring rev4,$(KEYBOARD)))
+ BACKLIGHT_ENABLE = yes
+ BACKLIGHT_BREATHING = no
+ else
+ BACKLIGHT_ENABLE = no
+ BACKLIGHT_BREATHING = no
+ endif
+ AUDIO_ENABLE = yes
+endif
diff --git a/layouts/community/ortho_4x12/symbolic/README.md b/layouts/community/ortho_4x12/symbolic/README.md
new file mode 100644
index 000000000..37fbcd56a
--- /dev/null
+++ b/layouts/community/ortho_4x12/symbolic/README.md
@@ -0,0 +1,70 @@
+# Symbolic ortho 4x12 layout
+
+## Features
+
+### QWERTY based
+
+![QWERTY layout](https://gist.githubusercontent.com/leico/cb50ecd12eb8ad906a69678f265cd52c/raw/4597497ecd00790312f1a3928b2e2c5cf17a6ac1/QWERTY.png)
+
+* Default keymap
+* QWERTY layout
+* Hold and tap
+ * `Shift` and `Space`
+ * `Left Ctrl` and `Tab`
+* Symmetric Modifiers
+ * `Shift`
+ * `Raise Layer`
+ * `Lower Layer`
+ * `GUI`
+ * `Reset`
+
+### symbol charactor layer
+
+![Raise layout](https://gist.githubusercontent.com/leico/cb50ecd12eb8ad906a69678f265cd52c/raw/4597497ecd00790312f1a3928b2e2c5cf17a6ac1/Raise.png)
+
+* Raise Layer
+* assigned symbolic(punctuation) characters
+* as could as possible, related neighbor keys
+ * brackets
+ * quotes
+ * operators
+ * slashes
+* related default layer keys
+ * colons
+ * exclamation and question
+* thus above features, easy learn keymapping
+* transparent all modifiers
+
+### numbers and allows layer
+
+![Lower layout](https://gist.githubusercontent.com/leico/cb50ecd12eb8ad906a69678f265cd52c/raw/4597497ecd00790312f1a3928b2e2c5cf17a6ac1/Lower.png)
+
+* Lower Layer
+* entrust vim style arrows
+* also numkeys
+* additional, computer volume keys
+* transparent all modifiers
+
+### Numpads and F key layer
+
+![Neutral layout](https://gist.githubusercontent.com/leico/cb50ecd12eb8ad906a69678f265cd52c/raw/4597497ecd00790312f1a3928b2e2c5cf17a6ac1/Neutral.png)
+
+* visibled when Raise and Lower layer visibled
+* F keys assigned left hand side
+* Numpads assigned right hand side
+ * for that reason, override `RGUI` key
+* transparent mostly modifiers
+
+
+### Goals
+
+* release a right little finger from symbols
+* entrust more symbols for a left hand
+* simple, minimal, easy learn
+* as soon as possible, don't disable any shortcuts
+
+
+### suggestions or find issues
+
+[post issues for my fork](https://github.com/leico/qmk_firmware/issues)
+
diff --git a/layouts/community/ortho_4x12/symbolic/config.h b/layouts/community/ortho_4x12/symbolic/config.h
new file mode 100644
index 000000000..c29b07706
--- /dev/null
+++ b/layouts/community/ortho_4x12/symbolic/config.h
@@ -0,0 +1,43 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+// hold & tapping delay setting
+#define TAPPING_TERM 100
+
+/* Use I2C or Serial, not both */
+
+#define USE_SERIAL
+// #define USE_I2C
+
+/* Select hand configuration */
+
+//#define MASTER_LEFT
+// #define MASTER_RIGHT
+#define EE_HANDS
+
+#ifdef AUDIO_ENABLE
+ #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
+ SONG(DVORAK_SOUND), \
+ SONG(COLEMAK_SOUND) \
+ }
+#endif
+
diff --git a/layouts/community/ortho_4x12/symbolic/keymap.c b/layouts/community/ortho_4x12/symbolic/keymap.c
new file mode 100644
index 000000000..d4c089236
--- /dev/null
+++ b/layouts/community/ortho_4x12/symbolic/keymap.c
@@ -0,0 +1,171 @@
+#include QMK_KEYBOARD_H
+
+extern keymap_config_t keymap_config;
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QWERTY 0
+#define _LOWER 1
+#define _RAISE 2
+#define _NEUTRAL 3
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ L_LOWER,
+ R_LOWER,
+ L_RAISE,
+ R_RAISE
+};
+
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,------------------------------------------------------------------------------------.
+ * | | | | | | || | | | | | |
+ * | Esc | Q | W | E | R | T || Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+------++------+------+------+------+------+------|
+ * |LCTL_T| | | | | || | | | | | |
+ * | Tab | A | S | D | F | G || H | J | K | L | ; |Enter |
+ * |------+------+------+------+------+------++------+------+------+------+------+------|
+ * | | | | | | || | | | | | |
+ * | | Z | X | C | V | B || N | M | , | . | ! | |
+ * |------+------+------+------+------+------++------+------+------+------+------+------|
+ * | | | | | |LSFT_T||RSFT_T| | | | | |
+ * |Reset | Alt | GUI |LLower|LRaise|Space ||Space |RRaise|RLower| GUI | Del |Reset |
+ * `------------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_ortho_4x12( \
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
+ LCTL_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \
+ XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_EXLM, XXXXXXX, \
+ RESET, KC_LALT, KC_LGUI, L_LOWER, L_RAISE, LSFT_T( KC_SPC ), RSFT_T( KC_SPC ), R_RAISE, R_LOWER, KC_RGUI, KC_DEL, RESET \
+),
+
+/* Raise
+ * ,------------------------------------------------------------------------------------.
+ * | | | | | | || | | | | | |
+ * | Esc | | & | { | } | % || \ | [ | ] | # | | Bksp |
+ * |------+------+------+------+------+------++------+------+------+------+------+------|
+ * |LCTL_T| | | | | || | | | | | |
+ * | Tab | ~ | | | ( | ) | * || / | < | > | ' | : |Enter |
+ * |------+------+------+------+------+------++------+------+------+------+------+------|
+ * | | | | | | || | | | | | |
+ * | | ` | ^ | @ | $ | + || - | = | _ | " | ? | |
+ * |------+------+------+------+------+------++------+------+------+------+------+------|
+ * | | | | | |LSFT_T||RSFT_T| | | | | |
+ * |Reset | Alt | GUI |LLower|LRaise|Space ||Space |RRaise|RLower| GUI | Del |Reset |
+ * `------------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_ortho_4x12( \
+ _______, XXXXXXX, KC_AMPR, KC_LCBR, KC_RCBR, KC_PERC, KC_BSLS, KC_LBRC, KC_RBRC, KC_HASH, XXXXXXX, _______, \
+ _______, KC_TILD, KC_PIPE, KC_LPRN, KC_RPRN, KC_ASTR, KC_SLSH, KC_LABK, KC_RABK, KC_QUOT, KC_COLN, _______, \
+ _______, KC_GRV, KC_CIRC, KC_AT, KC_DLR, KC_PLUS, KC_MINS, KC_EQL, KC_UNDS, KC_DQUO, KC_QUES, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+),
+/* Lower
+ * ,------------------------------------------------------------------------------------.
+ * | | | | | | || | | | | | |
+ * | Esc | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------++------+------+------+------+------+------|
+ * |LCTL_T| | | | | || | | | | | |
+ * | Tab | |VolDn |VolUp | Mute | || Left | Down | Up |Right | |Enter |
+ * |------+------+------+------+------+------++------+------+------+------+------+------|
+ * | | | | | | || | | | | | |
+ * | | | | | | || | | | | | |
+ * |------+------+------+------+------+------++------+------+------+------+------+------|
+ * | | | | | |LSFT_T||RSFT_T| | | | | |
+ * |Reset | Alt | GUI |LLower|LRaise|Space ||Space |RRaise|RLower| GUI | Del |Reset |
+ * `------------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_ortho_4x12( \
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \
+ _______, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, _______, \
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+),
+
+/* Neutral
+ * ,------------------------------------------------------------------------------------.
+ * | | | | | | || | | | | | |
+ * | Esc | F1 | F2 | F3 | F4 | || + | - | 1 | 2 | 3 | Bksp |
+ * |------+------+------+------+------+------++------+------+------+------+------+------|
+ * |LCTL_T| | | | | || | | | | | |
+ * | Tab | F5 | F6 | F7 | F8 | || * | / | 4 | 5 | 6 |Enter |
+ * |------+------+------+------+------+------++------+------+------+------+------+------|
+ * | | | | | | || | | | | | |
+ * | | F9 | F10 | F11 | F12 | || . | , | 7 | 8 | 9 | |
+ * |------+------+------+------+------+------++------+------+------+------+------+------|
+ * | | | | | |LSFT_T||RSFT_T| | | | | |
+ * |Reset | Alt | GUI |LLower|LRaise|Space ||Space |RRaise|RLower| 0 | Del |Reset |
+ * `------------------------------------------------------------------------------------'
+ */
+[_NEUTRAL] = LAYOUT_ortho_4x12( \
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_PPLS, KC_PMNS, KC_P1, KC_P2, KC_P3, _______, \
+ _______, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, KC_PAST, KC_PSLS, KC_P4, KC_P5, KC_P6, _______, \
+ _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_PDOT, KC_COMM, KC_P7, KC_P8, KC_P9, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, _______, _______ \
+)
+
+
+};
+
+
+void DualKeyPressed ( bool brother_state, uint8_t target ){
+
+ if( brother_state ) return;
+
+ layer_on( target );
+ return;
+}
+
+void DualKeyReleased ( bool brother_state, uint8_t target1 ){
+
+ if( brother_state ) return ;
+
+ layer_off( target1 );
+ return ;
+}
+
+bool LayerSwitch ( keyrecord_t *record, bool *key_state, bool brother, uint8_t layer ){
+ if ( record -> event.pressed ) {
+ *key_state = true;
+ DualKeyPressed( brother, layer );
+ }
+ else {
+ *key_state = false;
+ DualKeyReleased( brother, layer );
+ }
+
+ update_tri_layer(_LOWER, _RAISE, _NEUTRAL );
+ return false;
+
+
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ static bool l_lower = false;
+ static bool r_lower = false;
+
+ static bool l_raise = false;
+ static bool r_raise = false;
+
+ switch (keycode) {
+
+
+ case L_LOWER : return LayerSwitch( record, &l_lower, r_lower, _LOWER ); break;
+ case R_LOWER : return LayerSwitch( record, &r_lower, l_lower, _LOWER ); break;
+ case L_RAISE : return LayerSwitch( record, &l_raise, r_raise, _RAISE ); break;
+ case R_RAISE : return LayerSwitch( record, &r_raise, l_raise, _RAISE ); break;
+
+ }
+ return true;
+}
diff --git a/layouts/community/ortho_4x12/wanleg/config.h b/layouts/community/ortho_4x12/wanleg/config.h
index 2c6fcc75f..f7650ddd3 100644
--- a/layouts/community/ortho_4x12/wanleg/config.h
+++ b/layouts/community/ortho_4x12/wanleg/config.h
@@ -1,7 +1,15 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
+#pragma once
-//QMK DFU settings (ProMicro boards)
+#if defined(KEYBOARD_jj40)
+#undef BACKLIGHT_BREATHING
+#undef BACKLIGHT_LEVELS
+#undef BREATHING_PERIOD
+#define BACKLIGHT_BREATHING
+#define BACKLIGHT_LEVELS 3
+#define BREATHING_PERIOD 15
+#endif
+
+//QMK DFU settings (ProMicro boards with QMK bootloader)
// set top left key as bootloader mode escape key on Lets Split rev2
#if defined(KEYBOARD_lets_split_rev2)
#define QMK_LED B0
@@ -12,4 +20,24 @@
#define EE_HANDS
#endif
+// set top left key as bootloader mode escape key on 4x4 48key layout
+#if defined(KEYBOARD_40percentclub_4x4) && !defined(PRO_MICRO)
+#define QMK_LED B0
+#define QMK_ESC_OUTPUT C6 // usually COL
+#define QMK_ESC_INPUT B2 // usually ROW
+#endif
+
+// use alternate settings for 4x4 board using ProMicro instead of Micro
+// usage: make 4x4:wanleg PM=yes
+#if defined(KEYBOARD_40percentclub_4x4) && defined(PRO_MICRO)
+#define QMK_ESC_OUTPUT F4 // usually COL
+#define QMK_ESC_INPUT D1 // usually ROW
+#define QMK_LED B0
+
+//need to undefine standard 4x4 array before defining alternate ProMicro array
+#undef MATRIX_ROW_PINS
+#undef MATRIX_COL_PINS
+#define MATRIX_ROW_PINS { D1, D0, D4, C6 }
+//last 4 elements of the column array are not broken out on a ProMicro (included only to preserve array structure)
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, B5, B4, E6, D7, F0, B7, D6, F1 }
#endif
diff --git a/layouts/community/ortho_4x12/wanleg/keymap.c b/layouts/community/ortho_4x12/wanleg/keymap.c
index 43cae711a..23e794dc4 100644
--- a/layouts/community/ortho_4x12/wanleg/keymap.c
+++ b/layouts/community/ortho_4x12/wanleg/keymap.c
@@ -13,8 +13,37 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______________Qwerty_Row__0_______________,
_______________Qwerty_Row__1_______________,
_______________Qwerty_Row__2_______________,
- KC_LCTL, KC_LGUI, KC_LALT, GHERKIN, SUBTER, SH_T(KC_SPC), KC_SPC, SUPRA, KC_RGUI, KC_RALT, KC_RGUI, KC_RCTL
+ KC_LCTL, KC_LGUI, KC_LALT, GHERKIN, SUBTER, SH_T(KC_SPC), SH_T(KC_SPC), SUPRA, KC_RGUI, KC_RALT, GHERKIN, KC_RCTL
),
+[DIR] = LAYOUT_ortho_4x12_wrapper(
+ _____________DIRECTIONS_Row__0_____________,
+ _____________DIRECTIONS_Row__1_____________,
+ _____________DIRECTIONS_Row__2_____________,
+ _______, _______, ONEHAND, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+#elif defined(KEYBOARD_40percentclub_4x4)
+[_GK] = LAYOUT_ortho_4x12_wrapper(
+ _______________GherkinLike_0_______________,
+ _______________GherkinLike_1_______________,
+ _______________GherkinLike_2_______________,
+ TD(RST_TAP_DANCE), KC_LGUI, KC_LALT, NUMPAD, NUMBER, ETCETERA, KC_SPC,DIRECTION, KC_RGUI, KC_RALT, KC_DEL, KC_RCTL
+),
+
+[PAD] = LAYOUT_ortho_4x4_wrapper(
+ _______________NUMPAD_Row__0_______________,
+ _______________NUMPAD_Row__1_______________,
+ _______________NUMPAD_Row__2_______________,
+ _______________NUMPAD_Row__3_______________
+),
+
+#elif defined(KEYBOARD_jj40)
+[_GK] = LAYOUT_ortho_4x12_wrapper(
+ _______________GherkinLike_0_______________,
+ _______________GherkinLike_1_______________,
+ _______________GherkinLike_2_______________,
+ TD(RST_TAP_DANCE), BL_TOGG, BL_STEP, BL_BRTG, NUMBER, ETCETERA, KC_SPC,DIRECTION, KC_RGUI, KC_RALT, KC_DEL, KC_RCTL
+),
+
#else
[_GK] = LAYOUT_ortho_4x12_wrapper(
_______________GherkinLike_0_______________,
@@ -64,4 +93,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
______________ETCETERA_Row__2______________,
______________ETCETERA_Row__3______________
),
+
};
diff --git a/layouts/community/ortho_4x12/wanleg/readme.md b/layouts/community/ortho_4x12/wanleg/readme.md
index 2f89d1de6..1cd41d116 100644
--- a/layouts/community/ortho_4x12/wanleg/readme.md
+++ b/layouts/community/ortho_4x12/wanleg/readme.md
@@ -16,9 +16,39 @@ Change `comPORT` to whatever port is used by the Arduino (e.g. `com11` in Window
## Using QMK DFU
Once QMK DFU is burned to your ProMicro, you can then flash subsequent hex files with
`make lets_split/rev2:<keymap>:dfu dfu=qmk`
-The `dfu=qmk` conditional will set `BOOTLOADER = qmk-dfu` instead of `BOOTLOADER = caterina`
+The `dfu=qmk` conditional will set `BOOTLOADER = qmk-dfu` instead of `BOOTLOADER = caterina`
----
-# JJ40
-## To Do
-- [ ] Mousekeys not working with Userspace for some reason (jj40 only) \ No newline at end of file
+# Let's Split LEDs
+In `qmk_firmware/keyboards/lets_split/rev2/rev2.c`, replace contents with
+```
+#include "lets_split.h"
+
+
+#ifdef SSD1306OLED
+void led_set_kb(uint8_t usb_led) {
+ // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
+ led_set_user(usb_led);
+}
+#endif
+
+void matrix_init_kb(void) {
+
+ // // green led on
+ // DDRD |= (1<<5);
+ // PORTD &= ~(1<<5);
+
+ // // orange led on
+ // DDRB |= (1<<0);
+ // PORTB &= ~(1<<0);
+
+ //turn off LEDs on ProMicro
+ DDRD &= ~(1<<5);
+ PORTD &= ~(1<<5);
+
+ DDRB &= ~(1<<0);
+ PORTB &= ~(1<<0);
+
+ matrix_init_user();
+};
+```
+to turn off LEDs
diff --git a/layouts/community/ortho_4x12/wanleg/rules.mk b/layouts/community/ortho_4x12/wanleg/rules.mk
index 79929689c..e8277610b 100644
--- a/layouts/community/ortho_4x12/wanleg/rules.mk
+++ b/layouts/community/ortho_4x12/wanleg/rules.mk
@@ -1,6 +1,10 @@
AUDIO_ENABLE = no
-SWAP_HANDS_ENABLE = yes
+SWAP_HANDS_ENABLE = no
-ifeq ($(strip $(KEYBOARD)), jj40)
- SWAP_HANDS_ENABLE = no
+ifeq ($(strip $(KEYBOARD)), lets_split/rev2)
+ SWAP_HANDS_ENABLE = yes
+endif
+
+ifeq ($(strip $(KEYBOARD)), planck/rev6)
+ AUDIO_ENABLE = yes
endif \ No newline at end of file
diff --git a/layouts/community/ortho_4x12/xyverz/rules.mk b/layouts/community/ortho_4x12/xyverz/rules.mk
index 852e38f24..f52fe1754 100644
--- a/layouts/community/ortho_4x12/xyverz/rules.mk
+++ b/layouts/community/ortho_4x12/xyverz/rules.mk
@@ -3,10 +3,9 @@ AUDIO_ENABLE = no # Audio output on port C6
ifeq ("$(KEYBOARD)","vitamins_included")
RGBLIGHT_ENABLE = no
+else ifeq ($(strip $(KEYBOARD)), 40percentclub/4x4)
+ RGBLIGHT_ENABLE = no
else
RGBLIGHT_ENABLE = yes
endif
-ifndef QUANTUM_DIR
- include ../../../../Makefile
-endif