Skip to content

Commit

Permalink
[Keyboard] TKC Portico75 (#15114)
Browse files Browse the repository at this point in the history
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jael're <drashna@live.com>
  • Loading branch information
3 people authored Feb 4, 2022
1 parent f52cc21 commit 13821fd
Show file tree
Hide file tree
Showing 10 changed files with 822 additions and 2 deletions.
179 changes: 179 additions & 0 deletions keyboards/tkc/portico75/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
/*
Copyright 2021 Terry Mathews
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

#include "config_common.h"

/* USB Device descriptor parameter */
#define VENDOR_ID 0x544B // TK
#define PRODUCT_ID 0x0011
#define DEVICE_VER 0x0001
#define MANUFACTURER TKC
#define PRODUCT Portico75

/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15

#define MATRIX_ROW_PINS \
{ B0, E6, F0, F1, D3, D2 }
#define MATRIX_COL_PINS \
{ F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, B3, B7 }

/*Rotary Encoder Pins*/
#define ENCODERS_PAD_A \
{ B1 }
#define ENCODERS_PAD_B \
{ B2 }

/*Sets the number of pulses per increment*/
#define ENCODER_RESOLUTION 2

/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW

/* disable these deprecated features by default */
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION

#ifdef RGB_MATRIX_ENABLE
# define RGB_MATRIX_LED_PROCESS_LIMIT 4
# define RGB_MATRIX_LED_FLUSH_LIMIT 26
# define DEBOUNCE 3
# define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
# define RGB_MATRIX_KEYPRESSES

// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
# define ENABLE_RGB_MATRIX_ALPHAS_MODS
// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
# define ENABLE_RGB_MATRIX_BREATHING
// # define ENABLE_RGB_MATRIX_BAND_SAT
# define ENABLE_RGB_MATRIX_BAND_VAL
// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
# define ENABLE_RGB_MATRIX_CYCLE_ALL
# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
# define ENABLE_RGB_MATRIX_DUAL_BEACON
# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
# define ENABLE_RGB_MATRIX_RAINDROPS
# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
# define ENABLE_RGB_MATRIX_HUE_BREATHING
# define ENABLE_RGB_MATRIX_HUE_PENDULUM
# define ENABLE_RGB_MATRIX_HUE_WAVE
# define ENABLE_RGB_MATRIX_PIXEL_RAIN
# define ENABLE_RGB_MATRIX_PIXEL_FLOW
# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
// # define ENABLE_RGB_MATRIX_SPLASH
// # define ENABLE_RGB_MATRIX_MULTISPLASH
// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH

# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
# define DRIVER_ADDR_1 0b0110000
# define DRIVER_COUNT 1
# define DRIVER_1_LED_TOTAL 98
# define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
# define DRIVER_INDICATOR_LED_TOTAL 0
#else
// WT_RGB IS31FL3741 driver code
# define DRIVER_COUNT 1
# define DRIVER_LED_TOTAL 98

# define RGB_BACKLIGHT_ENABLED 1

// This conditionally compiles the backlight code for Portico75 specifics
# define RGB_BACKLIGHT_PORTICO75

// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
# define RGB_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 1

// disable backlight after timeout in minutes, 0 = no timeout
# define RGB_BACKLIGHT_DISABLE_AFTER_TIMEOUT 0

// the default brightness
# define RGB_BACKLIGHT_BRIGHTNESS 255

// the default effect (RGB test)
# define RGB_BACKLIGHT_EFFECT 255

// the default effect speed (0-3)
# define RGB_BACKLIGHT_EFFECT_SPEED 0

// the default color1 and color2
# define RGB_BACKLIGHT_COLOR_1 \
{ .h = 0, .s = 255 }
# define RGB_BACKLIGHT_COLOR_2 \
{ .h = 127, .s = 255 }

# define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 0
# define RGB_BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
# define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 0
# define RGB_BACKLIGHT_USE_7U_SPACEBAR 0
# define RGB_BACKLIGHT_USE_ISO_ENTER 0
# define RGB_BACKLIGHT_DISABLE_HHKB_BLOCKER_LEDS 0
# define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR \
{ .color = {.h = 0, .s = 0}, .index = 255 }
# define RGB_BACKLIGHT_LAYER_1_INDICATOR \
{ .color = {.h = 0, .s = 0}, .index = 255 }
# define RGB_BACKLIGHT_LAYER_2_INDICATOR \
{ .color = {.h = 0, .s = 0}, .index = 255 }
# define RGB_BACKLIGHT_LAYER_3_INDICATOR \
{ .color = {.h = 0, .s = 0}, .index = 255 }

// These define which keys in the matrix are alphas/mods
// Used for backlight effects so colors are different for
// alphas vs. mods
// Each value is for a row, bit 0 is column 0
// Alpha=0 Mod=1
# define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0110000000000001
# define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0110000000000001
# define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0111000000000001
# define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0111100000000001
# define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b1111111111111111

// Backlight config starts after VIA's EEPROM usage,
// dynamic keymaps start after this.
# define VIA_EEPROM_CUSTOM_CONFIG_SIZE 31

// VIA lighting is handled by the keyboard-level code
# define VIA_CUSTOM_LIGHTING_ENABLE
#endif
10 changes: 10 additions & 0 deletions keyboards/tkc/portico75/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"keyboard_name": "TKC Portico75",
"url": "",
"maintainer": "TerryMathews",
"layouts": {
"LAYOUT_75_ansi": {
"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}]
}
}
}
31 changes: 31 additions & 0 deletions keyboards/tkc/portico75/keymaps/default/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
Copyright 2021 Terry Mathews
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/


#include QMK_KEYBOARD_H


const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_75_ansi(
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,
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,
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,
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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
)
};
109 changes: 109 additions & 0 deletions keyboards/tkc/portico75/keymaps/via/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
/*
Copyright 2021 Terry Mathews
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/


#include QMK_KEYBOARD_H

#define ENCODERS 1

#define ENCODERS_CW_KEY { { 14, 3 } }
#define ENCODERS_CCW_KEY { { 14, 4 } }

static uint8_t encoder_state[ENCODERS] = {0};
static keypos_t encoder_cw[ENCODERS] = ENCODERS_CW_KEY;
static keypos_t encoder_ccw[ENCODERS] = ENCODERS_CCW_KEY;

// WT RGB-specific keys:
// EF_INC, EF_DEC, // next/previous backlight effect
// H1_INC, H1_DEC, // Color 1 hue increase/decrease
// S1_INC, S1_DEC, // Color 1 saturation increase/decrease
// H2_INC, H2_DEC, // Color 2 hue increase/decrease
// S2_INC, S2_DEC, // Color 2 saturation increase/decrease
// BR_INC, BR_DEC, // backlight brightness increase/decrease

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_75_via(
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,
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,
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,
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,
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,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
),
#ifdef RGB_BACKLIGHT_PORTICO75
[1] = LAYOUT_75_via(
_______, EF_INC, EF_DEC, H1_INC, H1_DEC, S1_INC, S1_DEC, H2_INC, H2_DEC, S2_INC, S2_DEC, BR_INC, BR_DEC, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, MO(1), _______, _______, _______
),
#else
[1] = LAYOUT_75_via(
_______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, MO(1), _______, _______, _______
),
#endif
[2] = LAYOUT_75_via(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
[3] = LAYOUT_75_via(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
)
};

void encoder_action_unregister(void) {
for (int index = 0; index < ENCODERS; ++index) {
if (encoder_state[index]) {
keyevent_t encoder_event = (keyevent_t) {
.key = encoder_state[index] >> 1 ? encoder_cw[index] : encoder_ccw[index],
.pressed = false,
.time = (timer_read() | 1)
};
encoder_state[index] = 0;
action_exec(encoder_event);
}
}
}

void encoder_action_register(uint8_t index, bool clockwise) {
keyevent_t encoder_event = (keyevent_t){.key = clockwise ? encoder_cw[index] : encoder_ccw[index], .pressed = true, .time = (timer_read() | 1)};
encoder_state[index] = (clockwise ^ 1) | (clockwise << 1);
action_exec(encoder_event);
}

void matrix_scan_user(void) { encoder_action_unregister(); }

bool encoder_update_user(uint8_t index, bool clockwise) {
encoder_action_register(index, clockwise);
return false;
};
11 changes: 11 additions & 0 deletions keyboards/tkc/portico75/keymaps/via/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
VIA_ENABLE = yes
LTO_ENABLE = yes
RGB_MATRIX_ENABLE = no # Use RGB matrix

# project specific files
SRC += keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
drivers/led/issi/is31fl3741.c

QUANTUM_LIB_SRC += i2c_master.c
Loading

0 comments on commit 13821fd

Please sign in to comment.