aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlesh Wong <klesh@qq.com>2020-07-31 02:08:17 +0800
committerGitHub <noreply@github.com>2020-07-30 11:08:17 -0700
commit5d0c38794f6c9b15f457127437360e5fc56e0a97 (patch)
treea32fc31501ac1c2980490db8bc6d1ded977577f9
parent83c12a516b3d0c1b603bce28a55bdeba476311df (diff)
downloadqmk_firmware-5d0c38794f6c9b15f457127437360e5fc56e0a97.tar.gz
qmk_firmware-5d0c38794f6c9b15f457127437360e5fc56e0a97.zip
[Keyboard] Add new keyboard ks63 handwired (#9712)
* [feature] add ks63 split keyboard * [bugfix] unable to compile and some rows are not working * [feature] add info.json / update keymap * [bugfix] keymap and fix slave not working issue * [bugfix] keyboard unaviable on cold boot / unable to reset the board * [misc] fine tune keymap * [misc] fine tune keymap * ... * ... * ... * [misc] adjust brackets position * [misc] add readme link * [misc] comply to coding convention * [misc] add default keymap readme file * Update keyboards/handwired/ks63/README.md * Update keyboards/handwired/ks63/ks63.h * Update keyboards/handwired/ks63/keymaps/default/keymap.c * Update keyboards/handwired/ks63/keymaps/default/keymap.c * Update keyboards/handwired/ks63/keymaps/default/keymap.c * Update keyboards/handwired/ks63/keymaps/default/keymap.c * Update keyboards/handwired/ks63/keymaps/default/keymap.c * Update keyboards/handwired/ks63/keymaps/default/keymap.c * Update keyboards/handwired/ks63/rules.mk * Update keyboards/handwired/ks63/README.md * Update keyboards/handwired/ks63/keymaps/default/keymap.c * [misc] to lowercase filename * Update keyboards/handwired/ks63/rules.mk * Update keyboards/handwired/ks63/rules.mk * Update keyboards/handwired/ks63/config.h
-rw-r--r--keyboards/handwired/ks63/config.h81
-rw-r--r--keyboards/handwired/ks63/info.json345
-rw-r--r--keyboards/handwired/ks63/keymaps/default/keymap.c40
-rw-r--r--keyboards/handwired/ks63/keymaps/default/readme.md5
-rw-r--r--keyboards/handwired/ks63/ks63.c1
-rw-r--r--keyboards/handwired/ks63/ks63.h23
-rw-r--r--keyboards/handwired/ks63/readme.md15
-rw-r--r--keyboards/handwired/ks63/rules.mk24
8 files changed, 534 insertions, 0 deletions
diff --git a/keyboards/handwired/ks63/config.h b/keyboards/handwired/ks63/config.h
new file mode 100644
index 000000000..e49d09067
--- /dev/null
+++ b/keyboards/handwired/ks63/config.h
@@ -0,0 +1,81 @@
1/*
2Copyright 2012 Jun Wako <wakojun@gmail.com>
3Copyright 2015 Jack Humbert
4
5This program is free software: you can redistribute it and/or modify
6it under the terms of the GNU General Public License as published by
7the Free Software Foundation, either version 2 of the License, or
8(at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#pragma once
20
21#include "config_common.h"
22
23/* USB Device descriptor parameter */
24#define VENDOR_ID 0xFEED
25#define PRODUCT_ID 0x3061
26#define DEVICE_VER 0x0001
27#define MANUFACTURER kleshwong
28#define PRODUCT ks63
29
30/* key matrix size */
31#define MATRIX_ROWS 10
32#define MATRIX_COLS 8
33
34/* key matrix pins */
35#define MATRIX_ROW_PINS { B5, B4, E6, D7, C6 }
36#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4 }
37
38#define DIODE_DIRECTION COL2ROW
39
40/* mouse config */
41#define MOUSEKEY_INTERVAL 20
42#define MOUSEKEY_DELAY 0
43#define MOUSEKEY_TIME_TO_MAX 60
44#define MOUSEKEY_MAX_SPEED 7
45#define MOUSEKEY_WHEEL_DELAY 0
46
47/* Set 0 if debouncing isn't needed */
48#define DEBOUNCE 5
49
50/* serial.c configuration for split keyboard */
51#define SOFT_SERIAL_PIN D0
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/* Enables This makes it easier for fast typists to use dual-function keys */
59#define PERMISSIVE_HOLD
60
61/*
62 * Feature disable options
63 * These options are also useful to firmware size reduction.
64 */
65
66/* disable debug print */
67// #define NO_DEBUG
68
69/* disable print */
70// #define NO_PRINT
71
72/* disable action features */
73//#define NO_ACTION_LAYER
74//#define NO_ACTION_TAPPING
75//#define NO_ACTION_ONESHOT
76//#define NO_ACTION_MACRO
77//#define NO_ACTION_FUNCTION
78
79#define MASTER_LEFT
80#define USE_SERIAL
81
diff --git a/keyboards/handwired/ks63/info.json b/keyboards/handwired/ks63/info.json
new file mode 100644
index 000000000..349cfaa67
--- /dev/null
+++ b/keyboards/handwired/ks63/info.json
@@ -0,0 +1,345 @@
1{
2 "keyboard_name": "ks60",
3 "url": "",
4 "maintainer": "Klesh Wong",
5 "width": 15,
6 "height": 5,
7 "layouts": {
8 "LAYOUT": {
9 "layout": [
10 {
11 "label": "~",
12 "x": 0,
13 "y": 0
14 },
15 {
16 "label": "!",
17 "x": 1,
18 "y": 0
19 },
20 {
21 "label": "@",
22 "x": 2,
23 "y": 0
24 },
25 {
26 "label": "#",
27 "x": 3,
28 "y": 0
29 },
30 {
31 "label": "$",
32 "x": 4,
33 "y": 0
34 },
35 {
36 "label": "%",
37 "x": 5,
38 "y": 0
39 },
40 {
41 "label": "^",
42 "x": 6,
43 "y": 0
44 },
45 {
46 "label": "&",
47 "x": 7,
48 "y": 0
49 },
50 {
51 "label": "*",
52 "x": 8,
53 "y": 0
54 },
55 {
56 "label": "(",
57 "x": 9,
58 "y": 0
59 },
60 {
61 "label": ")",
62 "x": 10,
63 "y": 0
64 },
65 {
66 "label": "_",
67 "x": 11,
68 "y": 0
69 },
70 {
71 "label": "+",
72 "x": 12,
73 "y": 0
74 },
75 {
76 "label": "Backspace",
77 "x": 13,
78 "y": 0,
79 "w": 2
80 },
81 {
82 "label": "Tab",
83 "x": 0,
84 "y": 1,
85 "w": 1.5
86 },
87 {
88 "label": "Q",
89 "x": 1.5,
90 "y": 1
91 },
92 {
93 "label": "W",
94 "x": 2.5,
95 "y": 1
96 },
97 {
98 "label": "E",
99 "x": 3.5,
100 "y": 1
101 },
102 {
103 "label": "R",
104 "x": 4.5,
105 "y": 1
106 },
107 {
108 "label": "T",
109 "x": 5.5,
110 "y": 1
111 },
112 {
113 "label": "Y",
114 "x": 6.5,
115 "y": 1
116 },
117 {
118 "label": "U",
119 "x": 7.5,
120 "y": 1
121 },
122 {
123 "label": "I",
124 "x": 8.5,
125 "y": 1
126 },
127 {
128 "label": "O",
129 "x": 9.5,
130 "y": 1
131 },
132 {
133 "label": "P",
134 "x": 10.5,
135 "y": 1
136 },
137 {
138 "label": "{",
139 "x": 11.5,
140 "y": 1
141 },
142 {
143 "label": "}",
144 "x": 12.5,
145 "y": 1
146 },
147 {
148 "label": "|",
149 "x": 13.5,
150 "y": 1,
151 "w": 1.5
152 },
153 {
154 "label": "Caps Lock",
155 "x": 0,
156 "y": 2,
157 "w": 1.75
158 },
159 {
160 "label": "A",
161 "x": 1.75,
162 "y": 2
163 },
164 {
165 "label": "S",
166 "x": 2.75,
167 "y": 2
168 },
169 {
170 "label": "D",
171 "x": 3.75,
172 "y": 2
173 },
174 {
175 "label": "F",
176 "x": 4.75,
177 "y": 2
178 },
179 {
180 "label": "G",
181 "x": 5.75,
182 "y": 2
183 },
184 {
185 "label": "H",
186 "x": 6.75,
187 "y": 2
188 },
189 {
190 "label": "J",
191 "x": 7.75,
192 "y": 2
193 },
194 {
195 "label": "K",
196 "x": 8.75,
197 "y": 2
198 },
199 {
200 "label": "L",
201 "x": 9.75,
202 "y": 2
203 },
204 {
205 "label": ":",
206 "x": 10.75,
207 "y": 2
208 },
209 {
210 "label": "\"",
211 "x": 11.75,
212 "y": 2
213 },
214 {
215 "label": "Enter",
216 "x": 12.75,
217 "y": 2,
218 "w": 2.25
219 },
220 {
221 "label": "Shift",
222 "x": 0,
223 "y": 3,
224 "w": 2.25
225 },
226 {
227 "label": "Z",
228 "x": 2.25,
229 "y": 3
230 },
231 {
232 "label": "X",
233 "x": 3.25,
234 "y": 3
235 },
236 {
237 "label": "C",
238 "x": 4.25,
239 "y": 3
240 },
241 {
242 "label": "V",
243 "x": 5.25,
244 "y": 3
245 },
246 {
247 "label": "B",
248 "x": 6.25,
249 "y": 3
250 },
251 {
252 "label": "N",
253 "x": 7.25,
254 "y": 3
255 },
256 {
257 "label": "M",
258 "x": 8.25,
259 "y": 3
260 },
261 {
262 "label": "<",
263 "x": 9.25,
264 "y": 3
265 },
266 {
267 "label": ">",
268 "x": 10.25,
269 "y": 3
270 },
271 {
272 "label": "?",
273 "x": 11.25,
274 "y": 3
275 },
276 {
277 "label": "Shift",
278 "x": 12.25,
279 "y": 3,
280 "w": 2.75
281 },
282 {
283 "label": "Ctrl",
284 "x": 0,
285 "y": 4,
286 "w": 1.25
287 },
288 {
289 "label": "Win",
290 "x": 1.25,
291 "y": 4,
292 "w": 1.25
293 },
294 {
295 "label": "Alt",
296 "x": 2.5,
297 "y": 4,
298 "w": 1.25
299 },
300 {
301 "label": "Space",
302 "x": 3.75,
303 "y": 4,
304 "w": 2.25
305 },
306 {
307 "label": "Esc",
308 "x": 6,
309 "y": 4,
310 "w": 1.25
311 },
312 {
313 "label": "Space",
314 "x": 7.25,
315 "y": 4,
316 "w": 2.75
317 },
318 {
319 "label": "\u2190",
320 "x": 10,
321 "y": 4,
322 "w": 1.25
323 },
324 {
325 "label": "\u2193",
326 "x": 11.25,
327 "y": 4,
328 "w": 1.25
329 },
330 {
331 "label": "\u2191",
332 "x": 12.5,
333 "y": 4,
334 "w": 1.25
335 },
336 {
337 "label": "\u2192",
338 "x": 13.75,
339 "y": 4,
340 "w": 1.25
341 }
342 ]
343 }
344 }
345}
diff --git a/keyboards/handwired/ks63/keymaps/default/keymap.c b/keyboards/handwired/ks63/keymaps/default/keymap.c
new file mode 100644
index 000000000..6727e96f8
--- /dev/null
+++ b/keyboards/handwired/ks63/keymaps/default/keymap.c
@@ -0,0 +1,40 @@
1#include QMK_KEYBOARD_H
2
3const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
4
5 [0] = LAYOUT(
6 KC_GRV , 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_BSPC,
7 LT(3, 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_BSLS,
8 LT(2, KC_CAPS), KC_A , KC_S , KC_D , KC_F , KC_G, KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT,
9 LSFT_T(KC_GRV), KC_Z , KC_X , KC_C , KC_V , KC_B, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, RSFT_T(KC_BSPC),
10 LCTL_T(KC_MINS), KC_LGUI, LALT_T(KC_EQL) , KC_SPC , LT(4, KC_ESC), LT(1, KC_SPC) , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT),
11
12 [1] = LAYOUT(
13 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
14 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_F7 , KC_F8 , KC_F9 , KC_F12 , KC_TRNS, KC_TRNS, KC_TRNS,
15 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_F4 , KC_F5 , KC_F6 , KC_F11 , KC_TRNS, KC_TRNS,
16 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS , KC_F1 , KC_F2 , KC_F3 , KC_F10 , KC_TRNS,
17 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
18
19 [2] = LAYOUT(
20 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
21 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_7 , KC_8 , KC_9 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
22 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PMNS, KC_4 , KC_5 , KC_6 , KC_PLUS, KC_TRNS, KC_TRNS,
23 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAST, KC_1 , KC_2 , KC_3 , KC_PSLS, KC_TRNS,
24 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0 , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
25
26 [3] = LAYOUT(
27 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
28 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, S(KC_7), S(KC_8), S(KC_9), KC_RCBR, KC_TRNS, KC_TRNS, KC_TRNS,
29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LPRN, S(KC_4), S(KC_5), S(KC_6), KC_RPRN, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, S(KC_1), S(KC_2), S(KC_3), KC_RBRC, KC_TRNS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
32
33 [4] = LAYOUT(
34 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_DEL,
35 KC_TRNS, A(KC_F4),C(KC_EQL), KC_END, C(KC_0), LCA(KC_DEL), KC_WBAK, C(KC_PGUP), C(KC_PGDN), KC_WFWD, C(KC_P), KC_TRNS, KC_TRNS, KC_MPLY,
36 KC_TRNS, KC_HOME, C(KC_MINS), KC_DEL , KC_RGHT, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLU, KC_TRNS, KC_TRNS,
37 KC_TRNS, KC_SLEP, KC_TRNS, KC_SYSTEM_POWER, KC_TRNS, KC_LEFT, KC_MNXT, KC_MPRV, KC_PGUP, KC_PGDN, KC_VOLD, KC_TRNS,
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
39
40};
diff --git a/keyboards/handwired/ks63/keymaps/default/readme.md b/keyboards/handwired/ks63/keymaps/default/readme.md
new file mode 100644
index 000000000..26537fb51
--- /dev/null
+++ b/keyboards/handwired/ks63/keymaps/default/readme.md
@@ -0,0 +1,5 @@
1# The default keymap for ks63
2
3This is the default keymap for kb63,
4
5it consists of a base layer with QWERTY layout, a momentary function-keys-layer, a number-keys layer, a symbol-keys-layer and a hotkeys-multimediakeys-combo layer.
diff --git a/keyboards/handwired/ks63/ks63.c b/keyboards/handwired/ks63/ks63.c
new file mode 100644
index 000000000..bd48359a8
--- /dev/null
+++ b/keyboards/handwired/ks63/ks63.c
@@ -0,0 +1 @@
#include "ks63.h"
diff --git a/keyboards/handwired/ks63/ks63.h b/keyboards/handwired/ks63/ks63.h
new file mode 100644
index 000000000..05006f593
--- /dev/null
+++ b/keyboards/handwired/ks63/ks63.h
@@ -0,0 +1,23 @@
1#pragma once
2
3#include "quantum.h"
4
5#define LAYOUT( \
6 K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, \
7 K100, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
8 K200, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, \
9 K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \
10 K400, K401, K403, K404, K406, K408, K410, K411, K413, K414 \
11) { \
12 { K000, K001, K002, K003, K004, K005, K006 }, \
13 { K100, KC_NO, K102, K103, K104, K105, K106 }, \
14 { K200, KC_NO, K202, K203, K204, K205, K206 }, \
15 { KC_NO, K301, K302, K303, K304, K305, K306 }, \
16 { K400, K401, KC_NO, K403, K404, KC_NO, K406 }, \
17 \
18 { K007, K008, K009, K010, K011, K012, KC_NO, K014 }, \
19 { K107, K108, K109, K110, K111, K112, K113, K114 }, \
20 { K207, K208, K209, K210, K211, K212, K213, KC_NO }, \
21 { K307, K308, K309, K310, K311, KC_NO, K313, KC_NO }, \
22 { KC_NO, K408, KC_NO, K410, K411, KC_NO, K413, K414 } \
23}
diff --git a/keyboards/handwired/ks63/readme.md b/keyboards/handwired/ks63/readme.md
new file mode 100644
index 000000000..2bbd9fa69
--- /dev/null
+++ b/keyboards/handwired/ks63/readme.md
@@ -0,0 +1,15 @@
1# ks63
2
3![ks63](https://github.com/klesh/ks63/raw/master/images/ks63-finish-02.jpg)
4
5A handwired 63 keys split keyboard compatible with Default 60% layout. Let you keep your magic power while muggles can still use it as an ordinary keyboard
6
7* Keyboard Maintainer: [Klesh Wong](https://github.com/klesh)
8* Hardware Supported: Arduino ProMicro
9* Assembling Guide: [ks63](https://github.com/klesh/ks63)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make handwired/ks63:default
14
15See 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/handwired/ks63/rules.mk b/keyboards/handwired/ks63/rules.mk
new file mode 100644
index 000000000..a97b8ea70
--- /dev/null
+++ b/keyboards/handwired/ks63/rules.mk
@@ -0,0 +1,24 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = caterina
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = yes # Commands for debug and configuration
15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
18NKRO_ENABLE = no # USB Nkey Rollover
19BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
20RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output
23
24SPLIT_KEYBOARD = yes