aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/ortho5by12/config.h59
-rw-r--r--keyboards/ortho5by12/info.json137
-rw-r--r--keyboards/ortho5by12/keymaps/default/keymap.c215
-rw-r--r--keyboards/ortho5by12/ortho5by12.c30
-rw-r--r--keyboards/ortho5by12/ortho5by12.h57
-rw-r--r--keyboards/ortho5by12/readme.md55
-rw-r--r--keyboards/ortho5by12/rules.mk34
7 files changed, 587 insertions, 0 deletions
diff --git a/keyboards/ortho5by12/config.h b/keyboards/ortho5by12/config.h
new file mode 100644
index 000000000..629059ef0
--- /dev/null
+++ b/keyboards/ortho5by12/config.h
@@ -0,0 +1,59 @@
1/*
2Copyright 2019 Takuya Urakawa (dm9records.com)
3This program is free software: you can redistribute it and/or modify
4it under the terms of the GNU General Public License as published by
5the Free Software Foundation, either version 2 of the License, or
6(at your option) any later version.
7This program is distributed in the hope that it will be useful,
8but WITHOUT ANY WARRANTY; without even the implied warranty of
9MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10GNU General Public License for more details.
11You should have received a copy of the GNU General Public License
12along with this program. If not, see <http://www.gnu.org/licenses/>.
13*/
14
15#pragma once
16
17#include "config_common.h"
18
19/* USB Device descriptor parameter */
20/* VID & PID from vusb project, see tmk_core/protocol/vusb/USB-IDs-for-free.txt"*/
21// These VID/PID is not verified. Use at your own risk.
22#define VENDOR_ID 0x16C0
23#define PRODUCT_ID 0x27DB
24#define DEVICE_VER 0x0002
25#define MANUFACTURER /u/squeezeonein
26#define PRODUCT ortho5by12
27#define DESCRIPTION 12x5 ortholinear keyboard with through hole components
28
29/* key matrix size, duplex 10x6 */
30#define MATRIX_ROWS 10
31#define MATRIX_COLS 6
32
33/*
34 * Keyboard Matrix Assignments
35 *
36 * Change this to how you wired your keyboard
37 * COLS: AVR pins used for columns, left to right
38 * ROWS: AVR pins used for rows, top to bottom
39 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
40 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
41 *
42 0 1 2 3 4 5 6 7 8 9 */
43#define MATRIX_ROW_PINS { B5, B1, B2, B3, B4, C0, D5, D6, D7, B0 }
44#define MATRIX_COL_PINS { C2, D0, D1, D4, C3, C1 }
45#define UNUSED_PINS
46
47/* COL2ROW, ROW2COL*/
48#define DIODE_DIRECTION ROW2COL
49
50/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
51#define DEBOUNCE 5
52
53/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
54#define LOCKING_SUPPORT_ENABLE
55/* Locking resynchronize hack */
56#define LOCKING_RESYNC_ENABLE
57
58#define BOOTMAGIC_LITE_ROW 7
59#define BOOTMAGIC_LITE_COLUMN 2
diff --git a/keyboards/ortho5by12/info.json b/keyboards/ortho5by12/info.json
new file mode 100644
index 000000000..934e499a3
--- /dev/null
+++ b/keyboards/ortho5by12/info.json
@@ -0,0 +1,137 @@
1{
2 "keyboard_name": "ortho5by12",
3 "keyboard_folder": "ortho5by12",
4 "url": "https://github.com/itsnoteasy/misc/blob/master/ortho5by12.zip",
5 "maintainer": "itsnoteasy",
6 "width": 12,
7 "height": 5,
8 "layouts": {
9 "LAYOUT_ortho_5x12_1x2uC": {
10 "key_count": 59,
11 "layout": [
12 { "w": 1, "x": 0, "y": 0 },
13 { "w": 1, "x": 1, "y": 0 },
14 { "w": 1, "x": 2, "y": 0 },
15 { "w": 1, "x": 3, "y": 0 },
16 { "w": 1, "x": 4, "y": 0 },
17 { "w": 1, "x": 5, "y": 0 },
18 { "w": 1, "x": 6, "y": 0 },
19 { "w": 1, "x": 7, "y": 0 },
20 { "w": 1, "x": 8, "y": 0 },
21 { "w": 1, "x": 9, "y": 0 },
22 { "w": 1, "x": 10, "y": 0 },
23 { "w": 1, "x": 11, "y": 0 },
24 { "w": 1, "x": 0, "y": 1 },
25 { "w": 1, "x": 1, "y": 1 },
26 { "w": 1, "x": 2, "y": 1 },
27 { "w": 1, "x": 3, "y": 1 },
28 { "w": 1, "x": 4, "y": 1 },
29 { "w": 1, "x": 5, "y": 1 },
30 { "w": 1, "x": 6, "y": 1 },
31 { "w": 1, "x": 7, "y": 1 },
32 { "w": 1, "x": 8, "y": 1 },
33 { "w": 1, "x": 9, "y": 1 },
34 { "w": 1, "x": 10, "y": 1 },
35 { "w": 1, "x": 11, "y": 1 },
36 { "w": 1, "x": 0, "y": 2 },
37 { "w": 1, "x": 1, "y": 2 },
38 { "w": 1, "x": 2, "y": 2 },
39 { "w": 1, "x": 3, "y": 2 },
40 { "w": 1, "x": 4, "y": 2 },
41 { "w": 1, "x": 5, "y": 2 },
42 { "w": 1, "x": 6, "y": 2 },
43 { "w": 1, "x": 7, "y": 2 },
44 { "w": 1, "x": 8, "y": 2 },
45 { "w": 1, "x": 9, "y": 2 },
46 { "w": 1, "x": 10, "y": 2 },
47 { "w": 1, "x": 11, "y": 2 },
48 { "w": 1, "x": 0, "y": 3 },
49 { "w": 1, "x": 1, "y": 3 },
50 { "w": 1, "x": 2, "y": 3 },
51 { "w": 1, "x": 3, "y": 3 },
52 { "w": 1, "x": 4, "y": 3 },
53 { "w": 1, "x": 5, "y": 3 },
54 { "w": 1, "x": 6, "y": 3 },
55 { "w": 1, "x": 7, "y": 3 },
56 { "w": 1, "x": 8, "y": 3 },
57 { "w": 1, "x": 9, "y": 3 },
58 { "w": 1, "x": 10, "y": 3 },
59 { "w": 1, "x": 11, "y": 3 },
60 { "w": 1, "x": 0, "y": 4 },
61 { "w": 1, "x": 1, "y": 4 },
62 { "w": 1, "x": 2, "y": 4 },
63 { "w": 1, "x": 3, "y": 4 },
64 { "w": 1, "x": 4, "y": 4 },
65 { "w": 2, "x": 5, "y": 4 },
66 { "w": 1, "x": 7, "y": 4 },
67 { "w": 1, "x": 8, "y": 4 },
68 { "w": 1, "x": 9, "y": 4 },
69 { "w": 1, "x": 10, "y": 4 },
70 { "w": 1, "x": 11, "y": 4 } ]
71 },
72 "LAYOUT_ortho_5x12": {
73 "key_count": 60,
74 "layout": [
75 { "w": 1, "x": 0, "y": 0 },
76 { "w": 1, "x": 1, "y": 0 },
77 { "w": 1, "x": 2, "y": 0 },
78 { "w": 1, "x": 3, "y": 0 },
79 { "w": 1, "x": 4, "y": 0 },
80 { "w": 1, "x": 5, "y": 0 },
81 { "w": 1, "x": 6, "y": 0 },
82 { "w": 1, "x": 7, "y": 0 },
83 { "w": 1, "x": 8, "y": 0 },
84 { "w": 1, "x": 9, "y": 0 },
85 { "w": 1, "x": 10, "y": 0 },
86 { "w": 1, "x": 11, "y": 0 },
87 { "w": 1, "x": 0, "y": 1 },
88 { "w": 1, "x": 1, "y": 1 },
89 { "w": 1, "x": 2, "y": 1 },
90 { "w": 1, "x": 3, "y": 1 },
91 { "w": 1, "x": 4, "y": 1 },
92 { "w": 1, "x": 5, "y": 1 },
93 { "w": 1, "x": 6, "y": 1 },
94 { "w": 1, "x": 7, "y": 1 },
95 { "w": 1, "x": 8, "y": 1 },
96 { "w": 1, "x": 9, "y": 1 },
97 { "w": 1, "x": 10, "y": 1 },
98 { "w": 1, "x": 11, "y": 1 },
99 { "w": 1, "x": 0, "y": 2 },
100 { "w": 1, "x": 1, "y": 2 },
101 { "w": 1, "x": 2, "y": 2 },
102 { "w": 1, "x": 3, "y": 2 },
103 { "w": 1, "x": 4, "y": 2 },
104 { "w": 1, "x": 5, "y": 2 },
105 { "w": 1, "x": 6, "y": 2 },
106 { "w": 1, "x": 7, "y": 2 },
107 { "w": 1, "x": 8, "y": 2 },
108 { "w": 1, "x": 9, "y": 2 },
109 { "w": 1, "x": 10, "y": 2 },
110 { "w": 1, "x": 11, "y": 2 },
111 { "w": 1, "x": 0, "y": 3 },
112 { "w": 1, "x": 1, "y": 3 },
113 { "w": 1, "x": 2, "y": 3 },
114 { "w": 1, "x": 3, "y": 3 },
115 { "w": 1, "x": 4, "y": 3 },
116 { "w": 1, "x": 5, "y": 3 },
117 { "w": 1, "x": 6, "y": 3 },
118 { "w": 1, "x": 7, "y": 3 },
119 { "w": 1, "x": 8, "y": 3 },
120 { "w": 1, "x": 9, "y": 3 },
121 { "w": 1, "x": 10, "y": 3 },
122 { "w": 1, "x": 11, "y": 3 },
123 { "w": 1, "x": 0, "y": 4 },
124 { "w": 1, "x": 1, "y": 4 },
125 { "w": 1, "x": 2, "y": 4 },
126 { "w": 1, "x": 3, "y": 4 },
127 { "w": 1, "x": 4, "y": 4 },
128 { "w": 1, "x": 5, "y": 4 },
129 { "w": 1, "x": 6, "y": 4 },
130 { "w": 1, "x": 7, "y": 4 },
131 { "w": 1, "x": 8, "y": 4 },
132 { "w": 1, "x": 9, "y": 4 },
133 { "w": 1, "x": 10, "y": 4 },
134 { "w": 1, "x": 11, "y": 4 } ]
135 }
136 }
137}
diff --git a/keyboards/ortho5by12/keymaps/default/keymap.c b/keyboards/ortho5by12/keymaps/default/keymap.c
new file mode 100644
index 000000000..67fb80a32
--- /dev/null
+++ b/keyboards/ortho5by12/keymaps/default/keymap.c
@@ -0,0 +1,215 @@
1/* Copyright 2015-2017 Jack Humbert
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
19enum preonic_layers {
20 _QWERTY,
21 _COLEMAK,
22 _DVORAK,
23 _LOWER,
24 _RAISE,
25 _ADJUST
26};
27
28enum preonic_keycodes {
29 QWERTY = SAFE_RANGE,
30 COLEMAK,
31 DVORAK,
32 LOWER,
33 RAISE,
34 BACKLIT
35};
36
37const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
38
39/* Qwerty
40 * ,-----------------------------------------------------------------------------------.
41 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
42 * |------+------+------+------+------+------+------+------+------+------+------+------|
43 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
44 * |------+------+------+------+------+-------------+------+------+------+------+------|
45 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
46 * |------+------+------+------+------+------|------+------+------+------+------+------|
47 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
48 * |------+------+------+------+------+------+------+------+------+------+------+------|
49 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
50 * `-----------------------------------------------------------------------------------'
51 */
52[_QWERTY] = LAYOUT_ortho_5x12(
53 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
54 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
55 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
56 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
57 BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
58),
59
60/* Colemak
61 * ,-----------------------------------------------------------------------------------.
62 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
63 * |------+------+------+------+------+------+------+------+------+------+------+------|
64 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del |
65 * |------+------+------+------+------+-------------+------+------+------+------+------|
66 * | Esc | A | R | S | T | D | H | N | E | I | O | " |
67 * |------+------+------+------+------+------|------+------+------+------+------+------|
68 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
69 * |------+------+------+------+------+------+------+------+------+------+------+------|
70 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
71 * `-----------------------------------------------------------------------------------'
72 */
73[_COLEMAK] = LAYOUT_ortho_5x12(
74 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
75 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL,
76 KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
77 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
78 BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
79),
80
81/* Dvorak
82 * ,-----------------------------------------------------------------------------------.
83 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
84 * |------+------+------+------+------+------+------+------+------+------+------+------|
85 * | Tab | " | , | . | P | Y | F | G | C | R | L | Del |
86 * |------+------+------+------+------+-------------+------+------+------+------+------|
87 * | Esc | A | O | E | U | I | D | H | T | N | S | / |
88 * |------+------+------+------+------+------|------+------+------+------+------+------|
89 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
90 * |------+------+------+------+------+------+------+------+------+------+------+------|
91 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
92 * `-----------------------------------------------------------------------------------'
93 */
94[_DVORAK] = LAYOUT_ortho_5x12(
95 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
96 KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL,
97 KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
98 KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT,
99 BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
100),
101
102/* Lower
103 * ,-----------------------------------------------------------------------------------.
104 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
105 * |------+------+------+------+------+-------------+------+------+------+------+------|
106 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
107 * |------+------+------+------+------+-------------+------+------+------+------+------|
108 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
109 * |------+------+------+------+------+------|------+------+------+------+------+------|
110 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | | |
111 * |------+------+------+------+------+------+------+------+------+------+------+------|
112 * | | | | | | | | Next | Vol- | Vol+ | Play |
113 * `-----------------------------------------------------------------------------------'
114 */
115[_LOWER] = LAYOUT_ortho_5x12(
116 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
117 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
118 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
119 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
120 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
121),
122
123/* Raise
124 * ,-----------------------------------------------------------------------------------.
125 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
126 * |------+------+------+------+------+------+------+------+------+------+------+------|
127 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
128 * |------+------+------+------+------+-------------+------+------+------+------+------|
129 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
130 * |------+------+------+------+------+------|------+------+------+------+------+------|
131 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | | |
132 * |------+------+------+------+------+------+------+------+------+------+------+------|
133 * | | | | | | | | Next | Vol- | Vol+ | Play |
134 * `-----------------------------------------------------------------------------------'
135 */
136[_RAISE] = LAYOUT_ortho_5x12(
137 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
138 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
139 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
140 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
141 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
142),
143
144/* Adjust (Lower + Raise)
145 * ,-----------------------------------------------------------------------------------.
146 * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
147 * |------+------+------+------+------+------+------+------+------+------+------+------|
148 * | | Reset| | | | | | | | | | Del |
149 * |------+------+------+------+------+-------------+------+------+------+------+------|
150 * | | | |Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
151 * |------+------+------+------+------+------|------+------+------+------+------+------|
152 * | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | |
153 * |------+------+------+------+------+------+------+------+------+------+------+------|
154 * | | | | | | | | | | | |
155 * `-----------------------------------------------------------------------------------'
156 */
157[_ADJUST] = LAYOUT_ortho_5x12(
158 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
159 _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
160 _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
161 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
162 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
163)
164
165
166};
167
168bool process_record_user(uint16_t keycode, keyrecord_t *record) {
169 switch (keycode) {
170 case QWERTY:
171 if (record->event.pressed) {
172 set_single_persistent_default_layer(_QWERTY);
173 }
174 return false;
175 case COLEMAK:
176 if (record->event.pressed) {
177 set_single_persistent_default_layer(_COLEMAK);
178 }
179 return false;
180 case DVORAK:
181 if (record->event.pressed) {
182 set_single_persistent_default_layer(_DVORAK);
183 }
184 return false;
185 case LOWER:
186 if (record->event.pressed) {
187 layer_on(_LOWER);
188 update_tri_layer(_LOWER, _RAISE, _ADJUST);
189 } else {
190 layer_off(_LOWER);
191 update_tri_layer(_LOWER, _RAISE, _ADJUST);
192 }
193 return false;
194 case RAISE:
195 if (record->event.pressed) {
196 layer_on(_RAISE);
197 update_tri_layer(_LOWER, _RAISE, _ADJUST);
198 } else {
199 layer_off(_RAISE);
200 update_tri_layer(_LOWER, _RAISE, _ADJUST);
201 }
202 return false;
203 case BACKLIT:
204 if (record->event.pressed) {
205 register_code(KC_RSFT);
206 #ifdef BACKLIGHT_ENABLE
207 backlight_step();
208 #endif
209 } else {
210 unregister_code(KC_RSFT);
211 }
212 return false;
213 }
214 return true;
215};
diff --git a/keyboards/ortho5by12/ortho5by12.c b/keyboards/ortho5by12/ortho5by12.c
new file mode 100644
index 000000000..615ab9d04
--- /dev/null
+++ b/keyboards/ortho5by12/ortho5by12.c
@@ -0,0 +1,30 @@
1/* Copyright 2019 Takuya Urakawa (dm9records.com)
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#include "ortho5by12.h"
17
18void matrix_init_kb(void) {
19 setPinOutput(C4);
20 setPinOutput(C5);
21}
22
23bool led_update_kb(led_t led_state) {
24 bool res = led_update_user(led_state);
25 if(res) {
26 writePin(C4, led_state.num_lock);
27 writePin(C5, led_state.caps_lock);
28 }
29 return res;
30}
diff --git a/keyboards/ortho5by12/ortho5by12.h b/keyboards/ortho5by12/ortho5by12.h
new file mode 100644
index 000000000..84f59859d
--- /dev/null
+++ b/keyboards/ortho5by12/ortho5by12.h
@@ -0,0 +1,57 @@
1/* Copyright 2019 Yiancar
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#pragma once
18#define XXX KC_NO
19#include "quantum.h"
20
21#define LAYOUT_ortho_5x12( \
22 K00, K01, K02, K03, K04, K05, K10, K11, K12, K13, K14, K15, \
23 K20, K21, K22, K23, K24, K25, K30, K31, K32, K33, K34, K35, \
24 K40, K41, K42, K43, K44, K45, K50, K51, K52, K53, K54, K55, \
25 K60, K61, K62, K63, K64, K65, K70, K71, K72, K73, K74, K75, \
26 K80, K81, K82, K83, K84, K85, K90, K91, K92, K93, K94, K95 \
27) { \
28 { K01, K03, K05, K11, K13, K15 }, \
29 { K00, K02, K04, K10, K12, K14 }, \
30 { K20, K22, K24, K30, K32, K34 }, \
31 { K21, K23, K25, K31, K33, K35 }, \
32 { K41, K43, K45, K51, K53, K55 }, \
33 { K40, K42, K44, K50, K52, K54 }, \
34 { K60, K62, K64, K70, K72, K74 }, \
35 { K61, K63, K65, K71, K73, K75 }, \
36 { K81, K83, K85, K91, K93, K95 }, \
37 { K80, K82, K84, K90, K92, K94 } \
38}
39
40#define LAYOUT_ortho_5x12_1x2uC( \
41 K00, K01, K02, K03, K04, K05, K10, K11, K12, K13, K14, K15, \
42 K20, K21, K22, K23, K24, K25, K30, K31, K32, K33, K34, K35, \
43 K40, K41, K42, K43, K44, K45, K50, K51, K52, K53, K54, K55, \
44 K60, K61, K62, K63, K64, K65, K70, K71, K72, K73, K74, K75, \
45 K80, K81, K82, K83, K84, K85, K91, K92, K93, K94, K95 \
46) { \
47 { K01, K03, K05, K11, K13, K15 }, \
48 { K00, K02, K04, K10, K12, K14 }, \
49 { K20, K22, K24, K30, K32, K34 }, \
50 { K21, K23, K25, K31, K33, K35 }, \
51 { K41, K43, K45, K51, K53, K55 }, \
52 { K40, K42, K44, K50, K52, K54 }, \
53 { K60, K62, K64, K70, K72, K74 }, \
54 { K61, K63, K65, K71, K73, K75 }, \
55 { K81, K83, K85, K91, K93, K95 }, \
56 { K80, K82, K84, XXX, K92, K94 } \
57}
diff --git a/keyboards/ortho5by12/readme.md b/keyboards/ortho5by12/readme.md
new file mode 100644
index 000000000..8d059bdf4
--- /dev/null
+++ b/keyboards/ortho5by12/readme.md
@@ -0,0 +1,55 @@
1# ortho5by12 // Through Hole
2
3A Plaid-style 5x12 design with two indicator LEDs.
4
5Uses a Schottky 1N4729A/3.6V diode. This is left out of the Plaid BOM which is identical, except for number of 1N4148 diodes (60+attrition). I recommend using 10k resistors for the LEDs instead of the Plaid's 1.5k to make them less glaring. I reckon hsgw was just trying to shave down the parts cost by re-using the 1.5kohm.
6
7I use a spare PCB as the backplate since it has the same dimensions.
8
9This was developed on Linux Mint so you'll have to adapt the commands yourself if you run anything else.
10
11pic here: https://www.reddit.com/r/MechanicalKeyboards/comments/g0ukw4/ortho5by12_through_hole/
12
13* Keyboard Maintainer: [gipetto](https://github.com/itsnoteasy)
14* Hardware Supported: ATmega328P with V-USB
15* Hardware Availability: [PCB](https://github.com/itsnoteasy/misc/blob/master/ortho5by12.zip)
16
17Make example for this keyboard (after setting up your build environment):
18
19 make ortho5by12:default
20
21Flash firmware:
22
23 make ortho5by12:default:flash
24
25Bootloader doesn't seem to work for the time being. I deleted the last line in ortho5by12.hex and copied the USBasp bootloader onto the end in a text editor, then flashed over AVRISP using a Teensy 2.0 (following the [QMK ISP Flashing Guide](https://docs.qmk.fm/#/isp_flashing_guide)). I used a cut up MCU socket soldered to stripboard to make an ISP programming socket. Remember to make fuse in the USBasp directory on a new MCU.
26
27## ISP pinout:
28
29 R4
30
31 Reset SCK MISO
32
33 GND MOSI VCC
34
35 C5
36
37## A few build notes:
38
39I haven't found it easy to get into bootloader mode every time. sometimes there's no alternative but
40to use the ISP header, or pull the IC.
41
42Put the switch diodes in with the banded end down towards the switches. This gives the fastest scan rate. If you don't and go by the silkscreen then you can swap COL2ROW/ROW2COL from whatever it currently is. The speed penalty is negligible anyway. The silkscreen is probably wrong, so do the component placement from KiCad nightly; it caught me out.
43If you attempt to map the duplex matrix you will hate me so don't bother. I should have used one LED pin as an extra matrix pin, but in my naivete I thought it was used for a bootloader function. The duplexing is compensated for in a header file so you can use a standard Preonic keymap with any extra unavailable pins commented out. On the upside there's some funky twin LED code out there for Plaids which should be compatible.
44
45Boot and Reset switches have swapped position to my other PCB to ease routing - Boot is on the right.
46
47## Bootloader
48
49Use USBaspLoader from hsgw's repository.
50
51https://github.com/hsgw/USBaspLoader/tree/plaid
52
53See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions]
54(https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our
55[Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/ortho5by12/rules.mk b/keyboards/ortho5by12/rules.mk
new file mode 100644
index 000000000..465c5184f
--- /dev/null
+++ b/keyboards/ortho5by12/rules.mk
@@ -0,0 +1,34 @@
1# MCU name
2MCU = atmega328p
3
4# Bootloader selection
5# Teensy halfkay
6# Pro Micro caterina
7# Atmel DFU atmel-dfu
8# LUFA DFU lufa-dfu
9# QMK DFU qmk-dfu
10# atmega32a bootloadHID
11# ATmega328P USBasp
12BOOTLOADER = USBasp
13
14# Build Options
15# change yes to no to disable
16#
17BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
18MOUSEKEY_ENABLE = no # Mouse keys
19EXTRAKEY_ENABLE = yes # Audio control and System control
20CONSOLE_ENABLE = no # Console for debug
21COMMAND_ENABLE = no # Commands for debug and configuration
22# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
23SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
24# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
25NKRO_ENABLE = no # USB Nkey Rollover
26BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
27RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
28MIDI_ENABLE = no # MIDI support
29UNICODE_ENABLE = no # Unicode
30BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
31AUDIO_ENABLE = no # Audio output on port C6
32FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
33HD44780_ENABLE = no # Enable support for HD44780 based LCDs
34LAYOUTS_HAS_RGB = no