aboutsummaryrefslogtreecommitdiff
path: root/keyboards/tkc
diff options
context:
space:
mode:
authorTerryMathews <terry@terrymathews.net>2022-02-04 16:18:42 -0500
committerGitHub <noreply@github.com>2022-02-04 13:18:42 -0800
commit13821fdbd7809ee311b38d3a593165c275b44879 (patch)
treea9baf35b142e1a0ce71b91aa9a463638c9d3bdb8 /keyboards/tkc
parentf52cc210b88936b666ed649eb243de1e0f64d88e (diff)
downloadqmk_firmware-13821fdbd7809ee311b38d3a593165c275b44879.tar.gz
qmk_firmware-13821fdbd7809ee311b38d3a593165c275b44879.zip
[Keyboard] TKC Portico75 (#15114)
Co-authored-by: Joel Challis <git@zvecr.com> Co-authored-by: Drashna Jael're <drashna@live.com>
Diffstat (limited to 'keyboards/tkc')
-rw-r--r--keyboards/tkc/portico75/config.h179
-rw-r--r--keyboards/tkc/portico75/info.json10
-rw-r--r--keyboards/tkc/portico75/keymaps/default/keymap.c31
-rw-r--r--keyboards/tkc/portico75/keymaps/via/keymap.c109
-rw-r--r--keyboards/tkc/portico75/keymaps/via/rules.mk11
-rw-r--r--keyboards/tkc/portico75/portico75.c188
-rw-r--r--keyboards/tkc/portico75/portico75.h60
-rw-r--r--keyboards/tkc/portico75/readme.md21
-rw-r--r--keyboards/tkc/portico75/rules.mk22
9 files changed, 631 insertions, 0 deletions
diff --git a/keyboards/tkc/portico75/config.h b/keyboards/tkc/portico75/config.h
new file mode 100644
index 000000000..48be10a42
--- /dev/null
+++ b/keyboards/tkc/portico75/config.h
@@ -0,0 +1,179 @@
1/*
2Copyright 2021 Terry Mathews
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0x544B // TK
24#define PRODUCT_ID 0x0011
25#define DEVICE_VER 0x0001
26#define MANUFACTURER TKC
27#define PRODUCT Portico75
28
29/* key matrix size */
30#define MATRIX_ROWS 6
31#define MATRIX_COLS 15
32
33#define MATRIX_ROW_PINS \
34 { B0, E6, F0, F1, D3, D2 }
35#define MATRIX_COL_PINS \
36 { F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, B3, B7 }
37
38/*Rotary Encoder Pins*/
39#define ENCODERS_PAD_A \
40 { B1 }
41#define ENCODERS_PAD_B \
42 { B2 }
43
44/*Sets the number of pulses per increment*/
45#define ENCODER_RESOLUTION 2
46
47/* COL2ROW, ROW2COL*/
48#define DIODE_DIRECTION COL2ROW
49
50/* disable these deprecated features by default */
51#define NO_ACTION_MACRO
52#define NO_ACTION_FUNCTION
53
54#ifdef RGB_MATRIX_ENABLE
55# define RGB_MATRIX_LED_PROCESS_LIMIT 4
56# define RGB_MATRIX_LED_FLUSH_LIMIT 26
57# define DEBOUNCE 3
58# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
59# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
60# define RGB_MATRIX_KEYPRESSES
61
62// RGB Matrix Animation modes. Explicitly enabled
63// For full list of effects, see:
64// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
65# define ENABLE_RGB_MATRIX_ALPHAS_MODS
66// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
67# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
68# define ENABLE_RGB_MATRIX_BREATHING
69// # define ENABLE_RGB_MATRIX_BAND_SAT
70# define ENABLE_RGB_MATRIX_BAND_VAL
71// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
72# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
73// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
74# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
75# define ENABLE_RGB_MATRIX_CYCLE_ALL
76# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
77# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
78# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
79# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
80# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
81# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
82# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
83# define ENABLE_RGB_MATRIX_DUAL_BEACON
84# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
85# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
86# define ENABLE_RGB_MATRIX_RAINDROPS
87# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
88# define ENABLE_RGB_MATRIX_HUE_BREATHING
89# define ENABLE_RGB_MATRIX_HUE_PENDULUM
90# define ENABLE_RGB_MATRIX_HUE_WAVE
91# define ENABLE_RGB_MATRIX_PIXEL_RAIN
92# define ENABLE_RGB_MATRIX_PIXEL_FLOW
93# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
94// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
95# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
96// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
97// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
98// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
99// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
100// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
101// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
102// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
103// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
104// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
105// # define ENABLE_RGB_MATRIX_SPLASH
106// # define ENABLE_RGB_MATRIX_MULTISPLASH
107// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
108// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
109
110# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
111# define DRIVER_ADDR_1 0b0110000
112# define DRIVER_COUNT 1
113# define DRIVER_1_LED_TOTAL 98
114# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
115# define DRIVER_INDICATOR_LED_TOTAL 0
116#else
117// WT_RGB IS31FL3741 driver code
118# define DRIVER_COUNT 1
119# define DRIVER_LED_TOTAL 98
120
121# define RGB_BACKLIGHT_ENABLED 1
122
123// This conditionally compiles the backlight code for Portico75 specifics
124# define RGB_BACKLIGHT_PORTICO75
125
126// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
127# define RGB_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 1
128
129// disable backlight after timeout in minutes, 0 = no timeout
130# define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
131
132// the default brightness
133# define RGB_BACKLIGHT_BRIGHTNESS 255
134
135// the default effect (RGB test)
136# define RGB_BACKLIGHT_EFFECT 255
137
138// the default effect speed (0-3)
139# define RGB_BACKLIGHT_EFFECT_SPEED 0
140
141// the default color1 and color2
142# define RGB_BACKLIGHT_COLOR_1 \
143 { .h = 0, .s = 255 }
144# define RGB_BACKLIGHT_COLOR_2 \
145 { .h = 127, .s = 255 }
146
147# define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 0
148# define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
149# define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 0
150# define RGB_BACKLIGHT_USE_7U_SPACEBAR 0
151# define RGB_BACKLIGHT_USE_ISO_ENTER 0
152# define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0
153# define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR \
154 { .color = {.h = 0, .s = 0}, .index = 255 }
155# define RGB_BACKLIGHT_LAYER_1_INDICATOR \
156 { .color = {.h = 0, .s = 0}, .index = 255 }
157# define RGB_BACKLIGHT_LAYER_2_INDICATOR \
158 { .color = {.h = 0, .s = 0}, .index = 255 }
159# define RGB_BACKLIGHT_LAYER_3_INDICATOR \
160 { .color = {.h = 0, .s = 0}, .index = 255 }
161
162// These define which keys in the matrix are alphas/mods
163// Used for backlight effects so colors are different for
164// alphas vs. mods
165// Each value is for a row, bit 0 is column 0
166// Alpha=0 Mod=1
167# define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0110000000000001
168# define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0110000000000001
169# define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0111000000000001
170# define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0111100000000001
171# define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b1111111111111111
172
173// Backlight config starts after VIA's EEPROM usage,
174// dynamic keymaps start after this.
175# define VIA_EEPROM_CUSTOM_CONFIG_SIZE 31
176
177// VIA lighting is handled by the keyboard-level code
178# define VIA_CUSTOM_LIGHTING_ENABLE
179#endif
diff --git a/keyboards/tkc/portico75/info.json b/keyboards/tkc/portico75/info.json
new file mode 100644
index 000000000..5aaf21ffc
--- /dev/null
+++ b/keyboards/tkc/portico75/info.json
@@ -0,0 +1,10 @@
1{
2 "keyboard_name": "TKC Portico75",
3 "url": "",
4 "maintainer": "TerryMathews",
5 "layouts": {
6 "LAYOUT_75_ansi": {
7 "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":1.25, "y":0}, {"label":"F2", "x":2.25, "y":0}, {"label":"F3", "x":3.25, "y":0}, {"label":"F4", "x":4.25, "y":0}, {"label":"F5", "x":5.5, "y":0}, {"label":"F6", "x":6.5, "y":0}, {"label":"F7", "x":7.5, "y":0}, {"label":"F8", "x":8.5, "y":0}, {"label":"F9", "x":9.75, "y":0}, {"label":"F10", "x":10.75, "y":0}, {"label":"F11", "x":11.75, "y":0}, {"label":"F12", "x":12.75, "y":0}, {"label":"Del", "x":14, "y":0}, {"label":"Mute", "x":15, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Home", "x":15, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"PgUp", "x":15, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"label":"<i class='kb kb-Arrows-Up'></i>", "x":14.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Win", "x":1.25, "y":5.25, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.25}, {"x":3.75, "y":5.25, "w":6.25}, {"label":"Fn", "x":10, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5.25, "w":1.5}, {"label":"<i class='kb kb-Arrows-Left'></i>", "x":13.25, "y":5.5}, {"label":"<i class='kb kb-Arrows-Down'></i>", "x":14.25, "y":5.5}, {"label":"<i class='kb kb-Arrows-Right'></i>", "x":15.25, "y":5.5}]
8 }
9 }
10}
diff --git a/keyboards/tkc/portico75/keymaps/default/keymap.c b/keyboards/tkc/portico75/keymaps/default/keymap.c
new file mode 100644
index 000000000..957716489
--- /dev/null
+++ b/keyboards/tkc/portico75/keymaps/default/keymap.c
@@ -0,0 +1,31 @@
1/*
2Copyright 2021 Terry Mathews
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18
19#include QMK_KEYBOARD_H
20
21
22const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
23 [0] = LAYOUT_75_ansi(
24 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_PSCR, KC_MUTE,
25 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, KC_HOME,
26 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, KC_DEL,
27 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,
28 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
29 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
30 )
31};
diff --git a/keyboards/tkc/portico75/keymaps/via/keymap.c b/keyboards/tkc/portico75/keymaps/via/keymap.c
new file mode 100644
index 000000000..cee94c4a1
--- /dev/null
+++ b/keyboards/tkc/portico75/keymaps/via/keymap.c
@@ -0,0 +1,109 @@
1/*
2Copyright 2021 Terry Mathews
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18
19#include QMK_KEYBOARD_H
20
21#define ENCODERS 1
22
23#define ENCODERS_CW_KEY { { 14, 3 } }
24#define ENCODERS_CCW_KEY { { 14, 4 } }
25
26static uint8_t encoder_state[ENCODERS] = {0};
27static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY;
28static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY;
29
30// WT RGB-specific keys:
31// EF_INC, EF_DEC, // next/previous backlight effect
32// H1_INC, H1_DEC, // Color 1 hue increase/decrease
33// S1_INC, S1_DEC, // Color 1 saturation increase/decrease
34// H2_INC, H2_DEC, // Color 2 hue increase/decrease
35// S2_INC, S2_DEC, // Color 2 saturation increase/decrease
36// BR_INC, BR_DEC, // backlight brightness increase/decrease
37
38const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
39 [0] = LAYOUT_75_via(
40 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_PSCR, KC_MUTE,
41 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, KC_HOME,
42 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, KC_DEL,
43 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, KC_VOLD,
44 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_VOLU,
45 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
46 ),
47#ifdef RGB_BACKLIGHT_PORTICO75
48 [1] = LAYOUT_75_via(
49 _______, EF_INC, EF_DEC, H1_INC, H1_DEC, S1_INC, S1_DEC, H2_INC, H2_DEC, S2_INC, S2_DEC, BR_INC, BR_DEC, _______, _______,
50 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
51 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
52 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
53 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
54 _______, _______, _______, _______, _______, MO(1), _______, _______, _______
55 ),
56#else
57 [1] = LAYOUT_75_via(
58 _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
59 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
60 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
61 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
62 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
63 _______, _______, _______, _______, _______, MO(1), _______, _______, _______
64 ),
65#endif
66 [2] = LAYOUT_75_via(
67 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
68 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
69 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
70 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
71 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
72 _______, _______, _______, _______, _______, _______, _______, _______, _______
73 ),
74 [3] = LAYOUT_75_via(
75 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
76 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
77 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
78 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
79 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
80 _______, _______, _______, _______, _______, _______, _______, _______, _______
81 )
82};
83
84void encoder_action_unregister(void) {
85 for (int index = 0; index < ENCODERS; ++index) {
86 if (encoder_state[index]) {
87 keyevent_t encoder_event = (keyevent_t) {
88 .key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index],
89 .pressed = false,
90 .time = (timer_read() | 1)
91 };
92 encoder_state[index] = 0;
93 action_exec(encoder_event);
94 }
95 }
96}
97
98void encoder_action_register(uint8_t index, bool clockwise) {
99 keyevent_t encoder_event = (keyevent_t){.key = clockwise ? encoder_cw[index] : encoder_ccw[index], .pressed = true, .time = (timer_read() | 1)};
100 encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
101 action_exec(encoder_event);
102}
103
104void matrix_scan_user(void) { encoder_action_unregister(); }
105
106bool encoder_update_user(uint8_t index, bool clockwise) {
107 encoder_action_register(index, clockwise);
108 return false;
109};
diff --git a/keyboards/tkc/portico75/keymaps/via/rules.mk b/keyboards/tkc/portico75/keymaps/via/rules.mk
new file mode 100644
index 000000000..9680dd937
--- /dev/null
+++ b/keyboards/tkc/portico75/keymaps/via/rules.mk
@@ -0,0 +1,11 @@
1VIA_ENABLE = yes
2LTO_ENABLE = yes
3RGB_MATRIX_ENABLE = no # Use RGB matrix
4
5# project specific files
6SRC += keyboards/wilba_tech/wt_main.c \
7 keyboards/wilba_tech/wt_rgb_backlight.c \
8 quantum/color.c \
9 drivers/led/issi/is31fl3741.c
10
11QUANTUM_LIB_SRC += i2c_master.c
diff --git a/keyboards/tkc/portico75/portico75.c b/keyboards/tkc/portico75/portico75.c
new file mode 100644
index 000000000..812345b38
--- /dev/null
+++ b/keyboards/tkc/portico75/portico75.c
@@ -0,0 +1,188 @@
1/*
2Copyright 2021 Terry Mathews
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18
19#include "portico75.h"
20
21#ifdef RGB_MATRIX_ENABLE
22
23const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
24 {0, CS18_SW1, CS17_SW1, CS16_SW1},
25 {0, CS18_SW2, CS17_SW2, CS16_SW2},
26 {0, CS18_SW3, CS17_SW3, CS16_SW3},
27 {0, CS18_SW4, CS17_SW4, CS16_SW4},
28 {0, CS18_SW5, CS17_SW5, CS16_SW5},
29 {0, CS18_SW6, CS17_SW6, CS16_SW6},
30 {0, CS18_SW7, CS17_SW7, CS16_SW7},
31 {0, CS18_SW8, CS17_SW8, CS16_SW8},
32 {0, CS18_SW9, CS17_SW9, CS16_SW9},
33
34 {0, CS21_SW1, CS20_SW1, CS19_SW1},
35 {0, CS21_SW2, CS20_SW2, CS19_SW2},
36 {0, CS21_SW3, CS20_SW3, CS19_SW3},
37 {0, CS21_SW4, CS20_SW4, CS19_SW4},
38 {0, CS21_SW5, CS20_SW5, CS19_SW5},
39 {0, CS21_SW6, CS20_SW6, CS19_SW6}, //Encoder, NO_LED
40
41 {0, CS15_SW1, CS14_SW1, CS13_SW1},
42 {0, CS15_SW2, CS14_SW2, CS13_SW2},
43 {0, CS15_SW3, CS14_SW3, CS13_SW3},
44 {0, CS15_SW4, CS14_SW4, CS13_SW4},
45 {0, CS15_SW5, CS14_SW5, CS13_SW5},
46 {0, CS15_SW6, CS14_SW6, CS13_SW6},
47 {0, CS15_SW7, CS14_SW7, CS13_SW7},
48 {0, CS15_SW8, CS14_SW8, CS13_SW8},
49 {0, CS15_SW9, CS14_SW9, CS13_SW9},
50
51 {0, CS24_SW1, CS23_SW1, CS22_SW1},
52 {0, CS24_SW2, CS23_SW2, CS22_SW2},
53 {0, CS24_SW3, CS23_SW3, CS22_SW3},
54 {0, CS24_SW4, CS23_SW4, CS22_SW4},
55 {0, CS24_SW5, CS23_SW5, CS22_SW5},
56 {0, CS24_SW6, CS23_SW6, CS22_SW6},
57
58 {0, CS12_SW1, CS11_SW1, CS10_SW1},
59 {0, CS12_SW2, CS11_SW2, CS10_SW2},
60 {0, CS12_SW3, CS11_SW3, CS10_SW3},
61 {0, CS12_SW4, CS11_SW4, CS10_SW4},
62 {0, CS12_SW5, CS11_SW5, CS10_SW5},
63 {0, CS12_SW6, CS11_SW6, CS10_SW6},
64 {0, CS12_SW7, CS11_SW7, CS10_SW7},
65 {0, CS12_SW8, CS11_SW8, CS10_SW8},
66 {0, CS12_SW9, CS11_SW9, CS10_SW9},
67
68 {0, CS27_SW1, CS26_SW1, CS25_SW1},
69 {0, CS27_SW2, CS26_SW2, CS25_SW2},
70 {0, CS27_SW3, CS26_SW3, CS25_SW3},
71 {0, CS27_SW4, CS26_SW4, CS25_SW4},
72 {0, CS27_SW5, CS26_SW5, CS25_SW5},
73 {0, CS27_SW6, CS26_SW6, CS25_SW6},
74
75 {0, CS9_SW1, CS8_SW1, CS7_SW1},
76 {0, CS9_SW2, CS8_SW2, CS7_SW2},
77 {0, CS9_SW3, CS8_SW3, CS7_SW3},
78 {0, CS9_SW4, CS8_SW4, CS7_SW4},
79 {0, CS9_SW5, CS8_SW5, CS7_SW5},
80 {0, CS9_SW6, CS8_SW6, CS7_SW6},
81 {0, CS9_SW7, CS8_SW7, CS7_SW7},
82 {0, CS9_SW8, CS8_SW8, CS7_SW8},
83 {0, CS9_SW9, CS8_SW9, CS7_SW9},
84
85 {0, CS30_SW1, CS29_SW1, CS28_SW1},
86 {0, CS30_SW2, CS29_SW2, CS28_SW2},
87 {0, CS30_SW3, CS29_SW3, CS28_SW3},
88 {0, CS30_SW4, CS29_SW4, CS28_SW4},
89
90 {0, CS6_SW1, CS5_SW1, CS4_SW1},
91 {0, CS6_SW2, CS5_SW2, CS4_SW2},
92 {0, CS6_SW3, CS5_SW3, CS4_SW3},
93 {0, CS6_SW4, CS5_SW4, CS4_SW4},
94 {0, CS6_SW5, CS5_SW5, CS4_SW5},
95 {0, CS6_SW6, CS5_SW6, CS4_SW6},
96 {0, CS6_SW7, CS5_SW7, CS4_SW7},
97 {0, CS6_SW8, CS5_SW8, CS4_SW8},
98 {0, CS6_SW9, CS5_SW9, CS4_SW9},
99
100 {0, CS33_SW1, CS32_SW1, CS31_SW1},
101 {0, CS33_SW2, CS32_SW2, CS31_SW2},
102 {0, CS33_SW3, CS32_SW3, CS31_SW3},
103 {0, CS33_SW4, CS32_SW4, CS31_SW4},
104
105 {0, CS3_SW1, CS2_SW1, CS1_SW1},
106 {0, CS3_SW2, CS2_SW2, CS1_SW2},
107 {0, CS3_SW3, CS2_SW3, CS1_SW3},
108 {0, CS3_SW6, CS2_SW6, CS1_SW6},
109 {0, CS3_SW8, CS2_SW8, CS1_SW8},
110 {0, CS3_SW9, CS2_SW9, CS1_SW9},
111
112 {0, CS36_SW1, CS35_SW1, CS34_SW1},
113 {0, CS36_SW2, CS35_SW2, CS34_SW2},
114 {0, CS36_SW3, CS35_SW3, CS34_SW3},
115
116/*UNDERGLOW*/
117 {0, CS39_SW1, CS38_SW1, CS37_SW1},
118 {0, CS39_SW2, CS38_SW2, CS37_SW2},
119 {0, CS39_SW3, CS38_SW3, CS37_SW3},
120 {0, CS39_SW4, CS38_SW4, CS37_SW4},
121 {0, CS39_SW5, CS38_SW5, CS37_SW5},
122 {0, CS39_SW6, CS38_SW6, CS37_SW6},
123 {0, CS39_SW7, CS38_SW7, CS37_SW7},
124 {0, CS39_SW8, CS38_SW8, CS37_SW8},
125 {0, CS39_SW9, CS38_SW9, CS37_SW9},
126
127 {0, CS36_SW4, CS35_SW4, CS34_SW4},
128 {0, CS36_SW5, CS35_SW5, CS34_SW5},
129 {0, CS36_SW6, CS35_SW6, CS34_SW6},
130 {0, CS36_SW7, CS35_SW7, CS34_SW7},
131 {0, CS36_SW8, CS35_SW8, CS34_SW8},
132 {0, CS36_SW9, CS35_SW9, CS34_SW9},
133
134 {0, CS33_SW5, CS32_SW5, CS31_SW5},
135 {0, CS33_SW6, CS32_SW6, CS31_SW6},
136 {0, CS33_SW7, CS32_SW7, CS31_SW7},
137
138};
139led_config_t g_led_config = { {
140 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14},
141 { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29},
142 { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44},
143 { 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, NO_LED, NO_LED},
144 { 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, NO_LED, NO_LED},
145 { 71, 72, 73, NO_LED, NO_LED, 74, NO_LED, NO_LED, NO_LED, 75, 76, 77, 78, 79, NO_LED},
146}, {
147 {0,0},{18,0},{33,0},{48,0},{62,0},{81,0},{96,0},{110,0},{125,0},{143,0},{158,0},{173,0},{187,0},{205,0},{224,0},
148 {0,15},{15,15},{29,15},{44,15},{59,15},{74,15},{88,15},{103,15},{118,15},{132,15},{147,15},{162,15},{176,15},{198,15},{224,15},
149 {4,26},{22,26},{37,26},{51,26},{66,26},{81,26},{96,26},{110,26},{125,26},{140,26},{154,26},{169,26},{183,26},{202,26},{224,26},
150 {5,38},{25,38},{40,38},{54,38},{69,38},{84,38},{98,38},{113,38},{128,38},{143,38},{157,38},{172,38},{197,38},
151 {9,49},{33,49},{48,49},{62,49},{77,49},{92,49},{107,49},{121,49},{136,49},{151,49},{165,49},{186,49},{209,52},
152 {2,61},{20,61},{39,61},{94,61},{151,61},{173,61},{195,64},{209,64},{224,64},
153 {2,0},{46,0},{90,0},{134,0},{178,0},{222,0},{224,2},{224,32},{224,62},{2,64},{46,64},{90,64},{134,64},{178,64},{222,64},{0,2},{0,32},{0,62},
154}, {
155 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
156 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
157 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
158 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
159 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
160 4, 4, 4, 4, 4, 4, 4, 4, 4,
161 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
162} };
163
164__attribute__ ((weak))
165void rgb_matrix_indicators_user(void)
166{
167 if (host_keyboard_led_state().caps_lock)
168 {
169 rgb_matrix_set_color(45, 0xFF, 0xFF, 0xFF);
170 }
171}
172#endif
173
174#ifdef ENCODER_ENABLE
175bool encoder_update_kb(uint8_t index, bool clockwise) {
176 if (!encoder_update_user(index, clockwise)) {
177 return false;
178 }
179 if (index == 0) {
180 if (clockwise) {
181 tap_code_delay(KC_VOLU, 10);
182 } else {
183 tap_code_delay(KC_VOLD, 10);
184 }
185 }
186 return true;
187}
188#endif
diff --git a/keyboards/tkc/portico75/portico75.h b/keyboards/tkc/portico75/portico75.h
new file mode 100644
index 000000000..019fb07f7
--- /dev/null
+++ b/keyboards/tkc/portico75/portico75.h
@@ -0,0 +1,60 @@
1/*
2Copyright 2021 Terry Mathews
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18
19#pragma once
20
21#include "quantum.h"
22
23#ifdef RGB_BACKLIGHT_PORTICO75
24#include "keyboards/wilba_tech/wt_rgb_backlight_keycodes.h"
25#include "via.h"
26#endif
27
28#define XXX KC_NO
29
30#define LAYOUT_75_ansi( \
31 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
32 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
33 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
34 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
35 K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, \
36 K50, K51, K52, K55, K59, K5A, K5B, K5C, K5D \
37) { \
38 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
39 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
40 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
41 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX, XXX }, \
42 { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, XXX, XXX }, \
43 { K50, K51, K52, XXX, XXX, K55, XXX, XXX, XXX, K59, K5A, K5B, K5C, K5D, XXX } \
44}
45
46#define LAYOUT_75_via( \
47 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
48 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
49 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
50 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3E, \
51 K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4E, \
52 K50, K51, K52, K55, K59, K5A, K5B, K5C, K5D \
53) { \
54 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
55 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
56 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
57 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX, K3E }, \
58 { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, XXX, K4E }, \
59 { K50, K51, K52, XXX, XXX, K55, XXX, XXX, XXX, K59, K5A, K5B, K5C, K5D, XXX } \
60}
diff --git a/keyboards/tkc/portico75/readme.md b/keyboards/tkc/portico75/readme.md
new file mode 100644
index 000000000..3bb5ad319
--- /dev/null
+++ b/keyboards/tkc/portico75/readme.md
@@ -0,0 +1,21 @@
1# TKC Portico75
2
3![TKC Portico75](https://i.imgur.com/Bkd0kYS.jpg)
4
5A 75% keyboard kit with per-key and underglow RGB lighting and an encoder knob.
6
7* Keyboard Maintainer: [TerryMathews](https://github.com/TerryMathews)
8* Hardware Supported: TKC Portico75 (ATmega32U4)
9* Hardware Availability: TBA
10
11Reset board into bootloader by holding down Esc key while plugging in USB-C cable.
12
13Make example for this keyboard (after setting up your build environment):
14
15 make tkc/portico75:default
16
17Flashing example for this keyboard:
18
19 make tkc/portico75:default:flash
20
21See 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/tkc/portico75/rules.mk b/keyboards/tkc/portico75/rules.mk
new file mode 100644
index 000000000..e8a74c902
--- /dev/null
+++ b/keyboards/tkc/portico75/rules.mk
@@ -0,0 +1,22 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
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
15NKRO_ENABLE = yes # Enable N-Key Rollover
16BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
17RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
18AUDIO_ENABLE = no # Audio output
19RGB_MATRIX_ENABLE = yes # Use RGB matrix
20RGB_MATRIX_DRIVER = IS31FL3741
21CIE1931_CURVE = yes
22ENCODER_ENABLE = yes