forked from mirror/qmk_firmware
Compare commits
49 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5a6595357d | ||
|
|
25fb4a498a | ||
|
|
6f3b494a4d | ||
|
|
d4120b1def | ||
|
|
ce9713c47d | ||
|
|
64fe4aff31 | ||
|
|
a3c39bde0e | ||
|
|
ce2f7d86be | ||
|
|
6a947fa534 | ||
|
|
f4dfa218ff | ||
|
|
f6dbb56a10 | ||
|
|
894b9c458d | ||
|
|
9f44488bb1 | ||
|
|
a958276a76 | ||
|
|
7fd12c2b98 | ||
|
|
3a8c76fae5 | ||
|
|
96882c6a67 | ||
|
|
c5232ba699 | ||
|
|
e7c5695a0c | ||
|
|
46829663aa | ||
|
|
386a5019a8 | ||
|
|
271efeb8bc | ||
|
|
95223aa872 | ||
|
|
c6446aeaf9 | ||
|
|
65aef7be95 | ||
|
|
8ae5d34c0d | ||
|
|
25af20bef4 | ||
|
|
84f9b6dd3e | ||
|
|
a70288bc4a | ||
|
|
3c6a691126 | ||
|
|
0302171fac | ||
|
|
fcfe0e8a95 | ||
|
|
f0a5db96c8 | ||
|
|
c2979e309f | ||
|
|
b2ee1612fa | ||
|
|
cc09f17111 | ||
|
|
a585bd08a3 | ||
|
|
cb6e1c1af5 | ||
|
|
563eb6fdc9 | ||
|
|
6c10839e33 | ||
|
|
abea50c26e | ||
|
|
acec6904d8 | ||
|
|
655bf4008a | ||
|
|
516fa90f99 | ||
|
|
0419cd2eed | ||
|
|
a3a3af1184 | ||
|
|
88d1f61f10 | ||
|
|
e0e96c2a75 | ||
|
|
a4d86a63f2 |
1
.github/workflows/auto_tag.yml
vendored
1
.github/workflows/auto_tag.yml
vendored
@@ -15,6 +15,7 @@ on:
|
||||
- quantum/**/*
|
||||
- tests/**/*
|
||||
- tmk_core/**/*
|
||||
- lib/python/**/*
|
||||
- util/**/*
|
||||
- Makefile
|
||||
- '*.mk'
|
||||
|
||||
2
.github/workflows/format.yml
vendored
2
.github/workflows/format.yml
vendored
@@ -36,7 +36,7 @@ jobs:
|
||||
|
||||
- name: Get changed files
|
||||
id: file_changes
|
||||
uses: tj-actions/changed-files@v45
|
||||
uses: tj-actions/changed-files@v46
|
||||
with:
|
||||
use_rest_api: true
|
||||
|
||||
|
||||
2
.github/workflows/lint.yml
vendored
2
.github/workflows/lint.yml
vendored
@@ -27,7 +27,7 @@ jobs:
|
||||
|
||||
- name: Get changed files
|
||||
id: file_changes
|
||||
uses: tj-actions/changed-files@v45
|
||||
uses: tj-actions/changed-files@v46
|
||||
with:
|
||||
use_rest_api: true
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"license": "GPL-2.0-or-later",
|
||||
"devDependencies": {
|
||||
"vite": "^5.4.12",
|
||||
"vite": "^5.4.15",
|
||||
"vitepress": "^1.1.0",
|
||||
"vitepress-plugin-tabs": "^0.5.0",
|
||||
"vue": "^3.4.24"
|
||||
|
||||
@@ -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.12:
|
||||
version "5.4.12"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.12.tgz#627d12ff06de3942557dfe8632fd712a12a072c7"
|
||||
integrity sha512-KwUaKB27TvWwDJr1GjjWthLMATbGEbeWYZIbGZ5qFIsgPP3vWzLu4cVooqhm5/Z2SPDUMjyPVjTztm5tYKwQxA==
|
||||
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==
|
||||
dependencies:
|
||||
esbuild "^0.21.3"
|
||||
postcss "^8.4.43"
|
||||
|
||||
@@ -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 theres's 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 active 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).
|
||||
|
||||
|
||||
@@ -19,9 +19,13 @@ 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. |
|
||||
@@ -36,6 +40,7 @@ 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. |
|
||||
@@ -45,6 +50,7 @@ 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
|
||||
|
||||
@@ -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, (239 - my_image->width), (319 - my_image->height), my_image);
|
||||
qp_drawimage(display, (240 - my_image->width), (320 - 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, (239 - my_image->width), (319 - my_image->height), my_image);
|
||||
my_anim = qp_animate(display, (240 - my_image->width), (320 - 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, (239 - width), (319 - my_font->line_height), my_font, text);
|
||||
qp_drawtext(display, (240 - width), (320 - my_font->line_height), my_font, text);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
34
keyboards/5keys/keyboard.json
Normal file
34
keyboards/5keys/keyboard.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
21
keyboards/5keys/keymaps/default/keymap.c
Normal file
21
keyboards/5keys/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,21 @@
|
||||
/* 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)
|
||||
)
|
||||
};
|
||||
27
keyboards/5keys/readme.md
Normal file
27
keyboards/5keys/readme.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# 5keys
|
||||
|
||||

|
||||
|
||||
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
|
||||
53
keyboards/adafruit/pico_pad/keyboard.json
Normal file
53
keyboards/adafruit/pico_pad/keyboard.json
Normal file
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"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]}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
12
keyboards/adafruit/pico_pad/keymaps/default/keymap.json
Normal file
12
keyboards/adafruit/pico_pad/keymaps/default/keymap.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"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"
|
||||
]
|
||||
]
|
||||
}
|
||||
25
keyboards/adafruit/pico_pad/readme.md
Normal file
25
keyboards/adafruit/pico_pad/readme.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# PICO PAD
|
||||
|
||||

|
||||
|
||||
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
|
||||
@@ -48,6 +48,11 @@ 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();
|
||||
|
||||
@@ -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_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
|
||||
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
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT_all(
|
||||
|
||||
@@ -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_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
|
||||
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
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT_all(
|
||||
|
||||
@@ -30,8 +30,7 @@
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"breathing": true,
|
||||
"cycle_left_right": true,
|
||||
"solid_color": true
|
||||
"cycle_left_right": true
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
|
||||
115
keyboards/dnlnm/cloak/keyboard.json
Normal file
115
keyboards/dnlnm/cloak/keyboard.json
Normal file
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
68
keyboards/dnlnm/cloak/keymaps/default/keymap.c
Normal file
68
keyboards/dnlnm/cloak/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,68 @@
|
||||
// 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
|
||||
1
keyboards/dnlnm/cloak/keymaps/default/rules.mk
Normal file
1
keyboards/dnlnm/cloak/keymaps/default/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
25
keyboards/dnlnm/cloak/readme.md
Normal file
25
keyboards/dnlnm/cloak/readme.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# dnlnm/cloak
|
||||
|
||||

|
||||
|
||||
* 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
|
||||
@@ -235,6 +235,75 @@
|
||||
{"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
70
keyboards/ducky/one2mini/keymaps/ansi_tsangan/keymap.c
Normal file
70
keyboards/ducky/one2mini/keymaps/ansi_tsangan/keymap.c
Normal file
@@ -0,0 +1,70 @@
|
||||
/* 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, _______, _______, _______
|
||||
),
|
||||
};
|
||||
8
keyboards/era/sirind/chickpad/config.h
Normal file
8
keyboards/era/sirind/chickpad/config.h
Normal file
@@ -0,0 +1,8 @@
|
||||
// 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
|
||||
120
keyboards/era/sirind/chickpad/keyboard.json
Normal file
120
keyboards/era/sirind/chickpad/keyboard.json
Normal file
@@ -0,0 +1,120 @@
|
||||
{
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
13
keyboards/era/sirind/chickpad/keymaps/default/keymap.c
Normal file
13
keyboards/era/sirind/chickpad/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,13 @@
|
||||
// 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
|
||||
)
|
||||
};
|
||||
25
keyboards/era/sirind/chickpad/readme.md
Normal file
25
keyboards/era/sirind/chickpad/readme.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# ChickPad Unified
|
||||
|
||||

|
||||
|
||||
* 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
|
||||
@@ -62,7 +62,6 @@
|
||||
"rainbow_moving_chevron": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"solid_color": true,
|
||||
"solid_multisplash": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_cross": true,
|
||||
|
||||
13
keyboards/handwired/erikpeyronson/erkbd/config.h
Normal file
13
keyboards/handwired/erikpeyronson/erkbd/config.h
Normal file
@@ -0,0 +1,13 @@
|
||||
// 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
|
||||
63
keyboards/handwired/erikpeyronson/erkbd/erkbd.c
Normal file
63
keyboards/handwired/erikpeyronson/erkbd/erkbd.c
Normal file
@@ -0,0 +1,63 @@
|
||||
// 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;
|
||||
}
|
||||
107
keyboards/handwired/erikpeyronson/erkbd/keyboard.json
Normal file
107
keyboards/handwired/erikpeyronson/erkbd/keyboard.json
Normal file
@@ -0,0 +1,107 @@
|
||||
{
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
// 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
|
||||
@@ -0,0 +1,2 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"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" }
|
||||
]
|
||||
]
|
||||
}
|
||||
28
keyboards/handwired/erikpeyronson/erkbd/readme.md
Normal file
28
keyboards/handwired/erikpeyronson/erkbd/readme.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# handwired/erikpeyronson/erkbd
|
||||
|
||||

|
||||
|
||||
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:
|
||||
21
keyboards/handwired/franky36/config.h
Normal file
21
keyboards/handwired/franky36/config.h
Normal file
@@ -0,0 +1,21 @@
|
||||
/* 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
|
||||
68
keyboards/handwired/franky36/franky36.c
Normal file
68
keyboards/handwired/franky36/franky36.c
Normal file
@@ -0,0 +1,68 @@
|
||||
/* 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
|
||||
21
keyboards/handwired/franky36/halconf.h
Normal file
21
keyboards/handwired/franky36/halconf.h
Normal file
@@ -0,0 +1,21 @@
|
||||
/* 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>
|
||||
72
keyboards/handwired/franky36/keyboard.json
Normal file
72
keyboards/handwired/franky36/keyboard.json
Normal file
@@ -0,0 +1,72 @@
|
||||
{
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
123
keyboards/handwired/franky36/keymaps/default/keymap.c
Normal file
123
keyboards/handwired/franky36/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,123 @@
|
||||
/* 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, _______,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
24
keyboards/handwired/franky36/mcuconf.h
Normal file
24
keyboards/handwired/franky36/mcuconf.h
Normal file
@@ -0,0 +1,24 @@
|
||||
/* 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
|
||||
25
keyboards/handwired/franky36/readme.md
Normal file
25
keyboards/handwired/franky36/readme.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# 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
|
||||
104
keyboards/handwired/protype/keyboard.json
Normal file
104
keyboards/handwired/protype/keyboard.json
Normal file
@@ -0,0 +1,104 @@
|
||||
{
|
||||
"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 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
15
keyboards/handwired/protype/keymaps/default/keymap.c
Normal file
15
keyboards/handwired/protype/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,15 @@
|
||||
// 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
|
||||
)
|
||||
};
|
||||
26
keyboards/handwired/protype/readme.md
Normal file
26
keyboards/handwired/protype/readme.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Cherry Protype Display Typewriter
|
||||
|
||||

|
||||
|
||||
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
|
||||
40
keyboards/jankycaps/janky9/keyboard.json
Normal file
40
keyboards/jankycaps/janky9/keyboard.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
25
keyboards/jankycaps/janky9/keymaps/default/keymap.c
Normal file
25
keyboards/jankycaps/janky9/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,25 @@
|
||||
/* 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
|
||||
),
|
||||
};
|
||||
27
keyboards/jankycaps/janky9/readme.md
Normal file
27
keyboards/jankycaps/janky9/readme.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Janky No.9
|
||||
|
||||

|
||||
|
||||
*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
|
||||
10
keyboards/keebart/sofle_choc_pro/config.h
Normal file
10
keyboards/keebart/sofle_choc_pro/config.h
Normal file
@@ -0,0 +1,10 @@
|
||||
// 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
|
||||
235
keyboards/keebart/sofle_choc_pro/keyboard.json
Normal file
235
keyboards/keebart/sofle_choc_pro/keyboard.json
Normal file
@@ -0,0 +1,235 @@
|
||||
{
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
49
keyboards/keebart/sofle_choc_pro/keymaps/default/keymap.c
Normal file
49
keyboards/keebart/sofle_choc_pro/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,49 @@
|
||||
// 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
|
||||
@@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
28
keyboards/keebart/sofle_choc_pro/readme.md
Normal file
28
keyboards/keebart/sofle_choc_pro/readme.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# Sofle Choc Pro
|
||||
|
||||

|
||||
|
||||
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
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"keyboards_name": "Keychron C1 Pro V2 Non-Light",
|
||||
"usb": {
|
||||
"pid": "0x051C",
|
||||
"device_version": "1.0.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
/* 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
|
||||
24
keyboards/keychron/c1_pro_v2/ansi/rgb/config.h
Normal file
24
keyboards/keychron/c1_pro_v2/ansi/rgb/config.h
Normal file
@@ -0,0 +1,24 @@
|
||||
/* 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 }
|
||||
131
keyboards/keychron/c1_pro_v2/ansi/rgb/keyboard.json
Normal file
131
keyboards/keychron/c1_pro_v2/ansi/rgb/keyboard.json
Normal file
@@ -0,0 +1,131 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
/* 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
|
||||
124
keyboards/keychron/c1_pro_v2/ansi/rgb/rgb.c
Normal file
124
keyboards/keychron/c1_pro_v2/ansi/rgb/rgb.c
Normal file
@@ -0,0 +1,124 @@
|
||||
/* 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
|
||||
25
keyboards/keychron/c1_pro_v2/ansi/white/config.h
Normal file
25
keyboards/keychron/c1_pro_v2/ansi/white/config.h
Normal file
@@ -0,0 +1,25 @@
|
||||
/* 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 }
|
||||
122
keyboards/keychron/c1_pro_v2/ansi/white/keyboard.json
Normal file
122
keyboards/keychron/c1_pro_v2/ansi/white/keyboard.json
Normal file
@@ -0,0 +1,122 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
/* 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
|
||||
121
keyboards/keychron/c1_pro_v2/ansi/white/white.c
Normal file
121
keyboards/keychron/c1_pro_v2/ansi/white/white.c
Normal file
@@ -0,0 +1,121 @@
|
||||
/* 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
|
||||
104
keyboards/keychron/c1_pro_v2/c1_pro_v2.c
Normal file
104
keyboards/keychron/c1_pro_v2/c1_pro_v2.c
Normal file
@@ -0,0 +1,104 @@
|
||||
/* 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();
|
||||
}
|
||||
26
keyboards/keychron/c1_pro_v2/config.h
Normal file
26
keyboards/keychron/c1_pro_v2/config.h
Normal file
@@ -0,0 +1,26 @@
|
||||
/* 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
|
||||
21
keyboards/keychron/c1_pro_v2/halconf.h
Normal file
21
keyboards/keychron/c1_pro_v2/halconf.h
Normal file
@@ -0,0 +1,21 @@
|
||||
/* 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>
|
||||
134
keyboards/keychron/c1_pro_v2/info.json
Normal file
134
keyboards/keychron/c1_pro_v2/info.json
Normal file
@@ -0,0 +1,134 @@
|
||||
{
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
28
keyboards/keychron/c1_pro_v2/mcuconf.h
Normal file
28
keyboards/keychron/c1_pro_v2/mcuconf.h
Normal file
@@ -0,0 +1,28 @@
|
||||
/* 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
|
||||
32
keyboards/keychron/c1_pro_v2/readme.md
Normal file
32
keyboards/keychron/c1_pro_v2/readme.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# Keychron C1 Pro V2
|
||||
|
||||

|
||||
|
||||
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).
|
||||
24
keyboards/keychron/c2_pro_v2/ansi/rgb/config.h
Normal file
24
keyboards/keychron/c2_pro_v2/ansi/rgb/config.h
Normal file
@@ -0,0 +1,24 @@
|
||||
/* 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 }
|
||||
148
keyboards/keychron/c2_pro_v2/ansi/rgb/keyboard.json
Normal file
148
keyboards/keychron/c2_pro_v2/ansi/rgb/keyboard.json
Normal file
@@ -0,0 +1,148 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
/* 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
|
||||
139
keyboards/keychron/c2_pro_v2/ansi/rgb/rgb.c
Normal file
139
keyboards/keychron/c2_pro_v2/ansi/rgb/rgb.c
Normal file
@@ -0,0 +1,139 @@
|
||||
/* 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
|
||||
26
keyboards/keychron/c2_pro_v2/ansi/white/config.h
Normal file
26
keyboards/keychron/c2_pro_v2/ansi/white/config.h
Normal file
@@ -0,0 +1,26 @@
|
||||
/* 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 }
|
||||
140
keyboards/keychron/c2_pro_v2/ansi/white/keyboard.json
Normal file
140
keyboards/keychron/c2_pro_v2/ansi/white/keyboard.json
Normal file
@@ -0,0 +1,140 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
/* 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
|
||||
|
||||
138
keyboards/keychron/c2_pro_v2/ansi/white/white.c
Normal file
138
keyboards/keychron/c2_pro_v2/ansi/white/white.c
Normal file
@@ -0,0 +1,138 @@
|
||||
/* 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
|
||||
104
keyboards/keychron/c2_pro_v2/c2_pro_v2.c
Normal file
104
keyboards/keychron/c2_pro_v2/c2_pro_v2.c
Normal file
@@ -0,0 +1,104 @@
|
||||
/* 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();
|
||||
}
|
||||
26
keyboards/keychron/c2_pro_v2/config.h
Normal file
26
keyboards/keychron/c2_pro_v2/config.h
Normal file
@@ -0,0 +1,26 @@
|
||||
/* 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
|
||||
21
keyboards/keychron/c2_pro_v2/halconf.h
Normal file
21
keyboards/keychron/c2_pro_v2/halconf.h
Normal file
@@ -0,0 +1,21 @@
|
||||
/* 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>
|
||||
151
keyboards/keychron/c2_pro_v2/info.json
Normal file
151
keyboards/keychron/c2_pro_v2/info.json
Normal file
@@ -0,0 +1,151 @@
|
||||
{
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
28
keyboards/keychron/c2_pro_v2/mcuconf.h
Normal file
28
keyboards/keychron/c2_pro_v2/mcuconf.h
Normal file
@@ -0,0 +1,28 @@
|
||||
/* 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
|
||||
30
keyboards/keychron/c2_pro_v2/readme.md
Normal file
30
keyboards/keychron/c2_pro_v2/readme.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Keychron C2 Pro V2
|
||||
|
||||

|
||||
|
||||
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).
|
||||
603
keyboards/keycult/keycult_zero/keyboard.json
Executable file
603
keyboards/keycult/keycult_zero/keyboard.json
Executable file
@@ -0,0 +1,603 @@
|
||||
{
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
21
keyboards/keycult/keycult_zero/keycult_zero.c
Executable file
21
keyboards/keycult/keycult_zero/keycult_zero.c
Executable file
@@ -0,0 +1,21 @@
|
||||
/* 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);
|
||||
}
|
||||
32
keyboards/keycult/keycult_zero/keymaps/default/keymap.c
Normal file
32
keyboards/keycult/keycult_zero/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,32 @@
|
||||
/* 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)
|
||||
};
|
||||
32
keyboards/keycult/keycult_zero/readme.md
Executable file
32
keyboards/keycult/keycult_zero/readme.md
Executable file
@@ -0,0 +1,32 @@
|
||||
# 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`)
|
||||
2
keyboards/keycult/keycult_zero/rules.mk
Normal file
2
keyboards/keycult/keycult_zero/rules.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
||||
9
keyboards/keyten/kt60_mu/chconf.h
Normal file
9
keyboards/keyten/kt60_mu/chconf.h
Normal file
@@ -0,0 +1,9 @@
|
||||
// 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
|
||||
8
keyboards/keyten/kt60_mu/config.h
Normal file
8
keyboards/keyten/kt60_mu/config.h
Normal file
@@ -0,0 +1,8 @@
|
||||
// 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
|
||||
8
keyboards/keyten/kt60_mu/halconf.h
Normal file
8
keyboards/keyten/kt60_mu/halconf.h
Normal file
@@ -0,0 +1,8 @@
|
||||
// Copyright 2024 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_PWM TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
300
keyboards/keyten/kt60_mu/keyboard.json
Normal file
300
keyboards/keyten/kt60_mu/keyboard.json
Normal file
@@ -0,0 +1,300 @@
|
||||
{
|
||||
"manufacturer": "keyten",
|
||||
"keyboard_name": "kt60-MU",
|
||||
"maintainer": "key10iq",
|
||||
"processor": "STM32F072",
|
||||
"bootloader": "stm32-dfu",
|
||||
"usb": {
|
||||
"vid": "0xEB69",
|
||||
"pid": "0x6006",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"backlight": true
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"matrix_pins": {
|
||||
"rows": ["B2", "B1", "B7", "B6", "B5"],
|
||||
"cols": ["A15", "A4", "F1", "A5", "F0", "A6", "C15", "A7", "C14", "B0", "C13", "B10", "B4", "B3"]
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "A14"
|
||||
},
|
||||
"backlight": {
|
||||
"pin": "B11",
|
||||
"levels": 15
|
||||
},
|
||||
"community_layouts": [
|
||||
"60_ansi_wkl_split_bs_rshift",
|
||||
"60_hhkb",
|
||||
"60_ansi_tsangan_split_bs_rshift"
|
||||
],
|
||||
"layout_aliases": {
|
||||
"LAYOUT_all": "LAYOUT_60_ansi_tsangan_split_bs_rshift"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_60_ansi_wkl_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, 13], "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, 12], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 2], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 11.25, "y": 3},
|
||||
{"matrix": [4, 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, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_hhkb": {
|
||||
"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, 13], "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, 12], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 2], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 11.25, "y": 3},
|
||||
{"matrix": [4, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 13], "x": 14, "y": 3},
|
||||
{"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, 10], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 11], "x": 12.5, "y": 4}
|
||||
]
|
||||
},
|
||||
"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, 13], "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, 12], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 2], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 11.25, "y": 3},
|
||||
{"matrix": [4, 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, 10], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 11], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_tsangan_split_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": [2, 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, 12], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 2], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 11.25, "y": 3},
|
||||
{"matrix": [4, 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, 10], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 11], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
24
keyboards/keyten/kt60_mu/keymaps/default/keymap.c
Normal file
24
keyboards/keyten/kt60_mu/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,24 @@
|
||||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
|
||||
),
|
||||
|
||||
[1] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
|
||||
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
|
||||
};
|
||||
12
keyboards/keyten/kt60_mu/mcuconf.h
Normal file
12
keyboards/keyten/kt60_mu/mcuconf.h
Normal file
@@ -0,0 +1,12 @@
|
||||
// Copyright 2024 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_PWM_USE_TIM2
|
||||
#define STM32_PWM_USE_TIM2 TRUE
|
||||
|
||||
#undef STM32_ST_USE_TIMER
|
||||
#define STM32_ST_USE_TIMER 3
|
||||
42
keyboards/keyten/kt60_mu/readme.md
Normal file
42
keyboards/keyten/kt60_mu/readme.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# keyten kt60-MU
|
||||
|
||||
PCB supporting multiple 60% keyboards.
|
||||
Outline is compatible with:
|
||||
|
||||
* All common O-Ring mount keyboards
|
||||
* Polaris V2 (In theory. At the time of PCB design, this keyboard is in IC stage)
|
||||
|
||||
Supports two Type-C connector position:
|
||||
|
||||
* Standard left position
|
||||
* Central position like Aksara 60
|
||||
|
||||
Supports three JST connector position like the following PCBs or keyboards:
|
||||
|
||||
* hiney h60
|
||||
* Singa Unikorn
|
||||
* Polaris V2
|
||||
|
||||

|
||||
|
||||
* Keyboard Maintainer: [keyten](https://github.com/key10iq)
|
||||
* Hardware Supported: keyten kt60-MU
|
||||
* Hardware Availability: private GB
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make keyten/kt60_mu:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make keyten/kt60_mu: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
|
||||
* Keycode in layout: Press the key mapped to `QK_BOOT` if it is available
|
||||
* Physical reset button: Hold the button on the back of the PCB
|
||||
188
keyboards/large_lad/keyboard.json
Normal file
188
keyboards/large_lad/keyboard.json
Normal file
@@ -0,0 +1,188 @@
|
||||
{
|
||||
"manufacturer": "DIY (open source)",
|
||||
"keyboard_name": "Large Lad",
|
||||
"maintainer": "Hyphen-ated",
|
||||
"bootmagic": {
|
||||
"matrix": [11, 12]
|
||||
},
|
||||
"development_board": "blackpill_f411",
|
||||
"diode_direction": "COL2ROW",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "B7", "pin_b": "A0"}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"encoder": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A2", "A1", "C13", "C14", "C15", "A5", "A6", "B0", "B3", "B8", "A15", "A8", "B15"],
|
||||
"rows": ["B5", "B6", "B4", "B9", "A4", "A3", "A7", "B1", "B10", "B12", "B13", "B14"]
|
||||
},
|
||||
"url": "https://github.com/Hyphen-ated/large-lad-keyboard",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x0000",
|
||||
"vid": "0xFEED"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label": "L1", "matrix": [11, 12], "x": 0, "y": 0},
|
||||
{"label": "L2", "matrix": [11, 11], "x": 1, "y": 0},
|
||||
{"label": "L3", "matrix": [11, 6], "x": 2, "y": 0},
|
||||
{"label": "F13", "matrix": [11, 5], "x": 5.25, "y": 0},
|
||||
{"label": "F14", "matrix": [11, 4], "x": 6.25, "y": 0},
|
||||
{"label": "F15", "matrix": [11, 3], "x": 7.25, "y": 0},
|
||||
{"label": "F16", "matrix": [11, 2], "x": 8.25, "y": 0},
|
||||
{"label": "F17", "matrix": [11, 1], "x": 9.75, "y": 0},
|
||||
{"label": "F18", "matrix": [11, 0], "x": 10.75, "y": 0},
|
||||
{"label": "F19", "matrix": [0, 12], "x": 11.75, "y": 0},
|
||||
{"label": "F20", "matrix": [0, 11], "x": 12.75, "y": 0},
|
||||
{"label": "F21", "matrix": [0, 10], "x": 14.25, "y": 0},
|
||||
{"label": "F22", "matrix": [0, 9], "x": 15.25, "y": 0},
|
||||
{"label": "F23", "matrix": [0, 8], "x": 16.25, "y": 0},
|
||||
{"label": "F24", "matrix": [0, 7], "x": 17.25, "y": 0},
|
||||
{"label": "R1", "matrix": [0, 6], "x": 18.5, "y": 0},
|
||||
{"label": "R2", "matrix": [0, 5], "x": 19.5, "y": 0},
|
||||
{"label": "R3", "matrix": [0, 4], "x": 20.5, "y": 0},
|
||||
{"label": "R4", "matrix": [0, 3], "x": 21.75, "y": 0},
|
||||
{"label": "R5", "matrix": [0, 2], "x": 22.75, "y": 0},
|
||||
{"label": "R6", "matrix": [0, 1], "x": 23.75, "y": 0},
|
||||
{"label": "R7", "matrix": [0, 0], "x": 24.75, "y": 0},
|
||||
{"label": "L4", "matrix": [11, 7], "x": 0, "y": 1},
|
||||
{"label": "L5", "matrix": [10, 12], "x": 1, "y": 1},
|
||||
{"label": "L6", "matrix": [10, 11], "x": 2, "y": 1},
|
||||
{"label": "Esc", "matrix": [10, 6], "x": 3.25, "y": 1},
|
||||
{"label": "F1", "matrix": [10, 5], "x": 5.25, "y": 1},
|
||||
{"label": "F2", "matrix": [10, 4], "x": 6.25, "y": 1},
|
||||
{"label": "F3", "matrix": [10, 3], "x": 7.25, "y": 1},
|
||||
{"label": "F4", "matrix": [10, 2], "x": 8.25, "y": 1},
|
||||
{"label": "F5", "matrix": [10, 1], "x": 9.75, "y": 1},
|
||||
{"label": "F6", "matrix": [10, 0], "x": 10.75, "y": 1},
|
||||
{"label": "F7", "matrix": [1, 12], "x": 11.75, "y": 1},
|
||||
{"label": "F8", "matrix": [1, 11], "x": 12.75, "y": 1},
|
||||
{"label": "F9", "matrix": [1, 10], "x": 14.25, "y": 1},
|
||||
{"label": "F10", "matrix": [1, 9], "x": 15.25, "y": 1},
|
||||
{"label": "F11", "matrix": [1, 8], "x": 16.25, "y": 1},
|
||||
{"label": "F12", "matrix": [1, 7], "x": 17.25, "y": 1},
|
||||
{"label": "PrtSc", "matrix": [1, 6], "x": 18.5, "y": 1},
|
||||
{"label": "Scroll Lock", "matrix": [1, 5], "x": 19.5, "y": 1},
|
||||
{"label": "Pause", "matrix": [1, 4], "x": 20.5, "y": 1},
|
||||
{"label": "R8", "matrix": [1, 3], "x": 21.75, "y": 1},
|
||||
{"label": "R9", "matrix": [1, 2], "x": 22.75, "y": 1},
|
||||
{"label": "R10", "matrix": [1, 1], "x": 23.75, "y": 1},
|
||||
{"label": "R11", "matrix": [1, 0], "x": 24.75, "y": 1},
|
||||
{"label": "L7", "matrix": [11, 8], "x": 0, "y": 2.25},
|
||||
{"label": "L8", "matrix": [10, 7], "x": 1, "y": 2.25},
|
||||
{"label": "L9", "matrix": [9, 12], "x": 2, "y": 2.25},
|
||||
{"label": "~", "matrix": [9, 11], "x": 3.25, "y": 2.5},
|
||||
{"label": "!", "matrix": [9, 6], "x": 4.25, "y": 2.5},
|
||||
{"label": "@", "matrix": [9, 5], "x": 5.25, "y": 2.5},
|
||||
{"label": "#", "matrix": [9, 4], "x": 6.25, "y": 2.5},
|
||||
{"label": "$", "matrix": [9, 3], "x": 7.25, "y": 2.5},
|
||||
{"label": "%", "matrix": [9, 2], "x": 8.25, "y": 2.5},
|
||||
{"label": "^", "matrix": [9, 1], "x": 9.25, "y": 2.5},
|
||||
{"label": "&", "matrix": [9, 0], "x": 10.25, "y": 2.5},
|
||||
{"label": "*", "matrix": [2, 12], "x": 11.25, "y": 2.5},
|
||||
{"label": "(", "matrix": [2, 11], "x": 12.25, "y": 2.5},
|
||||
{"label": ")", "matrix": [2, 10], "x": 13.25, "y": 2.5},
|
||||
{"label": "_", "matrix": [2, 9], "x": 14.25, "y": 2.5},
|
||||
{"label": "+", "matrix": [2, 8], "x": 15.25, "y": 2.5},
|
||||
{"label": "Backspace", "matrix": [2, 7], "x": 16.25, "y": 2.5, "w": 2},
|
||||
{"label": "Insert", "matrix": [2, 6], "x": 18.5, "y": 2.5},
|
||||
{"label": "Home", "matrix": [2, 5], "x": 19.5, "y": 2.5},
|
||||
{"label": "PgUp", "matrix": [2, 4], "x": 20.5, "y": 2.5},
|
||||
{"label": "Num Lock", "matrix": [2, 3], "x": 21.75, "y": 2.5},
|
||||
{"label": "/", "matrix": [2, 2], "x": 22.75, "y": 2.5},
|
||||
{"label": "*", "matrix": [2, 1], "x": 23.75, "y": 2.5},
|
||||
{"label": "-", "matrix": [2, 0], "x": 24.75, "y": 2.5},
|
||||
{"label": "L10", "matrix": [10, 8], "x": 0, "y": 3.25},
|
||||
{"label": "L11", "matrix": [9, 7], "x": 1, "y": 3.25},
|
||||
{"label": "L12", "matrix": [8, 12], "x": 2, "y": 3.25},
|
||||
{"label": "Tab", "matrix": [8, 11], "x": 3.25, "y": 3.5, "w": 1.5},
|
||||
{"label": "Q", "matrix": [8, 6], "x": 4.75, "y": 3.5},
|
||||
{"label": "W", "matrix": [8, 5], "x": 5.75, "y": 3.5},
|
||||
{"label": "E", "matrix": [8, 4], "x": 6.75, "y": 3.5},
|
||||
{"label": "R", "matrix": [8, 3], "x": 7.75, "y": 3.5},
|
||||
{"label": "T", "matrix": [8, 2], "x": 8.75, "y": 3.5},
|
||||
{"label": "Y", "matrix": [8, 1], "x": 9.75, "y": 3.5},
|
||||
{"label": "U", "matrix": [8, 0], "x": 10.75, "y": 3.5},
|
||||
{"label": "I", "matrix": [3, 12], "x": 11.75, "y": 3.5},
|
||||
{"label": "O", "matrix": [3, 11], "x": 12.75, "y": 3.5},
|
||||
{"label": "P", "matrix": [3, 10], "x": 13.75, "y": 3.5},
|
||||
{"label": "{", "matrix": [3, 9], "x": 14.75, "y": 3.5},
|
||||
{"label": "}", "matrix": [3, 8], "x": 15.75, "y": 3.5},
|
||||
{"label": "|", "matrix": [3, 7], "x": 16.75, "y": 3.5, "w": 1.5},
|
||||
{"label": "Delete", "matrix": [3, 6], "x": 18.5, "y": 3.5},
|
||||
{"label": "End", "matrix": [3, 5], "x": 19.5, "y": 3.5},
|
||||
{"label": "PgDn", "matrix": [3, 4], "x": 20.5, "y": 3.5},
|
||||
{"label": "7", "matrix": [3, 3], "x": 21.75, "y": 3.5},
|
||||
{"label": "8", "matrix": [3, 2], "x": 22.75, "y": 3.5},
|
||||
{"label": "9", "matrix": [3, 1], "x": 23.75, "y": 3.5},
|
||||
{"label": "+", "matrix": [3, 0], "x": 24.75, "y": 3.5, "h": 2},
|
||||
{"label": "L13", "matrix": [9, 8], "x": 0, "y": 4.25},
|
||||
{"label": "L14", "matrix": [8, 7], "x": 1, "y": 4.25},
|
||||
{"label": "L15", "matrix": [7, 12], "x": 2, "y": 4.25},
|
||||
{"label": "Caps Lock", "matrix": [7, 6], "x": 3.25, "y": 4.5, "w": 1.75},
|
||||
{"label": "A", "matrix": [7, 5], "x": 5, "y": 4.5},
|
||||
{"label": "S", "matrix": [7, 4], "x": 6, "y": 4.5},
|
||||
{"label": "D", "matrix": [7, 3], "x": 7, "y": 4.5},
|
||||
{"label": "F", "matrix": [7, 2], "x": 8, "y": 4.5},
|
||||
{"label": "G", "matrix": [7, 1], "x": 9, "y": 4.5},
|
||||
{"label": "H", "matrix": [7, 0], "x": 10, "y": 4.5},
|
||||
{"label": "J", "matrix": [4, 12], "x": 11, "y": 4.5},
|
||||
{"label": "K", "matrix": [4, 11], "x": 12, "y": 4.5},
|
||||
{"label": "L", "matrix": [4, 10], "x": 13, "y": 4.5},
|
||||
{"label": ":", "matrix": [4, 9], "x": 14, "y": 4.5},
|
||||
{"label": "\"", "matrix": [4, 8], "x": 15, "y": 4.5},
|
||||
{"label": "Enter", "matrix": [4, 7], "x": 16, "y": 4.5, "w": 2.25},
|
||||
{"label": "4", "matrix": [4, 3], "x": 21.75, "y": 4.5},
|
||||
{"label": "5", "matrix": [4, 2], "x": 22.75, "y": 4.5},
|
||||
{"label": "6", "matrix": [4, 1], "x": 23.75, "y": 4.5},
|
||||
{"label": "L16", "matrix": [8, 8], "x": 0, "y": 5.5},
|
||||
{"label": "L17", "matrix": [7, 7], "x": 1, "y": 5.5},
|
||||
{"label": "L18", "matrix": [6, 12], "x": 2, "y": 5.5},
|
||||
{"label": "Shift", "matrix": [7, 11], "x": 3.25, "y": 5.5, "w": 2.25},
|
||||
{"label": "Z", "matrix": [6, 5], "x": 5.5, "y": 5.5},
|
||||
{"label": "X", "matrix": [6, 3], "x": 6.5, "y": 5.5},
|
||||
{"label": "C", "matrix": [6, 2], "x": 7.5, "y": 5.5},
|
||||
{"label": "V", "matrix": [6, 1], "x": 8.5, "y": 5.5},
|
||||
{"label": "B", "matrix": [6, 0], "x": 9.5, "y": 5.5},
|
||||
{"label": "N", "matrix": [5, 12], "x": 10.5, "y": 5.5},
|
||||
{"label": "M", "matrix": [5, 11], "x": 11.5, "y": 5.5},
|
||||
{"label": "<", "matrix": [5, 10], "x": 12.5, "y": 5.5},
|
||||
{"label": ">", "matrix": [5, 9], "x": 13.5, "y": 5.5},
|
||||
{"label": "?", "matrix": [5, 8], "x": 14.5, "y": 5.5},
|
||||
{"label": "Shift", "matrix": [5, 7], "x": 15.5, "y": 5.5, "w": 2.75},
|
||||
{"label": "Up", "matrix": [4, 5], "x": 19.5, "y": 5.5},
|
||||
{"label": "1", "matrix": [5, 3], "x": 21.75, "y": 5.5},
|
||||
{"label": "2", "matrix": [5, 2], "x": 22.75, "y": 5.5},
|
||||
{"label": "3", "matrix": [5, 1], "x": 23.75, "y": 5.5},
|
||||
{"label": "Enter", "matrix": [4, 0], "x": 24.75, "y": 5.5, "h": 2},
|
||||
{"label": "L19", "matrix": [7, 8], "x": 0, "y": 6.5},
|
||||
{"label": "L20", "matrix": [8, 9], "x": 1, "y": 6.5},
|
||||
{"label": "L21", "matrix": [7, 9], "x": 2, "y": 6.5},
|
||||
{"label": "Ctrl", "matrix": [6, 11], "x": 3.25, "y": 6.5, "w": 1.25},
|
||||
{"label": "Win", "matrix": [6, 6], "x": 4.5, "y": 6.5, "w": 1.25},
|
||||
{"label": "Alt", "matrix": [6, 4], "x": 5.75, "y": 6.5, "w": 1.25},
|
||||
{"label": "Space", "matrix": [6, 10], "x": 7, "y": 6.5, "w": 6.25},
|
||||
{"label": "Alt", "matrix": [6, 9], "x": 13.25, "y": 6.5, "w": 1.25},
|
||||
{"label": "Win", "matrix": [6, 8], "x": 14.5, "y": 6.5, "w": 1.25},
|
||||
{"label": "Menu", "matrix": [6, 7], "x": 15.75, "y": 6.5, "w": 1.25},
|
||||
{"label": "Ctrl", "matrix": [5, 6], "x": 17, "y": 6.5, "w": 1.25},
|
||||
{"label": "Left", "matrix": [4, 6], "x": 18.5, "y": 6.5},
|
||||
{"label": "Down", "matrix": [5, 5], "x": 19.5, "y": 6.5},
|
||||
{"label": "Right", "matrix": [4, 4], "x": 20.5, "y": 6.5},
|
||||
{"label": "0", "matrix": [5, 4], "x": 21.75, "y": 6.5, "w": 2},
|
||||
{"label": ".", "matrix": [5, 0], "x": 23.75, "y": 6.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
42
keyboards/large_lad/keymaps/default/keymap.c
Normal file
42
keyboards/large_lad/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,42 @@
|
||||
// Copyright 2024 Hyphen-ated (@Hyphen-ated)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/*
|
||||
* ┌───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
|
||||
* │ │ │ │ │F13│F14│F15│F16│ │F17│F18│F19│F20│ │F21│F22│F23│F24│ │ │ │ │ │ │ │ │ │
|
||||
* ├───┼───┼───┤ ┌───┐ ├───┼───┼───┤───┤ ├───┼───┼───┤───┤ ├───┼───┼───┤───┤ ├───┼───┼───┤ ├───┼───┼───┤───┤
|
||||
* │ │ │ │ │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Scr│Pse│ │ │ │ │ │
|
||||
* └───┴───┴───┘ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ └───┴───┴───┴───┘
|
||||
* ┌───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
|
||||
* │ │ │ │ │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │
|
||||
* ├───┼───┼───┤ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
|
||||
* │ │ │ │ │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ │ 7 │ 8 │ 9 │ │
|
||||
* ├───┼───┼───┤ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │
|
||||
* │ │ │ │ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ │ 4 │ 5 │ 6 │ │
|
||||
* ├───┼───┼───┤ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ ├───┼───┼───┼───┤
|
||||
* │ │ │ │ │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │
|
||||
* ├───┼───┼───┤ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│
|
||||
* │ │ │ │ │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │ │
|
||||
* └───┴───┴───┘ └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
|
||||
*/
|
||||
[0] = LAYOUT(
|
||||
KC_NO,KC_NO,KC_NO, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO,KC_NO,KC_NO, 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_NO, KC_NO, KC_NO, KC_NO,
|
||||
|
||||
KC_NO,KC_NO,KC_NO, 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_NO,KC_NO,KC_NO, 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_NO,KC_NO,KC_NO, 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_NO,KC_NO,KC_NO, 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_NO,KC_NO,KC_NO, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
|
||||
)
|
||||
};
|
||||
|
||||
// encoder controls volume by default
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
|
||||
};
|
||||
#endif
|
||||
1
keyboards/large_lad/keymaps/default/rules.mk
Normal file
1
keyboards/large_lad/keymaps/default/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
23
keyboards/large_lad/readme.md
Normal file
23
keyboards/large_lad/readme.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# large_lad
|
||||
|
||||

|
||||
|
||||
Starts with the standard US 104 key layout and adds more keys on top and on the left. Total of 148 keys, one of which is a rotary encoder. Includes two rows of function keys and a 3x7 grid of keys on the left. No LEDs.
|
||||
|
||||
* Keyboard Maintainer: [Hyphen-ated](https://github.com/Hyphen-ated)
|
||||
* Hardware Supported: Custom open source PCB.
|
||||
* Hardware Availability: DIY. PCB and plate design files available at https://github.com/Hyphen-ated/large-lad-keyboard
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make large_lad:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make large_lad: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
|
||||
|
||||
To enter the bootloader, there's two buttons to press on the blackpill board. Press and hold BOOT, press and release NRST, then release BOOT. Sometimes this randomly fails and you have to try again.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user