smallcat personal keyboard configuration

This commit is contained in:
Sadek Baroudi 2025-03-02 14:36:32 -08:00
parent ff882608e0
commit ceeb143cbf
22 changed files with 1000 additions and 45 deletions

View File

@ -0,0 +1,5 @@
#pragma once
#include "keyboards/fingerpunch/src/config_pre.h"
#include "keyboards/fingerpunch/src/config_post.h"

View File

@ -0,0 +1,87 @@
{
"manufacturer": "Matt Petiteau",
"keyboard_name": "smallcat",
"url": "https://github.com/smallwat3r/smallcat",
"maintainer": "smallwat3r",
"usb": {
"vid": "0xFEED",
"pid": "0x0000",
"device_version": "1.0.0"
},
"board": "GENERIC_RP_RP2040",
"bootloader": "rp2040",
"processor": "RP2040",
"features": {
"extrakey": true,
"mousekey": true,
"unicode": true
},
"matrix_pins": {
"direct": [
[null, "GP26", "GP27", "GP28", null],
["GP15", "GP14", "GP13", "GP12", "GP0"],
[null, "GP5", "GP6", "GP7", null],
["GP10", "GP11", null, null, null]
]
},
"split": {
"enabled": true,
"matrix_pins": {
"right": {
"direct": [
[null, "GP28", "GP27", "GP26", null],
["GP0", "GP12", "GP13", "GP14", "GP15"],
[null, "GP7", "GP6", "GP5", null],
["GP11", "GP10", null, null, null]
]
}
},
"transport": {
"protocol": "serial"
},
"soft_serial_pin": "GP1"
},
"layout_aliases": {
"LAYOUT": "LAYOUT_smallcat"
},
"layouts": {
"LAYOUT_smallcat": {
"layout":
[
{"x": 1, "y": 0.31, "matrix": [0, 1]},
{"x": 2, "y": 0, "matrix": [0, 2]},
{"x": 3, "y": 0.28, "matrix": [0, 3]},
{"x": 8, "y": 0.28, "matrix": [4, 1]},
{"x": 9, "y": 0, "matrix": [4, 2]},
{"x": 10, "y": 0.31, "matrix": [4, 3]},
{"x": 0, "y": 1.93, "matrix": [1, 0]},
{"x": 1, "y": 1.31, "matrix": [1, 1]},
{"x": 2, "y": 1, "matrix": [1, 2]},
{"x": 3, "y": 1.28, "matrix": [1, 3]},
{"x": 4, "y": 1.42, "matrix": [1, 4]},
{"x": 7, "y": 1.42, "matrix": [5, 0]},
{"x": 8, "y": 1.28, "matrix": [5, 1]},
{"x": 9, "y": 1, "matrix": [5, 2]},
{"x": 10, "y": 1.31, "matrix": [5, 3]},
{"x": 11, "y": 1.93, "matrix": [5, 4]},
{"x": 1, "y": 2.31, "matrix": [2, 1]},
{"x": 2, "y": 2, "matrix": [2, 2]},
{"x": 3, "y": 2.28, "matrix": [2, 3]},
{"x": 8, "y": 2.28, "matrix": [6, 1]},
{"x": 9, "y": 2, "matrix": [6, 2]},
{"x": 10, "y": 2.31, "matrix": [6, 3]},
{"x": 3.5, "y": 3.75, "matrix": [3, 0]},
{"x": 4.5, "y": 4, "matrix": [3, 1]},
{"x": 6.5, "y": 4, "matrix": [7, 0]},
{"x": 7.5, "y": 3.75, "matrix": [7, 1]}
]
}
}
}

View File

@ -0,0 +1,27 @@
#include QMK_KEYBOARD_H
/* default generic keymap */
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_split_3x5_2(
KC_W, KC_F, KC_P, KC_L, KC_U, KC_Y,
KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O,
KC_Q, KC_C, KC_D, KC_H, KC_COMM, KC_DOT,
KC_TRNS, KC_SPC, KC_BSPC, KC_ENT
)
};
/* combo definitions */
const uint16_t PROGMEM combo_x[] = {KC_W, KC_F, COMBO_END};
const uint16_t PROGMEM combo_b[] = {KC_F, KC_P, COMBO_END};
const uint16_t PROGMEM combo_z[] = {KC_Q, KC_C, COMBO_END};
const uint16_t PROGMEM combo_v[] = {KC_C, KC_D, COMBO_END};
const uint16_t PROGMEM combo_j[] = {KC_L, KC_U, COMBO_END};
const uint16_t PROGMEM combo_k[] = {KC_H, KC_COMM, COMBO_END};
combo_t key_combos[] = {
COMBO(combo_x, KC_X),
COMBO(combo_b, KC_B),
COMBO(combo_z, KC_Z),
COMBO(combo_v, KC_V),
COMBO(combo_j, KC_J),
COMBO(combo_k, KC_K),
};

View File

@ -0,0 +1 @@
COMBO_ENABLE = yes

View File

@ -0,0 +1,98 @@
/* Copyright 2025 Sadek Baroudi
*
* 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 "sadekbaroudi.h"
#include QMK_KEYBOARD_H
/*
* The `LAYOUT_ffkb_base` macro is a template to allow the use of identical
* modifiers for the default layouts (eg ALPHA_ALT, Colemak, Dvorak, etc), so
* that there is no need to set them up for each layout, and modify all of
* them if I want to change them. This helps to keep consistency and ease
* of use. K## is a placeholder to pass through the individual keycodes
*/
// clang-format off
#define LAYOUT_smallcat_base( \
K02, K03, K04, K07, K08, K09, \
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
K22, K23, K24, K27, K28, K29, \
K34, K35, K36, K37 \
) \
LAYOUT_wrapper( \
K02, K03, K04, K07, K08, K09, \
LCTL_T(K11), LGUI_T(K12), LALT_T(K13), LSFT_T(K14), K15, LT(_MOUSE, K16), RSFT_T(K17), RALT_T(K18), RGUI_T(K19), RCTL_T(K1A), \
K22, K23, K24, K27, K28, K29, \
LT(_FUNCTION,K34), LT(_NAVIGATION,K35), LT(_SYMBOLS,K36), LT(_MEDIA,K37) \
)
/* Re-pass though to allow templates to be used */
#define LAYOUT_smallcat_base_wrapper(...) LAYOUT_smallcat_base(__VA_ARGS__)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ALPHA_ALT] = LAYOUT_smallcat_base_wrapper(
__ALPHA_ALT_L1_K2__, __ALPHA_ALT_L1_K3__, __ALPHA_ALT_L1_K4__, __ALPHA_ALT_R1_K2__, __ALPHA_ALT_R1_K3__, __ALPHA_ALT_R1_K4__,
_________________ALPHA_ALT_L2_________________, _________________ALPHA_ALT_R2_________________,
__ALPHA_ALT_L3_K2__, __ALPHA_ALT_L3_K3__, __ALPHA_ALT_L3_K4__, __ALPHA_ALT_R3_K2__, __ALPHA_ALT_R3_K3__, __ALPHA_ALT_R3_K4__,
__ALPHA_ALT_THUMBS_LEFT_2_TUCKY__, __ALPHA_ALT_THUMBS_RIGHT_2_TUCKY__
),
[_ALPHA] = LAYOUT_smallcat_base_wrapper(
__ALPHA_L1_K2__, __ALPHA_L1_K3__, __ALPHA_L1_K4__, __ALPHA_R1_K2__, __ALPHA_R1_K3__, __ALPHA_R1_K4__,
__________________ALPHA_L2____________________, __________________ALPHA_R2____________________,
__ALPHA_L3_K2__, __ALPHA_L3_K3__, __ALPHA_L3_K4__, __ALPHA_R3_K2__, __ALPHA_R3_K3__, __ALPHA_R3_K4__,
__ALPHA_THUMBS_LEFT_2_TUCKY__, __ALPHA_THUMBS_RIGHT_2_TUCKY__
),
[_NAVIGATION] = LAYOUT_wrapper(
__NAV_1_K2__, __NAV_1_K3__, __NAV_1_K4__, __NUMPAD_1_K2__, __NUMPAD_1_K3__, __NUMPAD_1_K4__,
________________NAVIGATION_2_______________, _________________NUMPAD_2__________________,
__NAV_3_K2__, __NAV_3_K3__, __NAV_3_K4__, __NUMPAD_3_K2__, __NUMPAD_3_K3__, __NUMPAD_3_K4__,
_______, _______, /*KC_TAB, KC_BSPC,*/ KC_SPACE, KC_DOT
),
[_SYMBOLS] = LAYOUT_wrapper(
__SYMBOLS_L1_K2__, __SYMBOLS_L1_K3__, __SYMBOLS_L1_K4__, __SYMBOLS_R1_K2__, __SYMBOLS_R1_K3__, __SYMBOLS_R1_K4__,
________________SYMBOLS_L2_________________, ________________SYMBOLS_R2_________________,
__META_NAV_L1_K2__, __META_NAV_L1_K3__, __META_NAV_L1_K4__, __META_NAV_L2_K2__, __META_NAV_L2_K3__, __META_NAV_L2_K4__,
_______, KC_ENT, /*KC_DEL, KC_BSPC,*/ _______, _______
),
[_FUNCTION] = LAYOUT_wrapper(
__SHIFTNAV_1_K2__, __SHIFTNAV_1_K3__, __SHIFTNAV_1_K4__, __FUNCTION_1_K2__, __FUNCTION_1_K3__, __FUNCTION_1_K4__,
________________SHIFTNAV_2_________________, ________________FUNCTION_2_________________,
__SHIFTNAV_3_K2__, __SHIFTNAV_3_K3__, __SHIFTNAV_3_K4__, __FUNCTION_3_K2__, __FUNCTION_3_K3__, __FUNCTION_3_K4__,
_______, _______, /*_______, N_DEL_LINE,*/ KC_SPACE, _______
),
[_MEDIA] = LAYOUT_wrapper(
__RGB_1_K2__, __RGB_1_K3__, __RGB_1_K4__, __MACROS_1_K2__, __MACROS_1_K3__, __MACROS_1_K4__,
__RGB_2_K1__, __RGB_2_K2__, __RGB_2_K3__, __RGB_2_K4__, __RGB_2_K5__, _________________MACROS_2__________________,
__RGB_3_K2__, __RGB_3_K3__, __RGB_3_K4__, __MACROS_3_K2__, __MACROS_3_K3__, __MACROS_3_K4__,
_______, _______, /*_______, _______,*/ _______, _______
),
[_MOUSE] = LAYOUT_wrapper(
__MOUSE_1_K2__, __MOUSE_1_K3__, __MOUSE_1_K4__, _______, _______, _______,
__________________MOUSE_2__________________, _______, _______, _______, _______, _______,
__MOUSE_3_K2__, __MOUSE_3_K3__, __MOUSE_3_K4__, _______, _______, _______,
_______, KC_MS_BTN1, /*KC_MS_BTN3, KC_MS_BTN3,*/ KC_MS_BTN2, _______
)
};
// Combo definitions in
// users/sadekbaroudi/combos.c

View File

@ -0,0 +1 @@
COMBO_ENABLE = yes

View File

@ -0,0 +1,25 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define DYNAMIC_KEYMAP_LAYER_COUNT 8
#define VIAL_TAP_DANCE_ENTRIES 20
#define VIAL_COMBO_ENTRIES 40
#define VIAL_KEYBOARD_UID {0xDA, 0x2A, 0xFA, 0x9D, 0x66, 0xE4, 0x31, 0x52}
#define VIAL_UNLOCK_COMBO_ROWS { 0, 1 }
#define VIAL_UNLOCK_COMBO_COLS { 1, 4 }
#define NO_ALT_REPEAT_KEY
/* make use of the mounted WS2812 led from the Waveshare RP2040-zero */
#ifdef RGBLIGHT_ENABLE
# define RGBLIGHT_LED_COUNT 1
# define RGBLIGHT_SPLIT
# define RGBLIGHT_DEFAULT_HUE 110
# define RGBLIGHT_LIMIT_VAL 10
# define RGBLIGHT_SLEEP
# define RGBLIGHT_LAYERS
# define RGBLIGHT_HUE_STEP 20
# define WS2812_DI_PIN GP16
#endif

View File

@ -0,0 +1,31 @@
#include QMK_KEYBOARD_H
#ifdef RGBLIGHT_ENABLE
const rgblight_segment_t PROGMEM capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 1, HSV_RED});
const rgblight_segment_t PROGMEM osm_shift_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 1, HSV_YELLOW});
const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(capslock_layer, osm_shift_layer);
void keyboard_post_init_user(void) { rgblight_layers = rgb_layers; }
/* light up led in red when caps lock in on */
bool led_update_user(led_t led_state) {
rgblight_set_layer_state(0, led_state.caps_lock);
return true;
}
/* light up led in yellow when sticky shift is activated */
void oneshot_mods_changed_user(uint8_t mods) {
if (mods & MOD_MASK_SHIFT) { rgblight_set_layer_state(1, true); }
if (!mods) { rgblight_set_layer_state(1, false); }
}
#endif
/* default empty layout */
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_split_3x5_2(
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, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@ -0,0 +1,15 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
LTO_ENABLE = yes
TAP_DANCE_ENABLE = yes
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
REPEAT_KEY_ENABLE = yes
COMBO_ENABLE = yes
QMK_SETTINGS = yes
RGBLIGHT_ENABLE = yes
WS2812_DRIVER = vendor
KEY_OVERRIDE_ENABLE = no
VIAL_INSECURE = no

View File

@ -0,0 +1,144 @@
{
"name": "smallcat",
"firmwareVersion": 0,
"keycodes": [
"via/keycodes"
],
"menus": [
"via/keymap",
"via/layouts",
"via/macros",
"via/save_load"
],
"matrix": {
"rows": 8,
"cols": 5
},
"layouts": {
"keymap": [
[
{
"x": 2
},
"0,2",
{
"x": 5.25
},
"4,2"
],
[
{
"y": -0.75,
"x": 1
},
"0,1",
{
"x": 1
},
"0,3",
{
"x": 3.25
},
"4,1",
{
"x": 1
},
"4,3"
],
[
{
"y": -0.25,
"x": 2
},
"1,2",
{
"x": 5.25
},
"5,2"
],
[
{
"y": -0.75,
"x": 1
},
"1,1",
{
"x": 1
},
"1,3",
"1,4",
{
"x": 1.25
},
"5,0",
"5,1",
{
"x": 1
},
"5,3"
],
[
{
"y": -0.5
},
"1,0",
{
"x": 9.25
},
"5,4"
],
[
{
"y": -0.75,
"x": 2
},
"2,2",
{
"x": 5.25
},
"6,2"
],
[
{
"y": -0.75,
"x": 1
},
"2,1",
{
"x": 1
},
"2,3",
{
"x": 3.25
},
"6,1",
{
"x": 1
},
"6,3"
],
[
{
"y": 0.25,
"x": 3.5
},
"3,0",
{
"x": 2.25
},
"7,1"
],
[
{
"y": -0.75,
"x": 4.5
},
"3,1",
{
"x": 0.25
},
"7,0"
]
]
}
}

View File

@ -0,0 +1,13 @@
# Smallcat
![smallcat](https://raw.githubusercontent.com/smallwat3r/smallcat/refs/heads/main/images/smallcat.png)
A 26-key split keyboard. [More info](https://github.com/smallwat3r/smallcat).
* Keyboard Maintainer: [Matt Petiteau](https://github.com/smallwat3r/)
Make example for this keyboard (after setting up your build environment):
make smallcat:vial
See 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).

View File

@ -0,0 +1,4 @@
# MCU name
SERIAL_DRIVER = vendor
include keyboards/fingerpunch/src/rules.mk

View File

@ -0,0 +1 @@
#include "smallcat.h"

View File

@ -0,0 +1,3 @@
#pragma once
#include "quantum.h"
#include "keyboards/fingerpunch/src/fp.h"

View File

@ -22,6 +22,66 @@ const uint16_t PROGMEM rparen_combo[] = {RSFT_T(KC_N), KC_H, COMBO_END};
const uint16_t PROGMEM rcurly_combo[] = {RALT_T(KC_E), KC_COMMA, COMBO_END};
const uint16_t PROGMEM rbracket_combo[] = {RGUI_T(KC_I), KC_DOT, COMBO_END};
#endif
#ifdef KEYBOARD_fingerpunch_personal_smallcat
// Corner keys
// Base layer
const uint16_t PROGMEM q_combo[] = {KC_W, KC_F, COMBO_END};
const uint16_t PROGMEM b_combo[] = {KC_F, KC_P, COMBO_END};
const uint16_t PROGMEM z_combo[] = {KC_X, KC_C, COMBO_END};
const uint16_t PROGMEM v_combo[] = {KC_C, KC_D, COMBO_END};
const uint16_t PROGMEM j_combo[] = {KC_L, KC_U, COMBO_END};
const uint16_t PROGMEM k_combo[] = {KC_H, KC_COMM, COMBO_END};
const uint16_t PROGMEM semi_combo[] = {KC_U, KC_Y, COMBO_END};
const uint16_t PROGMEM slash_combo[] = {KC_COMM, KC_DOT, COMBO_END};
// Nav section
const uint16_t PROGMEM nav_tl_combo[] = {__NAV_1_K2__, __NAV_1_K3__, COMBO_END};
const uint16_t PROGMEM nav_tr_combo[] = {__NAV_1_K3__, __NAV_1_K4__, COMBO_END};
const uint16_t PROGMEM nav_bl_combo[] = {__NAV_3_K2__, __NAV_3_K3__, COMBO_END};
const uint16_t PROGMEM nav_br_combo[] = {__NAV_3_K3__, __NAV_3_K4__, COMBO_END};
// Numpad section
const uint16_t PROGMEM num_tl_combo[] = {__NUMPAD_1_K2__, __NUMPAD_1_K3__, COMBO_END};
const uint16_t PROGMEM num_tr_combo[] = {__NUMPAD_1_K3__, __NUMPAD_1_K4__, COMBO_END};
const uint16_t PROGMEM num_bl_combo[] = {__NUMPAD_3_K2__, __NUMPAD_3_K3__, COMBO_END};
const uint16_t PROGMEM num_br_combo[] = {__NUMPAD_3_K3__, __NUMPAD_3_K4__, COMBO_END};
// Symbols section
const uint16_t PROGMEM sym_l_tl_combo[] = {__SYMBOLS_L1_K2__, __SYMBOLS_L1_K3__, COMBO_END};
const uint16_t PROGMEM sym_l_tr_combo[] = {__SYMBOLS_L1_K3__, __SYMBOLS_L1_K4__, COMBO_END};
const uint16_t PROGMEM sym_l_bl_combo[] = {__META_NAV_L1_K2__, __META_NAV_L1_K3__, COMBO_END};
const uint16_t PROGMEM sym_l_br_combo[] = {__META_NAV_L1_K3__, __META_NAV_L1_K4__, COMBO_END};
const uint16_t PROGMEM sym_r_tl_combo[] = {__SYMBOLS_R1_K2__, __SYMBOLS_R1_K3__, COMBO_END};
const uint16_t PROGMEM sym_r_tr_combo[] = {__SYMBOLS_R1_K3__, __SYMBOLS_R1_K4__, COMBO_END};
const uint16_t PROGMEM sym_r_bl_combo[] = {__META_NAV_L2_K2__, __META_NAV_L2_K3__, COMBO_END};
const uint16_t PROGMEM sym_r_br_combo[] = {__META_NAV_L2_K3__, __META_NAV_L2_K4__, COMBO_END};
// Shift Nav section
const uint16_t PROGMEM shiftnav_tl_combo[] = {__SHIFTNAV_1_K2__, __SHIFTNAV_1_K3__, COMBO_END};
const uint16_t PROGMEM shiftnav_tr_combo[] = {__SHIFTNAV_1_K3__, __SHIFTNAV_1_K4__, COMBO_END};
const uint16_t PROGMEM shiftnav_bl_combo[] = {__SHIFTNAV_3_K2__, __SHIFTNAV_3_K3__, COMBO_END};
const uint16_t PROGMEM shiftnav_br_combo[] = {__SHIFTNAV_3_K3__, __SHIFTNAV_3_K4__, COMBO_END};
// Function section
const uint16_t PROGMEM function_tl_combo[] = {__FUNCTION_1_K2__, __FUNCTION_1_K3__, COMBO_END};
const uint16_t PROGMEM function_tr_combo[] = {__FUNCTION_1_K3__, __FUNCTION_1_K4__, COMBO_END};
const uint16_t PROGMEM function_bl_combo[] = {__FUNCTION_3_K2__, __FUNCTION_3_K3__, COMBO_END};
const uint16_t PROGMEM function_br_combo[] = {__FUNCTION_3_K3__, __FUNCTION_3_K4__, COMBO_END};
// RGB section
const uint16_t PROGMEM rgb_tl_combo[] = {__RGB_1_K2__, __RGB_1_K3__, COMBO_END};
const uint16_t PROGMEM rgb_tr_combo[] = {__RGB_1_K3__, __RGB_1_K4__, COMBO_END};
const uint16_t PROGMEM rgb_bl_combo[] = {__RGB_3_K2__, __RGB_3_K3__, COMBO_END};
const uint16_t PROGMEM rgb_br_combo[] = {__RGB_3_K3__, __RGB_3_K4__, COMBO_END};
// Macros section
const uint16_t PROGMEM macros_tl_combo[] = {__MACROS_1_K2__, __MACROS_1_K3__, COMBO_END};
const uint16_t PROGMEM macros_tr_combo[] = {__MACROS_1_K3__, __MACROS_1_K4__, COMBO_END};
const uint16_t PROGMEM macros_bl_combo[] = {__MACROS_3_K2__, __MACROS_3_K3__, COMBO_END};
const uint16_t PROGMEM macros_br_combo[] = {__MACROS_3_K3__, __MACROS_3_K4__, COMBO_END};
// Thumbs
const uint16_t PROGMEM thumb_l_combo[] = {LSFT_T(__ALPHA_L2_K4__), __ALPHA_L2_K5__, COMBO_END};
const uint16_t PROGMEM thumb_r_combo[] = {LT(_MOUSE, __ALPHA_R2_K1__), RSFT_T(__ALPHA_R2_K2__), COMBO_END};
const uint16_t PROGMEM alt_thumb_l_combo[] = {LSFT_T(__ALPHA_ALT_L2_K4__), __ALPHA_ALT_L2_K5__, COMBO_END};
const uint16_t PROGMEM alt_thumb_r_combo[] = {LT(_MOUSE, __ALPHA_ALT_R2_K1__), RSFT_T(__ALPHA_ALT_R2_K2__), COMBO_END};
const uint16_t PROGMEM thumb_l_reachy_nav_combo[] = {__NAV_2_K4__, __NAV_2_K5__, COMBO_END};
const uint16_t PROGMEM thumb_r_reachy_num_combo[] = {__NUMPAD_2_K1__, __NUMPAD_2_K2__, COMBO_END};
const uint16_t PROGMEM thumb_l_reachy_sym_combo[] = {__SYMBOLS_L2_K4__, __SYMBOLS_L2_K5__, COMBO_END};
const uint16_t PROGMEM thumb_r_reachy_sym_combo[] = {__SYMBOLS_R1_K1__, __SYMBOLS_R1_K2__, COMBO_END};
#endif
combo_t key_combos[COMBO_COUNT] = {
[UNDO] = COMBO_ACTION(undo_combo),
@ -41,6 +101,65 @@ combo_t key_combos[COMBO_COUNT] = {
[RCURLY] = COMBO_ACTION(rcurly_combo),
[RBRACKET] = COMBO_ACTION(rbracket_combo),
#endif
#ifdef KEYBOARD_fingerpunch_personal_smallcat
// Base layer
[Q] = COMBO_ACTION(q_combo),
[B] = COMBO_ACTION(b_combo),
[Z] = COMBO_ACTION(z_combo),
[V] = COMBO_ACTION(v_combo),
[J] = COMBO_ACTION(j_combo),
[K] = COMBO_ACTION(k_combo),
[SEMICOLON] = COMBO_ACTION(semi_combo),
[SLASH] = COMBO_ACTION(slash_combo),
// Nav section
[NAV_TL] = COMBO_ACTION(nav_tl_combo),
[NAV_TR] = COMBO_ACTION(nav_tr_combo),
[NAV_BL] = COMBO_ACTION(nav_bl_combo),
[NAV_BR] = COMBO_ACTION(nav_br_combo),
// Numpad section
[NUM_TL] = COMBO_ACTION(num_tl_combo),
[NUM_TR] = COMBO_ACTION(num_tr_combo),
[NUM_BL] = COMBO_ACTION(num_bl_combo),
[NUM_BR] = COMBO_ACTION(num_br_combo),
// Symbols section
[SYM_L_TL] = COMBO_ACTION(sym_l_tl_combo),
[SYM_L_TR] = COMBO_ACTION(sym_l_tr_combo),
[SYM_L_BL] = COMBO_ACTION(sym_l_bl_combo),
[SYM_L_BR] = COMBO_ACTION(sym_l_br_combo),
[SYM_R_TL] = COMBO_ACTION(sym_r_tl_combo),
[SYM_R_TR] = COMBO_ACTION(sym_r_tr_combo),
[SYM_R_BL] = COMBO_ACTION(sym_r_bl_combo),
[SYM_R_BR] = COMBO_ACTION(sym_r_br_combo),
// Shift Nav section
[SHIFTNAV_TL] = COMBO_ACTION(shiftnav_tl_combo),
[SHIFTNAV_TR] = COMBO_ACTION(shiftnav_tr_combo),
[SHIFTNAV_BL] = COMBO_ACTION(shiftnav_bl_combo),
[SHIFTNAV_BR] = COMBO_ACTION(shiftnav_br_combo),
// Function section
[FUNCTION_TL] = COMBO_ACTION(function_tl_combo),
[FUNCTION_TR] = COMBO_ACTION(function_tr_combo),
[FUNCTION_BL] = COMBO_ACTION(function_bl_combo),
[FUNCTION_BR] = COMBO_ACTION(function_br_combo),
// RGB section
[RGB_TL] = COMBO_ACTION(rgb_tl_combo),
[RGB_TR] = COMBO_ACTION(rgb_tr_combo),
[RGB_BL] = COMBO_ACTION(rgb_bl_combo),
[RGB_BR] = COMBO_ACTION(rgb_br_combo),
// Macros section
[MACROS_TL] = COMBO_ACTION(macros_tl_combo),
[MACROS_TR] = COMBO_ACTION(macros_tr_combo),
[MACROS_BL] = COMBO_ACTION(macros_bl_combo),
[MACROS_BR] = COMBO_ACTION(macros_br_combo),
// Thumbs
[THUMB_L] = COMBO_ACTION(thumb_l_combo),
[THUMB_R] = COMBO_ACTION(thumb_r_combo),
[ALT_THUMB_L] = COMBO_ACTION(alt_thumb_l_combo),
[ALT_THUMB_R] = COMBO_ACTION(alt_thumb_r_combo),
[THUMB_L_REACHY_NAV] = COMBO_ACTION(thumb_l_reachy_nav_combo),
[THUMB_R_REACHY_NUM] = COMBO_ACTION(thumb_r_reachy_num_combo),
[THUMB_L_REACHY_SYM] = COMBO_ACTION(thumb_l_reachy_sym_combo),
[THUMB_R_REACHY_SYM] = COMBO_ACTION(thumb_r_reachy_sym_combo),
#endif
};
void process_combo_event(uint16_t combo_index, bool pressed) {
@ -52,7 +171,7 @@ void process_combo_event(uint16_t combo_index, bool pressed) {
tap_code16(LCTL(KC_Z));
}
break;
#ifdef KEYBOARD_fingerpunch_arachnophobe
#if defined(KEYBOARD_fingerpunch_arachnophobe)
case Q:
if (pressed) {
tap_code16(KC_Q);
@ -123,8 +242,257 @@ void process_combo_event(uint16_t combo_index, bool pressed) {
tap_code16(RBRACKET);
}
break;
#elif defined(KEYBOARD_fingerpunch_personal_smallcat)
case Q:
if (pressed) {
tap_code16(KC_Q);
}
break;
case B:
if (pressed) {
tap_code16(KC_B);
}
break;
case Z:
if (pressed) {
tap_code16(KC_Z);
}
break;
case V:
if (pressed) {
tap_code16(KC_V);
}
break;
case J:
if (pressed) {
tap_code16(KC_J);
}
break;
case K:
if (pressed) {
tap_code16(KC_K);
}
break;
case SEMICOLON:
if (pressed) {
tap_code16(KC_SCLN);
}
break;
case SLASH:
if (pressed) {
tap_code16(KC_SLSH);
}
break;
case NAV_TL:
if (pressed) {
// tap_code16(KC_ESC);
tap_code16(__NAV_1_K1__);
}
break;
case NAV_TR:
// This is blank on my main layout
// if (pressed) {
// tap_code16(__NAV_3_K5__);
// }
break;
case NAV_BL:
if (pressed) {
// tap_code16(KC_ESC);
tap_code16(__NAV_3_K1__);
}
break;
case NAV_BR:
if (pressed) {
// tap_code16(LCTL(LGUI(KC_RIGHT)));
tap_code16(__NAV_3_K5__);
}
break;
case NUM_TL:
if (pressed) {
tap_code16(__NUMPAD_1_K1__);
}
break;
case NUM_TR:
if (pressed) {
tap_code16(__NUMPAD_1_K5__);
}
break;
case NUM_BL:
if (pressed) {
tap_code16(__NUMPAD_3_K1__);
}
break;
case NUM_BR:
if (pressed) {
tap_code16(__NUMPAD_3_K5__);
}
break;
case SYM_L_TL:
if (pressed) {
tap_code16(__SYMBOLS_L1_K1__);
}
break;
case SYM_L_TR:
if (pressed) {
tap_code16(__SYMBOLS_L1_K5__);
}
break;
case SYM_L_BL:
if (pressed) {
tap_code16(__META_NAV_L1_K1__);
}
break;
case SYM_L_BR:
if (pressed) {
tap_code16(__META_NAV_L1_K5__);
}
case SYM_R_TL:
if (pressed) {
tap_code16(__SYMBOLS_R1_K1__);
}
break;
case SYM_R_TR:
if (pressed) {
tap_code16(__SYMBOLS_R1_K5__);
}
break;
case SYM_R_BL:
if (pressed) {
tap_code16(__META_NAV_L2_K1__);
}
break;
case SYM_R_BR:
if (pressed) {
tap_code16(__META_NAV_L2_K5__);
}
// Shift Nav section
case SHIFTNAV_TL:
if (pressed) {
tap_code16(__SHIFTNAV_1_K1__);
}
break;
case SHIFTNAV_TR:
if (pressed) {
tap_code16(__SHIFTNAV_1_K5__);
}
break;
case SHIFTNAV_BL:
if (pressed) {
tap_code16(__SHIFTNAV_3_K1__);
}
break;
case SHIFTNAV_BR:
if (pressed) {
tap_code16(__SHIFTNAV_3_K5__);
}
break;
// Function section
case FUNCTION_TL:
if (pressed) {
tap_code16(__FUNCTION_1_K1__);
}
break;
case FUNCTION_TR:
if (pressed) {
tap_code16(__FUNCTION_1_K5__);
}
break;
case FUNCTION_BL:
if (pressed) {
tap_code16(__FUNCTION_3_K1__);
}
break;
case FUNCTION_BR:
if (pressed) {
tap_code16(__FUNCTION_3_K5__);
}
break;
// RGB section
case RGB_TL:
if (pressed) {
tap_code16(__RGB_1_K1__);
}
break;
case RGB_TR:
if (pressed) {
tap_code16(__RGB_1_K5__);
}
break;
case RGB_BL:
if (pressed) {
tap_code16(__RGB_3_K1__);
}
break;
case RGB_BR:
// This key is blank on the default layout
// if (pressed) {
// tap_code16(__RGB_3_K5__);
// }
break;
// Macros section
case MACROS_TL:
if (pressed) {
tap_code16(__MACROS_1_K1__);
}
break;
case MACROS_TR:
if (pressed) {
tap_code16(__MACROS_1_K5__);
}
break;
case MACROS_BL:
if (pressed) {
tap_code16(__MACROS_3_K1__);
}
break;
case MACROS_BR:
if (pressed) {
tap_code16(__MACROS_3_K5__);
}
break;
// Thumbs
case THUMB_L:
if (pressed) {
tap_code16(__ALPHA_THUMB_L3__);
}
break;
case THUMB_R:
if (pressed) {
tap_code16(__ALPHA_THUMB_R1__);
}
break;
case ALT_THUMB_L:
if (pressed) {
tap_code16(__ALPHA_ALT_THUMB_L3__);
}
break;
case ALT_THUMB_R:
if (pressed) {
tap_code16(__ALPHA_ALT_THUMB_R1__);
}
break;
case THUMB_L_REACHY_NAV:
if (pressed) {
tap_code16(__ALPHA_THUMB_L3__);
}
break;
case THUMB_R_REACHY_NUM:
if (pressed) {
tap_code16(__ALPHA_THUMB_R1__);
}
break;
case THUMB_L_REACHY_SYM:
if (pressed) {
tap_code16(__ALPHA_THUMB_L1__);
}
break;
case THUMB_R_REACHY_SYM:
if (pressed) {
tap_code16(__ALPHA_THUMB_R1__);
}
break;
#endif
}
}
// END COMBOS
#endif // stenographobe exclusion
#endif

View File

@ -4,13 +4,14 @@
enum combo_events {
UNDO,
// REDO,
// ENTER,
// DELETE,
// BACKSPACE,
// APOSTROPHE,
// TAB,
// CAPSWORD,
#if defined(KEYBOARD_fingerpunch_arachnophobe)
// REDO,
// ENTER,
// DELETE,
// BACKSPACE,
// APOSTROPHE,
// TAB,
// CAPSWORD,
Q,
P,
B,
@ -25,4 +26,59 @@ enum combo_events {
RPAREN,
RCURLY,
RBRACKET,
#elif defined(KEYBOARD_fingerpunch_personal_smallcat)
Q,
B,
Z,
V,
J,
K,
SEMICOLON,
SLASH,
NAV_TL,
NAV_TR,
NAV_BL,
NAV_BR,
NUM_TL,
NUM_TR,
NUM_BL,
NUM_BR,
SYM_L_TL,
SYM_L_TR,
SYM_L_BL,
SYM_L_BR,
SYM_R_TL,
SYM_R_TR,
SYM_R_BL,
SYM_R_BR,
SHIFTNAV_TL,
SHIFTNAV_TR,
SHIFTNAV_BL,
SHIFTNAV_BR,
FUNCTION_TL,
FUNCTION_TR,
FUNCTION_BL,
FUNCTION_BR,
RGB_TL,
RGB_TR,
RGB_BL,
RGB_BR,
MACROS_TL,
MACROS_TR,
MACROS_BL,
MACROS_BR,
THUMB_L,
THUMB_R,
ALT_THUMB_L,
ALT_THUMB_R,
THUMB_L_REACHY,
THUMB_R_REACHY,
THUMB_L_REACHY_NAV,
THUMB_R_REACHY_NUM,
THUMB_L_REACHY_SYM,
THUMB_R_REACHY_SYM,
#else
#endif
};

View File

@ -2,7 +2,12 @@
// check to see if we are using the stenographobe, and skip if so... it has its own whole combo scheme
// see keyboards/fingerpunch/stenographobe/keymaps/*/config.h
#ifndef KEYBOARD_fingerpunch_stenographobe
#if defined(KEYBOARD_fingerpunch_stenographobe)
#elif defined(KEYBOARD_fingerpunch_arachnophobe)
#define COMBO_COUNT 15
#elif defined(KEYBOARD_fingerpunch_personal_smallcat)
#define COMBO_COUNT 53
#else
#define COMBO_COUNT 15
#endif
@ -31,6 +36,10 @@
#define LEADER_TIMEOUT 300
#define LEADER_PER_KEY_TIMING
// -------------------- Tap dance config ------------------------
#define TAPPING_TERM 175
#define TAPPING_TERM_PER_KEY
// ----------------- Cirque curved overlay override -----------------
#ifdef CIRQUE_CURVED_OVERLAY_ENABLE

View File

@ -62,3 +62,6 @@ ifeq ($(strip $(AUDIO_ENABLE)), yes)
SRC += audio_userspace.c
endif
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
SRC += tapdances.c
endif

View File

@ -173,7 +173,12 @@ uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
// I always type the shift keys too fast, so tapping term of 200 is way too high
case LSFT_T(KC_T):
case RSFT_T(KC_N):
#ifdef KEYBOARD_fingerpunch_personal_smallcat
// There is an exception for smallcat, since the tapping term seems to be too short only on that board
return 150;
#else
return 75;
#endif
default:
return TAPPING_TERM;
}

View File

View File

View File

@ -211,6 +211,11 @@ expanded before being used as arguments to the LAYOUT_xxx macro.
# define LAYOUT LAYOUT_le_chiffre_democratique
#endif
// Since LAYOUT_le_chiffre_democratique uses the name LAYOUT_le_chiffre_democratique instead of LAYOUT
#if (!defined(LAYOUT) && defined(LAYOUT_smallcat))
# define LAYOUT LAYOUT_smallcat
#endif
// clang-format off
#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)
#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
@ -244,13 +249,16 @@ NOTE: These are all the same length. If you do a search/replace
#define __ALPHA_THUMB_R2__ KC_SPACE
#define __ALPHA_THUMB_R3__ KC_QUOT
#define __ALPHA_THUMBS_LEFT_2__ __ALPHA_THUMB_L2__, __ALPHA_THUMB_L3__
#define __ALPHA_THUMBS_RIGHT_2__ __ALPHA_THUMB_R1__, __ALPHA_THUMB_R2__
#define __ALPHA_THUMBS_LEFT_2_TUCKY__ __ALPHA_THUMB_L1__, __ALPHA_THUMB_L2__
#define __ALPHA_THUMBS_RIGHT_2_TUCKY__ __ALPHA_THUMB_R2__, __ALPHA_THUMB_R3__
#define __ALPHA_THUMBS_LEFT_2_REACHY__ __ALPHA_THUMB_L2__, __ALPHA_THUMB_L3__
#define __ALPHA_THUMBS_RIGHT_2_REACHY__ __ALPHA_THUMB_R1__, __ALPHA_THUMB_R2__
#define __ALPHA_THUMBS_LEFT_3__ __ALPHA_THUMB_L1__, __ALPHA_THUMB_L2__, __ALPHA_THUMB_L3__
#define __ALPHA_THUMBS_RIGHT_3__ __ALPHA_THUMB_R1__, __ALPHA_THUMB_R2__, __ALPHA_THUMB_R3__
#define __ALPHA_THUMBS_4__ __ALPHA_THUMBS_LEFT_2__, __ALPHA_THUMBS_RIGHT_2__
#define __ALPHA_THUMBS_4__ __ALPHA_THUMBS_LEFT_2_REACHY__, __ALPHA_THUMBS_RIGHT_2_REACHY__
#define __ALPHA_THUMBS_5__ __ALPHA_THUMB_L1__, __ALPHA_THUMB_L2__, __ALPHA_THUMB_R1__, __ALPHA_THUMB_R2__, __ALPHA_THUMB_R3__
#define __ALPHA_THUMBS_6__ __ALPHA_THUMBS_LEFT_3__, __ALPHA_THUMBS_RIGHT_3__
@ -261,13 +269,16 @@ NOTE: These are all the same length. If you do a search/replace
#define __ALPHA_ALT_THUMB_R2__ __ALPHA_THUMB_R2__
#define __ALPHA_ALT_THUMB_R3__ __ALPHA_THUMB_R3__
#define __ALPHA_ALT_THUMBS_LEFT_2__ __ALPHA_ALT_THUMB_L2__, __ALPHA_ALT_THUMB_L3__
#define __ALPHA_ALT_THUMBS_RIGHT_2__ __ALPHA_ALT_THUMB_R1__, __ALPHA_ALT_THUMB_R2__
#define __ALPHA_ALT_THUMBS_LEFT_2_TUCKY__ __ALPHA_ALT_THUMB_L1__, __ALPHA_ALT_THUMB_L2__
#define __ALPHA_ALT_THUMBS_RIGHT_2_TUCKY__ __ALPHA_ALT_THUMB_R2__, __ALPHA_ALT_THUMB_R3__
#define __ALPHA_ALT_THUMBS_LEFT_2_REACHY__ __ALPHA_ALT_THUMB_L2__, __ALPHA_ALT_THUMB_L3__
#define __ALPHA_ALT_THUMBS_RIGHT_2_REACHY__ __ALPHA_ALT_THUMB_R1__, __ALPHA_ALT_THUMB_R2__
#define __ALPHA_ALT_THUMBS_LEFT_3__ __ALPHA_ALT_THUMB_L1__, __ALPHA_ALT_THUMB_L2__, __ALPHA_ALT_THUMB_L3__
#define __ALPHA_ALT_THUMBS_RIGHT_3__ __ALPHA_ALT_THUMB_R1__, __ALPHA_ALT_THUMB_R2__, __ALPHA_ALT_THUMB_R3__
#define __ALPHA_ALT_THUMBS_4__ __ALPHA_ALT_THUMBS_LEFT_2__, __ALPHA_ALT_THUMBS_RIGHT_2__
#define __ALPHA_ALT_THUMBS_4__ __ALPHA_ALT_THUMBS_LEFT_2_REACHY__, __ALPHA_ALT_THUMBS_RIGHT_2_REACHY__
#define __ALPHA_ALT_THUMBS_5__ __ALPHA_ALT_THUMB_L1__, __ALPHA_ALT_THUMB_L2__, __ALPHA_ALT_THUMB_R1__, __ALPHA_ALT_THUMB_R2__, __ALPHA_ALT_THUMB_R3__
#define __ALPHA_ALT_THUMBS_6__ __ALPHA_ALT_THUMBS_LEFT_3__, __ALPHA_ALT_THUMBS_RIGHT_3__
@ -277,19 +288,43 @@ NOTE: These are all the same length. If you do a search/replace
#define __ALPHA_ALT_L1_K4__ KC_P
#define __ALPHA_ALT_L1_K5__ KC_B
#define __ALPHA_ALT_L2_K1__ KC_A
#define __ALPHA_ALT_L2_K2__ KC_R
#define __ALPHA_ALT_L2_K3__ KC_S
#define __ALPHA_ALT_L2_K4__ KC_T
#define __ALPHA_ALT_L2_K5__ KC_G
#define __ALPHA_ALT_L3_K1__ KC_Z
#define __ALPHA_ALT_L3_K2__ KC_X
#define __ALPHA_ALT_L3_K3__ KC_C
#define __ALPHA_ALT_L3_K4__ KC_D
#define __ALPHA_ALT_L3_K5__ KC_V
#define __ALPHA_ALT_R1_K1__ KC_J
#define __ALPHA_ALT_R1_K2__ KC_L
#define __ALPHA_ALT_R1_K3__ KC_U
#define __ALPHA_ALT_R1_K4__ KC_Y
#define __ALPHA_ALT_R1_K5__ KC_SCLN
#define __ALPHA_ALT_R2_K1__ KC_M
#define __ALPHA_ALT_R2_K2__ KC_N
#define __ALPHA_ALT_R2_K3__ KC_E
#define __ALPHA_ALT_R2_K4__ KC_I
#define __ALPHA_ALT_R2_K5__ KC_H
#define __ALPHA_ALT_R3_K1__ KC_K
#define __ALPHA_ALT_R3_K2__ KC_NO
#define __ALPHA_ALT_R3_K3__ KC_COMM
#define __ALPHA_ALT_R3_K4__ KC_DOT
#define __ALPHA_ALT_R3_K5__ KC_SLASH
#define _________________ALPHA_ALT_L1_________________ __ALPHA_ALT_L1_K1__, __ALPHA_ALT_L1_K2__, __ALPHA_ALT_L1_K3__, __ALPHA_ALT_L1_K4__, __ALPHA_ALT_L1_K5__
#define _________________ALPHA_ALT_L2_________________ KC_A, KC_R, KC_S, KC_T, KC_G
#define _________________ALPHA_ALT_L3_________________ KC_Z, KC_X, KC_C, KC_D, KC_V
#define _________________ALPHA_ALT_L2_________________ __ALPHA_ALT_L2_K1__, __ALPHA_ALT_L2_K2__, __ALPHA_ALT_L2_K3__, __ALPHA_ALT_L2_K4__, __ALPHA_ALT_L2_K5__
#define _________________ALPHA_ALT_L3_________________ __ALPHA_ALT_L3_K1__, __ALPHA_ALT_L3_K2__, __ALPHA_ALT_L3_K3__, __ALPHA_ALT_L3_K4__, __ALPHA_ALT_L3_K5__
#define _________________ALPHA_ALT_R1_________________ __ALPHA_ALT_R1_K1__, __ALPHA_ALT_R1_K2__, __ALPHA_ALT_R1_K3__, __ALPHA_ALT_R1_K4__, __ALPHA_ALT_R1_K5__
#define _________________ALPHA_ALT_R2_________________ KC_M, KC_N, KC_E, KC_I, KC_H
#define _________________ALPHA_ALT_R3_________________ KC_K, KC_NO, KC_COMM, KC_DOT, KC_SLASH
#define _________________ALPHA_ALT_R2_________________ __ALPHA_ALT_R2_K1__, __ALPHA_ALT_R2_K2__, __ALPHA_ALT_R2_K3__, __ALPHA_ALT_R2_K4__, __ALPHA_ALT_R2_K5__
#define _________________ALPHA_ALT_R3_________________ __ALPHA_ALT_R3_K1__, __ALPHA_ALT_R3_K2__, __ALPHA_ALT_R3_K3__, __ALPHA_ALT_R3_K4__, __ALPHA_ALT_R3_K5__
/* This is the target
#define _________________ALPHA_ALT_L1_________________ KC_ENT, KC_Q, KC_W, KC_P, KC_B
@ -307,20 +342,44 @@ NOTE: These are all the same length. If you do a search/replace
#define __ALPHA_L1_K4__ KC_P
#define __ALPHA_L1_K5__ KC_B
#define __ALPHA_L2_K1__ KC_A
#define __ALPHA_L2_K2__ KC_R
#define __ALPHA_L2_K3__ KC_S
#define __ALPHA_L2_K4__ KC_T
#define __ALPHA_L2_K5__ KC_G
#define __ALPHA_L3_K1__ KC_Z
#define __ALPHA_L3_K2__ KC_X
#define __ALPHA_L3_K3__ KC_C
#define __ALPHA_L3_K4__ KC_D
#define __ALPHA_L3_K5__ KC_V
#define __ALPHA_R1_K1__ KC_J
#define __ALPHA_R1_K2__ KC_L
#define __ALPHA_R1_K3__ KC_U
#define __ALPHA_R1_K4__ KC_Y
#define __ALPHA_R1_K5__ KC_SCLN
// ALPHA
#define __________________ALPHA_L1____________________ KC_Q, KC_W, KC_F, KC_P, KC_B
#define __________________ALPHA_L2____________________ KC_A, KC_R, KC_S, KC_T, KC_G
#define __________________ALPHA_L3____________________ KC_Z, KC_X, KC_C, KC_D, KC_V
#define __ALPHA_R2_K1__ KC_M
#define __ALPHA_R2_K2__ KC_N
#define __ALPHA_R2_K3__ KC_E
#define __ALPHA_R2_K4__ KC_I
#define __ALPHA_R2_K5__ KC_O
#define __________________ALPHA_R1____________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
#define __________________ALPHA_R2____________________ KC_M, KC_N, KC_E, KC_I, KC_O
#define __________________ALPHA_R3____________________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH
#define __ALPHA_R3_K1__ KC_K
#define __ALPHA_R3_K2__ KC_H
#define __ALPHA_R3_K3__ KC_COMM
#define __ALPHA_R3_K4__ KC_DOT
#define __ALPHA_R3_K5__ KC_SLASH
// ALPHA
#define __________________ALPHA_L1____________________ __ALPHA_L1_K1__, __ALPHA_L1_K2__, __ALPHA_L1_K3__, __ALPHA_L1_K4__, __ALPHA_L1_K5__
#define __________________ALPHA_L2____________________ __ALPHA_L2_K1__, __ALPHA_L2_K2__, __ALPHA_L2_K3__, __ALPHA_L2_K4__, __ALPHA_L2_K5__
#define __________________ALPHA_L3____________________ __ALPHA_L3_K1__, __ALPHA_L3_K2__, __ALPHA_L3_K3__, __ALPHA_L3_K4__, __ALPHA_L3_K5__
#define __________________ALPHA_R1____________________ __ALPHA_R1_K1__, __ALPHA_R1_K2__, __ALPHA_R1_K3__, __ALPHA_R1_K4__, __ALPHA_R1_K5__
#define __________________ALPHA_R2____________________ __ALPHA_R2_K1__, __ALPHA_R2_K2__, __ALPHA_R2_K3__, __ALPHA_R2_K4__, __ALPHA_R2_K5__
#define __________________ALPHA_R3____________________ __ALPHA_R3_K1__, __ALPHA_R3_K2__, __ALPHA_R3_K3__, __ALPHA_R3_K4__, __ALPHA_R3_K5__
// BLANK FULL LINE
#define ___________________BLANK___________________ _______, _______, _______, _______, _______
@ -445,27 +504,27 @@ NOTE: These are all the same length. If you do a search/replace
#define ________________SHIFTNAV_2_________________ __SHIFTNAV_2_K1__, __SHIFTNAV_2_K2__, __SHIFTNAV_2_K3__, __SHIFTNAV_2_K4__, __SHIFTNAV_2_K5__
#define ________________SHIFTNAV_3_________________ __SHIFTNAV_3_K1__, __SHIFTNAV_3_K2__, __SHIFTNAV_3_K3__, __SHIFTNAV_3_K4__, __SHIFTNAV_3_K5__
#define __FUNCION_1_K1__ KC_MPLY
#define __FUNCION_1_K2__ KC_F7
#define __FUNCION_1_K3__ KC_F8
#define __FUNCION_1_K4__ KC_F9
#define __FUNCION_1_K5__ KC_F10
#define __FUNCTION_1_K1__ KC_MPLY
#define __FUNCTION_1_K2__ KC_F7
#define __FUNCTION_1_K3__ KC_F8
#define __FUNCTION_1_K4__ KC_F9
#define __FUNCTION_1_K5__ KC_F10
#define __FUNCION_2_K1__ KC_VOLU
#define __FUNCION_2_K2__ KC_F4
#define __FUNCION_2_K3__ KC_F5
#define __FUNCION_2_K4__ KC_F6
#define __FUNCION_2_K5__ KC_F11
#define __FUNCTION_2_K1__ KC_VOLU
#define __FUNCTION_2_K2__ KC_F4
#define __FUNCTION_2_K3__ KC_F5
#define __FUNCTION_2_K4__ KC_F6
#define __FUNCTION_2_K5__ KC_F11
#define __FUNCION_3_K1__ KC_VOLD
#define __FUNCION_3_K2__ KC_F1
#define __FUNCION_3_K3__ KC_F2
#define __FUNCION_3_K4__ KC_F3
#define __FUNCION_3_K5__ KC_F12
#define __FUNCTION_3_K1__ KC_VOLD
#define __FUNCTION_3_K2__ KC_F1
#define __FUNCTION_3_K3__ KC_F2
#define __FUNCTION_3_K4__ KC_F3
#define __FUNCTION_3_K5__ KC_F12
#define ________________FUNCTION_1_________________ __FUNCION_1_K1__, __FUNCION_1_K2__, __FUNCION_1_K3__, __FUNCION_1_K4__, __FUNCION_1_K5__
#define ________________FUNCTION_2_________________ __FUNCION_2_K1__, __FUNCION_2_K2__, __FUNCION_2_K3__, __FUNCION_2_K4__, __FUNCION_2_K5__
#define ________________FUNCTION_3_________________ __FUNCION_3_K1__, __FUNCION_3_K2__, __FUNCION_3_K3__, __FUNCION_3_K4__, __FUNCION_3_K5__
#define ________________FUNCTION_1_________________ __FUNCTION_1_K1__, __FUNCTION_1_K2__, __FUNCTION_1_K3__, __FUNCTION_1_K4__, __FUNCTION_1_K5__
#define ________________FUNCTION_2_________________ __FUNCTION_2_K1__, __FUNCTION_2_K2__, __FUNCTION_2_K3__, __FUNCTION_2_K4__, __FUNCTION_2_K5__
#define ________________FUNCTION_3_________________ __FUNCTION_3_K1__, __FUNCTION_3_K2__, __FUNCTION_3_K3__, __FUNCTION_3_K4__, __FUNCTION_3_K5__
// MEDIA LAYER