aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/newgame40/config.h75
-rw-r--r--keyboards/newgame40/info.json13
-rw-r--r--keyboards/newgame40/keymaps/default/config.h5
-rw-r--r--keyboards/newgame40/keymaps/default/keymap.c208
-rw-r--r--keyboards/newgame40/newgame40.c5
-rw-r--r--keyboards/newgame40/newgame40.h19
-rw-r--r--keyboards/newgame40/readme.md17
-rw-r--r--keyboards/newgame40/rules.mk74
-rw-r--r--layouts/default/ortho_4x10/default_ortho_4x10/keymap.c10
-rw-r--r--layouts/default/ortho_4x10/layout.json4
-rw-r--r--layouts/default/ortho_4x10/readme.md3
11 files changed, 433 insertions, 0 deletions
diff --git a/keyboards/newgame40/config.h b/keyboards/newgame40/config.h
new file mode 100644
index 000000000..01c9142f7
--- /dev/null
+++ b/keyboards/newgame40/config.h
@@ -0,0 +1,75 @@
1/*
2Copyright 2018 Go Takigawa <gotakigawa@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0xFEED
24#define PRODUCT_ID 0x0000
25#define DEVICE_VER 0x0001
26#define MANUFACTURER GoTakigawa
27#define PRODUCT NEWGAME40
28#define DESCRIPTION 4x10key keyboard
29
30/* key matrix size */
31#define MATRIX_ROWS 4
32#define MATRIX_COLS 10
33
34/* pin-out */
35#define MATRIX_ROW_PINS { F7, B1, B3, B2 }
36#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5 }
37#define UNUSED_PINS
38
39/* ws2812 RGB LED */
40#define RGB_DI_PIN F6
41#define RGBLIGHT_ANIMATIONS
42#define RGBLED_NUM 25 // Number of LEDs
43#define RGBLIGHT_HUE_STEP 10
44#define RGBLIGHT_SAT_STEP 17
45
46#ifndef IOS_DEVICE_ENABLE
47 #if RGBLED_NUM <= 6
48 #define RGBLIGHT_LIMIT_VAL 255
49 #else
50 #define RGBLIGHT_LIMIT_VAL 130
51 #endif
52 #define RGBLIGHT_VAL_STEP 17
53#else
54 #if RGBLED_NUM <= 6
55 #define RGBLIGHT_LIMIT_VAL 90
56 #else
57 #define RGBLIGHT_LIMIT_VAL 45
58 #endif
59 #define RGBLIGHT_VAL_STEP 4
60#endif
61#define RGBLIGHT_HUE_STEP 10
62#define RGBLIGHT_SAT_STEP 17
63
64#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
65 #define USB_MAX_POWER_CONSUMPTION 400
66#else
67 // fix iPhone and iPad power adapter issue
68 // iOS device need lessthan 100
69 #define USB_MAX_POWER_CONSUMPTION 100
70#endif
71/* COL2ROW or ROW2COL */
72#define DIODE_DIRECTION COL2ROW
73
74#define TAPPING_TERM 200
75
diff --git a/keyboards/newgame40/info.json b/keyboards/newgame40/info.json
new file mode 100644
index 000000000..023961408
--- /dev/null
+++ b/keyboards/newgame40/info.json
@@ -0,0 +1,13 @@
1{
2 "keyboard_name": "NEWGAME40",
3 "url": "",
4 "maintainer": "qmk",
5 "width": 10,
6 "height": 4,
7 "layouts": {
8 "LAYOUT_ortho_4x10": {
9 "key_count": 40,
10 "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":6, "y":1}, {"x":7, "y":1}, {"x":8, "y":1}, {"x":9, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}]
11 }
12 }
13}
diff --git a/keyboards/newgame40/keymaps/default/config.h b/keyboards/newgame40/keymaps/default/config.h
new file mode 100644
index 000000000..d533d806c
--- /dev/null
+++ b/keyboards/newgame40/keymaps/default/config.h
@@ -0,0 +1,5 @@
1
2
3#pragma once
4
5// place overrides here
diff --git a/keyboards/newgame40/keymaps/default/keymap.c b/keyboards/newgame40/keymaps/default/keymap.c
new file mode 100644
index 000000000..b42fef00f
--- /dev/null
+++ b/keyboards/newgame40/keymaps/default/keymap.c
@@ -0,0 +1,208 @@
1/* Copyright 2018 GoTakigawa
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17 #include QMK_KEYBOARD_H
18
19 extern keymap_config_t keymap_config;
20
21enum layers {
22 _QWERTY,
23 _COLEMAK,
24 _DVORAK,
25 _EUCALYN,
26 _LOWER,
27 _RAISE,
28 _ADJUST,
29};
30
31 enum custom_keycodes {
32 QWERTY = SAFE_RANGE,
33 COLEMAK,
34 DVORAK,
35 LOWER,
36 RAISE,
37 EUCALYN,
38 ADJUST,
39 };
40
41 // Fillers to make layering more clear
42 #define LOWER MO(_LOWER)
43 #define RAISE MO(_RAISE)
44
45 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
46
47 /* Qwerty
48 * ,---------------------------------------------------------------------.
49 * | Q | W | E | R | T | Y | U | I | O | P |
50 * |------+------+------+------+------+------|------+------+------+------|
51 * | A | S | D | F | G | H | J | K | L | - |
52 * |------+------+------+------+------+------+-------------+------+------|
53 * | Z | X | C | V | B | N | M | , | . | / |
54 * |-------------+------+------+------+------+------+------+------+------'
55 * |Shift | GUI |Lower | Ctrl |Space | Bksp |Enter |Raise | Left |Right |
56 * `---------------------------------------------------------------------'
57 */
58 [_QWERTY] = LAYOUT_ortho_4x10( \
59 KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \
60 KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_MINS, \
61 KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, \
62 KC_LSFT, KC_LGUI, LT(_LOWER,KC_LANG2), KC_LCTL, KC_SPC, KC_BSPC, KC_ENT, LT(_RAISE,KC_LANG1), KC_LEFT, KC_RGHT\
63 ),
64
65 /* Colemak
66 * ,---------------------------------------------------------------------.
67 * | Q | W | F | P | G | J | L | U | Y | - |
68 * |------+------+------+------+------+------|------+------+------+------|
69 * | A | R | S | T | D | H | N | E | I | O |
70 * |------+------+------+------+------+------+-------------+------+------|
71 * | Z | X | C | V | B | K | M | , | . | / |
72 * |-------------+------+------+------+------+------+------+------+------'
73 * |Shift | GUI |Lower | Ctrl |Space | Bksp |Enter |Raise | Left |Right |
74 * `---------------------------------------------------------------------'
75 */
76 [_COLEMAK] = LAYOUT_ortho_4x10( \
77 KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_MINS, \
78 KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, \
79 KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, \
80 KC_LSFT, KC_LGUI, LT(_LOWER,KC_LANG2), KC_LCTL, KC_SPC, KC_BSPC, KC_ENT, LT(_RAISE,KC_LANG1), KC_LEFT, KC_RGHT\
81 ),
82
83 /* Dvorak
84 * ,---------------------------------------------------------------------.
85 * | " | , | . | P | Y | F | G | C | R | L |
86 * |------+------+------+------+------+------|------+------+------+------|
87 * | A | O | E | U | I | D | H | T | N | S |
88 * |------+------+------+------+------+------+-------------+------+------|
89 * | ; | Q | J | K | X | B | M | W | V | Z |
90 * |-------------+------+------+------+------+------+------+------+------'
91 * |Shift | GUI |Lower | Ctrl |Space | Bksp |Enter |Raise | Left |Right |
92 * `---------------------------------------------------------------------'
93 */
94 [_DVORAK] = LAYOUT_ortho_4x10( \
95 KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, \
96 KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, \
97 KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, \
98 KC_LSFT, KC_LGUI, LT(_LOWER,KC_LANG2), KC_LCTL, KC_SPC, KC_BSPC, KC_ENT, LT(_RAISE,KC_LANG1), KC_LEFT, KC_RGHT\
99 ),
100
101 /* Lower
102 * ,---------------------------------------------------------------------.
103 * | Esc | | | | | | | | | |
104 * |------+------+------+------+------+------|------+------+------+------|
105 * | | | | | | | | | | |
106 * |------+------+------+------+------+------+-------------+------+------|
107 * | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 |
108 * |-------------+------+------+------+------+------+------+------+------'
109 * | F1 | F2 | | F3 | F4 | F5 | F6 | | F7 | F8 |
110 * `---------------------------------------------------------------------'
111 */
112 [_LOWER] = LAYOUT_ortho_4x10( \
113 KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
114 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
115 KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, \
116 KC_F1, KC_F2, _______, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_F7, KC_F8 \
117 ),
118
119 /* Raise
120 * ,---------------------------------------------------------------------.
121 * | 1 | 2 |  3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
122 * |------+------+------+------+------+------|------+------+------+------|
123 * | ! | " | # | $ | % | & | ' | (  | ) | _ |
124 * |------+------+------+------+------+------+-------------+------+------|
125 * | = | ¥ | { | } | * | ~ | | | < | > | ? |
126 * |-------------+------+------+------+------+------+------+------+------'
127 * | F1 | Alt | | [ | ] | ; | : | | \ | / |
128 * `---------------------------------------------------------------------'
129 */
130 [_RAISE] = LAYOUT_ortho_4x10( \
131 KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, \
132 KC_EXLM, KC_DQT, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_UNDS, \
133 KC_EQL, KC_JYEN, KC_LCBR, KC_RCBR, KC_ASTR, KC_TILD, KC_PIPE, KC_LABK, KC_RABK, KC_QUES, \
134 KC_F1, KC_LALT, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, _______, KC_BSLS, KC_SLSH \
135 ),
136
137 /* EUCALYN
138 * ,---------------------------------------------------------------------.
139 * | Q | W | , | . | ; | M | R | D | Y | P |
140 * |------+------+------+------+------+------|------+------+------+------|
141 * | A | O | E | I | U | G | T | K | S | N |
142 * |------+------+------+------+------+------+-------------+------+------|
143 * | Z | X | C | V | F | B | H | J | L | / |
144 * `-------------+------+------+------+------+------+------+-------------'
145 * |Shift | GUI |Lower | Ctrl |Space | Bksp |Enter |Raise | Left |Right |
146 * `---------------------------------------------------------------------'
147 */
148 [_EUCALYN] = LAYOUT_ortho_4x10( \
149 KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN, KC_M, KC_R, KC_D, KC_Y, KC_P, \
150 KC_A, KC_O, KC_E, KC_I, KC_U, KC_G, KC_T, KC_K, KC_S, KC_N, \
151 KC_Z, KC_X, KC_C, KC_V, KC_F, KC_B, KC_H, KC_J, KC_L, KC_SLSH, \
152 KC_LSFT, KC_LGUI, LT(_LOWER,KC_LANG2), KC_LCTL, KC_SPC, KC_BSPC, KC_ENT, LT(_RAISE,KC_LANG1), KC_LEFT, KC_RGHT\
153 ),
154
155 /* Adjust (Lower + Raise)
156 * ,---------------------------------------------------------------------.
157 * | |RGB Tg|RGB Md|Hue Up|Hue Dn|Sat Up|Sat Dn|Val Up|Val Dn| |
158 * |------+------+------+------+------+------.------+------+------+------|
159 * | | | |Aud on|Audoff|AGnorm|AGswap| |BL TOG|BL STP|
160 * |------+------+------+------+------+------+------+------+------+------|
161 * |Qwerty|Colemk|Dvorak|Eucalyn| | | | | | |
162 * |------+------+------+------+------+------+------+------+------+------|
163 * | | | | | | | | | | |
164 * `---------------------------------------------------------------------'
165 */
166 [_ADJUST] = LAYOUT_ortho_4x10( \
167 _______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, \
168 _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, BL_TOGG, BL_STEP, \
169 QWERTY, COLEMAK, DVORAK, EUCALYN, _______, _______, _______, _______, _______, _______, \
170 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
171 )
172
173
174 };
175
176 uint32_t layer_state_set_user(uint32_t state) {
177 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
178 }
179
180 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
181 switch (keycode) {
182 case QWERTY:
183 if (record->event.pressed) {
184 set_single_persistent_default_layer(_QWERTY);
185 }
186 return false;
187 break;
188 case COLEMAK:
189 if (record->event.pressed) {
190 set_single_persistent_default_layer(_COLEMAK);
191 }
192 return false;
193 break;
194 case DVORAK:
195 if (record->event.pressed) {
196 set_single_persistent_default_layer(_DVORAK);
197 }
198 return false;
199 break;
200 case EUCALYN:
201 if (record->event.pressed) {
202 set_single_persistent_default_layer(_EUCALYN);
203 }
204 return false;
205 break;
206 }
207 return true;
208 }
diff --git a/keyboards/newgame40/newgame40.c b/keyboards/newgame40/newgame40.c
new file mode 100644
index 000000000..e55b25b3d
--- /dev/null
+++ b/keyboards/newgame40/newgame40.c
@@ -0,0 +1,5 @@
1#include "newgame40.h"
2
3void matrix_init_kb(void) {
4 matrix_init_user();
5}
diff --git a/keyboards/newgame40/newgame40.h b/keyboards/newgame40/newgame40.h
new file mode 100644
index 000000000..6044f3765
--- /dev/null
+++ b/keyboards/newgame40/newgame40.h
@@ -0,0 +1,19 @@
1#ifndef NEWGAME40_H
2#define NEWGAME40_H
3
4#include "quantum.h"
5
6#define LAYOUT_ortho_4x10( \
7 k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, \
8 k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, \
9 k301, k302, k303, k304, k305, k306, k307, k308, k309, k310, \
10 k401, k402, k403, k404, k405, k406, k407, k408, k409, k410 \
11) \
12{ \
13 {k101, k102, k103, k104, k105, k106, k107, k108, k109, k110}, \
14 {k201, k202, k203, k204, k205, k206, k207, k208, k209, k210}, \
15 {k301, k302, k303, k304, k305, k306, k307, k308, k309, k310}, \
16 {k401, k402, k403, k404, k405, k406, k407, k408, k409, k410} \
17}
18
19#endif
diff --git a/keyboards/newgame40/readme.md b/keyboards/newgame40/readme.md
new file mode 100644
index 000000000..2aa568cfb
--- /dev/null
+++ b/keyboards/newgame40/readme.md
@@ -0,0 +1,17 @@
1# NEWGAME40
2
3![NEWGAME40](https://i.imgur.com/HtujXda.jpg)
4
540% (4x10) ortholinear keyboard.
6
7Keyboard Maintainer:
8[GoTakigawa](https://github.com/GoTakigawa)
9[@Go_Drums](https://twitter.com/Go_Drums)
10Hardware Supported: The NEWGAME40 PCBs, ProMicro supported
11Hardware Availability: Group buy soon
12
13Make example for this keyboard (after setting up your build environment):
14
15 make newgame40:default
16
17See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/newgame40/rules.mk b/keyboards/newgame40/rules.mk
new file mode 100644
index 000000000..cca40ce8e
--- /dev/null
+++ b/keyboards/newgame40/rules.mk
@@ -0,0 +1,74 @@
1# MCU name
2#MCU = at90usb1287
3MCU = atmega32u4
4
5# Processor frequency.
6# This will define a symbol, F_CPU, in all source code files equal to the
7# processor frequency in Hz. You can then use this symbol in your source code to
8# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
9# automatically to create a 32-bit value in your source code.
10#
11# This will be an integer division of F_USB below, as it is sourced by
12# F_USB after it has run through any CPU prescalers. Note that this value
13# does not *change* the processor frequency - it should merely be updated to
14# reflect the processor speed set externally so that the code can use accurate
15# software delays.
16F_CPU = 16000000
17
18#
19# LUFA specific
20#
21# Target architecture (see library "Board Types" documentation).
22ARCH = AVR8
23
24# Input clock frequency.
25# This will define a symbol, F_USB, in all source code files equal to the
26# input clock frequency (before any prescaling is performed) in Hz. This value may
27# differ from F_CPU if prescaling is used on the latter, and is required as the
28# raw input clock is fed directly to the PLL sections of the AVR for high speed
29# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
30# at the end, this will be done automatically to create a 32-bit value in your
31# source code.
32#
33# If no clock division is performed on the input clock inside the AVR (via the
34# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
35F_USB = $(F_CPU)
36
37# Interrupt driven control endpoint task(+60)
38OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
39
40
41# Boot Section Size in *bytes*
42# Teensy halfKay 512
43# Teensy++ halfKay 1024
44# Atmel DFU loader 4096
45# LUFA bootloader 4096
46# USBaspLoader 2048
47BOOTLOADER = caterina
48
49# Build Options
50# change to "no" to disable the options, or define them in the Makefile in
51# the appropriate keymap folder that will get included automatically
52#
53BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration(+1000)
54MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
55EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
56CONSOLE_ENABLE = no # Console for debug(+400)
57COMMAND_ENABLE = no # Commands for debug and configuration
58NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
59BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
60MIDI_ENABLE = no # MIDI controls
61AUDIO_ENABLE = no # Audio output on port C6
62UNICODE_ENABLE = yes # Unicode
63BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
64RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
65IOS_DEVICE_ENABLE = no # connect to IOS Device
66
67 ifeq ($(strip $(IOS_DEVICE_ENABLE )), yes)
68 OPT_DEFS += -DIOS_DEVICE_ENABLE
69 endif
70
71# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
72SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
73
74LAYOUTS = ortho_4x10
diff --git a/layouts/default/ortho_4x10/default_ortho_4x10/keymap.c b/layouts/default/ortho_4x10/default_ortho_4x10/keymap.c
new file mode 100644
index 000000000..3f6285e2d
--- /dev/null
+++ b/layouts/default/ortho_4x10/default_ortho_4x10/keymap.c
@@ -0,0 +1,10 @@
1#include QMK_KEYBOARD_H
2
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4 [0] = LAYOUT_ortho_4x10(
5 KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J,
6 KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J,
7 KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J,
8 KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_J
9 )
10};
diff --git a/layouts/default/ortho_4x10/layout.json b/layouts/default/ortho_4x10/layout.json
new file mode 100644
index 000000000..86f098e27
--- /dev/null
+++ b/layouts/default/ortho_4x10/layout.json
@@ -0,0 +1,4 @@
1["","","","","","","","","",""],
2["","","","","","","","","",""],
3["","","","","","","","","",""],
4["","","","","","","","","",""]
diff --git a/layouts/default/ortho_4x10/readme.md b/layouts/default/ortho_4x10/readme.md
new file mode 100644
index 000000000..c5c29251c
--- /dev/null
+++ b/layouts/default/ortho_4x10/readme.md
@@ -0,0 +1,3 @@
1# ortho_4x10
2
3 LAYOUT_ortho_4x10