Merge branch 'vial' into vial

This commit is contained in:
A.L.Ko 2025-10-07 13:37:52 +05:00 committed by GitHub
commit 9047e92a23
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
138 changed files with 8072 additions and 12 deletions

View file

@ -407,6 +407,9 @@
"lfkeyboards/smk65": {
"target": "lfkeyboards/smk65/revb"
},
"ll3macorn/bongopad": {
"target": "ll3ma/bongopad"
},
"m3v3van": {
"target": "matthewdias/m3n3van"
},

View file

@ -0,0 +1,37 @@
/* Copyright 2019-2020 DMQ Design
*
* 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
#define VIAL_KEYBOARD_UID {0xB5, 0xA8, 0x3A, 0x61, 0x86, 0x45, 0x95, 0xDF}
#define DYNAMIC_KEYMAP_LAYER_COUNT 3
#undef RGBLIGHT_ANIMATIONS
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_CHRISTMAS
#define RGBLIGHT_EFFECT_KNIGHT
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_SNAKE
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
#define RGBLIGHT_EFFECT_TWINKLE
#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
#define VIAL_UNLOCK_COMBO_COLS { 2, 3 }

View file

@ -0,0 +1,39 @@
/* Copyright 2019-2020 DMQ Design
*
* 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(
KC_7, KC_8, KC_9, KC_MUTE,
KC_4, KC_5, KC_6, KC_MUTE,
KC_1, KC_2, KC_3, KC_MUTE,
KC_0, UG_TOGG, KC_ENTER
),
[1] = LAYOUT(
KC_7, KC_8, KC_9, KC_MUTE,
KC_4, KC_5, KC_6, KC_MUTE,
KC_1, KC_2, KC_3, KC_MUTE,
KC_0, UG_TOGG, KC_ENTER
),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
// Encoder 1 Encoder 2 Encoder 3
};
#endif

View file

@ -0,0 +1,11 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
LTO_ENABLE = yes
QMK_SETTINGS = no
COMBO_ENABLE = no
KEY_OVERRIDE_ENABLE = no
TAP_DANCE_ENABLE = no
ENCODER_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View file

@ -0,0 +1,58 @@
{
"name": "SPIN Macropad",
"vendorId": "0xA455",
"productId": "0x0001",
"matrix": {
"rows": 3,
"cols": 5
},
"lighting": "qmk_rgblight",
"layouts": {
"keymap": [
[
"0,0",
"1,0",
"2,0",
{
"x": 0.25
},
"2,4",
"0,0\n\n\n\n\n\n\n\n\ne",
"0,1\n\n\n\n\n\n\n\n\ne"
],
[
"0,1",
"1,1",
"2,1"
],
[
{
"y": -0.5,
"x": 3.25
},
"1,4",
"1,0\n\n\n\n\n\n\n\n\ne",
"1,1\n\n\n\n\n\n\n\n\ne"
],
[
{
"y": -0.5
},
"0,2",
"1,2",
"2,2"
],
[
"0,3",
"1,3",
"2,3",
{
"x": 0.25
},
"0,4",
"2,0\n\n\n\n\n\n\n\n\ne",
"2,1\n\n\n\n\n\n\n\n\ne"
]
]
}
}

View file

@ -0,0 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define VIAL_KEYBOARD_UID {0xF5, 0x92, 0xBC, 0x63, 0x72, 0x84, 0xCA, 0x4E}
#define VIAL_UNLOCK_COMBO_ROWS {0, 0}
#define VIAL_UNLOCK_COMBO_COLS {0, 2}

View file

@ -0,0 +1,44 @@
// Copyright 2025 DOIO
// Copyright 2025 ClownFish (@clownfish-og)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum my_layers {
_BASE,
_MOUSE,
_MEDIA,
_LIGHTS
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
TO(_MOUSE),
KC_ENT, C(KC_C), C(KC_V),
C(KC_Z)
),
[_MOUSE] = LAYOUT(
TO(_MEDIA),
MS_BTN1, MS_BTN3, MS_BTN2,
KC_LCTL
),
[_MEDIA] = LAYOUT(
TO(_LIGHTS),
KC_MRWD, KC_MPLY, KC_MFFD,
KC_MUTE
),
[_LIGHTS] = LAYOUT(
TO(_BASE),
RM_VALD, RM_NEXT, RM_VALU,
RM_TOGG
)
};
#ifdef ENCODER_MAP_ENABLE
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[_BASE] = { ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(MS_WHLL, MS_WHLR) },
[_MOUSE] = { ENCODER_CCW_CW(MS_LEFT, MS_RGHT), ENCODER_CCW_CW(MS_UP, MS_DOWN) },
[_MEDIA] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) },
[_LIGHTS] = { ENCODER_CCW_CW(RM_SATD, RM_SATU), ENCODER_CCW_CW(RM_HUED, RM_HUEU) }
};
#endif

View file

@ -0,0 +1,4 @@
ENCODER_MAP_ENABLE = yes
VIA_ENABLE = yes
VIAL_ENABLE = yes
VIALRGB_ENABLE = yes

View file

@ -0,0 +1,49 @@
{
"lighting": "vialrgb",
"matrix": {"rows": 1, "cols": 5},
"layouts": {
"keymap": [
[
{
"x": 0.5,
"y": 0.25,
"h": 0.5
},
"0,3"
],
[
"0,0",
"0,1",
"0,2"
],
[
{
"y": 0.25,
"x": 0.5
},
"0,0\n\n\n\n\n\n\n\n\ne",
"0,1\n\n\n\n\n\n\n\n\ne"
],
[
{
"x": 1
},
"0,4"
],
[
{
"x": 0.25,
"y": 0.25,
"w": 1.25,
"h": 1.25
},
"1,0\n\n\n\n\n\n\n\n\ne",
{
"w": 1.25,
"h": 1.25
},
"1,1\n\n\n\n\n\n\n\n\ne"
]
]
}
}

View file

@ -0,0 +1,8 @@
// Copyright 2025 Hyojin Bak (@eerraa)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U

View file

@ -0,0 +1,114 @@
{
"manufacturer": "eerraa",
"keyboard_name": "Riley",
"maintainer": "eerraa",
"bootloader": "rp2040",
"build": {
"debounce_type": "sym_defer_pk"
},
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgb_matrix": true
},
"indicators": {
"caps_lock": "GP25"
},
"matrix_pins": {
"cols": ["GP29", "GP20", "GP19", "GP18", "GP15", "GP14", "GP13", "GP12", "GP11", "GP24", "GP23", "GP22", "GP9", "GP10"],
"rows": ["GP5", "GP8", "GP28", "GP26", "GP27"]
},
"processor": "RP2040",
"rgb_matrix": {
"driver": "ws2812",
"layout": [
{"x": 208, "y": 64, "flags": 8},
{"x": 216, "y": 64, "flags": 8},
{"x": 224, "y": 64, "flags": 8}
],
"sleep": true
},
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0x0024",
"vid": "0x4552"
},
"ws2812": {
"driver": "vendor",
"pin": "GP4"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 14, "y": 0},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 12], "x": 12.75, "y": 2},
{"matrix": [2, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"matrix": [3, 1], "x": 1.25, "y": 3},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 13.75, "y": 2, "w": 1.25},
{"matrix": [4, 1], "x": 1.5, "y": 4},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"matrix": [4, 4], "x": 4, "y": 4, "w": 3},
{"matrix": [4, 6], "x": 7, "y": 4},
{"matrix": [4, 8], "x": 8, "y": 4, "w": 3},
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"matrix": [4, 12], "x": 12.5, "y": 4},
{"matrix": [4, 13], "x": 14.25, "y": 3}
]
}
}
}

View file

@ -0,0 +1,22 @@
// Copyright 2025 Hyojin Bak (@eerraa)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
QK_GESC, 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_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,
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, KC_BSLS,
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, KC_ENT,
KC_LCTL, KC_LALT, KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_RCTL, MO(1)
),
[1] = LAYOUT(
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,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS , KC_HOME, KC_PGUP, KC_PSCR, KC_SCRL, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL , KC_END , KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, 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,7 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define VIAL_KEYBOARD_UID {0x08, 0x57, 0xF6, 0x88, 0xF6, 0x14, 0xCD, 0x5F}
#define VIAL_UNLOCK_COMBO_ROWS { 0, 3 }
#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }

View file

@ -0,0 +1,22 @@
// Copyright 2025 Hyojin Bak (@eerraa)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
QK_GESC, 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_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,
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, KC_BSLS,
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, KC_ENT,
KC_LCTL, KC_LALT, KC_SPC , KC_SPC , KC_SPC , KC_RALT, KC_RCTL, MO(1)
),
[1] = LAYOUT(
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,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS , KC_HOME, KC_PGUP, KC_PSCR, KC_SCRL, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL , KC_END , KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, 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,2 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes

View file

@ -0,0 +1,222 @@
{
"name": "RILEY",
"vendorId": "0x4552",
"productId": "0x0024",
"lighting": "none",
"matrix": {
"rows": 5,
"cols": 14
},
"layouts": {
"labels": [
[
"Backspace",
"Unified",
"Split"
],
[
"Enter",
"ANSI",
"ISO"
],
[
"Left Shift",
"ANSI",
"ISO"
],
[
"Right Shift",
"Unified",
"Split"
],
[
"Bottom Row",
"7U",
"Split"
]
],
"keymap": [
[
{
"x": 2.75,
"c": "#777777"
},
"0,0",
{
"c": "#cccccc"
},
"0,1",
"0,2",
"0,3",
"0,4",
"0,5",
"0,6",
"0,7",
"0,8",
"0,9",
"0,10",
"0,11",
"0,12",
{
"c": "#aaaaaa",
"w": 2
},
"1,13\n\n\n0,0",
{
"x": 1.25,
"c": "#cccccc"
},
"0,13\n\n\n0,1",
"1,13\n\n\n0,1"
],
[
{
"x": 2.75,
"c": "#aaaaaa",
"w": 1.5
},
"1,0",
{
"c": "#cccccc"
},
"1,1",
"1,2",
"1,3",
"1,4",
"1,5",
"1,6",
"1,7",
"1,8",
"1,9",
"1,10",
"1,11",
"1,12",
{
"w": 1.5
},
"2,13\n\n\n1,0",
{
"x": 2,
"c": "#777777",
"w": 1.25,
"h": 2,
"w2": 1.5,
"h2": 1,
"x2": -0.25
},
"3,13\n\n\n1,1"
],
[
{
"x": 2.75,
"c": "#aaaaaa",
"w": 1.75
},
"2,0",
{
"c": "#cccccc"
},
"2,1",
"2,2",
"2,3",
"2,4",
"2,5",
"2,6",
"2,7",
"2,8",
"2,9",
"2,10",
"2,11",
{
"c": "#777777",
"w": 2.25
},
"3,13\n\n\n1,0",
{
"x": 1,
"c": "#cccccc"
},
"2,12\n\n\n1,1"
],
[
{
"c": "#aaaaaa",
"w": 1.25
},
"3,0\n\n\n2,1",
{
"c": "#cccccc"
},
"3,1\n\n\n2,1",
{
"x": 0.5,
"c": "#aaaaaa",
"w": 2.25
},
"3,0\n\n\n2,0",
{
"c": "#cccccc"
},
"3,2",
"3,3",
"3,4",
"3,5",
"3,6",
"3,7",
"3,8",
"3,9",
"3,10",
"3,11",
{
"c": "#aaaaaa",
"w": 2.75
},
"3,12\n\n\n3,0",
{
"x": 0.5,
"w": 1.75
},
"3,12\n\n\n3,1",
{
"c": "#cccccc"
},
"4,13\n\n\n3,1"
],
[
{
"x": 4.25,
"c": "#aaaaaa"
},
"4,1",
{
"w": 1.5
},
"4,2",
{
"c": "#cccccc",
"w": 7
},
"4,6\n\n\n4,0",
{
"c": "#aaaaaa",
"w": 1.5
},
"4,11",
"4,12"
],
[
{
"x": 6.75,
"c": "#cccccc",
"w": 3
},
"4,4\n\n\n4,1",
"4,6\n\n\n4,1",
{
"w": 3
},
"4,8\n\n\n4,1"
]
]
}
}

View file

@ -0,0 +1,23 @@
# Riley
* Keyboard Maintainer: [ERA](https://github.com/eerraa)
* Hardware supported: Gok x Lily
* Hardware availability: The Group Buy for this hardware has concluded. The hardware may be available on aftermarket channels.
Make example for this keyboard (after setting up your build environment):
make era/comm/riley:default
Flashing example for this keyboard:
make era/comm/riley:default:flash
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).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at ESC(0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly short the `RESET` and `GND` pads on the SWD header twice, or short the `BOOT` header and plug in keyboard
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View file

@ -0,0 +1,53 @@
##################################################
# 펌웨어 업데이트 방법 (Firmware Update Guide)
##################################################
[한글 설명]
■ 펌웨어 업데이트 절차
1. 아래 3가지 방법 중 하나를 선택하여 키보드를 '부트로더(Bootloader)' 모드로 진입시킵니다.
2. 부트로더 모드에 정상적으로 진입하면, 컴퓨터에 'RPI-RP2'와 같은 이름의 새로운 이동식 디스크가 나타납니다.
3. 이 디스크에 준비된 펌웨어(.uf2) 파일을 복사하여 붙여넣으면 잠시 후 자동으로 업데이트가 완료됩니다.
■ 부트로더 모드 진입 방법 (3가지)
1. 부트매직(Bootmagic) 사용
- 키보드의 좌측 상단 키(일반적으로 Esc 키)를 누른 상태로 USB 케이블을 연결합니다.
2. 물리적 리셋(Physical Reset) 사용
- 기판(PCB)의 리셋 버튼을 빠르게 두 번 누릅니다. (버튼이 있는 경우)
- 또는, 기판의 'RST' 핀과 'GND' 핀을 핀셋 등으로 짧게 두 번 접촉(쇼트)시킵니다.
- 또는, 'BOOT' 헤더 핀 두 개를 쇼트시킨 상태로 USB 케이블을 연결합니다.
3. 리셋 키코드(Reset Keycode) 사용
- 키맵에 'QK_BOOT' 또는 'RESET'으로 미리 설정해 둔 키를 누릅니다.
- (이 방법은 키맵에 해당 기능 키를 미리 할당한 경우에만 사용할 수 있습니다.)
======================================================================
[English Description]
■ How to Flash Firmware
1. Enter the keyboard's "Bootloader" mode using one of the three methods described below.
2. Once the keyboard is in bootloader mode, a new removable disk (e.g., "RPI-RP2") will appear on your computer.
3. Copy-paste or drag-and-drop your prepared firmware file (e.g., firmware.uf2) onto this disk. The update will complete automatically.
■ Three Ways to Enter Bootloader Mode
1. Using Bootmagic
- Hold down the top-left key of the keyboard (usually the Esc key) while plugging in the USB cable.
2. Using Physical Reset
- Quickly double-press the reset button on the PCB, if one exists.
- Alternatively, use tweezers to briefly short the 'RST' and 'GND' pins on the PCB twice.
- Alternatively, short the two 'BOOT' header pins while plugging in the USB cable.
3. Using a Reset Keycode
- Press the key that you have assigned to 'QK_BOOT' or 'RESET' in your keymap.
- (This method only works if you have already configured such a key in your layout.)

View file

@ -0,0 +1,39 @@
// Copyright 2025 Hyojin Bak (@eerraa)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "quantum.h"
#include "rgb_matrix.h"
#include "riley.h"
bool rgb_matrix_indicators_kb(void) {
if (!rgb_matrix_indicators_user()) {
return false;
}
led_t led_state = host_keyboard_led_state();
if (led_state.caps_lock) {
RGB rgb = hsv_to_rgb((HSV){0, 255, 255}); // Red
rgb_matrix_set_color(0, rgb.r, rgb.g, rgb.b);
}
if (led_state.scroll_lock) {
RGB rgb = hsv_to_rgb((HSV){170, 255, 255}); // Blue
rgb_matrix_set_color(1, rgb.r, rgb.g, rgb.b);
}
if (led_state.num_lock) {
RGB rgb = hsv_to_rgb((HSV){85, 255, 255}); // Green
rgb_matrix_set_color(2, rgb.r, rgb.g, rgb.b);
}
return true;
}
void keyboard_post_init_kb(void) {
rgb_matrix_enable_noeeprom();
rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
rgb_matrix_sethsv_noeeprom(0, 0, 0);
keyboard_post_init_user();
}

View file

@ -0,0 +1,6 @@
// Copyright 2025 Hyojin Bak (@eerraa)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "quantum.h"

View file

@ -0,0 +1,18 @@
// Copyright 2022 GEIST @geigeigeist
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
// Matrix size
#define MATRIX_ROWS 8
#define MATRIX_COLS 5
// Split communication (vendor serial on RP2040, using GP0/GP1)
#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
#define SERIAL_USART_TX_PIN GP0 // USART TX pin
#define SERIAL_USART_RX_PIN GP1 // USART RX pin
#define SERIAL_USART_PIN_SWAP // Swap TX and RX pins if keyboard is master halve.
#define EE_HANDS // Split handedness via eeprom
// RP2040 bootloader double-tap
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U

View file

@ -0,0 +1,72 @@
{
"keyboard_name": "TOTEM",
"manufacturer": "GEIST",
"url": "https://github.com/GEIGEIGEIST/TOTEM",
"maintainer": "qmk",
"usb": {
"vid": "0x3A3C",
"pid": "0x0002",
"device_version": "0.3.0"
},
"processor": "RP2040",
"bootloader": "rp2040",
"matrix_pins": {
"rows": ["GP26", "GP27", "GP28", "GP29"],
"cols": ["GP6", "GP7", "GP3", "GP4", "GP2"]
},
"diode_direction": "COL2ROW",
"debounce": 5,
"features": {
"swap_hands": true
},
"split": {
"enabled": true,
"serial": {
"driver": "vendor"
}
},
"layouts": {
"LAYOUT": {
"layout": [
{ "label": "L00", "matrix": [0, 0], "x": 1, "y": 1.4 },
{ "label": "L01", "matrix": [0, 1], "x": 2, "y": 0.6 },
{ "label": "L02", "matrix": [0, 2], "x": 3, "y": 0 },
{ "label": "L03", "matrix": [0, 3], "x": 4, "y": 0.5 },
{ "label": "L04", "matrix": [0, 4], "x": 5, "y": 0.65 },
{ "label": "R00", "matrix": [4, 4], "x": 9, "y": 0.65 },
{ "label": "R01", "matrix": [4, 3], "x": 10, "y": 0.5 },
{ "label": "R02", "matrix": [4, 2], "x": 11, "y": 0 },
{ "label": "R03", "matrix": [4, 1], "x": 12, "y": 0.6 },
{ "label": "R04", "matrix": [4, 0], "x": 13, "y": 1.4 },
{ "label": "L10", "matrix": [1, 0], "x": 1, "y": 2.4 },
{ "label": "L11", "matrix": [1, 1], "x": 2, "y": 1.6 },
{ "label": "L12", "matrix": [1, 2], "x": 3, "y": 1 },
{ "label": "L13", "matrix": [1, 3], "x": 4, "y": 1.5 },
{ "label": "L14", "matrix": [1, 4], "x": 5, "y": 1.65 },
{ "label": "R10", "matrix": [5, 4], "x": 9, "y": 1.65 },
{ "label": "R11", "matrix": [5, 3], "x": 10, "y": 1.5 },
{ "label": "R12", "matrix": [5, 2], "x": 11, "y": 1 },
{ "label": "R13", "matrix": [5, 1], "x": 12, "y": 1.6 },
{ "label": "R14", "matrix": [5, 0], "x": 13, "y": 2.4 },
{ "label": "L30", "matrix": [3, 0], "x": 0, "y": 2.9 },
{ "label": "L20", "matrix": [2, 0], "x": 1, "y": 3.4 },
{ "label": "L21", "matrix": [2, 1], "x": 2, "y": 2.6 },
{ "label": "L22", "matrix": [2, 2], "x": 3, "y": 2 },
{ "label": "L23", "matrix": [2, 3], "x": 4, "y": 2.5 },
{ "label": "L24", "matrix": [2, 4], "x": 5, "y": 2.65 },
{ "label": "R20", "matrix": [6, 4], "x": 9, "y": 2.65 },
{ "label": "R21", "matrix": [6, 3], "x": 10, "y": 2.5 },
{ "label": "R22", "matrix": [6, 2], "x": 11, "y": 2 },
{ "label": "R23", "matrix": [6, 1], "x": 12, "y": 2.6 },
{ "label": "R24", "matrix": [6, 0], "x": 13, "y": 3.4 },
{ "label": "R34", "matrix": [7, 0], "x": 14, "y": 2.9 },
{ "label": "L32", "matrix": [3, 2], "x": 3.6, "y": 3.5 },
{ "label": "L33", "matrix": [3, 3], "x": 4.8, "y": 3.65 },
{ "label": "L34", "matrix": [3, 4], "x": 6, "y": 3.85 },
{ "label": "R30", "matrix": [7, 4], "x": 8, "y": 3.85 },
{ "label": "R31", "matrix": [7, 3], "x": 9.2, "y": 3.65 },
{ "label": "R32", "matrix": [7, 2], "x": 10.4, "y": 3.5 }
]
}
}
}

View file

@ -0,0 +1,248 @@
/*
D E F A U L T
*/
#include QMK_KEYBOARD_H
// ┌─────────────────────────────────────────────────┐
// │ d e f i n e l a y e r s │
// └─────────────────────────────────────────────────┘
enum totem_layers {
_QWERTY,
_COLEMAK,
_LOWER,
_RAISE,
_ADJUST,
};
// ┌─────────────────────────────────────────────────┐
/* │ d e f i n e k e y c o d e s │
// └─────────────────────────────────────────────────┘ */
enum custom_keycodes {
COLEMAK = SAFE_RANGE,
QWERTY,
LOWER,
RAISE,
ADJUST,
MAKE_H,
SNAP
};
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
// │ K E Y M A P S │
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
q w e r t y
Q W E R T Y U I O P
A S D F G H J K L ;
Q Z X C V B N M , . / P
CTRL LOWER SPACE ENTER RAISE BSPC
*/
[_QWERTY] = LAYOUT(
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
MT(MOD_LGUI, KC_A), MT(MOD_LALT, KC_S), MT(MOD_LCTL, KC_D), MT(MOD_LSFT, KC_F), KC_G, KC_H, MT(MOD_RSFT, KC_J), MT(MOD_LCTL, KC_K), MT(MOD_LALT, KC_L), MT(MOD_LGUI, KC_SCLN),
KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_P,
KC_DEL, LT(2, KC_TAB), KC_SPC, KC_ENT, LT(3, KC_ESC), KC_BSPC
),
/*
c o l e m a k
Q W F P G J L U Y ;
A R S T D H N E I O
Q Z X C V B K M , . / ;
DEL LOWER SPACE ENTER RAISE BSPC
*/
[_COLEMAK] = LAYOUT(
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
MT(MOD_LGUI, KC_A), MT(MOD_LALT, KC_R), MT(MOD_LCTL, KC_S), MT(MOD_LSFT, KC_T), KC_D, KC_H, MT(MOD_RSFT, KC_N), MT(MOD_LCTL, KC_E), MT(MOD_LALT, KC_I), MT(MOD_LGUI, KC_O),
KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN,
KC_DEL, LT(2, KC_TAB), KC_SPC, KC_ENT, LT(3, KC_ESC), KC_BSPC
),
/*
l o w e r
CAPSLCK NUMLCK = { } 7 8 9 +
HOME [ ] 4 5 6 -
SCRNSHT END PG SAVE PG ( ) 1 2 3 *
ADJUST 0
*/
[_LOWER] = LAYOUT(
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_QUOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS,
SNAP, KC_END, KC_PGUP, C(KC_S), KC_PGDN, KC_LPRN, KC_RPRN, KC_P1, KC_P2, KC_P3, KC_PAST, _______,
_______, _______, _______, _______, MO(4), KC_P0
),
/*
r a i s e
! @ # $ % ^ & Ü ° /
Ä è SZ é ¥ £ Ö
` ~ CUE DM REC1 DM STOP DM PLY1
GIPHY ADJUST
*/
[_RAISE] = LAYOUT(
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U), RALT(KC_3), KC_BSLS,
RALT(KC_A), RALT(KC_F), RALT(KC_S), RALT(KC_G), XXXXXXX, XXXXXXX, LSFT(RALT(KC_4)), RALT(KC_5), RALT(KC_4), RALT(KC_O),
XXXXXXX, LSFT(KC_GRV), KC_TILD, RALT(KC_C), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DM_REC1, DM_RSTP, DM_PLY1,
_______, MO(4), _______, _______, _______, _______
),
/*
a d j u s t
RESET F7 F8 F9 F12
DEBUG QWERTY F4 F5 F6 F11
MAKE OS SWAP COLEMAK F1 F2 F3 F10 F13
*/
[_ADJUST] = LAYOUT(
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F12,
DB_TOGG, QWERTY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F11,
MAKE_H, CG_TOGG, COLEMAK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, KC_F13,
_______, _______, _______, _______, _______, _______
)
};
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
// │ M A C R O S │
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case CG_TOGG:
if (record->event.pressed) {
if (!keymap_config.swap_lctl_lgui) {
keymap_config.swap_lctl_lgui = true; // ─── MAC
} else {
keymap_config.swap_lctl_lgui = false; // ─── WIN
}
eeconfig_update_keymap(&keymap_config);
clear_keyboard(); // ──── clear to prevent stuck keys
return false;
}
// ┌─────────────────────────────────────────────────┐
// │ l a y e r │
// └─────────────────────────────────────────────────┘
case COLEMAK:
if (record->event.pressed) {
set_single_persistent_default_layer(_COLEMAK);
}
return false;
case QWERTY:
if (record->event.pressed) {
set_single_persistent_default_layer(_QWERTY);
}
return false;
// ┌─────────────────────────────────────────────────┐
// │ q m k │
// └─────────────────────────────────────────────────┘
case MAKE_H:
if (record->event.pressed) {
SEND_STRING("qmk compile -kb geigeigeist/totem -km default");
tap_code(KC_ENTER);
}
break;
// ┌─────────────────────────────────────────────────┐
// │ p r o d u c t i v i t y │
// └─────────────────────────────────────────────────┘
case SNAP:
if (record->event.pressed) {
if (keymap_config.swap_lctl_lgui) {
SEND_STRING(SS_LSFT(SS_LCMD(SS_LCTL("4")))); // MAC
} else {
SEND_STRING(SS_LSFT(SS_LWIN("S"))); // WIN
}
}
break;
}
return true;
}
/*
*/

View file

@ -0,0 +1,22 @@
// Copyright 2022 GEIST @geigeigeist
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define VIAL_KEYBOARD_UID \
{ 0xCB, 0x37, 0x36, 0xFE, 0xEE, 0xED, 0xEE, 0x77 }
#define VIAL_UNLOCK_COMBO_ROWS \
{ 0, 4 }
#define VIAL_UNLOCK_COMBO_COLS \
{ 0, 0 }
// #define TAPPING_TERM 170
#define TAPPING_TERM 170
// Auto Shift
#define NO_AUTO_SHIFT_ALPHA
#define AUTO_SHIFT_TIMEOUT TAPPING_TERM
#undef LOCKING_SUPPORT_ENABLE
#undef LOCKING_RESYNC_ENABLE
#define DYNAMIC_KEYMAP_LAYER_COUNT 5

View file

@ -0,0 +1,285 @@
/*
D E F A U L T
*/
#include QMK_KEYBOARD_H
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
// │ D E F I N I T I O N S │
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
// ┌─────────────────────────────────────────────────┐
// │ d e f i n e l a y e r s │
// └─────────────────────────────────────────────────┘
enum totem_layers {
_QWERTY,
_COLEMAK,
_LOWER,
_RAISE,
_ADJUST,
};
// ┌─────────────────────────────────────────────────┐
// │ d e f i n e k e y c o d e s │
// └─────────────────────────────────────────────────┘
enum custom_keycodes { COLEMAK = SAFE_RANGE, QWERTY, LOWER, RAISE, ADJUST, OS_SWAP, MAKE_H, SNAP };
// ┌─────────────────────────────────────────────────┐
// │ d e f i n e m a c r o n a m e s │
// └─────────────────────────────────────────────────┘
// LEFT HAND HOME ROW MODS QWERTY ├──────────────────┐
#define GUI_A MT(MOD_LGUI, KC_A)
#define ALT_S MT(MOD_LALT, KC_S)
#define CTL_D MT(MOD_LCTL, KC_D)
#define SHT_F MT(MOD_LSFT, KC_F)
// RIGHT HAND HOME ROW MODS QWERTY ├─────────────────┐
#define SHT_J MT(MOD_RSFT, KC_J)
#define CTL_K MT(MOD_LCTL, KC_K)
#define ALT_L MT(MOD_LALT, KC_L)
#define GUI_S MT(MOD_LGUI, KC_SCLN)
// LEFT HAND HOME ROW MODS COLEMAK ├─────────────────┐
#define GUI_A MT(MOD_LGUI, KC_A)
#define ALT_R MT(MOD_LALT, KC_R)
#define CTL_S MT(MOD_LCTL, KC_S)
#define SHT_T MT(MOD_LSFT, KC_T)
// RIGHT HAND HOME ROW MODS COLEMAK ├────────────────┐
#define SHT_N MT(MOD_RSFT, KC_N)
#define CTL_E MT(MOD_LCTL, KC_E)
#define ALT_I MT(MOD_LALT, KC_I)
#define GUI_O MT(MOD_LGUI, KC_O)
#define LOWER LT(_LOWER, KC_TAB)
#define RAISE LT(_RAISE, KC_ESC)
#define ADJUST MO(_ADJUST)
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
/* │ K E Y M A P S │
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ */
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
q w e r t y
Q W E R T Y U I O P
A S D F G H J K L ;
Q Z X C V B N M , . / P
CTRL LOWER SPACE ENTER RAISE BSPC
*/
[_QWERTY] = LAYOUT(
// ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, GUI_A, ALT_S, CTL_D, SHT_F, KC_G, KC_H, SHT_J, CTL_K, ALT_L, GUI_S, KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_P, KC_DEL, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC),
/*
c o l e m a k
Q W F P G J L U Y ;
A R S T D H N E I O
Q Z X C V B K M , . / ;
DEL LOWER SPACE ENTER RAISE BSPC
*/
[_COLEMAK] = LAYOUT(
// ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN, KC_DEL, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC),
/*
l o w e r
CAPSLCK NUMLCK = { } 7 8 9 +
HOME [ ] 4 5 6 -
SCRNSHT END PG SAVE PG ( ) 1 2 3 *
ADJUST 0
*/
[_LOWER] = LAYOUT(
// ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_QUOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, SNAP, KC_END, KC_PGUP, C(KC_S), KC_PGDN, KC_LPRN, KC_RPRN, KC_P1, KC_P2, KC_P3, KC_PAST, _______, _______, _______, _______, _______, ADJUST, KC_P0),
/*
r a i s e
! @ # $ % ^ & Ü ° /
Ä è SZ é ¥ £ Ö
` ~ CUE DM REC1 DM STOP DM PLY1
GIPHY ADJUST
*/
[_RAISE] = LAYOUT(
// ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U), RALT(KC_3), KC_BSLS, RALT(KC_A), RALT(KC_F), RALT(KC_S), RALT(KC_G), XXXXXXX, XXXXXXX, LSFT(RALT(KC_4)), RALT(KC_5), RALT(KC_4), RALT(KC_O), XXXXXXX, LSFT(KC_GRV), KC_TILD, RALT(KC_C), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DM_REC1, DM_RSTP, DM_PLY1, _______, ADJUST, _______, _______, _______, _______),
/*
a d j u s t
RESET F7 F8 F9 F12
DEBUG QWERTY F4 F5 F6 F11
MAKE OS SWAP COLEMAK F1 F2 F3 F10 F13
*/
[_ADJUST] = LAYOUT(
// ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F12, DB_TOGG, QWERTY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F11, MAKE_H, OS_SWAP, COLEMAK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, KC_F13, _______, _______, _______, _______, _______, _______)
/*
t e m p l a t e
[_TEMPLATE] = LAYOUT(
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
),
*/
};
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
// │ M A C R O S │
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case OS_SWAP:
if (record->event.pressed) {
if (!keymap_config.swap_lctl_lgui) {
keymap_config.swap_lctl_lgui = true; // ─── MAC
} else {
keymap_config.swap_lctl_lgui = false; // ─── WIN
}
eeconfig_update_keymap(&keymap_config);
clear_keyboard(); // ──── clear to prevent stuck keys
return false;
}
// ┌─────────────────────────────────────────────────┐
// │ l a y e r │
// └─────────────────────────────────────────────────┘
case COLEMAK:
if (record->event.pressed) {
set_single_persistent_default_layer(_COLEMAK);
}
return false;
case QWERTY:
if (record->event.pressed) {
set_single_persistent_default_layer(_QWERTY);
}
return false;
// ┌─────────────────────────────────────────────────┐
// │ q m k │
// └─────────────────────────────────────────────────┘
case MAKE_H:
if (record->event.pressed) {
SEND_STRING("qmk compile -kb geigeigeist/totem -km default");
tap_code(KC_ENTER);
}
break;
// ┌─────────────────────────────────────────────────┐
// │ p r o d u c t i v i t y │
// └─────────────────────────────────────────────────┘
case SNAP:
if (record->event.pressed) {
if (keymap_config.swap_lctl_lgui) {
SEND_STRING(SS_LSFT(SS_LCMD(SS_LCTL("4")))); // MAC
} else {
SEND_STRING(SS_LSFT(SS_LWIN("S"))); // WIN
}
}
break;
}
return true;
}
/*
*/

View file

@ -0,0 +1,2 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes

View file

@ -0,0 +1,148 @@
{
"name": "TOTEM",
"lighting": "none",
"vendorId": "0x3A3C",
"productId": "0x0002",
"matrix": {
"rows": 8,
"cols": 5
},
"layouts": {
"keymap": [
[
{ "y": 0.25, "x": 3 },
"4,2",
{ "x": 9 },
"0,2"
],
[
{ "y": -0.5, "x": 4 },
"4,3",
{ "x": 7 },
"0,3"
],
[
{ "y": -0.75, "x": 5 },
"4,4",
{ "x": 5 },
"0,4"
],
[
{ "y": -0.75, "x": 3 },
"5,2",
{ "x": 9 },
"1,2"
],
[
{ "y": -0.5, "x": 4 },
"5,3",
{ "x": 7 },
"1,3"
],
[
{ "y": -0.75, "x": 5 },
"5,4",
{ "x": 5 },
"1,4"
],
[
{ "y": -0.75, "x": 3 },
"6,2",
{ "x": 9 },
"2,2"
],
[
{ "y": -0.5, "x": 4 },
"6,3",
{ "x": 7 },
"2,3"
],
[
{ "y": -0.75, "x": 5 },
"6,4",
{ "x": 5 },
"2,4"
],
[
{ "rx": 4, "ry": 8.6, "y": -4.6, "x": -0.3999999999999999 },
"7,2"
],
[
{ "rx": 13, "y": -4.6, "x": -0.5999999999999996 },
"3,2"
],
[
{ "r": 4, "rx": 14.5, "ry": 3.75, "y": -3, "x": -0.5 },
"0,1"
],
[
{ "x": -0.5 },
"1,1"
],
[
{ "x": -0.5 },
"2,1"
],
[
{ "r": 10, "rx": 15.25, "y": -2.35, "x": -0.25 },
"0,0"
],
[
{ "x": -0.25 },
"1,0"
],
[
{ "y": -0.3999999999999999, "x": 0.75 },
"3,0"
],
[
{ "y": -0.6000000000000001, "x": -0.25 },
"2,0"
],
[
{ "r": 15, "rx": 4, "ry": 8.6, "y": -4.6, "x": -0.3999999999999999 },
"7,3"
],
[
{ "r": 30, "y": -1, "x": -0.3999999999999999 },
"7,4"
],
[
{ "r": -30, "rx": 13, "y": -4.6, "x": -0.5999999999999996 },
"3,4"
],
[
{ "r": -15, "y": -1, "x": -0.5999999999999996 },
"3,3"
],
[
{ "r": -10, "rx": 2, "ry": 3.75, "y": -2.35, "x": -1 },
"4,0"
],
[
{ "x": -1 },
"5,0"
],
[
{ "y": -0.3999999999999999, "x": -2 },
"7,0"
],
[
{ "y": -0.6000000000000001, "x": -1 },
"6,0"
],
[
{ "r": -4, "rx": 2.75, "y": -3, "x": -0.75 },
"4,1"
],
[
{ "x": -0.75 },
"5,1"
],
[
{ "x": -0.75 },
"6,1"
]
]
}
}

View file

@ -0,0 +1,23 @@
# TOTEM
TOTEM is a 38-key column-staggered split keyboard by GEIGEIGEIST designed for Seeed XIAO RP2040 or XIAO nRF52840 BLE. This port targets the wired RP2040 variant.
- Repository: https://github.com/GEIGEIGEIST/TOTEM
- Controller: Seeed Studio XIAO RP2040
- Split transport: vendor serial (RP2040) on GP0/GP1
- Matrix: 8 rows x 5 columns
- Diodes: COL2ROW
Build
- Default keymap:
qmk compile -kb geigeigeist/totem -km default
- Vial keymap:
qmk compile -kb geigeigeist/totem -km vial
Notes
- The JSON-driven keyboard definition is in keyboard.json (QMK data-driven format).
- For Vial, the UID and unlock combo are defined in keymaps/vial/config.h, with VIAL_ENABLE in keymaps/vial/rules.mk.
- If using XIAO RP2040 bootloader, double-tap reset is enabled (500ms timeout).

View file

@ -0,0 +1 @@
# This file intentionally left blank

View file

@ -0,0 +1,40 @@
/* Copyright 2022
* GEIST @geigeigeist
*
* 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 "quantum.h"
#ifdef SWAP_HANDS_ENABLE
__attribute__ ((weak))
const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] =
// The LAYOUT macro could work for this, but it was harder to figure out the
// identity using it.
// This is the mirror, q <-> p, w <-> o, etc...
{
{ {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4} },
{ {4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5} },
{ {4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6} },
{ {4, 7}, {2, 7}, {1, 7}, {0, 7} },
{ {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0} },
{ {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1} },
{ {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2} },
{ {4, 3}, {3, 3}, {2, 3}, {0, 3} },
};
#endif // SWAP_HANDS_ENABLE

View file

@ -0,0 +1,14 @@
// Copyright 2022 Diego Palacios (@diepala)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
#define SERIAL_USART_TX_PIN B6 // USART TX pin
#define SERIAL_USART_RX_PIN B7 // USART RX pin
#define BOOTMAGIC_ROW 3
#define BOOTMAGIC_COLUMN 0
#define BOOTMAGIC_ROW_RIGHT 7
#define BOOTMAGIC_COLUMN_RIGHT 2

View file

@ -0,0 +1,8 @@
// Copyright 2022 Diego Palacios (@diepala)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define HAL_USE_SERIAL TRUE
#include_next <halconf.h>

View file

@ -0,0 +1,92 @@
{
"manufacturer": "HLB",
"keyboard_name": "CantorMX F411",
"maintainer": "H3lli0n",
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"processor": "STM32F411",
"bootloader": "stm32-dfu",
"url": "https://github.com/H3lli0n/CantorMx-3DP-case",
"usb": {
"device_version": "1.0.0",
"pid": "0x0000",
"vid": "0xFEED"
},
"matrix_pins": {
"direct": [
["B1", "B10", "A8", "B15", "B14", "B13"],
["B9", "B8", "B5", "B4", "B3", "A15"],
["A3", "A4", "A5", "A6", "A7", "B0"],
["A2", "A1", "A0", null, null, null]
]
},
"split": {
"enabled": true,
"matrix_pins": {
"right": {
"direct": [
["B13", "B14", "B15", "A8", "B10", "B1"],
["A15", "B3", "B4", "B5", "B8", "B9"],
["B0", "A7", "A6", "A5", "A4", "A3"],
["A0", "A1", "A2", null, null, null]
]
}
},
"serial": {
"driver": "usart"
}
},
"community_layouts": ["split_3x6_3"],
"layouts": {
"LAYOUT_split_3x6_3": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0.25},
{"matrix": [0, 1], "x": 1, "y": 0.25},
{"matrix": [0, 2], "x": 2, "y": 0.125},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0.125},
{"matrix": [0, 5], "x": 5, "y": 0.25},
{"matrix": [4, 0], "x": 8, "y": 0.25},
{"matrix": [4, 1], "x": 9, "y": 0.125},
{"matrix": [4, 2], "x": 10, "y": 0},
{"matrix": [4, 3], "x": 11, "y": 0.125},
{"matrix": [4, 4], "x": 12, "y": 0.25},
{"matrix": [4, 5], "x": 13, "y": 0.25},
{"matrix": [1, 0], "x": 0, "y": 1.25},
{"matrix": [1, 1], "x": 1, "y": 1.25},
{"matrix": [1, 2], "x": 2, "y": 1.125},
{"matrix": [1, 3], "x": 3, "y": 1},
{"matrix": [1, 4], "x": 4, "y": 1.125},
{"matrix": [1, 5], "x": 5, "y": 1.25},
{"matrix": [5, 0], "x": 8, "y": 1.25},
{"matrix": [5, 1], "x": 9, "y": 1.125},
{"matrix": [5, 2], "x": 10, "y": 1},
{"matrix": [5, 3], "x": 11, "y": 1.125},
{"matrix": [5, 4], "x": 12, "y": 1.25},
{"matrix": [5, 5], "x": 13, "y": 1.25},
{"matrix": [2, 0], "x": 0, "y": 2.25},
{"matrix": [2, 1], "x": 1, "y": 2.25},
{"matrix": [2, 2], "x": 2, "y": 2.125},
{"matrix": [2, 3], "x": 3, "y": 2},
{"matrix": [2, 4], "x": 4, "y": 2.125},
{"matrix": [2, 5], "x": 5, "y": 2.25},
{"matrix": [6, 0], "x": 8, "y": 2.25},
{"matrix": [6, 1], "x": 9, "y": 2.125},
{"matrix": [6, 2], "x": 10, "y": 2},
{"matrix": [6, 3], "x": 11, "y": 2.125},
{"matrix": [6, 4], "x": 12, "y": 2.25},
{"matrix": [6, 5], "x": 13, "y": 2.25},
{"matrix": [3, 0], "x": 3.5, "y": 3.25},
{"matrix": [3, 1], "x": 4.5, "y": 3.5},
{"matrix": [3, 2], "x": 5.5, "y": 3.75},
{"matrix": [7, 0], "x": 7.5, "y": 3.75},
{"matrix": [7, 1], "x": 8.5, "y": 3.5},
{"matrix": [7, 2], "x": 9.5, "y": 3.25}
]
}
}
}

View file

@ -0,0 +1,28 @@
// Copyright 2022 Diego Palacios (@diepala)
// SPDX-License-Identifier: GPL-2.0
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* Tab Q W E R T Y U I O P Bsp
*
* Ctl A S D F G H J K L ; '
*
* Sft Z X C V B N M , . / Sft
*
*
* GUI Alt
*
* Bsp Ent
*
*/
[0] = LAYOUT_split_3x6_3(
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LGUI, KC_SPC, KC_BSPC, KC_ENT, KC_SPC, KC_RALT
)
};

View file

@ -0,0 +1,16 @@
#pragma once
/* keyboard uid */
#define VIAL_KEYBOARD_UID {0x0C, 0xA9, 0xA3, 0x03, 0xE0, 0x06, 0x52, 0x7E}
#define VIAL_UNLOCK_COMBO_ROWS { 3, 7 }
#define VIAL_UNLOCK_COMBO_COLS { 0, 2 }
/* default layer count */
#define DYNAMIC_KEYMAP_LAYER_COUNT 8
#define VIAL_TAP_DANCE_ENTRIES 20
/* Select hand configuration */
#define EE_HANDS
#define SPLIT_WATCHDOG_ENABLE
#define SPLIT_WATCHDOG_TIMEOUT 20000

View file

@ -0,0 +1,97 @@
// Copyright 2022 Diego Palacios (@diepala)
// SPDX-License-Identifier: GPL-2.0
#include QMK_KEYBOARD_H
enum layers {
_QWERTY = 0,
_DVORAK,
_COLEMAK_DH,
_NAV,
_SYM,
_MODS,
};
// Aliases for readability
#define QWERTY DF(_QWERTY)
#define COLEMAK DF(_COLEMAK_DH)
#define DVORAK DF(_DVORAK)
#define SYM MO(_SYM)
#define NAV MO(_NAV)
#define MODS MO(_MODS)
#define CTL_ESC MT(MOD_LCTL, KC_ESC)
#define CTL_QUOT MT(MOD_RCTL, KC_QUOTE)
#define CTL_MINS MT(MOD_RCTL, KC_MINUS)
#define ALT_ENT MT(MOD_LALT, KC_ENT)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* Base Layer: QWERTY
*
* Tab Q W E R T Y U I O P Bsp
*
* Ctl A S D F G H J K L ; '
*
* Sft Z X C V B N M , . / Sft
*
*
* GUI Alt
*
* Bsp Ent
*
*/
[_QWERTY] = LAYOUT_split_3x6_3(
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, CTL_QUOT,
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_BSPC, ALT_ENT, NAV, SYM, KC_SPC, MODS
),
/*
* Base Layer: Dvorak
*/
[_DVORAK] = LAYOUT_split_3x6_3(
KC_TAB, KC_QUOTE, KC_COMM, KC_DOT, KC_P , KC_Y, KC_F, KC_G , KC_C , KC_R , KC_L , KC_BSPC,
CTL_ESC, KC_A , KC_S , KC_D , KC_F , KC_G, KC_D, KC_H , KC_T , KC_N , KC_S , CTL_MINS,
KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B, KC_B, KC_M , KC_W , KC_V , KC_Z , KC_RSFT,
KC_BSPC, ALT_ENT, NAV, SYM, KC_SPC, MODS
),
/*
* Base Layer: Colemak DH
*/
[_COLEMAK_DH] = LAYOUT_split_3x6_3(
KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_B, KC_J, KC_L , KC_U , KC_Y ,KC_SCLN, KC_BSPC,
CTL_ESC , KC_A , KC_R , KC_S , KC_T , KC_G, KC_M, KC_N , KC_E , KC_I , KC_O , CTL_QUOT,
KC_LSFT , KC_Z , KC_X , KC_C , KC_D , KC_V, KC_K, KC_H ,KC_COMM, KC_DOT ,KC_SLSH, KC_RSFT,
KC_BSPC, ALT_ENT, NAV, SYM, KC_SPC, MODS
),
/*
* Nav Layer: Fn, navigation
*/
[_NAV] = LAYOUT_split_3x6_3(
KC_TRNS, KC_F9 , KC_F10, KC_F11, KC_F12, KC_TRNS, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_VOLU, KC_DEL,
KC_TRNS, KC_F5 , KC_F6 , KC_F7 , KC_F8, KC_TRNS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_VOLD, KC_INS,
KC_TRNS, KC_F1 , KC_F2 , KC_F3 , KC_F4, KC_TRNS, KC_PAUSE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PSCR,
KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_RALT, KC_TRNS
),
/*
* Symboles
*/
[_SYM] = LAYOUT_split_3x6_3(
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5, KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL,
KC_TILD , KC_EXLM, KC_AT , KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS,
KC_PIPE , KC_BSLS, KC_COLN, KC_SCLN, KC_MINS, KC_LBRC, KC_RBRC, KC_UNDS, KC_COMM, KC_DOT, KC_SLSH, KC_QUES,
KC_CAPS, KC_LCBR, KC_RCBR, KC_TRNS, KC_TRNS, KC_TRNS
),
/*
* Layer for mods
*/
[_MODS] = LAYOUT_split_3x6_3(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QWERTY,
KC_TRNS, KC_LGUI, KC_LCTL, KC_LALT, KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DVORAK,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, COLEMAK,
KC_QUOTE, KC_CIRC, KC_SCLN, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View file

@ -0,0 +1,9 @@
VIA_ENABLE = yes # Enable VIA
VIAL_ENABLE = yes # Enable VIAL
#We need to specify bootloader and MCU for F411 8Mhz version of BlackPillS
MCU = STM32F411
#We are in split keyboard mode
SPLIT_KEYBOARD = yes
SERIAL_DRIVER = usart

View file

@ -0,0 +1,259 @@
{
"lighting": "none",
"matrix": {
"rows": 8,
"cols": 6
},
"layouts": {
"keymap": [
[
{
"x": 3
},
"0,3",
{
"x": 7.5
},
"4,2"
],
[
{
"y": -0.75,
"x": 2
},
"0,2",
{
"x": 1
},
"0,4",
{
"x": 5.5
},
"4,1",
{
"x": 1
},
"4,3"
],
[
{
"y": -0.9,
"x": 5
},
"0,5",
{
"x": 3.5
},
"4,0"
],
[
{
"y": -0.3500000000000001
},
"0,0",
"0,1",
{
"x": 1
},
"1,3",
{
"x": 7.5
},
"5,2",
{
"x": 1
},
"4,4",
"4,5"
],
[
{
"y": -0.75,
"x": 2
},
"1,2",
{
"x": 1
},
"1,4",
{
"x": 5.5
},
"5,1",
{
"x": 1
},
"5,3"
],
[
{
"y": -0.8999999999999999,
"x": 5
},
"1,5",
{
"x": 3.5
},
"5,0"
],
[
{
"y": -0.3500000000000001
},
"1,0",
"1,1",
{
"x": 1
},
"2,3",
{
"x": 7.5
},
"6,2",
{
"x": 1
},
"5,4",
"5,5"
],
[
{
"y": -0.75,
"x": 2
},
"2,2",
{
"x": 1
},
"2,4",
{
"x": 5.5
},
"6,1",
{
"x": 1
},
"6,3"
],
[
{
"y": -0.8999999999999999,
"x": 5
},
"2,5",
{
"x": 3.5
},
"6,0"
],
[
{
"y": -0.3500000000000001
},
"2,0",
"2,1",
{
"x": 11.5
},
"6,4",
"6,5"
],
[
{
"r": 5,
"rx": 5,
"ry": 3.5,
"x": 0.09999999999999964
},
"3,1"
],
[
{
"rx": 10.75
},
"7,2"
],
[
{
"r": 15,
"rx": 6.5,
"y": 0.20000000000000018,
"x": -0.04999999999999982
},
"3,2"
],
[
{
"r": -15,
"rx": 8.25,
"y": 0.3900000000000001,
"x": -0.15000000000000036
},
"7,0"
],
[
{
"r": -5,
"rx": 3.6,
"y": 0.10000000000000009,
"x": 0.20000000000000018
},
"3,0"
],
[
{
"rx": 9.5,
"y": 0.10000000000000009,
"x": -0.05000000000000071
},
"7,1"
]
],
"LAYOUT_split_3x6_3": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0.25 },
{ "matrix": [0, 1], "x": 1, "y": 0.25 },
{ "matrix": [0, 2], "x": 2, "y": 0.125 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [0, 4], "x": 4, "y": 0.125 },
{ "matrix": [0, 5], "x": 5, "y": 0.25 },
{ "matrix": [4, 0], "x": 8, "y": 0.25 },
{ "matrix": [4, 1], "x": 9, "y": 0.125 },
{ "matrix": [4, 2], "x": 10, "y": 0 },
{ "matrix": [4, 3], "x": 11, "y": 0.125 },
{ "matrix": [4, 4], "x": 12, "y": 0.25 },
{ "matrix": [4, 5], "x": 13, "y": 0.25 },
{ "matrix": [1, 0], "x": 0, "y": 1.25 },
{ "matrix": [1, 1], "x": 1, "y": 1.25 },
{ "matrix": [1, 2], "x": 2, "y": 1.125 },
{ "matrix": [1, 3], "x": 3, "y": 1 },
{ "matrix": [1, 4], "x": 4, "y": 1.125 },
{ "matrix": [1, 5], "x": 5, "y": 1.25 },
{ "matrix": [5, 0], "x": 8, "y": 1.25 },
{ "matrix": [5, 1], "x": 9, "y": 1.125 },
{ "matrix": [5, 2], "x": 10, "y": 1 },
{ "matrix": [5, 3], "x": 11, "y": 1.125 },
{ "matrix": [5, 4], "x": 12, "y": 1.25 },
{ "matrix": [5, 5], "x": 13, "y": 1.25 },
{ "matrix": [2, 0], "x": 0, "y": 2.25 },
{ "matrix": [2, 1], "x": 1, "y": 2.25 },
{ "matrix": [2, 2], "x": 2, "y": 2.125 },
{ "matrix": [2, 3], "x": 3, "y": 2 },
{ "matrix": [2, 4], "x": 4, "y": 2.125 },
{ "matrix": [2, 5], "x": 5, "y": 2.25 },
{ "matrix": [6, 0], "x": 8, "y": 2.25 },
{ "matrix": [6, 1], "x": 9, "y": 2.125 },
{ "matrix": [6, 2], "x": 10, "y": 2 },
{ "matrix": [6, 3], "x": 11, "y": 2.125 },
{ "matrix": [6, 4], "x": 12, "y": 2.25 },
{ "matrix": [6, 5], "x": 13, "y": 2.25 },
{ "matrix": [3, 0], "x": 3.5, "y": 3.25 },
{ "matrix": [3, 1], "x": 4.5, "y": 3.5 },
{ "matrix": [3, 2], "x": 5.5, "y": 3.75 },
{ "matrix": [7, 0], "x": 7.5, "y": 3.75 },
{ "matrix": [7, 1], "x": 8.5, "y": 3.5 },
{ "matrix": [7, 2], "x": 9.5, "y": 3.25 }
]
}
}
}

View file

@ -0,0 +1,9 @@
// Copyright 2022 Diego Palacios (@diepala)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <mcuconf.h>
#undef STM32_SERIAL_USE_USART1
#define STM32_SERIAL_USE_USART1 TRUE

View file

@ -0,0 +1,28 @@
# HLB CantorMX F411
Project based on original Cantor keyboard (42 key diodeless split keyboard), designed with simplicity in mind. It is inspired on the popular [corne](https://github.com/foostan/crkbd), [ferris](https://github.com/pierrechevalier83/ferris) and [sweep](https://github.com/davidphilipbarr/Sweep) keyboards, aiming to provide a more ergonomic (stronger column stagger) corne-like layout with a simple, easy to assemble and cheap design.
We upgraded blackpill version to STM32F411 8Mhz therefore original firmware maintained by [Diego Palacios](https://github.com/diepala) must be adapted to this hardware.
A case design has beed made to get a full 3DP Cantor project (see below)
* Keyboard Maintainer: [HLB H3lli0n](https://github.com/H3lli0n)
* Hardware Supported: Blackpill STM32F411 8Mhz only
* Hardware Availability: https://github.com/H3lli0n/CantorMx-3DP-case
This firmware is made for EE_HANDS split, to build and flash your firmwares (left and right) please follow the examples below with hand in DFU mode:
Make+flash example for this split (after setting up your build environment):
make hlb/cantor:vial::dfu-util-split-left
make hlb/cantor:vial::dfu-util-split-right
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).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the thumb key on the left and plug in the keyboard. For the right side, hold the thumb key on the right and plug the keyboard.
* **Physical reset button**:
* Press and hold the BOOT0 button.
* Press and release the NRST button.
* Release the BOOT0 button.
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View file

@ -0,0 +1,492 @@
{
"manufacturer": "HLB",
"keyboard_name": "hyperbolas",
"maintainer": "H3lli0n",
"bootloader": "rp2040",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"matrix_pins": {
"cols": [
"GP16", "GP17", "GP18", "GP19", "GP20", "GP21", "GP22", "GP23", "GP24",
"GP12", "GP6", "GP5", "GP4", "GP3", "GP25", "GP2", "GP1", "GP0"
],
"rows": ["GP11", "GP10", "GP9", "GP8", "GP7", "GP15"]
},
"processor": "RP2040",
"usb": {
"device_version": "1.0.0",
"pid": "0x0007",
"vid": "0x3025"
},
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
{"matrix": [0,0], "label":"Esc", "x":0, "y":0},
{"matrix": [0,2], "label":"F1", "x":2, "y":0},
{"matrix": [0,3], "label":"F2", "x":3, "y":0},
{"matrix": [0,4], "label":"F3", "x":4, "y":0},
{"matrix": [0,5], "label":"F4", "x":5, "y":0},
{"matrix": [0,6], "label":"F5", "x":6.5, "y":0},
{"matrix": [0,7], "label":"F6", "x":7.8, "y":0},
{"matrix": [0,8], "label":"F7", "x":8.5, "y":0},
{"matrix": [0,9], "label":"F8", "x":9.5, "y":0},
{"matrix": [0,10], "label":"F9", "x":11, "y":0},
{"matrix": [0,11], "label":"F10", "x":12, "y":0},
{"matrix": [0,12], "label":"F11", "x":13, "y":0},
{"matrix": [0,13], "label":"F12", "x":14, "y":0},
{"matrix": [0,15], "label":"PrtSc", "x":15.25, "y":0},
{"matrix": [0,16], "label":"Scroll Lock", "x":16.25, "y":0},
{"matrix": [0,17], "label":"Pause", "x":17.25, "y":0},
{"matrix": [1,0], "label":"~", "x":0, "y":1.25},
{"matrix": [1,1], "label":"!", "x":1, "y":1.25},
{"matrix": [1,2], "label":"@", "x":2, "y":1.25},
{"matrix": [1,3], "label":"#", "x":3, "y":1.25},
{"matrix": [1,4], "label":"$", "x":4, "y":1.25},
{"matrix": [1,5], "label":"%", "x":5, "y":1.25},
{"matrix": [1,6], "label":"^", "x":6, "y":1.25},
{"matrix": [1,7], "label":"&", "x":7, "y":1.25},
{"matrix": [1,8], "label":"*", "x":8, "y":1.25},
{"matrix": [1,9], "label":"(", "x":9, "y":1.25},
{"matrix": [1,10], "label":")", "x":10, "y":1.25},
{"matrix": [1,11], "label":"_", "x":11, "y":1.25},
{"matrix": [1,12], "label":"+", "x":12, "y":1.25},
{"matrix": [1,14], "label":"Backspace", "x":13, "y":2.25},
{"matrix": [1,15], "label":"Insert", "x":15.25, "y":1.25},
{"matrix": [1,16], "label":"Home", "x":16.25, "y":1.25},
{"matrix": [1,17], "label":"PgUp", "x":17.25, "y":1.25},
{"matrix": [2,0], "label":"Tab", "x":0, "y":2.25, "w":1.5},
{"matrix": [2,1], "label":"Q", "x":1.5, "y":2.25},
{"matrix": [2,2], "label":"W", "x":2.5, "y":2.25},
{"matrix": [2,3], "label":"E", "x":3.5, "y":2.25},
{"matrix": [2,4], "label":"R", "x":4.5, "y":2.25},
{"matrix": [2,5], "label":"T", "x":5.5, "y":2.25},
{"matrix": [2,6], "label":"Y", "x":6.5, "y":2.25},
{"matrix": [2,7], "label":"U", "x":7.5, "y":2.25},
{"matrix": [2,8], "label":"I", "x":8.5, "y":2.25},
{"matrix": [2,9], "label":"O", "x":9.5, "y":2.25},
{"matrix": [2,10], "label":"P", "x":10.5, "y":2.25},
{"matrix": [2,11], "label":"{", "x":11.5, "y":2.25},
{"matrix": [2,12], "label":"}", "x":12.5, "y":2.25},
{"matrix": [2,13], "label":"|", "x":13.5, "y":2.25, "w":1.5},
{"matrix": [2,15], "label":"Delete", "x":15.25, "y":2.25},
{"matrix": [2,16], "label":"End", "x":16.25, "y":2.25},
{"matrix": [2,17], "label":"PgDown", "x":17.25, "y":2.25},
{"matrix": [3,0], "label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
{"matrix": [3,1], "label":"A", "x":1.75, "y":3.25},
{"matrix": [3,2], "label":"S", "x":2.75, "y":3.25},
{"matrix": [3,3], "label":"D", "x":3.75, "y":3.25},
{"matrix": [3,4], "label":"F", "x":4.75, "y":3.25},
{"matrix": [3,5], "label":"G", "x":5.75, "y":3.25},
{"matrix": [3,6], "label":"H", "x":6.75, "y":3.25},
{"matrix": [3,7], "label":"J", "x":7.75, "y":3.25},
{"matrix": [3,8], "label":"K", "x":8.75, "y":3.25},
{"matrix": [3,9], "label":"L", "x":9.75, "y":3.25},
{"matrix": [3,10], "label":":", "x":10.75, "y":3.25},
{"matrix": [3,11], "label":"\"", "x":11.75, "y":3.25},
{"matrix": [3,13], "label":"Enter", "x":12.75, "y":3.25, "w":2.25},
{"matrix": [4,0], "label":"Shift", "x":0, "y":4.25, "w":2.25},
{"matrix": [4,2], "label":"Z", "x":2.25, "y":4.25},
{"matrix": [4,3], "label":"X", "x":3.25, "y":4.25},
{"matrix": [4,4], "label":"C", "x":4.25, "y":4.25},
{"matrix": [4,5], "label":"V", "x":5.25, "y":4.25},
{"matrix": [4,6], "label":"B", "x":6.25, "y":4.25},
{"matrix": [4,7], "label":"N", "x":7.25, "y":4.25},
{"matrix": [4,8], "label":"M", "x":8.25, "y":4.25},
{"matrix": [4,9], "label":"<", "x":9.25, "y":4.25},
{"matrix": [4,10], "label":">", "x":10.25, "y":4.25},
{"matrix": [4,11], "label":"?", "x":11.25, "y":4.25},
{"matrix": [4,12], "label":"Shift", "x":12.25, "y":4.25, "w":2.75},
{"matrix": [4,16], "label":"Up Arrow", "x":16.25, "y":4.25},
{"matrix": [5,0], "label":"Ctrl", "x":0, "y":5.25, "w":1.25},
{"matrix": [5,1], "label":"Win", "x":1.25, "y":5.25, "w":1.25},
{"matrix": [5,2], "label":"Alt", "x":2.5, "y":5.25, "w":1.25},
{"matrix": [5,6], "label":"Space", "x":3.75, "y":5.25, "w":6.25},
{"matrix": [5,10], "label":"Alt", "x":10, "y":5.25, "w":1.25},
{"matrix": [5,11], "label":"Alt", "x":11.25, "y":5.25, "w":1.25},
{"matrix": [5,12], "label":"Win", "x":12.5, "y":5.25, "w":1.25},
{"matrix": [5,13], "label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
{"matrix": [5,15], "label":"Left Arrow", "x":15.25, "y":5.25},
{"matrix": [5,16], "label":"Down Arrow", "x":16.25, "y":5.25},
{"matrix": [5,17], "label":"Right Arrow", "x":17.25, "y":5.25}
]
},
"LAYOUT_tkl_ansi_tsangan": {
"layout": [
{"matrix": [0,0], "label":"Esc", "x":0, "y":0},
{"matrix": [0,2], "label":"F1", "x":2, "y":0},
{"matrix": [0,3], "label":"F2", "x":3, "y":0},
{"matrix": [0,4], "label":"F3", "x":4, "y":0},
{"matrix": [0,5], "label":"F4", "x":5, "y":0},
{"matrix": [0,6], "label":"F5", "x":6.5, "y":0},
{"matrix": [0,7], "label":"F6", "x":7.8, "y":0},
{"matrix": [0,8], "label":"F7", "x":8.5, "y":0},
{"matrix": [0,9], "label":"F8", "x":9.5, "y":0},
{"matrix": [0,10], "label":"F9", "x":11, "y":0},
{"matrix": [0,11], "label":"F10", "x":12, "y":0},
{"matrix": [0,12], "label":"F11", "x":13, "y":0},
{"matrix": [0,13], "label":"F12", "x":14, "y":0},
{"matrix": [0,15], "label":"PrtSc", "x":15.25, "y":0},
{"matrix": [0,16], "label":"Scroll Lock", "x":16.25, "y":0},
{"matrix": [0,17], "label":"Pause", "x":17.25, "y":0},
{"matrix": [1,0], "label":"~", "x":0, "y":1.25},
{"matrix": [1,1], "label":"!", "x":1, "y":1.25},
{"matrix": [1,2], "label":"@", "x":2, "y":1.25},
{"matrix": [1,3], "label":"#", "x":3, "y":1.25},
{"matrix": [1,4], "label":"$", "x":4, "y":1.25},
{"matrix": [1,5], "label":"%", "x":5, "y":1.25},
{"matrix": [1,6], "label":"^", "x":6, "y":1.25},
{"matrix": [1,7], "label":"&", "x":7, "y":1.25},
{"matrix": [1,8], "label":"*", "x":8, "y":1.25},
{"matrix": [1,9], "label":"(", "x":9, "y":1.25},
{"matrix": [1,10], "label":")", "x":10, "y":1.25},
{"matrix": [1,11], "label":"_", "x":11, "y":1.25},
{"matrix": [1,12], "label":"+", "x":12, "y":1.25},
{"matrix": [1,14], "label":"Backspace", "x":13, "y":2.25},
{"matrix": [1,15], "label":"Insert", "x":15.25, "y":1.25},
{"matrix": [1,16], "label":"Home", "x":16.25, "y":1.25},
{"matrix": [1,17], "label":"PgUp", "x":17.25, "y":1.25},
{"matrix": [2,0], "label":"Tab", "x":0, "y":2.25, "w":1.5},
{"matrix": [2,1], "label":"Q", "x":1.5, "y":2.25},
{"matrix": [2,2], "label":"W", "x":2.5, "y":2.25},
{"matrix": [2,3], "label":"E", "x":3.5, "y":2.25},
{"matrix": [2,4], "label":"R", "x":4.5, "y":2.25},
{"matrix": [2,5], "label":"T", "x":5.5, "y":2.25},
{"matrix": [2,6], "label":"Y", "x":6.5, "y":2.25},
{"matrix": [2,7], "label":"U", "x":7.5, "y":2.25},
{"matrix": [2,8], "label":"I", "x":8.5, "y":2.25},
{"matrix": [2,9], "label":"O", "x":9.5, "y":2.25},
{"matrix": [2,10], "label":"P", "x":10.5, "y":2.25},
{"matrix": [2,11], "label":"{", "x":11.5, "y":2.25},
{"matrix": [2,12], "label":"}", "x":12.5, "y":2.25},
{"matrix": [2,13], "label":"|", "x":13.5, "y":2.25, "w":1.5},
{"matrix": [2,15], "label":"Delete", "x":15.25, "y":2.25},
{"matrix": [2,16], "label":"End", "x":16.25, "y":2.25},
{"matrix": [2,17], "label":"PgDown", "x":17.25, "y":2.25},
{"matrix": [3,0], "label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
{"matrix": [3,1], "label":"A", "x":1.75, "y":3.25},
{"matrix": [3,2], "label":"S", "x":2.75, "y":3.25},
{"matrix": [3,3], "label":"D", "x":3.75, "y":3.25},
{"matrix": [3,4], "label":"F", "x":4.75, "y":3.25},
{"matrix": [3,5], "label":"G", "x":5.75, "y":3.25},
{"matrix": [3,6], "label":"H", "x":6.75, "y":3.25},
{"matrix": [3,7], "label":"J", "x":7.75, "y":3.25},
{"matrix": [3,8], "label":"K", "x":8.75, "y":3.25},
{"matrix": [3,9], "label":"L", "x":9.75, "y":3.25},
{"matrix": [3,10], "label":":", "x":10.75, "y":3.25},
{"matrix": [3,11], "label":"\"", "x":11.75, "y":3.25},
{"matrix": [3,13], "label":"Enter", "x":12.75, "y":3.25, "w":2.25},
{"matrix": [4,0], "label":"Shift", "x":0, "y":4.25, "w":2.25},
{"matrix": [4,2], "label":"Z", "x":2.25, "y":4.25},
{"matrix": [4,3], "label":"X", "x":3.25, "y":4.25},
{"matrix": [4,4], "label":"C", "x":4.25, "y":4.25},
{"matrix": [4,5], "label":"V", "x":5.25, "y":4.25},
{"matrix": [4,6], "label":"B", "x":6.25, "y":4.25},
{"matrix": [4,7], "label":"N", "x":7.25, "y":4.25},
{"matrix": [4,8], "label":"M", "x":8.25, "y":4.25},
{"matrix": [4,9], "label":"<", "x":9.25, "y":4.25},
{"matrix": [4,10], "label":">", "x":10.25, "y":4.25},
{"matrix": [4,11], "label":"?", "x":11.25, "y":4.25},
{"matrix": [4,12], "label":"Shift", "x":12.25, "y":4.25, "w":2.75},
{"matrix": [4,16], "label":"Up Arrow", "x":16.25, "y":4.25},
{"matrix": [5,0], "label":"Ctrl", "x":0, "y":5.25, "w":1.5},
{"matrix": [5,1], "label":"Win", "x":1.5, "y":5.25, "w":1.5},
{"matrix": [5,2], "label":"Alt", "x":3, "y":5.25, "w":1.5},
{"matrix": [5,6], "label":"Space", "x":4.5, "y":5.25, "w":7},
{"matrix": [5,11], "label":"Alt", "x":11.5, "y":5.25, "w":1.5},
{"matrix": [5,12], "label":"Win", "x":13, "y":5.25, "w":1.5},
{"matrix": [5,13], "label":"Ctrl", "x":14.5, "y":5.25, "w":1.5},
{"matrix": [5,15], "label":"Left Arrow", "x":15.25, "y":5.25},
{"matrix": [5,16], "label":"Down Arrow", "x":16.25, "y":5.25},
{"matrix": [5,17], "label":"Right Arrow", "x":17.25, "y":5.25}
]
},
"LAYOUT_tkl_iso": {
"layout": [
{"matrix": [0,0], "label":"Esc", "x":0, "y":0},
{"matrix": [0,2], "label":"F1", "x":2, "y":0},
{"matrix": [0,3], "label":"F2", "x":3, "y":0},
{"matrix": [0,4], "label":"F3", "x":4, "y":0},
{"matrix": [0,5], "label":"F4", "x":5, "y":0},
{"matrix": [0,6], "label":"F5", "x":6.5, "y":0},
{"matrix": [0,7], "label":"F6", "x":7.8, "y":0},
{"matrix": [0,8], "label":"F7", "x":8.5, "y":0},
{"matrix": [0,9], "label":"F8", "x":9.5, "y":0},
{"matrix": [0,10], "label":"F9", "x":11, "y":0},
{"matrix": [0,11], "label":"F10", "x":12, "y":0},
{"matrix": [0,12], "label":"F11", "x":13, "y":0},
{"matrix": [0,13], "label":"F12", "x":14, "y":0},
{"matrix": [0,15], "label":"PrtSc", "x":15.25, "y":0},
{"matrix": [0,16], "label":"Scroll Lock", "x":16.25, "y":0},
{"matrix": [0,17], "label":"Pause", "x":17.25, "y":0},
{"matrix": [1,0], "label":"~", "x":0, "y":1.25},
{"matrix": [1,1], "label":"!", "x":1, "y":1.25},
{"matrix": [1,2], "label":"@", "x":2, "y":1.25},
{"matrix": [1,3], "label":"#", "x":3, "y":1.25},
{"matrix": [1,4], "label":"$", "x":4, "y":1.25},
{"matrix": [1,5], "label":"%", "x":5, "y":1.25},
{"matrix": [1,6], "label":"^", "x":6, "y":1.25},
{"matrix": [1,7], "label":"&", "x":7, "y":1.25},
{"matrix": [1,8], "label":"*", "x":8, "y":1.25},
{"matrix": [1,9], "label":"(", "x":9, "y":1.25},
{"matrix": [1,10], "label":")", "x":10, "y":1.25},
{"matrix": [1,11], "label":"_", "x":11, "y":1.25},
{"matrix": [1,12], "label":"+", "x":12, "y":1.25},
{"matrix": [1,14], "label":"Backspace", "x":13, "y":2.25},
{"matrix": [1,15], "label":"Insert", "x":15.25, "y":1.25},
{"matrix": [1,16], "label":"Home", "x":16.25, "y":1.25},
{"matrix": [1,17], "label":"PgUp", "x":17.25, "y":1.25},
{"matrix": [2,0], "label":"Tab", "x":0, "y":2.25, "w":1.5},
{"matrix": [2,1], "label":"Q", "x":1.5, "y":2.25},
{"matrix": [2,2], "label":"W", "x":2.5, "y":2.25},
{"matrix": [2,3], "label":"E", "x":3.5, "y":2.25},
{"matrix": [2,4], "label":"R", "x":4.5, "y":2.25},
{"matrix": [2,5], "label":"T", "x":5.5, "y":2.25},
{"matrix": [2,6], "label":"Y", "x":6.5, "y":2.25},
{"matrix": [2,7], "label":"U", "x":7.5, "y":2.25},
{"matrix": [2,8], "label":"I", "x":8.5, "y":2.25},
{"matrix": [2,9], "label":"O", "x":9.5, "y":2.25},
{"matrix": [2,10], "label":"P", "x":10.5, "y":2.25},
{"matrix": [2,11], "label":"{", "x":11.5, "y":2.25},
{"matrix": [2,12], "label":"}", "x":12.5, "y":2.25},
{"matrix": [2,15], "label":"Delete", "x":15.25, "y":2.25},
{"matrix": [2,16], "label":"End", "x":16.25, "y":2.25},
{"matrix": [2,17], "label":"PgDown", "x":17.25, "y":2.25},
{"matrix": [3,0], "label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
{"matrix": [3,1], "label":"A", "x":1.75, "y":3.25},
{"matrix": [3,2], "label":"S", "x":2.75, "y":3.25},
{"matrix": [3,3], "label":"D", "x":3.75, "y":3.25},
{"matrix": [3,4], "label":"F", "x":4.75, "y":3.25},
{"matrix": [3,5], "label":"G", "x":5.75, "y":3.25},
{"matrix": [3,6], "label":"H", "x":6.75, "y":3.25},
{"matrix": [3,7], "label":"J", "x":7.75, "y":3.25},
{"matrix": [3,8], "label":"K", "x":8.75, "y":3.25},
{"matrix": [3,9], "label":"L", "x":9.75, "y":3.25},
{"matrix": [3,10], "label":":", "x":10.75, "y":3.25},
{"matrix": [3,11], "label":"\"", "x":11.75, "y":3.25},
{"matrix": [3,12], "label":"|", "x":12.75, "y":3.25},
{"matrix": [3,13], "label":"Enter", "x":13.75, "y":3.25, "w": 1.25, "h": 2},
{"matrix": [4,0], "label":"Shift", "x":0, "y":4.25, "w":1.25},
{"matrix": [4,1], "label":"<>", "x":1.25, "y":4.25},
{"matrix": [4,2], "label":"Z", "x":2.25, "y":4.25},
{"matrix": [4,3], "label":"X", "x":3.25, "y":4.25},
{"matrix": [4,4], "label":"C", "x":4.25, "y":4.25},
{"matrix": [4,5], "label":"V", "x":5.25, "y":4.25},
{"matrix": [4,6], "label":"B", "x":6.25, "y":4.25},
{"matrix": [4,7], "label":"N", "x":7.25, "y":4.25},
{"matrix": [4,8], "label":"M", "x":8.25, "y":4.25},
{"matrix": [4,9], "label":"<", "x":9.25, "y":4.25},
{"matrix": [4,10], "label":">", "x":10.25, "y":4.25},
{"matrix": [4,11], "label":"?", "x":11.25, "y":4.25},
{"matrix": [4,12], "label":"Shift", "x":12.25, "y":4.25, "w":2.75},
{"matrix": [4,16], "label":"Up Arrow", "x":16.25, "y":4.25},
{"matrix": [5,0], "label":"Ctrl", "x":0, "y":5.25, "w":1.25},
{"matrix": [5,1], "label":"Win", "x":1.25, "y":5.25, "w":1.25},
{"matrix": [5,2], "label":"Alt", "x":2.5, "y":5.25, "w":1.25},
{"matrix": [5,6], "label":"Space", "x":3.75, "y":5.25, "w":6.25},
{"matrix": [5,10], "label":"Alt", "x":10, "y":5.25, "w":1.25},
{"matrix": [5,11], "label":"Alt", "x":11.25, "y":5.25, "w":1.25},
{"matrix": [5,12], "label":"Win", "x":12.5, "y":5.25, "w":1.25},
{"matrix": [5,13], "label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
{"matrix": [5,15], "label":"Left Arrow", "x":15.25, "y":5.25},
{"matrix": [5,16], "label":"Down Arrow", "x":16.25, "y":5.25},
{"matrix": [5,17], "label":"Right Arrow", "x":17.25, "y":5.25}
]
},
"LAYOUT_tkl_iso_tsangan": {
"layout": [
{"matrix": [0,0], "label":"Esc", "x":0, "y":0},
{"matrix": [0,2], "label":"F1", "x":2, "y":0},
{"matrix": [0,3], "label":"F2", "x":3, "y":0},
{"matrix": [0,4], "label":"F3", "x":4, "y":0},
{"matrix": [0,5], "label":"F4", "x":5, "y":0},
{"matrix": [0,6], "label":"F5", "x":6.5, "y":0},
{"matrix": [0,7], "label":"F6", "x":7.8, "y":0},
{"matrix": [0,8], "label":"F7", "x":8.5, "y":0},
{"matrix": [0,9], "label":"F8", "x":9.5, "y":0},
{"matrix": [0,10], "label":"F9", "x":11, "y":0},
{"matrix": [0,11], "label":"F10", "x":12, "y":0},
{"matrix": [0,12], "label":"F11", "x":13, "y":0},
{"matrix": [0,13], "label":"F12", "x":14, "y":0},
{"matrix": [0,15], "label":"PrtSc", "x":15.25, "y":0},
{"matrix": [0,16], "label":"Scroll Lock", "x":16.25, "y":0},
{"matrix": [0,17], "label":"Pause", "x":17.25, "y":0},
{"matrix": [1,0], "label":"~", "x":0, "y":1.25},
{"matrix": [1,1], "label":"!", "x":1, "y":1.25},
{"matrix": [1,2], "label":"@", "x":2, "y":1.25},
{"matrix": [1,3], "label":"#", "x":3, "y":1.25},
{"matrix": [1,4], "label":"$", "x":4, "y":1.25},
{"matrix": [1,5], "label":"%", "x":5, "y":1.25},
{"matrix": [1,6], "label":"^", "x":6, "y":1.25},
{"matrix": [1,7], "label":"&", "x":7, "y":1.25},
{"matrix": [1,8], "label":"*", "x":8, "y":1.25},
{"matrix": [1,9], "label":"(", "x":9, "y":1.25},
{"matrix": [1,10], "label":")", "x":10, "y":1.25},
{"matrix": [1,11], "label":"_", "x":11, "y":1.25},
{"matrix": [1,12], "label":"+", "x":12, "y":1.25},
{"matrix": [1,14], "label":"Backspace", "x":13, "y":2.25},
{"matrix": [1,15], "label":"Insert", "x":15.25, "y":1.25},
{"matrix": [1,16], "label":"Home", "x":16.25, "y":1.25},
{"matrix": [1,17], "label":"PgUp", "x":17.25, "y":1.25},
{"matrix": [2,0], "label":"Tab", "x":0, "y":2.25, "w":1.5},
{"matrix": [2,1], "label":"Q", "x":1.5, "y":2.25},
{"matrix": [2,2], "label":"W", "x":2.5, "y":2.25},
{"matrix": [2,3], "label":"E", "x":3.5, "y":2.25},
{"matrix": [2,4], "label":"R", "x":4.5, "y":2.25},
{"matrix": [2,5], "label":"T", "x":5.5, "y":2.25},
{"matrix": [2,6], "label":"Y", "x":6.5, "y":2.25},
{"matrix": [2,7], "label":"U", "x":7.5, "y":2.25},
{"matrix": [2,8], "label":"I", "x":8.5, "y":2.25},
{"matrix": [2,9], "label":"O", "x":9.5, "y":2.25},
{"matrix": [2,10], "label":"P", "x":10.5, "y":2.25},
{"matrix": [2,11], "label":"{", "x":11.5, "y":2.25},
{"matrix": [2,12], "label":"}", "x":12.5, "y":2.25},
{"matrix": [2,15], "label":"Delete", "x":15.25, "y":2.25},
{"matrix": [2,16], "label":"End", "x":16.25, "y":2.25},
{"matrix": [2,17], "label":"PgDown", "x":17.25, "y":2.25},
{"matrix": [3,0], "label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
{"matrix": [3,1], "label":"A", "x":1.75, "y":3.25},
{"matrix": [3,2], "label":"S", "x":2.75, "y":3.25},
{"matrix": [3,3], "label":"D", "x":3.75, "y":3.25},
{"matrix": [3,4], "label":"F", "x":4.75, "y":3.25},
{"matrix": [3,5], "label":"G", "x":5.75, "y":3.25},
{"matrix": [3,6], "label":"H", "x":6.75, "y":3.25},
{"matrix": [3,7], "label":"J", "x":7.75, "y":3.25},
{"matrix": [3,8], "label":"K", "x":8.75, "y":3.25},
{"matrix": [3,9], "label":"L", "x":9.75, "y":3.25},
{"matrix": [3,10], "label":":", "x":10.75, "y":3.25},
{"matrix": [3,11], "label":"\"", "x":11.75, "y":3.25},
{"matrix": [3,12], "label":"|", "x":12.75, "y":3.25},
{"matrix": [3,13], "label":"Enter", "x":13.75, "y":3.25, "w": 1.25, "h": 2},
{"matrix": [4,0], "label":"Shift", "x":0, "y":4.25, "w":1.25},
{"matrix": [4,1], "label":"<>", "x":1.25, "y":4.25},
{"matrix": [4,2], "label":"Z", "x":2.25, "y":4.25},
{"matrix": [4,3], "label":"X", "x":3.25, "y":4.25},
{"matrix": [4,4], "label":"C", "x":4.25, "y":4.25},
{"matrix": [4,5], "label":"V", "x":5.25, "y":4.25},
{"matrix": [4,6], "label":"B", "x":6.25, "y":4.25},
{"matrix": [4,7], "label":"N", "x":7.25, "y":4.25},
{"matrix": [4,8], "label":"M", "x":8.25, "y":4.25},
{"matrix": [4,9], "label":"<", "x":9.25, "y":4.25},
{"matrix": [4,10], "label":">", "x":10.25, "y":4.25},
{"matrix": [4,11], "label":"?", "x":11.25, "y":4.25},
{"matrix": [4,12], "label":"Shift", "x":12.25, "y":4.25, "w":2.75},
{"matrix": [4,16], "label":"Up Arrow", "x":16.25, "y":4.25},
{"matrix": [5,0], "label":"Ctrl", "x":0, "y":5.25, "w":1.5},
{"matrix": [5,1], "label":"Win", "x":1.5, "y":5.25, "w":1.5},
{"matrix": [5,2], "label":"Alt", "x":3, "y":5.25, "w":1.5},
{"matrix": [5,6], "label":"Space", "x":4.5, "y":5.25, "w":7},
{"matrix": [5,11], "label":"Alt", "x":11.5, "y":5.25, "w":1.5},
{"matrix": [5,12], "label":"Win", "x":13, "y":5.25, "w":1.5},
{"matrix": [5,13], "label":"Ctrl", "x":14.5, "y":5.25, "w":1.5},
{"matrix": [5,15], "label":"Left Arrow", "x":15.25, "y":5.25},
{"matrix": [5,16], "label":"Down Arrow", "x":16.25, "y":5.25},
{"matrix": [5,17], "label":"Right Arrow", "x":17.25, "y":5.25}
]
},
"LAYOUT_all": {
"layout": [
{"matrix": [0,0], "label":"Esc", "x":0, "y":0},
{"matrix": [0,2], "label":"F1", "x":2, "y":0},
{"matrix": [0,3], "label":"F2", "x":3, "y":0},
{"matrix": [0,4], "label":"F3", "x":4, "y":0},
{"matrix": [0,5], "label":"F4", "x":5, "y":0},
{"matrix": [0,6], "label":"F5", "x":6.5, "y":0},
{"matrix": [0,7], "label":"F6", "x":7.8, "y":0},
{"matrix": [0,8], "label":"F7", "x":8.5, "y":0},
{"matrix": [0,9], "label":"F8", "x":9.5, "y":0},
{"matrix": [0,10], "label":"F9", "x":11, "y":0},
{"matrix": [0,11], "label":"F10", "x":12, "y":0},
{"matrix": [0,12], "label":"F11", "x":13, "y":0},
{"matrix": [0,13], "label":"F12", "x":14, "y":0},
{"matrix": [0,15], "label":"PrtSc", "x":15.25, "y":0},
{"matrix": [0,16], "label":"Scroll Lock", "x":16.25, "y":0},
{"matrix": [0,17], "label":"Pause", "x":17.25, "y":0},
{"matrix": [1,0], "label":"~", "x":0, "y":1.25},
{"matrix": [1,1], "label":"!", "x":1, "y":1.25},
{"matrix": [1,2], "label":"@", "x":2, "y":1.25},
{"matrix": [1,3], "label":"#", "x":3, "y":1.25},
{"matrix": [1,4], "label":"$", "x":4, "y":1.25},
{"matrix": [1,5], "label":"%", "x":5, "y":1.25},
{"matrix": [1,6], "label":"^", "x":6, "y":1.25},
{"matrix": [1,7], "label":"&", "x":7, "y":1.25},
{"matrix": [1,8], "label":"*", "x":8, "y":1.25},
{"matrix": [1,9], "label":"(", "x":9, "y":1.25},
{"matrix": [1,10], "label":")", "x":10, "y":1.25},
{"matrix": [1,11], "label":"_", "x":11, "y":1.25},
{"matrix": [1,12], "label":"+", "x":12, "y":1.25},
{"matrix": [1,13], "label":"1U Split Bksp", "x":13, "y":1.25},
{"matrix": [1,14], "label":"Backspace", "x":14, "y":1.25},
{"matrix": [1,15], "label":"/", "x":15.25, "y":1.25},
{"matrix": [1,16], "label":"*", "x":16.25, "y":1.25},
{"matrix": [1,17], "label":"-", "x":17.25, "y":1.25},
{"matrix": [2,0], "label":"Tab", "x":0, "y":2.25, "w":1.5},
{"matrix": [2,1], "label":"Q", "x":1.5, "y":2.25},
{"matrix": [2,2], "label":"W", "x":2.5, "y":2.25},
{"matrix": [2,3], "label":"E", "x":3.5, "y":2.25},
{"matrix": [2,4], "label":"R", "x":4.5, "y":2.25},
{"matrix": [2,5], "label":"T", "x":5.5, "y":2.25},
{"matrix": [2,6], "label":"Y", "x":6.5, "y":2.25},
{"matrix": [2,7], "label":"U", "x":7.5, "y":2.25},
{"matrix": [2,8], "label":"I", "x":8.5, "y":2.25},
{"matrix": [2,9], "label":"O", "x":9.5, "y":2.25},
{"matrix": [2,10], "label":"P", "x":10.5, "y":2.25},
{"matrix": [2,11], "label":"{", "x":11.5, "y":2.25},
{"matrix": [2,12], "label":"}", "x":12.5, "y":2.25},
{"matrix": [2,13], "label":"|", "x":13.5, "y":2.25, "w":1.5},
{"matrix": [2,15], "label":"7", "x":15.25, "y":2.25},
{"matrix": [2,16], "label":"8", "x":16.25, "y":2.25},
{"matrix": [2,17], "label":"9", "x":17.25, "y":2.25},
{"matrix": [3,0], "label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
{"matrix": [3,1], "label":"A", "x":1.75, "y":3.25},
{"matrix": [3,2], "label":"S", "x":2.75, "y":3.25},
{"matrix": [3,3], "label":"D", "x":3.75, "y":3.25},
{"matrix": [3,4], "label":"F", "x":4.75, "y":3.25},
{"matrix": [3,5], "label":"G", "x":5.75, "y":3.25},
{"matrix": [3,6], "label":"H", "x":6.75, "y":3.25},
{"matrix": [3,7], "label":"J", "x":7.75, "y":3.25},
{"matrix": [3,8], "label":"K", "x":8.75, "y":3.25},
{"matrix": [3,9], "label":"L", "x":9.75, "y":3.25},
{"matrix": [3,10], "label":":", "x":10.75, "y":3.25},
{"matrix": [3,11], "label":"\"", "x":12.75, "y":3.25},
{"matrix": [3,12], "label":"|", "x":13.75, "y":3.25},
{"matrix": [3,13], "label":"Enter", "x":12.75, "y":3.25, "w":2.25},
{"matrix": [3,15], "label":"4", "x":15.25, "y":3.25},
{"matrix": [3,16], "label":"5", "x":16.25, "y":3.25},
{"matrix": [3,17], "label":"6", "x":17.25, "y":3.25},
{"matrix": [4,0], "label":"Shift", "x":0, "y":4.25, "w":1.25},
{"matrix": [4,1], "label":"<>", "x":1.25, "y":4.25},
{"matrix": [4,2], "label":"Z", "x":2.25, "y":4.25},
{"matrix": [4,3], "label":"X", "x":3.25, "y":4.25},
{"matrix": [4,4], "label":"C", "x":4.25, "y":4.25},
{"matrix": [4,5], "label":"V", "x":5.25, "y":4.25},
{"matrix": [4,6], "label":"B", "x":6.25, "y":4.25},
{"matrix": [4,7], "label":"N", "x":7.25, "y":4.25},
{"matrix": [4,8], "label":"M", "x":8.25, "y":4.25},
{"matrix": [4,9], "label":"<", "x":9.25, "y":4.25},
{"matrix": [4,10], "label":">", "x":10.25, "y":4.25},
{"matrix": [4,11], "label":"?", "x":11.25, "y":4.25},
{"matrix": [4,12], "label":"Shift", "x":12.25, "y":4.25, "w":1.75},
{"matrix": [4,13], "label":"Fn", "x":14, "y":4.25},
{"matrix": [4,15], "label":"1", "x":15.25, "y":4.25},
{"matrix": [4,16], "label":"2", "x":16.25, "y":4.25},
{"matrix": [4,17], "label":"3", "x":17.25, "y":4.25},
{"matrix": [5,0], "label":"Ctrl", "x":0, "y":5.25, "w":1.25},
{"matrix": [5,1], "label":"Win", "x":1.25, "y":5.25, "w":1.25},
{"matrix": [5,2], "label":"Alt", "x":2.5, "y":5.25, "w":1.25},
{"matrix": [5,6], "label":"Space", "x":3.75, "y":5.25, "w":6.25},
{"matrix": [5,10], "label":"Alt", "x":10, "y":5.25, "w":1.25},
{"matrix": [5,11], "label":"Alt", "x":11.25, "y":5.25, "w":1.25},
{"matrix": [5,12], "label":"Win", "x":12.5, "y":5.25, "w":1.25},
{"matrix": [5,13], "label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
{"matrix": [5,15], "label":"0", "x":15.25, "y":5.25},
{"matrix": [5,16], "label":"0", "x":16.25, "y":5.25},
{"matrix": [5,17], "label":".", "x":17.25, "y":5.25}
]
}
}
}

View file

@ -0,0 +1,41 @@
// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10F11F12 PScScrPse
*
*
* ` 1 2 3 4 5 6 7 8 9 0 - = Backsp / * -
*
* Tab Q W E R T Y U I O P [ ] \ 7 8 9
*
* Caps A S D F G H J K L ; ' Enter 4 5 6
*
* Shift Z X C V B N M , . / Shift | 1 2 3 |
*
* CtrlGUI Alt Alt GUIMenuCtrl 0 0 .
*
*/
[0] = LAYOUT_all(
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_SCRL, KC_PAUS,
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_BSPC, KC_PSLS, KC_PAST, KC_PMNS,
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_P7, KC_P8, KC_P9,
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, KC_ENT, KC_P4, KC_P5, KC_P6,
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, MO(1), KC_P1, KC_P2, KC_P3,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_P0, KC_P0, KC_PDOT
),
[1] = LAYOUT_all(
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,
QK_BOOT, 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, 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, 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_UP, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT
)
};

View file

@ -0,0 +1,13 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define VIAL_KEYBOARD_UID {0xBE, 0xF5, 0xDB, 0xD4, 0xA3, 0x2A, 0xAC, 0xDE}
#define VIAL_UNLOCK_COMBO_ROWS { 2, 0 }
#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
#define VIAL_TAP_DANCE_ENTRIES 10
#define VIAL_COMBO_ENTRIES 15
#define VIAL_KEY_OVERRIDE_ENTRIES 10

View file

@ -0,0 +1,41 @@
// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
*
* Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10F11F12 PScScrPse
*
*
* ` 1 2 3 4 5 6 7 8 9 0 - = Backsp / * -
*
* Tab Q W E R T Y U I O P [ ] \ 7 8 9
*
* Caps A S D F G H J K L ; ' Enter 4 5 6
*
* Shift Z X C V B N M , . / Shift | 1 2 3 |
*
* CtrlGUI Alt Alt GUIMenuCtrl 0 0 .
*
*/
[0] = LAYOUT_all(
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_SCRL, KC_PAUS,
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_BSPC, KC_PSLS, KC_PAST, KC_PMNS,
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_P7, KC_P8, KC_P9,
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, KC_ENT, KC_P4, KC_P5, KC_P6,
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, MO(1), KC_P1, KC_P2, KC_P3,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_P0, KC_P0, KC_PDOT
),
[1] = LAYOUT_all(
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,
QK_BOOT, 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, 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, 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_UP, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT
)
};

View file

@ -0,0 +1,2 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes

View file

@ -0,0 +1,296 @@
{
"matrix": {
"rows": 6,
"cols": 18
},
"layouts": {
"labels": [
"Split Backspace",
"ISO Enter",
"Split Left Shift",
"Split Right Shift",
"Numpad 00",
["Bottom Row", "7U", "6.25U", "WKL"]
],
"keymap": [
[
{
"x": 2.5
},
"0,0",
{
"x": 1
},
"0,2",
"0,3",
"0,4",
"0,5",
{
"x": 0.5
},
"0,6",
"0,7",
"0,8",
"0,9",
{
"x": 0.5
},
"0,10",
"0,11",
"0,12",
"0,13",
{
"x": 0.25
},
"0,15",
"0,16",
"0,17"
],
[
{
"y": 0.25,
"x": 2.5
},
"1,0",
"1,1",
"1,2",
"1,3",
"1,4",
"1,5",
"1,6",
"1,7",
"1,8",
"1,9",
"1,10",
"1,11",
"1,12",
{
"w": 2
},
"1,14\n\n\n0,0",
{
"x": 0.25
},
"1,15",
"1,16",
"1,17",
{
"x": 0.25
},
"1,13\n\n\n0,1",
"1,14\n\n\n0,1"
],
[
{
"x": 2.5,
"w": 1.5
},
"2,0",
"2,1",
"2,2",
"2,3",
"2,4",
"2,5",
"2,6",
"2,7",
"2,8",
"2,9",
"2,10",
"2,11",
"2,12",
{
"w": 1.5
},
"2,13\n\n\n1,0",
{
"x": 0.25
},
"2,15",
"2,16",
"2,17",
{
"x": 1.75,
"w": 1.25,
"h": 2,
"w2": 1.5,
"h2": 1,
"x2": -0.25
},
"3,13\n\n\n1,1"
],
[
{
"x": 2.5,
"w": 1.75
},
"3,0",
"3,1",
"3,2",
"3,3",
"3,4",
"3,5",
"3,6",
"3,7",
"3,8",
"3,9",
"3,10",
"3,11",
{
"w": 2.25
},
"3,13\n\n\n1,0",
{
"x": 0.25
},
"3,15",
"3,16",
"3,17",
{
"x": 0.75
},
"3,12\n\n\n1,1"
],
[
{
"w": 1.25
},
"4,0\n\n\n2,1",
"4,1\n\n\n2,1",
{
"x": 0.25,
"w": 2.25
},
"4,0\n\n\n2,0",
"4,2",
"4,3",
"4,4",
"4,5",
"4,6",
"4,7",
"4,8",
"4,9",
"4,10",
"4,11",
{
"w": 2.75
},
"4,12\n\n\n3,0",
{
"x": 0.25
},
"4,15",
"4,16",
"4,17",
{
"x": 0.25,
"w": 1.75
},
"4,12\n\n\n3,1",
"4,13\n\n\n3,1"
],
[
{
"x": 2.5,
"w": 1.5
},
"5,0\n\n\n5,0",
"5,1\n\n\n5,0",
{
"w": 1.5
},
"5,2\n\n\n5,0",
{
"w": 7
},
"5,6\n\n\n5,0",
{
"w": 1.5
},
"5,11\n\n\n5,0",
"5,12\n\n\n5,0",
{
"w": 1.5
},
"5,13\n\n\n5,0",
{
"x": 0.25
},
"5,15\n\n\n4,0",
"5,16\n\n\n4,0",
"5,17",
{
"x": 0.25,
"w": 2
},
"5,15\n\n\n4,1"
],
[
{
"y": 0.25,
"x": 2.5,
"w": 1.25
},
"5,0\n\n\n5,1",
{
"w": 1.25
},
"5,1\n\n\n5,1",
{
"w": 1.25
},
"5,2\n\n\n5,1",
{
"w": 6.25
},
"5,6\n\n\n5,1",
{
"w": 1.25
},
"5,10\n\n\n5,1",
{
"w": 1.25
},
"5,11\n\n\n5,1",
{
"w": 1.25
},
"5,12\n\n\n5,1",
{
"w": 1.25
},
"5,13\n\n\n5,1"
],
[
{
"x": 2.5,
"w": 1.5
},
"5,0\n\n\n5,2",
{
"d": true
},
"5,1\n\n\n5,2",
{
"w": 1.5
},
"5,2\n\n\n5,2",
{
"w": 7
},
"5,6\n\n\n5,2",
{
"w": 1.5
},
"5,11\n\n\n5,2",
{
"d": true
},
"5,12\n\n\n5,2",
{
"w": 1.5
},
"5,13\n\n\n5,2"
]
]
}
}

View file

@ -0,0 +1,26 @@
# Hyperbolas
![hyperbolas](https://mint-tomato-83b.notion.site/image/attachment%3A80a8f4b8-9c85-41f6-8fe5-5ce0d04d3ee3%3A4k_2025v6_Hyperbolas16.jpg?table=block&id=2303f3e3-ee19-8076-9b95-e92cb368dec3&spaceId=41a0dc7a-fdbe-4a75-8b60-e3a45cfce97f&width=2000&userId=&cache=v2)
TKL project from HLB with 8K pcb layout compatibility.
* Keyboard Maintainer: [H3lli0n](https://github.com/H3lli0n)
* Hardware Supported: HLB Hyperbolas
Make example for this keyboard (after setting up your build environment):
make hlb/hyperbolas/hyp-s:default
Flashing example for this keyboard:
make hlb/hyperbolas/hyp-s:default:flash
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).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard.
* **Physical reset button**: Press 2 times the physical reset button.
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.

View file

@ -0,0 +1,21 @@
/*
* 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
#define WS2812_EXTERNAL_PULLUP
#define RGBLIGHT_LAYERS
#define RGBLIGHT_LAYER_BLINK
#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF

View file

@ -0,0 +1,320 @@
{
"manufacturer": "HLB",
"keyboard_name": "PoorKoi",
"maintainer": "H3lli0n",
"bootloader": "stm32-dfu",
"diode_direction": "COL2ROW",
"encoder": {
"rotary": [
{"pin_a": "A2", "pin_b": "A1", "resolution": 2}
]
},
"features": {
"bootmagic": true,
"extrakey": true,
"key_lock": true,
"mousekey": true,
"encoder": false,
"nkro": true,
"rgblight": true
},
"matrix_pins": {
"cols": ["B2", "A5", "A4", "A3", "F1", "F0", "C15", "C14", "C13", "B9", "B8", "B7", "A15", "B3"],
"rows": ["B14", "A9", "B6", "B5", "B4"]
},
"processor": "STM32F072",
"rgblight": {
"animations": {
"alternating": true,
"breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
"rgb_test": true,
"snake": true,
"static_gradient": true,
"twinkle": true
},
"led_count": 17,
"driver": "ws2812"
},
"usb": {
"device_version": "0.0.5",
"pid": "0x0014",
"vid": "0x4444"
},
"ws2812": {
"pin": "A8"
},
"layout_aliases": {
"LAYOUT_60_tsangan_hhkb": "LAYOUT_60_ansi_tsangan_split_bs_rshift"
},
"layouts": {
"LAYOUT_60_hhkb": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
{"label": "~", "matrix": [2, 13], "x": 14, "y": 0},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 2, "w": 2.25},
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [4, 13], "x": 14, "y": 3},
{"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"label": "Alt", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [4, 11], "x": 12.5, "y": 4}
]
},
"LAYOUT_60_iso_tsangan": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "Backspace", "matrix": [2, 13], "x": 13, "y": 0, "w": 2},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2},
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3},
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"label": "Alt", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [4, 11], "x": 12.5, "y": 4},
{"label": "Ctrl", "matrix": [4, 12], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_ansi_tsangan_split_bs_rshift": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
{"label": "~", "matrix": [2, 13], "x": 14, "y": 0},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 2, "w": 2.25},
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [4, 13], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"label": "Alt", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [4, 11], "x": 12.5, "y": 4},
{"label": "Ctrl", "matrix": [4, 12], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_all": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
{"label": "Backspace", "matrix": [2, 13], "x": 14, "y": 0},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "NUHS", "matrix": [2, 12], "x": 12.75, "y": 2},
{"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2, "w": 1.25},
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"label": "NUBS", "matrix": [3, 1], "x": 1.25, "y": 3},
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [4, 13], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [4, 4], "x": 4, "y": 4, "w": 3},
{"label": "Space", "matrix": [4, 6], "x": 7, "y": 4},
{"label": "Space", "matrix": [4, 8], "x": 8, "y": 4, "w": 3},
{"label": "Alt", "matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [4, 11], "x": 12.5, "y": 4},
{"label": "Ctrl", "matrix": [4, 12], "x": 13.5, "y": 4, "w": 1.5}
]
}
}
}

View file

@ -0,0 +1,61 @@
/*
Copyright 2024 HLB
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
#include "poorkoi.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// main layer
[_BASE] = LAYOUT_all(
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_BSPC,
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_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, KC_ENT,
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, MO(1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
// basic function layer
[_FN] = LAYOUT_all(
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_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_VOLU, KC_TRNS, KC_TRNS,
KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_VOLD, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_MUTE, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS),
// rgb/media layer
[_MEDIA] = LAYOUT_all(
KC_TRNS, KC_MPRV, KC_MNXT, KC_MPLY, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, QK_BOOT, 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),
// gaming layer
[_GAME] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
// mac
[_MAC] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, 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, 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_LALT, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_RALT, KC_TRNS)
};

View file

@ -0,0 +1,13 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define VIAL_KEYBOARD_UID {0xE8, 0x87, 0xFD, 0x48, 0x56, 0xCB, 0xA9, 0x09}
#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
#define VIAL_TAP_DANCE_ENTRIES 10
#define VIAL_COMBO_ENTRIES 15
#define VIAL_KEY_OVERRIDE_ENTRIES 10

View file

@ -0,0 +1,60 @@
/*
Copyright 2024 HLB
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
#include "poorkoi.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// main layer
[_BASE] = LAYOUT_all(
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_BSPC,
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_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, KC_ENT,
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, MO(1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
// basic function layer
[_FN] = LAYOUT_all(
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_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_VOLU, KC_TRNS, KC_TRNS,
KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_VOLD, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_MUTE, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS),
// rgb/media layer
[_MEDIA] = LAYOUT_all(
KC_TRNS, KC_MPRV, KC_MNXT, KC_MPLY, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, QK_BOOT, 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),
// gaming layer
[_GAME] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
// mac
[_MAC] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, 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, 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_LALT, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_RALT, KC_TRNS)
};

View file

@ -0,0 +1,2 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes

View file

@ -0,0 +1,282 @@
{
"lighting": "qmk_rgblight",
"customKeycodes": [
{"name": "LAY_INDIC_RGB",
"title": "Layer indicator on capslock LED",
"shortName": "L_INDIC"
}
],
"matrix": {
"rows": 5,
"cols": 14
},
"layouts": {
"labels":[
"Split Backspace",
"ISO Enter",
"Split Left Shift",
"Split Spacebar",
[
"Bottom Row",
"WK",
"WKL",
"HHKB"
]
],
"keymap": [
[
{
"x": 15.5
},
"0,13\n\n\n0,1",
"2,13\n\n\n0,1"
],
[
{
"y": 0.25,
"x": 2.5
},
"0,0",
"0,1",
"0,2",
"0,3",
"0,4",
"0,5",
"0,6",
"0,7",
"0,8",
"0,9",
"0,10",
"0,11",
"0,12",
{
"fa": [
0,
0,
0,
1
],
"w": 2
},
"2,13\n\n\n0,0"
],
[
{
"x": 2.5,
"w": 1.5
},
"1,0",
"1,1",
"1,2",
"1,3",
"1,4",
"1,5",
"1,6",
"1,7",
"1,8",
"1,9",
"1,10",
"1,11",
"1,12",
{
"f": 3,
"w": 1.5
},
"1,13\n\n\n1,0",
{
"x": 1.25,
"f": 3,
"w": 1.25,
"h": 2,
"w2": 1.5,
"h2": 1,
"x2": -0.25
},
"3,13\n\n\n1,1"
],
[
{
"x": 2.5,
"w": 1.75
},
"2,0",
"2,1",
"2,2",
"2,3",
"2,4",
"2,5",
"2,6",
"2,7",
"2,8",
"2,9",
"2,10",
"2,11",
{
"f": 3,
"w": 2.25
},
"3,13\n\n\n1,0",
{
"x": 0.25,
"f": 3
},
"2,12\n\n\n1,1"
],
[
{
"f": 3,
"w": 1.25
},
"3,0\n\n\n2,1",
{
"f": 3
},
"3,1\n\n\n2,1",
{
"x": 0.25,
"f": 3,
"w": 2.25
},
"3,0\n\n\n2,0",
"3,2",
"3,3",
"3,4",
"3,5",
"3,6",
"3,7",
"3,8",
"3,9",
"3,10",
"3,11",
{
"w": 1.75
},
"3,12",
"4,13"
],
[
{
"x": 2.5,
"f": 3,
"w": 1.5
},
"4,0\n\n\n4,0",
{
"f": 3
},
"4,1\n\n\n4,0",
{
"f": 3,
"w": 1.5
},
"4,2\n\n\n4,0",
{
"f": 3,
"w": 7
},
"4,6\n\n\n3,0",
{
"f": 3,
"w": 1.5
},
"4,10\n\n\n4,0",
{
"f": 3
},
"4,11\n\n\n4,0",
{
"f": 3,
"w": 1.5
},
"4,12\n\n\n4,0"
],
[
{
"y": 0.25,
"x": 2.5,
"f": 3,
"w": 1.5
},
"4,0\n\n\n4,1",
{
"f": 3,
"d": true
},
"4,1\n\n\n4,1",
{
"f": 3,
"w": 1.5
},
"4,2\n\n\n4,1",
{
"x": 7,
"f": 3,
"w": 1.5
},
"4,10\n\n\n4,1",
{
"f": 3,
"d": true
},
"4,11\n\n\n4,1",
{
"f": 3,
"w": 1.5
},
"4,12\n\n\n4,1"
],
[
{
"x": 2.5,
"f": 3,
"w": 1.5,
"d": true
},
"4,0\n\n\n4,2",
{
"f": 3
},
"4,1\n\n\n4,2",
{
"f": 3,
"w": 1.5
},
"4,2\n\n\n4,2",
{
"x": 7,
"f": 3,
"w": 1.5
},
"4,10\n\n\n4,2",
{
"f": 3
},
"4,11\n\n\n4,2",
{
"f": 3,
"w": 1.5,
"d": true
},
"4,12\n\n\n4,2"
],
[
{
"y": 0.5,
"x": 6.5,
"f": 3,
"w": 3
},
"4,4\n\n\n3,1",
{
"f": 3
},
"4,6\n\n\n3,1",
{
"f": 3,
"w": 3
},
"4,8\n\n\n3,1"
]
]
}
}

View file

@ -0,0 +1,28 @@
# Matrix Diagram for PoorKoi based on 4pplet Waffling60 Rev E Solder
```
┌───────┐
2u Backspace │2D │
└───────┘
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │2D │
├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌─────┐
│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ │ │
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐3D │
│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │3D │ │2C │ │
├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ └───┴────┘
│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │4D │ ISO Enter
├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬────┬┴───┤
│40 │41 │42 │44 │46 │48 │49 │4A │4B │4C │
└────┴────┴────┴────────┴────┴──────────┴────┴────┴────┴────┘
┌────────┐
│30 │ 2.25u LShift
└────────┘
┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
│40 │41 │42 │46 │4A │4B │4C │ Tsangan/WKL
└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
┌─────┬───┬─────┬──────────┬──────┬─────────┬─────┬───┬─────┐
│40 │41 │42 │44 │46 │48 │4A │4B │4C │ 3U split space
└─────┴───┴─────┴──────────┴──────┴─────────┴─────┴───┴─────┘
```

View file

@ -0,0 +1,140 @@
/*
* 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 "poorkoi.h"
typedef union {
uint32_t raw;
struct {
bool rgb_layer_change :1;
};
} user_config_t;
/* User preference */
user_config_t user_config;
/* Feature toggle blink duration */
const uint16_t rgbBlinkDuration = 300;
/* RGB Layers definition*/
const rgblight_segment_t PROGMEM my_base_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{16, 1, HSV_OFF}
);
const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{16, 1, LAYER_FN_COLOR}
);
const rgblight_segment_t PROGMEM my_media_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{16, 1, LAYER_MEDIA_COLOR}
);
const rgblight_segment_t PROGMEM my_gaming_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{16, 1, LAYER_GAMING_COLOR}
);
const rgblight_segment_t PROGMEM my_mac_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{16, 1, LAYER_MAC_COLOR}
);
const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{16, 1, CAPS_LOCK_COLOR}
);
const rgblight_segment_t PROGMEM my_indicator_on_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{16, 1, LAYER_INDIC_COLOR},
{9, 5, LAYER_INDIC_COLOR}
);
const rgblight_segment_t PROGMEM my_indicator_off_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{16, 1, LAYER_INDIC_COLOR},
{2, 5, LAYER_INDIC_COLOR}
);
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
my_base_layer,
my_fn_layer,
my_media_layer,
my_gaming_layer,
my_mac_layer,
my_capslock_layer,
my_indicator_on_layer,
my_indicator_off_layer
);
void eeconfig_init_user(void) { // EEPROM is getting reset!
user_config.raw = 0;
user_config.rgb_layer_change = false; // We want this enabled by default
eeconfig_update_user(user_config.raw); // Write default value to EEPROM now
// use the non noeeprom versions, to write these values to EEPROM too
rgblight_enable(); // Enable RGB by default
rgblight_sethsv(HSV_PURPLE); // Set it to PURPLE by default
rgblight_mode(1); // set to solid by default
}
void keyboard_pre_init_kb(void) {
rgblight_set_effect_range(0, RGBLIGHT_LED_COUNT - 1);
keyboard_pre_init_user();
}
void keyboard_post_init_user(void) {
// Enable the LED layers
rgblight_layers = my_rgb_layers;
// Read the user config from EEPROM
user_config.raw = eeconfig_read_user();
}
/* Updating LED located under capslock */
bool led_update_kb(led_t led_state) {
rgblight_set_layer_state(5, host_keyboard_led_state().caps_lock);
return true;
}
layer_state_t default_layer_state_set_user(layer_state_t state) {
rgblight_set_layer_state(_BASE, layer_state_cmp(state, _BASE));
return state;
}
/* Use capslock led for layer indicator */
layer_state_t layer_state_set_user(layer_state_t state) {
rgblight_set_layer_state(_BASE, layer_state_cmp(state, _BASE));
if(user_config.rgb_layer_change){
rgblight_set_layer_state(_FN, layer_state_cmp(state, _FN));
rgblight_set_layer_state(_MEDIA, layer_state_cmp(state, _MEDIA));
rgblight_set_layer_state(_GAME, layer_state_cmp(state, _GAME));
rgblight_set_layer_state(_MAC, layer_state_cmp(state, _MAC));
}
return state;
}
/* Update user preference on layer indicator*/
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case LAY_INDIC_RGB:
if (record->event.pressed) {
user_config.rgb_layer_change ^= 1; // Toggles the status
eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
if (user_config.rgb_layer_change) { // if layer state indication is enabled,
rgblight_blink_layer(6, rgbBlinkDuration);
}else{
rgblight_blink_layer(7, rgbBlinkDuration);
}
layer_state_set(layer_state); // then immediately update the layer color
}
return false; // Skip all further processing of this key
default:
return true; // Process all other keycodes normally
}
}

View file

@ -0,0 +1,38 @@
/*
* 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 "quantum.h"
#define CAPS_LOCK_ENABLE true
#define CAPS_LOCK_COLOR HSV_GREEN
#define LAYER_FN_COLOR HSV_PURPLE
#define LAYER_MEDIA_COLOR HSV_ORANGE
#define LAYER_GAMING_COLOR HSV_CYAN
#define LAYER_MAC_COLOR HSV_RED
#define LAYER_INDIC_COLOR HSV_WHITE
enum layers {
_BASE = 0,
_FN,
_MEDIA,
_GAME,
_MAC,
};
enum hlbKeycodes {
LAY_INDIC_RGB = QK_KB_0,
};

View file

@ -0,0 +1,25 @@
# HLB PoorKoi
60% HLB PoorKoi's pcb is based on 4pplet/waffling60/rev_e (https://github.com/4pplet/waffling60).
* PCB features tsangan layout with ansi/iso layouts as well as split spacebar, split left/right shift, stepped capslock.
* PCB feature dedicated graphic art and flex cut were removed.
Regarding source code we added extra features with dedicated custom keycode **L_INDIC**:
* LED indicator and capslock indicator are managed through lightning layers
* Layer indicator is shown even if rgb underglow is off
* Added a led indicator when custom keycode L_INDIC is on/off
* Blink on top when off
* Blink on bottom when on
Make example for this keyboard (after setting up your build environment):
make hlb/poorkoi: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).
How to enter bootloader (DFU):
* Short the reset-header (labled BL/RESET) on the back of the PCB for about 2 seconds for the keyboard to enter DFU. When in DFU, it's ready to flash the firmware. If using a APM MCU it will not automatically reset after flash. Simply short the reset-header for a very short time to just reset the PCB, alternatively unplug and repluck the USB-cable to the keyboard.
Alternative option if the firmware is already pre-flashed:
* Unplug your keyboard, hold down the Spacebar and B at the same time, plug in your keyboard and wait a second before releasing the keys. The keyboard will enter DFU and is ready to flash the firmware.

View file

@ -0,0 +1,2 @@
# Wildcard to allow APM32 MCU
DFU_SUFFIX_ARGS = -p FFFF -v FFFF

View file

@ -0,0 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define VIAL_KEYBOARD_UID {0x97, 0xF0, 0xDF, 0xEC, 0x29, 0x72, 0x1E, 0x31}
#define VIAL_UNLOCK_COMBO_ROWS {0,9}
#define VIAL_UNLOCK_COMBO_COLS {0,5}

View file

@ -0,0 +1,70 @@
// Copyright 2025 Keebio (@keebio)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum custom_layer {
_MAIN,
_FN1,
_FN2,
_FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_HOME, KC_END, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
KC_LGUI, TL_LOWR, KC_ENT, KC_SPC, TL_UPPR, KC_RALT
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
),
[_FN1] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PGUP,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_GRV, _______, KC_UP, _______, QK_BOOT, _______, _______, KC_P7, KC_P8, KC_P9, KC_P0, KC_PGDN,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_PIPE,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
RGB_MOD, _______, _______, _______, _______, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_P1, KC_P2, KC_P3, KC_MINS, _______,
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
_______, _______, KC_DEL, KC_DEL, _______, KC_P0
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
),
[_FN2] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
RGB_TOG, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, QK_BOOT,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
RGB_MOD, KC_MPRV, KC_MNXT, KC_VOLU, KC_PGUP, KC_UNDS, KC_EQL, KC_HOME, RGB_HUI, RGB_SAI, RGB_VAI, KC_BSLS,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
KC_MUTE, KC_MSTP, KC_MPLY, KC_VOLD, KC_PGDN, KC_MINS, KC_LPRN, _______, KC_PLUS, KC_END, RGB_HUD, RGB_SAD, RGB_VAD, _______,
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
),
[_FN3] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
EE_CLR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EE_CLR,
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
)
};

View file

@ -0,0 +1,3 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
VIALRGB_ENABLE = yes

View file

@ -0,0 +1,66 @@
{
"lighting": "vialrgb",
"matrix": {"rows": 10, "cols": 6},
"layouts": {
"keymap": [
[ {"x": 3}, "0,3", {"x": 8}, "5,3" ],
[
{"y": -0.875, "x": 2},
"0,2",
{"x": 1},
"0,4",
{"x": 6},
"5,4",
{"x": 1},
"5,2"
],
[ {"y": -0.875, "x": 5}, "0,5", {"x": 4}, "5,5" ],
[ {"y": -0.875}, "0,0", "0,1", {"x": 12}, "5,1", "5,0" ],
[ {"y": -0.385, "x": 3}, "1,3", {"x": 8}, "6,3" ],
[
{"y": -0.875, "x": 2},
"1,2",
{"x": 1},
"1,4",
{"x": 6},
"6,4",
{"x": 1},
"6,2"
],
[ {"y": -0.875, "x": 5}, "1,5", {"x": 4}, "6,5" ],
[ {"y": -0.875}, "1,0", "1,1", {"x": 12}, "6,1", "6,0" ],
[ {"y": -0.385, "x": 3}, "2,3", {"x": 8}, "7,3" ],
[
{"y": -0.875, "x": 2},
"2,2",
{"x": 1},
"2,4",
{"x": 6},
"7,4",
{"x": 1},
"7,2"
],
[ {"y": -0.875, "x": 5}, "2,5", {"x": 4}, "7,5" ],
[ {"y": -0.875}, "2,0", "2,1", {"x": 12}, "7,1", "7,0" ],
[ {"y": -0.385, "x": 3}, "3,3", {"x": 8}, "8,3" ],
[
{"y": -0.875, "x": 2},
"3,2",
{"x": 1},
"3,4",
{"x": 6},
"8,4",
{"x": 1},
"8,2"
],
[ {"y": -0.875, "x": 5}, "3,5", {"x": 4}, "8,5" ],
[ {"y": -0.875}, "3,0", "3,1", {"x": 12}, "8,1", "8,0" ],
[ {"y": -0.125, "x": 3.5}, "4,2", {"x": 7}, "9,2" ],
[ {"y": -0.875, "x": 4.5}, "4,3", {"x": 5}, "9,3" ],
[ {"r": 30, "rx": 8, "y": 4.13, "x": 0.6}, "4,5" ],
[ {"x": 0.6}, "4,4" ],
[ {"r": -30, "y": -2, "x": -1.6}, "9,5" ],
[ {"x": -1.6}, "9,4" ]
]
}
}

View file

@ -0,0 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define VIAL_KEYBOARD_UID {0x74, 0x8F, 0x33, 0x91, 0x5F, 0x20, 0x08, 0x70}
#define VIAL_UNLOCK_COMBO_ROWS { 0, 1 }
#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }

View file

@ -0,0 +1,164 @@
/* Based on Keychron Q9 Vial by Keychron (https://www.keychron.com)
*
* 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
enum layers{
MAC_BASE,
WIN_BASE,
MAC_FN1,
WIN_FN1,
FN2,
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
#define MO_MAC MO(MAC_FN1)
#define MO_WIN MO(WIN_FN1)
#define MO_FN2 MO(FN2)
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// +------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------------+ ********
// | | | | | | | | | | | | | | | * *
// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | * MUTE *
// | | | | | | | | | | | | | | | * *
// +------------+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+------------+ ********
// | | | | | | | | | | | | | |
// | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | +--------+
// | | | | | | | | | | | | | | | |
// +---------------+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---------+--------+ | HOME |
// | | | | | | | | | | | | | | | |
// | SHIFT | Z | X | C | V | B | N | M | , | . | / | SHIFT | UP | +--------+
// | | | | | | | | | | | | | |
// +----------+--------+-+------+---+----+-----+--+--------+--------+--------+--------+-----+--+-----+--+-----+--+-----+--------+--------+--------+
// | | | | | | | | | | | | |
// | CNTL | OPT | CMD | MAC_FN | SPC | SPC | CMD | MAC_FN | FN2 | LEFT | DOWN | RGHT |
// | | | | | | | | | | | | |
// +----------+----------+----------+----------+--------------------+-----------------------+--------+--------+--------+--------+--------+--------+
[MAC_BASE] = LAYOUT_54_ansi(
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_MUTE,
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_HOME,
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_LOPT , KC_LCMD, MO_MAC , KC_SPC , KC_SPC , KC_RCMD, MO_MAC , MO_FN2 , KC_LEFT, KC_DOWN ,KC_RGHT
),
// +------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------------+ ********
// | | | | | | | | | | | | | | | * *
// | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | * MUTE *
// | | | | | | | | | | | | | | | * *
// +------------+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+------------+ ********
// | | | | | | | | | | | | | |
// | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | +--------+
// | | | | | | | | | | | | | | | |
// +---------------+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---------+--------+ | HOME |
// | | | | | | | | | | | | | | | |
// | SHIFT | Z | X | C | V | B | N | M | , | . | / | SHIFT | UP | +--------+
// | | | | | | | | | | | | | |
// +----------+--------+-+------+---+----+-----+--+--------+--------+--------+--------+-----+--+-----+--+-----+--+-----+--------+--------+--------+
// | | | | | | | | | | | | |
// | CNTL | WIN | ALT | WIN_FN | SPC | SPC | ALT | WIN_FN | FN2 | LEFT | DOWN | RGHT |
// | | | | | | | | | | | | |
// +----------+----------+----------+----------+--------------------+-----------------------+--------+--------+--------+--------+--------+--------+
[WIN_BASE] = LAYOUT_54_ansi(
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_MUTE,
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_HOME,
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_LWIN , KC_LALT, MO_WIN , KC_SPC , KC_SPC , KC_RALT, MO_WIN , MO_FN2 , KC_LEFT, KC_DOWN, KC_RGHT
),
// +------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------------+ ********
// | | | | | | | | | | | | | | | * *
// | ` | SCR- | SCR+ | MCTL | LPAD | BRI- | BRI+ | PREV | PLAY | NEXT | VOL- | VOL+ | | | * RGBTGL *
// | | | | | | | | | | | | | | | * *
// +------------+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+------------+ ********
// | | | | | | | | | | | | | |
// | RGBTGL | RMNEXT | BRI+ | HUE+ | SAT+ | SPD+ | | | | | | | | +--------+
// | | | | | | | | | | | | | | | |
// +---------------+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---------+--------+ | |
// | | | | | | | | | | | | | | | |
// | | RMPREV | BRI- | HEU- | SAT- | SPD- | NKTGL | | | | | | | +--------+
// | | | | | | | | | | | | | |
// +----------+--------+-+------+---+----+-----+--+--------+--------+--------+--------+-----+--+-----+--+-----+--+-----+--------+--------+--------+
// | | | | | | | | | | | | |
// | | | | | | | | | | | | |
// | | | | | | | | | | | | |
// +----------+----------+----------+----------+--------------------+-----------------------+--------+--------+--------+--------+--------+--------+
[MAC_FN1] = LAYOUT_54_ansi(
KC_GRV , KC_BRID , KC_BRIU, KC_MCTL, KC_LPAD, RM_VALD, RM_VALU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______ , RM_TOGG,
RM_TOGG , RM_NEXT , RM_VALU, RM_HUEU, RM_SATU ,RM_SPDU, _______, _______, _______, _______, _______, _______, _______ , _______,
_______ , RM_PREV , RM_VALD, RM_HUED, RM_SATD, RM_SPDD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______ , _______ , _______, _______, _______ , _______ , _______, _______, _______, _______, _______, _______
),
// +------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------------+ ********
// | | | | | | | | | | | | | | | * *
// | ` | SCR- | SCR+ | TASK | FILE | BRI- | BRI+ | PREV | PLAY | NEXT | VOL- | VOL+ | | | * RGBTGL *
// | | | | | | | | | | | | | | | * *
// +------------+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+------------+ ********
// | | | | | | | | | | | | | |
// | RGBTGL | RMNEXT | BRI+ | HUE+ | SAT+ | SPD+ | | | | | | | | +--------+
// | | | | | | | | | | | | | | | |
// +---------------+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---------+--------+ | |
// | | | | | | | | | | | | | | | |
// | | RMPREV | BRI- | HEU- | SAT- | SPD- | NKTGL | | | | | | | +--------+
// | | | | | | | | | | | | | |
// +----------+--------+-+------+---+----+-----+--+--------+--------+--------+--------+-----+--+-----+--+-----+--+-----+--------+--------+--------+
// | | | | | | | | | | | | |
// | | | | | | | | | | | | |
// | | | | | | | | | | | | |
// +----------+----------+----------+----------+--------------------+-----------------------+--------+--------+--------+--------+--------+--------+
[WIN_FN1] = LAYOUT_54_ansi(
KC_GRV , KC_BRID , KC_BRIU, KC_TASK, KC_FLXP, RM_VALD, RM_VALU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______ , RM_TOGG,
RM_TOGG , RM_NEXT , RM_VALU, RM_HUEU, RM_SATU, RM_SPDU, _______, _______, _______, _______, _______, _______, _______ , _______,
_______ , RM_PREV , RM_VALD, RM_HUED, RM_SATD, RM_SPDD, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______ , _______ , _______, _______, _______ , _______ , _______, _______, _______, _______, _______, _______
),
// +------------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+------------+ ********
// | | | | | | | | | | | | | | | * *
// | ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | BACK | * *
// | | | | | | | | | | | | | | | * *
// +------------+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+--+-----+------------+ ********
// | | | | | | | | | | | | | |
// | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | +--------+
// | | | | | | | | | | | | | | | |
// +---------------+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---+----+---------+--------+ | |
// | | | | | | | | | | | | | | | |
// | | | | | | | | | | | | | | +--------+
// | | | | | | | | | | | | | |
// +----------+--------+-+------+---+----+-----+--+--------+--------+--------+--------+-----+--+-----+--+-----+--+-----+--------+--------+--------+
// | | | | | | | | | | | | |
// | | | | | | | | | | | | |
// | | | | | | | | | | | | |
// +----------+----------+----------+----------+--------------------+-----------------------+--------+--------+--------+--------+--------+--------+
[FN2] = LAYOUT_54_ansi(
KC_TILD , 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_BSPC , _______,
KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______, _______ , _______,
_______ , _______ , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______ , _______ , _______, _______, _______ , _______ , _______, _______, _______, _______, _______, _______
)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[MAC_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[WIN_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[MAC_FN1] = {ENCODER_CCW_CW(RM_VALD, RM_VALU)},
[WIN_FN1] = {ENCODER_CCW_CW(RM_VALD, RM_VALU)},
[FN2] = {ENCODER_CCW_CW(RM_HUED, RM_HUEU)}
};
#endif

View file

@ -0,0 +1,5 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
VIALRGB_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View file

@ -0,0 +1,185 @@
{
"name": "Keychron Q9 Plus",
"lighting": "vialrgb",
"matrix": {
"rows": 4,
"cols": 15
},
"customKeycodes": [
{
"name": "Mission Control",
"title": "Mission Control in macOS",
"shortName": "Mission Control"
},
{
"name": "Launch Pad",
"title": "Launch Pad in macOS",
"shortName": "Launch Pad"
},
{
"name": "Left Option",
"title": "Left Option in macOS",
"shortName": "Left Option"
},
{
"name": "Right Option",
"title": "Right Option in macOS",
"shortName": "Right Option"
},
{
"name": "Left Cmd",
"title": "Left Command in macOS",
"shortName": "Left Command"
},
{
"name": "Right Cmd",
"title": "Right Command in macOS",
"shortName": "Right Command"
},
{
"name": "Task View",
"title": "Task View in windows",
"shortName": "Task View"
},
{
"name": "File Explorer",
"title": "File Explorer in windows",
"shortName": "File Explorer"
}
],
"layouts": {
"keymap": [
[
{
"x": 15.25,
"c": "#aaaaaa"
},
"0,14",
{
"x": 0.25
},
"0,0\n\n\n\n\n\n\n\n\ne",
"0,1\n\n\n\n\n\n\n\n\ne"
],
[
{
"w": 1.5
},
"0, 0",
"0, 1",
"0, 2",
"0, 3",
"0, 4",
"0, 5",
"0, 6",
"0, 7",
"0, 8",
"0, 9",
"0, 10",
"0, 11",
"0, 12",
{
"w": 1.5
},
"0, 13",
{
"x": 0.25,
"c": "#000000",
"t": "#cccccc"
},
"0, 14"
],
[
{
"c": "#cccccc",
"t": "#000000",
"w": 1.75
},
"1, 0",
"1, 1",
"1, 2",
"1, 3",
"1, 4",
"1, 5",
"1, 6",
"1, 7",
"1, 8",
"1, 9",
"1, 10",
"1, 11",
{
"w": 2.25
},
"1, 13"
],
[
{
"y": -0.75,
"x": 15.25
},
"1, 14"
],
[
{
"y": -0.25,
"w": 2.25
},
"2, 0",
"2, 2",
"2, 3",
"2, 4",
"2, 5",
"2, 6",
"2, 7",
"2, 8",
"2, 9",
"2, 10",
"2, 11",
{
"w": 1.75
},
"2, 13",
{
"c": "#bbbbbb"
},
"2, 14"
],
[
{
"c": "#cccccc",
"w": 1.25
},
"3, 0",
{
"w": 1.25
},
"3, 1",
{
"w": 1.25
},
"3, 2",
{
"w": 1.25
},
"3, 3",
{
"w": 2.25
},
"3, 6",
{
"w": 2.75
},
"3, 9",
"3, 10",
"3, 11",
"3, 12",
{
"c": "#bbbbbb"
},
"3, 13",
"3, 14",
"1, 12"
]
]
}
}

View file

@ -0,0 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define VIAL_KEYBOARD_UID {0x88, 0x8E, 0xA1, 0xC2, 0xC8, 0x7E, 0xAC, 0xEC}
#define VIAL_UNLOCK_COMBO_ROWS {0, 4}
#define VIAL_UNLOCK_COMBO_COLS {0, 14}

View file

@ -0,0 +1,37 @@
/* Copyright 2022 Ivan Gromov (@key10iq)
*
* 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_65_ansi_blocker_tsangan_split_bs(
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, 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_BSPC, KC_PGUP,
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_PGDN,
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, MO(1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_65_ansi_blocker_tsangan_split_bs(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
),
};

View file

@ -0,0 +1,6 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
LTO_ENABLE = yes
COMBO_ENABLE = no
MAGIC_ENABLE = no
MOUSEKEY_ENABLE = no

View file

@ -0,0 +1,125 @@
{
"name": "Aperture",
"vendorId": "0xEB69",
"productId": "0x6501",
"lighting": "none",
"matrix": {
"rows": 5,
"cols": 15
},
"layouts": {
"labels": [],
"keymap": [
[
"0,0",
"0,1",
"0,2",
"0,3",
"0,4",
"0,5",
"0,6",
"0,7",
"0,8",
"0,9",
"0,10",
"0,11",
"0,12",
"0,13",
"2,13",
"0,14"
],
[
{
"w": 1.5
},
"1,0",
"1,1",
"1,2",
"1,3",
"1,4",
"1,5",
"1,6",
"1,7",
"1,8",
"1,9",
"1,10",
"1,11",
"1,12",
{
"w": 1.5
},
"1,13",
"1,14"
],
[
{
"w": 1.75
},
"2,0",
"2,1",
"2,2",
"2,3",
"2,4",
"2,5",
"2,6",
"2,7",
"2,8",
"2,9",
"2,10",
"2,11",
{
"w": 2.25
},
"2,12",
"2,14"
],
[
{
"w": 2.25
},
"3,0",
"3,1",
"3,2",
"3,3",
"3,4",
"3,5",
"3,6",
"3,7",
"3,8",
"3,9",
"3,10",
{
"w": 1.75
},
"3,12",
"3,13",
"3,14"
],
[
{
"w": 1.5
},
"4,0",
"4,1",
{
"w": 1.5
},
"4,2",
{
"w": 7
},
"4,6",
{
"w": 1.5
},
"4,10",
{
"x": 0.5
},
"4,12",
"4,13",
"4,14"
]
]
}
}

View file

@ -0,0 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define VIAL_KEYBOARD_UID {0x1A, 0xF0, 0x59, 0xB1, 0xD9, 0x5B, 0x75, 0x30}
#define VIAL_UNLOCK_COMBO_ROWS {0, 4}
#define VIAL_UNLOCK_COMBO_COLS {0, 13}

View file

@ -0,0 +1,23 @@
// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
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_GRV, KC_BSPC,
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_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, MO(1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
),
[1] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
KC_TRNS, 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, 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, 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,6 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes
LTO_ENABLE = yes
COMBO_ENABLE = no
MAGIC_ENABLE = no
MOUSEKEY_ENABLE = no

View file

@ -0,0 +1,198 @@
{
"name": "Diablo",
"vendorId": "0xEB69",
"productId": "0x6003",
"lighting": "none",
"matrix": {
"rows": 5,
"cols": 14
},
"layouts": {
"labels": [
"Split Backspace",
"Split Right Shift",
[
"Bottom Row",
"Tsangan",
"WKL",
"HHKB"
]
],
"keymap": [
[
"0,0",
"0,1",
"0,2",
"0,3",
"0,4",
"0,5",
"0,6",
"0,7",
"0,8",
"0,9",
"0,10",
"0,11",
"0,12",
{
"w": 2
},
"0,13\n\n\n0,0",
{
"x": 1
},
"0,13\n\n\n0,1",
"2,13\n\n\n0,1"
],
[
{
"w": 1.5
},
"1,0",
"1,1",
"1,2",
"1,3",
"1,4",
"1,5",
"1,6",
"1,7",
"1,8",
"1,9",
"1,10",
"1,11",
"1,12",
{
"w": 1.5
},
"1,13"
],
[
{
"w": 1.75
},
"2,0",
"2,1",
"2,2",
"2,3",
"2,4",
"2,5",
"2,6",
"2,7",
"2,8",
"2,9",
"2,10",
"2,11",
{
"w": 2.25
},
"2,12"
],
[
{
"w": 2.25
},
"3,0",
"3,1",
"3,2",
"3,3",
"3,4",
"3,5",
"3,6",
"3,7",
"3,8",
"3,9",
"3,10",
{
"w": 2.75
},
"4,12\n\n\n1,0",
{
"x": 0.25,
"w": 1.75
},
"4,12\n\n\n1,1",
"3,13\n\n\n1,1"
],
[
{
"w": 1.5
},
"4,0\n\n\n2,0",
"4,1\n\n\n2,0",
{
"w": 1.5
},
"4,2\n\n\n2,0",
{
"w": 7
},
"4,6\n\n\n2,0",
{
"w": 1.5
},
"4,10\n\n\n2,0",
"4,11\n\n\n2,0",
{
"w": 1.5
},
"4,13\n\n\n2,0"
],
[
{
"y": 0.25,
"w": 1.5
},
"4,0\n\n\n2,1",
{
"d": true
},
"4,1\n\n\n2,1",
{
"w": 1.5
},
"4,2\n\n\n2,1",
{
"w": 7
},
"4,6\n\n\n2,1",
{
"w": 1.5
},
"4,10\n\n\n2,1",
{
"d": true
},
"4,11\n\n\n2,1",
{
"w": 1.5
},
"4,13\n\n\n2,1"
],
[
{
"w": 1.5,
"d": true
},
"4,0\n\n\n2,2",
"4,1\n\n\n2,2",
{
"w": 1.5
},
"4,2\n\n\n2,2",
{
"w": 7
},
"4,6\n\n\n2,2",
{
"w": 1.5
},
"4,10\n\n\n2,2",
"4,11\n\n\n2,2",
{
"w": 1.5,
"d": true
},
"4,13\n\n\n2,2"
]
]
}
}

View file

@ -0,0 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define VIAL_KEYBOARD_UID {0xE0, 0x4E, 0xB0, 0x23, 0x7D, 0x60, 0x4B, 0x5E}
#define VIAL_UNLOCK_COMBO_ROWS {0, 4}
#define VIAL_UNLOCK_COMBO_COLS {0, 13}

View file

@ -0,0 +1,22 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
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_GRV, KC_BSPC,
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_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, MO(1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
),
[1] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
KC_TRNS, 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, 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, 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,2 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes

View file

@ -0,0 +1,251 @@
{
"name": "kt60HS-T",
"vendorId": "0xEB69",
"productId": "0x6007",
"lighting": "none",
"matrix": {
"rows": 5,
"cols": 14
},
"layouts": {
"labels": [
"Split Backspace",
[
"Bottom Row",
"Tsangan",
"WKL",
"HHKB",
"10U"
]
],
"keymap": [
[
{
"c": "#777777"
},
"0,0",
{
"c": "#cccccc"
},
"0,1",
"0,2",
"0,3",
"0,4",
"0,5",
"0,6",
"0,7",
"0,8",
"0,9",
"0,10",
"0,11",
"0,12",
{
"c": "#aaaaaa",
"w": 2
},
"2,13\n\n\n0,0",
{
"x": 0.25,
"c": "#cccccc"
},
"0,13\n\n\n0,1",
"2,13\n\n\n0,1"
],
[
{
"c": "#aaaaaa",
"w": 1.5
},
"1,0",
{
"c": "#cccccc"
},
"1,1",
"1,2",
"1,3",
"1,4",
"1,5",
"1,6",
"1,7",
"1,8",
"1,9",
"1,10",
"1,11",
"1,12",
{
"w": 1.5
},
"1,13"
],
[
{
"c": "#aaaaaa",
"w": 1.75
},
"2,0",
{
"c": "#cccccc"
},
"2,1",
"2,2",
"2,3",
"2,4",
"2,5",
"2,6",
"2,7",
"2,8",
"2,9",
"2,10",
"2,11",
{
"c": "#777777",
"w": 2.25
},
"2,12"
],
[
{
"c": "#aaaaaa",
"w": 2.25
},
"3,0",
{
"c": "#cccccc"
},
"3,1",
"3,2",
"3,3",
"3,4",
"3,5",
"3,6",
"3,7",
"3,8",
"3,9",
"3,10",
{
"c": "#aaaaaa",
"w": 1.75
},
"4,12",
"3,13"
],
[
{
"w": 1.5
},
"4,0\n\n\n1,0",
"4,1\n\n\n1,0",
{
"w": 1.5
},
"4,2\n\n\n1,0",
{
"c": "#cccccc",
"w": 7
},
"4,6\n\n\n1,0",
{
"c": "#aaaaaa",
"w": 1.5
},
"4,10\n\n\n1,0",
"4,11\n\n\n1,0",
{
"w": 1.5
},
"4,13\n\n\n1,0"
],
[
{
"y": 0.25,
"w": 1.5
},
"4,0\n\n\n1,1",
{
"d": true
},
"4,1\n\n\n1,1",
{
"w": 1.5
},
"4,2\n\n\n1,1",
{
"c": "#cccccc",
"w": 7
},
"4,6\n\n\n1,1",
{
"c": "#aaaaaa",
"w": 1.5
},
"4,10\n\n\n1,1",
{
"d": true
},
"4,11\n\n\n1,1",
{
"w": 1.5
},
"4,13\n\n\n1,1"
],
[
{
"w": 1.5,
"d": true
},
"4,0\n\n\n1,2",
"4,1\n\n\n1,2",
{
"w": 1.5
},
"4,2\n\n\n1,2",
{
"c": "#cccccc",
"w": 7
},
"4,6\n\n\n1,2",
{
"c": "#aaaaaa",
"w": 1.5
},
"4,10\n\n\n1,2",
"4,11\n\n\n1,2",
{
"w": 1.5,
"d": true
},
"4,13\n\n\n1,2"
],
[
{
"w": 1.5
},
"4,0\n\n\n1,3",
"4,1\n\n\n1,3",
{
"w": 1.5,
"d": true
},
"4,2\n\n\n1,3",
{
"x": -1.5,
"c": "#cccccc",
"w": 10
},
"4,6\n\n\n1,3",
{
"x": -1.5,
"c": "#aaaaaa",
"w": 1.5,
"d": true
},
"4,10\n\n\n1,3",
"4,11\n\n\n1,3",
{
"w": 1.5
},
"4,13\n\n\n1,3"
]
]
}
}

View file

@ -0,0 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define VIAL_KEYBOARD_UID {0xF4, 0x18, 0x3E, 0x20, 0xB3, 0xC9, 0xA2, 0xCA}
#define VIAL_UNLOCK_COMBO_ROWS {0, 9}
#define VIAL_UNLOCK_COMBO_COLS {0, 10}

View file

@ -0,0 +1,24 @@
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
MO(1), 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_GRV, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
KC_ESC, 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, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_KP_9, KC_PPLS,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
),
[1] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};

View file

@ -0,0 +1,2 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes

View file

@ -0,0 +1,167 @@
{
"name": "Ortho Slayer",
"vendorId": "0xEB69",
"productId": "0x9001",
"lighting": "none",
"matrix": {
"rows": 10,
"cols": 11
},
"layouts": {
"keymap": [
[
"0,0",
"1,0",
"0,1",
"1,1",
"0,2",
"1,2",
"0,3",
"1,3",
"0,4",
"1,4",
"0,5",
"1,5",
"0,6",
"1,6",
{
"x": 0.25
},
"0,7",
"1,7",
"0,8",
{
"x": 0.25
},
"1,8",
"0,9",
"1,9",
"0,10"
],
[
"2,0",
"3,0",
"2,1",
"3,1",
"2,2",
"3,2",
"2,3",
"3,3",
"2,4",
"3,4",
"2,5",
"3,5",
"2,6",
"3,6",
{
"x": 0.25
},
"2,7",
"3,7",
"2,8",
{
"x": 0.25
},
"3,8",
"2,9",
"3,9",
{
"h": 2
},
"5,10"
],
[
"4,0",
"5,0",
"4,1",
"5,1",
"4,2",
"5,2",
"4,3",
"5,3",
"4,4",
"5,4",
"4,5",
"5,5",
"4,6",
"5,6",
{
"x": 3.5
},
"5,9",
"4,9",
"4,10"
],
[
{
"w": 2
},
"6,0",
"7,0",
"6,2",
"7,2",
"6,3",
"7,3",
"6,4",
"7,4",
"6,5",
"7,5",
"7,6",
{
"w": 2
},
"6,6",
{
"x": 1.25
},
"6,8",
{
"x": 1.25
},
"7,8",
"6,9",
"7,9",
{
"h": 2
},
"9,10"
],
[
{
"w": 1.25
},
"8,0",
"9,0",
{
"w": 1.25
},
"8,1",
{
"w": 7
},
"8,4",
{
"w": 1.25
},
"9,4",
"8,6",
{
"w": 1.25
},
"9,6",
{
"x": 0.25
},
"8,7",
"9,7",
"8,8",
{
"x": 0.25,
"w": 2
},
"9,8",
"8,10"
]
]
}
}

View file

@ -0,0 +1,65 @@
{
"keyboard_name": "Little Wing",
"manufacturer": "lazydesigners",
"url": "http://lazydesigners.cn",
"maintainer": "lazydesigners",
"usb": {
"vid": "0x4C44",
"pid": "0x0035",
"device_version": "0.0.1"
},
"processor": "STM32F072",
"bootloader": "stm32-dfu",
"diode_direction": "COL2ROW",
"matrix_pins": {
"cols": [ "B11", "B10", "B2", "B1", "B0", "B5", "B4", "B3", "A15", "A14" ],
"rows": [ "B13", "A2", "F0", "C15"]
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 7, "y": 0},
{"matrix": [0, 6], "x": 8, "y": 0},
{"matrix": [0, 7], "x": 9, "y": 0},
{"matrix": [0, 8], "x": 10, "y": 0},
{"matrix": [0, 9], "x": 11, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1},
{"matrix": [1, 1], "x": 1, "y": 1},
{"matrix": [1, 2], "x": 2, "y": 1},
{"matrix": [1, 3], "x": 3, "y": 1},
{"matrix": [1, 4], "x": 4, "y": 1},
{"matrix": [1, 5], "x": 7, "y": 1},
{"matrix": [1, 6], "x": 8, "y": 1},
{"matrix": [1, 7], "x": 9, "y": 1},
{"matrix": [1, 8], "x": 10, "y": 1},
{"matrix": [1, 9], "x": 11, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2},
{"matrix": [2, 1], "x": 1, "y": 2},
{"matrix": [2, 2], "x": 2, "y": 2},
{"matrix": [2, 3], "x": 3, "y": 2},
{"matrix": [2, 4], "x": 4, "y": 2},
{"matrix": [2, 5], "x": 7, "y": 2},
{"matrix": [2, 6], "x": 8, "y": 2},
{"matrix": [2, 7], "x": 9, "y": 2},
{"matrix": [2, 8], "x": 10, "y": 2},
{"matrix": [2, 9], "x": 11, "y": 2},
{"matrix": [3, 1], "x": 0.25, "y": 3},
{"matrix": [3, 2], "x": 1.25, "y": 3},
{"matrix": [3, 3], "x": 2.25, "y": 3},
{"matrix": [3, 4], "x": 3.25, "y": 3, "w": 1.75},
{"matrix": [3, 5], "x": 7 , "y": 3, "w": 1.75},
{"matrix": [3, 6], "x": 8.75, "y": 3},
{"matrix": [3, 7], "x": 9.25, "y": 3},
{"matrix": [3, 8], "x": 10.75, "y": 3}
]
}
}
}

View file

@ -0,0 +1,29 @@
// Copyright 2025 LAZDESIGNERS
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
#define LT1_SPC LT(1, KC_SPC)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_UP, KC_COMM,
KC_LCTL, KC_LALT, KC_LGUI, LT1_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
),
[2] = LAYOUT(
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
),
};

View file

@ -0,0 +1,12 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define VIAL_KEYBOARD_UID {0x8B, 0x2A, 0xBE, 0x80, 0x8B, 0xDF, 0x00, 0x50}
#define VIAL_UNLOCK_COMBO_ROWS { 0, 0 }
#define VIAL_UNLOCK_COMBO_COLS { 0, 9 }
#define VIAL_COMBO_ENTRIES 32
#define VIAL_TAP_DANCE_ENTRIES 32
#define DYNAMIC_KEYMAP_LAYER_COUNT 8

View file

@ -0,0 +1,29 @@
// Copyright 2025 LAZDESIGNERS
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
#define LT1_SPC LT(1, KC_SPC)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_UP, KC_COMM,
KC_LCTL, KC_LALT, KC_LGUI, LT1_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT(
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
),
[2] = LAYOUT(
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
),
};

View file

@ -0,0 +1,2 @@
VIA_ENABLE = yes
VIAL_ENABLE = yes

View file

@ -0,0 +1,23 @@
{
"matrix": {"rows": 4, "cols": 10},
"layouts": {
"labels": [
["Bottom Row", "Regular", "HHKB"]
],
"keymap": [
[
"0,0","0,1","0,2","0,3","0,4",{"x":2},"0,5","0,6","0,7","0,8","0,9"
],
[
"1,0","1,1","1,2","1,3","1,4",{"x":2},"1,5","1,6","1,7","1,8","1,9"
],
[
"2,0","2,1","2,2","2,3","2,4",{"x":2},"2,5","2,6","2,7","2,8","2,9"
],
[
{"w":0.25,"d": true},"\n\n\n0,0","3,1\n\n\n0,0","3,2\n\n\n0,0","3,3\n\n\n0,0",{"w":1.75},"3,4\n\n\n0,0",{"x":2,"w":1.75},"3,5\n\n\n0,0","3,6\n\n\n0,0","3,7\n\n\n0,0","3,8\n\n\n0,0",
{"w":1.25,"d": true},"\n\n\n0,1","3,2\n\n\n0,1","3,3\n\n\n0,1",{"w":1.75},"3,4\n\n\n0,1",{"x":2,"w":1.75},"3,5\n\n\n0,1","3,6\n\n\n0,1","3,7\n\n\n0,1"
]
]
}
}

View file

@ -0,0 +1,18 @@
# Little Wing
A qaz alice keyboard designed by LAZYDESIGNERS in 2025 by [LAZYDESIGNERS](http://lazydesigners.cn).
* Keyboard Maintainer: [LAZYDESIGNERS](https://github.com/jackytrabbit)
* Hardware Supported: Little Wing
* Hardware Availability: Check [LAZYDESIGNERS's homepage.](http://lazydesigners.cn)
Make example for this keyboard (after setting up your vial build environment):
make lazydesigners/littlewing:vial
Flashing example for this keyboard:
make lazydesigners/littlewing:vial:flash
**Reset Key:** To enter the bootloader, press the boot button and short the reset pads together on the PCB.

View file

@ -0,0 +1,12 @@
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output

View file

@ -1,4 +1,4 @@
// Copyright 2021 Ll3macorn (@ll3macorn)
// Copyright 2025 Ll3ma (@ll3ma)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "quantum.h"

View file

@ -1,4 +1,4 @@
// Copyright 2021 Ll3macorn (@ll3macorn)
// Copyright 2025 Ll3ma (@ll3ma)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once

View file

@ -1,8 +1,8 @@
{
"keyboard_name": "BongoPad",
"manufacturer": "Ll3macorn",
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ll3macorn/bongopad",
"maintainer": "Ll3macorn",
"manufacturer": "Ll3ma",
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ll3ma/bongopad",
"maintainer": "Ll3ma",
"usb": {
"vid": "0x3728",
"pid": "0x2949",

View file

@ -1,4 +1,4 @@
// Copyright 2021 Ll3macorn (@ll3macorn)
// Copyright 2025 Ll3ma (@ll3ma)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H

View file

@ -1,4 +1,4 @@
// Copyright 2021 Ll3macorn (@ll3macorn)
// Copyright 2025 Ll3ma (@ll3ma)
// SPDX-License-Identifier: GPL-2.0-or-later
#define VIAL_KEYBOARD_UID {0x08, 0xDB, 0x6F, 0x28, 0x40, 0xFD, 0x6F, 0x58}

View file

@ -1,4 +1,4 @@
// Copyright 2021 Ll3macorn (@ll3macorn)
// Copyright 2025 Ll3ma (@ll3ma)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
#include <stdio.h>

Some files were not shown because too many files have changed in this diff Show more