summaryrefslogtreecommitdiff
path: root/layouts/community
diff options
context:
space:
mode:
authorJoe Wasson <jwasson+github@gmail.com>2018-04-21 10:48:30 -0700
committerDrashna Jaelre <drashna@live.com>2018-04-21 10:48:30 -0700
commit5ca9aecfb4cb09cc002a5256939098132a40015f (patch)
tree820a45256a06f41983312707512f564f2f973c78 /layouts/community
parent33fdd1d2551591a5c295c6dc68ccf52c4698b9c1 (diff)
downloadqmk_firmware-5ca9aecfb4cb09cc002a5256939098132a40015f.tar.gz
qmk_firmware-5ca9aecfb4cb09cc002a5256939098132a40015f.zip
Talljoe's layout with common keymap. (#2764)
* Add userspace to talljoe layout. * Move more authority to userspace and create Bananasplit layout. * Move more things into userspace. * Common Core example * More work on common layout. * Num layer. * talljoe-ansi layout * Updates for Zeal60 * Add Zeal60 to 60_ansi_split_bs_rshift * Swap Escape and Grave * Num-layer tweaks * More tweaks. * Add 1up60rgb to world of layouts. * Rename ansi_split_bs_rshift layout to hhkb. * Control RGB Backlight. * change capslock led * Remove obsolete line from rules.mk. * Add user-friendly userspace override. * Fix enter for 1uprgb60 * Revert "Rename ansi_split_bs_rshift layout to hhkb." This reverts commit 53133719db25c7cb6a199108bbf5d980481a45f4.
Diffstat (limited to 'layouts/community')
-rw-r--r--layouts/community/60_ansi/talljoe-ansi/config.h22
-rw-r--r--layouts/community/60_ansi/talljoe-ansi/keymap.c1
-rw-r--r--layouts/community/60_ansi/talljoe-ansi/rules.mk1
-rw-r--r--layouts/community/60_ansi_split_bs_rshift/talljoe/config.h68
-rw-r--r--layouts/community/60_ansi_split_bs_rshift/talljoe/keymap.c186
-rw-r--r--layouts/community/ortho_4x12/talljoe/config.h22
-rw-r--r--layouts/community/ortho_4x12/talljoe/keymap.c1
7 files changed, 193 insertions, 108 deletions
diff --git a/layouts/community/60_ansi/talljoe-ansi/config.h b/layouts/community/60_ansi/talljoe-ansi/config.h
new file mode 100644
index 0000000000..9e27b1b0a7
--- /dev/null
+++ b/layouts/community/60_ansi/talljoe-ansi/config.h
@@ -0,0 +1,22 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include QMK_KEYBOARD_CONFIG_H
+
+#define ENABLE_GAME_LAYER
+
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K44, K45, K46, K48, K49, K4B, K4C \
+) LAYOUT_60_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
+ K40, K41, K42, K45, K48, K49, K4B, K4C \
+)
+
+#endif //CONFIG_USER_H
diff --git a/layouts/community/60_ansi/talljoe-ansi/keymap.c b/layouts/community/60_ansi/talljoe-ansi/keymap.c
new file mode 100644
index 0000000000..7812add812
--- /dev/null
+++ b/layouts/community/60_ansi/talljoe-ansi/keymap.c
@@ -0,0 +1 @@
+// This space intentionally left blank
diff --git a/layouts/community/60_ansi/talljoe-ansi/rules.mk b/layouts/community/60_ansi/talljoe-ansi/rules.mk
new file mode 100644
index 0000000000..92007fe8ad
--- /dev/null
+++ b/layouts/community/60_ansi/talljoe-ansi/rules.mk
@@ -0,0 +1 @@
+USER_NAME := talljoe
diff --git a/layouts/community/60_ansi_split_bs_rshift/talljoe/config.h b/layouts/community/60_ansi_split_bs_rshift/talljoe/config.h
index f5ab0c8dc6..0eacbde336 100644
--- a/layouts/community/60_ansi_split_bs_rshift/talljoe/config.h
+++ b/layouts/community/60_ansi_split_bs_rshift/talljoe/config.h
@@ -3,8 +3,70 @@
#include QMK_KEYBOARD_CONFIG_H
-#define PREVENT_STUCK_MODIFIERS
+#define ENABLE_GAME_LAYER
-#define KM LAYOUT_60_ansi_split_bs_rshift
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K44, K45, K46, K48, K49, K4B, K4C \
+) LAYOUT_60_ansi_split_bs_rshift( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K45, K48, K49, K4B, K4C \
+)
-#endif //CONFIG_USER_H \ No newline at end of file
+/* Color Map */
+#define CM( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K47, K4A, K4B, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+ { K30, {}, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+ { K40, K41, K42, {}, {}, {}, {}, K47, {}, {}, K4A, K4B, K4C, K4D } \
+ }
+
+#ifdef KEYBOARD_zeal60
+
+ #define ZEAL_RGB
+
+ /* enable/disable LEDs based on layout */
+ #undef USE_SPLIT_BACKSPACE
+ #define USE_SPLIT_BACKSPACE 1
+
+ #undef USE_SPLIT_LEFT_SHIFT
+ #define USE_SPLIT_LEFT_SHIFT 0
+
+ #undef USE_SPLIT_RIGHT_SHIFT
+ #define USE_SPLIT_RIGHT_SHIFT 1
+
+ #undef USE_7U_SPACEBAR
+ #define USE_7U_SPACEBAR 0
+
+ #undef USE_ISO_ENTER
+ #define USE_ISO_ENTER 0
+
+ #undef TAPPING_TOGGLE
+ #define TAPPING_TOGGLE 2
+
+ #undef BACKLIGHT_MOD_LAYER_3
+ #define BACKLIGHT_MOD_LAYER_3 RESET_LAYER
+
+ #undef BACKLIGHT_ALPHAS_MODS_ROW_0
+ #undef BACKLIGHT_ALPHAS_MODS_ROW_1
+ #undef BACKLIGHT_ALPHAS_MODS_ROW_2
+ #define BACKLIGHT_ALPHAS_MODS_ROW_0 0b0000000000000001
+ #define BACKLIGHT_ALPHAS_MODS_ROW_1 0b0010000000000001
+ #define BACKLIGHT_ALPHAS_MODS_ROW_2 0b0011000000000001
+
+#endif //KEYBOARD_zeal60
+
+#endif //CONFIG_USER_H
diff --git a/layouts/community/60_ansi_split_bs_rshift/talljoe/keymap.c b/layouts/community/60_ansi_split_bs_rshift/talljoe/keymap.c
index 7eff999305..b5dc544927 100644
--- a/layouts/community/60_ansi_split_bs_rshift/talljoe/keymap.c
+++ b/layouts/community/60_ansi_split_bs_rshift/talljoe/keymap.c
@@ -1,113 +1,89 @@
-#include QMK_KEYBOARD_H
+#ifdef KEYBOARD_zeal60
+#include "config.h"
+#include "zeal60.h"
+#include "zeal_backlight.h"
+#include "action_layer.h"
+#include "solarized.h"
+#include "talljoe.h"
-enum layers {
- _BASE = 0,
- _WORKMAN,
- _NORMAN,
- _DVORAK,
- _COLMAK,
- _GAME,
- _NAV,
- _ADJUST,
- _RESET,
-};
+// from zeal_backlight.c
+// we want to be able to set indicators for the spacebar stabs
+// but they are not represented by a row/index.
+extern zeal_backlight_config g_config;
+void map_row_column_to_led( uint8_t row, uint8_t column, uint8_t *led );
-#define _______ KC_TRNS
-#define XXXXXXX KC_NO
+void set_backlight_defaults(void) {
+ uint8_t space;
+ uint8_t caps_lock;
+ map_row_column_to_led(3, 12, &caps_lock);
+ map_row_column_to_led(4, 7, &space);
+ zeal_backlight_config default_values = {
+ .use_split_backspace = USE_SPLIT_BACKSPACE,
+ .use_split_left_shift = USE_SPLIT_LEFT_SHIFT,
+ .use_split_right_shift = USE_SPLIT_RIGHT_SHIFT,
+ .use_7u_spacebar = USE_7U_SPACEBAR,
+ .use_iso_enter = USE_ISO_ENTER,
+ .disable_when_usb_suspended = 1,
+ .disable_after_timeout = 0,
+ .brightness = 255,
+ .effect = 10,
+ .color_1 = solarized.base2,
+ .color_2 = solarized.base02,
+ .caps_lock_indicator = { .index = caps_lock, .color = solarized.red },
+ .layer_1_indicator = { .index = space, .color = solarized.blue },
+ .layer_2_indicator = { .index = space, .color = solarized.yellow },
+ .layer_3_indicator = { .index = 254, .color = solarized.red },
+ .alphas_mods = {
+ BACKLIGHT_ALPHAS_MODS_ROW_0,
+ BACKLIGHT_ALPHAS_MODS_ROW_1,
+ BACKLIGHT_ALPHAS_MODS_ROW_2,
+ BACKLIGHT_ALPHAS_MODS_ROW_3,
+ BACKLIGHT_ALPHAS_MODS_ROW_4 }
+ };
+ memcpy(&g_config, &default_values, sizeof(zeal_backlight_config));
+ backlight_config_save();
-#define NV_SPC LT(_NAV, KC_SPC)
-#define AD_GRV LT(_ADJUST, KC_GRV)
-
-#define MO_NAV MO(_NAV)
-#define MO_ADJ MO(_ADJUST)
-#define MO_RST MO(_RESET)
-#define TG_ADJ TG(_ADJUST)
-#define TG_GAME TG(_GAME)
-#define LY_QWER DF(_BASE)
-#define LY_WORK DF(_WORKMAN)
-#define LY_NRMN DF(_NORMAN)
-#define LY_DVRK DF(_DVORAK)
-#define LY_CLMK DF(_COLMAK)
-#define TG_NKRO MAGIC_TOGGLE_NKRO
-#define KC_PTT KC_F24
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = KM(
- KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSLS, KC_GRV,
- KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSPC,
- KC_LCTL, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT ,
- KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, AD_GRV ,
- KC_LCTL, KC_LGUI, KC_LALT, NV_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_PTT ),
- [_WORKMAN] = KM(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, KC_Q , KC_D , KC_R , KC_W , KC_B , KC_J , KC_F , KC_U , KC_P , KC_SCLN, _______, _______, _______,
- _______, KC_A , KC_S , KC_H , KC_T , KC_G , KC_Y , KC_N , KC_E , KC_O , KC_I , _______, _______,
- _______, KC_Z , KC_X , KC_M , KC_C , KC_V , KC_K , KC_L , KC_COMM, KC_DOT , KC_SLSH, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______),
- [_NORMAN] = KM(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, KC_Q , KC_W , KC_D , KC_F , KC_K , KC_J , KC_U , KC_R , KC_L , KC_SCLN, _______, _______, _______,
- _______, KC_A , KC_S , KC_E , KC_T , KC_G , KC_Y , KC_N , KC_I , KC_O , KC_H , _______, _______,
- _______, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_P , KC_M , KC_COMM, KC_DOT , KC_SLSH, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______),
- [_DVORAK] = KM(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, _______,
- _______, KC_QUOT, KC_COMM, KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L , KC_SLSH, KC_EQL , _______,
- _______, KC_A , KC_O , KC_E , KC_U , KC_I , KC_D , KC_H , KC_T , KC_N , KC_S , KC_MINS, _______,
- _______, KC_SCLN, KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z , _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______),
- [_COLMAK] = KM(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_SCLN, _______, _______, _______,
- _______, KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O , _______, _______,
- _______, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMM, KC_DOT , KC_SLSH, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______),
- [_GAME] = KM(
- KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSLS, KC_GRV,
- KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSPC,
- MO_NAV , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT ,
- KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, MO_ADJ ,
- KC_LCTL, KC_PTT , KC_PGDN, KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_PTT ),
- [_NAV] = KM(
- KC_GRV , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_VOLU, KC_INS , KC_PGUP, KC_UP , KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL ,
- XXXXXXX, KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_MUTE, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END , XXXXXXX, TG_ADJ ,
- KC_LSFT, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_VOLD, KC_END , KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT, XXXXXXX,
- KC_LCTL, KC_LGUI, KC_LALT, _______, KC_RALT, KC_RGUI, KC_RCTL, _______),
- // Adjust layer is on the split-shift key; or NAV+Enter (for non-split keyboards)
- [_ADJUST] = KM(
- MO_RST , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG_ADJ ,
- TG_NKRO, LY_QWER, LY_WORK, LY_NRMN, LY_DVRK, LY_CLMK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG_GAME, XXXXXXX, XXXXXXX,
- MO_RST , AG_NORM, AG_SWAP, BL_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, KC_CAPS),
- // To Reset hit FN + ` + Esc
- [_RESET] = KM(
- RESET , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- RESET , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX),
-};
-
-void matrix_scan_user(void) {
- #ifdef KEYBOARD_gh60
- if (IS_LAYER_ON(_GAME)) {
- gh60_wasd_leds_on();
- } else {
- gh60_wasd_leds_off();
+ solarized_t* S = &solarized;
+ HSV alphas = S->base2;
+ HSV custom_color_map[MATRIX_ROWS][MATRIX_COLS] = CM(
+ S->red, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, S->red,
+ S->orange, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, S->orange,
+ S->green, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, S->green,
+ S->blue, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, alphas, S->blue, S->blue,
+ S->violet, S->magenta, S->yellow, alphas, S->yellow, S->magenta, S->violet, S->green
+ );
+ for (uint8_t row = 0; row < MATRIX_ROWS; ++row) {
+ for (uint8_t col = 0; col < MATRIX_COLS; ++col) {
+ backlight_set_key_color(row, col, custom_color_map[row][col]);
}
- #endif
+ }
}
-void matrix_init_user(void) {
- if (!eeconfig_is_enabled()) {
- eeconfig_init();
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+ static uint8_t last_effect;
+ switch (keycode) {
+ case DFAULTS:
+ if (IS_PRESSED(record->event)) set_backlight_defaults();
+ return false;
+ case BL_TOGG:
+ if (IS_PRESSED(record->event)) {
+ if (g_config.effect) {
+ last_effect = g_config.effect;
+ g_config.effect = 0;
+ } else {
+ g_config.effect = last_effect;
+ }
+ }
+ return false;
+ case EFFECT...EFFECT_END:
+ if (IS_PRESSED(record->event)) {
+ uint8_t effect = keycode - EFFECT;
+ g_config.effect = effect;
+ backlight_config_save();
+ }
+ return false;
}
-}
-uint32_t default_layer_state_set_kb(uint32_t state) {
- // persist changes to default layers
- eeconfig_update_default_layer(state);
- return state;
-} \ No newline at end of file
+ return true;
+}
+#endif
diff --git a/layouts/community/ortho_4x12/talljoe/config.h b/layouts/community/ortho_4x12/talljoe/config.h
new file mode 100644
index 0000000000..c2a9567bb3
--- /dev/null
+++ b/layouts/community/ortho_4x12/talljoe/config.h
@@ -0,0 +1,22 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include QMK_KEYBOARD_CONFIG_H
+#define SPACE_COUNT 3
+
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, K44, K45, K46, K48, K49, K4B, K4C \
+) \
+LAYOUT_ortho_4x12( \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
+ K40, K41, K0D, K42, K44, K45, K45, K46, K48, K49, K4B, K4C \
+)
+
+
+#endif //CONFIG_USER_H
diff --git a/layouts/community/ortho_4x12/talljoe/keymap.c b/layouts/community/ortho_4x12/talljoe/keymap.c
new file mode 100644
index 0000000000..7812add812
--- /dev/null
+++ b/layouts/community/ortho_4x12/talljoe/keymap.c
@@ -0,0 +1 @@
+// This space intentionally left blank