aboutsummaryrefslogtreecommitdiff
path: root/keyboards/wilba_tech/zeal60
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/wilba_tech/zeal60')
-rw-r--r--keyboards/wilba_tech/zeal60/config.h138
-rw-r--r--keyboards/wilba_tech/zeal60/info.json25
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/ansi_split_bs_rshift/config.h21
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/ansi_split_bs_rshift/keymap.c38
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/crd/config.h29
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/crd/keymap.c39
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/default/config.h20
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/default/keymap.c38
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/hhkb/config.h20
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/hhkb/keymap.c38
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/iso/config.h20
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/iso/keymap.c38
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/ryanmaclean/config.h21
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/ryanmaclean/keymap.c84
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/tusing/Makefile6
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/tusing/README.md80
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/tusing/config.h36
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/tusing/keymap.c48
-rw-r--r--keyboards/wilba_tech/zeal60/readme.md47
-rw-r--r--keyboards/wilba_tech/zeal60/rules.mk80
-rw-r--r--keyboards/wilba_tech/zeal60/zeal60.c18
-rw-r--r--keyboards/wilba_tech/zeal60/zeal60.h93
22 files changed, 977 insertions, 0 deletions
diff --git a/keyboards/wilba_tech/zeal60/config.h b/keyboards/wilba_tech/zeal60/config.h
new file mode 100644
index 000000000..7c5340e73
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/config.h
@@ -0,0 +1,138 @@
1/* Copyright 2017 Jason Williams (Wilba)
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#pragma once
17
18#include "config_common.h"
19
20// USB Device descriptor parameter
21#define VENDOR_ID 0x5A45 // ZealPC ("ZE")
22#define PRODUCT_ID 0x0060 // Zeal60
23#define DEVICE_VER 0x0001
24#define MANUFACTURER ZealPC
25#define PRODUCT Zeal60
26#define DESCRIPTION Zeal60
27
28// key matrix size
29#define MATRIX_ROWS 5
30#define MATRIX_COLS 14
31
32// Zeal60 PCB default pin-out
33#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
34#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 }
35#define UNUSED_PINS
36
37// IS31FL3731 driver
38#define DRIVER_COUNT 2
39#define DRIVER_LED_TOTAL 72
40
41// COL2ROW or ROW2COL
42#define DIODE_DIRECTION COL2ROW
43
44// Set 0 if debouncing isn't needed
45#define DEBOUNCE 5
46
47// Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap
48#define LOCKING_SUPPORT_ENABLE
49// Locking resynchronize hack
50#define LOCKING_RESYNC_ENABLE
51
52/*
53 * Feature disable options
54 * These options are also useful to firmware size reduction.
55 */
56
57// disable debug print
58//#define NO_DEBUG
59
60// disable print
61//#define NO_PRINT
62
63// disable action features
64//#define NO_ACTION_LAYER
65//#define NO_ACTION_TAPPING
66//#define NO_ACTION_ONESHOT
67//#define NO_ACTION_MACRO
68//#define NO_ACTION_FUNCTION
69
70#define RGB_BACKLIGHT_ENABLED 1
71
72// This conditionally compiles the backlight code for Zeal60 specifics
73#define RGB_BACKLIGHT_ZEAL60
74
75// enable/disable LEDs based on layout
76#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 0
77#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
78#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 0
79#define RGB_BACKLIGHT_USE_7U_SPACEBAR 0
80#define RGB_BACKLIGHT_USE_ISO_ENTER 0
81#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0
82
83// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
84#define RGB_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
85
86// disable backlight after timeout in minutes, 0 = no timeout
87#define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
88
89// the default brightness
90#define RGB_BACKLIGHT_BRIGHTNESS 255
91
92// the default effect (RGB test)
93#define RGB_BACKLIGHT_EFFECT 255
94
95// the default effect speed (0-3)
96#define RGB_BACKLIGHT_EFFECT_SPEED 0
97
98// the default color1 and color2
99#define RGB_BACKLIGHT_COLOR_1 { .h = 0, .s = 255 }
100#define RGB_BACKLIGHT_COLOR_2 { .h = 127, .s = 255 }
101
102// These define which keys in the matrix are alphas/mods
103// Used for backlight effects so colors are different for
104// alphas vs. mods
105// Each value is for a row, bit 0 is column 0
106// Alpha=0 Mod=1
107#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0010000000000001
108#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0000000000000001
109#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0001000000000001
110#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0011000000000001
111#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b0011110000000111
112
113#define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
114#define RGB_BACKLIGHT_LAYER_1_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
115#define RGB_BACKLIGHT_LAYER_2_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
116#define RGB_BACKLIGHT_LAYER_3_INDICATOR { .color = { .h = 0, .s = 0 }, .index = 255 }
117
118#define DYNAMIC_KEYMAP_LAYER_COUNT 4
119
120// EEPROM usage
121
122// TODO: refactor with new user EEPROM code (coming soon)
123#define EEPROM_MAGIC 0x451F
124#define EEPROM_MAGIC_ADDR 32
125// Bump this every time we change what we store
126// This will automatically reset the EEPROM with defaults
127// and avoid loading invalid data from the EEPROM
128#define EEPROM_VERSION 0x08
129#define EEPROM_VERSION_ADDR 34
130
131// Backlight config starts after EEPROM version
132#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR 35
133// Dynamic keymap starts after backlight config (35+31)
134#define DYNAMIC_KEYMAP_EEPROM_ADDR 66
135// Dynamic macro starts after dynamic keymaps (66+(4*5*14*2)) = (66+560)
136#define DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR 626
137#define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE 398
138#define DYNAMIC_KEYMAP_MACRO_COUNT 16
diff --git a/keyboards/wilba_tech/zeal60/info.json b/keyboards/wilba_tech/zeal60/info.json
new file mode 100644
index 000000000..4a07cf389
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/info.json
@@ -0,0 +1,25 @@
1{
2 "keyboard_name": "Zeal60",
3 "url": "https://zealpc.net",
4 "maintainer": "Wilba",
5 "bootloader": "atmel-dfu",
6 "width": 15,
7 "height": 5,
8 "layouts": {
9 "LAYOUT_all": {
10 "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
11 },
12 "LAYOUT_60_ansi": {
13 "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
14 },
15 "LAYOUT_60_iso": {
16 "layout": [{"label":"\u00ac", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"\"", "x":2, "y":0}, {"label":"\u00a3", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Enter", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"@", "x":11.75, "y":2}, {"label":"~", "x":12.75, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"|", "x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"AltGr", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
17 },
18 "LAYOUT_60_ansi_split_bs_rshift": {
19 "layout": [{"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
20 },
21 "LAYOUT_60_hhkb": {
22 "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"|", "x":13, "y":0}, {"label":"~", "x":14, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"Delete", "x":13.5, "y":1, "w":1.5}, {"label":"Control", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"Fn", "x":14, "y":3}, {"label":"Os", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Os", "x":12.5, "y":4}]
23 }
24 }
25} \ No newline at end of file
diff --git a/keyboards/wilba_tech/zeal60/keymaps/ansi_split_bs_rshift/config.h b/keyboards/wilba_tech/zeal60/keymaps/ansi_split_bs_rshift/config.h
new file mode 100644
index 000000000..011cf5c5a
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/keymaps/ansi_split_bs_rshift/config.h
@@ -0,0 +1,21 @@
1#pragma once
2
3/* enable/disable LEDs based on layout */
4#undef RGB_BACKLIGHT_USE_SPLIT_BACKSPACE
5#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 0
6
7#undef RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT
8#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
9
10#undef RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT
11#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 0
12
13#undef RGB_BACKLIGHT_USE_7U_SPACEBAR
14#define RGB_BACKLIGHT_USE_7U_SPACEBAR 0
15
16#undef RGB_BACKLIGHT_USE_ISO_ENTER
17#define RGB_BACKLIGHT_USE_ISO_ENTER 0
18
19#undef RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS
20#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0
21
diff --git a/keyboards/wilba_tech/zeal60/keymaps/ansi_split_bs_rshift/keymap.c b/keyboards/wilba_tech/zeal60/keymaps/ansi_split_bs_rshift/keymap.c
new file mode 100644
index 000000000..edb4f256b
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/keymaps/ansi_split_bs_rshift/keymap.c
@@ -0,0 +1,38 @@
1// ANSI split backspace/right shift layout for Zeal60
2#include QMK_KEYBOARD_H
3
4const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
5
6// Default layer
7[0] = LAYOUT_60_ansi_split_bs_rshift(
8 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_DEL,
9 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,
10 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,
11 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, FN_MO13,
12 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, FN_MO23, KC_RCTL),
13
14// Fn1 Layer
15[1] = LAYOUT_60_ansi_split_bs_rshift(
16 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
17 KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS,
18 KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
19 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
20 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
21
22// Fn2 Layer
23[2] = LAYOUT_60_ansi_split_bs_rshift(
24 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, KC_TRNS,
25 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,
26 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,
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,
28 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
29
30// Fn3 Layer (zeal60 Configuration)
31[3] = LAYOUT_60_ansi_split_bs_rshift(
32 KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, ES_DEC, ES_INC, KC_TRNS,
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,
35 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,
36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
37
38};
diff --git a/keyboards/wilba_tech/zeal60/keymaps/crd/config.h b/keyboards/wilba_tech/zeal60/keymaps/crd/config.h
new file mode 100644
index 000000000..a70f9da7e
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/keymaps/crd/config.h
@@ -0,0 +1,29 @@
1#pragma once
2
3/* enable/disable LEDs based on layout */
4#undef RGB_BACKLIGHT_USE_SPLIT_BACKSPACE
5#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 0
6
7#undef RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT
8#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
9
10#undef RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT
11#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 1
12
13#undef RGB_BACKLIGHT_USE_7U_SPACEBAR
14#define RGB_BACKLIGHT_USE_7U_SPACEBAR 1
15
16#undef RGB_BACKLIGHT_USE_ISO_ENTER
17#define RGB_BACKLIGHT_USE_ISO_ENTER 0
18
19#undef RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS
20#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0
21
22#undef RGB_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED
23#define RGB_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 1
24
25#undef RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT
26#define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 3
27
28#undef RGB_BACKLIGHT_EFFECT
29#define RGB_BACKLIGHT_EFFECT 0 \ No newline at end of file
diff --git a/keyboards/wilba_tech/zeal60/keymaps/crd/keymap.c b/keyboards/wilba_tech/zeal60/keymaps/crd/keymap.c
new file mode 100644
index 000000000..971782561
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/keymaps/crd/keymap.c
@@ -0,0 +1,39 @@
1// tsangan layout for Zeal60
2#include QMK_KEYBOARD_H
3
4enum keyboard_layers {
5 _BL = 0, // Base Layer
6 _FL, // Function Layer
7 _CL // Control Layer
8};
9
10// Custom #defined keycodes (shorter macros for readability)
11#define KC_CTES CTL_T(KC_ESC)
12#define KC_RSUP RSFT_T(KC_UP)
13#define KC_RGLT RCMD_T(KC_LEFT)
14#define KC_RADN LT(_CL, KC_DOWN)
15#define KC_RCRT RCTL_T(KC_RIGHT)
16
17const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
18 [_BL] = LAYOUT_60_ansi_split_bs_rshift(
19 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, XXXXXXX,
20 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,
21 KC_CTES, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
22 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSUP, MO(_FL),
23 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, XXXXXXX, KC_RGLT, KC_RADN, KC_RCRT
24 ),
25 [_FL] = LAYOUT_60_ansi_split_bs_rshift(
26 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
27 _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, KC_MUTE, _______, _______, KC_PGDN, KC_PGUP, _______,
28 _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_SLCK, KC_VOLD, KC_VOLU, KC_PAUS, _______, _______, _______,
29 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
30 _______, _______, _______, _______, _______, _______, _______, _______
31 ),
32 [_CL] = LAYOUT_60_ansi_split_bs_rshift(
33 _______, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, _______, _______, _______, _______, BR_DEC, BR_INC, _______, _______,
34 _______, _______, _______, S1_DEC, S1_INC, S2_DEC, S2_INC, _______, _______, _______, _______, ES_DEC, ES_INC, RESET,
35 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
36 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
37 _______, _______, _______, _______, _______, _______, _______, _______
38 ),
39};
diff --git a/keyboards/wilba_tech/zeal60/keymaps/default/config.h b/keyboards/wilba_tech/zeal60/keymaps/default/config.h
new file mode 100644
index 000000000..f8478a3df
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/keymaps/default/config.h
@@ -0,0 +1,20 @@
1#pragma once
2
3/* enable/disable LEDs based on layout */
4#undef RGB_BACKLIGHT_USE_SPLIT_BACKSPACE
5#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 0
6
7#undef RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT
8#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
9
10#undef RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT
11#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 0
12
13#undef RGB_BACKLIGHT_USE_7U_SPACEBAR
14#define RGB_BACKLIGHT_USE_7U_SPACEBAR 0
15
16#undef RGB_BACKLIGHT_USE_ISO_ENTER
17#define RGB_BACKLIGHT_USE_ISO_ENTER 0
18
19#undef RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS
20#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0
diff --git a/keyboards/wilba_tech/zeal60/keymaps/default/keymap.c b/keyboards/wilba_tech/zeal60/keymaps/default/keymap.c
new file mode 100644
index 000000000..3a13cf4d5
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/keymaps/default/keymap.c
@@ -0,0 +1,38 @@
1// Default layout for Zeal60
2#include QMK_KEYBOARD_H
3
4const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
5
6// Default layer
7[0] = LAYOUT_60_ansi(
8 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_BSPC,
9 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,
10 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,
11 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
12 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, FN_MO13, FN_MO23, KC_RCTL),
13
14// Fn1 Layer
15[1] = LAYOUT_60_ansi(
16 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,
17 KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
18 KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS,
19 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS,
20 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
21
22// Fn2 Layer
23[2] = LAYOUT_60_ansi(
24 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,
25 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,
26 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,
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,
28 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
29
30// Fn3 Layer (zeal60 Configuration)
31[3] = LAYOUT_60_ansi(
32 KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, ES_DEC, ES_INC, KC_TRNS,
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,
35 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
37
38};
diff --git a/keyboards/wilba_tech/zeal60/keymaps/hhkb/config.h b/keyboards/wilba_tech/zeal60/keymaps/hhkb/config.h
new file mode 100644
index 000000000..25f74d3d2
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/keymaps/hhkb/config.h
@@ -0,0 +1,20 @@
1#pragma once
2
3/* enable/disable LEDs based on layout */
4#undef RGB_BACKLIGHT_USE_SPLIT_BACKSPACE
5#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 1
6
7#undef RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT
8#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
9
10#undef RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT
11#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 1
12
13#undef RGB_BACKLIGHT_USE_7U_SPACEBAR
14#define RGB_BACKLIGHT_USE_7U_SPACEBAR 1
15
16#undef RGB_BACKLIGHT_USE_ISO_ENTER
17#define RGB_BACKLIGHT_USE_ISO_ENTER 0
18
19#undef RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS
20#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 1
diff --git a/keyboards/wilba_tech/zeal60/keymaps/hhkb/keymap.c b/keyboards/wilba_tech/zeal60/keymaps/hhkb/keymap.c
new file mode 100644
index 000000000..5cedc6e5e
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/keymaps/hhkb/keymap.c
@@ -0,0 +1,38 @@
1// HHKB layout for Zeal60
2#include QMK_KEYBOARD_H
3
4const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
5
6// Default layer
7[0] = LAYOUT_60_hhkb(
8 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,
9 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,
10 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,
11 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, FN_MO13,
12 KC_LGUI, KC_LALT, KC_SPC, KC_RALT, FN_MO23),
13
14// Fn1 Layer
15[1] = LAYOUT_60_hhkb(
16 KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,
17 KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS,
18 KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
19 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
20 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
21
22// Fn2 Layer
23[2] = LAYOUT_60_hhkb(
24 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, KC_TRNS,
25 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,
26 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,
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,
28 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
29
30// Fn3 Layer (zeal60 Configuration)
31[3] = LAYOUT_60_hhkb(
32 KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, ES_DEC, ES_INC, KC_TRNS,
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,
35 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,
36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
37
38};
diff --git a/keyboards/wilba_tech/zeal60/keymaps/iso/config.h b/keyboards/wilba_tech/zeal60/keymaps/iso/config.h
new file mode 100644
index 000000000..c96ef1f05
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/keymaps/iso/config.h
@@ -0,0 +1,20 @@
1#pragma once
2
3/* enable/disable LEDs based on layout */
4#undef RGB_BACKLIGHT_USE_SPLIT_BACKSPACE
5#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 0
6
7#undef RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT
8#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 1
9
10#undef RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT
11#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 0
12
13#undef RGB_BACKLIGHT_USE_7U_SPACEBAR
14#define RGB_BACKLIGHT_USE_7U_SPACEBAR 0
15
16#undef RGB_BACKLIGHT_USE_ISO_ENTER
17#define RGB_BACKLIGHT_USE_ISO_ENTER 1
18
19#undef RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS
20#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0
diff --git a/keyboards/wilba_tech/zeal60/keymaps/iso/keymap.c b/keyboards/wilba_tech/zeal60/keymaps/iso/keymap.c
new file mode 100644
index 000000000..55120f05e
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/keymaps/iso/keymap.c
@@ -0,0 +1,38 @@
1// ISO layout for Zeal60
2#include QMK_KEYBOARD_H
3
4const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
5
6// Default layer
7[0] = LAYOUT_60_iso(
8 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_BSPC,
9 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_ENT,
10 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_NUHS,
11 KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
12 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, FN_MO13, FN_MO23, KC_RCTL),
13
14// Fn1 Layer
15[1] = LAYOUT_60_iso(
16 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL ,
17 KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS,
18 KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS,
19 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS,
20 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
21
22// Fn2 Layer
23[2] = LAYOUT_60_iso(
24 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,
25 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,
26 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,
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,
28 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
29
30// Fn3 Layer (zeal60 Configuration)
31[3] = LAYOUT_60_iso(
32 KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, ES_DEC, ES_INC, KC_TRNS,
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,
35 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,
36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
37
38};
diff --git a/keyboards/wilba_tech/zeal60/keymaps/ryanmaclean/config.h b/keyboards/wilba_tech/zeal60/keymaps/ryanmaclean/config.h
new file mode 100644
index 000000000..f1531eb34
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/keymaps/ryanmaclean/config.h
@@ -0,0 +1,21 @@
1#pragma once
2
3/* enable/disable LEDs based on layout */
4#undef RGB_BACKLIGHT_USE_SPLIT_BACKSPACE
5#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 1
6
7#undef RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT
8#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
9
10#undef RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT
11#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 1
12
13#undef RGB_BACKLIGHT_USE_7U_SPACEBAR
14#define RGB_BACKLIGHT_USE_7U_SPACEBAR 0
15
16#undef RGB_BACKLIGHT_USE_ISO_ENTER
17#define RGB_BACKLIGHT_USE_ISO_ENTER 0
18
19#undef RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS
20#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0
21
diff --git a/keyboards/wilba_tech/zeal60/keymaps/ryanmaclean/keymap.c b/keyboards/wilba_tech/zeal60/keymaps/ryanmaclean/keymap.c
new file mode 100644
index 000000000..2e342b497
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/keymaps/ryanmaclean/keymap.c
@@ -0,0 +1,84 @@
1// Ryan MacLean's layout for Zeal60
2// Note that LGUI and RGUI are swapped with LALT and RALT respectively, for use with Macs
3// Also note that Control has replaced Caps Lock, and that pressing left or right shift once
4// will output left parenthese and right parenthese respectively.
5#include QMK_KEYBOARD_H
6
7// [0,13] is either left key of split backspace (e.g. HHKB \| key) or 2U backspace
8// [1,13] is either backslash or ISO Enter
9// [2,12] is either ANSI Enter or key left of ISO Enter
10// [2,13] is right key of split backspace (e.g. HHKB `~ key)
11// [3,1] is right key of split left-shift (e.g ISO key)
12// [3,13] is right key of split right-shift (e.g. HHKB Fn key)
13
14
15
16const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is. KC_LSFT KC_LALT KC_LGUI KC_4
17{
18 switch(id) {
19 case 0: // macOS screenshot to capture are to clipboard - this would trigger when you hit a key mapped as M(0)
20 if (record->event.pressed) {
21 return MACRO( D(LSFT), D(LCTL), D(LGUI), T(4), U(LSFT), U(LCTL), U(LGUI), W(255), END ); // this sends the string 'hello' when the macro executes
22 }
23 break;
24 case 1: // macOS screenshot capture area to file - this would trigger when you hit a key mapped as M(1)
25 if (record->event.pressed) {
26 return MACRO( D(LSFT), D(LGUI), T(4), U(LSFT), U(LGUI), W(255), END ); // this sends the string 'hello' when the macro executes
27 }
28 break;
29 case 2: // macOS screenshot to clipboard - this would trigger when you hit a key mapped as M(2)
30 if (record->event.pressed) {
31 return MACRO( D(LSFT), D(LCTL), D(LGUI), T(3), U(LSFT), U(LCTL), U(LGUI), W(255), END ); // this sends the string 'hello' when the macro executes
32 }
33 break;
34 case 3: // macOS screenshot to file - this would trigger when you hit a key mapped as M(3)
35 if (record->event.pressed) {
36 return MACRO( D(LSFT), D(LGUI), T(3), U(LSFT), U(LGUI), W(255), END ); // this sends the string 'hello' when the macro executes
37 }
38 break;
39 }
40 return MACRO_NONE;
41};
42
43#define CADETL MT(KC_LSFT, KC_LBRC)
44#define CADETR MT(KC_RSFT, KC_RBRC)
45
46const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
47
48// Default layer
49[0] = {
50 {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},
51 {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},
52 {KC_LGUI, 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_GRV},
53 {KC_LSPO, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, FN_MO13},
54 {KC_LCTL, KC_LALT, KC_LGUI, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_RGUI, KC_RALT, KC_RCTL, FN_MO23}
55},
56
57// Fn1 Layer
58[1] = {
59 {KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS},
60 {KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_DEL},
61 {KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS},
62 {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS},
63 {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}
64},
65
66// Fn2 Layer
67[2] = {
68 {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},
69 {KC_TRNS, M(2), M(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
70 {KC_TRNS, M(1), M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
71 {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},
72 {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}
73},
74
75// Fn3 Layer (zeal60 Configuration)
76[3] = {
77 {KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS},
78 {KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
79 {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},
80 {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},
81 {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}
82}
83
84};
diff --git a/keyboards/wilba_tech/zeal60/keymaps/tusing/Makefile b/keyboards/wilba_tech/zeal60/keymaps/tusing/Makefile
new file mode 100644
index 000000000..762905da0
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/keymaps/tusing/Makefile
@@ -0,0 +1,6 @@
1# Build Options
2# change to "no" to disable the options, or define them in the Makefile in
3# the appropriate keymap folder that will get included automatically
4#
5RGBLIGHT_ENABLE = yes
6AUDIO_ENABLE = no # Underglow cannot be used with audio.
diff --git a/keyboards/wilba_tech/zeal60/keymaps/tusing/README.md b/keyboards/wilba_tech/zeal60/keymaps/tusing/README.md
new file mode 100644
index 000000000..edddf1c58
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/keymaps/tusing/README.md
@@ -0,0 +1,80 @@
1# RGB Underglow Strip on the Zeal60: A Guide
2
3<img src="https://i.imgur.com/UuUdOCb.jpg" width="800">
4
5## Requirements
6
7- WS2812B RGB strip, preferably 60 LEDs/meter
8- Wire, solder
9- Tape, hot glue, or some sort of adhesive
10
11## A. Connecting the strip
12You might find the [**full PCB image**](https://cdn.shopify.com/s/files/1/0490/7329/files/zeal60jumpers.png) helpful. Ignore the red boxes!
13
141. Connect V+ to the receiving end of the thermistor labeled F1; connect GND to the board's GND pin. (*Avoid connecting +V to the board's +5V pin* - you will likely overload the thermistor, and you will limit your maximum brightness.)
15
16 <img src="https://i.imgur.com/jd7qivh.png" width="300">
17
182. Connect DI to PB0.
19
20 <img src="https://i.imgur.com/BiMyMLv.jpg" width="300">
21
223. Should look something like this when finished:
23
24 <img src="https://i.imgur.com/ngxYMuA.jpg" width="600">
25
26*Optional:* To allow considerably more light to escape, consider angling the strip outwards by using some sort of fulcrum under the strip. (I used a thick wire.)
27
28## B. Enabling the strip
291. If it is not present already, add the following to your ***keymap's*** ```Makefile```:
30
31 ```Makefile
32 RGBLIGHT_ENABLE = yes
33 AUDIO_ENABLE = no #Underglow animations cannot be used with audio.
34 ```
352. If it is not present already, add the following to your *keymap's* ```config.h```, and edit the values as necessary:
36
37 ```c
38 // Set up RGB underglow.
39 #define RGB_DI_PIN B0 // The pin your RGB strip is wired to
40 #define RGBLIGHT_ANIMATIONS // Require for fancier stuff (not compatible with audio)
41 #define RGBLED_NUM 35 // Number of LEDs
42 #define RGBLIGHT_HUE_STEP 5 // How much each press of rgb_hue changes hue
43 #define RGBLIGHT_SAT_STEP 10 // How much each press of rgb_sat changes sat
44 #define RGBLIGHT_VAL_STEP 10 // How much each press of rgb_val changes val
45 ```
463. If they are not present already, add the following keycodes to your keymap to control the RGB strip: ```RGB_TOG``` (on/off), ```RGB_MOD``` (step through modes), ```RGB_HUI```, ```RGB_HUD```, ```RGB_SAI```, ```RGB_SAD```, ```RGB_VAI```, ```RGB_VAD``` (HSV increase/decrease). Add these to your keymap.
47
48## C. Dealing with current limits
49USB 2.0 ports on laptops provide up to 500mA max, but USB 3.0 ports can provide up to 900mA; USB 3.1 up to 1.5A; and powered USB hubs even more. We can run our keyboard at a higher brightness if we draw more power. **The Zeal60 uses 500mA at max brightness.** This means that **you have about 400mA remaining for the strip to use on a USB 3.0 port**; 1000mA free on a USB 3.1 port, so on and so forth.
50
51***Warning:*** **This means you will need to turn *off* your RGB strip before connecting to a USB 2.0 port**, as USB 2.0 cannot sustain the current necessary!
52
531. If not present already, add the following to your keymap's ```config.h```. Change the numbers based on your needs. The ones below are safe underestimates.
54
55 ```c
56 // Enable current limiting for RGB underglow.
57 #define RGBSTRIP_CURRENT_LIMIT 400 // Strip current limit in mA. (USB amperage - 500mA for keyboard)
58 #define RGBSTRIP_MAX_CURRENT_PER_LIGHT 50 // mA per light when at max brightness.
59 ```
60 *Example:* I use a USB port capable of providing 1800 mA. The keyboard uses 500mA, so my personal value (in the `tusing` keymap) for `RGBSTRIP_CURRENT_LIMIT` is 1300. The particular WS2812B RGB strip I have uses a maximum of 60 mA per LED, so that is my personal value for `RGBSTRIP_MAX_CURRENT_PER_LIGHT`.
612. Toggle on the LED strip (```RGB_TOG```) and step through animations (```RGB_MOD```) to test it out!
62
63## D. Sources and resources
64### A. Connecting the strip.
65* [In-depth description of connecting an RGB strip to the GH60](https://www.reddit.com/r/MechanicalKeyboards/comments/4d5or2/my_first_custom_build_satan_gh60_rbg_underglow_in/d1nz3o7/)
66* [32U4 Pinout](https://40.media.tumblr.com/93b6bbd4113418c2b45459bb177e67c5/tumblr_mi49a20QMB1s5t695o1_1280.png)
67* [Redditor describes connecting RGB strips on his Satan GH60](https://www.reddit.com/r/MechanicalKeyboards/comments/4hbjw4/finally_finished_my_satan_gh60_also_granite_o/d2qn8zx/?context=3)
68* [Another Redditor on RGB with the Satan GH60](https://www.reddit.com/r/MechanicalKeyboards/comments/4ewzdx/gh60_satan_with_the_rgb_mod/d251uu6/ )
69
70### B. Enabling the strip.
71* [QMK Wiki portion on underglow](https://github.com/jackhumbert/qmk_firmware/wiki#rgb-under-glow-mod)
72* [Planck ```Makefile```, ```config.h```, and ```keymap.c``` config example](https://github.com/jackhumbert/qmk_firmware/tree/master/keyboards/planck/keymaps/yang)
73* [Video demonstrating keycode functions and RGB modes on a KC60](https://www.youtube.com/watch?v=VKrpPAHlisY)
74
75### C. Dealing with current limits.
76* [Discussion of cutting jumpers and adding resistors to lower current from Zeal60](https://www.reddit.com/r/MechanicalKeyboards/comments/5hou92/photos_zeal60_lets_just_say_santa_came_early_this/db23qid/)
77* [A selection of 900mA-1.5A current hold fuses - look for an SMD 0805-sized fuse.](https://goo.gl/748avG)
78* [Video detailing technique to solder 0805 resistors](https://www.youtube.com/watch?v=PU7wLcuqc-I&t=123s&list=FLheMlKEVQ5cmVXazUt6HrxQ&index=2)
79* [QMK feature request to implement max power draw limits in ```config.h```](https://github.com/jackhumbert/qmk_firmware/issues/954)
80* [Commit enabling max power draw limits in ```config.h```](https://github.com/jackhumbert/qmk_firmware/commit/83e613ad239459582ae28f78b6c81535b9b138d7) \ No newline at end of file
diff --git a/keyboards/wilba_tech/zeal60/keymaps/tusing/config.h b/keyboards/wilba_tech/zeal60/keymaps/tusing/config.h
new file mode 100644
index 000000000..64aaece50
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/keymaps/tusing/config.h
@@ -0,0 +1,36 @@
1#pragma once
2
3/* Enable/disable LEDs based on layout. */
4#undef RGB_BACKLIGHT_USE_SPLIT_BACKSPACE
5#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 0
6
7#undef RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT
8#define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
9
10#undef RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT
11#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 0
12
13#undef RGB_BACKLIGHT_USE_7U_SPACEBAR
14#define RGB_BACKLIGHT_USE_7U_SPACEBAR 0
15
16#undef RGB_BACKLIGHT_USE_ISO_ENTER
17#define RGB_BACKLIGHT_USE_ISO_ENTER 0
18
19#undef RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS
20#define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0
21
22// Set up RGB underglow.
23#define RGB_DI_PIN B0 // The pin your RGB strip is wired to
24#define RGBLIGHT_ANIMATIONS // Require for fancier stuff (not compatible with audio)
25#define RGBLED_NUM 35 // Number of LEDs
26#define RGBLIGHT_HUE_STEP 5 // How much each press of rgb_hue changes hue
27#define RGBLIGHT_SAT_STEP 10 // How much each press of rgb_sat changes sat
28#define RGBLIGHT_VAL_STEP 10 // How much each press of rgb_val changes val
29
30// Enable current limiting for RGB underglow.
31#define RGBSTRIP_CURRENT_LIMIT 1300 // Strip current limit in mA. (USB amperage - 500mA for keyboard)
32#define RGBSTRIP_MAX_CURRENT_PER_LIGHT 40 // mA per light when at max brightness.
33
34// Scale brightnes according to BRIGHTNESS_CORRECTION_TABLE in quantum/rgblight.c.
35// This allows to mitigate uneven brightness from LED underglow strips.
36// #define LED_BRIGHTNESS_CORRECTION
diff --git a/keyboards/wilba_tech/zeal60/keymaps/tusing/keymap.c b/keyboards/wilba_tech/zeal60/keymaps/tusing/keymap.c
new file mode 100644
index 000000000..755ace861
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/keymaps/tusing/keymap.c
@@ -0,0 +1,48 @@
1// Default layout for Zeal60
2#include QMK_KEYBOARD_H
3
4// For readability.
5#define _x_ KC_NO
6#define AUD_PRV LCTL(KC_MPRV) // Previous music track
7#define AUD_PLY LCTL(KC_MPLY) // Pause music
8#define AUD_NXT LCTL(KC_MNXT) // Next music track
9
10// Zeal60-specific keys:
11// EF_INC, EF_DEC, // next/previous backlight effect
12// H1_INC, H1_DEC, // Color 1 hue increase/decrease
13// S1_INC, S1_DEC, // Color 1 saturation increase/decrease
14// H2_INC, H2_DEC, // Color 2 hue increase/decrease
15// S2_INC, S2_DEC, // Color 2 saturation increase/decrease
16// BR_INC, BR_DEC, // backlight brightness increase/decrease
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19// Default layer: Pressing caps-lock momentarily switches to Layer 1.
20// This is the default layer. Pressing an empty keycode on another layer will take you here.
21 [0] = {
22 {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},
23 {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},
24 {MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, _x_ },
25 {KC_LSFT, _x_ , KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _x_ },
26 {KC_LCTL, KC_LGUI, KC_LALT, _x_ , _x_ , _x_ , _x_ , KC_SPC, _x_ , _x_ , KC_LEFT, KC_UP, KC_DOWN, KC_RGHT}
27 },
28
29// Layer 1: Pressing enter switches to layer 2, where backlight controls live.
30// This is a momentary layer: once you let go of caps, you'll be back in layer 1.
31 [1] = {
32 {KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL },
33 {_______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, KC_DEL, _______},
34 {_______, AUD_PRV, AUD_PLY, AUD_NXT, _______, _______, _______, _______, _______, _______, _______, _______, TO(2) , _x_ },
35 {KC_CAPS, _x_ , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _x_ },
36 {KC_RCTL, KC_RGUI, KC_RALT, _x_ , _x_ , _x_ , _x_ , _______, _x_ , _x_ , KC_HOME, KC_PGUP, KC_PGDN, KC_END}
37 },
38
39// Layer 2: Zeal60 and backlight configuration. (Get here quickly by pressing Caps+Enter from Layer 1.)
40// This is a persistent layer. Get back to the default layer by pressing enter.
41 [2] = {
42 {RESET, EF_DEC, EF_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, _______, _______, _______, _______, _______, _______, _______},
43 {_______, H1_DEC, H1_INC, S1_DEC, S1_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______},
44 {_______, H2_DEC, H2_INC, S2_DEC, S2_INC, _______, _______, _______, _______, _______, _______, _______, TO(0) , _x_ },
45 {RGB_MOD, _x_ , RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _x_ },
46 {RGB_TOG, RGB_VAD, RGB_VAI, _x_ , _x_ , _x_ , _x_ , _______, _x_ , _x_ , _______, _______, _______, _______}
47 }
48};
diff --git a/keyboards/wilba_tech/zeal60/readme.md b/keyboards/wilba_tech/zeal60/readme.md
new file mode 100644
index 000000000..21d55af39
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/readme.md
@@ -0,0 +1,47 @@
1Zeal60
2====
3
4![Zeal60](https://cdn.shopify.com/s/files/1/0490/7329/products/Zeal60.jpg)
5
6This is a 60% PCB with per-key RGB LEDs and supports ANSI, ISO, winkey/winkeyless bottom row, HHKB-layout (split right shift and backspace).
7
8Keyboard Maintainer: [Wilba](http://wilba.tech/) and on [github](https://github.com/Wilba6582)
9Hardware Supported: Zeal60 PCB Rev 0-3
10Hardware Availability: https://zealpc.net/collections/group-buy-pre-orders/products/zeal60rgb
11
12Make example for this keyboard (after setting up your build environment):
13
14 make wilba_tech/zeal60:default
15
16See 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).
17
18
19RGB Backlight Configuration
20====
21
22A keymap (in the keymaps directory) can optionally configure which RGB backlight LEDs are used, depending on the needs of the layout, by adding a config.h file in the keymap's directory.
23The following #define symbols will enable/disable a feature using 1 or 0.
24
25 RGB_BACKLIGHT_USE_SPLIT_BACKSPACE
26
27Split backspace is being used, enables the right LED of the split backspace (the top-right corner)
28
29 RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT
30
31Split left shift is being used (i.e. ISO layout), enables the right LED of the split left shift (the ISO key)
32
33 RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT
34
35Split right shift is being used (i.e. HHKB style layouts), enables the right LED of the split right shift (the Fn key)
36
37 RGB_BACKLIGHT_USE_7U_SPACEBAR
38
39A 7U spacebar is being used, controls the LEDs under the right stabilizer (of 7U spacebar) and right Alt (if 6.25U spacebar).
40
41 RGB_BACKLIGHT_USE_ISO_ENTER
42
43An ISO Enter is being used. Only used to tweak the location of the LED being used under ANSI Enter/backslash
44
45 RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS
46
47Disables the LEDs under HHKB corner blockers, useful for transparent cases.
diff --git a/keyboards/wilba_tech/zeal60/rules.mk b/keyboards/wilba_tech/zeal60/rules.mk
new file mode 100644
index 000000000..5d20659f8
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/rules.mk
@@ -0,0 +1,80 @@
1
2
3# project specific files
4SRC = keyboards/wilba_tech/wt_main.c \
5 keyboards/wilba_tech/wt_rgb_backlight.c \
6 quantum/color.c \
7 drivers/issi/is31fl3731.c \
8 drivers/avr/i2c_master.c
9
10# MCU name
11MCU = atmega32u4
12
13# Processor frequency.
14# This will define a symbol, F_CPU, in all source code files equal to the
15# processor frequency in Hz. You can then use this symbol in your source code to
16# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
17# automatically to create a 32-bit value in your source code.
18#
19# This will be an integer division of F_USB below, as it is sourced by
20# F_USB after it has run through any CPU prescalers. Note that this value
21# does not *change* the processor frequency - it should merely be updated to
22# reflect the processor speed set externally so that the code can use accurate
23# software delays.
24F_CPU = 16000000
25
26#
27# LUFA specific
28#
29# Target architecture (see library "Board Types" documentation).
30ARCH = AVR8
31
32# Input clock frequency.
33# This will define a symbol, F_USB, in all source code files equal to the
34# input clock frequency (before any prescaling is performed) in Hz. This value may
35# differ from F_CPU if prescaling is used on the latter, and is required as the
36# raw input clock is fed directly to the PLL sections of the AVR for high speed
37# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
38# at the end, this will be done automatically to create a 32-bit value in your
39# source code.
40#
41# If no clock division is performed on the input clock inside the AVR (via the
42# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
43F_USB = $(F_CPU)
44
45# Interrupt driven control endpoint task(+60)
46OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
47
48# Boot Section
49BOOTLOADER = atmel-dfu
50
51# Do not put the microcontroller into power saving mode
52# when we get USB suspend event. We want it to keep updating
53# backlight effects.
54OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
55
56# Build Options
57# change to "no" to disable the options, or define them in the Makefile in
58# the appropriate keymap folder that will get included automatically
59#
60BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
61MOUSEKEY_ENABLE = no # Mouse keys(+4700)
62EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
63CONSOLE_ENABLE = no # Console for debug(+400)
64COMMAND_ENABLE = no # Commands for debug and configuration
65NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
66BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
67MIDI_ENABLE = no # MIDI controls
68AUDIO_ENABLE = no # Audio output on port C6
69UNICODE_ENABLE = no # Unicode
70BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
71RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
72
73# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
74SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
75
76RAW_ENABLE = yes
77DYNAMIC_KEYMAP_ENABLE = yes
78CIE1931_CURVE = yes
79
80LAYOUTS = 60_ansi 60_iso 60_hhkb 60_ansi_split_bs_rshift
diff --git a/keyboards/wilba_tech/zeal60/zeal60.c b/keyboards/wilba_tech/zeal60/zeal60.c
new file mode 100644
index 000000000..b8c2e2f83
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/zeal60.c
@@ -0,0 +1,18 @@
1/* Copyright 2017 Jason Williams (Wilba)
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#ifndef RGB_BACKLIGHT_ZEAL60
17#error RGB_BACKLIGHT_ZEAL60 not defined, you done goofed somehao, brah
18#endif
diff --git a/keyboards/wilba_tech/zeal60/zeal60.h b/keyboards/wilba_tech/zeal60/zeal60.h
new file mode 100644
index 000000000..0d4f1b908
--- /dev/null
+++ b/keyboards/wilba_tech/zeal60/zeal60.h
@@ -0,0 +1,93 @@
1/* Copyright 2017 Jason Williams (Wilba)
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#pragma once
17
18#include "quantum.h"
19#include "keyboards/wilba_tech/wt_rgb_backlight_keycodes.h"
20#include "keyboards/wilba_tech/via_keycodes.h"
21
22#define XXX KC_NO
23
24#define LAYOUT_60_all( \
25 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
26 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
27 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
28 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
29 K40, K41, K42, K47, K4A, K4B, K4C, K4D \
30) { \
31 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
32 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
33 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
34 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
35 { K40, K41, K42, XXX, XXX, XXX, XXX, K47, XXX, XXX, K4A, K4B, K4C, K4D } \
36}
37
38#define LAYOUT_60_ansi( \
39 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
40 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
41 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
42 K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
43 K40, K41, K42, K47, K4A, K4B, K4C, K4D \
44) { \
45 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
46 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
47 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX }, \
48 { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX }, \
49 { K40, K41, K42, XXX, XXX, XXX, XXX, K47, XXX, XXX, K4A, K4B, K4C, K4D } \
50}
51
52#define LAYOUT_60_iso( \
53 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
54 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
55 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
56 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
57 K40, K41, K42, K47, K4A, K4B, K4C, K4D \
58) { \
59 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
60 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
61 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX }, \
62 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX }, \
63 { K40, K41, K42, XXX, XXX, XXX, XXX, K47, XXX, XXX, K4A, K4B, K4C, K4D } \
64}
65
66#define LAYOUT_60_ansi_split_bs_rshift( \
67 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
68 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
69 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
70 K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
71 K40, K41, K42, K47, K4A, K4B, K4C, K4D \
72) { \
73 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
74 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
75 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
76 { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
77 { K40, K41, K42, XXX, XXX, XXX, XXX, K47, XXX, XXX, K4A, K4B, K4C, K4D } \
78}
79
80#define LAYOUT_60_hhkb( \
81 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
82 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
83 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
84 K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
85 K41, K42, K47, K4B, K4C \
86) { \
87 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
88 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
89 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
90 { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
91 { XXX, K41, K42, XXX, XXX, XXX, XXX, K47, XXX, XXX, XXX, K4B, K4C, XXX } \
92}
93