1
0

Compare commits

..

2 Commits

Author SHA1 Message Date
Nick Brassel
312f42945d Branch point for 2025q2 breaking change. 2025-02-28 09:26:13 +11:00
Nick Brassel
40b9dada5c Merge remote-tracking branch 'upstream/master' into develop 2025-02-28 09:24:51 +11:00
198 changed files with 167 additions and 11073 deletions

View File

@@ -15,7 +15,6 @@ on:
- quantum/**/*
- tests/**/*
- tmk_core/**/*
- lib/python/**/*
- util/**/*
- Makefile
- '*.mk'

View File

@@ -36,7 +36,7 @@ jobs:
- name: Get changed files
id: file_changes
uses: tj-actions/changed-files@v46
uses: tj-actions/changed-files@v45
with:
use_rest_api: true

View File

@@ -27,7 +27,7 @@ jobs:
- name: Get changed files
id: file_changes
uses: tj-actions/changed-files@v46
uses: tj-actions/changed-files@v45
with:
use_rest_api: true

View File

@@ -1,7 +1,7 @@
{
"license": "GPL-2.0-or-later",
"devDependencies": {
"vite": "^5.4.15",
"vite": "^5.4.12",
"vitepress": "^1.1.0",
"vitepress-plugin-tabs": "^0.5.0",
"vue": "^3.4.24"

View File

@@ -766,10 +766,10 @@ tabbable@^6.2.0:
resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97"
integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==
vite@^5.2.9, vite@^5.4.15:
version "5.4.15"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.15.tgz#2941547f10ebb4bf9b0fa0da863c06711eb7e5e5"
integrity sha512-6ANcZRivqL/4WtwPGTKNaosuNJr5tWiftOC7liM7G9+rMb8+oeJeyzymDu4rTN93seySBmbjSfsS3Vzr19KNtA==
vite@^5.2.9, vite@^5.4.12:
version "5.4.12"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.12.tgz#627d12ff06de3942557dfe8632fd712a12a072c7"
integrity sha512-KwUaKB27TvWwDJr1GjjWthLMATbGEbeWYZIbGZ5qFIsgPP3vWzLu4cVooqhm5/Z2SPDUMjyPVjTztm5tYKwQxA==
dependencies:
esbuild "^0.21.3"
postcss "^8.4.43"

View File

@@ -40,7 +40,7 @@ cd /path/to/your/external/userspace
mkdir -p modules
# Replace the following {user} and {repo} with the author's community module repository
git submodule add https://github.com/{user}/{repo}.git modules/{user}
git submodule update --init --recursive
git submdule update --init --recursive
```
This will ensure the copy of the module is made in your userspace.

View File

@@ -444,7 +444,7 @@ This setting implies that `RGBLIGHT_SPLIT` is enabled, and will forcibly enable
#define SPLIT_USB_DETECT
```
Enabling this option changes the startup behavior to listen for an active USB communication to delegate which part is master and which is slave. With this option enabled and active USB communication, then that half assumes it is the master, otherwise it assumes it is the slave.
Enabling this option changes the startup behavior to listen for an active USB communication to delegate which part is master and which is slave. With this option enabled and theres's USB communication, then that half assumes it is the master, otherwise it assumes it is the slave.
Without this option, the master is the half that can detect voltage on the physical USB connection (VBUS detection).

View File

@@ -19,13 +19,9 @@ If you own a board from one of the following vendors already, consider asking th
| Vendor | Reason |
|------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Ajazz | Selling tri-mode boards based on QMK without sources. |
| Alpaca / Apos | Selling wireless boards with "open" source code, but linking against closed-source wireless libraries. Crippled source code already unknowingly merged to QMK. |
| Attack Shark | Selling tri-mode boards based on QMK without sources. (Clones of Ajazz?) |
| BBB Keyboard | Selling tri-mode boards based on QMK without sources, attempted upstreaming crippled firmware without wireless. |
| Chosfox | Selling L75 wired/wireless boards based on QMK without sources, just `via.json` provided. Raised on discord over multiple weeks without response. |
| CIDOO | Selling wired boards based on QMK without sources, just `via.json` provided. |
| ColorReco | Selling tri-mode boards based on QMK without sources. |
| Darmoshark | Selling wired boards based on QMK without sources, just `via.json` provided. |
| Epomaker | Lots of historical keyboards with `via.json` but no corresponding sources. Wireless code for a small handful provided, pending core cleanup for QMK upstreaming. Most other boards have source nowhere to be seen. |
| Ergokbd (IFKB) | At least their crkbd clone ships with QMK+Vial, seemingly refuses to disclose sources despite multiple customers requesting them. |
@@ -40,7 +36,6 @@ If you own a board from one of the following vendors already, consider asking th
| pressplayid | Selling wired and tri-mode boards based on QMK without sources, just `via.json` provided |
| qwertykeys | Selling wired and tri-mode boards based on QMK without sources, just `via.json` provided. |
| Redragon | Selling tri-mode boards based on QMK without sources, attempted upstreaming crippled firmware without wireless. |
| Riccks | Selling tri-mode boards based on QMK without sources. |
| Royal Kludge | PRs for fake boards in order to attain VIA compatibility identified. Lots of other keyboards with `via.json` but no corresponding sources, attempted upstreaming crippled firmware without wireless. Wireless code for some provided, pending core cleanup for QMK upstreaming. PRs including different manufacturer names as well. |
| Shenzhen Hangsheng | PR submissions with crippled firmware, debating with maintainers about wireless despite marketing material clearly stating tri-mode. |
| Tacworks | Selling tri-mode boards based on QMK, crippled firmware already merged into QMK without wireless without QMK team realising. |
@@ -50,7 +45,6 @@ If you own a board from one of the following vendors already, consider asking th
| Womier | Selling tri-mode boards based on QMK without sources, attempted upstreaming crippled firmware without wireless. |
| Wuque Studio | Selling wired and tri-mode boards based on QMK without sources, just `via.json` provided. |
| XVX | Ambiguity on PRs -- marketing says wireless, PR author said wired-only. Seemingly intentionally deceptive. |
| Yunzii | Selling tri-mode boards based on QMK without sources, just `via.json` provided. |
| Zuoya | Selling tri-mode boards based on QMK without sources, just `via.json` provided. |
::: danger Violations

View File

@@ -884,7 +884,7 @@ static painter_image_handle_t my_image;
void keyboard_post_init_kb(void) {
my_image = qp_load_image_mem(gfx_my_image);
if (my_image != NULL) {
qp_drawimage(display, (240 - my_image->width), (320 - my_image->height), my_image);
qp_drawimage(display, (239 - my_image->width), (319 - my_image->height), my_image);
}
}
```
@@ -909,7 +909,7 @@ static deferred_token my_anim;
void keyboard_post_init_kb(void) {
my_image = qp_load_image_mem(gfx_my_image);
if (my_image != NULL) {
my_anim = qp_animate(display, (240 - my_image->width), (320 - my_image->height), my_image);
my_anim = qp_animate(display, (239 - my_image->width), (319 - my_image->height), my_image);
}
}
```
@@ -1001,7 +1001,7 @@ void keyboard_post_init_kb(void) {
if (my_font != NULL) {
static const char *text = "Hello from QMK!";
int16_t width = qp_textwidth(my_font, text);
qp_drawtext(display, (240 - width), (320 - my_font->line_height), my_font, text);
qp_drawtext(display, (239 - width), (319 - my_font->line_height), my_font, text);
}
}
```

View File

@@ -1,34 +0,0 @@
{
"manufacturer": "mikiya418",
"keyboard_name": "5keys",
"maintainer": "mikiya418",
"development_board": "promicro",
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"nkro": false
},
"matrix_pins": {
"direct": [
["F4","F5","F6","F7","B1"]
]
},
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0x0001",
"vid": "0x4D4B"
},
"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}
]
}
}
}

View File

@@ -1,21 +0,0 @@
/* Copylight 2024 mikiya418.
*
* 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 3 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 <https://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_WBAK, KC_WFWD, LSG_T(KC_S), G(KC_L), MO(1)
)
};

View File

@@ -1,27 +0,0 @@
# 5keys
![5keys](https://imgur.com/yOkI4HT)
This keyboard is a macro keyboard with five keys.
* Keyboard Maintainer: [mikiya418](https://github.com/mikiya418)
* Hardware Supported: 5keys PCBs, Pro Micro
* Hardware Availability: [Thingiverse](https://www.thingiverse.com/thing:6834908)
Make example for this keyboard (after setting up your build environment):
make 5keys:default
Flashing example for this keyboard:
make 5keys: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**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -1,53 +0,0 @@
{
"manufacturer": "Raspberry Pi",
"keyboard_name": "DirectPins Pico Pad 21 keys RP2040",
"maintainer": "icyavocado",
"bootloader": "rp2040",
"usb": {
"vid": "0x2326",
"pid": "0xFEED",
"device_version": "0.0.1"
},
"features": {
"bootmagic": true,
"mousekey": true,
"extrakey": true
},
"processor": "RP2040",
"matrix_pins": {
"direct": [
[ "GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6" ],
[ "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13"],
[ "GP14", "GP16", "GP17", "GP18", "GP19", "GP20", "GP21"]
]
},
"layouts": {
"LAYOUT": {
"layout": [
{"label": "GP0", "x": 0, "y": 0, "matrix": [0, 0]},
{"label": "GP1", "x": 0, "y": 1, "matrix": [0, 1]},
{"label": "GP2", "x": 0, "y": 2, "matrix": [0, 2]},
{"label": "GP3", "x": 0, "y": 3, "matrix": [0, 3]},
{"label": "GP4", "x": 0, "y": 4, "matrix": [0, 4]},
{"label": "GP5", "x": 0, "y": 5, "matrix": [0, 5]},
{"label": "GP6", "x": 0, "y": 6, "matrix": [0, 6]},
{"label": "GP7", "x": 1, "y": 0, "matrix": [1, 0]},
{"label": "GP8", "x": 1, "y": 1, "matrix": [1, 1]},
{"label": "GP9", "x": 1, "y": 2, "matrix": [1, 2]},
{"label": "GP10", "x": 1, "y": 3, "matrix": [1, 3]},
{"label": "GP11", "x": 1, "y": 4, "matrix": [1, 4]},
{"label": "GP12", "x": 1, "y": 5, "matrix": [1, 5]},
{"label": "GP13", "x": 1, "y": 6, "matrix": [1, 6]},
{"label": "GP14", "x": 2, "y": 0, "matrix": [2, 0]},
{"label": "GP16", "x": 2, "y": 1, "matrix": [2, 1]},
{"label": "GP17", "x": 2, "y": 2, "matrix": [2, 2]},
{"label": "GP18", "x": 2, "y": 3, "matrix": [2, 3]},
{"label": "GP19", "x": 2, "y": 4, "matrix": [2, 4]},
{"label": "GP20", "x": 2, "y": 5, "matrix": [2, 5]},
{"label": "GP21", "x": 2, "y": 6, "matrix": [2, 6]}
]
}
}
}

View File

@@ -1,12 +0,0 @@
{
"keyboard": "adafruit/pico_pad",
"keymap": "default",
"layout": "LAYOUT",
"layers": [
[
"KC_A", "KC_B", "KC_C", "KC_D", "KC_E", "KC_F", "KC_G",
"KC_H", "KC_I", "KC_J", "KC_K", "KC_L", "KC_M", "KC_N",
"KC_O", "KC_P", "KC_Q", "KC_R", "KC_S", "KC_T", "KC_U"
]
]
}

View File

@@ -1,25 +0,0 @@
# PICO PAD
![PICO PAD](https://imgur.com/Nl4tZPl.jpg)
A RP2040 powered direct pins QMK keyboard in 3x7 layout.
A guide can be found here: [Pico Mechanical Keyboard](https://learn.adafruit.com/diy-pico-mechanical-keyboard-with-fritzing-circuitpython/overview)
* Keyboard Maintainer: [IcyAvocado](https://github.com/icyavocado)
* Hardware Supported: [Pico 1 Microcontrollers - RP2040](https://www.raspberrypi.com/documentation/microcontrollers/pico-series.html#pico-1-family)
* Hardware Availability: [The PiHut](https://thepihut.com/products/raspberry-pi-pico) | [Adafruit Parts](https://learn.adafruit.com/diy-pico-mechanical-keyboard-with-fritzing-circuitpython/overview)
Make example for this board (after setting up your build environment):
```sh
qmk compile -kb adafruit/pico_pad -km default
```
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:
* **Physical reset button**: Briefly press the reset button on the left of the PCB - some may have pads you must short instead
* **Boot button**: Press and hold the BOOTSEL button on the pico when powered on

View File

@@ -48,11 +48,6 @@ ble_capslock_t ble_capslock = {._dummy = {0}, .caps_lock = false};
static uint8_t led_enabled = 1;
#endif
void mcu_reset(void) {
__disable_irq();
NVIC_SystemReset();
}
void bootloader_jump(void) {
// Send msg to shine to boot into IAP
ap2_set_IAP();

View File

@@ -12,8 +12,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
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_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, MO(1), KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_LGUI, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN1] = LAYOUT_all(

View File

@@ -11,8 +11,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
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_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
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_LSFT, MO(1), KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_LGUI, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN1] = LAYOUT_all(

View File

@@ -30,7 +30,8 @@
"rgb_matrix": {
"animations": {
"breathing": true,
"cycle_left_right": true
"cycle_left_right": true,
"solid_color": true
},
"driver": "ws2812",
"layout": [

View File

@@ -1,115 +0,0 @@
{
"manufacturer": "dnlnm",
"keyboard_name": "Cloak",
"maintainer": "dnlnm",
"bootloader": "stm32-dfu",
"diode_direction": "COL2ROW",
"encoder": {
"rotary": [
{"pin_a": "A9", "pin_b": "A10", "resolution": 2},
{"pin_a": "B4", "pin_b": "B6", "resolution": 2}
]
},
"features": {
"bootmagic": true,
"encoder": true,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgblight": true
},
"matrix_pins": {
"cols": ["A8", "B15", "B14", "B13", "B11", "B10", "B2", "B1", "B0", "A7", "A6", "A5", "A4", "B8"],
"rows": ["B3", "B12", "A15", "B7", "B9"]
},
"processor": "STM32F072",
"rgblight": {
"default": {
"on": false
},
"driver": "ws2812",
"layers": {
"blink": true,
"enabled": true,
"override_rgb": true
},
"led_count": 12
},
"url": "https://github.com/dnlnm/cloak-xt-stm32",
"usb": {
"device_version": "1.0.0",
"pid": "0xFCD4",
"vid": "0x7E7E"
},
"ws2812": {
"pin": "B5"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1.25, "y": 0},
{"matrix": [0, 2], "x": 2.25, "y": 0},
{"matrix": [0, 3], "x": 3.25, "y": 0},
{"matrix": [0, 4], "x": 4.25, "y": 0},
{"matrix": [0, 5], "x": 5.63, "y": 0},
{"matrix": [0, 6], "x": 6.63, "y": 0},
{"matrix": [0, 7], "x": 7.63, "y": 0},
{"matrix": [0, 8], "x": 8.63, "y": 0},
{"matrix": [0, 9], "x": 10, "y": 0},
{"matrix": [0, 10], "x": 11, "y": 0},
{"matrix": [0, 11], "x": 12, "y": 0},
{"matrix": [0, 12], "x": 13, "y": 0},
{"matrix": [0, 13], "x": 14.25, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1.25},
{"matrix": [1, 2], "x": 2.5, "y": 1.25},
{"matrix": [1, 3], "x": 3.5, "y": 1.25},
{"matrix": [1, 4], "x": 4.5, "y": 1.25},
{"matrix": [1, 5], "x": 5.5, "y": 1.25},
{"matrix": [1, 6], "x": 6.5, "y": 1.25},
{"matrix": [1, 7], "x": 7.5, "y": 1.25},
{"matrix": [1, 8], "x": 8.5, "y": 1.25},
{"matrix": [1, 9], "x": 9.5, "y": 1.25},
{"matrix": [1, 10], "x": 10.5, "y": 1.25},
{"matrix": [1, 11], "x": 11.5, "y": 1.25},
{"matrix": [1, 12], "x": 12.5, "y": 1.25, "w": 1.5},
{"matrix": [1, 13], "x": 14.25, "y": 1.25},
{"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2.25},
{"matrix": [2, 2], "x": 2.75, "y": 2.25},
{"matrix": [2, 3], "x": 3.75, "y": 2.25},
{"matrix": [2, 4], "x": 4.75, "y": 2.25},
{"matrix": [2, 5], "x": 5.75, "y": 2.25},
{"matrix": [2, 6], "x": 6.75, "y": 2.25},
{"matrix": [2, 7], "x": 7.75, "y": 2.25},
{"matrix": [2, 8], "x": 8.75, "y": 2.25},
{"matrix": [2, 9], "x": 9.75, "y": 2.25},
{"matrix": [2, 10], "x": 10.75, "y": 2.25},
{"matrix": [2, 11], "x": 11.75, "y": 2.25, "w": 2.25},
{"matrix": [2, 12], "x": 14.25, "y": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
{"matrix": [3, 1], "x": 2.25, "y": 3.25},
{"matrix": [3, 2], "x": 3.25, "y": 3.25},
{"matrix": [3, 3], "x": 4.25, "y": 3.25},
{"matrix": [3, 4], "x": 5.25, "y": 3.25},
{"matrix": [3, 5], "x": 6.25, "y": 3.25},
{"matrix": [3, 6], "x": 7.25, "y": 3.25},
{"matrix": [3, 7], "x": 8.25, "y": 3.25},
{"matrix": [3, 8], "x": 9.25, "y": 3.25},
{"matrix": [3, 9], "x": 10.25, "y": 3.25},
{"matrix": [3, 10], "x": 11.25, "y": 3.25},
{"matrix": [3, 11], "x": 12.25, "y": 3.25, "w": 1.75},
{"matrix": [3, 12], "x": 14.25, "y": 3.25},
{"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4.25},
{"matrix": [4, 2], "x": 2.25, "y": 4.25, "w": 1.25},
{"matrix": [4, 6], "x": 3.5, "y": 4.25, "w": 7},
{"matrix": [4, 10], "x": 10.5, "y": 4.25, "w": 1.25},
{"matrix": [4, 11], "x": 11.75, "y": 4.25},
{"matrix": [4, 12], "x": 12.75, "y": 4.25, "w": 1.25},
{"matrix": [4, 13], "x": 14.25, "y": 4.25}
]
}
}
}

View File

@@ -1,68 +0,0 @@
// Copyright (C) 2025 dnlnm
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
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_MPLY,
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_BSPC, KC_VOLU,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, KC_VOLD,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_MUTE,
KC_LCTL, KC_LGUI, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_PSCR),
[1] = LAYOUT(
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[0] = {ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[1] = {ENCODER_CCW_CW(UG_HUED, UG_HUEU), ENCODER_CCW_CW(UG_SATD, UG_SATU)},
};
#endif
#ifdef RGBLIGHT_ENABLE
// Light LEDs 10 & 11 in blue when caps lock is active.
const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{10, 2, HSV_BLUE} // Light 4 LEDs, starting with LED 6
);
// Light LEDs 0 & 1 in blue when keyboard layer 1 is active
const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 2, HSV_BLUE}
);
// Light LEDs 4 & 5 in blue when keyboard layer 2 is active
const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{4, 2, HSV_BLUE}
);
// Now define the array of layers. Later layers take precedence
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
my_capslock_layer,
my_layer1_layer, // Overrides caps lock layer
my_layer2_layer // Overrides other layers
);
void keyboard_post_init_user(void) {
// Enable the LED layers
rgblight_layers = my_rgb_layers;
}
bool led_update_user(led_t led_state) {
rgblight_set_layer_state(0, led_state.caps_lock);
return true;
}
layer_state_t layer_state_set_user(layer_state_t state) {
rgblight_set_layer_state(1, layer_state_cmp(state, 1));
rgblight_set_layer_state(2, layer_state_cmp(state, 2));
return state;
}
#endif

View File

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

View File

@@ -1,25 +0,0 @@
# dnlnm/cloak
![dnlnm/cloak](https://i.imgur.com/eZCUPvK.jpeg)
* Keyboard Maintainer: [Daniel Naim](https://github.com/dnlnm)
* Hardware Supported: Cloak-XT
* Hardware Availability: https://github.com/dnlnm/cloak-xt-stm32
Make example for this keyboard (after setting up your build environment):
make dnlnm/cloak:default
Flashing example for this keyboard:
make dnlnm/cloak: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**: Hold the boot button and tap the reset button on the back of the PCB
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -235,75 +235,6 @@
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi_tsangan": {
"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, "w": 2},
{"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": 13.5, "y": 1, "w": 1.5},
{"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, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"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, 13], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 12], "x": 14, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 4},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"matrix": [4, 5], "x": 4, "y": 4, "w": 7},
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"matrix": [4, 12], "x": 12.5, "y": 4},
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
]
}
}
}

View File

@@ -1,70 +0,0 @@
/* Copyright 2019 /u/KeepItUnder
*
* 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
// LAYERS
enum Layer {
_QWERTY = 0, // Standard QWERTY layer
_FUNCTION, // Function key layer
_COLOUR // RGB key layer
};
#define _QW _QWERTY
#define _FN _FUNCTION
#define _CLR _COLOUR
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────────┐
* │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──────┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──────┤
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬────┤
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ Fn │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴───┴───┼───┴┬────┬┴────┤
* │Ctrl│GUI │Alt │ │Alt │GUI │Ctrl │
* └────┴────┴────┴─────────────────────────────┴────┴────┴─────┘
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_60_ansi_tsangan(
// 2 3 4 5 6 7 8 9 10 11 12 13 14
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_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(_FN),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
),
[_FUNCTION] = LAYOUT_60_ansi_tsangan(
// 2 3 4 5 6 7 8 9 10 11 12 13 14
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_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, _______,
_______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, KC_ENT,
_______, _______, KC_APP, _______, _______, _______, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
_______, KC_APP, MO(_CLR), _______, KC_APP, _______, _______
),
[_COLOUR] = LAYOUT_60_ansi_tsangan(
// 2 3 4 5 6 7 8 9 10 11 12 13 14
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, RM_NEXT, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RM_HUEU, RM_SATU, RM_VALU, RM_SPDU, _______, _______, _______, _______, _______, _______, _______,
_______, RM_HUED, RM_SATD, RM_VALD, RM_SPDD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, RM_TOGG, _______, _______, _______
),
};

View File

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

View File

@@ -1,120 +0,0 @@
{
"manufacturer": "SIRIND",
"keyboard_name": "ChickPad",
"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
},
"matrix_pins": {
"cols": ["GP23", "GP25", "GP3", "GP5", "GP4"],
"rows": ["GP18", "GP24", "GP22"]
},
"processor": "RP2040",
"rgb_matrix": {
"animations": {
"alphas_mods": true,
"band_pinwheel_sat": true,
"band_pinwheel_val": true,
"band_sat": true,
"band_spiral_sat": true,
"band_spiral_val": true,
"band_val": true,
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"cycle_up_down": true,
"digital_rain": true,
"dual_beacon": true,
"flower_blooming": true,
"gradient_left_right": true,
"gradient_up_down": true,
"hue_breathing": true,
"hue_pendulum": true,
"hue_wave": true,
"jellybean_raindrops": true,
"multisplash": true,
"pixel_flow": true,
"pixel_fractal": true,
"pixel_rain": true,
"rainbow_beacon": true,
"rainbow_moving_chevron": true,
"rainbow_pinwheels": true,
"raindrops": true,
"riverflow": true,
"solid_multisplash": true,
"solid_reactive": true,
"solid_reactive_cross": true,
"solid_reactive_multicross": true,
"solid_reactive_multinexus": true,
"solid_reactive_multiwide": true,
"solid_reactive_nexus": true,
"solid_reactive_simple": true,
"solid_reactive_wide": true,
"solid_splash": true,
"splash": true,
"starlight": true,
"starlight_dual_hue": true,
"starlight_dual_sat": true,
"typing_heatmap": true
},
"driver": "ws2812",
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
{"matrix": [0, 1], "x": 56, "y": 0, "flags": 4},
{"matrix": [0, 2], "x": 112, "y": 0, "flags": 4},
{"matrix": [0, 3], "x": 168, "y": 0, "flags": 4},
{"matrix": [0, 4], "x": 224, "y": 16, "flags": 1},
{"matrix": [1, 3], "x": 168, "y": 32, "flags": 4},
{"matrix": [1, 2], "x": 112, "y": 32, "flags": 4},
{"matrix": [1, 1], "x": 56, "y": 32, "flags": 4},
{"matrix": [1, 0], "x": 0, "y": 32, "flags": 4},
{"matrix": [2, 0], "x": 28, "y": 64, "flags": 1},
{"matrix": [2, 2], "x": 112, "y": 64, "flags": 4},
{"matrix": [2, 3], "x": 168, "y": 64, "flags": 4},
{"matrix": [2, 4], "x": 224, "y": 64, "flags": 4}
],
"sleep": true
},
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0x0015",
"vid": "0x4552"
},
"ws2812": {
"driver": "vendor",
"pin": "GP19"
},
"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.25, "y": 0, "w": 1.25, "h": 2},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25},
{"matrix": [1, 1], "x": 1.25, "y": 1},
{"matrix": [1, 2], "x": 2.25, "y": 1},
{"matrix": [1, 3], "x": 3.25, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 2.25},
{"matrix": [2, 2], "x": 2.25, "y": 2},
{"matrix": [2, 3], "x": 3.25, "y": 2},
{"matrix": [2, 4], "x": 4.25, "y": 2}
]
}
}
}

View File

@@ -1,13 +0,0 @@
// Copyright 2024 QMK (@qmk)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_1 , KC_2 , KC_3 , KC_4 , KC_ENT ,
KC_LSFT, KC_VOLU, KC_VOLD, KC_UP ,
KC_SPC , KC_LEFT, KC_DOWN, KC_RGHT
)
};

View File

@@ -1,25 +0,0 @@
# ChickPad Unified
![Chickpad](https://i.imgur.com/RAH7dyl.jpeg)
* Keyboard Maintainer: [ERA](https://github.com/eerraa)
* Hardware supported: Chickpad PCB w/ RP2040
* Hardware availability: [Syryan](https://srind.mysoho.com/)
Make example for this keyboard (after setting up your build environment):
make era/sirind/chickpad:default
Flashing example for this keyboard:
make era/sirind/chickpad: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

@@ -62,6 +62,7 @@
"rainbow_moving_chevron": true,
"rainbow_pinwheels": true,
"raindrops": true,
"solid_color": true,
"solid_multisplash": true,
"solid_reactive": true,
"solid_reactive_cross": true,

View File

@@ -1,363 +0,0 @@
{
"manufacturer": "Henrik O. S\u00f8rensen",
"keyboard_name": "AT101ish",
"maintainer": "qmk",
"bootloader": "halfkay",
"diode_direction": "ROW2COL",
"features": {
"bootmagic": true,
"command": true,
"console": true,
"extrakey": true,
"nkro": true
},
"indicators": {
"caps_lock": "D6",
"num_lock": "D4",
"scroll_lock": "E6"
},
"matrix_pins": {
"cols": ["D7", "B4", "B5", "B6", "F7", "F6", "F5", "F4", "F1", "F0"],
"rows": ["B1", "B0", "B2", "D5", "B3", "C7", "B7", "C6", "D0", "D3", "D1", "D2"]
},
"processor": "atmega32u4",
"tags": ["at101", "at102", "bigfoot"],
"url": "https://github.com/henrikosorensen/keyboard_pcbs/tree/master/at101_pcb",
"usb": {
"device_version": "1.1.0",
"pid": "0x0101",
"vid": "0xFEED"
},
"community_layouts": ["fullsize_ansi", "fullsize_iso"],
"layouts": {
"LAYOUT_all": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
{"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
{"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
{"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
{"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
{"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
{"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
{"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
{"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
{"label": "F10", "matrix": [1, 0], "x": 12, "y": 0},
{"label": "F11", "matrix": [1, 1], "x": 13, "y": 0},
{"label": "F12", "matrix": [1, 2], "x": 14, "y": 0},
{"label": "PrtSc", "matrix": [1, 3], "x": 15.25, "y": 0},
{"label": "Scroll Lock", "matrix": [1, 4], "x": 16.25, "y": 0},
{"label": "Pause", "matrix": [1, 5], "x": 17.25, "y": 0},
{"label": "\u00ac", "matrix": [2, 0], "x": 0, "y": 1.5},
{"label": "!", "matrix": [2, 1], "x": 1, "y": 1.5},
{"label": "\"", "matrix": [2, 2], "x": 2, "y": 1.5},
{"label": "\u00a3", "matrix": [2, 3], "x": 3, "y": 1.5},
{"label": "$", "matrix": [2, 4], "x": 4, "y": 1.5},
{"label": "%", "matrix": [2, 5], "x": 5, "y": 1.5},
{"label": "^", "matrix": [2, 6], "x": 6, "y": 1.5},
{"label": "&", "matrix": [2, 7], "x": 7, "y": 1.5},
{"label": "*", "matrix": [2, 8], "x": 8, "y": 1.5},
{"label": "(", "matrix": [2, 9], "x": 9, "y": 1.5},
{"label": ")", "matrix": [3, 0], "x": 10, "y": 1.5},
{"label": "_", "matrix": [3, 1], "x": 11, "y": 1.5},
{"label": "+", "matrix": [3, 2], "x": 12, "y": 1.5},
{"label": "Backspace", "matrix": [3, 3], "x": 13, "y": 1.5, "w": 2},
{"label": "Insert", "matrix": [3, 4], "x": 15.25, "y": 1.5},
{"label": "Home", "matrix": [3, 5], "x": 16.25, "y": 1.5},
{"label": "PgUp", "matrix": [3, 6], "x": 17.25, "y": 1.5},
{"label": "Num Lock", "matrix": [3, 7], "x": 18.5, "y": 1.5},
{"label": "/", "matrix": [3, 8], "x": 19.5, "y": 1.5},
{"label": "*", "matrix": [3, 9], "x": 20.5, "y": 1.5},
{"label": "-", "matrix": [1, 9], "x": 21.5, "y": 1.5},
{"label": "Tab", "matrix": [4, 0], "x": 0, "y": 2.5, "w": 1.5},
{"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 2.5},
{"label": "W", "matrix": [4, 2], "x": 2.5, "y": 2.5},
{"label": "E", "matrix": [4, 3], "x": 3.5, "y": 2.5},
{"label": "R", "matrix": [4, 4], "x": 4.5, "y": 2.5},
{"label": "T", "matrix": [4, 5], "x": 5.5, "y": 2.5},
{"label": "Y", "matrix": [4, 6], "x": 6.5, "y": 2.5},
{"label": "U", "matrix": [4, 7], "x": 7.5, "y": 2.5},
{"label": "I", "matrix": [4, 8], "x": 8.5, "y": 2.5},
{"label": "O", "matrix": [4, 9], "x": 9.5, "y": 2.5},
{"label": "P", "matrix": [5, 0], "x": 10.5, "y": 2.5},
{"label": "{", "matrix": [5, 1], "x": 11.5, "y": 2.5},
{"label": "}", "matrix": [5, 2], "x": 12.5, "y": 2.5},
{"label": "|", "matrix": [5, 3], "x": 13.5, "y": 2.5, "w": 1.5},
{"label": "Delete", "matrix": [5, 4], "x": 15.25, "y": 2.5},
{"label": "End", "matrix": [5, 5], "x": 16.25, "y": 2.5},
{"label": "PgDn", "matrix": [5, 6], "x": 17.25, "y": 2.5},
{"label": "7", "matrix": [5, 7], "x": 18.5, "y": 2.5},
{"label": "8", "matrix": [5, 8], "x": 19.5, "y": 2.5},
{"label": "9", "matrix": [5, 9], "x": 20.5, "y": 2.5},
{"label": "+", "matrix": [1, 8], "x": 21.5, "y": 2.5},
{"label": "Caps Lock", "matrix": [6, 0], "x": 0, "y": 3.5, "w": 1.75},
{"label": "A", "matrix": [6, 1], "x": 1.75, "y": 3.5},
{"label": "S", "matrix": [6, 2], "x": 2.75, "y": 3.5},
{"label": "D", "matrix": [6, 3], "x": 3.75, "y": 3.5},
{"label": "F", "matrix": [6, 4], "x": 4.75, "y": 3.5},
{"label": "G", "matrix": [6, 5], "x": 5.75, "y": 3.5},
{"label": "H", "matrix": [6, 6], "x": 6.75, "y": 3.5},
{"label": "J", "matrix": [6, 7], "x": 7.75, "y": 3.5},
{"label": "K", "matrix": [6, 8], "x": 8.75, "y": 3.5},
{"label": "L", "matrix": [6, 9], "x": 9.75, "y": 3.5},
{"label": ":", "matrix": [7, 0], "x": 10.75, "y": 3.5},
{"label": "@", "matrix": [7, 1], "x": 11.75, "y": 3.5},
{"label": "~", "matrix": [7, 2], "x": 12.75, "y": 3.5},
{"label": "Enter", "matrix": [7, 3], "x": 13.75, "y": 3.5, "w": 1.25},
{"label": "4", "matrix": [7, 6], "x": 18.5, "y": 3.5},
{"label": "5", "matrix": [7, 7], "x": 19.5, "y": 3.5},
{"label": "6", "matrix": [7, 8], "x": 20.5, "y": 3.5},
{"label": "=", "matrix": [7, 9], "x": 21.5, "y": 3.5},
{"label": "Shift", "matrix": [8, 0], "x": 0, "y": 4.5, "w": 1.25},
{"label": "|", "matrix": [8, 1], "x": 1.25, "y": 4.5},
{"label": "Z", "matrix": [8, 2], "x": 2.25, "y": 4.5},
{"label": "X", "matrix": [8, 3], "x": 3.25, "y": 4.5},
{"label": "C", "matrix": [8, 4], "x": 4.25, "y": 4.5},
{"label": "V", "matrix": [8, 5], "x": 5.25, "y": 4.5},
{"label": "B", "matrix": [8, 6], "x": 6.25, "y": 4.5},
{"label": "N", "matrix": [8, 7], "x": 7.25, "y": 4.5},
{"label": "M", "matrix": [8, 8], "x": 8.25, "y": 4.5},
{"label": "<", "matrix": [8, 9], "x": 9.25, "y": 4.5},
{"label": ">", "matrix": [9, 0], "x": 10.25, "y": 4.5},
{"label": "?", "matrix": [9, 1], "x": 11.25, "y": 4.5},
{"label": "Shift", "matrix": [9, 2], "x": 12.25, "y": 4.5, "w": 1.75},
{"label": "|", "matrix": [9, 3], "x": 14, "y": 4.5},
{"label": "\u2191", "matrix": [9, 4], "x": 16.25, "y": 4.5},
{"label": "1", "matrix": [9, 6], "x": 18.5, "y": 4.5},
{"label": "2", "matrix": [9, 7], "x": 19.5, "y": 4.5},
{"label": "3", "matrix": [9, 8], "x": 20.5, "y": 4.5},
{"label": "Enter", "matrix": [9, 9], "x": 21.5, "y": 4.5, "h": 2},
{"label": "Ctrl", "matrix": [10, 0], "x": 0, "y": 5.5, "w": 1.25},
{"label": "Win", "matrix": [10, 1], "x": 1.25, "y": 5.5, "w": 1.25},
{"label": "Alt", "matrix": [10, 2], "x": 2.5, "y": 5.5, "w": 1.25},
{"label": " ", "matrix": [10, 7], "x": 3.75, "y": 5.5, "w": 6.25},
{"label": "AltGr ", "matrix": [11, 0], "x": 10, "y": 5.5, "w": 1.25},
{"label": "Win", "matrix": [11, 1], "x": 11.25, "y": 5.5, "w": 1.25},
{"label": "Menu", "matrix": [11, 2], "x": 12.5, "y": 5.5, "w": 1.25},
{"label": "Ctrl", "matrix": [11, 3], "x": 13.75, "y": 5.5, "w": 1.25},
{"label": "\u2190", "matrix": [11, 4], "x": 15.25, "y": 5.5},
{"label": "\u2193", "matrix": [11, 5], "x": 16.25, "y": 5.5},
{"label": "\u2192", "matrix": [11, 6], "x": 17.25, "y": 5.5},
{"label": "0", "matrix": [11, 7], "x": 18.5, "y": 5.5, "w": 2},
{"label": ".", "matrix": [11, 8], "x": 20.5, "y": 5.5}
]
},
"LAYOUT_fullsize_ansi": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 2, "y": 0},
{"matrix": [0, 2], "x": 3, "y": 0},
{"matrix": [0, 3], "x": 4, "y": 0},
{"matrix": [0, 4], "x": 5, "y": 0},
{"matrix": [0, 5], "x": 6.5, "y": 0},
{"matrix": [0, 6], "x": 7.5, "y": 0},
{"matrix": [0, 7], "x": 8.5, "y": 0},
{"matrix": [0, 8], "x": 9.5, "y": 0},
{"matrix": [0, 9], "x": 11, "y": 0},
{"matrix": [1, 0], "x": 12, "y": 0},
{"matrix": [1, 1], "x": 13, "y": 0},
{"matrix": [1, 2], "x": 14, "y": 0},
{"matrix": [1, 3], "x": 15.25, "y": 0},
{"matrix": [1, 4], "x": 16.25, "y": 0},
{"matrix": [1, 5], "x": 17.25, "y": 0},
{"matrix": [2, 0], "x": 0, "y": 1.5},
{"matrix": [2, 1], "x": 1, "y": 1.5},
{"matrix": [2, 2], "x": 2, "y": 1.5},
{"matrix": [2, 3], "x": 3, "y": 1.5},
{"matrix": [2, 4], "x": 4, "y": 1.5},
{"matrix": [2, 5], "x": 5, "y": 1.5},
{"matrix": [2, 6], "x": 6, "y": 1.5},
{"matrix": [2, 7], "x": 7, "y": 1.5},
{"matrix": [2, 8], "x": 8, "y": 1.5},
{"matrix": [2, 9], "x": 9, "y": 1.5},
{"matrix": [3, 0], "x": 10, "y": 1.5},
{"matrix": [3, 1], "x": 11, "y": 1.5},
{"matrix": [3, 2], "x": 12, "y": 1.5},
{"matrix": [3, 3], "x": 13, "y": 1.5, "w": 2},
{"matrix": [3, 4], "x": 15.25, "y": 1.5},
{"matrix": [3, 5], "x": 16.25, "y": 1.5},
{"matrix": [3, 6], "x": 17.25, "y": 1.5},
{"matrix": [3, 7], "x": 18.5, "y": 1.5},
{"matrix": [3, 8], "x": 19.5, "y": 1.5},
{"matrix": [3, 9], "x": 20.5, "y": 1.5},
{"matrix": [1, 9], "x": 21.5, "y": 1.5},
{"matrix": [4, 0], "x": 0, "y": 2.5, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 2.5},
{"matrix": [4, 2], "x": 2.5, "y": 2.5},
{"matrix": [4, 3], "x": 3.5, "y": 2.5},
{"matrix": [4, 4], "x": 4.5, "y": 2.5},
{"matrix": [4, 5], "x": 5.5, "y": 2.5},
{"matrix": [4, 6], "x": 6.5, "y": 2.5},
{"matrix": [4, 7], "x": 7.5, "y": 2.5},
{"matrix": [4, 8], "x": 8.5, "y": 2.5},
{"matrix": [4, 9], "x": 9.5, "y": 2.5},
{"matrix": [5, 0], "x": 10.5, "y": 2.5},
{"matrix": [5, 1], "x": 11.5, "y": 2.5},
{"matrix": [5, 2], "x": 12.5, "y": 2.5},
{"matrix": [5, 3], "x": 13.5, "y": 2.5, "w": 1.5},
{"matrix": [5, 4], "x": 15.25, "y": 2.5},
{"matrix": [5, 5], "x": 16.25, "y": 2.5},
{"matrix": [5, 6], "x": 17.25, "y": 2.5},
{"matrix": [5, 7], "x": 18.5, "y": 2.5},
{"matrix": [5, 8], "x": 19.5, "y": 2.5},
{"matrix": [5, 9], "x": 20.5, "y": 2.5},
{"matrix": [1, 8], "x": 21.5, "y": 2.5, "h": 2},
{"matrix": [6, 0], "x": 0, "y": 3.5, "w": 1.75},
{"matrix": [6, 1], "x": 1.75, "y": 3.5},
{"matrix": [6, 2], "x": 2.75, "y": 3.5},
{"matrix": [6, 3], "x": 3.75, "y": 3.5},
{"matrix": [6, 4], "x": 4.75, "y": 3.5},
{"matrix": [6, 5], "x": 5.75, "y": 3.5},
{"matrix": [6, 6], "x": 6.75, "y": 3.5},
{"matrix": [6, 7], "x": 7.75, "y": 3.5},
{"matrix": [6, 8], "x": 8.75, "y": 3.5},
{"matrix": [6, 9], "x": 9.75, "y": 3.5},
{"matrix": [7, 0], "x": 10.75, "y": 3.5},
{"matrix": [7, 1], "x": 11.75, "y": 3.5},
{"matrix": [7, 3], "x": 12.75, "y": 3.5, "w": 2.25},
{"matrix": [7, 6], "x": 18.5, "y": 3.5},
{"matrix": [7, 7], "x": 19.5, "y": 3.5},
{"matrix": [7, 8], "x": 20.5, "y": 3.5},
{"matrix": [8, 0], "x": 0, "y": 4.5, "w": 2.25},
{"matrix": [8, 2], "x": 2.25, "y": 4.5},
{"matrix": [8, 3], "x": 3.25, "y": 4.5},
{"matrix": [8, 4], "x": 4.25, "y": 4.5},
{"matrix": [8, 5], "x": 5.25, "y": 4.5},
{"matrix": [8, 6], "x": 6.25, "y": 4.5},
{"matrix": [8, 7], "x": 7.25, "y": 4.5},
{"matrix": [8, 8], "x": 8.25, "y": 4.5},
{"matrix": [8, 9], "x": 9.25, "y": 4.5},
{"matrix": [9, 0], "x": 10.25, "y": 4.5},
{"matrix": [9, 1], "x": 11.25, "y": 4.5},
{"matrix": [9, 2], "x": 12.25, "y": 4.5, "w": 2.75},
{"matrix": [9, 4], "x": 16.25, "y": 4.5},
{"matrix": [9, 6], "x": 18.5, "y": 4.5},
{"matrix": [9, 7], "x": 19.5, "y": 4.5},
{"matrix": [9, 8], "x": 20.5, "y": 4.5},
{"matrix": [9, 9], "x": 21.5, "y": 4.5, "h": 2},
{"matrix": [10, 0], "x": 0, "y": 5.5, "w": 1.25},
{"matrix": [10, 1], "x": 1.25, "y": 5.5, "w": 1.25},
{"matrix": [10, 2], "x": 2.5, "y": 5.5, "w": 1.25},
{"matrix": [10, 7], "x": 3.75, "y": 5.5, "w": 6.25},
{"matrix": [11, 0], "x": 10, "y": 5.5, "w": 1.25},
{"matrix": [11, 1], "x": 11.25, "y": 5.5, "w": 1.25},
{"matrix": [11, 2], "x": 12.5, "y": 5.5, "w": 1.25},
{"matrix": [11, 3], "x": 13.75, "y": 5.5, "w": 1.25},
{"matrix": [11, 4], "x": 15.25, "y": 5.5},
{"matrix": [11, 5], "x": 16.25, "y": 5.5},
{"matrix": [11, 6], "x": 17.25, "y": 5.5},
{"matrix": [11, 7], "x": 18.5, "y": 5.5, "w": 2},
{"matrix": [11, 8], "x": 20.5, "y": 5.5}
]
},
"LAYOUT_fullsize_iso": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 2, "y": 0},
{"matrix": [0, 2], "x": 3, "y": 0},
{"matrix": [0, 3], "x": 4, "y": 0},
{"matrix": [0, 4], "x": 5, "y": 0},
{"matrix": [0, 5], "x": 6.5, "y": 0},
{"matrix": [0, 6], "x": 7.5, "y": 0},
{"matrix": [0, 7], "x": 8.5, "y": 0},
{"matrix": [0, 8], "x": 9.5, "y": 0},
{"matrix": [0, 9], "x": 11, "y": 0},
{"matrix": [1, 0], "x": 12, "y": 0},
{"matrix": [1, 1], "x": 13, "y": 0},
{"matrix": [1, 2], "x": 14, "y": 0},
{"matrix": [1, 3], "x": 15.25, "y": 0},
{"matrix": [1, 4], "x": 16.25, "y": 0},
{"matrix": [1, 5], "x": 17.25, "y": 0},
{"matrix": [2, 0], "x": 0, "y": 1.5},
{"matrix": [2, 1], "x": 1, "y": 1.5},
{"matrix": [2, 2], "x": 2, "y": 1.5},
{"matrix": [2, 3], "x": 3, "y": 1.5},
{"matrix": [2, 4], "x": 4, "y": 1.5},
{"matrix": [2, 5], "x": 5, "y": 1.5},
{"matrix": [2, 6], "x": 6, "y": 1.5},
{"matrix": [2, 7], "x": 7, "y": 1.5},
{"matrix": [2, 8], "x": 8, "y": 1.5},
{"matrix": [2, 9], "x": 9, "y": 1.5},
{"matrix": [3, 0], "x": 10, "y": 1.5},
{"matrix": [3, 1], "x": 11, "y": 1.5},
{"matrix": [3, 2], "x": 12, "y": 1.5},
{"matrix": [3, 3], "x": 13, "y": 1.5, "w": 2},
{"matrix": [3, 4], "x": 15.25, "y": 1.5},
{"matrix": [3, 5], "x": 16.25, "y": 1.5},
{"matrix": [3, 6], "x": 17.25, "y": 1.5},
{"matrix": [3, 7], "x": 18.5, "y": 1.5},
{"matrix": [3, 8], "x": 19.5, "y": 1.5},
{"matrix": [3, 9], "x": 20.5, "y": 1.5},
{"matrix": [1, 9], "x": 21.5, "y": 1.5},
{"matrix": [4, 0], "x": 0, "y": 2.5, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 2.5},
{"matrix": [4, 2], "x": 2.5, "y": 2.5},
{"matrix": [4, 3], "x": 3.5, "y": 2.5},
{"matrix": [4, 4], "x": 4.5, "y": 2.5},
{"matrix": [4, 5], "x": 5.5, "y": 2.5},
{"matrix": [4, 6], "x": 6.5, "y": 2.5},
{"matrix": [4, 7], "x": 7.5, "y": 2.5},
{"matrix": [4, 8], "x": 8.5, "y": 2.5},
{"matrix": [4, 9], "x": 9.5, "y": 2.5},
{"matrix": [5, 0], "x": 10.5, "y": 2.5},
{"matrix": [5, 1], "x": 11.5, "y": 2.5},
{"matrix": [5, 2], "x": 12.5, "y": 2.5},
{"matrix": [5, 4], "x": 15.25, "y": 2.5},
{"matrix": [5, 5], "x": 16.25, "y": 2.5},
{"matrix": [5, 6], "x": 17.25, "y": 2.5},
{"matrix": [5, 7], "x": 18.5, "y": 2.5},
{"matrix": [5, 8], "x": 19.5, "y": 2.5},
{"matrix": [5, 9], "x": 20.5, "y": 2.5},
{"matrix": [1, 8], "x": 21.5, "y": 2.5, "h": 2},
{"matrix": [6, 0], "x": 0, "y": 3.5, "w": 1.75},
{"matrix": [6, 1], "x": 1.75, "y": 3.5},
{"matrix": [6, 2], "x": 2.75, "y": 3.5},
{"matrix": [6, 3], "x": 3.75, "y": 3.5},
{"matrix": [6, 4], "x": 4.75, "y": 3.5},
{"matrix": [6, 5], "x": 5.75, "y": 3.5},
{"matrix": [6, 6], "x": 6.75, "y": 3.5},
{"matrix": [6, 7], "x": 7.75, "y": 3.5},
{"matrix": [6, 8], "x": 8.75, "y": 3.5},
{"matrix": [6, 9], "x": 9.75, "y": 3.5},
{"matrix": [7, 0], "x": 10.75, "y": 3.5},
{"matrix": [7, 1], "x": 11.75, "y": 3.5},
{"matrix": [7, 2], "x": 12.75, "y": 3.5},
{"matrix": [7, 3], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2},
{"matrix": [7, 6], "x": 18.5, "y": 3.5},
{"matrix": [7, 7], "x": 19.5, "y": 3.5},
{"matrix": [7, 8], "x": 20.5, "y": 3.5},
{"matrix": [8, 0], "x": 0, "y": 4.5, "w": 1.25},
{"matrix": [8, 1], "x": 1.25, "y": 4.5},
{"matrix": [8, 2], "x": 2.25, "y": 4.5},
{"matrix": [8, 3], "x": 3.25, "y": 4.5},
{"matrix": [8, 4], "x": 4.25, "y": 4.5},
{"matrix": [8, 5], "x": 5.25, "y": 4.5},
{"matrix": [8, 6], "x": 6.25, "y": 4.5},
{"matrix": [8, 7], "x": 7.25, "y": 4.5},
{"matrix": [8, 8], "x": 8.25, "y": 4.5},
{"matrix": [8, 9], "x": 9.25, "y": 4.5},
{"matrix": [9, 0], "x": 10.25, "y": 4.5},
{"matrix": [9, 1], "x": 11.25, "y": 4.5},
{"matrix": [9, 2], "x": 12.25, "y": 4.5, "w": 2.75},
{"matrix": [9, 4], "x": 16.25, "y": 4.5},
{"matrix": [9, 6], "x": 18.5, "y": 4.5},
{"matrix": [9, 7], "x": 19.5, "y": 4.5},
{"matrix": [9, 8], "x": 20.5, "y": 4.5},
{"matrix": [9, 9], "x": 21.5, "y": 4.5, "h": 2},
{"matrix": [10, 0], "x": 0, "y": 5.5, "w": 1.25},
{"matrix": [10, 1], "x": 1.25, "y": 5.5, "w": 1.25},
{"matrix": [10, 2], "x": 2.5, "y": 5.5, "w": 1.25},
{"matrix": [10, 7], "x": 3.75, "y": 5.5, "w": 6.25},
{"matrix": [11, 0], "x": 10, "y": 5.5, "w": 1.25},
{"matrix": [11, 1], "x": 11.25, "y": 5.5, "w": 1.25},
{"matrix": [11, 2], "x": 12.5, "y": 5.5, "w": 1.25},
{"matrix": [11, 3], "x": 13.75, "y": 5.5, "w": 1.25},
{"matrix": [11, 4], "x": 15.25, "y": 5.5},
{"matrix": [11, 5], "x": 16.25, "y": 5.5},
{"matrix": [11, 6], "x": 17.25, "y": 5.5},
{"matrix": [11, 7], "x": 18.5, "y": 5.5, "w": 2},
{"matrix": [11, 8], "x": 20.5, "y": 5.5}
]
}
}
}

View File

@@ -1,27 +0,0 @@
/* Copyright 2025 Henrik Otte Sørensen (@henrikottesorensen)
*
* 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_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_INS, KC_HOME, KC_PGUP, KC_NUM, 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_PEQL,
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_BSLS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT)
};

View File

@@ -1,59 +0,0 @@
/* Copyright 2025 Henrik Otte Sørensen (@henrikottesorensen)
*
* 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 LAYER {
_PC = 0,
_MAC,
_FN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_PC] = 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_INS, KC_HOME, KC_PGUP, KC_NUM, 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_PEQL,
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_BSLS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, KC_RGUI, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[_MAC] = LAYOUT_all(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_WSCH, KC_LPAD, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS,
KC_NUBS, 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_INS, KC_HOME, KC_PGUP, KC_NUM, 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_PEQL,
KC_LSFT, KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPACE, KC_RGUI, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
[_FN] = LAYOUT_all(
_______, 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_VOLU, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DF(_PC), _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______,
_______, _______, _______, DB_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, QK_BOOT, _______, DF(_MAC),_______, _______, _______, _______, _______, KC_MPLY, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_APP, KC_MPRV, KC_MSTP, KC_MNXT, _______, _______)
};
bool process_detected_host_os_user(os_variant_t detected_os) {
/* If Apple, swap to macOS layer. */
if (detected_os == OS_MACOS || detected_os == OS_IOS) {
set_single_default_layer(_MAC);
}
else /* Else use PC layer */ {
set_single_default_layer(_PC);
}
return true;
}

View File

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

View File

@@ -1,25 +0,0 @@
# AT101(-ish)
A replacement PCB for Dell AT101 family. (In theory) supports AT101, AT101W, AT102, AT102W, maybe other Bigfoot platform boards.
Keyboard Maintainer: QMK Community and Henrik O. Sørensen
Hardware Supported: AT101(ish) PCB
Hardware Availability: https://github.com/henrikosorensen/keyboard_pcbs/tree/master/at101_pcb
Make example for this keyboard (after setting up your build environment):
make handwired/at101ish:default
Flashing example for this keyboard:
make handwired/at101ish: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 2 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**: Briefly press the programming button on the teensy 2.0 PCB.

View File

@@ -1,13 +0,0 @@
// Copyright 2025 Erik Peyronson @erikpeyronson
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
#define I2C_DRIVER I2CD1
#define OLED_IC OLED_IC_SH1106
#define OLED_COLUMN_OFFSET 2
#define OLED_DISPLAY_128X64

View File

@@ -1,63 +0,0 @@
// Copyright 2025 Erik Peyronson @erikpeyronson
// SPDX-License-Identifier: GPL-3.0-or-later
#include QMK_KEYBOARD_H
static void oled_render_logo(void) {
// clang-format off
static const char PROGMEM qmk_logo[] = {
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
};
// clang-format on
oled_write_P(qmk_logo, false);
}
static void render_layer(void) {
oled_write_P(PSTR("Layer: "), false);
oled_write_ln(get_u8_str(get_highest_layer(layer_state), ' '), false);
}
static void render_locks(void) {
led_t led_config = host_keyboard_led_state();
oled_write_P(PSTR("Caps "), led_config.caps_lock);
oled_write_P(PSTR("Scrl "), led_config.scroll_lock);
oled_write_P(PSTR("Num "), led_config.num_lock);
#ifdef CAPS_WORD_ENABLE
oled_write_P(PSTR("Word "), is_caps_word_on());
#endif
oled_advance_page(true);
}
static void render_mods(void) {
uint8_t mod_state = get_mods();
oled_write_P("Ctrl ", mod_state & MOD_MASK_CTRL);
oled_write_P("Shift ", mod_state & MOD_MASK_SHIFT);
oled_write_P("Alt ", mod_state & MOD_MASK_ALT);
oled_write_P("Gui", mod_state & MOD_MASK_GUI);
oled_advance_page(true);
}
static void render_delimeter(void) {
oled_write_ln_P(PSTR("------------------"), false);
}
bool oled_task_kb(void) {
if (!oled_task_user()) {
return false;
}
if (is_keyboard_left()) {
oled_render_logo();
} else {
render_delimeter();
render_locks();
render_delimeter();
render_mods();
render_delimeter();
render_layer();
render_delimeter();
}
return false;
}

View File

@@ -1,107 +0,0 @@
{
"manufacturer": "Erik Peyronson",
"keyboard_name": "erkbd",
"maintainer": "erikpeyronson",
"bootloader": "rp2040",
"bootloader_instructions": "Double tap the reset button on the controller board if accessable. If not hold down bootmagic key while powering on. Left side: row 0 column 0. (The tab key on regular keyboard). Right side: row 5 column 4 (the Backspace key on regular keyboard)",
"diode_direction": "COL2ROW",
"encoder": {
"rotary": [
{"pin_a": "GP7", "pin_b": "GP8"}
]
},
"features": {
"bootmagic": true,
"encoder": true,
"oled": true
},
"matrix_pins": {
"cols": ["GP8", "GP9", "GP10", "GP11", "GP12", "GP13"],
"rows": ["GP4", "GP5", "GP6", "GP7"]
},
"processor": "RP2040",
"split": {
"bootmagic": {
"matrix": [4, 5]
},
"enabled": true,
"encoder": {
"right": {
"rotary": [
{"pin_a": "GP7", "pin_b": "GP8"}
]
}
},
"handedness": {
"pin": "GP1"
},
"matrix_pins": {
"right": {
"cols": ["GP9", "GP10", "GP11", "GP12", "GP13", "GP14"],
"rows": ["GP28", "GP27", "GP26", "GP15"]
}
},
"serial": {
"driver": "vendor",
"pin": "GP0"
}
},
"url": "https://github.com/erikpeyronson/erkbd",
"usb": {
"device_version": "1.0.0",
"pid": "0x1234",
"vid": "0xFEED"
},
"layouts": {
"LAYOUT_split_3x6_5": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0.4},
{"matrix": [0, 1], "x": 1, "y": 0.3},
{"matrix": [0, 2], "x": 2, "y": 0.1},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0.1},
{"matrix": [0, 5], "x": 5, "y": 0.2},
{"matrix": [4, 0], "x": 9, "y": 0.2},
{"matrix": [4, 1], "x": 10, "y": 0.1},
{"matrix": [4, 2], "x": 11, "y": 0},
{"matrix": [4, 3], "x": 12, "y": 0.1},
{"matrix": [4, 4], "x": 13, "y": 0.3},
{"matrix": [4, 5], "x": 14, "y": 0.4},
{"matrix": [1, 0], "x": 0, "y": 1.4},
{"matrix": [1, 1], "x": 1, "y": 1.3},
{"matrix": [1, 2], "x": 2, "y": 1.1},
{"matrix": [1, 3], "x": 3, "y": 1},
{"matrix": [1, 4], "x": 4, "y": 1.1},
{"matrix": [1, 5], "x": 5, "y": 1.2},
{"matrix": [5, 0], "x": 9, "y": 1.2},
{"matrix": [5, 1], "x": 10, "y": 1.1},
{"matrix": [5, 2], "x": 11, "y": 1},
{"matrix": [5, 3], "x": 12, "y": 1.1},
{"matrix": [5, 4], "x": 13, "y": 1.3},
{"matrix": [5, 5], "x": 14, "y": 1.4},
{"matrix": [2, 0], "x": 0, "y": 2.4},
{"matrix": [2, 1], "x": 1, "y": 2.3},
{"matrix": [2, 2], "x": 2, "y": 2.1},
{"matrix": [2, 3], "x": 3, "y": 2},
{"matrix": [2, 4], "x": 4, "y": 2.1},
{"matrix": [2, 5], "x": 5, "y": 2.2},
{"matrix": [6, 0], "x": 9, "y": 2.2},
{"matrix": [6, 1], "x": 10, "y": 2.1},
{"matrix": [6, 2], "x": 11, "y": 2},
{"matrix": [6, 3], "x": 12, "y": 2.1},
{"matrix": [6, 4], "x": 13, "y": 2.3},
{"matrix": [6, 5], "x": 14, "y": 2.4},
{"matrix": [3, 1], "x": 3, "y": 3.4},
{"matrix": [3, 2], "x": 4, "y": 3.4},
{"matrix": [3, 3], "x": 5, "y": 3.5},
{"matrix": [3, 4], "x": 6, "y": 3.7},
{"matrix": [3, 5], "x": 6, "y": 2.7},
{"matrix": [7, 0], "x": 8, "y": 2.7},
{"matrix": [7, 1], "x": 8, "y": 3.7},
{"matrix": [7, 2], "x": 9, "y": 3.5},
{"matrix": [7, 3], "x": 10, "y": 3.4},
{"matrix": [7, 4], "x": 11, "y": 3.4}
]
}
}
}

View File

@@ -1,52 +0,0 @@
// Copyright 2025 Qmk, Erik Peyronson @erikpeyronson
// SPDX-License-Identifier: GPL-3.0-or-later
// NOTE: This keymap is for debugging purposes to have firmware to test the matrix when building the keyboard. If you intend to build this keyboard
// you should copy this to your fork or userspace repository and create your own.
#include QMK_KEYBOARD_H
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_split_3x6_5(
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_LBRC, KC_RBRC, KC_LGUI, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, KC_RALT, KC_LPRN, KC_RPRN
)
};
// clang-format on
void keyboard_post_init_user(void) {
#ifdef CONSOLE_ENABLE
debug_enable = true;
debug_matrix = true;
#endif
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// If console is enabled, it will print the matrix position and status of each key pressed
#ifdef CONSOLE_ENABLE
uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %u, time: %5u, int: %u, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);
#endif
return true;
}
// This function prints which half the keyboard considers itself to be which is
// useful for verify if the handedness pin and display is correctly set up when building
#ifdef OLED_ENABLE
bool oled_task_user(void) {
if (is_keyboard_left()) {
oled_write_P(PSTR("left"), false);
} else {
oled_write_P(PSTR("right"), false);
}
return false;
}
#endif
#ifdef ENCODER_MAP_ENABLE
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[0] = {ENCODER_CCW_CW(KC_UP, KC_DOWN), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT)}
};
#endif

View File

@@ -1,2 +0,0 @@
ENCODER_MAP_ENABLE = yes
CONSOLE_ENABLE = yes

View File

@@ -1,24 +0,0 @@
{
"keyboard": "handwired/erikpeyronson/erkbd",
"keymap": "default",
"layout": "LAYOUT_split_3x6_5",
"layers": [
[
"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_LBRC", "KC_RBRC", "KC_LGUI", "KC_BSPC", "KC_SPC", "KC_SPC", "KC_ENT", "KC_RALT", "KC_LPRN", "KC_RPRN"
]
],
"config": {
"features": {
"encoder_map": true
}
},
"encoders": [
[
{ "ccw": "KC_UP", "cw": "KC_DOWN" },
{ "ccw": "KC_RIGHT", "cw": "KC_LEFT" }
]
]
}

View File

@@ -1,28 +0,0 @@
# handwired/erikpeyronson/erkbd
![Erkbd](https://i.imgur.com/VViiXIN.jpeg)
3D printed, handwired 44 key split keyboard featuring two encoders, two 1.3" 128x64 oled displays using the waveshare rp2040zero development board.
* Keyboard Maintainer: [Erik Peyronson](https://github.com/erikpeyronson)
* Hardware Supported: See keyboard repository on [github](https://github.com/erikpeyronson/erkbd)
* Hardware Availability: See keyboard repository on [github](https://github.com/erikpeyronson/erkbd)
Make example for this keyboard (after setting up your build environment):
make handwired/erikpeyronson/erkbd:default
Flashing example for this keyboard:
Enter bootloader, drag and drop .uft2 file on the removable storage
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**: For left half hold down the key at (0,0) in the matrix (correspons with the tab key) and plug in the keyboard.
For left half half the key is (4,5) (corresponds with the backspace key)
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Enter the bootloader in 3 ways:

View File

@@ -1,21 +0,0 @@
/* Copyright 2024-2025 Grigory Avdyushin
*
* 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 I2C_DRIVER I2CD0
#define I2C1_SDA_PIN GP0
#define I2C1_SCL_PIN GP1

View File

@@ -1,68 +0,0 @@
/* Copyright 2024-2025 Grigory Avdyushin
*
* 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
#ifdef OLED_ENABLE
static void render_logo(void) {
static const char PROGMEM qmk_logo[] = {
0x80, 0x81, 0x82, 0x83, 0x84,
0xA0, 0xA1, 0xA2, 0xA3, 0xA4,
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0x00, 0x0A, 0x0A
};
oled_write_P(qmk_logo, false);
}
static void render_mod_status(uint8_t modifiers) {
oled_write_P(PSTR("MODS:"), false);
oled_write_P(PSTR("S"), (modifiers & MOD_MASK_SHIFT));
oled_write_P(PSTR("C"), (modifiers & MOD_MASK_CTRL));
oled_write_P(PSTR("A"), (modifiers & MOD_MASK_ALT));
oled_write_ln_P(PSTR("G"), (modifiers & MOD_MASK_GUI));
oled_write_ln_P(PSTR(" "), false);
}
static void render_layer_state(void) {
oled_write_ln_P(PSTR(" "), false);
oled_write_P("BASE ", layer_state_is(0));
oled_write_P("LOWER", layer_state_is(1));
oled_write_P("RAISE", layer_state_is(2));
oled_write_P("NAV ", layer_state_is(3));
oled_write_ln_P(PSTR(" "), false);
}
static void render_capsword_state(bool on) {
oled_write_ln_P("CAPSW", on);
}
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
return OLED_ROTATION_270;
}
bool oled_task_kb(void) {
if (!oled_task_user()) {
return false;
}
render_logo();
render_layer_state();
render_mod_status(get_mods() | get_oneshot_mods());
render_capsword_state(is_caps_word_on());
return false;
}
#endif

View File

@@ -1,21 +0,0 @@
/* Copyright 2024-2025 Grigory Avdyushin
*
* 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 HAL_USE_I2C TRUE
#include_next <halconf.h>

View File

@@ -1,72 +0,0 @@
{
"manufacturer": "Grigory Avdyushin",
"keyboard_name": "franky36",
"maintainer": "Grigory Avdyushin",
"bootloader": "rp2040",
"caps_word": {
"both_shifts_turns_on": true
},
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"caps_word": true,
"extrakey": true,
"mousekey": true,
"nkro": true,
"oled": true
},
"matrix_pins": {
"cols": ["GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15", "GP26", "GP27", "GP28"],
"rows": ["GP5", "GP4", "GP3", "GP2"]
},
"processor": "RP2040",
"url": "https://github.com/avdyushin/franky36",
"usb": {
"device_version": "0.2.0",
"pid": "0x0001",
"vid": "0xFEED"
},
"community_layouts": ["split_3x5_3"],
"layouts": {
"LAYOUT_split_3x5_3": {
"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": [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": 5, "y": 1},
{"matrix": [1, 6], "x": 6, "y": 1},
{"matrix": [1, 7], "x": 7, "y": 1},
{"matrix": [1, 8], "x": 8, "y": 1},
{"matrix": [1, 9], "x": 9, "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": 5, "y": 2},
{"matrix": [2, 6], "x": 6, "y": 2},
{"matrix": [2, 7], "x": 7, "y": 2},
{"matrix": [2, 8], "x": 8, "y": 2},
{"matrix": [2, 9], "x": 9, "y": 2},
{"matrix": [3, 2], "x": 2, "y": 3},
{"matrix": [3, 3], "x": 3, "y": 3},
{"matrix": [3, 4], "x": 4, "y": 3},
{"matrix": [3, 5], "x": 5, "y": 3},
{"matrix": [3, 6], "x": 6, "y": 3},
{"matrix": [3, 7], "x": 7, "y": 3}
]
}
}
}

View File

@@ -1,123 +0,0 @@
/* Copyright 2024-2025 Grigory Avdyushin
*
* 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 my_layers {
_BASE = 0,
_LOWER,
_RAISE,
_NAV,
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
#define NAV MO(_NAV)
#define OSM_LSFT OSM(MOD_LSFT) // One Shot Right Shift
#define KC_SFT_Z SFT_T(KC_Z) // Left Shift when held, Z when tapped
#define KC_SFT_SL RSFT_T(KC_SLSH) // Right Shift when held, / when tapped
#define KC_SFT_BSLS RSFT_T(KC_BSLS) // Right Shift when held, \ when tapped
#define KC_LWR_SPC LT(_LOWER, KC_SPC) // Lower layer when held, Space when tapped
#define KC_RSE_BSPC LT(_RAISE, KC_BSPC) // Raise layer when held, Backspace when tapped
#define KC_NAV_A LT(_NAV,KC_A) // Navigation layer when held, A when tapped
#define KC_CMD_TAB CMD_T(KC_TAB) // Left Command when held, Tab when tapped
#define KC_CMD_ENT RCMD_T(KC_ENT) // Right Command when held, Enter when tapped
#define KC_CTL_ESC CTL_T(KC_ESC) // Left Control when held, Escape when tapped
#define KC_OPT_OSM_SFT ROPT_T(OSM_LSFT) // Right Option when held, One Shot Shift when tapped
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐
* │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │
* ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
* │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ;:│
* ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
* │⇧/Z│ X │ C │ V │ B │ │ N │ M │ ,<│ .>│⇧/?│
* └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
* ┌───┬───┬───┐ ┌───┬───┬───┐
* │CTL│CMD│SPC│ │ENT│CMD│OPT│
* └───┴───┴───┘ └───┴───┴───┘
*/
[_BASE] = LAYOUT_split_3x5_3(
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
KC_NAV_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
KC_SFT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SFT_SL,
KC_CTL_ESC, KC_CMD_TAB, KC_LWR_SPC, KC_RSE_BSPC, KC_CMD_ENT, KC_ROPT
),
/*
* ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐
* │ 1!│ 2@│ 3#│ 4$│ 5%│ │ 6^│ 7&│ 8*│ 9(│ 0)│
* ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
* │ `~│ │ │ │ │ │ ← │ ↓ │ ↑ │ → │ '"│
* ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
* │ ⇧ │ │ │ │ │ │ -_│ =+│ [{│ ]}│ \|│
* └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
* ┌───┬───┬───┐ ┌───┬───┬───┐
* │ │ │ │ │ │ │ │
* └───┴───┴───┘ └───┴───┴───┘
*/
[_LOWER] = LAYOUT_split_3x5_3(
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
KC_GRV, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_QUOT,
KC_LSFT, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_SFT_BSLS,
_______, _______, _______, _______, _______, _______
),
/*
* ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐
* │ F1│ F2│ F3│ F4│ F5│ │ F6│ F7│ F8│ F9│F10│
* ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
* │ │ │ │ │ │ │ │ │ │ │ │
* ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
* │ │ │ │ │ │ │ │ │ │ │ │
* └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
* ┌───┬───┬───┐ ┌───┬───┬───┐
* │ │ │ │ │ │ │ │
* └───┴───┴───┘ └───┴───┴───┘
*/
[_RAISE] = LAYOUT_split_3x5_3(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______
),
/*
* ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐
* │ │ │ │ │ │ │HOM│ │ │END│ │
* ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
* │ │ │ │ │ │ │ ← │ ↓ │ ↑ │ → │ │
* ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
* │ │ │ │ │ │ │PUP│ │ │PDN│ │
* └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
* ┌───┬───┬───┐ ┌───┬───┬───┐
* │ │ │ │ │ │ │ │
* └───┴───┴───┘ └───┴───┴───┘
*/
[_NAV] = LAYOUT_split_3x5_3(
_______, _______, _______, _______, _______, KC_HOME, _______, _______, KC_END, _______,
_______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______,
_______, _______, _______, _______, _______, KC_PGUP, _______, _______, KC_PGDN, _______,
_______, _______, _______, _______, _______, _______
)
};

View File

@@ -1,24 +0,0 @@
/* Copyright 2024-2025 Grigory Avdyushin
*
* 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_next <mcuconf.h>
#undef RP_I2C_USE_I2C0
#define RP_I2C_USE_I2C0 TRUE
#undef RP_I2C_USE_I2C1
#define RP_I2C_USE_I2C1 FALSE

View File

@@ -1,25 +0,0 @@
# franky36
Franky36 is 36 key compact handwired split keyboard that uses single RP2040-Zero controller.
* Keyboard Maintainer: [Grigory Avdyushin](https://github.com/avdyushin)
* Hardware Supported: RP2040-Zero
* Hardware Availability: Handwired [franky36](https://github.com/avdyushin/franky36)
Make example for this keyboard (after setting up your build environment):
make franky36:default
Flashing example for this keyboard:
make franky36: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**: Hold down the reset button on the controller and plug in the keyboard
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -2,7 +2,7 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define ADC_PIN A5
#define ADC_PIN A0
#define SOLENOID_PINS { B12, B13, B14, B15 }
#define SOLENOID_PINS_ACTIVE_STATE { high, high, low }

View File

@@ -3,17 +3,17 @@
"processor": "STM32F446",
"bootloader": "stm32-dfu",
"matrix_pins": {
"cols": ["A0"],
"cols": ["A2"],
"rows": ["A1"]
},
"backlight": {
"pin": "B8"
},
"ws2812": {
"pin": "A4"
"pin": "A0"
},
"apa102": {
"data_pin": "A4",
"data_pin": "A0",
"clock_pin": "B13"
}
}

View File

@@ -1,5 +1,5 @@
# STM32 Nucleo-L432 onekey
To trigger keypress, short together pins *A0* and *A1*. Note that the pin numbering is relative to the MCU, so that A0 and A1 refer to PA0 and PA1 on the MCU (which are also labelled A0 and A1 on the board, but this isn't true for the other PAx pins).
To trigger keypress, short together pins *A1* and *A2*.
You'll also need to connect `VIN`, `GND`, USB `D+` to `PA12`/`D2`, and USB `D-` to `PA11`/`D10`.

View File

@@ -1,104 +0,0 @@
{
"manufacturer": "Cherry",
"keyboard_name": "Protype Display Typewriter",
"maintainer": "nooges",
"bootloader": "rp2040",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"matrix_pins": {
"rows": ["GP29", "GP28", "GP27", "GP26", "GP22", "GP20", "GP23", "GP21"],
"cols": ["GP12", "GP9", "GP10", "GP0", "GP1", "GP5", "GP6", "GP2", "GP3", "GP4"]
},
"processor": "RP2040",
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0xB7D7",
"vid": "0x046A"
},
"layouts": {
"LAYOUT": {
"layout": [
{ "label": "F1", "matrix": [0, 0], "w": 1.5, "x": 0, "y": 0 },
{ "label": "F2", "matrix": [0, 1], "w": 1.5, "x": 1.5, "y": 0 },
{ "label": "`", "matrix": [0, 2], "x": 3.5, "y": 0 },
{ "label": "1", "matrix": [0, 3], "x": 4.5, "y": 0 },
{ "label": "2", "matrix": [0, 4], "x": 5.5, "y": 0 },
{ "label": "3", "matrix": [0, 5], "x": 6.5, "y": 0 },
{ "label": "4", "matrix": [0, 6], "x": 7.5, "y": 0 },
{ "label": "5", "matrix": [0, 7], "x": 8.5, "y": 0 },
{ "label": "6", "matrix": [0, 8], "x": 9.5, "y": 0 },
{ "label": "7", "matrix": [0, 9], "x": 10.5, "y": 0 },
{ "label": "8", "matrix": [4, 8], "x": 11.5, "y": 0 },
{ "label": "9", "matrix": [4, 7], "x": 12.5, "y": 0 },
{ "label": "0", "matrix": [4, 6], "x": 13.5, "y": 0 },
{ "label": "-", "matrix": [4, 5], "x": 14.5, "y": 0 },
{ "label": "=", "matrix": [4, 4], "x": 15.5, "y": 0 },
{ "label": "Backspace", "matrix": [4, 3], "w": 2, "x": 16.5, "y": 0 },
{ "label": "Pg Up", "matrix": [4, 2], "x": 18.5, "y": 0 },
{ "label": "F8", "matrix": [4, 1], "w": 1.5, "x": 20, "y": 0 },
{ "label": "F9", "matrix": [4, 0], "w": 1.5, "x": 21.5, "y": 0 },
{ "label": "F3", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "F4", "matrix": [1, 1], "w": 1.5, "x": 1.5, "y": 1 },
{ "label": "Tab", "matrix": [1, 2], "w": 1.5, "x": 3.5, "y": 1 },
{ "label": "Q", "matrix": [1, 3], "x": 5, "y": 1 },
{ "label": "W", "matrix": [1, 4], "x": 6, "y": 1 },
{ "label": "E", "matrix": [1, 5], "x": 7, "y": 1 },
{ "label": "R", "matrix": [1, 6], "x": 8, "y": 1 },
{ "label": "T", "matrix": [1, 7], "x": 9, "y": 1 },
{ "label": "Y", "matrix": [1, 8], "x": 10, "y": 1 },
{ "label": "U", "matrix": [5, 9], "x": 11, "y": 1 },
{ "label": "I", "matrix": [5, 8], "x": 12, "y": 1 },
{ "label": "O", "matrix": [5, 7], "x": 13, "y": 1 },
{ "label": "P", "matrix": [5, 6], "x": 14, "y": 1 },
{ "label": "[", "matrix": [5, 5], "x": 15, "y": 1 },
{ "label": "]", "matrix": [5, 4], "x": 16, "y": 1 },
{ "label": "\\", "matrix": [5, 3], "w": 1.5, "x": 17, "y": 1 },
{ "label": "Pg Dn", "matrix": [5, 2], "x": 18.5, "y": 1 },
{ "label": "F10", "matrix": [5, 1], "w": 1.5, "x": 20, "y": 1 },
{ "label": "F11", "matrix": [5, 0], "w": 1.5, "x": 21.5, "y": 1 },
{ "label": "F5", "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2 },
{ "label": "F6", "matrix": [2, 1], "w": 1.5, "x": 1.5, "y": 2 },
{ "label": "Caps Lock", "matrix": [2, 2], "w": 1.75, "x": 3.5, "y": 2 },
{ "label": "A", "matrix": [2, 3], "x": 5.25, "y": 2 },
{ "label": "S", "matrix": [2, 4], "x": 6.25, "y": 2 },
{ "label": "D", "matrix": [2, 5], "x": 7.25, "y": 2 },
{ "label": "F", "matrix": [2, 6], "x": 8.25, "y": 2 },
{ "label": "G", "matrix": [2, 7], "x": 9.25, "y": 2 },
{ "label": "H", "matrix": [2, 8], "x": 10.25, "y": 2 },
{ "label": "J", "matrix": [2, 9], "x": 11.25, "y": 2 },
{ "label": "K", "matrix": [6, 8], "x": 12.25, "y": 2 },
{ "label": "L", "matrix": [6, 7], "x": 13.25, "y": 2 },
{ "label": ";", "matrix": [6, 6], "x": 14.25, "y": 2 },
{ "label": "'", "matrix": [6, 5], "x": 15.25, "y": 2 },
{ "label": "Enter", "matrix": [6, 4], "w": 2.25, "x": 16.25, "y": 2 },
{ "label": "Up", "matrix": [6, 2], "x": 18.5, "y": 2 },
{ "label": "F12", "matrix": [6, 1], "w": 1.5, "x": 20, "y": 2 },
{ "label": "F13", "matrix": [6, 0], "w": 1.5, "x": 21.5, "y": 2 },
{ "label": "F7", "matrix": [3, 0], "w": 3, "x": 0, "y": 3 },
{ "label": "Ctrl", "matrix": [3, 2], "x": 3.5, "y": 3 },
{ "label": "Shift", "matrix": [3, 3], "w": 1.25, "x": 4.5, "y": 3 },
{ "label": "Z", "matrix": [3, 4], "x": 5.75, "y": 3 },
{ "label": "X", "matrix": [3, 5], "x": 6.75, "y": 3 },
{ "label": "C", "matrix": [3, 6], "x": 7.75, "y": 3 },
{ "label": "V", "matrix": [3, 7], "x": 8.75, "y": 3 },
{ "label": "B", "matrix": [3, 8], "x": 9.75, "y": 3 },
{ "label": "N", "matrix": [7, 9], "x": 10.75, "y": 3 },
{ "label": "M", "matrix": [7, 8], "x": 11.75, "y": 3 },
{ "label": ",", "matrix": [7, 7], "x": 12.75, "y": 3 },
{ "label": ".", "matrix": [7, 6], "x": 13.75, "y": 3 },
{ "label": "/", "matrix": [7, 5], "x": 14.75, "y": 3 },
{ "label": "Shift", "matrix": [7, 4], "w": 2.75, "x": 15.75, "y": 3 },
{ "label": "Down", "matrix": [7, 2], "x": 18.5, "y": 3 },
{ "label": "F14", "matrix": [7, 1], "w": 1.5, "x": 20, "y": 3 },
{ "label": "F15", "matrix": [7, 0], "w": 1.5, "x": 21.5, "y": 3 },
{ "matrix": [3, 1], "w": 9, "x": 6.75, "y": 4 }
]
}
}
}

View File

@@ -1,15 +0,0 @@
// 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(
KC_F1, KC_F2, 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_PGUP, KC_F8, KC_F9,
KC_F3, KC_F4, 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_PGDN, KC_F10, KC_F11,
KC_F5, KC_F6, 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_UP, KC_F12, KC_F13,
KC_F7, KC_LCTL, 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_DOWN, KC_F14, KC_F15,
KC_SPC
)
};

View File

@@ -1,26 +0,0 @@
# Cherry Protype Display Typewriter
![handwired/protype](https://i.imgur.com/hcFikid.jpeg)
Handwired RP2040 Pro Micro (Community Edition) on Cherry Protype Display Typewriter PCB.
* Keyboard Maintainer: [nooges](https://github.com/nooges)
* Hardware Supported: RP2040 Pro Micro Controller
Make example for this keyboard (after setting up your build environment):
qmk compile -kb handwired/protype -km default
Flashing example for this keyboard:
qmk flash -kb handwired/protype -km default
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**: Hold the Boot button on the microcontroller and then press Reset
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -1,40 +0,0 @@
{
"manufacturer": "jankycaps",
"keyboard_name": "Janky No.9",
"maintainer": "telybelly",
"development_board": "promicro",
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true
},
"matrix_pins": {
"direct": [
["F4", "F5", "F6"],
["F7", "B1", "B3"],
["B2", "B6", "B5"]
]
},
"url": "https://anky.studio/",
"usb": {
"device_version": "1.0.0",
"pid": "0x0001",
"vid": "0x4E4B"
},
"community_layouts": ["ortho_3x3"],
"layouts": {
"LAYOUT_ortho_3x3": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1},
{"matrix": [1, 1], "x": 1, "y": 1},
{"matrix": [1, 2], "x": 2, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2},
{"matrix": [2, 1], "x": 1, "y": 2},
{"matrix": [2, 2], "x": 2, "y": 2}
]
}
}
}

View File

@@ -1,25 +0,0 @@
/* Copyright 2025
*
* 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_ortho_3x3(
KC_1, KC_2, KC_3,
KC_4, KC_5, KC_6,
KC_7, KC_8, KC_9
),
};

View File

@@ -1,27 +0,0 @@
# Janky No.9
![Janky No.9](https://i.imgur.com/hkEorpO.jpeg)
*A Handmade 3x3 Macropad*
* Keyboard Maintainer: [telybelly](https://github.com/telybelly)
* Hardware Supported: Janky No.9
* Hardware Availability: <https://anky.studio/>
Make example for this keyboard (after setting up your build environment):
make jankycaps/janky9:default
Flashing example for this keyboard:
make jankycaps/janky9: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**: Quickly short the RST and GND pads on the PCB twice
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -1,10 +0,0 @@
// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define USB_VBUS_PIN GP13
/* RP2040- and hardware-specific config */
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64

View File

@@ -1,235 +0,0 @@
{
"manufacturer": "Keebart",
"keyboard_name": "sofle_choc_pro",
"maintainer": "Keebart",
"bootloader": "rp2040",
"diode_direction": "COL2ROW",
"encoder": {
"rotary": [
{"pin_a": "GP23", "pin_b": "GP22"}
]
},
"features": {
"bootmagic": true,
"encoder": true,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgb_matrix": true
},
"matrix_pins": {
"cols": ["GP27", "GP26", "GP25", "GP24", "GP19", "GP18"],
"rows": ["GP0", "GP1", "GP2", "GP3", "GP4"]
},
"processor": "RP2040",
"rgb_matrix": {
"animations": {
"alphas_mods": true,
"band_pinwheel_sat": true,
"band_pinwheel_val": true,
"band_sat": true,
"band_spiral_sat": true,
"band_spiral_val": true,
"band_val": true,
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"cycle_up_down": true,
"digital_rain": true,
"dual_beacon": true,
"gradient_left_right": true,
"gradient_up_down": true,
"hue_breathing": true,
"hue_pendulum": true,
"hue_wave": true,
"jellybean_raindrops": true,
"multisplash": true,
"pixel_flow": true,
"pixel_fractal": true,
"pixel_rain": true,
"rainbow_beacon": true,
"rainbow_moving_chevron": true,
"rainbow_pinwheels": true,
"raindrops": true,
"solid_multisplash": true,
"solid_reactive": true,
"solid_reactive_cross": true,
"solid_reactive_multicross": true,
"solid_reactive_multinexus": true,
"solid_reactive_multiwide": true,
"solid_reactive_nexus": true,
"solid_reactive_simple": true,
"solid_reactive_wide": true,
"solid_splash": true,
"splash": true,
"typing_heatmap": true
},
"driver": "ws2812",
"layout": [
{"matrix": [4, 5], "x": 99, "y": 38, "flags": 4},
{"matrix": [4, 4], "x": 91, "y": 64, "flags": 4},
{"matrix": [4, 3], "x": 77, "y": 60, "flags": 4},
{"matrix": [3, 5], "x": 82, "y": 45, "flags": 4},
{"matrix": [2, 5], "x": 82, "y": 31, "flags": 4},
{"matrix": [1, 5], "x": 82, "y": 17, "flags": 4},
{"matrix": [0, 5], "x": 82, "y": 3, "flags": 4},
{"matrix": [0, 4], "x": 66, "y": 2, "flags": 4},
{"matrix": [1, 4], "x": 66, "y": 16, "flags": 4},
{"matrix": [2, 4], "x": 66, "y": 29, "flags": 4},
{"matrix": [3, 4], "x": 66, "y": 43, "flags": 4},
{"matrix": [4, 2], "x": 58, "y": 59, "flags": 4},
{"matrix": [4, 1], "x": 41, "y": 59, "flags": 4},
{"matrix": [3, 3], "x": 49, "y": 41, "flags": 4},
{"matrix": [2, 3], "x": 49, "y": 28, "flags": 4},
{"matrix": [1, 3], "x": 49, "y": 16, "flags": 4},
{"matrix": [0, 3], "x": 49, "y": 0, "flags": 4},
{"matrix": [0, 2], "x": 33, "y": 2, "flags": 4},
{"matrix": [1, 2], "x": 33, "y": 16, "flags": 4},
{"matrix": [2, 2], "x": 33, "y": 29, "flags": 4},
{"matrix": [3, 2], "x": 33, "y": 43, "flags": 4},
{"matrix": [4, 0], "x": 25, "y": 60, "flags": 4},
{"matrix": [3, 1], "x": 16, "y": 47, "flags": 4},
{"matrix": [2, 1], "x": 16, "y": 33, "flags": 4},
{"matrix": [1, 1], "x": 16, "y": 19, "flags": 4},
{"matrix": [0, 1], "x": 16, "y": 5, "flags": 4},
{"matrix": [0, 0], "x": 0, "y": 5, "flags": 4},
{"matrix": [1, 0], "x": 0, "y": 19, "flags": 4},
{"matrix": [2, 0], "x": 0, "y": 33, "flags": 4},
{"matrix": [3, 0], "x": 0, "y": 47, "flags": 4},
{"matrix": [9, 5], "x": 125, "y": 38, "flags": 4},
{"matrix": [9, 4], "x": 134, "y": 64, "flags": 4},
{"matrix": [9, 3], "x": 147, "y": 60, "flags": 4},
{"matrix": [8, 5], "x": 142, "y": 45, "flags": 4},
{"matrix": [7, 5], "x": 142, "y": 31, "flags": 4},
{"matrix": [6, 5], "x": 142, "y": 17, "flags": 4},
{"matrix": [5, 5], "x": 142, "y": 3, "flags": 4},
{"matrix": [5, 4], "x": 158, "y": 2, "flags": 4},
{"matrix": [6, 4], "x": 158, "y": 16, "flags": 4},
{"matrix": [7, 4], "x": 158, "y": 29, "flags": 4},
{"matrix": [8, 4], "x": 158, "y": 43, "flags": 4},
{"matrix": [9, 2], "x": 166, "y": 59, "flags": 4},
{"matrix": [9, 1], "x": 183, "y": 59, "flags": 4},
{"matrix": [8, 3], "x": 175, "y": 41, "flags": 4},
{"matrix": [7, 3], "x": 175, "y": 28, "flags": 4},
{"matrix": [6, 3], "x": 175, "y": 16, "flags": 4},
{"matrix": [5, 3], "x": 175, "y": 0, "flags": 4},
{"matrix": [5, 2], "x": 191, "y": 2, "flags": 4},
{"matrix": [6, 2], "x": 191, "y": 16, "flags": 4},
{"matrix": [7, 2], "x": 191, "y": 29, "flags": 4},
{"matrix": [8, 2], "x": 191, "y": 43, "flags": 4},
{"matrix": [9, 0], "x": 199, "y": 60, "flags": 4},
{"matrix": [8, 1], "x": 208, "y": 47, "flags": 4},
{"matrix": [7, 1], "x": 208, "y": 33, "flags": 4},
{"matrix": [6, 1], "x": 208, "y": 19, "flags": 4},
{"matrix": [5, 1], "x": 208, "y": 5, "flags": 4},
{"matrix": [5, 0], "x": 224, "y": 5, "flags": 4},
{"matrix": [6, 0], "x": 224, "y": 19, "flags": 4},
{"matrix": [7, 0], "x": 224, "y": 33, "flags": 4},
{"matrix": [8, 0], "x": 224, "y": 47, "flags": 4}
],
"max_brightness": 50,
"sleep": true,
"split_count": [30, 30]
},
"split": {
"bootmagic": {
"matrix": [5, 0]
},
"enabled": true,
"handedness": {
"pin": "GP21"
},
"serial": {
"driver": "vendor",
"pin": "GP12"
},
"transport": {
"sync": {
"indicators": true,
"layer_state": true,
"matrix_state": true
}
}
},
"url": "https://keebart.com/products/sofle",
"usb": {
"device_version": "1.0.0",
"pid": "0x0000",
"suspend_wakeup_delay": 200,
"vid": "0xFEED"
},
"ws2812": {
"driver": "vendor",
"pin": "GP10"
},
"layouts": {
"LAYOUT_split_4x6_5": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0.375},
{"matrix": [0, 1], "x": 1, "y": 0.375},
{"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": [5, 5], "x": 9, "y": 0.25},
{"matrix": [5, 4], "x": 10, "y": 0.125},
{"matrix": [5, 3], "x": 11, "y": 0},
{"matrix": [5, 2], "x": 12, "y": 0.125},
{"matrix": [5, 1], "x": 13, "y": 0.375},
{"matrix": [5, 0], "x": 14, "y": 0.375},
{"matrix": [1, 0], "x": 0, "y": 1.375},
{"matrix": [1, 1], "x": 1, "y": 1.375},
{"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": [6, 5], "x": 9, "y": 1.25},
{"matrix": [6, 4], "x": 10, "y": 1.125},
{"matrix": [6, 3], "x": 11, "y": 1},
{"matrix": [6, 2], "x": 12, "y": 1.125},
{"matrix": [6, 1], "x": 13, "y": 1.375},
{"matrix": [6, 0], "x": 14, "y": 1.375},
{"matrix": [2, 0], "x": 0, "y": 2.375},
{"matrix": [2, 1], "x": 1, "y": 2.375},
{"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": [7, 5], "x": 9, "y": 2.25},
{"matrix": [7, 4], "x": 10, "y": 2.125},
{"matrix": [7, 3], "x": 11, "y": 2},
{"matrix": [7, 2], "x": 12, "y": 2.125},
{"matrix": [7, 1], "x": 13, "y": 2.375},
{"matrix": [7, 0], "x": 14, "y": 2.375},
{"matrix": [3, 0], "x": 0, "y": 3.375},
{"matrix": [3, 1], "x": 1, "y": 3.375},
{"matrix": [3, 2], "x": 2, "y": 3.125},
{"matrix": [3, 3], "x": 3, "y": 3},
{"matrix": [3, 4], "x": 4, "y": 3.125},
{"matrix": [3, 5], "x": 5, "y": 3.25},
{"matrix": [4, 5], "x": 6, "y": 2.75},
{"matrix": [9, 5], "x": 8, "y": 2.75},
{"matrix": [8, 5], "x": 9, "y": 3.25},
{"matrix": [8, 4], "x": 10, "y": 3.125},
{"matrix": [8, 3], "x": 11, "y": 3},
{"matrix": [8, 2], "x": 12, "y": 3.125},
{"matrix": [8, 1], "x": 13, "y": 3.375},
{"matrix": [8, 0], "x": 14, "y": 3.375},
{"matrix": [4, 0], "x": 1.5, "y": 4.375},
{"matrix": [4, 1], "x": 2.5, "y": 4.25},
{"matrix": [4, 2], "x": 3.5, "y": 4.25},
{"matrix": [4, 3], "x": 4.5, "y": 4.375},
{"matrix": [4, 4], "x": 6, "y": 4.375, "h": 1.5},
{"matrix": [9, 4], "x": 8, "y": 4.375, "h": 1.5},
{"matrix": [9, 3], "x": 9.5, "y": 4.375},
{"matrix": [9, 2], "x": 10.5, "y": 4.25},
{"matrix": [9, 1], "x": 11.5, "y": 4.25},
{"matrix": [9, 0], "x": 12.5, "y": 4.375}
]
}
}
}

View File

@@ -1,49 +0,0 @@
// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layers {
BASE, // default layer
MDIA, // media keys
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* QWERTY
* ,-----------------------------------------. ,-----------------------------------------.
* | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bspc |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | CAPS | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
* |------+------+------+------+------+------| Mute | | Pause |------+------+------+------+------+------|
* |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LCTL | LALT | LCMD | LGUI | /Enter / \Space \ | RGUI | DEL | RALT | RCTL |
* | | | | LT1 |/ / \ \ | LT1 | | | |
* `----------------------------------' '------''---------------------------'
*/
[BASE] = LAYOUT_split_4x6_5(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV,
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_CAPS, 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_MUTE, KC_MPLY, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LALT, KC_LCMD, LT(MDIA,KC_LGUI), KC_ENT, KC_SPC, LT(MDIA,KC_RGUI), KC_DEL, KC_RALT, KC_RCTL
),
[MDIA] = LAYOUT_split_4x6_5(
KC_MUTE,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
RM_TOGG,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
RM_NEXT,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
RM_HUEU,_______,_______,_______,_______,_______, _______, _______, _______,_______,_______,_______,_______,_______,
_______,_______,_______,_______, _______, _______, _______,_______,_______,_______
)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) },
[MDIA] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }
};
#endif

View File

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

View File

@@ -1,28 +0,0 @@
# Sofle Choc Pro
![sofle_choc_pro](https://i.imgur.com/q9A2HMe.jpeg)
A complete remake of the Sofle Choc Keyboard by Josef Adamčík. Featuring an onboard RP2040 with 128 MB flash
memory and choc-spaced keys for a more compact keyboard.
- Keyboard Maintainer: [Keebart](https://github.com/Keebart)
- Hardware Supported: RP2040
- Hardware Availability: [Keebart Shop](https://keebart.com/products/sofle)
Make example for this keyboard (after setting up your build environment):
make keebart/sofle_choc_pro:default
Flashing example for this keyboard:
make keebart/sofle_choc_pro: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 top left key of the left side of the keyboard while connecting the left side to the computer. Similarly, hold down the top right key of the right side of the keyboard while connecting the right side to the computer.
- **Physical reset button**: Briefly press the button on the back of the PCB
- **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -1,7 +0,0 @@
{
"keyboards_name": "Keychron C1 Pro V2 Non-Light",
"usb": {
"pid": "0x051C",
"device_version": "1.0.0"
}
}

View File

@@ -1,64 +0,0 @@
/* Copyright 2025 @ 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,
MAC_FN,
WIN_BASE,
WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_tkl_ansi(
KC_ESC, KC_BRID, KC_BRIU, _______, _______, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_SLEP,
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_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_tkl_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_tkl_ansi(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NO, KC_SLEP,
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_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_ansi(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on

View File

@@ -1,24 +0,0 @@
/* Copyright 2025 @ 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/>.
*/
#pragma once
/* RGB Matrix Driver Configuration */
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_VDDIO
#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_GND
/* Set LED driver current */
#define SNLED27351_CURRENT_TUNE { 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28 }

View File

@@ -1,131 +0,0 @@
{
"keyboard_name": "Keychron C1 Pro V2 RGB",
"features": {
"rgb_matrix": true
},
"rgb_matrix": {
"animations": {
"band_spiral_val": true,
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"cycle_up_down": true,
"digital_rain": true,
"dual_beacon": true,
"jellybean_raindrops": true,
"pixel_rain": true,
"rainbow_beacon": true,
"rainbow_moving_chevron": true,
"solid_reactive_multinexus": true,
"solid_reactive_multiwide": true,
"solid_reactive_simple": true,
"solid_splash": true,
"splash": true,
"typing_heatmap": true
},
"driver": "snled27351",
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
{"matrix": [0, 1], "x": 26, "y": 0, "flags": 1},
{"matrix": [0, 2], "x": 39, "y": 0, "flags": 1},
{"matrix": [0, 3], "x": 52, "y": 0, "flags": 1},
{"matrix": [0, 4], "x": 65, "y": 0, "flags": 1},
{"matrix": [0, 5], "x": 85, "y": 0, "flags": 1},
{"matrix": [0, 6], "x": 98, "y": 0, "flags": 1},
{"matrix": [0, 7], "x": 111, "y": 0, "flags": 1},
{"matrix": [0, 8], "x": 124, "y": 0, "flags": 1},
{"matrix": [0, 9], "x": 143, "y": 0, "flags": 1},
{"matrix": [0, 10], "x": 156, "y": 0, "flags": 1},
{"matrix": [0, 11], "x": 169, "y": 0, "flags": 1},
{"matrix": [0, 12], "x": 182, "y": 0, "flags": 1},
{"matrix": [0, 14], "x": 198, "y": 0, "flags": 1},
{"matrix": [0, 15], "x": 211, "y": 0, "flags": 1},
{"matrix": [0, 16], "x": 224, "y": 0, "flags": 1},
{"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
{"matrix": [1, 1], "x": 15, "y": 15, "flags": 4},
{"matrix": [1, 2], "x": 26, "y": 15, "flags": 4},
{"matrix": [1, 3], "x": 39, "y": 15, "flags": 4},
{"matrix": [1, 4], "x": 52, "y": 15, "flags": 4},
{"matrix": [1, 5], "x": 65, "y": 15, "flags": 4},
{"matrix": [1, 6], "x": 78, "y": 15, "flags": 4},
{"matrix": [1, 7], "x": 91, "y": 15, "flags": 4},
{"matrix": [1, 8], "x": 104, "y": 15, "flags": 4},
{"matrix": [1, 9], "x": 117, "y": 15, "flags": 4},
{"matrix": [1, 10], "x": 130, "y": 15, "flags": 4},
{"matrix": [1, 11], "x": 143, "y": 15, "flags": 4},
{"matrix": [1, 12], "x": 156, "y": 15, "flags": 4},
{"matrix": [1, 13], "x": 176, "y": 15, "flags": 1},
{"matrix": [1, 14], "x": 198, "y": 15, "flags": 1},
{"matrix": [1, 15], "x": 211, "y": 15, "flags": 1},
{"matrix": [1, 16], "x": 224, "y": 15, "flags": 1},
{"matrix": [2, 0], "x": 3, "y": 27, "flags": 1},
{"matrix": [2, 1], "x": 20, "y": 27, "flags": 4},
{"matrix": [2, 2], "x": 33, "y": 27, "flags": 4},
{"matrix": [2, 3], "x": 46, "y": 27, "flags": 4},
{"matrix": [2, 4], "x": 59, "y": 27, "flags": 4},
{"matrix": [2, 5], "x": 72, "y": 27, "flags": 4},
{"matrix": [2, 6], "x": 85, "y": 27, "flags": 4},
{"matrix": [2, 7], "x": 98, "y": 27, "flags": 4},
{"matrix": [2, 8], "x": 111, "y": 27, "flags": 4},
{"matrix": [2, 9], "x": 124, "y": 27, "flags": 4},
{"matrix": [2, 10], "x": 137, "y": 27, "flags": 4},
{"matrix": [2, 11], "x": 150, "y": 27, "flags": 4},
{"matrix": [2, 12], "x": 163, "y": 27, "flags": 4},
{"matrix": [2, 13], "x": 179, "y": 27, "flags": 1},
{"matrix": [2, 14], "x": 198, "y": 27, "flags": 1},
{"matrix": [2, 15], "x": 211, "y": 27, "flags": 1},
{"matrix": [2, 16], "x": 224, "y": 27, "flags": 1},
{"matrix": [3, 0], "x": 5, "y": 39, "flags": 8},
{"matrix": [3, 1], "x": 23, "y": 39, "flags": 4},
{"matrix": [3, 2], "x": 36, "y": 39, "flags": 4},
{"matrix": [3, 3], "x": 49, "y": 39, "flags": 4},
{"matrix": [3, 4], "x": 62, "y": 39, "flags": 4},
{"matrix": [3, 5], "x": 75, "y": 39, "flags": 4},
{"matrix": [3, 6], "x": 88, "y": 39, "flags": 4},
{"matrix": [3, 7], "x": 101, "y": 39, "flags": 4},
{"matrix": [3, 8], "x": 114, "y": 39, "flags": 4},
{"matrix": [3, 9], "x": 127, "y": 39, "flags": 4},
{"matrix": [3, 10], "x": 140, "y": 39, "flags": 4},
{"matrix": [3, 11], "x": 153, "y": 39, "flags": 4},
{"matrix": [3, 13], "x": 174, "y": 39, "flags": 1},
{"matrix": [4, 0], "x": 8, "y": 52, "flags": 1},
{"matrix": [4, 2], "x": 29, "y": 52, "flags": 4},
{"matrix": [4, 3], "x": 42, "y": 52, "flags": 4},
{"matrix": [4, 4], "x": 55, "y": 52, "flags": 4},
{"matrix": [4, 5], "x": 68, "y": 52, "flags": 4},
{"matrix": [4, 6], "x": 82, "y": 52, "flags": 4},
{"matrix": [4, 7], "x": 95, "y": 52, "flags": 4},
{"matrix": [4, 8], "x": 108, "y": 52, "flags": 4},
{"matrix": [4, 9], "x": 121, "y": 52, "flags": 4},
{"matrix": [4, 10], "x": 134, "y": 52, "flags": 4},
{"matrix": [4, 11], "x": 147, "y": 52, "flags": 4},
{"matrix": [4, 13], "x": 171, "y": 52, "flags": 1},
{"matrix": [4, 15], "x": 211, "y": 52, "flags": 1},
{"matrix": [5, 0], "x": 2, "y": 64, "flags": 1},
{"matrix": [5, 1], "x": 18, "y": 64, "flags": 1},
{"matrix": [5, 2], "x": 34, "y": 64, "flags": 1},
{"matrix": [5, 6], "x": 83, "y": 64, "flags": 4},
{"matrix": [5, 10], "x": 132, "y": 64, "flags": 1},
{"matrix": [5, 11], "x": 148, "y": 64, "flags": 1},
{"matrix": [5, 12], "x": 165, "y": 64, "flags": 1},
{"matrix": [5, 13], "x": 181, "y": 64, "flags": 1},
{"matrix": [5, 14], "x": 198, "y": 64, "flags": 1},
{"matrix": [5, 15], "x": 211, "y": 64, "flags": 1},
{"matrix": [5, 16], "x": 224, "y": 64, "flags": 1}
],
"sleep": true
},
"usb": {
"device_version": "1.0.0",
"pid": "0x0516"
}
}

View File

@@ -1,65 +0,0 @@
/* Copyright 2025 @ 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
// clang-format off
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
WIN_FN
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_tkl_ansi(
KC_ESC, KC_BRID, KC_BRIU, _______, _______, RM_VALD, RM_VALU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RM_NEXT,
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_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_tkl_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_tkl_ansi(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NO, RM_NEXT,
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_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_ansi(
_______, 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on

View File

@@ -1,124 +0,0 @@
/* Copyright 2025 @ 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 "quantum.h"
#ifdef RGB_MATRIX_ENABLE
// clang-format off
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, CB9_CA1, CB7_CA1, CB8_CA1},
{0, CB9_CA2, CB7_CA2, CB8_CA2},
{0, CB9_CA3, CB7_CA3, CB8_CA3},
{0, CB9_CA4, CB7_CA4, CB8_CA4},
{0, CB9_CA5, CB7_CA5, CB8_CA5},
{0, CB9_CA6, CB7_CA6, CB8_CA6},
{0, CB9_CA7, CB7_CA7, CB8_CA7},
{0, CB9_CA8, CB7_CA8, CB8_CA8},
{0, CB9_CA9, CB7_CA9, CB8_CA9},
{0, CB9_CA10, CB7_CA10, CB8_CA10},
{0, CB9_CA11, CB7_CA11, CB8_CA11},
{0, CB9_CA12, CB7_CA12, CB8_CA12},
{0, CB9_CA13, CB7_CA13, CB8_CA13},
{0, CB9_CA15, CB7_CA15, CB8_CA15},
{0, CB9_CA16, CB7_CA16, CB8_CA16},
{0, CB12_CA5, CB10_CA5, CB11_CA5},
{0, CB3_CA1, CB1_CA1, CB2_CA1},
{0, CB3_CA2, CB1_CA2, CB2_CA2},
{0, CB3_CA3, CB1_CA3, CB2_CA3},
{0, CB3_CA4, CB1_CA4, CB2_CA4},
{0, CB3_CA5, CB1_CA5, CB2_CA5},
{0, CB3_CA6, CB1_CA6, CB2_CA6},
{0, CB3_CA7, CB1_CA7, CB2_CA7},
{0, CB3_CA8, CB1_CA8, CB2_CA8},
{0, CB3_CA9, CB1_CA9, CB2_CA9},
{0, CB3_CA10, CB1_CA10, CB2_CA10},
{0, CB3_CA11, CB1_CA11, CB2_CA11},
{0, CB3_CA12, CB1_CA12, CB2_CA12},
{0, CB3_CA13, CB1_CA13, CB2_CA13},
{0, CB3_CA14, CB1_CA14, CB2_CA14},
{0, CB3_CA15, CB1_CA15, CB2_CA15},
{0, CB3_CA16, CB1_CA16, CB2_CA16},
{0, CB12_CA9, CB10_CA9, CB11_CA9},
{0, CB6_CA1, CB4_CA1, CB5_CA1},
{0, CB6_CA2, CB4_CA2, CB5_CA2},
{0, CB6_CA3, CB4_CA3, CB5_CA3},
{0, CB6_CA4, CB4_CA4, CB5_CA4},
{0, CB6_CA5, CB4_CA5, CB5_CA5},
{0, CB6_CA6, CB4_CA6, CB5_CA6},
{0, CB6_CA7, CB4_CA7, CB5_CA7},
{0, CB6_CA8, CB4_CA8, CB5_CA8},
{0, CB6_CA9, CB4_CA9, CB5_CA9},
{0, CB6_CA10, CB4_CA10, CB5_CA10},
{0, CB6_CA11, CB4_CA11, CB5_CA11},
{0, CB6_CA12, CB4_CA12, CB5_CA12},
{0, CB6_CA13, CB4_CA13, CB5_CA13},
{0, CB6_CA14, CB4_CA14, CB5_CA14},
{0, CB6_CA15, CB4_CA15, CB5_CA15},
{0, CB6_CA16, CB4_CA16, CB5_CA16},
{0, CB12_CA14, CB10_CA14, CB11_CA14},
{1, CB3_CA16, CB1_CA16, CB2_CA16},
{1, CB3_CA15, CB1_CA15, CB2_CA15},
{1, CB3_CA14, CB1_CA14, CB2_CA14},
{1, CB3_CA13, CB1_CA13, CB2_CA13},
{1, CB3_CA12, CB1_CA12, CB2_CA12},
{1, CB3_CA11, CB1_CA11, CB2_CA11},
{1, CB3_CA10, CB1_CA10, CB2_CA10},
{1, CB3_CA9, CB1_CA9, CB2_CA9},
{1, CB3_CA8, CB1_CA8, CB2_CA8},
{1, CB3_CA7, CB1_CA7, CB2_CA7},
{1, CB3_CA6, CB1_CA6, CB2_CA6},
{1, CB3_CA5, CB1_CA5, CB2_CA5},
{1, CB3_CA3, CB1_CA3, CB2_CA3},
{1, CB9_CA16, CB7_CA16, CB8_CA16},
{1, CB9_CA14, CB7_CA14, CB8_CA14},
{1, CB9_CA13, CB7_CA13, CB8_CA13},
{1, CB9_CA12, CB7_CA12, CB8_CA12},
{1, CB9_CA11, CB7_CA11, CB8_CA11},
{1, CB9_CA10, CB7_CA10, CB8_CA10},
{1, CB9_CA9, CB7_CA9, CB8_CA9},
{1, CB9_CA8, CB7_CA8, CB8_CA8},
{1, CB9_CA7, CB7_CA7, CB8_CA7},
{1, CB9_CA6, CB7_CA6, CB8_CA6},
{1, CB9_CA5, CB7_CA5, CB8_CA5},
{1, CB9_CA3, CB7_CA3, CB8_CA3},
{1, CB9_CA1, CB7_CA1, CB8_CA1},
{1, CB6_CA16, CB4_CA16, CB5_CA16},
{1, CB6_CA15, CB4_CA15, CB5_CA15},
{1, CB6_CA14, CB4_CA14, CB5_CA14},
{1, CB6_CA10, CB4_CA10, CB5_CA10},
{1, CB6_CA6, CB4_CA6, CB5_CA6},
{1, CB6_CA5, CB4_CA5, CB5_CA5},
{1, CB6_CA4, CB4_CA4, CB5_CA4},
{1, CB6_CA3, CB4_CA3, CB5_CA3},
{1, CB6_CA2, CB4_CA2, CB5_CA2},
{1, CB6_CA1, CB4_CA1, CB5_CA1},
{1, CB12_CA10, CB10_CA10, CB11_CA10},
};
#endif // RGB_MATRIX_ENABLE
// clang-format on

View File

@@ -1,25 +0,0 @@
/* Copyright 2025 @ 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/>.
*/
#pragma once
/* LED Matrix Driver Configuration */
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
/* Scan phase of led driver set as MSKPHASE_9CHANNEL(defined as 0x03 in CKLED2001.h) */
#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_9_CHANNEL
#define SNLED27351_CURRENT_TUNE { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }

View File

@@ -1,122 +0,0 @@
{
"features": {
"led_matrix": true
},
"led_matrix": {
"animations": {
"band_pinwheel": true,
"band_spiral": true,
"breathing": true,
"cycle_left_right": true,
"cycle_out_in": true,
"cycle_up_down": true,
"dual_beacon": true,
"solid_reactive_multinexus": true,
"solid_reactive_multiwide": true,
"solid_reactive_simple": true,
"solid_splash": true,
"wave_left_right": true,
"wave_up_down": true
},
"driver": "snled27351",
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
{"matrix": [0, 1], "x": 26, "y": 0, "flags": 1},
{"matrix": [0, 2], "x": 39, "y": 0, "flags": 1},
{"matrix": [0, 3], "x": 52, "y": 0, "flags": 1},
{"matrix": [0, 4], "x": 65, "y": 0, "flags": 1},
{"matrix": [0, 5], "x": 85, "y": 0, "flags": 1},
{"matrix": [0, 6], "x": 98, "y": 0, "flags": 1},
{"matrix": [0, 7], "x": 111, "y": 0, "flags": 1},
{"matrix": [0, 8], "x": 124, "y": 0, "flags": 1},
{"matrix": [0, 9], "x": 143, "y": 0, "flags": 1},
{"matrix": [0, 10], "x": 156, "y": 0, "flags": 1},
{"matrix": [0, 11], "x": 169, "y": 0, "flags": 1},
{"matrix": [0, 12], "x": 182, "y": 0, "flags": 1},
{"matrix": [0, 14], "x": 198, "y": 0, "flags": 1},
{"matrix": [0, 15], "x": 211, "y": 0, "flags": 1},
{"matrix": [0, 16], "x": 224, "y": 0, "flags": 1},
{"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
{"matrix": [1, 1], "x": 15, "y": 15, "flags": 4},
{"matrix": [1, 2], "x": 26, "y": 15, "flags": 4},
{"matrix": [1, 3], "x": 39, "y": 15, "flags": 4},
{"matrix": [1, 4], "x": 52, "y": 15, "flags": 4},
{"matrix": [1, 5], "x": 65, "y": 15, "flags": 4},
{"matrix": [1, 6], "x": 78, "y": 15, "flags": 4},
{"matrix": [1, 7], "x": 91, "y": 15, "flags": 4},
{"matrix": [1, 8], "x": 104, "y": 15, "flags": 4},
{"matrix": [1, 9], "x": 117, "y": 15, "flags": 4},
{"matrix": [1, 10], "x": 130, "y": 15, "flags": 4},
{"matrix": [1, 11], "x": 143, "y": 15, "flags": 4},
{"matrix": [1, 12], "x": 156, "y": 15, "flags": 4},
{"matrix": [1, 13], "x": 176, "y": 15, "flags": 1},
{"matrix": [1, 14], "x": 198, "y": 15, "flags": 1},
{"matrix": [1, 15], "x": 211, "y": 15, "flags": 1},
{"matrix": [1, 16], "x": 224, "y": 15, "flags": 1},
{"matrix": [2, 0], "x": 3, "y": 27, "flags": 1},
{"matrix": [2, 1], "x": 20, "y": 27, "flags": 4},
{"matrix": [2, 2], "x": 33, "y": 27, "flags": 4},
{"matrix": [2, 3], "x": 46, "y": 27, "flags": 4},
{"matrix": [2, 4], "x": 59, "y": 27, "flags": 4},
{"matrix": [2, 5], "x": 72, "y": 27, "flags": 4},
{"matrix": [2, 6], "x": 85, "y": 27, "flags": 4},
{"matrix": [2, 7], "x": 98, "y": 27, "flags": 4},
{"matrix": [2, 8], "x": 111, "y": 27, "flags": 4},
{"matrix": [2, 9], "x": 124, "y": 27, "flags": 4},
{"matrix": [2, 10], "x": 137, "y": 27, "flags": 4},
{"matrix": [2, 11], "x": 150, "y": 27, "flags": 4},
{"matrix": [2, 12], "x": 163, "y": 27, "flags": 4},
{"matrix": [2, 13], "x": 179, "y": 27, "flags": 1},
{"matrix": [2, 14], "x": 198, "y": 27, "flags": 1},
{"matrix": [2, 15], "x": 211, "y": 27, "flags": 1},
{"matrix": [2, 16], "x": 224, "y": 27, "flags": 1},
{"matrix": [3, 0], "x": 5, "y": 39, "flags": 8},
{"matrix": [3, 1], "x": 23, "y": 39, "flags": 4},
{"matrix": [3, 2], "x": 36, "y": 39, "flags": 4},
{"matrix": [3, 3], "x": 49, "y": 39, "flags": 4},
{"matrix": [3, 4], "x": 62, "y": 39, "flags": 4},
{"matrix": [3, 5], "x": 75, "y": 39, "flags": 4},
{"matrix": [3, 6], "x": 88, "y": 39, "flags": 4},
{"matrix": [3, 7], "x": 101, "y": 39, "flags": 4},
{"matrix": [3, 8], "x": 114, "y": 39, "flags": 4},
{"matrix": [3, 9], "x": 127, "y": 39, "flags": 4},
{"matrix": [3, 10], "x": 140, "y": 39, "flags": 4},
{"matrix": [3, 11], "x": 153, "y": 39, "flags": 4},
{"matrix": [3, 13], "x": 174, "y": 39, "flags": 1},
{"matrix": [4, 0], "x": 8, "y": 52, "flags": 1},
{"matrix": [4, 2], "x": 29, "y": 52, "flags": 4},
{"matrix": [4, 3], "x": 42, "y": 52, "flags": 4},
{"matrix": [4, 4], "x": 55, "y": 52, "flags": 4},
{"matrix": [4, 5], "x": 68, "y": 52, "flags": 4},
{"matrix": [4, 6], "x": 82, "y": 52, "flags": 4},
{"matrix": [4, 7], "x": 95, "y": 52, "flags": 4},
{"matrix": [4, 8], "x": 108, "y": 52, "flags": 4},
{"matrix": [4, 9], "x": 121, "y": 52, "flags": 4},
{"matrix": [4, 10], "x": 134, "y": 52, "flags": 4},
{"matrix": [4, 11], "x": 147, "y": 52, "flags": 4},
{"matrix": [4, 13], "x": 171, "y": 52, "flags": 1},
{"matrix": [4, 15], "x": 211, "y": 52, "flags": 1},
{"matrix": [5, 0], "x": 2, "y": 64, "flags": 1},
{"matrix": [5, 1], "x": 18, "y": 64, "flags": 1},
{"matrix": [5, 2], "x": 34, "y": 64, "flags": 1},
{"matrix": [5, 6], "x": 83, "y": 64, "flags": 4},
{"matrix": [5, 10], "x": 132, "y": 64, "flags": 1},
{"matrix": [5, 11], "x": 148, "y": 64, "flags": 1},
{"matrix": [5, 12], "x": 165, "y": 64, "flags": 1},
{"matrix": [5, 13], "x": 181, "y": 64, "flags": 1},
{"matrix": [5, 14], "x": 198, "y": 64, "flags": 1},
{"matrix": [5, 15], "x": 211, "y": 64, "flags": 1},
{"matrix": [5, 16], "x": 224, "y": 64, "flags": 1}
],
"sleep": true
},
"usb": {
"device_version": "1.0.0",
"pid": "0x0519"
}
}

View File

@@ -1,65 +0,0 @@
/* Copyright 2025 @ 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
// clang-format off
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
WIN_FN
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_tkl_ansi(
KC_ESC, KC_BRID, KC_BRIU, _______, _______, LM_BRID, LM_BRIU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, LM_NEXT,
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_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_tkl_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, LM_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
LM_TOGG, LM_NEXT, LM_BRIU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, LM_BRID, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
[WIN_BASE] = LAYOUT_tkl_ansi(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, _______, LM_NEXT,
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_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_FN] = LAYOUT_tkl_ansi(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, LM_BRID, LM_BRIU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, LM_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
LM_TOGG, LM_NEXT, LM_BRIU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, LM_BRID, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on

View File

@@ -1,121 +0,0 @@
/* Copyright 2025 @ 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 "quantum.h"
#ifdef LED_MATRIX_ENABLE
// clang-format off
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | LED address
* | | */
{0, CB1_CA16},
{0, CB1_CA15},
{0, CB1_CA14},
{0, CB1_CA13},
{0, CB1_CA12},
{0, CB1_CA11},
{0, CB1_CA10},
{0, CB1_CA9 },
{0, CB1_CA8 },
{0, CB1_CA7 },
{0, CB1_CA6 },
{0, CB1_CA5 },
{0, CB1_CA4 },
{0, CB1_CA2 },
{0, CB1_CA1 },
{0, CB7_CA1 },
{0, CB2_CA16},
{0, CB2_CA15},
{0, CB2_CA14},
{0, CB2_CA13},
{0, CB2_CA12},
{0, CB2_CA11},
{0, CB2_CA10},
{0, CB2_CA9 },
{0, CB2_CA8 },
{0, CB2_CA7 },
{0, CB2_CA6 },
{0, CB2_CA5 },
{0, CB2_CA4 },
{0, CB2_CA3 },
{0, CB2_CA2 },
{0, CB2_CA1 },
{0, CB8_CA1 },
{0, CB3_CA16},
{0, CB3_CA15},
{0, CB3_CA14},
{0, CB3_CA13},
{0, CB3_CA12},
{0, CB3_CA11},
{0, CB3_CA10},
{0, CB3_CA9 },
{0, CB3_CA8 },
{0, CB3_CA7 },
{0, CB3_CA6 },
{0, CB3_CA5 },
{0, CB3_CA4 },
{0, CB3_CA3 },
{0, CB3_CA2 },
{0, CB3_CA1 },
{0, CB7_CA6 },
{0, CB4_CA16},
{0, CB4_CA15},
{0, CB4_CA14},
{0, CB4_CA13},
{0, CB4_CA12},
{0, CB4_CA11},
{0, CB4_CA10},
{0, CB4_CA9 },
{0, CB4_CA8 },
{0, CB4_CA7 },
{0, CB4_CA6 },
{0, CB4_CA5 },
{0, CB4_CA3 },
{0, CB5_CA16},
{0, CB5_CA14},
{0, CB5_CA13},
{0, CB5_CA12},
{0, CB5_CA11},
{0, CB5_CA10},
{0, CB5_CA9 },
{0, CB5_CA8 },
{0, CB5_CA7 },
{0, CB5_CA6 },
{0, CB5_CA5 },
{0, CB5_CA3 },
{0, CB5_CA1 },
{0, CB6_CA16},
{0, CB6_CA15},
{0, CB6_CA14},
{0, CB6_CA10},
{0, CB6_CA6 },
{0, CB6_CA5 },
{0, CB6_CA4 },
{0, CB6_CA3 },
{0, CB6_CA2 },
{0, CB6_CA1 },
{0, CB7_CA13},
};
#endif
// clang-fomat on

View File

@@ -1,104 +0,0 @@
/* Copyright 2025 @ 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 "quantum.h"
#ifdef DIP_SWITCH_ENABLE
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
}
if (index == 0) {
default_layer_set(1UL << (active ? 0 : 2));
}
return true;
}
#endif
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
if (!process_record_user(keycode, record)) {
return false;
}
switch (keycode) {
#ifdef RGB_MATRIX_ENABLE
case QK_RGB_MATRIX_TOGGLE:
if (record->event.pressed) {
switch (rgb_matrix_get_flags()) {
case LED_FLAG_ALL: {
rgb_matrix_set_flags(LED_FLAG_NONE);
rgb_matrix_set_color_all(0, 0, 0);
} break;
default: {
rgb_matrix_set_flags(LED_FLAG_ALL);
} break;
}
}
if (!rgb_matrix_is_enabled()) {
rgb_matrix_set_flags(LED_FLAG_ALL);
rgb_matrix_enable();
}
return false;
#endif
#ifdef LED_MATRIX_ENABLE
case QK_LED_MATRIX_TOGGLE:
if (record->event.pressed) {
switch (led_matrix_get_flags()) {
case LED_FLAG_ALL: {
led_matrix_set_flags(LED_FLAG_NONE);
led_matrix_set_value_all(0);
} break;
default: {
led_matrix_set_flags(LED_FLAG_ALL);
} break;
}
}
if (!led_matrix_is_enabled()) {
led_matrix_set_flags(LED_FLAG_ALL);
led_matrix_enable();
}
return false;
#endif
default:
return true;
}
}
void keyboard_post_init_kb(void) {
gpio_set_pin_output_push_pull(LED_MAC_OS_PIN);
gpio_set_pin_output_push_pull(LED_WIN_OS_PIN);
gpio_write_pin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
gpio_write_pin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
keyboard_post_init_user();
}
void housekeeping_task_kb(void) {
if (default_layer_state == (1U << 0)) {
gpio_write_pin(LED_MAC_OS_PIN, LED_OS_PIN_ON_STATE);
gpio_write_pin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
}
if (default_layer_state == (1U << 2)) {
gpio_write_pin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
gpio_write_pin(LED_WIN_OS_PIN, LED_OS_PIN_ON_STATE);
}
}
void suspend_power_down_kb(void) {
gpio_write_pin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
gpio_write_pin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
suspend_power_down_user();
}

View File

@@ -1,26 +0,0 @@
/* Copyright 2025 @ 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/>.
*/
#pragma once
/* Increase I2C speed to 1000 KHz */
#define I2C1_CLOCK_SPEED 400000
#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
/* System indication led */
#define LED_MAC_OS_PIN C10
#define LED_WIN_OS_PIN C11
#define LED_OS_PIN_ON_STATE 1

View File

@@ -1,21 +0,0 @@
/* Copyright 2025 @ 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/>.
*/
#pragma once
#define HAL_USE_I2C TRUE
#include_next <halconf.h>

View File

@@ -1,134 +0,0 @@
{
"manufacturer": "Keychron",
"maintainer": "lalalademaxiya1",
"bootloader": "stm32-dfu",
"diode_direction": "COL2ROW",
"eeprom": {
"wear_leveling": {
"backing_size": 4096
}
},
"features": {
"bootmagic": true,
"command": false,
"console": false,
"dip_switch": true,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"indicators": {
"caps_lock": "C9"
},
"dip_switch": {
"pins": ["D2"]
},
"matrix_pins": {
"cols": ["A0", "A1", "A2", "A3", "C0", "C1", "C2", "C3", "A8", "C12", "B9", "C6", "C7", "C4", "C5", "A15", "B10"],
"rows": ["B0", "B1", "B8", "B3", "B4", "B5"]
},
"processor": "STM32F401",
"url": "https://github.com/Keychron",
"usb": {
"vid": "0x3434"
},
"community_layouts": ["tkl_ansi"],
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 2, "y": 0},
{"matrix": [0, 2], "x": 3, "y": 0},
{"matrix": [0, 3], "x": 4, "y": 0},
{"matrix": [0, 4], "x": 5, "y": 0},
{"matrix": [0, 5], "x": 6.5, "y": 0},
{"matrix": [0, 6], "x": 7.5, "y": 0},
{"matrix": [0, 7], "x": 8.5, "y": 0},
{"matrix": [0, 8], "x": 9.5, "y": 0},
{"matrix": [0, 9], "x": 11, "y": 0},
{"matrix": [0, 10], "x": 12, "y": 0},
{"matrix": [0, 11], "x": 13, "y": 0},
{"matrix": [0, 12], "x": 14, "y": 0},
{"matrix": [0, 14], "x": 15.25, "y": 0},
{"matrix": [0, 15], "x": 16.25, "y": 0},
{"matrix": [0, 16], "x": 17.25, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1.25},
{"matrix": [1, 1], "x": 1, "y": 1.25},
{"matrix": [1, 2], "x": 2, "y": 1.25},
{"matrix": [1, 3], "x": 3, "y": 1.25},
{"matrix": [1, 4], "x": 4, "y": 1.25},
{"matrix": [1, 5], "x": 5, "y": 1.25},
{"matrix": [1, 6], "x": 6, "y": 1.25},
{"matrix": [1, 7], "x": 7, "y": 1.25},
{"matrix": [1, 8], "x": 8, "y": 1.25},
{"matrix": [1, 9], "x": 9, "y": 1.25},
{"matrix": [1, 10], "x": 10, "y": 1.25},
{"matrix": [1, 11], "x": 11, "y": 1.25},
{"matrix": [1, 12], "x": 12, "y": 1.25},
{"matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
{"matrix": [1, 14], "x": 15.25, "y": 1.25},
{"matrix": [1, 15], "x": 16.25, "y": 1.25},
{"matrix": [1, 16], "x": 17.25, "y": 1.25},
{"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
{"matrix": [2, 1], "x": 1.5, "y": 2.25},
{"matrix": [2, 2], "x": 2.5, "y": 2.25},
{"matrix": [2, 3], "x": 3.5, "y": 2.25},
{"matrix": [2, 4], "x": 4.5, "y": 2.25},
{"matrix": [2, 5], "x": 5.5, "y": 2.25},
{"matrix": [2, 6], "x": 6.5, "y": 2.25},
{"matrix": [2, 7], "x": 7.5, "y": 2.25},
{"matrix": [2, 8], "x": 8.5, "y": 2.25},
{"matrix": [2, 9], "x": 9.5, "y": 2.25},
{"matrix": [2, 10], "x": 10.5, "y": 2.25},
{"matrix": [2, 11], "x": 11.5, "y": 2.25},
{"matrix": [2, 12], "x": 12.5, "y": 2.25},
{"matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
{"matrix": [2, 14], "x": 15.25, "y": 2.25},
{"matrix": [2, 15], "x": 16.25, "y": 2.25},
{"matrix": [2, 16], "x": 17.25, "y": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
{"matrix": [3, 1], "x": 1.75, "y": 3.25},
{"matrix": [3, 2], "x": 2.75, "y": 3.25},
{"matrix": [3, 3], "x": 3.75, "y": 3.25},
{"matrix": [3, 4], "x": 4.75, "y": 3.25},
{"matrix": [3, 5], "x": 5.75, "y": 3.25},
{"matrix": [3, 6], "x": 6.75, "y": 3.25},
{"matrix": [3, 7], "x": 7.75, "y": 3.25},
{"matrix": [3, 8], "x": 8.75, "y": 3.25},
{"matrix": [3, 9], "x": 9.75, "y": 3.25},
{"matrix": [3, 10], "x": 10.75, "y": 3.25},
{"matrix": [3, 11], "x": 11.75, "y": 3.25},
{"matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
{"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
{"matrix": [4, 2], "x": 2.25, "y": 4.25},
{"matrix": [4, 3], "x": 3.25, "y": 4.25},
{"matrix": [4, 4], "x": 4.25, "y": 4.25},
{"matrix": [4, 5], "x": 5.25, "y": 4.25},
{"matrix": [4, 6], "x": 6.25, "y": 4.25},
{"matrix": [4, 7], "x": 7.25, "y": 4.25},
{"matrix": [4, 8], "x": 8.25, "y": 4.25},
{"matrix": [4, 9], "x": 9.25, "y": 4.25},
{"matrix": [4, 10], "x": 10.25, "y": 4.25},
{"matrix": [4, 11], "x": 11.25, "y": 4.25},
{"matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75},
{"matrix": [4, 15], "x": 16.25, "y": 4.25},
{"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
{"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
{"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
{"matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
{"matrix": [5, 10], "x": 10, "y": 5.25, "w": 1.25},
{"matrix": [5, 11], "x": 11.25, "y": 5.25, "w": 1.25},
{"matrix": [5, 12], "x": 12.5, "y": 5.25, "w": 1.25},
{"matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25},
{"matrix": [5, 14], "x": 15.25, "y": 5.25},
{"matrix": [5, 15], "x": 16.25, "y": 5.25},
{"matrix": [5, 16], "x": 17.25, "y": 5.25}
]
}
}
}

View File

@@ -1,28 +0,0 @@
/* Copyright 2025 @ 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/>.
*/
#pragma once
#include_next <mcuconf.h>
#undef STM32_HSECLK
#define STM32_HSECLK 16000000U
#undef STM32_PLLM_VALUE
#define STM32_PLLM_VALUE 8
#undef STM32_I2C_USE_I2C1
#define STM32_I2C_USE_I2C1 TRUE

View File

@@ -1,32 +0,0 @@
# Keychron C1 Pro V2
![Keychron C1 Pro](https://i.imgur.com/Svdm4lph.jpg)
A customizable 80% TKL keyboard.
v1 is based on STM32L432 and v2 is based on STM32F402.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron C1 Pro
* Hardware Availability: [Keychron](https://www.keychron.com)
Make example for this keyboard (after setting up your build environment):
make keychron/c1_pro_v2/ansi/rgb:default
make keychron/c1_pro_v2/ansi/white:default
make keychron/c1_pro_v2/ansi/non_light:default
Flashing example for this keyboard:
make keychron/c1_pro_v2/ansi/rgb:default:flash
make keychron/c1_pro_v2/ansi/white:default:flash
make keychron/c1_pro_v2/ansi/non_light:default:flash
## bootloader
Enter the bootloader in two ways:
* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
* **Physical reset button**: Briefly press the RESET button under the spacebar.
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@@ -1,24 +0,0 @@
/* Copyright 2025 @ 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/>.
*/
#pragma once
/* RGB Matrix Driver Configuration */
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_VDDIO
#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_GND
/* Set LED driver current */
#define SNLED27351_CURRENT_TUNE { 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28 }

View File

@@ -1,148 +0,0 @@
{
"keyboard_name": "Keychron C2 Pro V2 RGB",
"features": {
"rgb_matrix": true
},
"rgb_matrix": {
"animations": {
"band_spiral_val": true,
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"cycle_up_down": true,
"digital_rain": true,
"dual_beacon": true,
"jellybean_raindrops": true,
"pixel_rain": true,
"rainbow_beacon": true,
"rainbow_moving_chevron": true,
"solid_reactive_multinexus": true,
"solid_reactive_multiwide": true,
"solid_reactive_simple": true,
"solid_splash": true,
"splash": true,
"typing_heatmap": true
},
"driver": "snled27351",
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
{"matrix": [0, 1], "x": 21, "y": 0, "flags": 1},
{"matrix": [0, 2], "x": 31, "y": 0, "flags": 1},
{"matrix": [0, 3], "x": 42, "y": 0, "flags": 1},
{"matrix": [0, 4], "x": 52, "y": 0, "flags": 1},
{"matrix": [0, 5], "x": 68, "y": 0, "flags": 1},
{"matrix": [0, 6], "x": 78, "y": 0, "flags": 1},
{"matrix": [0, 7], "x": 89, "y": 0, "flags": 1},
{"matrix": [0, 8], "x": 99, "y": 0, "flags": 1},
{"matrix": [0, 9], "x": 115, "y": 0, "flags": 1},
{"matrix": [0, 10], "x": 125, "y": 0, "flags": 1},
{"matrix": [0, 11], "x": 136, "y": 0, "flags": 1},
{"matrix": [0, 12], "x": 146, "y": 0, "flags": 1},
{"matrix": [0, 14], "x": 159, "y": 0, "flags": 1},
{"matrix": [0, 15], "x": 169, "y": 0, "flags": 1},
{"matrix": [0, 16], "x": 180, "y": 0, "flags": 1},
{"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
{"matrix": [1, 1], "x": 10, "y": 15, "flags": 4},
{"matrix": [1, 2], "x": 21, "y": 15, "flags": 4},
{"matrix": [1, 3], "x": 31, "y": 15, "flags": 4},
{"matrix": [1, 4], "x": 42, "y": 15, "flags": 4},
{"matrix": [1, 5], "x": 52, "y": 15, "flags": 4},
{"matrix": [1, 6], "x": 63, "y": 15, "flags": 4},
{"matrix": [1, 7], "x": 73, "y": 15, "flags": 4},
{"matrix": [1, 8], "x": 83, "y": 15, "flags": 4},
{"matrix": [1, 9], "x": 94, "y": 15, "flags": 4},
{"matrix": [1, 10], "x": 104, "y": 15, "flags": 4},
{"matrix": [1, 11], "x": 115, "y": 15, "flags": 4},
{"matrix": [1, 12], "x": 125, "y": 15, "flags": 4},
{"matrix": [1, 13], "x": 141, "y": 15, "flags": 1},
{"matrix": [1, 14], "x": 159, "y": 15, "flags": 1},
{"matrix": [1, 15], "x": 169, "y": 15, "flags": 1},
{"matrix": [1, 16], "x": 180, "y": 15, "flags": 1},
{"matrix": [1, 17], "x": 193, "y": 15, "flags": 4},
{"matrix": [1, 18], "x": 203, "y": 15, "flags": 4},
{"matrix": [1, 19], "x": 214, "y": 15, "flags": 4},
{"matrix": [1, 20], "x": 224, "y": 15, "flags": 4},
{"matrix": [2, 0], "x": 3, "y": 27, "flags": 1},
{"matrix": [2, 1], "x": 16, "y": 27, "flags": 4},
{"matrix": [2, 2], "x": 26, "y": 27, "flags": 4},
{"matrix": [2, 3], "x": 36, "y": 27, "flags": 4},
{"matrix": [2, 4], "x": 47, "y": 27, "flags": 4},
{"matrix": [2, 5], "x": 57, "y": 27, "flags": 4},
{"matrix": [2, 6], "x": 68, "y": 27, "flags": 4},
{"matrix": [2, 7], "x": 78, "y": 27, "flags": 4},
{"matrix": [2, 8], "x": 89, "y": 27, "flags": 4},
{"matrix": [2, 9], "x": 99, "y": 27, "flags": 4},
{"matrix": [2, 10], "x": 109, "y": 27, "flags": 4},
{"matrix": [2, 11], "x": 120, "y": 27, "flags": 4},
{"matrix": [2, 12], "x": 130, "y": 27, "flags": 4},
{"matrix": [2, 13], "x": 143, "y": 27, "flags": 1},
{"matrix": [2, 14], "x": 159, "y": 27, "flags": 1},
{"matrix": [2, 15], "x": 169, "y": 27, "flags": 1},
{"matrix": [2, 16], "x": 180, "y": 27, "flags": 1},
{"matrix": [2, 17], "x": 193, "y": 27, "flags": 4},
{"matrix": [2, 18], "x": 203, "y": 27, "flags": 4},
{"matrix": [2, 19], "x": 214, "y": 27, "flags": 4},
{"matrix": [2, 20], "x": 224, "y": 34, "flags": 4},
{"matrix": [3, 0], "x": 4, "y": 40, "flags": 8},
{"matrix": [3, 1], "x": 18, "y": 40, "flags": 4},
{"matrix": [3, 2], "x": 29, "y": 40, "flags": 4},
{"matrix": [3, 3], "x": 39, "y": 40, "flags": 4},
{"matrix": [3, 4], "x": 50, "y": 40, "flags": 4},
{"matrix": [3, 5], "x": 60, "y": 40, "flags": 4},
{"matrix": [3, 6], "x": 70, "y": 40, "flags": 4},
{"matrix": [3, 7], "x": 81, "y": 40, "flags": 4},
{"matrix": [3, 8], "x": 91, "y": 40, "flags": 4},
{"matrix": [3, 9], "x": 102, "y": 40, "flags": 4},
{"matrix": [3, 10], "x": 112, "y": 40, "flags": 4},
{"matrix": [3, 11], "x": 123, "y": 40, "flags": 4},
{"matrix": [3, 13], "x": 139, "y": 40, "flags": 1},
{"matrix": [3, 17], "x": 193, "y": 40, "flags": 4},
{"matrix": [3, 18], "x": 203, "y": 40, "flags": 4},
{"matrix": [3, 19], "x": 214, "y": 40, "flags": 4},
{"matrix": [4, 0], "x": 7, "y": 52, "flags": 1},
{"matrix": [4, 2], "x": 23, "y": 52, "flags": 4},
{"matrix": [4, 3], "x": 34, "y": 52, "flags": 4},
{"matrix": [4, 4], "x": 44, "y": 52, "flags": 4},
{"matrix": [4, 5], "x": 55, "y": 52, "flags": 4},
{"matrix": [4, 6], "x": 65, "y": 52, "flags": 4},
{"matrix": [4, 7], "x": 76, "y": 52, "flags": 4},
{"matrix": [4, 8], "x": 86, "y": 52, "flags": 4},
{"matrix": [4, 9], "x": 96, "y": 52, "flags": 4},
{"matrix": [4, 10], "x": 107, "y": 52, "flags": 4},
{"matrix": [4, 11], "x": 117, "y": 52, "flags": 4},
{"matrix": [4, 13], "x": 137, "y": 52, "flags": 1},
{"matrix": [4, 15], "x": 169, "y": 52, "flags": 1},
{"matrix": [4, 17], "x": 193, "y": 52, "flags": 4},
{"matrix": [4, 18], "x": 203, "y": 52, "flags": 4},
{"matrix": [4, 19], "x": 214, "y": 52, "flags": 4},
{"matrix": [4, 20], "x": 224, "y": 58, "flags": 4},
{"matrix": [5, 0], "x": 1, "y": 64, "flags": 1},
{"matrix": [5, 1], "x": 14, "y": 64, "flags": 1},
{"matrix": [5, 2], "x": 27, "y": 64, "flags": 1},
{"matrix": [5, 6], "x": 66, "y": 64, "flags": 4},
{"matrix": [5, 10], "x": 105, "y": 64, "flags": 1},
{"matrix": [5, 11], "x": 118, "y": 64, "flags": 1},
{"matrix": [5, 12], "x": 131, "y": 64, "flags": 1},
{"matrix": [5, 13], "x": 145, "y": 64, "flags": 1},
{"matrix": [5, 14], "x": 159, "y": 64, "flags": 1},
{"matrix": [5, 15], "x": 169, "y": 64, "flags": 1},
{"matrix": [5, 16], "x": 180, "y": 64, "flags": 1},
{"matrix": [5, 17], "x": 198, "y": 64, "flags": 4},
{"matrix": [5, 18], "x": 214, "y": 64, "flags": 4}
],
"sleep": true
},
"usb": {
"device_version": "1.0.0",
"pid": "0x0526"
}
}

View File

@@ -1,64 +0,0 @@
/* Copyright 2025 @ 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,
MAC_FN,
WIN_BASE,
WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_104_ansi(
KC_ESC, KC_BRID, KC_BRIU, _______, _______, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, RM_NEXT,
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_INS, KC_HOME, KC_PGUP, KC_NUM, 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_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_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
[MAC_FN] = LAYOUT_104_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, RM_NEXT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RM_TOGG, RM_NEXT, RM_VALU, RM_HUEU, RM_SATU, RM_SPDU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RM_PREV, RM_VALD, RM_HUED, RM_SATD, RM_SPDD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
[WIN_BASE] = LAYOUT_104_ansi(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NO, RM_NEXT,
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_INS, KC_HOME, KC_PGUP, KC_NUM, 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_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_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
[WIN_FN] = LAYOUT_104_ansi(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RM_VALU, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
};
// clang-format on

View File

@@ -1,139 +0,0 @@
/* Copyright 2025 @ 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 "quantum.h"
#ifdef RGB_MATRIX_ENABLE
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, CB9_CA1, CB7_CA1, CB8_CA1},
{0, CB9_CA2, CB7_CA2, CB8_CA2},
{0, CB9_CA3, CB7_CA3, CB8_CA3},
{0, CB9_CA4, CB7_CA4, CB8_CA4},
{0, CB9_CA5, CB7_CA5, CB8_CA5},
{0, CB9_CA6, CB7_CA6, CB8_CA6},
{0, CB9_CA7, CB7_CA7, CB8_CA7},
{0, CB9_CA8, CB7_CA8, CB8_CA8},
{0, CB9_CA9, CB7_CA9, CB8_CA9},
{0, CB9_CA10, CB7_CA10, CB8_CA10},
{0, CB9_CA11, CB7_CA11, CB8_CA11},
{0, CB9_CA12, CB7_CA12, CB8_CA12},
{0, CB9_CA13, CB7_CA13, CB8_CA13},
{0, CB9_CA15, CB7_CA15, CB8_CA15},
{0, CB9_CA16, CB7_CA16, CB8_CA16},
{0, CB12_CA5, CB10_CA5, CB11_CA5},
{0, CB3_CA1, CB1_CA1, CB2_CA1},
{0, CB3_CA2, CB1_CA2, CB2_CA2},
{0, CB3_CA3, CB1_CA3, CB2_CA3},
{0, CB3_CA4, CB1_CA4, CB2_CA4},
{0, CB3_CA5, CB1_CA5, CB2_CA5},
{0, CB3_CA6, CB1_CA6, CB2_CA6},
{0, CB3_CA7, CB1_CA7, CB2_CA7},
{0, CB3_CA8, CB1_CA8, CB2_CA8},
{0, CB3_CA9, CB1_CA9, CB2_CA9},
{0, CB3_CA10, CB1_CA10, CB2_CA10},
{0, CB3_CA11, CB1_CA11, CB2_CA11},
{0, CB3_CA12, CB1_CA12, CB2_CA12},
{0, CB3_CA13, CB1_CA13, CB2_CA13},
{0, CB3_CA14, CB1_CA14, CB2_CA14},
{0, CB3_CA15, CB1_CA15, CB2_CA15},
{0, CB3_CA16, CB1_CA16, CB2_CA16},
{0, CB12_CA9, CB10_CA9, CB11_CA9},
{0, CB12_CA10, CB10_CA10, CB11_CA10},
{0, CB12_CA11, CB10_CA11, CB11_CA11},
{0, CB12_CA12, CB10_CA12, CB11_CA12},
{0, CB12_CA13, CB10_CA13, CB11_CA13},
{0, CB6_CA1, CB4_CA1, CB5_CA1},
{0, CB6_CA2, CB4_CA2, CB5_CA2},
{0, CB6_CA3, CB4_CA3, CB5_CA3},
{0, CB6_CA4, CB4_CA4, CB5_CA4},
{0, CB6_CA5, CB4_CA5, CB5_CA5},
{0, CB6_CA6, CB4_CA6, CB5_CA6},
{0, CB6_CA7, CB4_CA7, CB5_CA7},
{0, CB6_CA8, CB4_CA8, CB5_CA8},
{0, CB6_CA9, CB4_CA9, CB5_CA9},
{0, CB6_CA10, CB4_CA10, CB5_CA10},
{0, CB6_CA11, CB4_CA11, CB5_CA11},
{0, CB6_CA12, CB4_CA12, CB5_CA12},
{0, CB6_CA13, CB4_CA13, CB5_CA13},
{0, CB6_CA14, CB4_CA14, CB5_CA14},
{0, CB6_CA15, CB4_CA15, CB5_CA15},
{0, CB6_CA16, CB4_CA16, CB5_CA16},
{0, CB12_CA14, CB10_CA14, CB11_CA14},
{0, CB12_CA15, CB10_CA15, CB11_CA15},
{0, CB12_CA16, CB10_CA16, CB11_CA16},
{1, CB12_CA1, CB10_CA1, CB11_CA1},
{1, CB12_CA2, CB10_CA2, CB11_CA2},
{1, CB3_CA16, CB1_CA16, CB2_CA16},
{1, CB3_CA15, CB1_CA15, CB2_CA15},
{1, CB3_CA14, CB1_CA14, CB2_CA14},
{1, CB3_CA13, CB1_CA13, CB2_CA13},
{1, CB3_CA12, CB1_CA12, CB2_CA12},
{1, CB3_CA11, CB1_CA11, CB2_CA11},
{1, CB3_CA10, CB1_CA10, CB2_CA10},
{1, CB3_CA9, CB1_CA9, CB2_CA9},
{1, CB3_CA8, CB1_CA8, CB2_CA8},
{1, CB3_CA7, CB1_CA7, CB2_CA7},
{1, CB3_CA6, CB1_CA6, CB2_CA6},
{1, CB3_CA5, CB1_CA5, CB2_CA5},
{1, CB3_CA3, CB1_CA3, CB2_CA3},
{1, CB12_CA3, CB10_CA3, CB11_CA3},
{1, CB12_CA4, CB10_CA4, CB11_CA4},
{1, CB12_CA5, CB10_CA5, CB11_CA5},
{1, CB9_CA16, CB7_CA16, CB8_CA16},
{1, CB9_CA14, CB7_CA14, CB8_CA14},
{1, CB9_CA13, CB7_CA13, CB8_CA13},
{1, CB9_CA12, CB7_CA12, CB8_CA12},
{1, CB9_CA11, CB7_CA11, CB8_CA11},
{1, CB9_CA10, CB7_CA10, CB8_CA10},
{1, CB9_CA9, CB7_CA9, CB8_CA9},
{1, CB9_CA8, CB7_CA8, CB8_CA8},
{1, CB9_CA7, CB7_CA7, CB8_CA7},
{1, CB9_CA6, CB7_CA6, CB8_CA6},
{1, CB9_CA5, CB7_CA5, CB8_CA5},
{1, CB9_CA3, CB7_CA3, CB8_CA3},
{1, CB9_CA1, CB7_CA1, CB8_CA1},
{1, CB12_CA6, CB10_CA6, CB11_CA6},
{1, CB12_CA7, CB10_CA7, CB11_CA7},
{1, CB12_CA8, CB10_CA8, CB11_CA8},
{1, CB12_CA9, CB10_CA9, CB11_CA9},
{1, CB6_CA16, CB4_CA16, CB5_CA16},
{1, CB6_CA15, CB4_CA15, CB5_CA15},
{1, CB6_CA14, CB4_CA14, CB5_CA14},
{1, CB6_CA10, CB4_CA10, CB5_CA10},
{1, CB6_CA6, CB4_CA6, CB5_CA6},
{1, CB6_CA5, CB4_CA5, CB5_CA5},
{1, CB6_CA4, CB4_CA4, CB5_CA4},
{1, CB6_CA3, CB4_CA3, CB5_CA3},
{1, CB6_CA2, CB4_CA2, CB5_CA2},
{1, CB6_CA1, CB4_CA1, CB5_CA1},
{1, CB12_CA10, CB10_CA10, CB11_CA10},
{1, CB12_CA11, CB10_CA11, CB11_CA11},
{1, CB12_CA12, CB10_CA12, CB11_CA12},
};
#endif
// clang-format on

View File

@@ -1,26 +0,0 @@
/* Copyright 2025 @ 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/>.
*/
#pragma once
/* LED Matrix Driver Configuration */
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
/* Use the first 8 channels of led driver */
#define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_8_CHANNEL
/* Set LED driver current */
#define SNLED27351_CURRENT_TUNE { 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50 }

View File

@@ -1,140 +0,0 @@
{
"keyboard_name": "Keychron C2 Pro V2 White",
"features": {
"led_matrix": true
},
"led_matrix": {
"animations": {
"band_pinwheel": true,
"band_spiral": true,
"breathing": true,
"cycle_left_right": true,
"cycle_out_in": true,
"cycle_up_down": true,
"dual_beacon": true,
"solid_reactive_multinexus": true,
"solid_reactive_multiwide": true,
"solid_reactive_simple": true,
"solid_splash": true,
"wave_left_right": true,
"wave_up_down": true
},
"driver": "snled27351",
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
{"matrix": [0, 1], "x": 21, "y": 0, "flags": 1},
{"matrix": [0, 2], "x": 31, "y": 0, "flags": 1},
{"matrix": [0, 3], "x": 42, "y": 0, "flags": 1},
{"matrix": [0, 4], "x": 52, "y": 0, "flags": 1},
{"matrix": [0, 5], "x": 68, "y": 0, "flags": 1},
{"matrix": [0, 6], "x": 78, "y": 0, "flags": 1},
{"matrix": [0, 7], "x": 89, "y": 0, "flags": 1},
{"matrix": [0, 8], "x": 99, "y": 0, "flags": 1},
{"matrix": [0, 9], "x": 115, "y": 0, "flags": 1},
{"matrix": [0, 10], "x": 125, "y": 0, "flags": 1},
{"matrix": [0, 11], "x": 136, "y": 0, "flags": 1},
{"matrix": [0, 12], "x": 146, "y": 0, "flags": 1},
{"matrix": [0, 14], "x": 159, "y": 0, "flags": 1},
{"matrix": [0, 15], "x": 169, "y": 0, "flags": 1},
{"matrix": [0, 16], "x": 180, "y": 0, "flags": 1},
{"matrix": [1, 0], "x": 0, "y": 15, "flags": 1},
{"matrix": [1, 1], "x": 10, "y": 15, "flags": 4},
{"matrix": [1, 2], "x": 21, "y": 15, "flags": 4},
{"matrix": [1, 3], "x": 31, "y": 15, "flags": 4},
{"matrix": [1, 4], "x": 42, "y": 15, "flags": 4},
{"matrix": [1, 5], "x": 52, "y": 15, "flags": 4},
{"matrix": [1, 6], "x": 63, "y": 15, "flags": 4},
{"matrix": [1, 7], "x": 73, "y": 15, "flags": 4},
{"matrix": [1, 8], "x": 83, "y": 15, "flags": 4},
{"matrix": [1, 9], "x": 94, "y": 15, "flags": 4},
{"matrix": [1, 10], "x": 104, "y": 15, "flags": 4},
{"matrix": [1, 11], "x": 115, "y": 15, "flags": 4},
{"matrix": [1, 12], "x": 125, "y": 15, "flags": 4},
{"matrix": [1, 13], "x": 141, "y": 15, "flags": 1},
{"matrix": [1, 14], "x": 159, "y": 15, "flags": 1},
{"matrix": [1, 15], "x": 169, "y": 15, "flags": 1},
{"matrix": [1, 16], "x": 180, "y": 15, "flags": 1},
{"matrix": [1, 17], "x": 193, "y": 15, "flags": 4},
{"matrix": [1, 18], "x": 203, "y": 15, "flags": 4},
{"matrix": [1, 19], "x": 214, "y": 15, "flags": 4},
{"matrix": [1, 20], "x": 224, "y": 15, "flags": 4},
{"matrix": [2, 0], "x": 3, "y": 27, "flags": 1},
{"matrix": [2, 1], "x": 16, "y": 27, "flags": 4},
{"matrix": [2, 2], "x": 26, "y": 27, "flags": 4},
{"matrix": [2, 3], "x": 36, "y": 27, "flags": 4},
{"matrix": [2, 4], "x": 47, "y": 27, "flags": 4},
{"matrix": [2, 5], "x": 57, "y": 27, "flags": 4},
{"matrix": [2, 6], "x": 68, "y": 27, "flags": 4},
{"matrix": [2, 7], "x": 78, "y": 27, "flags": 4},
{"matrix": [2, 8], "x": 89, "y": 27, "flags": 4},
{"matrix": [2, 9], "x": 99, "y": 27, "flags": 4},
{"matrix": [2, 10], "x": 109, "y": 27, "flags": 4},
{"matrix": [2, 11], "x": 120, "y": 27, "flags": 4},
{"matrix": [2, 12], "x": 130, "y": 27, "flags": 4},
{"matrix": [2, 13], "x": 143, "y": 27, "flags": 1},
{"matrix": [2, 14], "x": 159, "y": 27, "flags": 1},
{"matrix": [2, 15], "x": 169, "y": 27, "flags": 1},
{"matrix": [2, 16], "x": 180, "y": 27, "flags": 1},
{"matrix": [2, 17], "x": 193, "y": 27, "flags": 4},
{"matrix": [2, 18], "x": 203, "y": 27, "flags": 4},
{"matrix": [2, 19], "x": 214, "y": 27, "flags": 4},
{"matrix": [2, 20], "x": 224, "y": 34, "flags": 4},
{"matrix": [3, 0], "x": 4, "y": 40, "flags": 8},
{"matrix": [3, 1], "x": 18, "y": 40, "flags": 4},
{"matrix": [3, 2], "x": 29, "y": 40, "flags": 4},
{"matrix": [3, 3], "x": 39, "y": 40, "flags": 4},
{"matrix": [3, 4], "x": 50, "y": 40, "flags": 4},
{"matrix": [3, 5], "x": 60, "y": 40, "flags": 4},
{"matrix": [3, 6], "x": 70, "y": 40, "flags": 4},
{"matrix": [3, 7], "x": 81, "y": 40, "flags": 4},
{"matrix": [3, 8], "x": 91, "y": 40, "flags": 4},
{"matrix": [3, 9], "x": 102, "y": 40, "flags": 4},
{"matrix": [3, 10], "x": 112, "y": 40, "flags": 4},
{"matrix": [3, 11], "x": 123, "y": 40, "flags": 4},
{"matrix": [3, 13], "x": 139, "y": 40, "flags": 1},
{"matrix": [3, 17], "x": 193, "y": 40, "flags": 4},
{"matrix": [3, 18], "x": 203, "y": 40, "flags": 4},
{"matrix": [3, 19], "x": 214, "y": 40, "flags": 4},
{"matrix": [4, 0], "x": 7, "y": 52, "flags": 1},
{"matrix": [4, 2], "x": 23, "y": 52, "flags": 4},
{"matrix": [4, 3], "x": 34, "y": 52, "flags": 4},
{"matrix": [4, 4], "x": 44, "y": 52, "flags": 4},
{"matrix": [4, 5], "x": 55, "y": 52, "flags": 4},
{"matrix": [4, 6], "x": 65, "y": 52, "flags": 4},
{"matrix": [4, 7], "x": 76, "y": 52, "flags": 4},
{"matrix": [4, 8], "x": 86, "y": 52, "flags": 4},
{"matrix": [4, 9], "x": 96, "y": 52, "flags": 4},
{"matrix": [4, 10], "x": 107, "y": 52, "flags": 4},
{"matrix": [4, 11], "x": 117, "y": 52, "flags": 4},
{"matrix": [4, 13], "x": 137, "y": 52, "flags": 1},
{"matrix": [4, 15], "x": 169, "y": 52, "flags": 1},
{"matrix": [4, 17], "x": 193, "y": 52, "flags": 4},
{"matrix": [4, 18], "x": 203, "y": 52, "flags": 4},
{"matrix": [4, 19], "x": 214, "y": 52, "flags": 4},
{"matrix": [4, 20], "x": 224, "y": 58, "flags": 4},
{"matrix": [5, 0], "x": 1, "y": 64, "flags": 1},
{"matrix": [5, 1], "x": 14, "y": 64, "flags": 1},
{"matrix": [5, 2], "x": 27, "y": 64, "flags": 1},
{"matrix": [5, 6], "x": 66, "y": 64, "flags": 4},
{"matrix": [5, 10], "x": 105, "y": 64, "flags": 1},
{"matrix": [5, 11], "x": 118, "y": 64, "flags": 1},
{"matrix": [5, 12], "x": 131, "y": 64, "flags": 1},
{"matrix": [5, 13], "x": 145, "y": 64, "flags": 1},
{"matrix": [5, 14], "x": 159, "y": 64, "flags": 1},
{"matrix": [5, 15], "x": 169, "y": 64, "flags": 1},
{"matrix": [5, 16], "x": 180, "y": 64, "flags": 1},
{"matrix": [5, 17], "x": 198, "y": 64, "flags": 4},
{"matrix": [5, 18], "x": 214, "y": 64, "flags": 4}
],
"sleep": true
},
"usb": {
"device_version": "1.0.0",
"pid": "0x0529"
}
}

View File

@@ -1,65 +0,0 @@
/* Copyright 2025 @ 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,
MAC_FN,
WIN_BASE,
WIN_FN,
};
#define KC_TASK LGUI(KC_TAB)
#define KC_FLXP LGUI(KC_E)
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_104_ansi(
KC_ESC, KC_BRID, KC_BRIU, _______, _______, LM_BRID, LM_BRIU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, LM_NEXT,
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_INS, KC_HOME, KC_PGUP, KC_NUM, 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_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_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
[MAC_FN] = LAYOUT_104_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, BL_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
LM_TOGG, LM_NEXT, LM_BRIU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, LM_BRID, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
[WIN_BASE] = LAYOUT_104_ansi(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NO, BL_STEP,
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_INS, KC_HOME, KC_PGUP, KC_NUM, 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_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_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_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT ),
[WIN_FN] = LAYOUT_104_ansi(
_______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, LM_BRID, LM_BRIU, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, LM_TOGG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
LM_TOGG, LM_NEXT, LM_BRIU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, LM_BRID, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ),
};
// clang-format on

View File

@@ -1,138 +0,0 @@
/* Copyright 2025 @ 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 "quantum.h"
// clang-format off
#ifdef LED_MATRIX_ENABLE
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
/* Refer to SNLED27351 manual for these locations
* driver
* | LED address
* | | */
{0, CB1_CA16},
{0, CB1_CA15},
{0, CB1_CA14},
{0, CB1_CA13},
{0, CB1_CA12},
{0, CB1_CA11},
{0, CB1_CA10},
{0, CB1_CA9 },
{0, CB1_CA8 },
{0, CB1_CA7 },
{0, CB1_CA6 },
{0, CB1_CA5 },
{0, CB1_CA4 },
{0, CB1_CA2 },
{0, CB1_CA1 },
{0, CB7_CA1 },
{0, CB2_CA16},
{0, CB2_CA15},
{0, CB2_CA14},
{0, CB2_CA13},
{0, CB2_CA12},
{0, CB2_CA11},
{0, CB2_CA10},
{0, CB2_CA9 },
{0, CB2_CA8 },
{0, CB2_CA7 },
{0, CB2_CA6 },
{0, CB2_CA5 },
{0, CB2_CA4 },
{0, CB2_CA3 },
{0, CB2_CA2 },
{0, CB2_CA1 },
{0, CB8_CA1 },
{0, CB8_CA2 },
{0, CB8_CA3 },
{0, CB8_CA4 },
{0, CB8_CA5 },
{0, CB3_CA16},
{0, CB3_CA15},
{0, CB3_CA14},
{0, CB3_CA13},
{0, CB3_CA12},
{0, CB3_CA11},
{0, CB3_CA10},
{0, CB3_CA9 },
{0, CB3_CA8 },
{0, CB3_CA7 },
{0, CB3_CA6 },
{0, CB3_CA5 },
{0, CB3_CA4 },
{0, CB3_CA3 },
{0, CB3_CA2 },
{0, CB3_CA1 },
{0, CB7_CA6 },
{0, CB7_CA7 },
{0, CB7_CA8 },
{0, CB7_CA9 },
{0, CB7_CA10},
{0, CB4_CA16},
{0, CB4_CA15},
{0, CB4_CA14},
{0, CB4_CA13},
{0, CB4_CA12},
{0, CB4_CA11},
{0, CB4_CA10},
{0, CB4_CA9 },
{0, CB4_CA8 },
{0, CB4_CA7 },
{0, CB4_CA6 },
{0, CB4_CA5 },
{0, CB4_CA3 },
{0, CB8_CA7 },
{0, CB8_CA8 },
{0, CB8_CA9 },
{0, CB5_CA16},
{0, CB5_CA14},
{0, CB5_CA13},
{0, CB5_CA12},
{0, CB5_CA11},
{0, CB5_CA10},
{0, CB5_CA9 },
{0, CB5_CA8 },
{0, CB5_CA7 },
{0, CB5_CA6 },
{0, CB5_CA5 },
{0, CB5_CA3 },
{0, CB5_CA1 },
{0, CB8_CA6 },
{0, CB8_CA11},
{0, CB8_CA12},
{0, CB8_CA10},
{0, CB6_CA16},
{0, CB6_CA15},
{0, CB6_CA14},
{0, CB6_CA10},
{0, CB6_CA6 },
{0, CB6_CA5 },
{0, CB6_CA4 },
{0, CB6_CA3 },
{0, CB6_CA2 },
{0, CB6_CA1 },
{0, CB7_CA13},
{0, CB7_CA11},
{0, CB7_CA12},
};
#endif
// clang-format on

View File

@@ -1,104 +0,0 @@
/* Copyright 2025 @ 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 "quantum.h"
#ifdef DIP_SWITCH_ENABLE
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) {
return false;
}
if (index == 0) {
default_layer_set(1UL << (active ? 0 : 2));
}
return true;
}
#endif
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
if (!process_record_user(keycode, record)) {
return false;
}
switch (keycode) {
#ifdef RGB_MATRIX_ENABLE
case QK_RGB_MATRIX_TOGGLE:
if (record->event.pressed) {
switch (rgb_matrix_get_flags()) {
case LED_FLAG_ALL: {
rgb_matrix_set_flags(LED_FLAG_NONE);
rgb_matrix_set_color_all(0, 0, 0);
} break;
default: {
rgb_matrix_set_flags(LED_FLAG_ALL);
} break;
}
}
if (!rgb_matrix_is_enabled()) {
rgb_matrix_set_flags(LED_FLAG_ALL);
rgb_matrix_enable();
}
return false;
#endif
#ifdef LED_MATRIX_ENABLE
case QK_LED_MATRIX_TOGGLE:
if (record->event.pressed) {
switch (led_matrix_get_flags()) {
case LED_FLAG_ALL: {
led_matrix_set_flags(LED_FLAG_NONE);
led_matrix_set_value_all(0);
} break;
default: {
led_matrix_set_flags(LED_FLAG_ALL);
} break;
}
}
if (!led_matrix_is_enabled()) {
led_matrix_set_flags(LED_FLAG_ALL);
led_matrix_enable();
}
return false;
#endif
default:
return true;
}
}
void keyboard_post_init_kb(void) {
gpio_set_pin_output_push_pull(LED_MAC_OS_PIN);
gpio_set_pin_output_push_pull(LED_WIN_OS_PIN);
gpio_write_pin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
gpio_write_pin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
keyboard_post_init_user();
}
void housekeeping_task_kb(void) {
if (default_layer_state == (1U << 0)) {
gpio_write_pin(LED_MAC_OS_PIN, LED_OS_PIN_ON_STATE);
gpio_write_pin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
}
if (default_layer_state == (1U << 2)) {
gpio_write_pin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
gpio_write_pin(LED_WIN_OS_PIN, LED_OS_PIN_ON_STATE);
}
}
void suspend_power_down_kb(void) {
gpio_write_pin(LED_WIN_OS_PIN, !LED_OS_PIN_ON_STATE);
gpio_write_pin(LED_MAC_OS_PIN, !LED_OS_PIN_ON_STATE);
suspend_power_down_user();
}

View File

@@ -1,26 +0,0 @@
/* Copyright 2025 @ 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/>.
*/
#pragma once
/* Indication led */
#define LED_MAC_OS_PIN C10
#define LED_WIN_OS_PIN C11
#define LED_OS_PIN_ON_STATE 1
/* The I2C Driver Configuration */
#define I2C1_CLOCK_SPEED 400000
#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2

View File

@@ -1,21 +0,0 @@
/* Copyright 2025 @ 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/>.
*/
#pragma once
#define HAL_USE_I2C TRUE
#include_next <halconf.h>

View File

@@ -1,151 +0,0 @@
{
"manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
"eeprom": {
"wear_leveling": {
"backing_size": 4096
}
},
"usb": {
"vid": "0x3434"
},
"features": {
"bootmagic": true,
"command": false,
"console": false,
"dip_switch": true,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"processor": "STM32F401",
"bootloader": "stm32-dfu",
"matrix_pins": {
"cols": ["A0", "A1", "A2", "A3", "C0", "C1", "C2", "C3", "A8", "C12", "B9", "C6", "C7", "C4", "C5","A15", "B10", "B12", "B13", "B14", "B15"],
"rows": ["B0", "B1", "B8", "B3", "B4", "B5"]
},
"diode_direction": "COL2ROW",
"indicators": {
"caps_lock": "C9",
"num_lock": "C8"
},
"dip_switch": {
"pins": ["D2"]
},
"layouts": {
"LAYOUT_104_ansi": {
"layout": [
{"matrix":[0,0], "x":0, "y":0},
{"matrix":[0,1], "x":2, "y":0},
{"matrix":[0,2], "x":3, "y":0},
{"matrix":[0,3], "x":4, "y":0},
{"matrix":[0,4], "x":5, "y":0},
{"matrix":[0,5], "x":6.5, "y":0},
{"matrix":[0,6], "x":7.5, "y":0},
{"matrix":[0,7], "x":8.5, "y":0},
{"matrix":[0,8], "x":9.5, "y":0},
{"matrix":[0,9], "x":11, "y":0},
{"matrix":[0,10], "x":12, "y":0},
{"matrix":[0,11], "x":13, "y":0},
{"matrix":[0,12], "x":14, "y":0},
{"matrix":[0,14], "x":15.25, "y":0},
{"matrix":[0,15], "x":16.25, "y":0},
{"matrix":[0,16], "x":17.25, "y":0},
{"matrix":[1,0], "x":0, "y":1.25},
{"matrix":[1,1], "x":1, "y":1.25},
{"matrix":[1,2], "x":2, "y":1.25},
{"matrix":[1,3], "x":3, "y":1.25},
{"matrix":[1,4], "x":4, "y":1.25},
{"matrix":[1,5], "x":5, "y":1.25},
{"matrix":[1,6], "x":6, "y":1.25},
{"matrix":[1,7], "x":7, "y":1.25},
{"matrix":[1,8], "x":8, "y":1.25},
{"matrix":[1,9], "x":9, "y":1.25},
{"matrix":[1,10], "x":10, "y":1.25},
{"matrix":[1,11], "x":11, "y":1.25},
{"matrix":[1,12], "x":12, "y":1.25},
{"matrix":[1,13], "x":13, "y":1.25, "w":2},
{"matrix":[1,14], "x":15.25, "y":1.25},
{"matrix":[1,15], "x":16.25, "y":1.25},
{"matrix":[1,16], "x":17.25, "y":1.25},
{"matrix":[1,17], "x":18.5, "y":1.25},
{"matrix":[1,18], "x":19.5, "y":1.25},
{"matrix":[1,19], "x":20.5, "y":1.25},
{"matrix":[1,20], "x":21.5, "y":1.25},
{"matrix":[2,0], "x":0, "y":2.25, "w":1.5},
{"matrix":[2,1], "x":1.5, "y":2.25},
{"matrix":[2,2], "x":2.5, "y":2.25},
{"matrix":[2,3], "x":3.5, "y":2.25},
{"matrix":[2,4], "x":4.5, "y":2.25},
{"matrix":[2,5], "x":5.5, "y":2.25},
{"matrix":[2,6], "x":6.5, "y":2.25},
{"matrix":[2,7], "x":7.5, "y":2.25},
{"matrix":[2,8], "x":8.5, "y":2.25},
{"matrix":[2,9], "x":9.5, "y":2.25},
{"matrix":[2,10], "x":10.5, "y":2.25},
{"matrix":[2,11], "x":11.5, "y":2.25},
{"matrix":[2,12], "x":12.5, "y":2.25},
{"matrix":[2,13], "x":13.5, "y":2.25, "w":1.5},
{"matrix":[2,14], "x":15.25, "y":2.25},
{"matrix":[2,15], "x":16.25, "y":2.25},
{"matrix":[2,16], "x":17.25, "y":2.25},
{"matrix":[2,17], "x":18.5, "y":2.25},
{"matrix":[2,18], "x":19.5, "y":2.25},
{"matrix":[2,19], "x":20.5, "y":2.25},
{"matrix":[2,20], "x":21.5, "y":2.25, "h":2},
{"matrix":[3,0], "x":0, "y":3.25, "w":1.75},
{"matrix":[3,1], "x":1.75, "y":3.25},
{"matrix":[3,2], "x":2.75, "y":3.25},
{"matrix":[3,3], "x":3.75, "y":3.25},
{"matrix":[3,4], "x":4.75, "y":3.25},
{"matrix":[3,5], "x":5.75, "y":3.25},
{"matrix":[3,6], "x":6.75, "y":3.25},
{"matrix":[3,7], "x":7.75, "y":3.25},
{"matrix":[3,8], "x":8.75, "y":3.25},
{"matrix":[3,9], "x":9.75, "y":3.25},
{"matrix":[3,10], "x":10.75, "y":3.25},
{"matrix":[3,11], "x":11.75, "y":3.25},
{"matrix":[3,13], "x":12.75, "y":3.25, "w":2.25},
{"matrix":[3,17], "x":18.5, "y":3.25},
{"matrix":[3,18], "x":19.5, "y":3.25},
{"matrix":[3,19], "x":20.5, "y":3.25},
{"matrix":[4,0], "x":0, "y":4.25, "w":2.25},
{"matrix":[4,2], "x":2.25, "y":4.25},
{"matrix":[4,3], "x":3.25, "y":4.25},
{"matrix":[4,4], "x":4.25, "y":4.25},
{"matrix":[4,5], "x":5.25, "y":4.25},
{"matrix":[4,6], "x":6.25, "y":4.25},
{"matrix":[4,7], "x":7.25, "y":4.25},
{"matrix":[4,8], "x":8.25, "y":4.25},
{"matrix":[4,9], "x":9.25, "y":4.25},
{"matrix":[4,10], "x":10.25, "y":4.25},
{"matrix":[4,11], "x":11.25, "y":4.25},
{"matrix":[4,13], "x":12.25, "y":4.25, "w":2.75},
{"matrix":[4,15], "x":16.25, "y":4.25},
{"matrix":[4,17], "x":18.5, "y":4.25},
{"matrix":[4,18], "x":19.5, "y":4.25},
{"matrix":[4,19], "x":20.5, "y":4.25},
{"matrix":[4,20], "x":21.5, "y":4.25, "h":2},
{"matrix":[5,0], "x":0, "y":5.25, "w":1.25},
{"matrix":[5,1], "x":1.25, "y":5.25, "w":1.25},
{"matrix":[5,2], "x":2.5, "y":5.25, "w":1.25},
{"matrix":[5,6], "x":3.75, "y":5.25, "w":6.25},
{"matrix":[5,10], "x":10, "y":5.25, "w":1.25},
{"matrix":[5,11], "x":11.25, "y":5.25, "w":1.25},
{"matrix":[5,12], "x":12.5, "y":5.25, "w":1.25},
{"matrix":[5,13], "x":13.75, "y":5.25, "w":1.25},
{"matrix":[5,14], "x":15.25, "y":5.25},
{"matrix":[5,15], "x":16.25, "y":5.25},
{"matrix":[5,16], "x":17.25, "y":5.25},
{"matrix":[5,17], "x":18.5, "y":5.25, "w":2},
{"matrix":[5,18], "x":20.5, "y":5.25}
]
}
}
}

View File

@@ -1,28 +0,0 @@
/* Copyright 2025 @ 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/>.
*/
#pragma once
#include_next <mcuconf.h>
#undef STM32_HSECLK
#define STM32_HSECLK 16000000U
#undef STM32_PLLM_VALUE
#define STM32_PLLM_VALUE 8
#undef STM32_I2C_USE_I2C1
#define STM32_I2C_USE_I2C1 TRUE

View File

@@ -1,30 +0,0 @@
# Keychron C2 Pro V2
![Keychron C2 Pro](https://i.imgur.com/BQE1tFO.jpg)
A customizable 100% keyboard.
Rev1 is based on STM32L432 and rev2 is based on STM32F402.
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
* Hardware Supported: Keychron C2 Pro
* Hardware Availability: [Keychron C2 Pro QMK/VIA Wired Mechanical Keyboard](https://www.keychron.com/products/keychron-c2-pro-qmk-via-wired-mechanical-keyboard)
Make example for this keyboard (after setting up your build environment):
make keychron/c2_pro_v2/ansi/rgb:default
make keychron/c2_pro_v2/ansi/white:default
Flashing example for this keyboard:
make keychron/c2_pro_v2/ansi/rgb:default:flash
make keychron/c2_pro_v2/ansi/white:default:flash
## bootloader
Enter the bootloader in two ways:
* **Bootmagic reset**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
* **Physical reset button**: Briefly press the RESET button under the spacebar.
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@@ -1,603 +0,0 @@
{
"keyboard_name": "Keycult Zero",
"manufacturer": "Yiancar-Designs",
"url": "https://yiancar-designs.com",
"maintainer": "Yiancar-Designs",
"usb": {
"vid": "0x8968",
"pid": "0x6337",
"device_version": "0.0.1"
},
"features": {
"bootmagic": true,
"mousekey": true,
"extrakey": true,
"nkro": true
},
"indicators": {
"caps_lock": "B6",
"on_state": 0
},
"matrix_pins": {
"cols": ["A1", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "B2", "B10", "B11", "B12", "B13", "B14"],
"rows": ["A2", "B9", "B8", "B5", "B4"]
},
"diode_direction": "COL2ROW",
"processor": "STM32F072",
"bootloader": "stm32-dfu",
"community_layouts": [
"60_ansi",
"60_ansi_split_bs_rshift",
"60_ansi_tsangan",
"60_ansi_tsangan_split_bs_rshift",
"60_iso",
"60_iso_split_bs_rshift",
"60_iso_tsangan"
],
"layout_aliases": {
"LAYOUT_60_tsangan_hhkb": "LAYOUT_60_ansi_tsangan_split_bs_rshift"
},
"layouts": {
"LAYOUT_all": {
"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": [2, 12], "x": 14, "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": 13.5, "y": 1, "w": 1.5},
{"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, 13], "x": 12.75, "y": 2, "w": 2.25},
{"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": 14, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi": {
"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, "w": 2},
{"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": 13.5, "y": 1, "w": 1.5},
{"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, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"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": 2.75},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi_split_bs_rshift": {
"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": [2, 12], "x": 14, "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": 13.5, "y": 1, "w": 1.5},
{"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, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"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": 14, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi_tsangan": {
"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, "w": 2},
{"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": 13.5, "y": 1, "w": 1.5},
{"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, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"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": 2.75},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 4},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"matrix": [4, 12], "x": 12.5, "y": 4},
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_iso": {
"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, "w": 2},
{"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": [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": [1, 13], "x": 12.75, "y": 2},
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"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": 2.75},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_iso_split_bs_rshift": {
"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": [2, 12], "x": 14, "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": [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": [1, 13], "x": 12.75, "y": 2},
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"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": 14, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_iso_tsangan": {
"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, "w": 2},
{"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": [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": [1, 13], "x": 12.75, "y": 2},
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"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": 2.75},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 4},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"matrix": [4, 12], "x": 12.5, "y": 4},
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_ansi_tsangan_split_bs_rshift": {
"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": [2, 12], "x": 14, "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": 13.5, "y": 1, "w": 1.5},
{"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, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"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": 14, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 4},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"matrix": [4, 12], "x": 12.5, "y": 4},
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
]
}
}
}

View File

@@ -1,21 +0,0 @@
/* Copyright 2024 Yiancar-Designs
*
* 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"
void led_init_ports(void) {
// Set our LED pins as open drain outputs
gpio_set_pin_output_open_drain(LED_CAPS_LOCK_PIN);
}

View File

@@ -1,32 +0,0 @@
/* Copyright 2024 Yiancar-Designs
*
* 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_all( /* Base */
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_BSPC, KC_DEL,
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_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_RALT, MO(1), KC_APP, KC_RCTL),
[1] = LAYOUT_all( /* FN */
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_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS,
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};

View File

@@ -1,32 +0,0 @@
# Keycult Zero
This is a standard 60% layout PCB. It supports VIA.
* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
* Hardware Supported: A 60% keyboard with STM32F072CB
* Hardware Availability: https://novelkeys.com/
## Instructions
### Build
Make example for this keyboard (after setting up your build environment):
make keycult/keycult_zero:default
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).
### Reset
- Unplug
- Hold Escape
- Plug In
- Unplug
- Release Escape
### Flash
- Unplug
- Hold Escape
- Plug In
- Flash using QMK Toolbox or CLI (`make keycult/keycult_zero:<keymap>:flash`)

View File

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

View File

@@ -1,9 +0,0 @@
// Copyright 2024 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <chconf.h>
#undef CH_CFG_ST_RESOLUTION
#define CH_CFG_ST_RESOLUTION 16

View File

@@ -1,8 +0,0 @@
// Copyright 2024 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define BACKLIGHT_PWM_DRIVER PWMD2
#define BACKLIGHT_PWM_CHANNEL 4
#define BACKLIGHT_PAL_MODE 2

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