Compare commits
10 commits
88d4462e52
...
a825b90686
Author | SHA1 | Date | |
---|---|---|---|
a825b90686 | |||
|
782f91a73a | ||
|
a12ff287ee | ||
|
03937e0c86 | ||
|
09fdabf37c | ||
|
d76f7bfac3 | ||
|
3c324cb5e6 | ||
|
d01303c060 | ||
|
5dc92edf11 | ||
|
8094a1d182 |
59 changed files with 5227 additions and 119 deletions
7
keyboards/binepad/bnk8/config.h
Normal file
7
keyboards/binepad/bnk8/config.h
Normal file
|
@ -0,0 +1,7 @@
|
|||
// Copyright 2024 binepad (@binepad)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
// Timing for SK6812
|
||||
#define WS2812_T1H 650
|
88
keyboards/binepad/bnk8/keyboard.json
Executable file
88
keyboards/binepad/bnk8/keyboard.json
Executable file
|
@ -0,0 +1,88 @@
|
|||
{
|
||||
"manufacturer": "binepad",
|
||||
"keyboard_name": "BNK8",
|
||||
"maintainer": "binepad",
|
||||
"bootloader": "stm32duino",
|
||||
"bootloader_instructions": "Hold down the key at (0x0) in the matrix (the top left key) and plug in the keyboard.",
|
||||
"diode_direction": "COL2ROW",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "A7", "pin_b": "A0", "resolution": 2}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"encoder": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B3", "B4", "C13"],
|
||||
"rows": ["C14", "B13", "B12"]
|
||||
},
|
||||
"processor": "STM32F103",
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_up_down": true,
|
||||
"jellybean_raindrops": true,
|
||||
"riverflow": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_splash": true,
|
||||
"splash": true,
|
||||
"starlight": true,
|
||||
"starlight_dual_hue": true,
|
||||
"starlight_dual_sat": true
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 80, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 1], "x": 112, "y": 0, "flags": 4},
|
||||
{"matrix": [1, 0], "x": 80, "y": 32, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 112, "y": 32, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 144, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 0], "x": 80, "y": 64, "flags": 4},
|
||||
{"matrix": [2, 1], "x": 112, "y": 64, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 144, "y": 64, "flags": 4}
|
||||
],
|
||||
"led_process_limit": 9,
|
||||
"max_brightness": 180,
|
||||
"sleep": true
|
||||
},
|
||||
"url": "https://www.binepad.com/product-page/bnk8",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"vid": "0x4249",
|
||||
"pid": "0x4E41"
|
||||
},
|
||||
"eeprom": {
|
||||
"wear_leveling": {
|
||||
"backing_size": 1024
|
||||
}
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "C15"
|
||||
},
|
||||
"community_layouts": ["ortho_3x3"],
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_3x3": {
|
||||
"layout": [
|
||||
{"label": "1", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "2", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "Knob", "matrix": [0, 2], "x": 2, "y": 0, "encoder": 0},
|
||||
{"label": "3", "matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"label": "4", "matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"label": "5", "matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"label": "6", "matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"label": "7", "matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"label": "8", "matrix": [2, 2], "x": 2, "y": 2}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
40
keyboards/binepad/bnk8/keymaps/default/keymap.json
Normal file
40
keyboards/binepad/bnk8/keymaps/default/keymap.json
Normal file
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
"keyboard": "binepad/bnk8",
|
||||
"version": 1,
|
||||
"author": "binepad",
|
||||
"notes": "Copyright 2024 Binepad (@binepad) \n SPDX-License-Identifier: GPL-2.0-or-later \n This file is a keymap.json file for binepad/bnk8",
|
||||
"keymap": "default",
|
||||
"layout": "LAYOUT_ortho_3x3",
|
||||
"layers": [
|
||||
[
|
||||
"KC_P1", "KC_P2", "KC_MUTE",
|
||||
"KC_P3", "KC_P4", "KC_P5",
|
||||
"KC_P6", "KC_P7", "LT(1, KC_P8)"
|
||||
],
|
||||
[
|
||||
"RM_HUEU", "RM_SATU", "RM_SPDU",
|
||||
"RM_HUED", "RM_SATD", "RM_SPDD",
|
||||
"RM_TOGG", "RM_NEXT", "_______"
|
||||
|
||||
]
|
||||
],
|
||||
"config": {
|
||||
"features": {
|
||||
"encoder_map": true
|
||||
}
|
||||
},
|
||||
"encoders": [
|
||||
[
|
||||
{
|
||||
"ccw": "KC_VOLD",
|
||||
"cw": "KC_VOLU"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"ccw": "RM_VALD",
|
||||
"cw": "RM_VALU"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
26
keyboards/binepad/bnk8/readme.md
Executable file
26
keyboards/binepad/bnk8/readme.md
Executable file
|
@ -0,0 +1,26 @@
|
|||
# BINEPAD BNK8
|
||||
|
||||
![BINEPAD BNK8](https://i.imgur.com/HFIZg48h.jpeg)
|
||||
|
||||
A compact 8-key 3x3 macropad with a rotary encoder at the top right.
|
||||
|
||||
* Keyboard Maintainer: [binepad](https://github.com/binepad)
|
||||
* Hardware Supported: BINPAD BNK8
|
||||
* Hardware Availability: [binepad.com](https://binepad.com/products/bnk8)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make binepad/bnk8:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make binepad/bnk8:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 2 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key) and plug in the keyboard
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
9
keyboards/cannonkeys/cerberus/config.h
Normal file
9
keyboards/cannonkeys/cerberus/config.h
Normal file
|
@ -0,0 +1,9 @@
|
|||
// Copyright 2024 Andrew Kannan
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define WS2812_SPI_DRIVER SPID2
|
||||
#define WS2812_SPI_MOSI_PAL_MODE 0
|
||||
#define WS2812_SPI_SCK_PAL_MODE 0
|
||||
#define WS2812_SPI_SCK_PIN B13
|
9
keyboards/cannonkeys/cerberus/halconf.h
Normal file
9
keyboards/cannonkeys/cerberus/halconf.h
Normal file
|
@ -0,0 +1,9 @@
|
|||
// Copyright 2024 Andrew Kannan
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_SPI TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
|
311
keyboards/cannonkeys/cerberus/hotswap/keyboard.json
Normal file
311
keyboards/cannonkeys/cerberus/hotswap/keyboard.json
Normal file
|
@ -0,0 +1,311 @@
|
|||
{
|
||||
"keyboard_name": "Cerberus HS",
|
||||
"usb": {
|
||||
"pid": "0x0034"
|
||||
},
|
||||
"community_layouts": ["tkl_nofrow_ansi"],
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Bksp", "matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"label": "~", "matrix": [0, 14], "x": 14, "y": 0},
|
||||
{"label": "Insert", "matrix": [0, 15], "x": 15.25, "y": 0},
|
||||
{"label": "Home", "matrix": [0, 16], "x": 16.25, "y": 0},
|
||||
{"label": "PgUp", "matrix": [0, 17], "x": 17.25, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "|", "matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"label": "Delete", "matrix": [1, 15], "x": 15.25, "y": 1},
|
||||
{"label": "End", "matrix": [1, 16], "x": 16.25, "y": 1},
|
||||
{"label": "PgDn", "matrix": [1, 17], "x": 17.25, "y": 1},
|
||||
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [2, 14], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"label": "Fn", "matrix": [3, 14], "x": 14, "y": 3},
|
||||
{"label": "\u2191", "matrix": [3, 16], "x": 16.25, "y": 3},
|
||||
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"label": "Space", "matrix": [4, 5], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"label": "Fn", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"label": "Ctrl", "matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25},
|
||||
{"label": "\u2190", "matrix": [4, 15], "x": 15.25, "y": 4},
|
||||
{"label": "\u2193", "matrix": [4, 16], "x": 16.25, "y": 4},
|
||||
{"label": "\u2192", "matrix": [4, 17], "x": 17.25, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_nofrow_ansi": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Bksp", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
{"label": "Insert", "matrix": [0, 15], "x": 15.25, "y": 0},
|
||||
{"label": "Home", "matrix": [0, 16], "x": 16.25, "y": 0},
|
||||
{"label": "PgUp", "matrix": [0, 17], "x": 17.25, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "|", "matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"label": "Delete", "matrix": [1, 15], "x": 15.25, "y": 1},
|
||||
{"label": "End", "matrix": [1, 16], "x": 16.25, "y": 1},
|
||||
{"label": "PgDn", "matrix": [1, 17], "x": 17.25, "y": 1},
|
||||
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [2, 14], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"label": "\u2191", "matrix": [3, 16], "x": 16.25, "y": 3},
|
||||
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"label": "Space", "matrix": [4, 5], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"label": "Fn", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"label": "Ctrl", "matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25},
|
||||
{"label": "\u2190", "matrix": [4, 15], "x": 15.25, "y": 4},
|
||||
{"label": "\u2193", "matrix": [4, 16], "x": 16.25, "y": 4},
|
||||
{"label": "\u2192", "matrix": [4, 17], "x": 17.25, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_nofrow_ansi_tsangan": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Bksp", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
{"label": "Insert", "matrix": [0, 15], "x": 15.25, "y": 0},
|
||||
{"label": "Home", "matrix": [0, 16], "x": 16.25, "y": 0},
|
||||
{"label": "PgUp", "matrix": [0, 17], "x": 17.25, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "|", "matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"label": "Delete", "matrix": [1, 15], "x": 15.25, "y": 1},
|
||||
{"label": "End", "matrix": [1, 16], "x": 16.25, "y": 1},
|
||||
{"label": "PgDn", "matrix": [1, 17], "x": 17.25, "y": 1},
|
||||
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [2, 14], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"label": "\u2191", "matrix": [3, 16], "x": 16.25, "y": 3},
|
||||
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"label": "Space", "matrix": [4, 5], "x": 4, "y": 4, "w": 7},
|
||||
{"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"label": "Ctrl", "matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5},
|
||||
{"label": "\u2190", "matrix": [4, 15], "x": 15.25, "y": 4},
|
||||
{"label": "\u2193", "matrix": [4, 16], "x": 16.25, "y": 4},
|
||||
{"label": "\u2192", "matrix": [4, 17], "x": 17.25, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_nofrow_ansi_tsangan_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Bksp", "matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"label": "~", "matrix": [0, 14], "x": 14, "y": 0},
|
||||
{"label": "Insert", "matrix": [0, 15], "x": 15.25, "y": 0},
|
||||
{"label": "Home", "matrix": [0, 16], "x": 16.25, "y": 0},
|
||||
{"label": "PgUp", "matrix": [0, 17], "x": 17.25, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "|", "matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"label": "Delete", "matrix": [1, 15], "x": 15.25, "y": 1},
|
||||
{"label": "End", "matrix": [1, 16], "x": 16.25, "y": 1},
|
||||
{"label": "PgDn", "matrix": [1, 17], "x": 17.25, "y": 1},
|
||||
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [2, 14], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"label": "Fn", "matrix": [3, 14], "x": 14, "y": 3},
|
||||
{"label": "\u2191", "matrix": [3, 16], "x": 16.25, "y": 3},
|
||||
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"label": "Space", "matrix": [4, 5], "x": 4, "y": 4, "w": 7},
|
||||
{"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"label": "Ctrl", "matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5},
|
||||
{"label": "\u2190", "matrix": [4, 15], "x": 15.25, "y": 4},
|
||||
{"label": "\u2193", "matrix": [4, 16], "x": 16.25, "y": 4},
|
||||
{"label": "\u2192", "matrix": [4, 17], "x": 17.25, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
// Copyright 2024 Andrew Kannan
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
enum layer_names {
|
||||
_BASE,
|
||||
_FN1,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_all(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_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
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT_all(
|
||||
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_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, UG_SPDU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, UG_HUED, UG_SATD, UG_VALD, UG_SPDD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, UG_PREV, UG_NEXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
};
|
2
keyboards/cannonkeys/cerberus/hotswap/rules.mk
Normal file
2
keyboards/cannonkeys/cerberus/hotswap/rules.mk
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
50
keyboards/cannonkeys/cerberus/info.json
Normal file
50
keyboards/cannonkeys/cerberus/info.json
Normal file
|
@ -0,0 +1,50 @@
|
|||
{
|
||||
"manufacturer": "CannonKeys",
|
||||
"maintainer": "awkannan",
|
||||
"bootloader": "stm32-dfu",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": true,
|
||||
"console": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgblight": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B0", "C15", "C14", "A7", "A5", "C13", "A4", "A2", "A1", "A0", "B9", "B8", "B7", "A3", "B6", "B4", "B3", "A15"],
|
||||
"rows": ["B11", "B10", "B2", "F0", "B5"]
|
||||
},
|
||||
"processor": "STM32F072",
|
||||
"qmk": {
|
||||
"locking": {
|
||||
"enabled": true,
|
||||
"resync": true
|
||||
}
|
||||
},
|
||||
"rgblight": {
|
||||
"animations": {
|
||||
"alternating": true,
|
||||
"breathing": true,
|
||||
"christmas": true,
|
||||
"knight": true,
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"rgb_test": true,
|
||||
"snake": true,
|
||||
"static_gradient": true,
|
||||
"twinkle": true
|
||||
},
|
||||
"led_count": 4
|
||||
},
|
||||
"url": "https://cannonkeys.com",
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"vid": "0xCA04"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "spi",
|
||||
"pin": "B15"
|
||||
}
|
||||
}
|
9
keyboards/cannonkeys/cerberus/mcuconf.h
Normal file
9
keyboards/cannonkeys/cerberus/mcuconf.h
Normal file
|
@ -0,0 +1,9 @@
|
|||
// Copyright 2024 Andrew Kannan
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_SPI_USE_SPI2
|
||||
#define STM32_SPI_USE_SPI2 TRUE
|
28
keyboards/cannonkeys/cerberus/readme.md
Normal file
28
keyboards/cannonkeys/cerberus/readme.md
Normal file
|
@ -0,0 +1,28 @@
|
|||
# Cerberus Keyboard by CannonKeys
|
||||
|
||||
This folder contains firmware for both the Solderable and Hotswap version of Cerberus
|
||||
|
||||
The hotswap PCB does not support per-key LEDs and has reduced layout support (no ISO)
|
||||
|
||||
* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan)
|
||||
* Hardware Supported: STM32F072CBT6
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make cannonkeys/cerberus/hotswap:default
|
||||
make cannonkeys/cerberus/solderable:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make cannonkeys/cerberus/hotswap:default:flash
|
||||
make cannonkeys/cerberus/solderable: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**: Toggle the switch on the back of the pcb to "1" and briefly press the button on the back of the PCB
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
8
keyboards/cannonkeys/cerberus/solderable/config.h
Normal file
8
keyboards/cannonkeys/cerberus/solderable/config.h
Normal file
|
@ -0,0 +1,8 @@
|
|||
// Copyright 2024 Andrew Kannan
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define BACKLIGHT_PWM_DRIVER PWMD3
|
||||
#define BACKLIGHT_PWM_CHANNEL 1
|
||||
#define BACKLIGHT_PAL_MODE 1
|
10
keyboards/cannonkeys/cerberus/solderable/halconf.h
Normal file
10
keyboards/cannonkeys/cerberus/solderable/halconf.h
Normal file
|
@ -0,0 +1,10 @@
|
|||
// Copyright 2024 Andrew Kannan
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_PWM TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
|
711
keyboards/cannonkeys/cerberus/solderable/keyboard.json
Normal file
711
keyboards/cannonkeys/cerberus/solderable/keyboard.json
Normal file
|
@ -0,0 +1,711 @@
|
|||
{
|
||||
"keyboard_name": "Cerberus",
|
||||
"backlight": {
|
||||
"breathing": true,
|
||||
"levels": 6,
|
||||
"pin": "A6"
|
||||
},
|
||||
"features": {
|
||||
"backlight": true
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "F1",
|
||||
"on_state": 0
|
||||
},
|
||||
"usb": {
|
||||
"pid": "0x0031"
|
||||
},
|
||||
"community_layouts": ["tkl_nofrow_ansi", "tkl_nofrow_iso"],
|
||||
"layout_aliases": {
|
||||
"LAYOUT_all": "LAYOUT"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "1", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "2", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "3", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "4", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "5", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "6", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "7", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "8", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "9", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"label": "`", "matrix": [0, 14], "x": 14, "y": 0},
|
||||
{"label": "Insert", "matrix": [0, 15], "x": 15.25, "y": 0},
|
||||
{"label": "Home", "matrix": [0, 16], "x": 16.25, "y": 0},
|
||||
{"label": "Page Up", "matrix": [0, 17], "x": 17.25, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "[", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "]", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "\\", "matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"label": "Delete", "matrix": [1, 15], "x": 15.25, "y": 1},
|
||||
{"label": "End", "matrix": [1, 16], "x": 16.25, "y": 1},
|
||||
{"label": "Page Down", "matrix": [1, 17], "x": 17.25, "y": 1},
|
||||
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ";", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "'", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "#", "matrix": [2, 12], "x": 12.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [2, 14], "x": 13.75, "y": 2, "w": 1.25},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"label": "\\", "matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": ",", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ".", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "/", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"label": "Fn", "matrix": [3, 14], "x": 14, "y": 3},
|
||||
{"label": "\u2191", "matrix": [3, 16], "x": 16.25, "y": 3},
|
||||
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"label": "GUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"label": "Space", "matrix": [4, 5], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"label": "Fn", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"label": "GUI", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"label": "Ctrl", "matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25},
|
||||
{"label": "\u2190", "matrix": [4, 15], "x": 15.25, "y": 4},
|
||||
{"label": "\u2193", "matrix": [4, 16], "x": 16.25, "y": 4},
|
||||
{"label": "\u2192", "matrix": [4, 17], "x": 17.25, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_nofrow_ansi": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Bksp", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
{"label": "Insert", "matrix": [0, 15], "x": 15.25, "y": 0},
|
||||
{"label": "Home", "matrix": [0, 16], "x": 16.25, "y": 0},
|
||||
{"label": "PgUp", "matrix": [0, 17], "x": 17.25, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "|", "matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"label": "Delete", "matrix": [1, 15], "x": 15.25, "y": 1},
|
||||
{"label": "End", "matrix": [1, 16], "x": 16.25, "y": 1},
|
||||
{"label": "PgDn", "matrix": [1, 17], "x": 17.25, "y": 1},
|
||||
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [2, 14], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"label": "\u2191", "matrix": [3, 16], "x": 16.25, "y": 3},
|
||||
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"label": "Space", "matrix": [4, 5], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"label": "Fn", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"label": "Ctrl", "matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25},
|
||||
{"label": "\u2190", "matrix": [4, 15], "x": 15.25, "y": 4},
|
||||
{"label": "\u2193", "matrix": [4, 16], "x": 16.25, "y": 4},
|
||||
{"label": "\u2192", "matrix": [4, 17], "x": 17.25, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_nofrow_ansi_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Bksp", "matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"label": "~", "matrix": [0, 14], "x": 14, "y": 0},
|
||||
{"label": "Insert", "matrix": [0, 15], "x": 15.25, "y": 0},
|
||||
{"label": "Home", "matrix": [0, 16], "x": 16.25, "y": 0},
|
||||
{"label": "PgUp", "matrix": [0, 17], "x": 17.25, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "|", "matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"label": "Delete", "matrix": [1, 15], "x": 15.25, "y": 1},
|
||||
{"label": "End", "matrix": [1, 16], "x": 16.25, "y": 1},
|
||||
{"label": "PgDn", "matrix": [1, 17], "x": 17.25, "y": 1},
|
||||
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [2, 14], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"label": "Fn", "matrix": [3, 14], "x": 14, "y": 3},
|
||||
{"label": "\u2191", "matrix": [3, 16], "x": 16.25, "y": 3},
|
||||
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"label": "Space", "matrix": [4, 5], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"label": "Fn", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"label": "Ctrl", "matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25},
|
||||
{"label": "\u2190", "matrix": [4, 15], "x": 15.25, "y": 4},
|
||||
{"label": "\u2193", "matrix": [4, 16], "x": 16.25, "y": 4},
|
||||
{"label": "\u2192", "matrix": [4, 17], "x": 17.25, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_nofrow_ansi_tsangan": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Bksp", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
{"label": "Insert", "matrix": [0, 15], "x": 15.25, "y": 0},
|
||||
{"label": "Home", "matrix": [0, 16], "x": 16.25, "y": 0},
|
||||
{"label": "PgUp", "matrix": [0, 17], "x": 17.25, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "|", "matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"label": "Delete", "matrix": [1, 15], "x": 15.25, "y": 1},
|
||||
{"label": "End", "matrix": [1, 16], "x": 16.25, "y": 1},
|
||||
{"label": "PgDn", "matrix": [1, 17], "x": 17.25, "y": 1},
|
||||
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [2, 14], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"label": "\u2191", "matrix": [3, 16], "x": 16.25, "y": 3},
|
||||
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"label": "Space", "matrix": [4, 5], "x": 4, "y": 4, "w": 7},
|
||||
{"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"label": "Ctrl", "matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5},
|
||||
{"label": "\u2190", "matrix": [4, 15], "x": 15.25, "y": 4},
|
||||
{"label": "\u2193", "matrix": [4, 16], "x": 16.25, "y": 4},
|
||||
{"label": "\u2192", "matrix": [4, 17], "x": 17.25, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_nofrow_ansi_tsangan_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Bksp", "matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"label": "~", "matrix": [0, 14], "x": 14, "y": 0},
|
||||
{"label": "Insert", "matrix": [0, 15], "x": 15.25, "y": 0},
|
||||
{"label": "Home", "matrix": [0, 16], "x": 16.25, "y": 0},
|
||||
{"label": "PgUp", "matrix": [0, 17], "x": 17.25, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "|", "matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"label": "Delete", "matrix": [1, 15], "x": 15.25, "y": 1},
|
||||
{"label": "End", "matrix": [1, 16], "x": 16.25, "y": 1},
|
||||
{"label": "PgDn", "matrix": [1, 17], "x": 17.25, "y": 1},
|
||||
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [2, 14], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"label": "Fn", "matrix": [3, 14], "x": 14, "y": 3},
|
||||
{"label": "\u2191", "matrix": [3, 16], "x": 16.25, "y": 3},
|
||||
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"label": "Space", "matrix": [4, 5], "x": 4, "y": 4, "w": 7},
|
||||
{"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"label": "Ctrl", "matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5},
|
||||
{"label": "\u2190", "matrix": [4, 15], "x": 15.25, "y": 4},
|
||||
{"label": "\u2193", "matrix": [4, 16], "x": 16.25, "y": 4},
|
||||
{"label": "\u2192", "matrix": [4, 17], "x": 17.25, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_nofrow_iso": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "\"", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "\u00a3", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Bksp", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
{"label": "Insert", "matrix": [0, 15], "x": 15.25, "y": 0},
|
||||
{"label": "Home", "matrix": [0, 16], "x": 16.25, "y": 0},
|
||||
{"label": "PgUp", "matrix": [0, 17], "x": 17.25, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "Delete", "matrix": [1, 15], "x": 15.25, "y": 1},
|
||||
{"label": "End", "matrix": [1, 16], "x": 16.25, "y": 1},
|
||||
{"label": "PgDn", "matrix": [1, 17], "x": 17.25, "y": 1},
|
||||
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "@", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "~", "matrix": [2, 12], "x": 12.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [2, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"label": "|", "matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"label": "\u2191", "matrix": [3, 16], "x": 16.25, "y": 3},
|
||||
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"label": "Space", "matrix": [4, 5], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"label": "Fn", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"label": "Ctrl", "matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25},
|
||||
{"label": "\u2190", "matrix": [4, 15], "x": 15.25, "y": 4},
|
||||
{"label": "\u2193", "matrix": [4, 16], "x": 16.25, "y": 4},
|
||||
{"label": "\u2192", "matrix": [4, 17], "x": 17.25, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_nofrow_iso_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "\"", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "\u00a3", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Bksp", "matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"label": "\u00ac", "matrix": [0, 14], "x": 14, "y": 0},
|
||||
{"label": "Insert", "matrix": [0, 15], "x": 15.25, "y": 0},
|
||||
{"label": "Home", "matrix": [0, 16], "x": 16.25, "y": 0},
|
||||
{"label": "PgUp", "matrix": [0, 17], "x": 17.25, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "Delete", "matrix": [1, 15], "x": 15.25, "y": 1},
|
||||
{"label": "End", "matrix": [1, 16], "x": 16.25, "y": 1},
|
||||
{"label": "PgDn", "matrix": [1, 17], "x": 17.25, "y": 1},
|
||||
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "@", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "~", "matrix": [2, 12], "x": 12.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [2, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"label": "|", "matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"label": "Fn", "matrix": [3, 14], "x": 14, "y": 3},
|
||||
{"label": "\u2191", "matrix": [3, 16], "x": 16.25, "y": 3},
|
||||
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"label": "Space", "matrix": [4, 5], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"label": "Alt", "matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"label": "Fn", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"label": "Ctrl", "matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25},
|
||||
{"label": "\u2190", "matrix": [4, 15], "x": 15.25, "y": 4},
|
||||
{"label": "\u2193", "matrix": [4, 16], "x": 16.25, "y": 4},
|
||||
{"label": "\u2192", "matrix": [4, 17], "x": 17.25, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_nofrow_iso_tsangan": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "\"", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "\u00a3", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Bksp", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
{"label": "Insert", "matrix": [0, 15], "x": 15.25, "y": 0},
|
||||
{"label": "Home", "matrix": [0, 16], "x": 16.25, "y": 0},
|
||||
{"label": "PgUp", "matrix": [0, 17], "x": 17.25, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "Delete", "matrix": [1, 15], "x": 15.25, "y": 1},
|
||||
{"label": "End", "matrix": [1, 16], "x": 16.25, "y": 1},
|
||||
{"label": "PgDn", "matrix": [1, 17], "x": 17.25, "y": 1},
|
||||
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "@", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "~", "matrix": [2, 12], "x": 12.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [2, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"label": "|", "matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"label": "\u2191", "matrix": [3, 16], "x": 16.25, "y": 3},
|
||||
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"label": "Space", "matrix": [4, 5], "x": 4, "y": 4, "w": 7},
|
||||
{"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"label": "Ctrl", "matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5},
|
||||
{"label": "\u2190", "matrix": [4, 15], "x": 15.25, "y": 4},
|
||||
{"label": "\u2193", "matrix": [4, 16], "x": 16.25, "y": 4},
|
||||
{"label": "\u2192", "matrix": [4, 17], "x": 17.25, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_nofrow_iso_tsangan_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "\"", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "\u00a3", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Bksp", "matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"label": "\u00ac", "matrix": [0, 14], "x": 14, "y": 0},
|
||||
{"label": "Insert", "matrix": [0, 15], "x": 15.25, "y": 0},
|
||||
{"label": "Home", "matrix": [0, 16], "x": 16.25, "y": 0},
|
||||
{"label": "PgUp", "matrix": [0, 17], "x": 17.25, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "Delete", "matrix": [1, 15], "x": 15.25, "y": 1},
|
||||
{"label": "End", "matrix": [1, 16], "x": 16.25, "y": 1},
|
||||
{"label": "PgDn", "matrix": [1, 17], "x": 17.25, "y": 1},
|
||||
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "@", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "~", "matrix": [2, 12], "x": 12.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [2, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"label": "|", "matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"label": "Fn", "matrix": [3, 14], "x": 14, "y": 3},
|
||||
{"label": "\u2191", "matrix": [3, 16], "x": 16.25, "y": 3},
|
||||
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"label": "Space", "matrix": [4, 5], "x": 4, "y": 4, "w": 7},
|
||||
{"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"label": "Ctrl", "matrix": [4, 14], "x": 13.5, "y": 4, "w": 1.5},
|
||||
{"label": "\u2190", "matrix": [4, 15], "x": 15.25, "y": 4},
|
||||
{"label": "\u2193", "matrix": [4, 16], "x": 16.25, "y": 4},
|
||||
{"label": "\u2192", "matrix": [4, 17], "x": 17.25, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
// Copyright 2024 Andrew Kannan
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
enum layer_names {
|
||||
_BASE,
|
||||
_FN1,
|
||||
};
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_all(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_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
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT_all(
|
||||
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_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
UG_TOGG, UG_HUEU, UG_SATU, UG_VALU, UG_SPDU, BL_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, UG_HUED, UG_SATD, UG_VALD, UG_SPDD, BL_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, UG_PREV, UG_NEXT, KC_TRNS, BL_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
};
|
24
keyboards/cannonkeys/cerberus/solderable/matrix_diagram.md
Normal file
24
keyboards/cannonkeys/cerberus/solderable/matrix_diagram.md
Normal file
|
@ -0,0 +1,24 @@
|
|||
# Matrix Diagram for Cerberus
|
||||
|
||||
```
|
||||
┌───────┐
|
||||
2u Backspace │0D │
|
||||
└───────┘
|
||||
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐
|
||||
│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ │0F │0G │0H │
|
||||
├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ ┌─────┐
|
||||
│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1E │ │1F │1G │1H │ │ │
|
||||
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ┌──┴┐2E │
|
||||
│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2E │ │2C │ │
|
||||
├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ └───┴────┘
|
||||
│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3E │ │3G │ ISO Enter
|
||||
├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┐
|
||||
│40 │41 │42 │45 │4A │4B │4C │4E │ │4F │4G │4H │
|
||||
└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
|
||||
┌────────┐ ┌──────────┐
|
||||
│30 │ 2.25u LShift 2.75u RShift │3C │
|
||||
└────────┘ └──────────┘
|
||||
┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
|
||||
│40 │41 │42 │45 │4B │4C │4E │ Tsangan/WKL
|
||||
└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
|
||||
```
|
9
keyboards/cannonkeys/cerberus/solderable/mcuconf.h
Normal file
9
keyboards/cannonkeys/cerberus/solderable/mcuconf.h
Normal file
|
@ -0,0 +1,9 @@
|
|||
// Copyright 2024 Andrew Kannan
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_PWM_USE_TIM3
|
||||
#define STM32_PWM_USE_TIM3 TRUE
|
2
keyboards/cannonkeys/cerberus/solderable/rules.mk
Normal file
2
keyboards/cannonkeys/cerberus/solderable/rules.mk
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
61
keyboards/cipulot/ec1_at/config.h
Normal file
61
keyboards/cipulot/ec1_at/config.h
Normal file
|
@ -0,0 +1,61 @@
|
|||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 21
|
||||
|
||||
#define UNUSED_POSITIONS_LIST { {2, 16}, {4, 5}, {4, 7}, {4, 9}, {4, 12}, {4, 16} }
|
||||
|
||||
#define MATRIX_ROW_PINS {A8, B15, B14, B12, B13}
|
||||
|
||||
#define AMUX_COUNT 2
|
||||
#define AMUX_MAX_COLS_COUNT 16
|
||||
|
||||
#define AMUX_EN_PINS {B5, A15}
|
||||
|
||||
#define AMUX_SEL_PINS {B6, B7, B4, B3}
|
||||
|
||||
#define AMUX_COL_CHANNELS_SIZES {16, 5}
|
||||
|
||||
#define AMUX_0_COL_CHANNELS {5, 6, 7, 4, 3, 2, 1, 0, 8, 15, 14, 13, 12, 10, 9, 11}
|
||||
|
||||
#define AMUX_1_COL_CHANNELS {4, 2, 1, 0, 3}
|
||||
|
||||
#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS, AMUX_1_COL_CHANNELS
|
||||
|
||||
#define DISCHARGE_PIN A2
|
||||
#define ANALOG_PORT A3
|
||||
|
||||
#define DEFAULT_ACTUATION_MODE 0
|
||||
#define DEFAULT_MODE_0_ACTUATION_LEVEL 550
|
||||
#define DEFAULT_MODE_0_RELEASE_LEVEL 500
|
||||
#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL
|
||||
#define DEFAULT_MODE_1_ACTUATION_OFFSET 70
|
||||
#define DEFAULT_MODE_1_RELEASE_OFFSET 70
|
||||
#define DEFAULT_EXTREMUM 1023
|
||||
#define EXPECTED_NOISE_FLOOR 0
|
||||
#define NOISE_FLOOR_THRESHOLD 50
|
||||
#define BOTTOMING_CALIBRATION_THRESHOLD 50
|
||||
#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30
|
||||
#define DEFAULT_BOTTOMING_READING 1023
|
||||
#define DEFAULT_CALIBRATION_STARTER true
|
||||
|
||||
#define DISCHARGE_TIME 10
|
||||
|
||||
#define EECONFIG_KB_DATA_SIZE 219
|
||||
#define DYNAMIC_KEYMAP_MACRO_COUNT 30
|
21
keyboards/cipulot/ec1_at/halconf.h
Normal file
21
keyboards/cipulot/ec1_at/halconf.h
Normal file
|
@ -0,0 +1,21 @@
|
|||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_ADC TRUE
|
||||
|
||||
#include_next <halconf.h>
|
142
keyboards/cipulot/ec1_at/keyboard.json
Normal file
142
keyboards/cipulot/ec1_at/keyboard.json
Normal file
|
@ -0,0 +1,142 @@
|
|||
{
|
||||
"manufacturer": "Cipulot",
|
||||
"keyboard_name": "EC1-AT",
|
||||
"maintainer": "Cipulot",
|
||||
"bootloader": "stm32-dfu",
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"eeprom": {
|
||||
"wear_leveling": {
|
||||
"backing_size": 16384
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": false,
|
||||
"console": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"processor": "STM32F411",
|
||||
"qmk": {
|
||||
"locking": {
|
||||
"enabled": true,
|
||||
"resync": true
|
||||
}
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"pid": "0x6BCE",
|
||||
"shared_endpoint": {
|
||||
"keyboard": true
|
||||
},
|
||||
"vid": "0x6369"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "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.25, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6.25, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7.25, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8.25, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9.25, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10.25, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11.25, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12.25, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13.25, "y": 0},
|
||||
{"matrix": [0, 14], "x": 14.25, "y": 0},
|
||||
{"matrix": [0, 15], "x": 15.25, "y": 0},
|
||||
{"matrix": [0, 16], "x": 16.25, "y": 0},
|
||||
{"matrix": [0, 17], "x": 17.5, "y": 0},
|
||||
{"matrix": [0, 18], "x": 18.5, "y": 0},
|
||||
{"matrix": [0, 19], "x": 19.5, "y": 0},
|
||||
{"matrix": [0, 20], "x": 20.5, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.25, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 3], "x": 3.75, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.75, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.75, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.75, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.75, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.75, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.75, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.75, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.75, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.75, "y": 1},
|
||||
{"matrix": [1, 13], "x": 13.75, "y": 1},
|
||||
{"matrix": [1, 14], "x": 14.75, "y": 1},
|
||||
{"matrix": [1, 15], "x": 15.75, "y": 1, "w": 0.75},
|
||||
{"matrix": [1, 16], "x": 16.5, "y": 1, "w": 0.75},
|
||||
{"matrix": [1, 17], "x": 17.5, "y": 1},
|
||||
{"matrix": [1, 18], "x": 18.5, "y": 1},
|
||||
{"matrix": [1, 19], "x": 19.5, "y": 1},
|
||||
{"matrix": [1, 20], "x": 20.5, "y": 1},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.25, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 3], "x": 4, "y": 2},
|
||||
{"matrix": [2, 4], "x": 5, "y": 2},
|
||||
{"matrix": [2, 5], "x": 6, "y": 2},
|
||||
{"matrix": [2, 6], "x": 7, "y": 2},
|
||||
{"matrix": [2, 7], "x": 8, "y": 2},
|
||||
{"matrix": [2, 8], "x": 9, "y": 2},
|
||||
{"matrix": [2, 9], "x": 10, "y": 2},
|
||||
{"matrix": [2, 10], "x": 11, "y": 2},
|
||||
{"matrix": [2, 11], "x": 12, "y": 2},
|
||||
{"matrix": [2, 12], "x": 13, "y": 2},
|
||||
{"matrix": [2, 13], "x": 14, "y": 2},
|
||||
{"matrix": [2, 14], "x": 15, "y": 2},
|
||||
{"matrix": [2, 15], "x": 16, "y": 2, "w": 1.25},
|
||||
{"matrix": [2, 17], "x": 17.5, "y": 2},
|
||||
{"matrix": [2, 18], "x": 18.5, "y": 2},
|
||||
{"matrix": [2, 19], "x": 19.5, "y": 2},
|
||||
{"matrix": [2, 20], "x": 20.5, "y": 2},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 3], "x": 3.5, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.5, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.5, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.5, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.5, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.5, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.5, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.5, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.5, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.5, "y": 3},
|
||||
{"matrix": [3, 13], "x": 13.5, "y": 3},
|
||||
{"matrix": [3, 14], "x": 14.5, "y": 3},
|
||||
{"matrix": [3, 15], "x": 15.5, "y": 3, "w": 0.75},
|
||||
{"matrix": [3, 16], "x": 16.25, "y": 3},
|
||||
{"matrix": [3, 17], "x": 17.5, "y": 3},
|
||||
{"matrix": [3, 18], "x": 18.5, "y": 3},
|
||||
{"matrix": [3, 19], "x": 19.5, "y": 3},
|
||||
{"matrix": [3, 20], "x": 20.5, "y": 3},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4},
|
||||
{"matrix": [4, 1], "x": 1, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 3], "x": 3.75, "y": 4},
|
||||
{"matrix": [4, 4], "x": 4.75, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 6.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 8], "x": 7.75, "y": 4, "w": 2.5},
|
||||
{"matrix": [4, 10], "x": 10.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 11], "x": 11.75, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 13], "x": 13.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 14], "x": 14.75, "y": 4},
|
||||
{"matrix": [4, 15], "x": 15.75, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 17], "x": 17.5, "y": 4},
|
||||
{"matrix": [4, 18], "x": 18.5, "y": 4},
|
||||
{"matrix": [4, 19], "x": 19.5, "y": 4},
|
||||
{"matrix": [4, 20], "x": 20.5, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
42
keyboards/cipulot/ec1_at/keymaps/default/keymap.c
Normal file
42
keyboards/cipulot/ec1_at/keymaps/default/keymap.c
Normal file
|
@ -0,0 +1,42 @@
|
|||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// clang-format off
|
||||
[0] = LAYOUT(
|
||||
_______, _______, QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, 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_ENTER, KC_P7, KC_P8, KC_P9, KC_PMNS,
|
||||
_______, _______, 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_ENTER, KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
_______, _______, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, MO(1), KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
_______, _______, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RALT, MO(1), KC_RCTL, KC_P0, KC_P0, KC_PDOT, KC_PENT),
|
||||
|
||||
[1] = LAYOUT(
|
||||
_______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RIGHT, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MO(2), _______, _______, _______, _______, _______),
|
||||
|
||||
[2] = LAYOUT(
|
||||
QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
|
||||
// clang-format on
|
||||
};
|
22
keyboards/cipulot/ec1_at/mcuconf.h
Normal file
22
keyboards/cipulot/ec1_at/mcuconf.h
Normal file
|
@ -0,0 +1,22 @@
|
|||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_ADC_USE_ADC1
|
||||
#define STM32_ADC_USE_ADC1 TRUE
|
1
keyboards/cipulot/ec1_at/post_rules.mk
Normal file
1
keyboards/cipulot/ec1_at/post_rules.mk
Normal file
|
@ -0,0 +1 @@
|
|||
include keyboards/cipulot/common/common_cipulot.mk
|
26
keyboards/cipulot/ec1_at/readme.md
Normal file
26
keyboards/cipulot/ec1_at/readme.md
Normal file
|
@ -0,0 +1,26 @@
|
|||
# EC1-AT
|
||||
|
||||
![EC1-AT](https://i.imgur.com/69OrQsh.png)
|
||||
|
||||
EC version of the W1-AT keyboard.
|
||||
|
||||
* Keyboard Maintainer: [cipulot](https://github.com/cipulot)
|
||||
* Hardware Supported: EC1-AT
|
||||
* Hardware Availability: TBD
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make cipulot/ec1_at:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make cipulot/ec1_at:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 2 ways:
|
||||
|
||||
* **Physical reset**: Long press the button on the back of the PCB
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
1
keyboards/cipulot/ec1_at/rules.mk
Normal file
1
keyboards/cipulot/ec1_at/rules.mk
Normal file
|
@ -0,0 +1 @@
|
|||
OPT = 3
|
63
keyboards/cipulot/ec_constellation/config.h
Normal file
63
keyboards/cipulot/ec_constellation/config.h
Normal file
|
@ -0,0 +1,63 @@
|
|||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 15
|
||||
|
||||
#define UNUSED_POSITIONS_LIST { {3, 1}, {4, 3}, {4, 4}, {4, 5}, {4, 7}, {4, 8}, {4, 9} }
|
||||
|
||||
#define MATRIX_ROW_PINS \
|
||||
{ A8, A15, B12, B8, B9 }
|
||||
|
||||
#define AMUX_COUNT 1
|
||||
#define AMUX_MAX_COLS_COUNT 15
|
||||
|
||||
#define AMUX_EN_PINS \
|
||||
{ B5 }
|
||||
|
||||
#define AMUX_SEL_PINS \
|
||||
{ B6, B7, B4, B3 }
|
||||
|
||||
#define AMUX_COL_CHANNELS_SIZES \
|
||||
{ 15 }
|
||||
|
||||
#define AMUX_0_COL_CHANNELS \
|
||||
{ 7, 6, 5, 4, 3, 2, 1, 0, 9, 15, 14, 13, 10, 11, 12}
|
||||
|
||||
#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS
|
||||
|
||||
#define DISCHARGE_PIN A2
|
||||
#define ANALOG_PORT A3
|
||||
|
||||
#define DEFAULT_ACTUATION_MODE 0
|
||||
#define DEFAULT_MODE_0_ACTUATION_LEVEL 550
|
||||
#define DEFAULT_MODE_0_RELEASE_LEVEL 500
|
||||
#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL
|
||||
#define DEFAULT_MODE_1_ACTUATION_OFFSET 70
|
||||
#define DEFAULT_MODE_1_RELEASE_OFFSET 70
|
||||
#define DEFAULT_EXTREMUM 1023
|
||||
#define EXPECTED_NOISE_FLOOR 0
|
||||
#define NOISE_FLOOR_THRESHOLD 50
|
||||
#define BOTTOMING_CALIBRATION_THRESHOLD 50
|
||||
#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30
|
||||
#define DEFAULT_BOTTOMING_READING 1023
|
||||
#define DEFAULT_CALIBRATION_STARTER true
|
||||
|
||||
#define DISCHARGE_TIME 10
|
||||
|
||||
#define EECONFIG_KB_DATA_SIZE 159
|
21
keyboards/cipulot/ec_constellation/halconf.h
Normal file
21
keyboards/cipulot/ec_constellation/halconf.h
Normal file
|
@ -0,0 +1,21 @@
|
|||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_ADC TRUE
|
||||
|
||||
#include_next <halconf.h>
|
185
keyboards/cipulot/ec_constellation/keyboard.json
Normal file
185
keyboards/cipulot/ec_constellation/keyboard.json
Normal file
|
@ -0,0 +1,185 @@
|
|||
{
|
||||
"manufacturer": "Cipulot",
|
||||
"keyboard_name": "Constellation EC",
|
||||
"maintainer": "Cipulot",
|
||||
"bootloader": "stm32-dfu",
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"eeprom": {
|
||||
"wear_leveling": {
|
||||
"backing_size": 4096
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": false,
|
||||
"console": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"processor": "STM32F411",
|
||||
"qmk": {
|
||||
"locking": {
|
||||
"enabled": true,
|
||||
"resync": true
|
||||
}
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"pid": "0x6BC9",
|
||||
"shared_endpoint": {
|
||||
"keyboard": true
|
||||
},
|
||||
"vid": "0x6369"
|
||||
},
|
||||
"layout_aliases": {
|
||||
"LAYOUT_all": "LAYOUT_65_ansi_rwkl_split_bs"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_65_ansi_rwkl": {
|
||||
"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, 14], "x": 15, "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, 14], "x": 15, "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": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [2, 13], "x": 15, "y": 2},
|
||||
{"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": [3, 14], "x": 15, "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": 6.25},
|
||||
{"matrix": [4, 10], "x": 10.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 11], "x": 11.75, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 12], "x": 13, "y": 4},
|
||||
{"matrix": [4, 13], "x": 14, "y": 4},
|
||||
{"matrix": [4, 14], "x": 15, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_65_ansi_rwkl_split_bs": {
|
||||
"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": [0, 14], "x": 14, "y": 0},
|
||||
{"matrix": [1, 14], "x": 15, "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, 14], "x": 15, "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": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [2, 13], "x": 15, "y": 2},
|
||||
{"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": [3, 14], "x": 15, "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": 6.25},
|
||||
{"matrix": [4, 10], "x": 10.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 11], "x": 11.75, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 12], "x": 13, "y": 4},
|
||||
{"matrix": [4, 13], "x": 14, "y": 4},
|
||||
{"matrix": [4, 14], "x": 15, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// clang-format off
|
||||
[0] = LAYOUT_65_ansi_rwkl(
|
||||
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_HOME,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[1] = LAYOUT_65_ansi_rwkl(
|
||||
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_INS, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[2] = LAYOUT_65_ansi_rwkl(
|
||||
QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
// clang-format on
|
||||
};
|
43
keyboards/cipulot/ec_constellation/keymaps/default/keymap.c
Normal file
43
keyboards/cipulot/ec_constellation/keymaps/default/keymap.c
Normal file
|
@ -0,0 +1,43 @@
|
|||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// clang-format off
|
||||
[0] = LAYOUT_65_ansi_rwkl_split_bs(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_HOME,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[1] = LAYOUT_65_ansi_rwkl_split_bs(
|
||||
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_INS, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[2] = LAYOUT_65_ansi_rwkl_split_bs(
|
||||
QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
// clang-format on
|
||||
};
|
22
keyboards/cipulot/ec_constellation/mcuconf.h
Normal file
22
keyboards/cipulot/ec_constellation/mcuconf.h
Normal file
|
@ -0,0 +1,22 @@
|
|||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* 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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_ADC_USE_ADC1
|
||||
#define STM32_ADC_USE_ADC1 TRUE
|
1
keyboards/cipulot/ec_constellation/post_rules.mk
Normal file
1
keyboards/cipulot/ec_constellation/post_rules.mk
Normal file
|
@ -0,0 +1 @@
|
|||
include keyboards/cipulot/common/common_cipulot.mk
|
26
keyboards/cipulot/ec_constellation/readme.md
Normal file
26
keyboards/cipulot/ec_constellation/readme.md
Normal file
|
@ -0,0 +1,26 @@
|
|||
# Constellation EC
|
||||
|
||||
![Constellation EC](https://i.imgur.com/ndgUV63.jpeg)
|
||||
|
||||
EC version of the Constellation keyboard.
|
||||
|
||||
* Keyboard Maintainer: [cipulot](https://github.com/cipulot)
|
||||
* Hardware Supported: Constellation EC PCB
|
||||
* Hardware Availability: [Keyboard Treehouse](https://keyboardtreehouse.com/collections/constellation)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make cipulot/ec_constellation:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make cipulot/ec_constellation:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 2 ways:
|
||||
|
||||
* **Physical reset**: Long short the exposed pins on the PCB
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
1
keyboards/cipulot/ec_constellation/rules.mk
Normal file
1
keyboards/cipulot/ec_constellation/rules.mk
Normal file
|
@ -0,0 +1 @@
|
|||
OPT = 3
|
15
keyboards/era/sirind/tomak79s/config.h
Normal file
15
keyboards/era/sirind/tomak79s/config.h
Normal file
|
@ -0,0 +1,15 @@
|
|||
// Copyright 2024 Hyojin Bak (@eerraa)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Split configuration */
|
||||
#define USB_VBUS_PIN GP19
|
||||
#define SERIAL_USART_FULL_DUPLEX
|
||||
#define SERIAL_USART_TX_PIN GP0
|
||||
#define SERIAL_USART_RX_PIN GP1
|
||||
#define SERIAL_USART_PIN_SWAP
|
||||
|
||||
/* Reset */
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
|
675
keyboards/era/sirind/tomak79s/keyboard.json
Normal file
675
keyboards/era/sirind/tomak79s/keyboard.json
Normal file
|
@ -0,0 +1,675 @@
|
|||
{
|
||||
"manufacturer": "SIRIND",
|
||||
"keyboard_name": "Tomak79S",
|
||||
"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": ["GP29", "GP22", "GP5", "GP6", "GP7", "GP4", "GP3", "GP2", null],
|
||||
"rows": ["GP28", "GP23", "GP24", "GP25", "GP26", "GP27"]
|
||||
},
|
||||
"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": 1},
|
||||
{"matrix": [0, 2], "x": 20, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 33, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 4], "x": 47, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 5], "x": 60, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 6], "x": 80, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 7], "x": 93, "y": 0, "flags": 4},
|
||||
{"matrix": [1, 7], "x": 95, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 6], "x": 81, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 68, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 54, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 41, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 27, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 14, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 0], "x": 0, "y": 15, "flags": 4},
|
||||
{"matrix": [2, 0], "x": 3, "y": 26, "flags": 1},
|
||||
{"matrix": [2, 1], "x": 20, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 34, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 47, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 61, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 75, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 6], "x": 88, "y": 26, "flags": 4},
|
||||
{"matrix": [3, 6], "x": 92, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 5], "x": 78, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 4], "x": 64, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 3], "x": 51, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 2], "x": 37, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 1], "x": 24, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 0], "x": 5, "y": 38, "flags": 1},
|
||||
{"matrix": [3, 0], "x": 2, "y": 38, "flags": 1},
|
||||
{"matrix": [4, 0], "x": 2, "y": 49, "flags": 1},
|
||||
{"matrix": [4, 0], "x": 8, "y": 49, "flags": 1},
|
||||
{"matrix": [4, 1], "x": 17, "y": 49, "flags": 4},
|
||||
{"matrix": [4, 2], "x": 31, "y": 49, "flags": 4},
|
||||
{"matrix": [4, 3], "x": 44, "y": 49, "flags": 4},
|
||||
{"matrix": [4, 4], "x": 58, "y": 49, "flags": 4},
|
||||
{"matrix": [4, 5], "x": 71, "y": 49, "flags": 4},
|
||||
{"matrix": [4, 6], "x": 85, "y": 49, "flags": 4},
|
||||
{"matrix": [5, 6], "x": 93, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 5], "x": 71, "y": 64, "flags": 4},
|
||||
{"matrix": [5, 2], "x": 37, "y": 61, "flags": 1},
|
||||
{"matrix": [5, 1], "x": 20, "y": 61, "flags": 1},
|
||||
{"matrix": [5, 0], "x": 3, "y": 61, "flags": 1},
|
||||
{"matrix": [6, 8], "x": 221, "y": 0, "flags": 4},
|
||||
{"matrix": [6, 7], "x": 205, "y": 0, "flags": 4},
|
||||
{"matrix": [6, 5], "x": 185, "y": 0, "flags": 4},
|
||||
{"matrix": [6, 4], "x": 171, "y": 0, "flags": 4},
|
||||
{"matrix": [6, 3], "x": 158, "y": 0, "flags": 4},
|
||||
{"matrix": [6, 2], "x": 144, "y": 0, "flags": 4},
|
||||
{"matrix": [6, 1], "x": 124, "y": 0, "flags": 4},
|
||||
{"matrix": [6, 0], "x": 111, "y": 0, "flags": 4},
|
||||
{"matrix": [7, 0], "x": 109, "y": 15, "flags": 4},
|
||||
{"matrix": [7, 1], "x": 123, "y": 15, "flags": 4},
|
||||
{"matrix": [7, 2], "x": 136, "y": 15, "flags": 4},
|
||||
{"matrix": [7, 3], "x": 150, "y": 15, "flags": 4},
|
||||
{"matrix": [7, 4], "x": 163, "y": 15, "flags": 4},
|
||||
{"matrix": [7, 5], "x": 177, "y": 15, "flags": 4},
|
||||
{"matrix": [7, 6], "x": 191, "y": 15, "flags": 1},
|
||||
{"matrix": [7, 7], "x": 197, "y": 15, "flags": 1},
|
||||
{"matrix": [7, 7], "x": 204, "y": 15, "flags": 1},
|
||||
{"matrix": [7, 8], "x": 221, "y": 15, "flags": 1},
|
||||
{"matrix": [8, 8], "x": 221, "y": 26, "flags": 4},
|
||||
{"matrix": [8, 7], "x": 200, "y": 26, "flags": 4},
|
||||
{"matrix": [8, 6], "x": 184, "y": 26, "flags": 4},
|
||||
{"matrix": [8, 5], "x": 170, "y": 26, "flags": 4},
|
||||
{"matrix": [8, 4], "x": 157, "y": 26, "flags": 4},
|
||||
{"matrix": [8, 3], "x": 143, "y": 26, "flags": 4},
|
||||
{"matrix": [8, 2], "x": 130, "y": 26, "flags": 4},
|
||||
{"matrix": [8, 1], "x": 116, "y": 26, "flags": 4},
|
||||
{"matrix": [8, 0], "x": 102, "y": 26, "flags": 4},
|
||||
{"matrix": [9, 0], "x": 106, "y": 38, "flags": 4},
|
||||
{"matrix": [9, 1], "x": 119, "y": 38, "flags": 4},
|
||||
{"matrix": [9, 2], "x": 133, "y": 38, "flags": 4},
|
||||
{"matrix": [9, 3], "x": 147, "y": 38, "flags": 4},
|
||||
{"matrix": [9, 4], "x": 160, "y": 38, "flags": 4},
|
||||
{"matrix": [9, 5], "x": 174, "y": 38, "flags": 4},
|
||||
{"matrix": [9, 6], "x": 187, "y": 38, "flags": 4},
|
||||
{"matrix": [9, 7], "x": 200, "y": 38, "flags": 1},
|
||||
{"matrix": [9, 7], "x": 202, "y": 34, "flags": 1},
|
||||
{"matrix": [10, 7], "x": 208, "y": 52, "flags": 4},
|
||||
{"matrix": [10, 6], "x": 186, "y": 49, "flags": 1},
|
||||
{"matrix": [10, 5], "x": 167, "y": 49, "flags": 4},
|
||||
{"matrix": [10, 4], "x": 153, "y": 49, "flags": 4},
|
||||
{"matrix": [10, 3], "x": 140, "y": 49, "flags": 4},
|
||||
{"matrix": [10, 2], "x": 126, "y": 49, "flags": 4},
|
||||
{"matrix": [10, 1], "x": 113, "y": 49, "flags": 4},
|
||||
{"matrix": [10, 0], "x": 99, "y": 49, "flags": 4},
|
||||
{"matrix": [11, 2], "x": 123, "y": 64, "flags": 4},
|
||||
{"matrix": [11, 4], "x": 160, "y": 61, "flags": 1},
|
||||
{"matrix": [11, 5], "x": 177, "y": 61, "flags": 1},
|
||||
{"matrix": [11, 6], "x": 194, "y": 64, "flags": 4},
|
||||
{"matrix": [11, 7], "x": 208, "y": 64, "flags": 4},
|
||||
{"matrix": [11, 8], "x": 221, "y": 64, "flags": 4},
|
||||
{"x": 224, "y": 53, "flags": 2},
|
||||
{"x": 224, "y": 51, "flags": 2},
|
||||
{"x": 224, "y": 49, "flags": 2},
|
||||
{"x": 224, "y": 48, "flags": 2},
|
||||
{"x": 224, "y": 46, "flags": 2},
|
||||
{"x": 224, "y": 44, "flags": 2},
|
||||
{"x": 224, "y": 43, "flags": 2},
|
||||
{"x": 224, "y": 41, "flags": 2},
|
||||
{"x": 224, "y": 39, "flags": 2}
|
||||
],
|
||||
"sleep": true,
|
||||
"split_count": [43, 59]
|
||||
},
|
||||
"split": {
|
||||
"bootmagic": {
|
||||
"matrix": [6, 0]
|
||||
},
|
||||
"enabled": true,
|
||||
"handedness": {
|
||||
"pin": "GP20"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"right": {
|
||||
"cols": ["GP25", "GP24", "GP23", "GP22", "GP7", "GP6", "GP5", "GP4", "GP2"],
|
||||
"rows": ["GP29", "GP28", "GP27", "GP26", "GP11", "GP3"]
|
||||
}
|
||||
},
|
||||
"serial": {
|
||||
"driver": "vendor"
|
||||
},
|
||||
"transport": {
|
||||
"sync": {
|
||||
"indicators": true,
|
||||
"layer_state": true,
|
||||
"matrix_state": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"url": "",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x0013",
|
||||
"vid": "0x4552"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "vendor",
|
||||
"pin": "GP17"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 2], "x": 1.5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 2.5, "y": 0},
|
||||
{"matrix": [0, 4], "x": 3.5, "y": 0},
|
||||
{"matrix": [0, 5], "x": 4.5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [6, 0], "x": 9.5, "y": 0},
|
||||
{"matrix": [6, 1], "x": 10.5, "y": 0},
|
||||
{"matrix": [6, 2], "x": 12, "y": 0},
|
||||
{"matrix": [6, 3], "x": 13, "y": 0},
|
||||
{"matrix": [6, 4], "x": 14, "y": 0},
|
||||
{"matrix": [6, 5], "x": 15, "y": 0},
|
||||
{"matrix": [6, 7], "x": 16.5, "y": 0},
|
||||
{"matrix": [6, 8], "x": 17.75, "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": [7, 0], "x": 9.5, "y": 1.25},
|
||||
{"matrix": [7, 1], "x": 10.5, "y": 1.25},
|
||||
{"matrix": [7, 2], "x": 11.5, "y": 1.25},
|
||||
{"matrix": [7, 3], "x": 12.5, "y": 1.25},
|
||||
{"matrix": [7, 4], "x": 13.5, "y": 1.25},
|
||||
{"matrix": [7, 5], "x": 14.5, "y": 1.25},
|
||||
{"matrix": [7, 6], "x": 15.5, "y": 1.25},
|
||||
{"matrix": [7, 7], "x": 16.5, "y": 1.25},
|
||||
{"matrix": [7, 8], "x": 17.75, "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": [8, 0], "x": 9, "y": 2.25},
|
||||
{"matrix": [8, 1], "x": 10, "y": 2.25},
|
||||
{"matrix": [8, 2], "x": 11, "y": 2.25},
|
||||
{"matrix": [8, 3], "x": 12, "y": 2.25},
|
||||
{"matrix": [8, 4], "x": 13, "y": 2.25},
|
||||
{"matrix": [8, 5], "x": 14, "y": 2.25},
|
||||
{"matrix": [8, 6], "x": 15, "y": 2.25},
|
||||
{"matrix": [8, 7], "x": 16, "y": 2.25, "w": 1.5},
|
||||
{"matrix": [8, 8], "x": 17.75, "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": [9, 0], "x": 9.25, "y": 3.25},
|
||||
{"matrix": [9, 1], "x": 10.25, "y": 3.25},
|
||||
{"matrix": [9, 2], "x": 11.25, "y": 3.25},
|
||||
{"matrix": [9, 3], "x": 12.25, "y": 3.25},
|
||||
{"matrix": [9, 4], "x": 13.25, "y": 3.25},
|
||||
{"matrix": [9, 5], "x": 14.25, "y": 3.25},
|
||||
{"matrix": [9, 6], "x": 15.25, "y": 3.25},
|
||||
{"matrix": [9, 7], "x": 16.25, "y": 3.25, "w": 1.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},
|
||||
{"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": [10, 0], "x": 8.75, "y": 4.25},
|
||||
{"matrix": [10, 1], "x": 9.75, "y": 4.25},
|
||||
{"matrix": [10, 2], "x": 10.75, "y": 4.25},
|
||||
{"matrix": [10, 3], "x": 11.75, "y": 4.25},
|
||||
{"matrix": [10, 4], "x": 12.75, "y": 4.25},
|
||||
{"matrix": [10, 5], "x": 13.75, "y": 4.25},
|
||||
{"matrix": [10, 6], "x": 14.75, "y": 4.25, "w": 1.75},
|
||||
{"matrix": [10, 7], "x": 16.75, "y": 4.5},
|
||||
{"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
|
||||
{"matrix": [5, 1], "x": 1.5, "y": 5.25},
|
||||
{"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
|
||||
{"matrix": [5, 5], "x": 4.75, "y": 5.5, "w": 2.25},
|
||||
{"matrix": [5, 6], "x": 7, "y": 5.5},
|
||||
{"matrix": [11, 2], "x": 9.5, "y": 5.5, "w": 2.75},
|
||||
{"matrix": [11, 4], "x": 13, "y": 5.25, "w": 1.5},
|
||||
{"matrix": [11, 5], "x": 14.5, "y": 5.25},
|
||||
{"matrix": [11, 6], "x": 15.75, "y": 5.5},
|
||||
{"matrix": [11, 7], "x": 16.75, "y": 5.5},
|
||||
{"matrix": [11, 8], "x": 17.75, "y": 5.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_ansi": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 2], "x": 1.5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 2.5, "y": 0},
|
||||
{"matrix": [0, 4], "x": 3.5, "y": 0},
|
||||
{"matrix": [0, 5], "x": 4.5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [6, 0], "x": 9.5, "y": 0},
|
||||
{"matrix": [6, 1], "x": 10.5, "y": 0},
|
||||
{"matrix": [6, 2], "x": 12, "y": 0},
|
||||
{"matrix": [6, 3], "x": 13, "y": 0},
|
||||
{"matrix": [6, 4], "x": 14, "y": 0},
|
||||
{"matrix": [6, 5], "x": 15, "y": 0},
|
||||
{"matrix": [6, 7], "x": 16.5, "y": 0},
|
||||
{"matrix": [6, 8], "x": 17.75, "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": [7, 0], "x": 9.5, "y": 1.25},
|
||||
{"matrix": [7, 1], "x": 10.5, "y": 1.25},
|
||||
{"matrix": [7, 2], "x": 11.5, "y": 1.25},
|
||||
{"matrix": [7, 3], "x": 12.5, "y": 1.25},
|
||||
{"matrix": [7, 4], "x": 13.5, "y": 1.25},
|
||||
{"matrix": [7, 5], "x": 14.5, "y": 1.25},
|
||||
{"matrix": [7, 7], "x": 15.5, "y": 1.25, "w": 2},
|
||||
{"matrix": [7, 8], "x": 17.75, "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": [8, 0], "x": 9, "y": 2.25},
|
||||
{"matrix": [8, 1], "x": 10, "y": 2.25},
|
||||
{"matrix": [8, 2], "x": 11, "y": 2.25},
|
||||
{"matrix": [8, 3], "x": 12, "y": 2.25},
|
||||
{"matrix": [8, 4], "x": 13, "y": 2.25},
|
||||
{"matrix": [8, 5], "x": 14, "y": 2.25},
|
||||
{"matrix": [8, 6], "x": 15, "y": 2.25},
|
||||
{"matrix": [8, 7], "x": 16, "y": 2.25, "w": 1.5},
|
||||
{"matrix": [8, 8], "x": 17.75, "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": [9, 0], "x": 9.25, "y": 3.25},
|
||||
{"matrix": [9, 1], "x": 10.25, "y": 3.25},
|
||||
{"matrix": [9, 2], "x": 11.25, "y": 3.25},
|
||||
{"matrix": [9, 3], "x": 12.25, "y": 3.25},
|
||||
{"matrix": [9, 4], "x": 13.25, "y": 3.25},
|
||||
{"matrix": [9, 5], "x": 14.25, "y": 3.25},
|
||||
{"matrix": [9, 7], "x": 15.25, "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": [10, 0], "x": 8.75, "y": 4.25},
|
||||
{"matrix": [10, 1], "x": 9.75, "y": 4.25},
|
||||
{"matrix": [10, 2], "x": 10.75, "y": 4.25},
|
||||
{"matrix": [10, 3], "x": 11.75, "y": 4.25},
|
||||
{"matrix": [10, 4], "x": 12.75, "y": 4.25},
|
||||
{"matrix": [10, 5], "x": 13.75, "y": 4.25},
|
||||
{"matrix": [10, 6], "x": 14.75, "y": 4.25, "w": 1.75},
|
||||
{"matrix": [10, 7], "x": 16.75, "y": 4.5},
|
||||
{"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
|
||||
{"matrix": [5, 1], "x": 1.5, "y": 5.25},
|
||||
{"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
|
||||
{"matrix": [5, 5], "x": 4.75, "y": 5.5, "w": 2.25},
|
||||
{"matrix": [5, 6], "x": 7, "y": 5.5},
|
||||
{"matrix": [11, 2], "x": 9.5, "y": 5.5, "w": 2.75},
|
||||
{"matrix": [11, 4], "x": 13, "y": 5.25, "w": 1.5},
|
||||
{"matrix": [11, 5], "x": 14.5, "y": 5.25},
|
||||
{"matrix": [11, 6], "x": 15.75, "y": 5.5},
|
||||
{"matrix": [11, 7], "x": 16.75, "y": 5.5},
|
||||
{"matrix": [11, 8], "x": 17.75, "y": 5.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_ansi_split_bs": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 2], "x": 1.5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 2.5, "y": 0},
|
||||
{"matrix": [0, 4], "x": 3.5, "y": 0},
|
||||
{"matrix": [0, 5], "x": 4.5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [6, 0], "x": 9.5, "y": 0},
|
||||
{"matrix": [6, 1], "x": 10.5, "y": 0},
|
||||
{"matrix": [6, 2], "x": 12, "y": 0},
|
||||
{"matrix": [6, 3], "x": 13, "y": 0},
|
||||
{"matrix": [6, 4], "x": 14, "y": 0},
|
||||
{"matrix": [6, 5], "x": 15, "y": 0},
|
||||
{"matrix": [6, 7], "x": 16.5, "y": 0},
|
||||
{"matrix": [6, 8], "x": 17.75, "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": [7, 0], "x": 9.5, "y": 1.25},
|
||||
{"matrix": [7, 1], "x": 10.5, "y": 1.25},
|
||||
{"matrix": [7, 2], "x": 11.5, "y": 1.25},
|
||||
{"matrix": [7, 3], "x": 12.5, "y": 1.25},
|
||||
{"matrix": [7, 4], "x": 13.5, "y": 1.25},
|
||||
{"matrix": [7, 5], "x": 14.5, "y": 1.25},
|
||||
{"matrix": [7, 6], "x": 15.5, "y": 1.25},
|
||||
{"matrix": [7, 7], "x": 16.5, "y": 1.25},
|
||||
{"matrix": [7, 8], "x": 17.75, "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": [8, 0], "x": 9, "y": 2.25},
|
||||
{"matrix": [8, 1], "x": 10, "y": 2.25},
|
||||
{"matrix": [8, 2], "x": 11, "y": 2.25},
|
||||
{"matrix": [8, 3], "x": 12, "y": 2.25},
|
||||
{"matrix": [8, 4], "x": 13, "y": 2.25},
|
||||
{"matrix": [8, 5], "x": 14, "y": 2.25},
|
||||
{"matrix": [8, 6], "x": 15, "y": 2.25},
|
||||
{"matrix": [8, 7], "x": 16, "y": 2.25, "w": 1.5},
|
||||
{"matrix": [8, 8], "x": 17.75, "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": [9, 0], "x": 9.25, "y": 3.25},
|
||||
{"matrix": [9, 1], "x": 10.25, "y": 3.25},
|
||||
{"matrix": [9, 2], "x": 11.25, "y": 3.25},
|
||||
{"matrix": [9, 3], "x": 12.25, "y": 3.25},
|
||||
{"matrix": [9, 4], "x": 13.25, "y": 3.25},
|
||||
{"matrix": [9, 5], "x": 14.25, "y": 3.25},
|
||||
{"matrix": [9, 7], "x": 15.25, "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": [10, 0], "x": 8.75, "y": 4.25},
|
||||
{"matrix": [10, 1], "x": 9.75, "y": 4.25},
|
||||
{"matrix": [10, 2], "x": 10.75, "y": 4.25},
|
||||
{"matrix": [10, 3], "x": 11.75, "y": 4.25},
|
||||
{"matrix": [10, 4], "x": 12.75, "y": 4.25},
|
||||
{"matrix": [10, 5], "x": 13.75, "y": 4.25},
|
||||
{"matrix": [10, 6], "x": 14.75, "y": 4.25, "w": 1.75},
|
||||
{"matrix": [10, 7], "x": 16.75, "y": 4.5},
|
||||
{"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
|
||||
{"matrix": [5, 1], "x": 1.5, "y": 5.25},
|
||||
{"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
|
||||
{"matrix": [5, 5], "x": 4.75, "y": 5.5, "w": 2.25},
|
||||
{"matrix": [5, 6], "x": 7, "y": 5.5},
|
||||
{"matrix": [11, 2], "x": 9.5, "y": 5.5, "w": 2.75},
|
||||
{"matrix": [11, 4], "x": 13, "y": 5.25, "w": 1.5},
|
||||
{"matrix": [11, 5], "x": 14.5, "y": 5.25},
|
||||
{"matrix": [11, 6], "x": 15.75, "y": 5.5},
|
||||
{"matrix": [11, 7], "x": 16.75, "y": 5.5},
|
||||
{"matrix": [11, 8], "x": 17.75, "y": 5.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_iso": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 2], "x": 1.5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 2.5, "y": 0},
|
||||
{"matrix": [0, 4], "x": 3.5, "y": 0},
|
||||
{"matrix": [0, 5], "x": 4.5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [6, 0], "x": 9.5, "y": 0},
|
||||
{"matrix": [6, 1], "x": 10.5, "y": 0},
|
||||
{"matrix": [6, 2], "x": 12, "y": 0},
|
||||
{"matrix": [6, 3], "x": 13, "y": 0},
|
||||
{"matrix": [6, 4], "x": 14, "y": 0},
|
||||
{"matrix": [6, 5], "x": 15, "y": 0},
|
||||
{"matrix": [6, 7], "x": 16.5, "y": 0},
|
||||
{"matrix": [6, 8], "x": 17.75, "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": [7, 0], "x": 9.5, "y": 1.25},
|
||||
{"matrix": [7, 1], "x": 10.5, "y": 1.25},
|
||||
{"matrix": [7, 2], "x": 11.5, "y": 1.25},
|
||||
{"matrix": [7, 3], "x": 12.5, "y": 1.25},
|
||||
{"matrix": [7, 4], "x": 13.5, "y": 1.25},
|
||||
{"matrix": [7, 5], "x": 14.5, "y": 1.25},
|
||||
{"matrix": [7, 7], "x": 15.5, "y": 1.25, "w": 2},
|
||||
{"matrix": [7, 8], "x": 17.75, "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": [8, 0], "x": 9, "y": 2.25},
|
||||
{"matrix": [8, 1], "x": 10, "y": 2.25},
|
||||
{"matrix": [8, 2], "x": 11, "y": 2.25},
|
||||
{"matrix": [8, 3], "x": 12, "y": 2.25},
|
||||
{"matrix": [8, 4], "x": 13, "y": 2.25},
|
||||
{"matrix": [8, 5], "x": 14, "y": 2.25},
|
||||
{"matrix": [8, 6], "x": 15, "y": 2.25},
|
||||
{"matrix": [8, 8], "x": 17.75, "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": [9, 0], "x": 9.25, "y": 3.25},
|
||||
{"matrix": [9, 1], "x": 10.25, "y": 3.25},
|
||||
{"matrix": [9, 2], "x": 11.25, "y": 3.25},
|
||||
{"matrix": [9, 3], "x": 12.25, "y": 3.25},
|
||||
{"matrix": [9, 4], "x": 13.25, "y": 3.25},
|
||||
{"matrix": [9, 5], "x": 14.25, "y": 3.25},
|
||||
{"matrix": [9, 6], "x": 15.25, "y": 3.25},
|
||||
{"matrix": [9, 7], "x": 16.25, "y": 3.25, "w": 1.25, "h": 2},
|
||||
{"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},
|
||||
{"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": [10, 0], "x": 8.75, "y": 4.25},
|
||||
{"matrix": [10, 1], "x": 9.75, "y": 4.25},
|
||||
{"matrix": [10, 2], "x": 10.75, "y": 4.25},
|
||||
{"matrix": [10, 3], "x": 11.75, "y": 4.25},
|
||||
{"matrix": [10, 4], "x": 12.75, "y": 4.25},
|
||||
{"matrix": [10, 5], "x": 13.75, "y": 4.25},
|
||||
{"matrix": [10, 6], "x": 14.75, "y": 4.25, "w": 1.75},
|
||||
{"matrix": [10, 7], "x": 16.75, "y": 4.5},
|
||||
{"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
|
||||
{"matrix": [5, 1], "x": 1.5, "y": 5.25},
|
||||
{"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
|
||||
{"matrix": [5, 5], "x": 4.75, "y": 5.5, "w": 2.25},
|
||||
{"matrix": [5, 6], "x": 7, "y": 5.5},
|
||||
{"matrix": [11, 2], "x": 9.5, "y": 5.5, "w": 2.75},
|
||||
{"matrix": [11, 4], "x": 13, "y": 5.25, "w": 1.5},
|
||||
{"matrix": [11, 5], "x": 14.5, "y": 5.25},
|
||||
{"matrix": [11, 6], "x": 15.75, "y": 5.5},
|
||||
{"matrix": [11, 7], "x": 16.75, "y": 5.5},
|
||||
{"matrix": [11, 8], "x": 17.75, "y": 5.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_iso_split_bs": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 2], "x": 1.5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 2.5, "y": 0},
|
||||
{"matrix": [0, 4], "x": 3.5, "y": 0},
|
||||
{"matrix": [0, 5], "x": 4.5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [6, 0], "x": 9.5, "y": 0},
|
||||
{"matrix": [6, 1], "x": 10.5, "y": 0},
|
||||
{"matrix": [6, 2], "x": 12, "y": 0},
|
||||
{"matrix": [6, 3], "x": 13, "y": 0},
|
||||
{"matrix": [6, 4], "x": 14, "y": 0},
|
||||
{"matrix": [6, 5], "x": 15, "y": 0},
|
||||
{"matrix": [6, 7], "x": 16.5, "y": 0},
|
||||
{"matrix": [6, 8], "x": 17.75, "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": [7, 0], "x": 9.5, "y": 1.25},
|
||||
{"matrix": [7, 1], "x": 10.5, "y": 1.25},
|
||||
{"matrix": [7, 2], "x": 11.5, "y": 1.25},
|
||||
{"matrix": [7, 3], "x": 12.5, "y": 1.25},
|
||||
{"matrix": [7, 4], "x": 13.5, "y": 1.25},
|
||||
{"matrix": [7, 5], "x": 14.5, "y": 1.25},
|
||||
{"matrix": [7, 6], "x": 15.5, "y": 1.25},
|
||||
{"matrix": [7, 7], "x": 16.5, "y": 1.25},
|
||||
{"matrix": [7, 8], "x": 17.75, "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": [8, 0], "x": 9, "y": 2.25},
|
||||
{"matrix": [8, 1], "x": 10, "y": 2.25},
|
||||
{"matrix": [8, 2], "x": 11, "y": 2.25},
|
||||
{"matrix": [8, 3], "x": 12, "y": 2.25},
|
||||
{"matrix": [8, 4], "x": 13, "y": 2.25},
|
||||
{"matrix": [8, 5], "x": 14, "y": 2.25},
|
||||
{"matrix": [8, 6], "x": 15, "y": 2.25},
|
||||
{"matrix": [8, 8], "x": 17.75, "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": [9, 0], "x": 9.25, "y": 3.25},
|
||||
{"matrix": [9, 1], "x": 10.25, "y": 3.25},
|
||||
{"matrix": [9, 2], "x": 11.25, "y": 3.25},
|
||||
{"matrix": [9, 3], "x": 12.25, "y": 3.25},
|
||||
{"matrix": [9, 4], "x": 13.25, "y": 3.25},
|
||||
{"matrix": [9, 5], "x": 14.25, "y": 3.25},
|
||||
{"matrix": [9, 6], "x": 15.25, "y": 3.25},
|
||||
{"matrix": [9, 7], "x": 16.25, "y": 3.25, "w": 1.25, "h": 2},
|
||||
{"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},
|
||||
{"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": [10, 0], "x": 8.75, "y": 4.25},
|
||||
{"matrix": [10, 1], "x": 9.75, "y": 4.25},
|
||||
{"matrix": [10, 2], "x": 10.75, "y": 4.25},
|
||||
{"matrix": [10, 3], "x": 11.75, "y": 4.25},
|
||||
{"matrix": [10, 4], "x": 12.75, "y": 4.25},
|
||||
{"matrix": [10, 5], "x": 13.75, "y": 4.25},
|
||||
{"matrix": [10, 6], "x": 14.75, "y": 4.25, "w": 1.75},
|
||||
{"matrix": [10, 7], "x": 16.75, "y": 4.5},
|
||||
{"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
|
||||
{"matrix": [5, 1], "x": 1.5, "y": 5.25},
|
||||
{"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
|
||||
{"matrix": [5, 5], "x": 4.75, "y": 5.5, "w": 2.25},
|
||||
{"matrix": [5, 6], "x": 7, "y": 5.5},
|
||||
{"matrix": [11, 2], "x": 9.5, "y": 5.5, "w": 2.75},
|
||||
{"matrix": [11, 4], "x": 13, "y": 5.25, "w": 1.5},
|
||||
{"matrix": [11, 5], "x": 14.5, "y": 5.25},
|
||||
{"matrix": [11, 6], "x": 15.75, "y": 5.5},
|
||||
{"matrix": [11, 7], "x": 16.75, "y": 5.5},
|
||||
{"matrix": [11, 8], "x": 17.75, "y": 5.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
24
keyboards/era/sirind/tomak79s/keymaps/default/keymap.c
Normal file
24
keyboards/era/sirind/tomak79s/keymaps/default/keymap.c
Normal file
|
@ -0,0 +1,24 @@
|
|||
// Copyright 2024 Hyojin Bak (@eerraa)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT_all(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[1] = LAYOUT_all(
|
||||
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, RM_TOGG, RM_VALU, RM_HUEU, RM_SATU, RM_SPDU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, RM_NEXT, RM_VALD, RM_HUED, RM_SATD, RM_SPDD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
27
keyboards/era/sirind/tomak79s/readme.md
Normal file
27
keyboards/era/sirind/tomak79s/readme.md
Normal file
|
@ -0,0 +1,27 @@
|
|||
# Tomak79S, Solder ver
|
||||
|
||||
![Tomak79S](https://i.imgur.com/Pq2itWD.jpeg)
|
||||
|
||||
Ergonomics Split Keyboard powered by RP2040.
|
||||
|
||||
* Keyboard Maintainer: [ERA](https://github.com/eerraa)
|
||||
* Hardware supported: SIRIND Tomak79
|
||||
* Hardware availability: [Syryan](https://srind.mysoho.com/)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make era/sirind/tomak79s:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make era/sirind/tomak79s: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(ESC, F7)' key and plug in the keyboard.
|
||||
* **Physical reset**: Short the 'RESET' and 'GND' holes twice within one second, or plug in the keyboard with the 'BOOT' and 'GND' holes shorted.
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
|
16
keyboards/era/sirind/tomak79s/tomak79s.c
Normal file
16
keyboards/era/sirind/tomak79s/tomak79s.c
Normal file
|
@ -0,0 +1,16 @@
|
|||
// Copyright 2023 Hyojin Bak (@eerraa)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
bool rgb_matrix_indicators_kb(void) {
|
||||
if (!rgb_matrix_indicators_user()) {
|
||||
return false;
|
||||
}
|
||||
if (host_keyboard_led_state().caps_lock) {
|
||||
for (uint8_t i = 93; i <= 101; i++) {
|
||||
rgb_matrix_set_color(i, 0, 128, 128);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
228
keyboards/kbd0/curve0/60_ansi/keyboard.json
Normal file
228
keyboards/kbd0/curve0/60_ansi/keyboard.json
Normal file
|
@ -0,0 +1,228 @@
|
|||
{
|
||||
"manufacturer": "kbd0",
|
||||
"keyboard_name": "kbd0/curve0/60_ansi",
|
||||
"maintainer": "kbd0",
|
||||
"bootloader": "rp2040",
|
||||
"bootloader_instructions": "Hold the top left key of the keyboard while plugging in the keyboard",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP6", "GP5", "GP4", "GP7", "GP10", "GP9", "GP11", "GP12", "GP13", "GP14", "GP25", "GP20", "GP19", "GP18", "GP16"],
|
||||
"rows": ["GP23", "GP22", "GP21", "GP24", "GP17"]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"url": "https://kbd0.com/item/curve0",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0xC000",
|
||||
"vid": "0xCBD0"
|
||||
},
|
||||
"community_layouts": ["60_ansi", "60_ansi_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": [0, 14], "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": 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, 14], "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, 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": [0, 14], "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, 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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
22
keyboards/kbd0/curve0/60_ansi/keymaps/default/keymap.json
Normal file
22
keyboards/kbd0/curve0/60_ansi/keymaps/default/keymap.json
Normal file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"author": "kbd0",
|
||||
"keyboard": "kbd0/curve0/60_ansi",
|
||||
"keymap": "default",
|
||||
"layout": "LAYOUT_all",
|
||||
"layers": [
|
||||
[
|
||||
"KC_ESC", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSLS", "KC_BSPC",
|
||||
"KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS",
|
||||
"KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_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", "KC_RGUI", "KC_APP", "KC_RCTL"
|
||||
],
|
||||
[
|
||||
"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_UP", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
|
||||
"_______", "KC_LEFT", "KC_DOWN", "KC_RGHT", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______"
|
||||
]
|
||||
]
|
||||
}
|
27
keyboards/kbd0/curve0/60_ansi/readme.md
Normal file
27
keyboards/kbd0/curve0/60_ansi/readme.md
Normal file
|
@ -0,0 +1,27 @@
|
|||
# kbd0/curve0/60_ansi
|
||||
|
||||
![Curve0](https://i.imgur.com/y5ZIbWI.jpeg)
|
||||
|
||||
Curve0 - Curved stainless steel keyboard by kbd0
|
||||
|
||||
* Keyboard Maintainer: [kbd0](https://github.com/kbd0)
|
||||
* Hardware Supported: Curve0 PCB
|
||||
* Hardware Availability: [kbd0.com](https://kbd0.com/item/curve0)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make kbd0/curve0/60_ansi:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make kbd0/curve0/60_ansi: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 the top left key of the keyboard while plugging in the keyboard
|
||||
* **Physical reset button**: Hold the button on the main PCB (inside the keyboard) while plugging in the keyboard
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
52
keyboards/macroflow_original/keyboard.json
Normal file
52
keyboards/macroflow_original/keyboard.json
Normal file
|
@ -0,0 +1,52 @@
|
|||
{
|
||||
"manufacturer": "Customacros",
|
||||
"keyboard_name": "Macroflow Original",
|
||||
"maintainer": "Patrickemm",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"encoder": true,
|
||||
"oled": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B1", "B3", "B2", "F7"],
|
||||
"rows": ["E6", "B4", "B5"]
|
||||
},
|
||||
"development_board": "promicro",
|
||||
"url": "https://github.com/Patrickemm",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x0002",
|
||||
"vid": "0x504D"
|
||||
},
|
||||
"dynamic_keymap": {
|
||||
"layer_count": 8
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "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": [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}
|
||||
]
|
||||
}
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_b": "F5", "pin_a": "F4"}
|
||||
]
|
||||
}
|
||||
}
|
101
keyboards/macroflow_original/keymaps/default/keymap.c
Normal file
101
keyboards/macroflow_original/keymaps/default/keymap.c
Normal file
|
@ -0,0 +1,101 @@
|
|||
// Copyright 2024 Patrick Mathern (@Patrickemm)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Define the keycode, `QK_USER` avoids collisions with existing keycodes
|
||||
enum keycodes {
|
||||
KC_CYCLE_LAYERS = QK_USER,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
KC_0, KC_CYCLE_LAYERS,
|
||||
KC_1, KC_2, KC_3, KC_4,
|
||||
KC_5, KC_6, KC_7, KC_8
|
||||
),
|
||||
[1] = LAYOUT(
|
||||
KC_9, KC_CYCLE_LAYERS,
|
||||
KC_A, KC_B, KC_C, KC_D,
|
||||
KC_E, KC_F, KC_G, KC_H
|
||||
),
|
||||
[2] = LAYOUT(
|
||||
KC_I, KC_CYCLE_LAYERS,
|
||||
KC_J, KC_K, KC_L, KC_M,
|
||||
KC_N, KC_O, KC_P, KC_Q
|
||||
),
|
||||
[3] = LAYOUT(
|
||||
KC_R, KC_CYCLE_LAYERS,
|
||||
KC_S, KC_T, KC_U, KC_V,
|
||||
KC_W, KC_X, KC_Y, KC_Z
|
||||
),
|
||||
[4] = LAYOUT(
|
||||
KC_TRNS, KC_CYCLE_LAYERS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[5] = LAYOUT(
|
||||
KC_TRNS, KC_CYCLE_LAYERS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[6] = LAYOUT(
|
||||
KC_TRNS, KC_CYCLE_LAYERS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[7] = LAYOUT(
|
||||
KC_TRNS, KC_CYCLE_LAYERS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
|
||||
// 1st layer on the cycle
|
||||
#define LAYER_CYCLE_START 0
|
||||
// Last layer on the cycle
|
||||
#define LAYER_CYCLE_END 7
|
||||
|
||||
// Add the behaviour of this new keycode
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case KC_CYCLE_LAYERS:
|
||||
// Our logic will happen on presses, nothing is done on releases
|
||||
if (!record->event.pressed) {
|
||||
// We've already handled the keycode (doing nothing), let QMK know so no further code is run unnecessarily
|
||||
return false;
|
||||
}
|
||||
|
||||
uint8_t current_layer = get_highest_layer(layer_state);
|
||||
|
||||
// Check if we are within the range, if not quit
|
||||
if (current_layer > LAYER_CYCLE_END || current_layer < LAYER_CYCLE_START) {
|
||||
return false;
|
||||
}
|
||||
|
||||
uint8_t next_layer = current_layer + 1;
|
||||
if (next_layer > LAYER_CYCLE_END) {
|
||||
next_layer = LAYER_CYCLE_START;
|
||||
}
|
||||
layer_move(next_layer);
|
||||
return false;
|
||||
|
||||
// Process other keycodes normally
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
|
||||
[1] = { ENCODER_CCW_CW(_______, _______) },
|
||||
[2] = { ENCODER_CCW_CW(_______, _______) },
|
||||
[3] = { ENCODER_CCW_CW(_______, _______) },
|
||||
[4] = { ENCODER_CCW_CW(_______, _______) },
|
||||
[5] = { ENCODER_CCW_CW(_______, _______) },
|
||||
[6] = { ENCODER_CCW_CW(_______, _______) },
|
||||
[7] = { ENCODER_CCW_CW(_______, _______) }
|
||||
};
|
||||
#endif
|
1
keyboards/macroflow_original/keymaps/default/rules.mk
Normal file
1
keyboards/macroflow_original/keymaps/default/rules.mk
Normal file
|
@ -0,0 +1 @@
|
|||
ENCODER_MAP_ENABLE = yes
|
200
keyboards/macroflow_original/macroflow_original.c
Normal file
200
keyboards/macroflow_original/macroflow_original.c
Normal file
|
@ -0,0 +1,200 @@
|
|||
// Copyright 2024 Patrick Mathern (@Patrickemm)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
static uint16_t oled_logo_timer = 0;
|
||||
static bool has_startup_ran = false;
|
||||
|
||||
#ifndef SHOW_LOGO
|
||||
# define SHOW_LOGO 2500
|
||||
#endif
|
||||
|
||||
enum layer_names {
|
||||
one,
|
||||
two,
|
||||
three,
|
||||
four,
|
||||
five,
|
||||
six,
|
||||
seven,
|
||||
eight
|
||||
};
|
||||
|
||||
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
|
||||
return OLED_ROTATION_180;
|
||||
}
|
||||
|
||||
bool oled_task_kb(void) {
|
||||
if (!oled_task_user()) {
|
||||
return false;
|
||||
}
|
||||
if (!has_startup_ran) {
|
||||
static const char startUp [] PROGMEM = {
|
||||
// 'startUp', 128x32px
|
||||
0, 0, 0,128,192,192,128,128, 0, 0,192,192, 0, 0, 0,192,192, 0, 0,128,128,192,192,128, 0, 0,192,192,192,192,192,192,192, 0, 0,128,128,192,192,128, 0, 0, 0,192,192,128, 0, 0, 0, 0,192,192,128, 0, 0, 0,128,192,192, 0, 0, 0, 0, 0,128,128,192,192,128, 0, 0,128,192,192,192,192,128,128, 0, 0, 0,128,192,192,192,128, 0, 0, 0,128,128,192,192,128, 0, 0, 0, 0, 0, 0, 0,128,192,192,128, 0, 0, 0, 0,128,192,192,128,128, 0, 0,192,192,192, 0, 0, 0, 0,128,192,192, 0,0,
|
||||
0, 0,255,255, 1, 1, 1, 31, 30, 0,255,255, 0, 0, 0,255,255, 0, 30,127,241,193,129, 7, 15, 0, 1, 1, 1,255,255, 1, 1, 0,254,255, 1, 1, 1,255,255, 0, 0,255, 63,255,224, 0,128,254, 63,255,255, 0, 0,224,255, 15,127,255,192, 0, 0,254,255, 1, 1, 1, 31, 31, 0,255,255,129,129,129,255,127, 0, 0,255,255, 1, 1, 1,255,255, 0, 30,127,241,193,129, 7, 15, 0, 0, 0, 0,252,255, 3, 1, 1, 3, 31, 30, 0,255,255, 1, 1, 1,255,254, 0,255,255,127,252, 0, 0,240,255,255,255, 0, 0, 0, 0,255,255,128,128,192,252, 60, 0,127,255,128,128,128,255,127, 0,120,248,128,129,131,255,254, 0, 0, 0, 0,255,255, 0, 0, 0,127,255,128,128,128,255,255, 0, 0,255, 0, 3,255,248,255, 15, 0,255,255, 0,248,255, 27, 24, 24, 63,255,224, 0,127,255,128,128,128,252,124, 0,255,255, 3, 1, 3,127,254,240, 0,127,255,128,128,128,255,127, 0,120,248,128,129,131,255,254, 0,128,128, 0, 63,255,192,128,128,224,252, 60, 0,255,255,128,128,128,255,127, 0,255,255, 0, 31,255,252,127, 1,255,255, 0, 0,0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0
|
||||
};
|
||||
oled_write_raw_P(startUp, sizeof(startUp));
|
||||
if (timer_elapsed(oled_logo_timer) >= SHOW_LOGO) {
|
||||
has_startup_ran = true;
|
||||
oled_clear();
|
||||
}
|
||||
} else {
|
||||
static const char PROGMEM layerImage[4][67+1] = {
|
||||
{ 224,224,224,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,224,224,224,224, 0, 0, 0, 0, 0,224,224,224,128, 0, 0, 0, 0,128,224,224,224, 0, 0, 0,224,224,224,224,224,224,224,224,224,224,224, 0, 0,224,224,224,224,224,224,224,224,224,192,128, 0 },
|
||||
{ 255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,255,255,127, 15,127,255,255,240, 0, 0, 0, 0, 3, 15,127,252,240,240,252,127, 15, 3, 0, 0, 0, 0,255,255,255,255,192,192,192,192,192, 0, 0, 0, 0,255,255,255,255,192,192,192,225,255,255,255,127 },
|
||||
{ 255,255,255,255,192,192,192,192,192,192,192, 0, 0,192,254,255,255,127, 28, 28, 28,127,255,255,254,192, 0, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,129,129,129,129,129,128,128, 0, 0,255,255,255,255, 1, 1, 7,127,255,255,248,192 },
|
||||
{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 3, 3 },
|
||||
};
|
||||
|
||||
static const char PROGMEM layer1[4][30+1] = {
|
||||
{ 128,224,240,240,248,248,248,248,248,248,248,120,120, 56, 56, 24, 24, 24,248,248,248,248,248,248,248,248,240,240,224,128 },
|
||||
{ 255,255,255,255,255,255,255,255,255,255,255,252,252,252, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255 },
|
||||
{ 255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255 },
|
||||
{ 1, 7, 15, 15, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 28, 28, 28, 28, 31, 31, 31, 31, 31, 31, 31, 31, 15, 15, 7, 1 }
|
||||
};
|
||||
|
||||
static const char PROGMEM layer2[4][30+1] = {
|
||||
{ 128,224,240,240,248,248,248,248,248,248,120, 56, 24, 24, 24, 24, 24, 24, 56,120,248,248,248,248,248,248,240,240,224,128 },
|
||||
{ 255,255,255,255,255,255,255,255,255,255,248,248,248,254,255, 63, 6, 0,128,224,255,255,255,255,255,255,255,255,255,255 },
|
||||
{ 255,255,255,255,255,255,255,255,255,255, 63, 15, 7, 1, 64,112,120,126,127,127,255,255,255,255,255,255,255,255,255,255 },
|
||||
{ 1, 7, 15, 15, 31, 31, 31, 31, 31, 31, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 31, 31, 31, 31, 31, 31, 15, 15, 7, 1 }
|
||||
};
|
||||
|
||||
static const char PROGMEM layer3[4][30+1] = {
|
||||
{ 128,224,240,240,248,248,248,248,248,248,120, 56, 24, 24, 24, 24, 24, 24, 56,120,248,248,248,248,248,248,240,240,224,128 },
|
||||
{ 255,255,255,255,255,255,255,255,255,255,248,248,248, 62, 63, 63, 30, 0,128,192,255,255,255,255,255,255,255,255,255,255 },
|
||||
{ 255,255,255,255,255,255,255,255,255,255, 31, 31, 31,126,254,254,124, 0, 0, 1,255,255,255,255,255,255,255,255,255,255 },
|
||||
{ 1, 7, 15, 15, 31, 31, 31, 31, 31, 31, 30, 28, 24, 24, 24, 24, 24, 24, 28, 30, 31, 31, 31, 31, 31, 31, 15, 15, 7, 1 }
|
||||
};
|
||||
|
||||
static const char PROGMEM layer4[4][30+1] = {
|
||||
{ 128,224,240,240,248,248,248,248,248,248,248,248,248,248,120, 24, 24, 24, 24,248,248,248,248,248,248,248,240,240,224,128 },
|
||||
{ 255,255,255,255,255,255,255,255,255,255,255, 63, 7, 1,192,240, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255 },
|
||||
{ 255,255,255,255,255,255,255,255,255,255,192,192,192,194,195,195, 0, 0, 0,195,195,255,255,255,255,255,255,255,255,255 },
|
||||
{ 1, 7, 15, 15, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 28, 28, 28, 31, 31, 31, 31, 31, 31, 31, 15, 15, 7, 1 }
|
||||
};
|
||||
|
||||
static const char PROGMEM layer5[4][30+1] = {
|
||||
{ 128,224,240,240,248,248,248,248,248,248, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,248,248,248,248,248,248,240,240,224,128 },
|
||||
{ 255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,143,143,143, 15, 15, 31,255,255,255,255,255,255,255,255,255,255 },
|
||||
{ 255,255,255,255,255,255,255,255,255,255,142, 14, 14, 30,127,127,127, 0, 0, 0,224,255,255,255,255,255,255,255,255,255 },
|
||||
{ 1, 7, 15, 15, 31, 31, 31, 31, 31, 31, 31, 30, 28, 28, 28, 28, 28, 28, 30, 31, 31, 31, 31, 31, 31, 31, 15, 15, 7, 1 }
|
||||
};
|
||||
|
||||
static const char PROGMEM layer6[4][30+1] = {
|
||||
{ 128,224,240,240,248,248,248,248,248,248,248, 56, 24, 24, 24, 24, 24, 24, 24, 56,248,248,248,248,248,248,240,240,224,128 },
|
||||
{ 255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 31, 31, 31, 24, 24, 56,255,255,255,255,255,255,255,255,255,255 },
|
||||
{ 255,255,255,255,255,255,255,255,255,255,128, 0, 0, 0,127,127,127, 0, 0, 0,128,255,255,255,255,255,255,255,255,255 },
|
||||
{ 1, 7, 15, 15, 31, 31, 31, 31, 31, 31, 31, 30, 28, 28, 28, 28, 28, 28, 28, 30, 31, 31, 31, 31, 31, 31, 15, 15, 7, 1 }
|
||||
};
|
||||
|
||||
static const char PROGMEM layer7[4][30+1] = {
|
||||
{ 128,224,240,240,248,248,248,248,248,248, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,248,248,248,248,248,248,240,240,224,128 },
|
||||
{ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 31, 3, 0,128,248,255,255,255,255,255,255,255,255,255,255 },
|
||||
{ 255,255,255,255,255,255,255,255,255,255,255,255,127, 15, 1, 0,192,252,255,255,255,255,255,255,255,255,255,255,255,255 },
|
||||
{ 1, 7, 15, 15, 31, 31, 31, 31, 31, 31, 31, 31, 28, 28, 28, 28, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 15, 15, 7, 1 }
|
||||
};
|
||||
|
||||
static const char PROGMEM layer8[4][30+1] = {
|
||||
{ 128,224,240,240,248,248,248,248,248,248,248, 56, 24, 24, 24, 24, 24, 24, 24, 56,248,248,248,248,248,248,240,240,224,128 },
|
||||
{ 255,255,255,255,255,255,255,255,255,255,224,128, 0, 0, 31, 31, 31, 0, 0,128,224,255,255,255,255,255,255,255,255,255 },
|
||||
{ 255,255,255,255,255,255,255,255,255,255,129, 0, 0, 0,126,126,126, 0, 0, 0,129,255,255,255,255,255,255,255,255,255 },
|
||||
{ 1, 7, 15, 15, 31, 31, 31, 31, 31, 31, 31, 30, 28, 28, 28, 28, 28, 28, 28, 30, 31, 31, 31, 31, 31, 31, 15, 15, 7, 1 }
|
||||
};
|
||||
|
||||
oled_set_cursor(1, 0); // start pos
|
||||
oled_write_raw_P(layerImage[0], sizeof(layerImage[0]));
|
||||
oled_set_cursor(1, 1); // move to next line
|
||||
oled_write_raw_P(layerImage[1], sizeof(layerImage[1]));
|
||||
oled_set_cursor(1, 2); // move to next line
|
||||
oled_write_raw_P(layerImage[2], sizeof(layerImage[2]));
|
||||
oled_set_cursor(1, 3); // move to next line
|
||||
oled_write_raw_P(layerImage[3], sizeof(layerImage[3]));
|
||||
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case one :
|
||||
oled_set_cursor(16, 0); // move 20 columns out
|
||||
oled_write_raw_P(layer1[0], sizeof(layer1[0]));
|
||||
oled_set_cursor(16, 1); // move 20 columns out
|
||||
oled_write_raw_P(layer1[1], sizeof(layer1[1]));
|
||||
oled_set_cursor(16, 2); // move 20 columns out
|
||||
oled_write_raw_P(layer1[2], sizeof(layer1[2]));
|
||||
oled_set_cursor(16, 3); // move 20 columns out
|
||||
oled_write_raw_P(layer1[3], sizeof(layer1[3]));
|
||||
break;
|
||||
case two :
|
||||
oled_set_cursor(16, 0); // move 20 columns out
|
||||
oled_write_raw_P(layer2[0], sizeof(layer2[0]));
|
||||
oled_set_cursor(16, 1); // move 20 columns out
|
||||
oled_write_raw_P(layer2[1], sizeof(layer2[1]));
|
||||
oled_set_cursor(16, 2); // move 20 columns out
|
||||
oled_write_raw_P(layer2[2], sizeof(layer2[2]));
|
||||
oled_set_cursor(16, 3); // move 20 columns out
|
||||
oled_write_raw_P(layer2[3], sizeof(layer2[3]));
|
||||
break;
|
||||
case three :
|
||||
oled_set_cursor(16, 0); // move 20 columns out
|
||||
oled_write_raw_P(layer3[0], sizeof(layer3[0]));
|
||||
oled_set_cursor(16, 1); // move 20 columns out
|
||||
oled_write_raw_P(layer3[1], sizeof(layer3[1]));
|
||||
oled_set_cursor(16, 2); // move 20 columns out
|
||||
oled_write_raw_P(layer3[2], sizeof(layer3[2]));
|
||||
oled_set_cursor(16, 3); // move 20 columns out
|
||||
oled_write_raw_P(layer3[3], sizeof(layer3[3]));
|
||||
break;
|
||||
case four :
|
||||
oled_set_cursor(16, 0); // move 20 columns out
|
||||
oled_write_raw_P(layer4[0], sizeof(layer4[0]));
|
||||
oled_set_cursor(16, 1); // move 20 columns out
|
||||
oled_write_raw_P(layer4[1], sizeof(layer4[1]));
|
||||
oled_set_cursor(16, 2); // move 20 columns out
|
||||
oled_write_raw_P(layer4[2], sizeof(layer4[2]));
|
||||
oled_set_cursor(16, 3); // move 20 columns out
|
||||
oled_write_raw_P(layer4[3], sizeof(layer4[3]));
|
||||
break;
|
||||
case five :
|
||||
oled_set_cursor(16, 0); // move 20 columns out
|
||||
oled_write_raw_P(layer5[0], sizeof(layer5[0]));
|
||||
oled_set_cursor(16, 1); // move 20 columns out
|
||||
oled_write_raw_P(layer5[1], sizeof(layer5[1]));
|
||||
oled_set_cursor(16, 2); // move 20 columns out
|
||||
oled_write_raw_P(layer5[2], sizeof(layer5[2]));
|
||||
oled_set_cursor(16, 3); // move 20 columns out
|
||||
oled_write_raw_P(layer5[3], sizeof(layer5[3]));
|
||||
break;
|
||||
case six :
|
||||
oled_set_cursor(16, 0); // move 20 columns out
|
||||
oled_write_raw_P(layer6[0], sizeof(layer6[0]));
|
||||
oled_set_cursor(16, 1); // move 20 columns out
|
||||
oled_write_raw_P(layer6[1], sizeof(layer6[1]));
|
||||
oled_set_cursor(16, 2); // move 20 columns out
|
||||
oled_write_raw_P(layer6[2], sizeof(layer6[2]));
|
||||
oled_set_cursor(16, 3); // move 20 columns out
|
||||
oled_write_raw_P(layer6[3], sizeof(layer6[3]));
|
||||
break;
|
||||
case seven :
|
||||
oled_set_cursor(16, 0); // move 20 columns out
|
||||
oled_write_raw_P(layer7[0], sizeof(layer7[0]));
|
||||
oled_set_cursor(16, 1); // move 20 columns out
|
||||
oled_write_raw_P(layer7[1], sizeof(layer7[1]));
|
||||
oled_set_cursor(16, 2); // move 20 columns out
|
||||
oled_write_raw_P(layer7[2], sizeof(layer7[2]));
|
||||
oled_set_cursor(16, 3); // move 20 columns out
|
||||
oled_write_raw_P(layer7[3], sizeof(layer7[3]));
|
||||
break;
|
||||
case eight :
|
||||
oled_set_cursor(16, 0); // move 20 columns out
|
||||
oled_write_raw_P(layer8[0], sizeof(layer8[0]));
|
||||
oled_set_cursor(16, 1); // move 20 columns out
|
||||
oled_write_raw_P(layer8[1], sizeof(layer8[1]));
|
||||
oled_set_cursor(16, 2); // move 20 columns out
|
||||
oled_write_raw_P(layer8[2], sizeof(layer8[2]));
|
||||
oled_set_cursor(16, 3); // move 20 columns out
|
||||
oled_write_raw_P(layer8[3], sizeof(layer8[3]));
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
27
keyboards/macroflow_original/readme.md
Normal file
27
keyboards/macroflow_original/readme.md
Normal file
|
@ -0,0 +1,27 @@
|
|||
# macroflow_original
|
||||
|
||||
![Imgur](https://i.imgur.com/hIytJTl.png)
|
||||
|
||||
*A 2x4 macropad with a built in encoder and OLED screen*
|
||||
|
||||
* Keyboard Maintainer: [Patrickemm](https://github.com/Patrickemm)
|
||||
* Hardware Supported: *Pro Micro compatible development board*
|
||||
* Hardware Availability: *https://www.ebay.com/usr/handycache*
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make macroflow_original:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make macroflow_original: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
|
24
keyboards/splitkb/aurora/corne/keymaps/chapoline/config.h
Normal file
24
keyboards/splitkb/aurora/corne/keymaps/chapoline/config.h
Normal file
|
@ -0,0 +1,24 @@
|
|||
/* Copyright 2022 splitkb.com <support@splitkb.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
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
# define RGBLIGHT_EFFECT_BREATHING
|
||||
# define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
#endif
|
||||
|
||||
#define SPLIT_LAYER_STATE_ENABLE
|
206
keyboards/splitkb/aurora/corne/keymaps/chapoline/debug.py
Normal file
206
keyboards/splitkb/aurora/corne/keymaps/chapoline/debug.py
Normal file
|
@ -0,0 +1,206 @@
|
|||
from PIL import Image
|
||||
|
||||
# LIB
|
||||
WHITE = (255, 255, 255, 0)
|
||||
im = Image.new('RGB', (320, 1280))
|
||||
|
||||
class Cursor:
|
||||
def __init__(self):
|
||||
self.x = 0
|
||||
self.y = 0
|
||||
|
||||
def move_cursor(self):
|
||||
if self.x < 31:
|
||||
self.x += 1
|
||||
else:
|
||||
self.x = 0
|
||||
self.y += 8
|
||||
|
||||
def set_cursor(self, x, y):
|
||||
if y%8 != 0:
|
||||
return
|
||||
self.x = x
|
||||
self.y = y
|
||||
|
||||
|
||||
def print_pixel(x, y):
|
||||
im.paste(Image.new('RGB', (10, 10), WHITE), (x*10, y*10))
|
||||
|
||||
|
||||
def print_byte(byte, cursor):
|
||||
str = format(byte, '08b')
|
||||
for i in range(8):
|
||||
if str[i] == '1':
|
||||
print_pixel(cursor.x, cursor.y + (7-i))
|
||||
cursor.move_cursor()
|
||||
|
||||
cursor = Cursor()
|
||||
|
||||
|
||||
|
||||
# Program
|
||||
art = [
|
||||
0xff, 0x80, 0x80, 0xb0, 0xf8, 0xc4, 0x9b, 0xa4, 0xc8, 0xb0, 0x80, 0x9c, 0xbe, 0xe1, 0xcc, 0x9e,
|
||||
0xbf, 0xf0, 0xc1, 0xa2, 0x9c, 0x80, 0xb0, 0xf8, 0xc4, 0x9b, 0xa4, 0xc8, 0xb0, 0x80, 0x80, 0xff,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x05, 0x05, 0x7d, 0x05, 0x05, 0x01, 0x7d, 0x55, 0x55, 0x45, 0x01, 0x05, 0x05, 0x7d, 0x05, 0x05,
|
||||
0x01, 0x7d, 0x15, 0x35, 0x49, 0x01, 0x45, 0x45, 0x7d, 0x45, 0x45, 0x01, 0x49, 0x55, 0x55, 0x25]
|
||||
|
||||
I = [[1],
|
||||
[1],
|
||||
[1],
|
||||
[1]]
|
||||
|
||||
S = [[1, 0],
|
||||
[1, 1],
|
||||
[0, 1]]
|
||||
|
||||
Z = [[0, 1],
|
||||
[1, 1],
|
||||
[1, 0]]
|
||||
|
||||
T = [[0, 1],
|
||||
[1, 1],
|
||||
[0, 1]]
|
||||
|
||||
L = [[1, 0],
|
||||
[1, 0],
|
||||
[1, 1]]
|
||||
|
||||
J = [[1, 1],
|
||||
[1, 0],
|
||||
[1, 0]]
|
||||
|
||||
O = [[1, 1],
|
||||
[1, 1]]
|
||||
|
||||
SQUARE = [ 0xf, 0x9, 0x9, 0xf ]
|
||||
|
||||
class Screen:
|
||||
def __init__(self):
|
||||
# There is 2 sets of coordinates
|
||||
# Row and Col : position on the 7x28 grid, starting from the bottom left corner
|
||||
# X and Y : position on the 32x128 screen, starting from the bottom left corner
|
||||
# Row to X : X = 2 + (4 * Row)
|
||||
# Col to Y : Y = 8 + (4 * Col)
|
||||
#
|
||||
# Then, (X, Y) must be converted to a (i, j) position in the byte array, and things start
|
||||
# to get messier. The pixel is defined by the j bit in the i octet.
|
||||
# j = Y % 8 easy
|
||||
# i = X + (120 - (Y//8) * 8) * 4
|
||||
|
||||
self.grid = [[0 for i in range(7)] for j in range(28)]
|
||||
self.screen = art.copy()
|
||||
|
||||
def grid2screen(self, row, col):
|
||||
# Return the x, y coordinates of the bottom left pixel of a square
|
||||
return 2 + 4*row, 8 + 4*col
|
||||
|
||||
def put4bits_to_screen(self, bits, x, y):
|
||||
if y % 8 == 0:
|
||||
bits <<= 4
|
||||
print(x + (120 - (y//8) * 8) * 4)
|
||||
self.screen[x + (120 - (y//8) * 8) * 4] |= bits
|
||||
|
||||
def put_square_to_screen(self, row, col):
|
||||
x, y = self.grid2screen(row, col)
|
||||
square = SQUARE.copy()
|
||||
for i in range(len(SQUARE)):
|
||||
self.put4bits_to_screen(square[i], x+i, y)
|
||||
|
||||
def put_grid_to_screen(self):
|
||||
for i in range(7):
|
||||
for j in range(28):
|
||||
if self.grid[j][i]:
|
||||
self.put_square_to_screen(i, j)
|
||||
|
||||
def put_square_to_grid(self, row, col):
|
||||
self.grid[col][row] = 1
|
||||
|
||||
def print(self):
|
||||
self.put_grid_to_screen()
|
||||
cursor = Cursor()
|
||||
for i in self.screen:
|
||||
print_byte(i, cursor)
|
||||
|
||||
# def print_square(position):
|
||||
# x, y = grid2screen(*position)
|
||||
# square = SQUARE.copy()
|
||||
# if y%8 == 0:
|
||||
# square = [i << 4 for i in square]
|
||||
|
||||
# for i in range(len(square)):
|
||||
# screen[x+4*y-32*i] |= square[i]
|
||||
# print(x, y-i, screen[x+4*y-32*i])
|
||||
|
||||
# def print_tetra(position, tetra):
|
||||
# # if position[1]%4 != 0:
|
||||
# # return
|
||||
|
||||
# # if position[1]%8 == 0:
|
||||
# # lower = True
|
||||
# # cursor.set_cursor(*position)
|
||||
# # else:
|
||||
# # lower = False
|
||||
# # cursor.set_cursor(position[0], position[1] + 4)
|
||||
|
||||
# for i in range(len(tetra)-1, -1, -1):
|
||||
# for j in range(len(tetra[i])):
|
||||
# if tetra[i][j]:
|
||||
# print_square((position[0]+j, position[1]+i))
|
||||
# # else:
|
||||
# # cursor.set_cursor(cursor.x+4, cursor.y)
|
||||
|
||||
# # if lower:
|
||||
# # lower = False
|
||||
# # cursor.set_cursor(position[0], cursor.y)
|
||||
# # else:
|
||||
# # lower = True
|
||||
# # cursor.set_cursor(position[0], cursor.y-8)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# print_tetra((2, 6), J)
|
||||
# print_tetra((3, 8), O)
|
||||
# print_tetra((5, 12), S)
|
||||
|
||||
screen = Screen()
|
||||
|
||||
screen.put_square_to_grid(2, 8)
|
||||
screen.print()
|
||||
# print_square(cursor, (0, 4), True, RIGHT)
|
||||
# print_square(cursor, (4, 4), True, UP | LEFT)
|
||||
# print_square(cursor, (4, 4), False, DOWN | RIGHT)
|
||||
# print_square(cursor, (8, 4), False, LEFT)
|
||||
|
||||
|
||||
im.save('test.png')
|
417
keyboards/splitkb/aurora/corne/keymaps/chapoline/keymap.c
Normal file
417
keyboards/splitkb/aurora/corne/keymaps/chapoline/keymap.c
Normal file
|
@ -0,0 +1,417 @@
|
|||
/* Copyright 2022 splitkb.com <support@splitkb.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
|
||||
|
||||
#include "gpio.h"
|
||||
#include "tetris.h"
|
||||
#include "print.h"
|
||||
#include <stdlib.h>
|
||||
#include <timer.h>
|
||||
|
||||
enum layers {
|
||||
_DEFAULT,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
// I like it short
|
||||
const uint16_t XXXX = XXXXXXX;
|
||||
const uint16_t ____ = _______;
|
||||
|
||||
enum my_keycodes {
|
||||
TRS_LEFT = SAFE_RANGE,
|
||||
TRS_RIGHT,
|
||||
TRS_UP,
|
||||
TRS_DOWN,
|
||||
};
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_DEFAULT] = LAYOUT_split_3x6_3(
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ESC,
|
||||
KC_LGUI, MO(2), KC_SPC, KC_ENT, MO(1), KC_RALT
|
||||
),
|
||||
[_LOWER] = LAYOUT_split_3x6_3(
|
||||
KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_LSFT, XXXX, XXXX, XXXX, XXXX, XXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, XXXX, XXXX,
|
||||
KC_LCTL, XXXX, XXXX, XXXX, XXXX, XXXX, MO(3), XXXX, XXXX, XXXX, XXXX, XXXX,
|
||||
KC_LGUI, MO(3), KC_SPC, KC_ENT, ____, KC_RALT
|
||||
),
|
||||
[_RAISE] = LAYOUT_split_3x6_3(
|
||||
KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
|
||||
KC_LSFT, XXXX, XXXX, XXXX, XXXX, XXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV,
|
||||
KC_LCTL, XXXX, XXXX, XXXX, XXXX, MO(3), KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD,
|
||||
KC_LGUI, ____, KC_SPC, KC_ENT, MO(3), KC_RALT
|
||||
),
|
||||
[_ADJUST] = LAYOUT_split_3x6_3(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||
UG_TOGG, RM_HUEU, RM_SATU, RM_VALU, XXXX, QK_BOOT, QK_BOOT, XXXX, XXXX, TRS_UP, XXXX, XXXX,
|
||||
RM_NEXT, RM_HUED, RM_SATD, RM_VALD, XXXX, XXXX, XXXX, XXXX, TRS_LEFT, TRS_DOWN, TRS_RIGHT, QK_LLCK,
|
||||
KC_LGUI, ____, KC_SPC, KC_ENT, ____, KC_RALT
|
||||
)
|
||||
};
|
||||
|
||||
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
void keyboard_post_init_user(void) {
|
||||
rgblight_enable_noeeprom(); // enables RGB, without saving settings
|
||||
rgblight_sethsv_noeeprom(HSV_RED); // sets the color to red without saving
|
||||
rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_MOOD + 2); // sets mode to Fast breathing without saving
|
||||
|
||||
// Shut down controller-mounter LED
|
||||
gpio_set_pin_output(24);
|
||||
gpio_write_pin_high(24);
|
||||
|
||||
debug_enable=true;
|
||||
// debug_matrix=true;
|
||||
debug_keyboard=true;
|
||||
//debug_mouse=true;
|
||||
srand(timer_read());
|
||||
place_tetramino(&tetr_list[rand() % 7]);
|
||||
frame_timer = timer_read32();
|
||||
}
|
||||
#endif
|
||||
|
||||
void oled_render_boot(bool bootloader) {
|
||||
oled_clear();
|
||||
if (bootloader) {
|
||||
oled_write_P(PSTR("Good bye! Bootloader mode... UwU"), false);
|
||||
}
|
||||
oled_render_dirty(true);
|
||||
rgblight_disable_noeeprom();
|
||||
}
|
||||
|
||||
bool shutdown_user(bool jump_to_bootloader) {
|
||||
oled_render_boot(jump_to_bootloader);
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case TRS_LEFT:
|
||||
if (record->event.pressed && !is_game_over) {
|
||||
if (!is_position_collision(falling_tetra.tetra,
|
||||
falling_tetra.orientation,
|
||||
(GridCoord) {falling_tetra.coord.row-1, falling_tetra.coord.col}))
|
||||
falling_tetra.coord.row -= 1;
|
||||
}
|
||||
return false;
|
||||
case TRS_RIGHT:
|
||||
if (record->event.pressed && !is_game_over) {
|
||||
if (!is_position_collision(falling_tetra.tetra,
|
||||
falling_tetra.orientation,
|
||||
(GridCoord) {falling_tetra.coord.row+1, falling_tetra.coord.col}))
|
||||
falling_tetra.coord.row += 1;
|
||||
}
|
||||
return false;
|
||||
case TRS_UP:
|
||||
if (record->event.pressed && !is_game_over) {
|
||||
if (!is_position_collision(falling_tetra.tetra,
|
||||
(falling_tetra.orientation + 1)%4,
|
||||
(GridCoord) {falling_tetra.coord.row, falling_tetra.coord.col}))
|
||||
falling_tetra.orientation = (falling_tetra.orientation + 1) % 4;
|
||||
}
|
||||
return false;
|
||||
case TRS_DOWN:
|
||||
if (record->event.pressed && !is_game_over) {
|
||||
while (!is_position_collision(falling_tetra.tetra,
|
||||
falling_tetra.orientation,
|
||||
(GridCoord) {falling_tetra.coord.row, falling_tetra.coord.col-1}))
|
||||
falling_tetra.coord.col -= 1;
|
||||
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return true; // Process all other keycodes normally
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
static void render_space(void) {
|
||||
oled_write_P(PSTR(" "), false);
|
||||
}
|
||||
|
||||
static void render_mod_status_gui_alt(uint8_t modifiers) {
|
||||
static const char PROGMEM gui_off_1[] = {0x85, 0x86, 0};
|
||||
static const char PROGMEM gui_off_2[] = {0xa5, 0xa6, 0};
|
||||
static const char PROGMEM gui_on_1[] = {0x8d, 0x8e, 0};
|
||||
static const char PROGMEM gui_on_2[] = {0xad, 0xae, 0};
|
||||
|
||||
static const char PROGMEM alt_off_1[] = {0x87, 0x88, 0};
|
||||
static const char PROGMEM alt_off_2[] = {0xa7, 0xa8, 0};
|
||||
static const char PROGMEM alt_on_1[] = {0x8f, 0x90, 0};
|
||||
static const char PROGMEM alt_on_2[] = {0xaf, 0xb0, 0};
|
||||
|
||||
// fillers between the modifier icons bleed into the icon frames
|
||||
static const char PROGMEM off_off_1[] = {0xc5, 0};
|
||||
static const char PROGMEM off_off_2[] = {0xc6, 0};
|
||||
static const char PROGMEM on_off_1[] = {0xc7, 0};
|
||||
static const char PROGMEM on_off_2[] = {0xc8, 0};
|
||||
static const char PROGMEM off_on_1[] = {0xc9, 0};
|
||||
static const char PROGMEM off_on_2[] = {0xca, 0};
|
||||
static const char PROGMEM on_on_1[] = {0xcb, 0};
|
||||
static const char PROGMEM on_on_2[] = {0xcc, 0};
|
||||
|
||||
if(modifiers & MOD_MASK_GUI) {
|
||||
oled_write_P(gui_on_1, false);
|
||||
} else {
|
||||
oled_write_P(gui_off_1, false);
|
||||
}
|
||||
|
||||
if ((modifiers & MOD_MASK_GUI) && (modifiers & MOD_MASK_ALT)) {
|
||||
oled_write_P(on_on_1, false);
|
||||
} else if(modifiers & MOD_MASK_GUI) {
|
||||
oled_write_P(on_off_1, false);
|
||||
} else if(modifiers & MOD_MASK_ALT) {
|
||||
oled_write_P(off_on_1, false);
|
||||
} else {
|
||||
oled_write_P(off_off_1, false);
|
||||
}
|
||||
|
||||
if(modifiers & MOD_MASK_ALT) {
|
||||
oled_write_P(alt_on_1, false);
|
||||
} else {
|
||||
oled_write_P(alt_off_1, false);
|
||||
}
|
||||
|
||||
if(modifiers & MOD_MASK_GUI) {
|
||||
oled_write_P(gui_on_2, false);
|
||||
} else {
|
||||
oled_write_P(gui_off_2, false);
|
||||
}
|
||||
|
||||
if ((modifiers & MOD_MASK_GUI) && (modifiers & MOD_MASK_ALT)) {
|
||||
oled_write_P(on_on_2, false);
|
||||
} else if(modifiers & MOD_MASK_GUI) {
|
||||
oled_write_P(on_off_2, false);
|
||||
} else if(modifiers & MOD_MASK_ALT) {
|
||||
oled_write_P(off_on_2, false);
|
||||
} else {
|
||||
oled_write_P(off_off_2, false);
|
||||
}
|
||||
|
||||
if(modifiers & MOD_MASK_ALT) {
|
||||
oled_write_P(alt_on_2, false);
|
||||
} else {
|
||||
oled_write_P(alt_off_2, false);
|
||||
}
|
||||
}
|
||||
|
||||
static void render_mod_status_ctrl_shift(uint8_t modifiers) {
|
||||
static const char PROGMEM ctrl_off_1[] = {0x89, 0x8a, 0};
|
||||
static const char PROGMEM ctrl_off_2[] = {0xa9, 0xaa, 0};
|
||||
static const char PROGMEM ctrl_on_1[] = {0x91, 0x92, 0};
|
||||
static const char PROGMEM ctrl_on_2[] = {0xb1, 0xb2, 0};
|
||||
|
||||
static const char PROGMEM shift_off_1[] = {0x8b, 0x8c, 0};
|
||||
static const char PROGMEM shift_off_2[] = {0xab, 0xac, 0};
|
||||
static const char PROGMEM shift_on_1[] = {0xcd, 0xce, 0};
|
||||
static const char PROGMEM shift_on_2[] = {0xcf, 0xd0, 0};
|
||||
|
||||
// fillers between the modifier icons bleed into the icon frames
|
||||
static const char PROGMEM off_off_1[] = {0xc5, 0};
|
||||
static const char PROGMEM off_off_2[] = {0xc6, 0};
|
||||
static const char PROGMEM on_off_1[] = {0xc7, 0};
|
||||
static const char PROGMEM on_off_2[] = {0xc8, 0};
|
||||
static const char PROGMEM off_on_1[] = {0xc9, 0};
|
||||
static const char PROGMEM off_on_2[] = {0xca, 0};
|
||||
static const char PROGMEM on_on_1[] = {0xcb, 0};
|
||||
static const char PROGMEM on_on_2[] = {0xcc, 0};
|
||||
|
||||
if(modifiers & MOD_MASK_CTRL) {
|
||||
oled_write_P(ctrl_on_1, false);
|
||||
} else {
|
||||
oled_write_P(ctrl_off_1, false);
|
||||
}
|
||||
|
||||
if ((modifiers & MOD_MASK_CTRL) && (modifiers & MOD_MASK_SHIFT)) {
|
||||
oled_write_P(on_on_1, false);
|
||||
} else if(modifiers & MOD_MASK_CTRL) {
|
||||
oled_write_P(on_off_1, false);
|
||||
} else if(modifiers & MOD_MASK_SHIFT) {
|
||||
oled_write_P(off_on_1, false);
|
||||
} else {
|
||||
oled_write_P(off_off_1, false);
|
||||
}
|
||||
|
||||
if(modifiers & MOD_MASK_SHIFT) {
|
||||
oled_write_P(shift_on_1, false);
|
||||
} else {
|
||||
oled_write_P(shift_off_1, false);
|
||||
}
|
||||
|
||||
if(modifiers & MOD_MASK_CTRL) {
|
||||
oled_write_P(ctrl_on_2, false);
|
||||
} else {
|
||||
oled_write_P(ctrl_off_2, false);
|
||||
}
|
||||
|
||||
if ((modifiers & MOD_MASK_CTRL) && (modifiers & MOD_MASK_SHIFT)) {
|
||||
oled_write_P(on_on_2, false);
|
||||
} else if(modifiers & MOD_MASK_CTRL) {
|
||||
oled_write_P(on_off_2, false);
|
||||
} else if(modifiers & MOD_MASK_SHIFT) {
|
||||
oled_write_P(off_on_2, false);
|
||||
} else {
|
||||
oled_write_P(off_off_2, false);
|
||||
}
|
||||
|
||||
if(modifiers & MOD_MASK_SHIFT) {
|
||||
oled_write_P(shift_on_2, false);
|
||||
} else {
|
||||
oled_write_P(shift_off_2, false);
|
||||
}
|
||||
}
|
||||
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM aurora_logo[] = {
|
||||
0x00, 0x00, 0x00, 0xe0, 0x00, 0xf8, 0xc0, 0xf8, 0xe0, 0xc0, 0xfc, 0x00, 0x7e, 0x18, 0x00, 0x80,
|
||||
0x00, 0x02, 0x80, 0xf0, 0x00, 0xc0, 0x80, 0xf8, 0xc0, 0xe0, 0x70, 0x60, 0x3c, 0x38, 0x3c, 0x1c,
|
||||
0x00, 0x3f, 0x0c, 0x0f, 0x1f, 0x03, 0x07, 0x01, 0xc3, 0x00, 0xe0, 0x80, 0x00, 0xe0, 0x80, 0xf8,
|
||||
0x80, 0xc0, 0xf7, 0xc7, 0x6f, 0x7b, 0x39, 0x30, 0x00, 0x80, 0x00, 0xc0, 0x00, 0xc0, 0xc2, 0xe0,
|
||||
0x00, 0x40, 0x38, 0x30, 0x38, 0x1e, 0x18, 0x1e, 0x0f, 0x0c, 0x07, 0x07, 0x07, 0x03, 0x03, 0x21,
|
||||
0x21, 0x31, 0x30, 0x18, 0x18, 0x1c, 0x08, 0x0c, 0x0e, 0x07, 0x06, 0x07, 0x03, 0xc3, 0x03, 0x01,
|
||||
0x4c, 0xcc, 0xc2, 0xc2, 0x41, 0x49, 0x09, 0x2b, 0x2a, 0x6a, 0x6e, 0x24, 0x24, 0x04, 0x92, 0x92,
|
||||
0xb1, 0xf1, 0xf1, 0xf2, 0xe6, 0xa4, 0xa4, 0x04, 0x04, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28
|
||||
};
|
||||
oled_write_raw_P(aurora_logo, sizeof(aurora_logo));
|
||||
oled_set_cursor(0, 4);
|
||||
}
|
||||
|
||||
static void render_logo_text(void) {
|
||||
oled_write_P(PSTR("corne"), false);
|
||||
}
|
||||
|
||||
static void render_kb_LED_state(void) {
|
||||
// Host Keyboard LED Status
|
||||
led_t led_usb_state = host_keyboard_led_state();
|
||||
oled_write_P(led_usb_state.num_lock ? PSTR("N ") : PSTR(" "), false);
|
||||
oled_write_P(led_usb_state.caps_lock ? PSTR("C ") : PSTR(" "), false);
|
||||
oled_write_P(led_usb_state.scroll_lock ? PSTR("S ") : PSTR(" "), false);
|
||||
}
|
||||
|
||||
static void render_layer_state(void) {
|
||||
static const char PROGMEM default_layer[] = {
|
||||
0x20, 0x94, 0x95, 0x96, 0x20,
|
||||
0x20, 0xb4, 0xb5, 0xb6, 0x20,
|
||||
0x20, 0xd4, 0xd5, 0xd6, 0x20, 0};
|
||||
static const char PROGMEM raise_layer[] = {
|
||||
0x20, 0x97, 0x98, 0x99, 0x20,
|
||||
0x20, 0xb7, 0xb8, 0xb9, 0x20,
|
||||
0x20, 0xd7, 0xd8, 0xd9, 0x20, 0};
|
||||
static const char PROGMEM lower_layer[] = {
|
||||
0x20, 0x9a, 0x9b, 0x9c, 0x20,
|
||||
0x20, 0xba, 0xbb, 0xbc, 0x20,
|
||||
0x20, 0xda, 0xdb, 0xdc, 0x20, 0};
|
||||
static const char PROGMEM adjust_layer[] = {
|
||||
0x20, 0x9d, 0x9e, 0x9f, 0x20,
|
||||
0x20, 0xbd, 0xbe, 0xbf, 0x20,
|
||||
0x20, 0xdd, 0xde, 0xdf, 0x20, 0};
|
||||
|
||||
switch (get_highest_layer(layer_state | default_layer_state)) {
|
||||
case _LOWER:
|
||||
oled_write_P(lower_layer, false);
|
||||
break;
|
||||
case _RAISE:
|
||||
oled_write_P(raise_layer, false);
|
||||
break;
|
||||
case _ADJUST:
|
||||
oled_write_P(adjust_layer, false);
|
||||
break;
|
||||
default:
|
||||
oled_write_P(default_layer, false);
|
||||
}
|
||||
}
|
||||
|
||||
static void render_art(void) {
|
||||
static const char PROGMEM aurora_art[] = {
|
||||
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x08, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40,
|
||||
0xe0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x80,
|
||||
0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x80, 0x00, 0xf0, 0x00, 0x00, 0xc0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
|
||||
0x81, 0x00, 0xc0, 0x00, 0xfe, 0x00, 0xfc, 0x00, 0xff, 0x20, 0xff, 0xf0, 0x0f, 0xf0, 0x00, 0xff,
|
||||
0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0xf8, 0x00, 0x00, 0xf8,
|
||||
0xff, 0x10, 0xff, 0x84, 0xff, 0x60, 0xff, 0x36, 0xff, 0x0f, 0xff, 0x3f, 0x00, 0x5f, 0x00, 0x05,
|
||||
0x80, 0x00, 0x80, 0x00, 0xc0, 0x38, 0x00, 0xec, 0xf0, 0x00, 0xfb, 0x80, 0xff, 0xf0, 0xff, 0xef,
|
||||
0xff, 0xe8, 0xff, 0x03, 0xff, 0x0c, 0xff, 0x00, 0xff, 0x00, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x80,
|
||||
0xff, 0x20, 0xff, 0xd0, 0xff, 0xe0, 0xfe, 0xf8, 0xff, 0xfc, 0xff, 0xff, 0x0f, 0xff, 0x01, 0x3f,
|
||||
0xff, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x03, 0x00, 0xfe, 0x80, 0xfe, 0x00, 0xc0, 0xff, 0xc4, 0xfb,
|
||||
0xff, 0xfe, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0x07, 0xff, 0x03, 0x3f, 0x00, 0x0f, 0xc0, 0x00,
|
||||
0x00, 0x00, 0xb8, 0x00, 0xff, 0x40, 0xbe, 0xf0, 0xff, 0xf1, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff,
|
||||
0x1f, 0xff, 0x67, 0x00, 0xef, 0x00, 0x1f, 0x00, 0x00, 0x07, 0x00, 0x00, 0xe0, 0x00, 0xff, 0xf0,
|
||||
0xff, 0x88, 0xff, 0xc4, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0x7f, 0x0f, 0xff,
|
||||
0x00, 0x07, 0xfe, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xc0, 0x3f, 0xf8, 0xe7, 0xff,
|
||||
0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0x1f, 0x3f, 0x01, 0xff, 0x0b, 0x00, 0xff, 0x00, 0x00, 0x05,
|
||||
0x00, 0x00, 0x00, 0xe0, 0x00, 0xf8, 0x60, 0x80, 0xfe, 0xe3, 0xfc, 0xff, 0x1e, 0xff, 0xff, 0x23,
|
||||
0xff, 0x09, 0xff, 0x20, 0x00, 0x3f, 0x02, 0x00, 0x00, 0x0f, 0x00, 0x40, 0x00, 0xc0, 0x00, 0xfc,
|
||||
0xe0, 0xfc, 0xf0, 0xff, 0xff, 0x7f, 0xfc, 0xff, 0x0f, 0xff, 0x07, 0x1f, 0x00, 0x01, 0x0f, 0x00,
|
||||
0x0f, 0x00, 0x81, 0x70, 0x0c, 0xf0, 0x80, 0x00, 0x00, 0xe4, 0xf8, 0xe6, 0x70, 0x3f, 0xcf, 0xff,
|
||||
0x1f, 0xff, 0x48, 0xff, 0x0f, 0x00, 0x07, 0x00, 0x00, 0x43, 0x60, 0xf8, 0xf0, 0xfe, 0x38, 0xfe,
|
||||
0x00, 0xfc, 0x03, 0x00, 0xc8, 0x72, 0xcf, 0xfc, 0x00, 0x03, 0x0f, 0x01, 0xe0, 0x1c, 0xe0, 0x03,
|
||||
0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x06, 0xf9, 0x00, 0x03, 0x00, 0x07,
|
||||
0xff, 0x00, 0x10, 0x12, 0xc9, 0xf0, 0xcf, 0xb4, 0x7f, 0x80, 0xe0, 0x1e, 0x01, 0x40, 0x65, 0x5e,
|
||||
0xe0, 0x00, 0x00, 0xf0, 0x0c, 0xf0, 0x00, 0x80, 0x7e, 0x01, 0x80, 0x93, 0xfc, 0xc0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x89, 0x18, 0x2c, 0x46, 0x00, 0x07, 0x21, 0x10, 0x10, 0x80, 0x09, 0x13,
|
||||
0x31, 0xbf, 0xff, 0x00, 0x08, 0x1a, 0xf7, 0x0f, 0x00, 0x00, 0x44, 0x45, 0x34, 0xbf, 0xb8, 0x00,
|
||||
0x10, 0xf0, 0x08, 0xf4, 0x18, 0x11, 0xfc, 0x18, 0xfb, 0x0e, 0x10, 0xf8, 0x04, 0xf8, 0x10, 0x20,
|
||||
0x18, 0x09, 0xff, 0x0c, 0xea, 0x1f, 0x28, 0x60, 0x30, 0xf8, 0x20, 0xc0, 0x42, 0x33, 0x21, 0x00
|
||||
};
|
||||
// clang-format on
|
||||
oled_write_raw_P(aurora_art, sizeof(aurora_art));
|
||||
}
|
||||
|
||||
bool oled_task_user(void) {
|
||||
// A 128x32 OLED rotated 90 degrees is 5 characters wide and 16 characters tall
|
||||
// This example string should fill that neatly
|
||||
// const char *text = PSTR(" Waf");
|
||||
// const char *text2 = PSTR(" Woof");
|
||||
|
||||
if (!is_keyboard_master()) {
|
||||
render_logo();
|
||||
render_logo_text();
|
||||
render_space();
|
||||
render_layer_state();
|
||||
render_space();
|
||||
render_mod_status_gui_alt(get_mods()|get_oneshot_mods());
|
||||
render_mod_status_ctrl_shift(get_mods()|get_oneshot_mods());
|
||||
render_kb_LED_state();
|
||||
} else {
|
||||
// render_layer_state();
|
||||
// return false;
|
||||
switch (get_highest_layer(layer_state | default_layer_state)) {
|
||||
case _LOWER:
|
||||
oled_write_P(PSTR("Waf"), false);
|
||||
break;
|
||||
case _RAISE:
|
||||
oled_write_P(PSTR("Woof"), false);
|
||||
break;
|
||||
case _ADJUST:
|
||||
render_tetris();
|
||||
break;
|
||||
default:
|
||||
render_art();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
88
keyboards/splitkb/aurora/corne/keymaps/chapoline/readme.md
Normal file
88
keyboards/splitkb/aurora/corne/keymaps/chapoline/readme.md
Normal file
|
@ -0,0 +1,88 @@
|
|||
# Aurora Corne's Default Keymap
|
||||
_This keymap is a copy of the [Corne default keymap](https://github.com/qmk/qmk_firmware/tree/master/keyboards/crkbd/keymaps/default), with modified OLED code._
|
||||
|
||||
A simple default keymap for the Aurora Corne
|
||||
============================================
|
||||
|
||||
Keymaps in general are quite personal, so it is difficult to come up with a default that will suit every user. We hope this keymap serves as a good starting point for your own - although it should be fairly usable out-of-the-box.
|
||||
|
||||
What do all these layers do?
|
||||
----------------------------
|
||||
|
||||
### Layer 0: Base layer
|
||||
|
||||
![Layer 0](https://i.imgur.com/Ri5cTHqh.png)
|
||||
|
||||
This is where your basic letters live.
|
||||
|
||||
The homing thumb fingers are used to access the different layers.
|
||||
|
||||
* The homing left thumb finger gives access to the Numbers (or lower) layer
|
||||
* The homing right thumb finger gives access to the Symbols (or raise) layer
|
||||
* Pressing both homing thumb fingers gives access to the Adjust layer
|
||||
|
||||
### Layer 1: Lower
|
||||
|
||||
![Layer 1](https://i.imgur.com/9h6ZRQLh.png)
|
||||
|
||||
The Lower layer gives access to your number keys on the top row. It also exposes the arrow keys in the usual Vim-style layout.
|
||||
|
||||
### Layer 2: Raise
|
||||
|
||||
![Layer 2](https://i.imgur.com/U1pf7pJh.png)
|
||||
|
||||
The Raise layer gives access to the symbols. In addition to shifted number keys on the top row, the right hand also exposes the remaining symbol keys, both as shifted and non-shifted variants.
|
||||
|
||||
### Layer 3: Adjust
|
||||
|
||||
![Layer 3](https://i.imgur.com/A6z1DCbh.png)
|
||||
|
||||
The Adjust layer exposes RGB adjustment keys on the left hand.
|
||||
|
||||
Where is the keymap.c?
|
||||
----------------------
|
||||
|
||||
The keymap.c file is not published to the repository. It is generated from `keymap.json` by the build system.
|
||||
|
||||
This avoids duplicating information and allow users to edit their keymap from the QMK Configurator web interface.
|
||||
|
||||
How do I edit and update the keymap?
|
||||
------------------------------------
|
||||
|
||||
The `keymap.json` file is generated from the QMK Configurator interface and formatted for better readability in the context of the Ferris keyboard.
|
||||
|
||||
To edit it, you may:
|
||||
* Edit it directly from a text editor.
|
||||
* Edit it from the QMK Configurator.
|
||||
|
||||
If you decide to use the latter workflow, here are the steps to follow:
|
||||
|
||||
* From the [QMK Configurator](https://config.qmk.fm/#/splitkb/aurora/corne/rev1/LAYOUT_split_3x5_2), hit the "import QMK keymap json file" button (it has a drawing with an up arrow on it).
|
||||
* Browse to the location of your keymap (for example, `<your qmk repo>/keyboards/splitkb/aurora/corne/keymaps/default/keymap.json`)
|
||||
* Perform any modification to the keymap in the web UI
|
||||
* Export the keymap to your downloads folder, by hitting the "Export QMK keymap json file" button (it has a drawing with a down arrow on it)
|
||||
* Replace your original keymap with the one you just downloaded
|
||||
|
||||
_**Note:** At the time of writing (the 24th of October 2022), not every feature used in the default keymap is supported by the QMK Configurator. You cannot yet upload the default `keymap.json` due to a file format mismatch - use the "Load Default" button to load the default keymap instead. Additionally, custom configuration options are still being worked on: if your keymap depends on them, please compile your firmware offline for now._
|
||||
|
||||
I want to do more than the JSON format supports!
|
||||
-------------------------------------------------
|
||||
|
||||
While the `json` format is easy to use, it does lack certain functionality - most notably custom OLED or encoder behaviour.
|
||||
|
||||
To add this, you need to convert it to the `c` format. Do keep in mind that this is generally a one-way operation.
|
||||
|
||||
First, from the root of your qmk repo, move to your keymap folder
|
||||
|
||||
```bash
|
||||
cd ./keymaps/splitkb/aurora/corne/my_personal_keymap
|
||||
```
|
||||
|
||||
Next, convert your `keymap.json` to a `keymap.c`
|
||||
|
||||
```bash
|
||||
qmk json2c -o keymap.c keymap.json
|
||||
```
|
||||
|
||||
You can add custom C code to the newly generated `keymap.c` file. Do note that you have to use **either** a C file **or** a JSON file - you cannot do both!
|
||||
**If a JSON file is present, the C file is ignored.**
|
26
keyboards/splitkb/aurora/corne/keymaps/chapoline/rules.mk
Normal file
26
keyboards/splitkb/aurora/corne/keymaps/chapoline/rules.mk
Normal file
|
@ -0,0 +1,26 @@
|
|||
# Copyright 2022 splitkb.com <support@splitkb.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/>.
|
||||
|
||||
LAYER_LOCK_ENABLE = yes
|
||||
|
||||
RGB_MATRIX_ENABLE = no
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
ENCODER_ENABLE = no
|
||||
OLED_ENABLE = yes
|
||||
|
||||
CONSOLE_ENABLE = yes
|
||||
|
||||
SRC += tetris.c
|
422
keyboards/splitkb/aurora/corne/keymaps/chapoline/tetris.c
Normal file
422
keyboards/splitkb/aurora/corne/keymaps/chapoline/tetris.c
Normal file
|
@ -0,0 +1,422 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
#include "tetris.h"
|
||||
#include "print.h"
|
||||
#include <timer.h>
|
||||
|
||||
// #ifdef OLED_DRIVER_ENABLE
|
||||
#include "oled_driver.h"
|
||||
// #endif
|
||||
|
||||
#define IDLE_TIMEOUT_MS 200
|
||||
|
||||
static const char PROGMEM square[] = { 0xf, 0x9, 0x9, 0xf };
|
||||
|
||||
const Tetramino PROGMEM tetr_I = {
|
||||
{
|
||||
{
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 1, 1, 1, 1 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 0, 1, 0 },
|
||||
{ 0, 0, 1, 0 },
|
||||
{ 0, 0, 1, 0 },
|
||||
{ 0, 0, 1, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 1, 1, 1, 1 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, 1, 0, 0 },
|
||||
},
|
||||
},
|
||||
(GridCoord) { 2, 25 }
|
||||
};
|
||||
|
||||
const Tetramino PROGMEM tetr_J = {
|
||||
{
|
||||
{
|
||||
{ 1, 0, 0, 0 },
|
||||
{ 1, 1, 1, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 1, 1, 0 },
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 1, 1, 1, 0 },
|
||||
{ 0, 0, 1, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 1, 1, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
},
|
||||
(GridCoord) { 2, 24 }
|
||||
};
|
||||
|
||||
const Tetramino PROGMEM tetr_L = {
|
||||
{
|
||||
{
|
||||
{ 0, 0, 1, 0 },
|
||||
{ 1, 1, 1, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, 1, 1, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 1, 1, 1, 0 },
|
||||
{ 1, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 1, 1, 0, 0 },
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
},
|
||||
(GridCoord) { 2, 24 }
|
||||
};
|
||||
|
||||
const Tetramino PROGMEM tetr_0 = {
|
||||
{
|
||||
{
|
||||
{ 0, 1, 1, 0 },
|
||||
{ 0, 1, 1, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 1, 1, 0 },
|
||||
{ 0, 1, 1, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 1, 1, 0 },
|
||||
{ 0, 1, 1, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 1, 1, 0 },
|
||||
{ 0, 1, 1, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
},
|
||||
(GridCoord) { 2, 24 }
|
||||
};
|
||||
|
||||
const Tetramino PROGMEM tetr_S = {
|
||||
{
|
||||
{
|
||||
{ 0, 1, 1, 0 },
|
||||
{ 1, 1, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, 1, 1, 0 },
|
||||
{ 0, 0, 1, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 1, 1, 0 },
|
||||
{ 1, 1, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 1, 0, 0, 0 },
|
||||
{ 1, 1, 0, 0 },
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
},
|
||||
(GridCoord) { 2, 24 }
|
||||
};
|
||||
|
||||
const Tetramino PROGMEM tetr_T = {
|
||||
{
|
||||
{
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 1, 1, 1, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, 1, 1, 0 },
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 1, 1, 1, 0 },
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 1, 1, 0, 0 },
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
},
|
||||
(GridCoord) { 2, 24 }
|
||||
};
|
||||
|
||||
const Tetramino PROGMEM tetr_Z = {
|
||||
{
|
||||
{
|
||||
{ 1, 1, 0, 0 },
|
||||
{ 0, 1, 1, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 0, 1, 0 },
|
||||
{ 0, 1, 1, 0 },
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 1, 1, 0, 0 },
|
||||
{ 0, 1, 1, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
{
|
||||
{ 0, 1, 0, 0 },
|
||||
{ 1, 1, 0, 0 },
|
||||
{ 1, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
},
|
||||
},
|
||||
(GridCoord) { 2, 24 }
|
||||
};
|
||||
|
||||
const Tetramino PROGMEM tetr_list[] = { tetr_I, tetr_J, tetr_L, tetr_0, tetr_S, tetr_T, tetr_Z };
|
||||
|
||||
FallingTetramino falling_tetra = {
|
||||
&tetr_J,
|
||||
(GridCoord) { 2, 20 },
|
||||
0
|
||||
};
|
||||
|
||||
bool is_game_over = false;
|
||||
uint32_t frame_timer = 0;
|
||||
|
||||
void init_screen() {
|
||||
static const char PROGMEM tetris_art[] = {
|
||||
0xff, 0x80, 0x80, 0xb0, 0xf8, 0xc4, 0x9b, 0xa4, 0xc8, 0xb0, 0x80, 0x9c, 0xbe, 0xe1, 0xcc, 0x9e,
|
||||
0xbf, 0xf0, 0xc1, 0xa2, 0x9c, 0x80, 0xb0, 0xf8, 0xc4, 0x9b, 0xa4, 0xc8, 0xb0, 0x80, 0x80, 0xff,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
||||
0x05, 0x05, 0x7d, 0x05, 0x05, 0x01, 0x7d, 0x55, 0x55, 0x45, 0x01, 0x05, 0x05, 0x7d, 0x05, 0x05,
|
||||
0x01, 0x7d, 0x15, 0x35, 0x49, 0x01, 0x45, 0x45, 0x7d, 0x45, 0x45, 0x01, 0x49, 0x55, 0x55, 0x25
|
||||
};
|
||||
memcpy(screen, tetris_art, 512);
|
||||
}
|
||||
|
||||
void init_grid() {
|
||||
memset(grid, 0, sizeof(grid[0][0]) * 7 * 28);
|
||||
}
|
||||
|
||||
ScreenCoord grid2screen(GridCoord grid_coord) {
|
||||
ScreenCoord screen = {
|
||||
2 + 4 * (uint8_t) grid_coord.row,
|
||||
8 + 4 * (uint8_t) grid_coord.col
|
||||
};
|
||||
return screen;
|
||||
}
|
||||
|
||||
bool put4bits_to_screen(uint8_t bits, ScreenCoord screen_coord) {
|
||||
if (screen_coord.y % 4 != 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (screen_coord.y % 8 == 0) {
|
||||
bits <<= 4;
|
||||
}
|
||||
|
||||
screen[screen_coord.x + (120 - (screen_coord.y/8) * 8) * 4] |= bits;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool put_square_to_screen(GridCoord grid_coord) {
|
||||
ScreenCoord screen_coord = grid2screen(grid_coord);
|
||||
for (uint8_t i = 0; i < 4; i++) {
|
||||
put4bits_to_screen(square[i], (ScreenCoord) { screen_coord.x + i, screen_coord.y });
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool put_grid_to_screen() {
|
||||
for (uint8_t i = 0; i < 7; i++) {
|
||||
for (uint8_t j = 0; j < 28; j++) {
|
||||
if (grid[j][i]) {
|
||||
put_square_to_screen((GridCoord) { i, j });
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void put_square_to_grid(GridCoord grid_coord) {
|
||||
grid[grid_coord.col][grid_coord.row] = true;
|
||||
}
|
||||
|
||||
void place_tetramino(const Tetramino *tetra) {
|
||||
falling_tetra.tetra = tetra;
|
||||
falling_tetra.coord.row = tetra->initCoord.row;
|
||||
falling_tetra.coord.col = tetra->initCoord.col;
|
||||
falling_tetra.orientation = 0;
|
||||
if (is_position_collision(tetra, 0, tetra->initCoord))
|
||||
is_game_over = true;
|
||||
}
|
||||
|
||||
void show_tetra() {
|
||||
for (uint8_t i = 0; i < 4; i++) {
|
||||
for (uint8_t j = 0; j < 4; j++) {
|
||||
if (falling_tetra.tetra->sprite[falling_tetra.orientation][3-j][i]) {
|
||||
put_square_to_screen((GridCoord) { falling_tetra.coord.row+i, falling_tetra.coord.col+j });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool is_position_collision(const Tetramino *tetra, uint8_t orientation, GridCoord coord) {
|
||||
for (uint8_t i = 0; i < 4; i++) {
|
||||
for (uint8_t j = 0; j < 4; j++) {
|
||||
if (falling_tetra.tetra->sprite[orientation][3-j][i]) {
|
||||
// Vertical inclusion
|
||||
if (coord.col+j < 0 || coord.col+j > 28)
|
||||
return true;
|
||||
|
||||
// Horizontal inclusion
|
||||
if (coord.row+i < 0 || coord.row+i > 6)
|
||||
return true;
|
||||
|
||||
// collision
|
||||
if (grid[coord.col+j][coord.row+i])
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void stop_tetra() {
|
||||
for (uint8_t i = 0; i < 4; i++) {
|
||||
for (uint8_t j = 0; j < 4; j++) {
|
||||
if (falling_tetra.tetra->sprite[falling_tetra.orientation][3-j][i]) {
|
||||
put_square_to_grid((GridCoord) { falling_tetra.coord.row+i, falling_tetra.coord.col+j });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void remove_full_lines() {
|
||||
for (int8_t j = 27; j >=0; j--) {
|
||||
bool full = true;
|
||||
for (uint8_t i = 0; i < 7; i++) {
|
||||
if (!grid[j][i]) {
|
||||
full = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (full) {
|
||||
for (uint8_t k = (uint8_t) j; k < 27; k++) {
|
||||
memcpy(grid[k], grid[k+1], 7);
|
||||
memcpy(grid[27], (bool[]) { 0, 0, 0, 0, 0, 0, 0}, 7);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void game_over() {
|
||||
oled_set_cursor(0, 8);
|
||||
oled_write_P(PSTR("GAME OVER"), false);
|
||||
}
|
||||
|
||||
void tick_down(uint8_t space) {
|
||||
if (!is_position_collision(falling_tetra.tetra,
|
||||
falling_tetra.orientation,
|
||||
(GridCoord) {falling_tetra.coord.row, falling_tetra.coord.col-1}))
|
||||
falling_tetra.coord.col -= 1;
|
||||
else {
|
||||
stop_tetra();
|
||||
remove_full_lines();
|
||||
place_tetramino(&tetr_list[rand() % 7]);
|
||||
}
|
||||
}
|
||||
|
||||
void render_tetris() {
|
||||
oled_write_raw_P(screen, sizeof(screen));
|
||||
if (is_game_over) {
|
||||
game_over();
|
||||
return;
|
||||
}
|
||||
|
||||
init_screen();
|
||||
uint32_t frame_elapsed = timer_elapsed32(frame_timer);
|
||||
if (frame_elapsed > IDLE_TIMEOUT_MS) {
|
||||
tick_down(1);
|
||||
frame_timer = timer_read32();
|
||||
}
|
||||
// init_grid();
|
||||
show_tetra();
|
||||
put_grid_to_screen();
|
||||
}
|
60
keyboards/splitkb/aurora/corne/keymaps/chapoline/tetris.h
Normal file
60
keyboards/splitkb/aurora/corne/keymaps/chapoline/tetris.h
Normal file
|
@ -0,0 +1,60 @@
|
|||
#pragma once
|
||||
|
||||
char screen[512];
|
||||
bool grid[28][7];
|
||||
|
||||
typedef struct {
|
||||
uint8_t x;
|
||||
uint8_t y;
|
||||
} ScreenCoord;
|
||||
|
||||
typedef struct {
|
||||
int8_t row;
|
||||
int8_t col;
|
||||
} GridCoord;
|
||||
|
||||
typedef struct {
|
||||
uint8_t sprite[4][4][4];
|
||||
GridCoord initCoord;
|
||||
} Tetramino;
|
||||
|
||||
typedef struct {
|
||||
const Tetramino *tetra;
|
||||
GridCoord coord;
|
||||
uint8_t orientation;
|
||||
} FallingTetramino;
|
||||
|
||||
extern const Tetramino PROGMEM tetr_I;
|
||||
extern const Tetramino PROGMEM tetr_J;
|
||||
extern const Tetramino PROGMEM tetr_L;
|
||||
extern const Tetramino PROGMEM tetr_0;
|
||||
extern const Tetramino PROGMEM tetr_S;
|
||||
extern const Tetramino PROGMEM tetr_T;
|
||||
extern const Tetramino PROGMEM tetr_Z;
|
||||
extern const Tetramino PROGMEM tetr_list[];
|
||||
|
||||
extern FallingTetramino falling_tetra;
|
||||
|
||||
extern bool is_game_over;
|
||||
extern uint32_t frame_timer;
|
||||
|
||||
void init_screen(void);
|
||||
void init_grid(void);
|
||||
ScreenCoord grid2screen(GridCoord grid_coord);
|
||||
bool put4bits_to_screen(uint8_t bits, ScreenCoord screen_coord);
|
||||
bool put_square_to_screen(GridCoord grid_coord);
|
||||
bool put_grid_to_screen(void);
|
||||
void put_square_to_grid(GridCoord grid_coord);
|
||||
void place_tetramino(const Tetramino *tetra);
|
||||
void show_tetra(void);
|
||||
|
||||
bool is_position_collision(const Tetramino *tetra, uint8_t orientation, GridCoord coord);
|
||||
|
||||
void stop_tetra(void);
|
||||
void remove_full_lines(void);
|
||||
|
||||
void render_tetris(void);
|
||||
|
||||
void game_over(void);
|
||||
|
||||
void tick_down(uint8_t space);
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"author": "@suikagiken",
|
||||
"keyboard": "suikagiken/suika85ergo",
|
||||
"author": "suikagiken",
|
||||
"keyboard": "suikagiken/suika27melo",
|
||||
"keymap": "default",
|
||||
"layout": "LAYOUT",
|
||||
"layers": [
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"author": "@suikagiken",
|
||||
"keyboard": "suikagiken/suika85ergo",
|
||||
"author": "suikagiken",
|
||||
"keyboard": "suikagiken/suika27melo",
|
||||
"keymap": "midi",
|
||||
"layout": "LAYOUT",
|
||||
"layers": [
|
||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue