mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-17 13:12:08 +00:00
Merge 66e8a30f49
into 507c948ed8
This commit is contained in:
commit
3897f118d3
5
keyboards/hexboard/1_1/config.h
Normal file
5
keyboards/hexboard/1_1/config.h
Normal file
@ -0,0 +1,5 @@
|
||||
// Copyright 2023 Zach DeCook
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
#pragma once
|
||||
|
||||
#define OLED_DISPLAY_128X128
|
446
keyboards/hexboard/1_1/keyboard.json
Normal file
446
keyboards/hexboard/1_1/keyboard.json
Normal file
@ -0,0 +1,446 @@
|
||||
{
|
||||
"matrix_pins": {
|
||||
"cols": ["GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15"],
|
||||
"io_delay": 50,
|
||||
"rows": ["GP4", "GP5", "GP2", "GP3", "GP4", "GP4", "GP4", "GP4", "GP4", "GP4", "GP4", "GP4", "GP4", "GP4"]
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 130, "y": 3, "flags": 8},
|
||||
{"matrix": [0, 1], "x": 242, "y": 12, "flags": 8},
|
||||
{"matrix": [0, 2], "x": 242, "y": 18, "flags": 8},
|
||||
{"matrix": [0, 3], "x": 242, "y": 24, "flags": 8},
|
||||
{"matrix": [0, 4], "x": 242, "y": 30, "flags": 8},
|
||||
{"matrix": [0, 5], "x": 242, "y": 36, "flags": 8},
|
||||
{"matrix": [0, 6], "x": 242, "y": 42, "flags": 8},
|
||||
{"matrix": [0, 7], "x": 242, "y": 48, "flags": 8},
|
||||
{"matrix": [0, 8], "x": 242, "y": 54, "flags": 8},
|
||||
{"matrix": [0, 9], "x": 242, "y": 60, "flags": 8},
|
||||
{"matrix": [1, 0], "x": 224, "y": 9, "flags": 8},
|
||||
{"matrix": [1, 1], "x": 224, "y": 15, "flags": 8},
|
||||
{"matrix": [1, 2], "x": 224, "y": 21, "flags": 8},
|
||||
{"matrix": [1, 3], "x": 224, "y": 27, "flags": 8},
|
||||
{"matrix": [1, 4], "x": 224, "y": 33, "flags": 8},
|
||||
{"matrix": [1, 5], "x": 224, "y": 39, "flags": 8},
|
||||
{"matrix": [1, 6], "x": 224, "y": 45, "flags": 8},
|
||||
{"matrix": [1, 7], "x": 224, "y": 51, "flags": 8},
|
||||
{"matrix": [1, 8], "x": 224, "y": 57, "flags": 8},
|
||||
{"matrix": [1, 9], "x": 224, "y": 64, "flags": 8},
|
||||
{"matrix": [2, 0], "x": 112, "y": 0, "flags": 8},
|
||||
{"matrix": [2, 1], "x": 205, "y": 12, "flags": 8},
|
||||
{"matrix": [2, 2], "x": 205, "y": 18, "flags": 8},
|
||||
{"matrix": [2, 3], "x": 205, "y": 24, "flags": 8},
|
||||
{"matrix": [2, 4], "x": 205, "y": 30, "flags": 8},
|
||||
{"matrix": [2, 5], "x": 205, "y": 36, "flags": 8},
|
||||
{"matrix": [2, 6], "x": 205, "y": 42, "flags": 8},
|
||||
{"matrix": [2, 7], "x": 205, "y": 48, "flags": 8},
|
||||
{"matrix": [2, 8], "x": 205, "y": 54, "flags": 8},
|
||||
{"matrix": [2, 9], "x": 205, "y": 60, "flags": 8},
|
||||
{"matrix": [3, 0], "x": 186, "y": 9, "flags": 8},
|
||||
{"matrix": [3, 1], "x": 186, "y": 15, "flags": 8},
|
||||
{"matrix": [3, 2], "x": 186, "y": 21, "flags": 8},
|
||||
{"matrix": [3, 3], "x": 186, "y": 27, "flags": 8},
|
||||
{"matrix": [3, 4], "x": 186, "y": 33, "flags": 8},
|
||||
{"matrix": [3, 5], "x": 186, "y": 39, "flags": 8},
|
||||
{"matrix": [3, 6], "x": 186, "y": 45, "flags": 8},
|
||||
{"matrix": [3, 7], "x": 186, "y": 51, "flags": 8},
|
||||
{"matrix": [3, 8], "x": 186, "y": 57, "flags": 8},
|
||||
{"matrix": [3, 9], "x": 186, "y": 64, "flags": 8},
|
||||
{"matrix": [4, 0], "x": 93, "y": 3, "flags": 8},
|
||||
{"matrix": [4, 1], "x": 168, "y": 12, "flags": 8},
|
||||
{"matrix": [4, 2], "x": 168, "y": 18, "flags": 8},
|
||||
{"matrix": [4, 3], "x": 168, "y": 24, "flags": 8},
|
||||
{"matrix": [4, 4], "x": 168, "y": 30, "flags": 8},
|
||||
{"matrix": [4, 5], "x": 168, "y": 36, "flags": 8},
|
||||
{"matrix": [4, 6], "x": 168, "y": 42, "flags": 8},
|
||||
{"matrix": [4, 7], "x": 168, "y": 48, "flags": 8},
|
||||
{"matrix": [4, 8], "x": 168, "y": 54, "flags": 8},
|
||||
{"matrix": [4, 9], "x": 168, "y": 60, "flags": 8},
|
||||
{"matrix": [5, 0], "x": 149, "y": 9, "flags": 8},
|
||||
{"matrix": [5, 1], "x": 149, "y": 15, "flags": 8},
|
||||
{"matrix": [5, 2], "x": 149, "y": 21, "flags": 8},
|
||||
{"matrix": [5, 3], "x": 149, "y": 27, "flags": 8},
|
||||
{"matrix": [5, 4], "x": 149, "y": 33, "flags": 8},
|
||||
{"matrix": [5, 5], "x": 149, "y": 39, "flags": 8},
|
||||
{"matrix": [5, 6], "x": 149, "y": 45, "flags": 8},
|
||||
{"matrix": [5, 7], "x": 149, "y": 51, "flags": 8},
|
||||
{"matrix": [5, 8], "x": 149, "y": 57, "flags": 8},
|
||||
{"matrix": [5, 9], "x": 149, "y": 64, "flags": 8},
|
||||
{"matrix": [6, 0], "x": 74, "y": 0, "flags": 8},
|
||||
{"matrix": [6, 1], "x": 130, "y": 12, "flags": 8},
|
||||
{"matrix": [6, 2], "x": 130, "y": 18, "flags": 8},
|
||||
{"matrix": [6, 3], "x": 130, "y": 24, "flags": 8},
|
||||
{"matrix": [6, 4], "x": 130, "y": 30, "flags": 8},
|
||||
{"matrix": [6, 5], "x": 130, "y": 36, "flags": 8},
|
||||
{"matrix": [6, 6], "x": 130, "y": 42, "flags": 8},
|
||||
{"matrix": [6, 7], "x": 130, "y": 48, "flags": 8},
|
||||
{"matrix": [6, 8], "x": 130, "y": 54, "flags": 8},
|
||||
{"matrix": [6, 9], "x": 130, "y": 60, "flags": 8},
|
||||
{"matrix": [7, 0], "x": 112, "y": 9, "flags": 8},
|
||||
{"matrix": [7, 1], "x": 112, "y": 15, "flags": 8},
|
||||
{"matrix": [7, 2], "x": 112, "y": 21, "flags": 8},
|
||||
{"matrix": [7, 3], "x": 112, "y": 27, "flags": 8},
|
||||
{"matrix": [7, 4], "x": 112, "y": 33, "flags": 8},
|
||||
{"matrix": [7, 5], "x": 112, "y": 39, "flags": 8},
|
||||
{"matrix": [7, 6], "x": 112, "y": 45, "flags": 8},
|
||||
{"matrix": [7, 7], "x": 112, "y": 51, "flags": 8},
|
||||
{"matrix": [7, 8], "x": 112, "y": 57, "flags": 8},
|
||||
{"matrix": [7, 9], "x": 112, "y": 64, "flags": 8},
|
||||
{"matrix": [8, 0], "x": 56, "y": 3, "flags": 8},
|
||||
{"matrix": [8, 1], "x": 93, "y": 12, "flags": 8},
|
||||
{"matrix": [8, 2], "x": 93, "y": 18, "flags": 8},
|
||||
{"matrix": [8, 3], "x": 93, "y": 24, "flags": 8},
|
||||
{"matrix": [8, 4], "x": 93, "y": 30, "flags": 8},
|
||||
{"matrix": [8, 5], "x": 93, "y": 36, "flags": 8},
|
||||
{"matrix": [8, 6], "x": 93, "y": 42, "flags": 8},
|
||||
{"matrix": [8, 7], "x": 93, "y": 48, "flags": 8},
|
||||
{"matrix": [8, 8], "x": 93, "y": 54, "flags": 8},
|
||||
{"matrix": [8, 9], "x": 93, "y": 60, "flags": 8},
|
||||
{"matrix": [9, 0], "x": 74, "y": 9, "flags": 8},
|
||||
{"matrix": [9, 1], "x": 74, "y": 15, "flags": 8},
|
||||
{"matrix": [9, 2], "x": 74, "y": 21, "flags": 8},
|
||||
{"matrix": [9, 3], "x": 74, "y": 27, "flags": 8},
|
||||
{"matrix": [9, 4], "x": 74, "y": 33, "flags": 8},
|
||||
{"matrix": [9, 5], "x": 74, "y": 39, "flags": 8},
|
||||
{"matrix": [9, 6], "x": 74, "y": 45, "flags": 8},
|
||||
{"matrix": [9, 7], "x": 74, "y": 51, "flags": 8},
|
||||
{"matrix": [9, 8], "x": 74, "y": 57, "flags": 8},
|
||||
{"matrix": [9, 9], "x": 74, "y": 64, "flags": 8},
|
||||
{"matrix": [10, 0], "x": 37, "y": 0, "flags": 8},
|
||||
{"matrix": [10, 1], "x": 56, "y": 12, "flags": 8},
|
||||
{"matrix": [10, 2], "x": 56, "y": 18, "flags": 8},
|
||||
{"matrix": [10, 3], "x": 56, "y": 24, "flags": 8},
|
||||
{"matrix": [10, 4], "x": 56, "y": 30, "flags": 8},
|
||||
{"matrix": [10, 5], "x": 56, "y": 36, "flags": 8},
|
||||
{"matrix": [10, 6], "x": 56, "y": 42, "flags": 8},
|
||||
{"matrix": [10, 7], "x": 56, "y": 48, "flags": 8},
|
||||
{"matrix": [10, 8], "x": 56, "y": 54, "flags": 8},
|
||||
{"matrix": [10, 9], "x": 56, "y": 60, "flags": 8},
|
||||
{"matrix": [11, 0], "x": 37, "y": 9, "flags": 8},
|
||||
{"matrix": [11, 1], "x": 37, "y": 15, "flags": 8},
|
||||
{"matrix": [11, 2], "x": 37, "y": 21, "flags": 8},
|
||||
{"matrix": [11, 3], "x": 37, "y": 27, "flags": 8},
|
||||
{"matrix": [11, 4], "x": 37, "y": 33, "flags": 8},
|
||||
{"matrix": [11, 5], "x": 37, "y": 39, "flags": 8},
|
||||
{"matrix": [11, 6], "x": 37, "y": 45, "flags": 8},
|
||||
{"matrix": [11, 7], "x": 37, "y": 51, "flags": 8},
|
||||
{"matrix": [11, 8], "x": 37, "y": 57, "flags": 8},
|
||||
{"matrix": [11, 9], "x": 37, "y": 64, "flags": 8},
|
||||
{"matrix": [12, 0], "x": 18, "y": 3, "flags": 8},
|
||||
{"matrix": [12, 1], "x": 18, "y": 12, "flags": 8},
|
||||
{"matrix": [12, 2], "x": 18, "y": 18, "flags": 8},
|
||||
{"matrix": [12, 3], "x": 18, "y": 24, "flags": 8},
|
||||
{"matrix": [12, 4], "x": 18, "y": 30, "flags": 8},
|
||||
{"matrix": [12, 5], "x": 18, "y": 36, "flags": 8},
|
||||
{"matrix": [12, 6], "x": 18, "y": 42, "flags": 8},
|
||||
{"matrix": [12, 7], "x": 18, "y": 48, "flags": 8},
|
||||
{"matrix": [12, 8], "x": 18, "y": 54, "flags": 8},
|
||||
{"matrix": [12, 9], "x": 18, "y": 60, "flags": 8},
|
||||
{"matrix": [13, 0], "x": 0, "y": 9, "flags": 8},
|
||||
{"matrix": [13, 1], "x": 0, "y": 15, "flags": 8},
|
||||
{"matrix": [13, 2], "x": 0, "y": 21, "flags": 8},
|
||||
{"matrix": [13, 3], "x": 0, "y": 27, "flags": 8},
|
||||
{"matrix": [13, 4], "x": 0, "y": 33, "flags": 8},
|
||||
{"matrix": [13, 5], "x": 0, "y": 39, "flags": 8},
|
||||
{"matrix": [13, 6], "x": 0, "y": 45, "flags": 8},
|
||||
{"matrix": [13, 7], "x": 0, "y": 51, "flags": 8},
|
||||
{"matrix": [13, 8], "x": 0, "y": 57, "flags": 8},
|
||||
{"matrix": [13, 9], "x": 0, "y": 64, "flags": 8}
|
||||
]
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "1.1.0",
|
||||
"pid": "0x6B02",
|
||||
"vid": "0x575C"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_landscape": {
|
||||
"layout": [
|
||||
{"matrix": [10, 0], "x": 2, "y": 0},
|
||||
{"matrix": [6, 0], "x": 4, "y": 0},
|
||||
{"matrix": [2, 0], "x": 6, "y": 0},
|
||||
{"matrix": [12, 0], "x": 1, "y": 0.5},
|
||||
{"matrix": [8, 0], "x": 3, "y": 0.5},
|
||||
{"matrix": [4, 0], "x": 5, "y": 0.5},
|
||||
{"matrix": [0, 0], "x": 7, "y": 0.5},
|
||||
{"matrix": [13, 0], "x": 0, "y": 1.5},
|
||||
{"matrix": [11, 0], "x": 2, "y": 1.5},
|
||||
{"matrix": [9, 0], "x": 4, "y": 1.5},
|
||||
{"matrix": [7, 0], "x": 6, "y": 1.5},
|
||||
{"matrix": [5, 0], "x": 8, "y": 1.5},
|
||||
{"matrix": [3, 0], "x": 10, "y": 1.5},
|
||||
{"matrix": [1, 0], "x": 12, "y": 1.5},
|
||||
{"matrix": [12, 1], "x": 1, "y": 2},
|
||||
{"matrix": [10, 1], "x": 3, "y": 2},
|
||||
{"matrix": [8, 1], "x": 5, "y": 2},
|
||||
{"matrix": [6, 1], "x": 7, "y": 2},
|
||||
{"matrix": [4, 1], "x": 9, "y": 2},
|
||||
{"matrix": [2, 1], "x": 11, "y": 2},
|
||||
{"matrix": [0, 1], "x": 13, "y": 2},
|
||||
{"matrix": [13, 1], "x": 0, "y": 2.5},
|
||||
{"matrix": [11, 1], "x": 2, "y": 2.5},
|
||||
{"matrix": [9, 1], "x": 4, "y": 2.5},
|
||||
{"matrix": [7, 1], "x": 6, "y": 2.5},
|
||||
{"matrix": [5, 1], "x": 8, "y": 2.5},
|
||||
{"matrix": [3, 1], "x": 10, "y": 2.5},
|
||||
{"matrix": [1, 1], "x": 12, "y": 2.5},
|
||||
{"matrix": [12, 2], "x": 1, "y": 3},
|
||||
{"matrix": [10, 2], "x": 3, "y": 3},
|
||||
{"matrix": [8, 2], "x": 5, "y": 3},
|
||||
{"matrix": [6, 2], "x": 7, "y": 3},
|
||||
{"matrix": [4, 2], "x": 9, "y": 3},
|
||||
{"matrix": [2, 2], "x": 11, "y": 3},
|
||||
{"matrix": [0, 2], "x": 13, "y": 3},
|
||||
{"matrix": [13, 2], "x": 0, "y": 3.5},
|
||||
{"matrix": [11, 2], "x": 2, "y": 3.5},
|
||||
{"matrix": [9, 2], "x": 4, "y": 3.5},
|
||||
{"matrix": [7, 2], "x": 6, "y": 3.5},
|
||||
{"matrix": [5, 2], "x": 8, "y": 3.5},
|
||||
{"matrix": [3, 2], "x": 10, "y": 3.5},
|
||||
{"matrix": [1, 2], "x": 12, "y": 3.5},
|
||||
{"matrix": [12, 3], "x": 1, "y": 4},
|
||||
{"matrix": [10, 3], "x": 3, "y": 4},
|
||||
{"matrix": [8, 3], "x": 5, "y": 4},
|
||||
{"matrix": [6, 3], "x": 7, "y": 4},
|
||||
{"matrix": [4, 3], "x": 9, "y": 4},
|
||||
{"matrix": [2, 3], "x": 11, "y": 4},
|
||||
{"matrix": [0, 3], "x": 13, "y": 4},
|
||||
{"matrix": [13, 3], "x": 0, "y": 4.5},
|
||||
{"matrix": [11, 3], "x": 2, "y": 4.5},
|
||||
{"matrix": [9, 3], "x": 4, "y": 4.5},
|
||||
{"matrix": [7, 3], "x": 6, "y": 4.5},
|
||||
{"matrix": [5, 3], "x": 8, "y": 4.5},
|
||||
{"matrix": [3, 3], "x": 10, "y": 4.5},
|
||||
{"matrix": [1, 3], "x": 12, "y": 4.5},
|
||||
{"matrix": [12, 4], "x": 1, "y": 5},
|
||||
{"matrix": [10, 4], "x": 3, "y": 5},
|
||||
{"matrix": [8, 4], "x": 5, "y": 5},
|
||||
{"matrix": [6, 4], "x": 7, "y": 5},
|
||||
{"matrix": [4, 4], "x": 9, "y": 5},
|
||||
{"matrix": [2, 4], "x": 11, "y": 5},
|
||||
{"matrix": [0, 4], "x": 13, "y": 5},
|
||||
{"matrix": [13, 4], "x": 0, "y": 5.5},
|
||||
{"matrix": [11, 4], "x": 2, "y": 5.5},
|
||||
{"matrix": [9, 4], "x": 4, "y": 5.5},
|
||||
{"matrix": [7, 4], "x": 6, "y": 5.5},
|
||||
{"matrix": [5, 4], "x": 8, "y": 5.5},
|
||||
{"matrix": [3, 4], "x": 10, "y": 5.5},
|
||||
{"matrix": [1, 4], "x": 12, "y": 5.5},
|
||||
{"matrix": [12, 5], "x": 1, "y": 6},
|
||||
{"matrix": [10, 5], "x": 3, "y": 6},
|
||||
{"matrix": [8, 5], "x": 5, "y": 6},
|
||||
{"matrix": [6, 5], "x": 7, "y": 6},
|
||||
{"matrix": [4, 5], "x": 9, "y": 6},
|
||||
{"matrix": [2, 5], "x": 11, "y": 6},
|
||||
{"matrix": [0, 5], "x": 13, "y": 6},
|
||||
{"matrix": [13, 5], "x": 0, "y": 6.5},
|
||||
{"matrix": [11, 5], "x": 2, "y": 6.5},
|
||||
{"matrix": [9, 5], "x": 4, "y": 6.5},
|
||||
{"matrix": [7, 5], "x": 6, "y": 6.5},
|
||||
{"matrix": [5, 5], "x": 8, "y": 6.5},
|
||||
{"matrix": [3, 5], "x": 10, "y": 6.5},
|
||||
{"matrix": [1, 5], "x": 12, "y": 6.5},
|
||||
{"matrix": [12, 6], "x": 1, "y": 7},
|
||||
{"matrix": [10, 6], "x": 3, "y": 7},
|
||||
{"matrix": [8, 6], "x": 5, "y": 7},
|
||||
{"matrix": [6, 6], "x": 7, "y": 7},
|
||||
{"matrix": [4, 6], "x": 9, "y": 7},
|
||||
{"matrix": [2, 6], "x": 11, "y": 7},
|
||||
{"matrix": [0, 6], "x": 13, "y": 7},
|
||||
{"matrix": [13, 6], "x": 0, "y": 7.5},
|
||||
{"matrix": [11, 6], "x": 2, "y": 7.5},
|
||||
{"matrix": [9, 6], "x": 4, "y": 7.5},
|
||||
{"matrix": [7, 6], "x": 6, "y": 7.5},
|
||||
{"matrix": [5, 6], "x": 8, "y": 7.5},
|
||||
{"matrix": [3, 6], "x": 10, "y": 7.5},
|
||||
{"matrix": [1, 6], "x": 12, "y": 7.5},
|
||||
{"matrix": [12, 7], "x": 1, "y": 8},
|
||||
{"matrix": [10, 7], "x": 3, "y": 8},
|
||||
{"matrix": [8, 7], "x": 5, "y": 8},
|
||||
{"matrix": [6, 7], "x": 7, "y": 8},
|
||||
{"matrix": [4, 7], "x": 9, "y": 8},
|
||||
{"matrix": [2, 7], "x": 11, "y": 8},
|
||||
{"matrix": [0, 7], "x": 13, "y": 8},
|
||||
{"matrix": [13, 7], "x": 0, "y": 8.5},
|
||||
{"matrix": [11, 7], "x": 2, "y": 8.5},
|
||||
{"matrix": [9, 7], "x": 4, "y": 8.5},
|
||||
{"matrix": [7, 7], "x": 6, "y": 8.5},
|
||||
{"matrix": [5, 7], "x": 8, "y": 8.5},
|
||||
{"matrix": [3, 7], "x": 10, "y": 8.5},
|
||||
{"matrix": [1, 7], "x": 12, "y": 8.5},
|
||||
{"matrix": [12, 8], "x": 1, "y": 9},
|
||||
{"matrix": [10, 8], "x": 3, "y": 9},
|
||||
{"matrix": [8, 8], "x": 5, "y": 9},
|
||||
{"matrix": [6, 8], "x": 7, "y": 9},
|
||||
{"matrix": [4, 8], "x": 9, "y": 9},
|
||||
{"matrix": [2, 8], "x": 11, "y": 9},
|
||||
{"matrix": [0, 8], "x": 13, "y": 9},
|
||||
{"matrix": [13, 8], "x": 0, "y": 9.5},
|
||||
{"matrix": [11, 8], "x": 2, "y": 9.5},
|
||||
{"matrix": [9, 8], "x": 4, "y": 9.5},
|
||||
{"matrix": [7, 8], "x": 6, "y": 9.5},
|
||||
{"matrix": [5, 8], "x": 8, "y": 9.5},
|
||||
{"matrix": [3, 8], "x": 10, "y": 9.5},
|
||||
{"matrix": [1, 8], "x": 12, "y": 9.5},
|
||||
{"matrix": [12, 9], "x": 1, "y": 10},
|
||||
{"matrix": [10, 9], "x": 3, "y": 10},
|
||||
{"matrix": [8, 9], "x": 5, "y": 10},
|
||||
{"matrix": [6, 9], "x": 7, "y": 10},
|
||||
{"matrix": [4, 9], "x": 9, "y": 10},
|
||||
{"matrix": [2, 9], "x": 11, "y": 10},
|
||||
{"matrix": [0, 9], "x": 13, "y": 10},
|
||||
{"matrix": [13, 9], "x": 0, "y": 10.5},
|
||||
{"matrix": [11, 9], "x": 2, "y": 10.5},
|
||||
{"matrix": [9, 9], "x": 4, "y": 10.5},
|
||||
{"matrix": [7, 9], "x": 6, "y": 10.5},
|
||||
{"matrix": [5, 9], "x": 8, "y": 10.5},
|
||||
{"matrix": [3, 9], "x": 10, "y": 10.5},
|
||||
{"matrix": [1, 9], "x": 12, "y": 10.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_portrait": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0.5, "y": 6},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [0, 2], "x": 3, "y": 0},
|
||||
{"matrix": [0, 3], "x": 4, "y": 0},
|
||||
{"matrix": [0, 4], "x": 5, "y": 0},
|
||||
{"matrix": [0, 5], "x": 6, "y": 0},
|
||||
{"matrix": [0, 6], "x": 7, "y": 0},
|
||||
{"matrix": [0, 7], "x": 8, "y": 0},
|
||||
{"matrix": [0, 8], "x": 9, "y": 0},
|
||||
{"matrix": [0, 9], "x": 10, "y": 0},
|
||||
{"matrix": [1, 0], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 1], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 10.5, "y": 1},
|
||||
{"matrix": [2, 0], "x": 0, "y": 7},
|
||||
{"matrix": [2, 1], "x": 2, "y": 2},
|
||||
{"matrix": [2, 2], "x": 3, "y": 2},
|
||||
{"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": [3, 0], "x": 1.5, "y": 3},
|
||||
{"matrix": [3, 1], "x": 2.5, "y": 3},
|
||||
{"matrix": [3, 2], "x": 3.5, "y": 3},
|
||||
{"matrix": [3, 3], "x": 4.5, "y": 3},
|
||||
{"matrix": [3, 4], "x": 5.5, "y": 3},
|
||||
{"matrix": [3, 5], "x": 6.5, "y": 3},
|
||||
{"matrix": [3, 6], "x": 7.5, "y": 3},
|
||||
{"matrix": [3, 7], "x": 8.5, "y": 3},
|
||||
{"matrix": [3, 8], "x": 9.5, "y": 3},
|
||||
{"matrix": [3, 9], "x": 10.5, "y": 3},
|
||||
{"matrix": [4, 0], "x": 0.5, "y": 8},
|
||||
{"matrix": [4, 1], "x": 2, "y": 4},
|
||||
{"matrix": [4, 2], "x": 3, "y": 4},
|
||||
{"matrix": [4, 3], "x": 4, "y": 4},
|
||||
{"matrix": [4, 4], "x": 5, "y": 4},
|
||||
{"matrix": [4, 5], "x": 6, "y": 4},
|
||||
{"matrix": [4, 6], "x": 7, "y": 4},
|
||||
{"matrix": [4, 7], "x": 8, "y": 4},
|
||||
{"matrix": [4, 8], "x": 9, "y": 4},
|
||||
{"matrix": [4, 9], "x": 10, "y": 4},
|
||||
{"matrix": [5, 0], "x": 1.5, "y": 5},
|
||||
{"matrix": [5, 1], "x": 2.5, "y": 5},
|
||||
{"matrix": [5, 2], "x": 3.5, "y": 5},
|
||||
{"matrix": [5, 3], "x": 4.5, "y": 5},
|
||||
{"matrix": [5, 4], "x": 5.5, "y": 5},
|
||||
{"matrix": [5, 5], "x": 6.5, "y": 5},
|
||||
{"matrix": [5, 6], "x": 7.5, "y": 5},
|
||||
{"matrix": [5, 7], "x": 8.5, "y": 5},
|
||||
{"matrix": [5, 8], "x": 9.5, "y": 5},
|
||||
{"matrix": [5, 9], "x": 10.5, "y": 5},
|
||||
{"matrix": [6, 0], "x": 0, "y": 9},
|
||||
{"matrix": [6, 1], "x": 2, "y": 6},
|
||||
{"matrix": [6, 2], "x": 3, "y": 6},
|
||||
{"matrix": [6, 3], "x": 4, "y": 6},
|
||||
{"matrix": [6, 4], "x": 5, "y": 6},
|
||||
{"matrix": [6, 5], "x": 6, "y": 6},
|
||||
{"matrix": [6, 6], "x": 7, "y": 6},
|
||||
{"matrix": [6, 7], "x": 8, "y": 6},
|
||||
{"matrix": [6, 8], "x": 9, "y": 6},
|
||||
{"matrix": [6, 9], "x": 10, "y": 6},
|
||||
{"matrix": [7, 0], "x": 1.5, "y": 7},
|
||||
{"matrix": [7, 1], "x": 2.5, "y": 7},
|
||||
{"matrix": [7, 2], "x": 3.5, "y": 7},
|
||||
{"matrix": [7, 3], "x": 4.5, "y": 7},
|
||||
{"matrix": [7, 4], "x": 5.5, "y": 7},
|
||||
{"matrix": [7, 5], "x": 6.5, "y": 7},
|
||||
{"matrix": [7, 6], "x": 7.5, "y": 7},
|
||||
{"matrix": [7, 7], "x": 8.5, "y": 7},
|
||||
{"matrix": [7, 8], "x": 9.5, "y": 7},
|
||||
{"matrix": [7, 9], "x": 10.5, "y": 7},
|
||||
{"matrix": [8, 0], "x": 0.5, "y": 10},
|
||||
{"matrix": [8, 1], "x": 2, "y": 8},
|
||||
{"matrix": [8, 2], "x": 3, "y": 8},
|
||||
{"matrix": [8, 3], "x": 4, "y": 8},
|
||||
{"matrix": [8, 4], "x": 5, "y": 8},
|
||||
{"matrix": [8, 5], "x": 6, "y": 8},
|
||||
{"matrix": [8, 6], "x": 7, "y": 8},
|
||||
{"matrix": [8, 7], "x": 8, "y": 8},
|
||||
{"matrix": [8, 8], "x": 9, "y": 8},
|
||||
{"matrix": [8, 9], "x": 10, "y": 8},
|
||||
{"matrix": [9, 0], "x": 1.5, "y": 9},
|
||||
{"matrix": [9, 1], "x": 2.5, "y": 9},
|
||||
{"matrix": [9, 2], "x": 3.5, "y": 9},
|
||||
{"matrix": [9, 3], "x": 4.5, "y": 9},
|
||||
{"matrix": [9, 4], "x": 5.5, "y": 9},
|
||||
{"matrix": [9, 5], "x": 6.5, "y": 9},
|
||||
{"matrix": [9, 6], "x": 7.5, "y": 9},
|
||||
{"matrix": [9, 7], "x": 8.5, "y": 9},
|
||||
{"matrix": [9, 8], "x": 9.5, "y": 9},
|
||||
{"matrix": [9, 9], "x": 10.5, "y": 9},
|
||||
{"matrix": [10, 0], "x": 0, "y": 11},
|
||||
{"matrix": [10, 1], "x": 2, "y": 10},
|
||||
{"matrix": [10, 2], "x": 3, "y": 10},
|
||||
{"matrix": [10, 3], "x": 4, "y": 10},
|
||||
{"matrix": [10, 4], "x": 5, "y": 10},
|
||||
{"matrix": [10, 5], "x": 6, "y": 10},
|
||||
{"matrix": [10, 6], "x": 7, "y": 10},
|
||||
{"matrix": [10, 7], "x": 8, "y": 10},
|
||||
{"matrix": [10, 8], "x": 9, "y": 10},
|
||||
{"matrix": [10, 9], "x": 10, "y": 10},
|
||||
{"matrix": [11, 0], "x": 1.5, "y": 11},
|
||||
{"matrix": [11, 1], "x": 2.5, "y": 11},
|
||||
{"matrix": [11, 2], "x": 3.5, "y": 11},
|
||||
{"matrix": [11, 3], "x": 4.5, "y": 11},
|
||||
{"matrix": [11, 4], "x": 5.5, "y": 11},
|
||||
{"matrix": [11, 5], "x": 6.5, "y": 11},
|
||||
{"matrix": [11, 6], "x": 7.5, "y": 11},
|
||||
{"matrix": [11, 7], "x": 8.5, "y": 11},
|
||||
{"matrix": [11, 8], "x": 9.5, "y": 11},
|
||||
{"matrix": [11, 9], "x": 10.5, "y": 11},
|
||||
{"matrix": [12, 0], "x": 0.5, "y": 12},
|
||||
{"matrix": [12, 1], "x": 2, "y": 12},
|
||||
{"matrix": [12, 2], "x": 3, "y": 12},
|
||||
{"matrix": [12, 3], "x": 4, "y": 12},
|
||||
{"matrix": [12, 4], "x": 5, "y": 12},
|
||||
{"matrix": [12, 5], "x": 6, "y": 12},
|
||||
{"matrix": [12, 6], "x": 7, "y": 12},
|
||||
{"matrix": [12, 7], "x": 8, "y": 12},
|
||||
{"matrix": [12, 8], "x": 9, "y": 12},
|
||||
{"matrix": [12, 9], "x": 10, "y": 12},
|
||||
{"matrix": [13, 0], "x": 1.5, "y": 13},
|
||||
{"matrix": [13, 1], "x": 2.5, "y": 13},
|
||||
{"matrix": [13, 2], "x": 3.5, "y": 13},
|
||||
{"matrix": [13, 3], "x": 4.5, "y": 13},
|
||||
{"matrix": [13, 4], "x": 5.5, "y": 13},
|
||||
{"matrix": [13, 5], "x": 6.5, "y": 13},
|
||||
{"matrix": [13, 6], "x": 7.5, "y": 13},
|
||||
{"matrix": [13, 7], "x": 8.5, "y": 13},
|
||||
{"matrix": [13, 8], "x": 9.5, "y": 13},
|
||||
{"matrix": [13, 9], "x": 10.5, "y": 13}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
4
keyboards/hexboard/1_1/rules.mk
Normal file
4
keyboards/hexboard/1_1/rules.mk
Normal file
@ -0,0 +1,4 @@
|
||||
SRC += matrix.c
|
||||
CUSTOM_MATRIX = lite
|
||||
|
||||
AUDIO_DRIVER = pwm_hardware
|
38
keyboards/hexboard/config.h
Normal file
38
keyboards/hexboard/config.h
Normal file
@ -0,0 +1,38 @@
|
||||
// Copyright 2023 Zach DeCook
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
#pragma once
|
||||
|
||||
#define RP2040_FLASH_GENERIC_03H
|
||||
#define MATRIX_ROWS 14
|
||||
#define MATRIX_COLS 10
|
||||
|
||||
// WS2812_BYTE_ORDER defined by revision
|
||||
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
|
||||
#define RGB_MATRIX_LED_COUNT 140
|
||||
#define ENABLE_RGB_MATRIX_SOLID_COLOR
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
||||
#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
|
||||
#define ENABLE_RGB_MATRIX_BREATHING
|
||||
// #define ENABLE_RGB_MATRIX_MULTISPLASH
|
||||
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||
// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
||||
|
||||
#define AUDIO_PIN GP23
|
||||
// From the data sheet, pin 23 is PWM3 B
|
||||
#define AUDIO_PWM_DRIVER PWMD3
|
||||
#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_B
|
||||
#define AUDIO_INIT_DELAY
|
||||
#define AUDIO_ENABLE_TONE_MULTIPLEXING
|
||||
#define AUDIO_TONE_MULTIPLEXING_RATE_DEFAULT 50
|
||||
|
||||
// From the data sheet, pins 16/17 can use I2C0 DA/CL
|
||||
#define I2C_DRIVER I2CD0
|
||||
// (The name of these defines is confusing...)
|
||||
#define I2C1_SDA_PIN GP16
|
||||
#define I2C1_SCL_PIN GP17
|
||||
#define OLED_BRIGHTNESS 55
|
||||
#define OLED_IC OLED_IC_SH1106
|
||||
// OLED_DISPLAY_ defined by revision
|
||||
|
||||
#define ENCODER_DEFAULT_POS 0x3
|
11
keyboards/hexboard/dev/config.h
Normal file
11
keyboards/hexboard/dev/config.h
Normal file
@ -0,0 +1,11 @@
|
||||
// Copyright 2023 Zach DeCook
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
#pragma once
|
||||
|
||||
// The dev unit had a different pixel order
|
||||
#define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_RGB
|
||||
|
||||
// The dev unit used a smaller display
|
||||
#define OLED_DISPLAY_128X64
|
||||
// Needs to be shifted over
|
||||
#define OLED_COLUMN_OFFSET 2
|
10
keyboards/hexboard/dev/dev.c
Normal file
10
keyboards/hexboard/dev/dev.c
Normal file
@ -0,0 +1,10 @@
|
||||
// Copyright 2022-2023 Zach DeCook
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
|
||||
return OLED_ROTATION_180;
|
||||
}
|
||||
#endif
|
446
keyboards/hexboard/dev/keyboard.json
Normal file
446
keyboards/hexboard/dev/keyboard.json
Normal file
@ -0,0 +1,446 @@
|
||||
{
|
||||
"matrix_pins": {
|
||||
"cols": ["GP14", "GP15", "GP13", "GP12", "GP11", "GP10", "GP9", "GP8", "GP7", "GP6"],
|
||||
"io_delay": 50,
|
||||
"rows": ["GP4", "GP5", "GP2", "GP3", "GP4", "GP4", "GP4", "GP4", "GP4", "GP4", "GP4", "GP4", "GP4", "GP4"]
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 224, "y": 64, "flags": 8},
|
||||
{"matrix": [0, 1], "x": 224, "y": 57, "flags": 8},
|
||||
{"matrix": [0, 2], "x": 224, "y": 51, "flags": 8},
|
||||
{"matrix": [0, 3], "x": 224, "y": 45, "flags": 8},
|
||||
{"matrix": [0, 4], "x": 224, "y": 39, "flags": 8},
|
||||
{"matrix": [0, 5], "x": 224, "y": 33, "flags": 8},
|
||||
{"matrix": [0, 6], "x": 224, "y": 27, "flags": 8},
|
||||
{"matrix": [0, 7], "x": 224, "y": 21, "flags": 8},
|
||||
{"matrix": [0, 8], "x": 224, "y": 15, "flags": 8},
|
||||
{"matrix": [0, 9], "x": 120, "y": 3, "flags": 8},
|
||||
{"matrix": [1, 0], "x": 206, "y": 67, "flags": 8},
|
||||
{"matrix": [1, 1], "x": 206, "y": 60, "flags": 8},
|
||||
{"matrix": [1, 2], "x": 206, "y": 54, "flags": 8},
|
||||
{"matrix": [1, 3], "x": 206, "y": 48, "flags": 8},
|
||||
{"matrix": [1, 4], "x": 206, "y": 42, "flags": 8},
|
||||
{"matrix": [1, 5], "x": 206, "y": 36, "flags": 8},
|
||||
{"matrix": [1, 6], "x": 206, "y": 30, "flags": 8},
|
||||
{"matrix": [1, 7], "x": 206, "y": 24, "flags": 8},
|
||||
{"matrix": [1, 8], "x": 206, "y": 18, "flags": 8},
|
||||
{"matrix": [1, 9], "x": 206, "y": 12, "flags": 8},
|
||||
{"matrix": [2, 0], "x": 189, "y": 64, "flags": 8},
|
||||
{"matrix": [2, 1], "x": 189, "y": 57, "flags": 8},
|
||||
{"matrix": [2, 2], "x": 189, "y": 51, "flags": 8},
|
||||
{"matrix": [2, 3], "x": 189, "y": 45, "flags": 8},
|
||||
{"matrix": [2, 4], "x": 189, "y": 39, "flags": 8},
|
||||
{"matrix": [2, 5], "x": 189, "y": 33, "flags": 8},
|
||||
{"matrix": [2, 6], "x": 189, "y": 27, "flags": 8},
|
||||
{"matrix": [2, 7], "x": 189, "y": 21, "flags": 8},
|
||||
{"matrix": [2, 8], "x": 189, "y": 15, "flags": 8},
|
||||
{"matrix": [2, 9], "x": 103, "y": 0, "flags": 8},
|
||||
{"matrix": [3, 0], "x": 172, "y": 67, "flags": 8},
|
||||
{"matrix": [3, 1], "x": 172, "y": 60, "flags": 8},
|
||||
{"matrix": [3, 2], "x": 172, "y": 54, "flags": 8},
|
||||
{"matrix": [3, 3], "x": 172, "y": 48, "flags": 8},
|
||||
{"matrix": [3, 4], "x": 172, "y": 42, "flags": 8},
|
||||
{"matrix": [3, 5], "x": 172, "y": 36, "flags": 8},
|
||||
{"matrix": [3, 6], "x": 172, "y": 30, "flags": 8},
|
||||
{"matrix": [3, 7], "x": 172, "y": 24, "flags": 8},
|
||||
{"matrix": [3, 8], "x": 172, "y": 18, "flags": 8},
|
||||
{"matrix": [3, 9], "x": 172, "y": 12, "flags": 8},
|
||||
{"matrix": [4, 0], "x": 155, "y": 64, "flags": 8},
|
||||
{"matrix": [4, 1], "x": 155, "y": 57, "flags": 8},
|
||||
{"matrix": [4, 2], "x": 155, "y": 51, "flags": 8},
|
||||
{"matrix": [4, 3], "x": 155, "y": 45, "flags": 8},
|
||||
{"matrix": [4, 4], "x": 155, "y": 39, "flags": 8},
|
||||
{"matrix": [4, 5], "x": 155, "y": 33, "flags": 8},
|
||||
{"matrix": [4, 6], "x": 155, "y": 27, "flags": 8},
|
||||
{"matrix": [4, 7], "x": 155, "y": 21, "flags": 8},
|
||||
{"matrix": [4, 8], "x": 155, "y": 15, "flags": 8},
|
||||
{"matrix": [4, 9], "x": 86, "y": 3, "flags": 8},
|
||||
{"matrix": [5, 0], "x": 137, "y": 67, "flags": 8},
|
||||
{"matrix": [5, 1], "x": 137, "y": 60, "flags": 8},
|
||||
{"matrix": [5, 2], "x": 137, "y": 54, "flags": 8},
|
||||
{"matrix": [5, 3], "x": 137, "y": 48, "flags": 8},
|
||||
{"matrix": [5, 4], "x": 137, "y": 42, "flags": 8},
|
||||
{"matrix": [5, 5], "x": 137, "y": 36, "flags": 8},
|
||||
{"matrix": [5, 6], "x": 137, "y": 30, "flags": 8},
|
||||
{"matrix": [5, 7], "x": 137, "y": 24, "flags": 8},
|
||||
{"matrix": [5, 8], "x": 137, "y": 18, "flags": 8},
|
||||
{"matrix": [5, 9], "x": 137, "y": 12, "flags": 8},
|
||||
{"matrix": [6, 0], "x": 120, "y": 64, "flags": 8},
|
||||
{"matrix": [6, 1], "x": 120, "y": 57, "flags": 8},
|
||||
{"matrix": [6, 2], "x": 120, "y": 51, "flags": 8},
|
||||
{"matrix": [6, 3], "x": 120, "y": 45, "flags": 8},
|
||||
{"matrix": [6, 4], "x": 120, "y": 39, "flags": 8},
|
||||
{"matrix": [6, 5], "x": 120, "y": 33, "flags": 8},
|
||||
{"matrix": [6, 6], "x": 120, "y": 27, "flags": 8},
|
||||
{"matrix": [6, 7], "x": 120, "y": 21, "flags": 8},
|
||||
{"matrix": [6, 8], "x": 120, "y": 15, "flags": 8},
|
||||
{"matrix": [6, 9], "x": 68, "y": 0, "flags": 8},
|
||||
{"matrix": [7, 0], "x": 103, "y": 67, "flags": 8},
|
||||
{"matrix": [7, 1], "x": 103, "y": 60, "flags": 8},
|
||||
{"matrix": [7, 2], "x": 103, "y": 54, "flags": 8},
|
||||
{"matrix": [7, 3], "x": 103, "y": 48, "flags": 8},
|
||||
{"matrix": [7, 4], "x": 103, "y": 42, "flags": 8},
|
||||
{"matrix": [7, 5], "x": 103, "y": 36, "flags": 8},
|
||||
{"matrix": [7, 6], "x": 103, "y": 30, "flags": 8},
|
||||
{"matrix": [7, 7], "x": 103, "y": 24, "flags": 8},
|
||||
{"matrix": [7, 8], "x": 103, "y": 18, "flags": 8},
|
||||
{"matrix": [7, 9], "x": 103, "y": 12, "flags": 8},
|
||||
{"matrix": [8, 0], "x": 86, "y": 64, "flags": 8},
|
||||
{"matrix": [8, 1], "x": 86, "y": 57, "flags": 8},
|
||||
{"matrix": [8, 2], "x": 86, "y": 51, "flags": 8},
|
||||
{"matrix": [8, 3], "x": 86, "y": 45, "flags": 8},
|
||||
{"matrix": [8, 4], "x": 86, "y": 39, "flags": 8},
|
||||
{"matrix": [8, 5], "x": 86, "y": 33, "flags": 8},
|
||||
{"matrix": [8, 6], "x": 86, "y": 27, "flags": 8},
|
||||
{"matrix": [8, 7], "x": 86, "y": 21, "flags": 8},
|
||||
{"matrix": [8, 8], "x": 86, "y": 15, "flags": 8},
|
||||
{"matrix": [8, 9], "x": 51, "y": 3, "flags": 8},
|
||||
{"matrix": [9, 0], "x": 68, "y": 67, "flags": 8},
|
||||
{"matrix": [9, 1], "x": 68, "y": 60, "flags": 8},
|
||||
{"matrix": [9, 2], "x": 68, "y": 54, "flags": 8},
|
||||
{"matrix": [9, 3], "x": 68, "y": 48, "flags": 8},
|
||||
{"matrix": [9, 4], "x": 68, "y": 42, "flags": 8},
|
||||
{"matrix": [9, 5], "x": 68, "y": 36, "flags": 8},
|
||||
{"matrix": [9, 6], "x": 68, "y": 30, "flags": 8},
|
||||
{"matrix": [9, 7], "x": 68, "y": 24, "flags": 8},
|
||||
{"matrix": [9, 8], "x": 68, "y": 18, "flags": 8},
|
||||
{"matrix": [9, 9], "x": 68, "y": 12, "flags": 8},
|
||||
{"matrix": [10, 0], "x": 51, "y": 64, "flags": 8},
|
||||
{"matrix": [10, 1], "x": 51, "y": 57, "flags": 8},
|
||||
{"matrix": [10, 2], "x": 51, "y": 51, "flags": 8},
|
||||
{"matrix": [10, 3], "x": 51, "y": 45, "flags": 8},
|
||||
{"matrix": [10, 4], "x": 51, "y": 39, "flags": 8},
|
||||
{"matrix": [10, 5], "x": 51, "y": 33, "flags": 8},
|
||||
{"matrix": [10, 6], "x": 51, "y": 27, "flags": 8},
|
||||
{"matrix": [10, 7], "x": 51, "y": 21, "flags": 8},
|
||||
{"matrix": [10, 8], "x": 51, "y": 15, "flags": 8},
|
||||
{"matrix": [10, 9], "x": 34, "y": 0, "flags": 8},
|
||||
{"matrix": [11, 0], "x": 34, "y": 67, "flags": 8},
|
||||
{"matrix": [11, 1], "x": 34, "y": 60, "flags": 8},
|
||||
{"matrix": [11, 2], "x": 34, "y": 54, "flags": 8},
|
||||
{"matrix": [11, 3], "x": 34, "y": 48, "flags": 8},
|
||||
{"matrix": [11, 4], "x": 34, "y": 42, "flags": 8},
|
||||
{"matrix": [11, 5], "x": 34, "y": 36, "flags": 8},
|
||||
{"matrix": [11, 6], "x": 34, "y": 30, "flags": 8},
|
||||
{"matrix": [11, 7], "x": 34, "y": 24, "flags": 8},
|
||||
{"matrix": [11, 8], "x": 34, "y": 18, "flags": 8},
|
||||
{"matrix": [11, 9], "x": 34, "y": 12, "flags": 8},
|
||||
{"matrix": [12, 0], "x": 17, "y": 64, "flags": 8},
|
||||
{"matrix": [12, 1], "x": 17, "y": 57, "flags": 8},
|
||||
{"matrix": [12, 2], "x": 17, "y": 51, "flags": 8},
|
||||
{"matrix": [12, 3], "x": 17, "y": 45, "flags": 8},
|
||||
{"matrix": [12, 4], "x": 17, "y": 39, "flags": 8},
|
||||
{"matrix": [12, 5], "x": 17, "y": 33, "flags": 8},
|
||||
{"matrix": [12, 6], "x": 17, "y": 27, "flags": 8},
|
||||
{"matrix": [12, 7], "x": 17, "y": 21, "flags": 8},
|
||||
{"matrix": [12, 8], "x": 17, "y": 15, "flags": 8},
|
||||
{"matrix": [12, 9], "x": 17, "y": 3, "flags": 8},
|
||||
{"matrix": [13, 0], "x": 0, "y": 67, "flags": 8},
|
||||
{"matrix": [13, 1], "x": 0, "y": 60, "flags": 8},
|
||||
{"matrix": [13, 2], "x": 0, "y": 54, "flags": 8},
|
||||
{"matrix": [13, 3], "x": 0, "y": 48, "flags": 8},
|
||||
{"matrix": [13, 4], "x": 0, "y": 42, "flags": 8},
|
||||
{"matrix": [13, 5], "x": 0, "y": 36, "flags": 8},
|
||||
{"matrix": [13, 6], "x": 0, "y": 30, "flags": 8},
|
||||
{"matrix": [13, 7], "x": 0, "y": 24, "flags": 8},
|
||||
{"matrix": [13, 8], "x": 0, "y": 18, "flags": 8},
|
||||
{"matrix": [13, 9], "x": 0, "y": 12, "flags": 8}
|
||||
]
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x6B01",
|
||||
"vid": "0x575C"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_landscape": {
|
||||
"layout": [
|
||||
{"matrix": [10, 9], "x": 2, "y": 0},
|
||||
{"matrix": [6, 9], "x": 4, "y": 0},
|
||||
{"matrix": [2, 9], "x": 6, "y": 0},
|
||||
{"matrix": [12, 9], "x": 1, "y": 0.5},
|
||||
{"matrix": [8, 9], "x": 3, "y": 0.5},
|
||||
{"matrix": [4, 9], "x": 5, "y": 0.5},
|
||||
{"matrix": [0, 9], "x": 7, "y": 0.5},
|
||||
{"matrix": [13, 9], "x": 0, "y": 2},
|
||||
{"matrix": [11, 9], "x": 2, "y": 2},
|
||||
{"matrix": [9, 9], "x": 4, "y": 2},
|
||||
{"matrix": [7, 9], "x": 6, "y": 2},
|
||||
{"matrix": [5, 9], "x": 8, "y": 2},
|
||||
{"matrix": [3, 9], "x": 10, "y": 2},
|
||||
{"matrix": [1, 9], "x": 12, "y": 2},
|
||||
{"matrix": [12, 8], "x": 1, "y": 2.5},
|
||||
{"matrix": [10, 8], "x": 3, "y": 2.5},
|
||||
{"matrix": [8, 8], "x": 5, "y": 2.5},
|
||||
{"matrix": [6, 8], "x": 7, "y": 2.5},
|
||||
{"matrix": [4, 8], "x": 9, "y": 2.5},
|
||||
{"matrix": [2, 8], "x": 11, "y": 2.5},
|
||||
{"matrix": [0, 8], "x": 13, "y": 2.5},
|
||||
{"matrix": [13, 8], "x": 0, "y": 3},
|
||||
{"matrix": [11, 8], "x": 2, "y": 3},
|
||||
{"matrix": [9, 8], "x": 4, "y": 3},
|
||||
{"matrix": [7, 8], "x": 6, "y": 3},
|
||||
{"matrix": [5, 8], "x": 8, "y": 3},
|
||||
{"matrix": [3, 8], "x": 10, "y": 3},
|
||||
{"matrix": [1, 8], "x": 12, "y": 3},
|
||||
{"matrix": [12, 7], "x": 1, "y": 3.5},
|
||||
{"matrix": [10, 7], "x": 3, "y": 3.5},
|
||||
{"matrix": [8, 7], "x": 5, "y": 3.5},
|
||||
{"matrix": [6, 7], "x": 7, "y": 3.5},
|
||||
{"matrix": [4, 7], "x": 9, "y": 3.5},
|
||||
{"matrix": [2, 7], "x": 11, "y": 3.5},
|
||||
{"matrix": [0, 7], "x": 13, "y": 3.5},
|
||||
{"matrix": [13, 7], "x": 0, "y": 4},
|
||||
{"matrix": [11, 7], "x": 2, "y": 4},
|
||||
{"matrix": [9, 7], "x": 4, "y": 4},
|
||||
{"matrix": [7, 7], "x": 6, "y": 4},
|
||||
{"matrix": [5, 7], "x": 8, "y": 4},
|
||||
{"matrix": [3, 7], "x": 10, "y": 4},
|
||||
{"matrix": [1, 7], "x": 12, "y": 4},
|
||||
{"matrix": [12, 6], "x": 1, "y": 4.5},
|
||||
{"matrix": [10, 6], "x": 3, "y": 4.5},
|
||||
{"matrix": [8, 6], "x": 5, "y": 4.5},
|
||||
{"matrix": [6, 6], "x": 7, "y": 4.5},
|
||||
{"matrix": [4, 6], "x": 9, "y": 4.5},
|
||||
{"matrix": [2, 6], "x": 11, "y": 4.5},
|
||||
{"matrix": [0, 6], "x": 13, "y": 4.5},
|
||||
{"matrix": [13, 6], "x": 0, "y": 5},
|
||||
{"matrix": [11, 6], "x": 2, "y": 5},
|
||||
{"matrix": [9, 6], "x": 4, "y": 5},
|
||||
{"matrix": [7, 6], "x": 6, "y": 5},
|
||||
{"matrix": [5, 6], "x": 8, "y": 5},
|
||||
{"matrix": [3, 6], "x": 10, "y": 5},
|
||||
{"matrix": [1, 6], "x": 12, "y": 5},
|
||||
{"matrix": [12, 5], "x": 1, "y": 5.5},
|
||||
{"matrix": [10, 5], "x": 3, "y": 5.5},
|
||||
{"matrix": [8, 5], "x": 5, "y": 5.5},
|
||||
{"matrix": [6, 5], "x": 7, "y": 5.5},
|
||||
{"matrix": [4, 5], "x": 9, "y": 5.5},
|
||||
{"matrix": [2, 5], "x": 11, "y": 5.5},
|
||||
{"matrix": [0, 5], "x": 13, "y": 5.5},
|
||||
{"matrix": [13, 5], "x": 0, "y": 6},
|
||||
{"matrix": [11, 5], "x": 2, "y": 6},
|
||||
{"matrix": [9, 5], "x": 4, "y": 6},
|
||||
{"matrix": [7, 5], "x": 6, "y": 6},
|
||||
{"matrix": [5, 5], "x": 8, "y": 6},
|
||||
{"matrix": [3, 5], "x": 10, "y": 6},
|
||||
{"matrix": [1, 5], "x": 12, "y": 6},
|
||||
{"matrix": [12, 4], "x": 1, "y": 6.5},
|
||||
{"matrix": [10, 4], "x": 3, "y": 6.5},
|
||||
{"matrix": [8, 4], "x": 5, "y": 6.5},
|
||||
{"matrix": [6, 4], "x": 7, "y": 6.5},
|
||||
{"matrix": [4, 4], "x": 9, "y": 6.5},
|
||||
{"matrix": [2, 4], "x": 11, "y": 6.5},
|
||||
{"matrix": [0, 4], "x": 13, "y": 6.5},
|
||||
{"matrix": [13, 4], "x": 0, "y": 7},
|
||||
{"matrix": [11, 4], "x": 2, "y": 7},
|
||||
{"matrix": [9, 4], "x": 4, "y": 7},
|
||||
{"matrix": [7, 4], "x": 6, "y": 7},
|
||||
{"matrix": [5, 4], "x": 8, "y": 7},
|
||||
{"matrix": [3, 4], "x": 10, "y": 7},
|
||||
{"matrix": [1, 4], "x": 12, "y": 7},
|
||||
{"matrix": [12, 3], "x": 1, "y": 7.5},
|
||||
{"matrix": [10, 3], "x": 3, "y": 7.5},
|
||||
{"matrix": [8, 3], "x": 5, "y": 7.5},
|
||||
{"matrix": [6, 3], "x": 7, "y": 7.5},
|
||||
{"matrix": [4, 3], "x": 9, "y": 7.5},
|
||||
{"matrix": [2, 3], "x": 11, "y": 7.5},
|
||||
{"matrix": [0, 3], "x": 13, "y": 7.5},
|
||||
{"matrix": [13, 3], "x": 0, "y": 8},
|
||||
{"matrix": [11, 3], "x": 2, "y": 8},
|
||||
{"matrix": [9, 3], "x": 4, "y": 8},
|
||||
{"matrix": [7, 3], "x": 6, "y": 8},
|
||||
{"matrix": [5, 3], "x": 8, "y": 8},
|
||||
{"matrix": [3, 3], "x": 10, "y": 8},
|
||||
{"matrix": [1, 3], "x": 12, "y": 8},
|
||||
{"matrix": [12, 2], "x": 1, "y": 8.5},
|
||||
{"matrix": [10, 2], "x": 3, "y": 8.5},
|
||||
{"matrix": [8, 2], "x": 5, "y": 8.5},
|
||||
{"matrix": [6, 2], "x": 7, "y": 8.5},
|
||||
{"matrix": [4, 2], "x": 9, "y": 8.5},
|
||||
{"matrix": [2, 2], "x": 11, "y": 8.5},
|
||||
{"matrix": [0, 2], "x": 13, "y": 8.5},
|
||||
{"matrix": [13, 2], "x": 0, "y": 9},
|
||||
{"matrix": [11, 2], "x": 2, "y": 9},
|
||||
{"matrix": [9, 2], "x": 4, "y": 9},
|
||||
{"matrix": [7, 2], "x": 6, "y": 9},
|
||||
{"matrix": [5, 2], "x": 8, "y": 9},
|
||||
{"matrix": [3, 2], "x": 10, "y": 9},
|
||||
{"matrix": [1, 2], "x": 12, "y": 9},
|
||||
{"matrix": [12, 1], "x": 1, "y": 9.5},
|
||||
{"matrix": [10, 1], "x": 3, "y": 9.5},
|
||||
{"matrix": [8, 1], "x": 5, "y": 9.5},
|
||||
{"matrix": [6, 1], "x": 7, "y": 9.5},
|
||||
{"matrix": [4, 1], "x": 9, "y": 9.5},
|
||||
{"matrix": [2, 1], "x": 11, "y": 9.5},
|
||||
{"matrix": [0, 1], "x": 13, "y": 9.5},
|
||||
{"matrix": [13, 1], "x": 0, "y": 10},
|
||||
{"matrix": [11, 1], "x": 2, "y": 10},
|
||||
{"matrix": [9, 1], "x": 4, "y": 10},
|
||||
{"matrix": [7, 1], "x": 6, "y": 10},
|
||||
{"matrix": [5, 1], "x": 8, "y": 10},
|
||||
{"matrix": [3, 1], "x": 10, "y": 10},
|
||||
{"matrix": [1, 1], "x": 12, "y": 10},
|
||||
{"matrix": [12, 0], "x": 1, "y": 10.5},
|
||||
{"matrix": [10, 0], "x": 3, "y": 10.5},
|
||||
{"matrix": [8, 0], "x": 5, "y": 10.5},
|
||||
{"matrix": [6, 0], "x": 7, "y": 10.5},
|
||||
{"matrix": [4, 0], "x": 9, "y": 10.5},
|
||||
{"matrix": [2, 0], "x": 11, "y": 10.5},
|
||||
{"matrix": [0, 0], "x": 13, "y": 10.5},
|
||||
{"matrix": [13, 0], "x": 0, "y": 11},
|
||||
{"matrix": [11, 0], "x": 2, "y": 11},
|
||||
{"matrix": [9, 0], "x": 4, "y": 11},
|
||||
{"matrix": [7, 0], "x": 6, "y": 11},
|
||||
{"matrix": [5, 0], "x": 8, "y": 11},
|
||||
{"matrix": [3, 0], "x": 10, "y": 11},
|
||||
{"matrix": [1, 0], "x": 12, "y": 11}
|
||||
]
|
||||
},
|
||||
"LAYOUT_portrait": {
|
||||
"layout": [
|
||||
{"matrix": [0, 9], "x": 0.5, "y": 6},
|
||||
{"matrix": [0, 8], "x": 2.5, "y": 0},
|
||||
{"matrix": [0, 7], "x": 3.5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 4.5, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5.5, "y": 0},
|
||||
{"matrix": [0, 4], "x": 6.5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 2], "x": 8.5, "y": 0},
|
||||
{"matrix": [0, 1], "x": 9.5, "y": 0},
|
||||
{"matrix": [0, 0], "x": 10.5, "y": 0},
|
||||
{"matrix": [1, 9], "x": 2, "y": 1},
|
||||
{"matrix": [1, 8], "x": 3, "y": 1},
|
||||
{"matrix": [1, 7], "x": 4, "y": 1},
|
||||
{"matrix": [1, 6], "x": 5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 6, "y": 1},
|
||||
{"matrix": [1, 4], "x": 7, "y": 1},
|
||||
{"matrix": [1, 3], "x": 8, "y": 1},
|
||||
{"matrix": [1, 2], "x": 9, "y": 1},
|
||||
{"matrix": [1, 1], "x": 10, "y": 1},
|
||||
{"matrix": [1, 0], "x": 11, "y": 1},
|
||||
{"matrix": [2, 9], "x": 0, "y": 7},
|
||||
{"matrix": [2, 8], "x": 2.5, "y": 2},
|
||||
{"matrix": [2, 7], "x": 3.5, "y": 2},
|
||||
{"matrix": [2, 6], "x": 4.5, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.5, "y": 2},
|
||||
{"matrix": [2, 4], "x": 6.5, "y": 2},
|
||||
{"matrix": [2, 3], "x": 7.5, "y": 2},
|
||||
{"matrix": [2, 2], "x": 8.5, "y": 2},
|
||||
{"matrix": [2, 1], "x": 9.5, "y": 2},
|
||||
{"matrix": [2, 0], "x": 10.5, "y": 2},
|
||||
{"matrix": [3, 9], "x": 2, "y": 3},
|
||||
{"matrix": [3, 8], "x": 3, "y": 3},
|
||||
{"matrix": [3, 7], "x": 4, "y": 3},
|
||||
{"matrix": [3, 6], "x": 5, "y": 3},
|
||||
{"matrix": [3, 5], "x": 6, "y": 3},
|
||||
{"matrix": [3, 4], "x": 7, "y": 3},
|
||||
{"matrix": [3, 3], "x": 8, "y": 3},
|
||||
{"matrix": [3, 2], "x": 9, "y": 3},
|
||||
{"matrix": [3, 1], "x": 10, "y": 3},
|
||||
{"matrix": [3, 0], "x": 11, "y": 3},
|
||||
{"matrix": [4, 9], "x": 0.5, "y": 8},
|
||||
{"matrix": [4, 8], "x": 2.5, "y": 4},
|
||||
{"matrix": [4, 7], "x": 3.5, "y": 4},
|
||||
{"matrix": [4, 6], "x": 4.5, "y": 4},
|
||||
{"matrix": [4, 5], "x": 5.5, "y": 4},
|
||||
{"matrix": [4, 4], "x": 6.5, "y": 4},
|
||||
{"matrix": [4, 3], "x": 7.5, "y": 4},
|
||||
{"matrix": [4, 2], "x": 8.5, "y": 4},
|
||||
{"matrix": [4, 1], "x": 9.5, "y": 4},
|
||||
{"matrix": [4, 0], "x": 10.5, "y": 4},
|
||||
{"matrix": [5, 9], "x": 2, "y": 5},
|
||||
{"matrix": [5, 8], "x": 3, "y": 5},
|
||||
{"matrix": [5, 7], "x": 4, "y": 5},
|
||||
{"matrix": [5, 6], "x": 5, "y": 5},
|
||||
{"matrix": [5, 5], "x": 6, "y": 5},
|
||||
{"matrix": [5, 4], "x": 7, "y": 5},
|
||||
{"matrix": [5, 3], "x": 8, "y": 5},
|
||||
{"matrix": [5, 2], "x": 9, "y": 5},
|
||||
{"matrix": [5, 1], "x": 10, "y": 5},
|
||||
{"matrix": [5, 0], "x": 11, "y": 5},
|
||||
{"matrix": [6, 9], "x": 0, "y": 9},
|
||||
{"matrix": [6, 8], "x": 2.5, "y": 6},
|
||||
{"matrix": [6, 7], "x": 3.5, "y": 6},
|
||||
{"matrix": [6, 6], "x": 4.5, "y": 6},
|
||||
{"matrix": [6, 5], "x": 5.5, "y": 6},
|
||||
{"matrix": [6, 4], "x": 6.5, "y": 6},
|
||||
{"matrix": [6, 3], "x": 7.5, "y": 6},
|
||||
{"matrix": [6, 2], "x": 8.5, "y": 6},
|
||||
{"matrix": [6, 1], "x": 9.5, "y": 6},
|
||||
{"matrix": [6, 0], "x": 10.5, "y": 6},
|
||||
{"matrix": [7, 9], "x": 2, "y": 7},
|
||||
{"matrix": [7, 8], "x": 3, "y": 7},
|
||||
{"matrix": [7, 7], "x": 4, "y": 7},
|
||||
{"matrix": [7, 6], "x": 5, "y": 7},
|
||||
{"matrix": [7, 5], "x": 6, "y": 7},
|
||||
{"matrix": [7, 4], "x": 7, "y": 7},
|
||||
{"matrix": [7, 3], "x": 8, "y": 7},
|
||||
{"matrix": [7, 2], "x": 9, "y": 7},
|
||||
{"matrix": [7, 1], "x": 10, "y": 7},
|
||||
{"matrix": [7, 0], "x": 11, "y": 7},
|
||||
{"matrix": [8, 9], "x": 0.5, "y": 10},
|
||||
{"matrix": [8, 8], "x": 2.5, "y": 8},
|
||||
{"matrix": [8, 7], "x": 3.5, "y": 8},
|
||||
{"matrix": [8, 6], "x": 4.5, "y": 8},
|
||||
{"matrix": [8, 5], "x": 5.5, "y": 8},
|
||||
{"matrix": [8, 4], "x": 6.5, "y": 8},
|
||||
{"matrix": [8, 3], "x": 7.5, "y": 8},
|
||||
{"matrix": [8, 2], "x": 8.5, "y": 8},
|
||||
{"matrix": [8, 1], "x": 9.5, "y": 8},
|
||||
{"matrix": [8, 0], "x": 10.5, "y": 8},
|
||||
{"matrix": [9, 9], "x": 2, "y": 9},
|
||||
{"matrix": [9, 8], "x": 3, "y": 9},
|
||||
{"matrix": [9, 7], "x": 4, "y": 9},
|
||||
{"matrix": [9, 6], "x": 5, "y": 9},
|
||||
{"matrix": [9, 5], "x": 6, "y": 9},
|
||||
{"matrix": [9, 4], "x": 7, "y": 9},
|
||||
{"matrix": [9, 3], "x": 8, "y": 9},
|
||||
{"matrix": [9, 2], "x": 9, "y": 9},
|
||||
{"matrix": [9, 1], "x": 10, "y": 9},
|
||||
{"matrix": [9, 0], "x": 11, "y": 9},
|
||||
{"matrix": [10, 9], "x": 0, "y": 11},
|
||||
{"matrix": [10, 8], "x": 2.5, "y": 10},
|
||||
{"matrix": [10, 7], "x": 3.5, "y": 10},
|
||||
{"matrix": [10, 6], "x": 4.5, "y": 10},
|
||||
{"matrix": [10, 5], "x": 5.5, "y": 10},
|
||||
{"matrix": [10, 4], "x": 6.5, "y": 10},
|
||||
{"matrix": [10, 3], "x": 7.5, "y": 10},
|
||||
{"matrix": [10, 2], "x": 8.5, "y": 10},
|
||||
{"matrix": [10, 1], "x": 9.5, "y": 10},
|
||||
{"matrix": [10, 0], "x": 10.5, "y": 10},
|
||||
{"matrix": [11, 9], "x": 2, "y": 11},
|
||||
{"matrix": [11, 8], "x": 3, "y": 11},
|
||||
{"matrix": [11, 7], "x": 4, "y": 11},
|
||||
{"matrix": [11, 6], "x": 5, "y": 11},
|
||||
{"matrix": [11, 5], "x": 6, "y": 11},
|
||||
{"matrix": [11, 4], "x": 7, "y": 11},
|
||||
{"matrix": [11, 3], "x": 8, "y": 11},
|
||||
{"matrix": [11, 2], "x": 9, "y": 11},
|
||||
{"matrix": [11, 1], "x": 10, "y": 11},
|
||||
{"matrix": [11, 0], "x": 11, "y": 11},
|
||||
{"matrix": [12, 9], "x": 0.5, "y": 12},
|
||||
{"matrix": [12, 8], "x": 2.5, "y": 12},
|
||||
{"matrix": [12, 7], "x": 3.5, "y": 12},
|
||||
{"matrix": [12, 6], "x": 4.5, "y": 12},
|
||||
{"matrix": [12, 5], "x": 5.5, "y": 12},
|
||||
{"matrix": [12, 4], "x": 6.5, "y": 12},
|
||||
{"matrix": [12, 3], "x": 7.5, "y": 12},
|
||||
{"matrix": [12, 2], "x": 8.5, "y": 12},
|
||||
{"matrix": [12, 1], "x": 9.5, "y": 12},
|
||||
{"matrix": [12, 0], "x": 10.5, "y": 12},
|
||||
{"matrix": [13, 9], "x": 2, "y": 13},
|
||||
{"matrix": [13, 8], "x": 3, "y": 13},
|
||||
{"matrix": [13, 7], "x": 4, "y": 13},
|
||||
{"matrix": [13, 6], "x": 5, "y": 13},
|
||||
{"matrix": [13, 5], "x": 6, "y": 13},
|
||||
{"matrix": [13, 4], "x": 7, "y": 13},
|
||||
{"matrix": [13, 3], "x": 8, "y": 13},
|
||||
{"matrix": [13, 2], "x": 9, "y": 13},
|
||||
{"matrix": [13, 1], "x": 10, "y": 13},
|
||||
{"matrix": [13, 0], "x": 11, "y": 13}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
4
keyboards/hexboard/dev/rules.mk
Normal file
4
keyboards/hexboard/dev/rules.mk
Normal file
@ -0,0 +1,4 @@
|
||||
SRC += matrix.c
|
||||
CUSTOM_MATRIX = lite
|
||||
|
||||
AUDIO_DRIVER = pwm_hardware
|
11
keyboards/hexboard/halconf.h
Normal file
11
keyboards/hexboard/halconf.h
Normal file
@ -0,0 +1,11 @@
|
||||
// Copyright 2022 Stefan Kerkmann
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
#pragma once
|
||||
|
||||
#undef HAL_USE_I2C
|
||||
#define HAL_USE_I2C TRUE
|
||||
#undef HAL_USE_PWM
|
||||
#define HAL_USE_PWM TRUE
|
||||
|
||||
#include_next <halconf.h>
|
32
keyboards/hexboard/hexboard.c
Normal file
32
keyboards/hexboard/hexboard.c
Normal file
@ -0,0 +1,32 @@
|
||||
// Copyright 2022-2023 Zach DeCook
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
#ifdef AUDIO_ENABLE
|
||||
case QK_MIDI_NOTE_C_0 ... QK_MIDI_NOTE_B_5:
|
||||
if (record->event.pressed)
|
||||
process_audio_noteon(keycode - MI_C);
|
||||
else
|
||||
process_audio_noteoff(keycode - MI_C);
|
||||
// Allow the normal handler to handle it as well.
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
return process_record_user(keycode, record);
|
||||
}
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
bool oled_task_kb(void) {
|
||||
if (!oled_task_user()) {
|
||||
return false;
|
||||
}
|
||||
oled_write_P(PSTR("HexBoard running QMK\n"), false);
|
||||
oled_write_P(PSTR("\n"), false);
|
||||
oled_write_P(PSTR("FW is GPLv3-licensed\n"), false);
|
||||
oled_write_P(PSTR("https://qmk.fm/\n"), false);
|
||||
return false;
|
||||
}
|
||||
#endif
|
36
keyboards/hexboard/info.json
Normal file
36
keyboards/hexboard/info.json
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"manufacturer": "Shaping The Silence",
|
||||
"keyboard_name": "HexBoard",
|
||||
"maintainer": "earboxer",
|
||||
"audio": {
|
||||
"pins": ["GP23"],
|
||||
"voices": true
|
||||
},
|
||||
"board": "GENERIC_RP_RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "GP21", "pin_b": "GP20"}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"audio": true,
|
||||
"bootmagic": true,
|
||||
"encoder": true,
|
||||
"extrakey": true,
|
||||
"midi": true,
|
||||
"mousekey": true,
|
||||
"oled": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"rgb_matrix": {
|
||||
"driver": "ws2812"
|
||||
},
|
||||
"url": "https://shapingthesilence.com/tech/hexboard-midi-controller/",
|
||||
"ws2812": {
|
||||
"driver": "vendor",
|
||||
"pin": "GP22"
|
||||
}
|
||||
}
|
55
keyboards/hexboard/keymaps/default/keymap.c
Normal file
55
keyboards/hexboard/keymaps/default/keymap.c
Normal file
@ -0,0 +1,55 @@
|
||||
// Copyright 2022-2023 Zach DeCook
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU),},
|
||||
[1] = {ENCODER_CCW_CW(KC_BRID, KC_BRIU),},
|
||||
|
||||
};
|
||||
#endif
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_landscape(
|
||||
_______,QK_BOOT,RGB_HUI,
|
||||
MO(1), _______,RGB_VAD,RGB_MOD,
|
||||
|
||||
_______,_______,_______,KC_EQL ,_______,_______,KC_PGUP,
|
||||
_______,_______,KC_LBRC,KC_RBRC,_______,KC_HOME,KC_END ,
|
||||
_______,_______,_______,KC_MINS,_______,_______,KC_PGDN,
|
||||
_______,KC_F15 ,_______,_______,KC_F20 ,_______,_______,
|
||||
_______,KC_F14 ,KC_F16 ,_______,KC_F19 ,KC_F21 ,_______,
|
||||
KC_F13 ,KC_F3 ,KC_F17 ,KC_F18 ,KC_F8 ,KC_F22 ,_______,
|
||||
_______,KC_F2 ,KC_F4 ,_______,KC_F7 ,KC_F9 ,KC_F23 ,
|
||||
KC_F1 ,KC_3 ,KC_F5 ,KC_F6 ,KC_8 ,KC_F10 ,KC_F24 ,
|
||||
_______,KC_2 ,KC_4 ,_______,KC_7 ,KC_9 ,KC_F11 ,
|
||||
KC_1 ,KC_E ,KC_5 ,KC_6 ,KC_I ,KC_0 ,KC_F12 ,
|
||||
KC_TAB ,KC_W ,KC_R ,_______,KC_U ,KC_O ,KC_BSPC,
|
||||
KC_Q ,KC_D , KC_T ,KC_Y ,KC_K ,KC_P ,_______,
|
||||
KC_ESC ,KC_S ,KC_F ,_______,KC_J ,KC_L ,KC_QUOT,
|
||||
KC_A ,KC_C ,KC_G ,KC_H ,KC_COMM,KC_SCLN,KC_SLSH,
|
||||
KC_LSFT,KC_X ,KC_V ,_______,KC_M ,KC_DOT ,KC_ENT ,
|
||||
KC_Z ,_______,KC_B ,KC_N ,_______,KC_SLSH,_______,
|
||||
_______,_______,_______,_______,_______,_______,KC_UP ,
|
||||
KC_LCTL,KC_LGUI,_______,_______,KC_RALT,KC_LEFT,KC_RGHT,
|
||||
_______,KC_LALT,MO(1) ,KC_SPC ,KC_RGUI,KC_RCTL,KC_DOWN
|
||||
),
|
||||
[1] = LAYOUT_portrait(
|
||||
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,
|
||||
KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,
|
||||
_______, KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_H ,KC_J ,KC_K ,KC_L ,
|
||||
SFT_T(KC_SPC),KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_B ,KC_N ,KC_M ,RCTL_T(KC_COMM)
|
||||
),
|
||||
};
|
2
keyboards/hexboard/keymaps/default/rules.mk
Normal file
2
keyboards/hexboard/keymaps/default/rules.mk
Normal file
@ -0,0 +1,2 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
MIDI_ENABLE = no
|
5
keyboards/hexboard/keymaps/keyboard/config.h
Normal file
5
keyboards/hexboard/keymaps/keyboard/config.h
Normal file
@ -0,0 +1,5 @@
|
||||
// Copyright 2023 Zach DeCook
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
#pragma once
|
||||
|
||||
#define MIDI_BASIC
|
255
keyboards/hexboard/keymaps/keyboard/keymap.c
Normal file
255
keyboards/hexboard/keymaps/keyboard/keymap.c
Normal file
@ -0,0 +1,255 @@
|
||||
// Copyright 2022-2023 Zach DeCook
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "quantum/color.h"
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI),},
|
||||
[1] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU),},
|
||||
[2] = {ENCODER_CCW_CW(KC_LEFT, KC_RIGHT),},
|
||||
};
|
||||
#endif
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Hexboard Keyboard layout (landscape)
|
||||
* ___ ___ ___
|
||||
* ❬BnU ᚛-᚜AuTg᚛-᚜MiO❭__
|
||||
* ❬BnD᚛-᚜MuT᚛-᚜Pnc᚛-᚜Pnc❭
|
||||
* ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾
|
||||
* ___ ___ ___ ___ ___ ___ ___
|
||||
* ❬F 5᚛-᚜Gb5᚛-᚜G 5᚛-᚜Ab5᚛-᚜A 5᚛-᚜Bb5᚛-᚜B 5❭__
|
||||
* ᚛-᚜D 5᚛-᚜Eb5᚛-᚜E 5᚛-᚜F 5᚛-᚜Gb5᚛-᚜G 5᚛-᚜Ab5❭
|
||||
* ❬Bb4᚛-᚜B 4᚛-᚜C 5᚛-᚜Db5᚛-᚜D 5᚛-᚜Eb5᚛-᚜E 5᚛-᚜
|
||||
* ᚛-᚜G 4᚛-᚜Ab4᚛-᚜A 4᚛-᚜Bb4᚛-᚜B 4᚛-᚜C 5᚛-᚜Db5❭
|
||||
* ❬Eb4᚛-᚜E 4᚛-᚜F 4᚛-᚜Gb4᚛-᚜G 4᚛-᚜Ab4᚛-᚜A 4᚛-᚜
|
||||
* ᚛-᚜C 4᚛-᚜Db4᚛-᚜D 4᚛-᚜Eb4᚛-᚜E 4᚛-᚜F 4᚛-᚜Gb4❭
|
||||
* ❬Ab3᚛-᚜A 3᚛-᚜Bb3᚛-᚜B 3᚛-᚜C 4᚛-᚜Db4᚛-᚜D 4᚛-᚜
|
||||
* ᚛-᚜F 3᚛-᚜Gb3᚛-᚜G 3᚛-᚜Ab3᚛-᚜A 3᚛-᚜Bb3᚛-᚜B 3❭
|
||||
* ❬Db3᚛-᚜D 3᚛-᚜Eb3᚛-᚜E 3᚛-᚜F 3᚛-᚜Gb3᚛-᚜G 3᚛-᚜
|
||||
* ᚛-᚜ ᚛-᚜ E ᚛-᚜ ᚛-᚜ ᚛-᚜ I ᚛-᚜ ᚛-᚜ ❭
|
||||
* ❬TAB᚛-᚜ W ᚛-᚜ R ᚛-᚜ ᚛-᚜ U ᚛-᚜ O ᚛-᚜⌫ ᚛-᚜
|
||||
* ᚛-᚜ Q ᚛-᚜ D ᚛-᚜ T ᚛-᚜ Y ᚛-᚜ K ᚛-᚜ P ᚛-᚜ ❭
|
||||
* ❬Esc᚛-᚜ S ᚛-᚜ F ᚛-᚜ ᚛-᚜ J ᚛-᚜ L ᚛-᚜ ' ᚛-᚜
|
||||
* ᚛-᚜ A ᚛-᚜ C ᚛-᚜ G ᚛-᚜ H ᚛-᚜ , ᚛-᚜ ; ᚛-᚜ ❭
|
||||
* ❬sft᚛-᚜ X ᚛-᚜ V ᚛-᚜ ᚛-᚜ M ᚛-᚜ . ᚛-᚜ ⏎ ᚛-᚜
|
||||
* ᚛-᚜ Z ᚛-᚜ ᚛-᚜ B ᚛-᚜ N ᚛-᚜ ᚛-᚜ / ᚛-᚜ ❭
|
||||
* ❬ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜
|
||||
* ᚛-᚜Ctl᚛-᚜Sup᚛-᚜ ᚛-᚜ ᚛-᚜ 🡐 ᚛-᚜ 🡑 ᚛-᚜ ⏎ ❭
|
||||
* ❬ ᚛-᚜Alt᚛-᚜lyr᚛-᚜ ᚛-᚜LYR᚛-᚜ 🡓 ᚛-᚜ 🡒 ❭‾‾
|
||||
* ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾
|
||||
*/
|
||||
[0] = LAYOUT_landscape(
|
||||
MI_BNDU,AU_TOGG, RGB_HUI,
|
||||
MI_BNDD,MI_TOGG, RGB_VAD, RGB_MOD,
|
||||
|
||||
|
||||
MI_F5, MI_Gb5, MI_G5, MI_Ab5, MI_A5, MI_Bb5, MI_B5,
|
||||
MI_D5, MI_Eb5, MI_E5, MI_F5, MI_Gb5, MI_G5, MI_Ab5,
|
||||
MI_Bb4,MI_B4, MI_C5, MI_Db5, MI_D5, MI_Eb5, MI_E5,
|
||||
MI_G4, MI_Ab4, MI_A4, MI_Bb4, MI_B4, MI_C5, MI_Db5,
|
||||
MI_Eb4,MI_E4, MI_F4, MI_Gb4, MI_G4, MI_Ab4, MI_A4,
|
||||
MI_C4, MI_Db4, MI_D4, MI_Eb4, MI_E4, MI_F4, MI_Gb4,
|
||||
MI_Ab3,MI_A3, MI_Bb3, MI_B3, MI_C4, MI_Db4, MI_D4,
|
||||
MI_F3, MI_Gb3, MI_G3, MI_Ab3, MI_A3, MI_Bb3,MI_B3,
|
||||
MI_Db3,MI_D3, MI_Eb3, MI_E3, MI_F3, MI_Gb3, MI_G3,
|
||||
_______,KC_E, _______, _______, KC_I, _______,_______,
|
||||
KC_TAB, KC_W, KC_R, _______, KC_U, KC_O, KC_BSPC,
|
||||
KC_Q, KC_D, KC_T, KC_Y, KC_K, KC_P, _______,
|
||||
KC_ESC, KC_S, KC_F, _______, KC_J, KC_L, KC_QUOT,
|
||||
KC_A, KC_C, KC_G, KC_H, KC_COMM, KC_SCLN,_______,
|
||||
KC_LSFT,KC_X, KC_V, _______, KC_M, KC_DOT, KC_ENT,
|
||||
KC_Z, _______, KC_B, KC_N, _______, KC_SLSH,_______,
|
||||
_______,_______, _______, _______, _______, _______, _______,
|
||||
KC_LCTL,KC_LGUI, _______, _______, KC_LEFT, KC_UP,KC_ENT,
|
||||
_______,KC_LALT, MO(1), KC_SPC, MO(2), KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
|
||||
// "lower"
|
||||
/**
|
||||
* ... top rows fall through to other layer.
|
||||
* ___ ___ ___ ___ ___ ___ ___
|
||||
* ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ + ᚛-᚜ ᚛-᚜ ❭
|
||||
* ❬ ~ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ _ ᚛-᚜ { ᚛-᚜ ᚛-᚜
|
||||
* ᚛-᚜ ᚛-᚜ # ᚛-᚜ ᚛-᚜ ᚛-᚜ * ᚛-᚜ } ᚛-᚜ ❭
|
||||
* ❬ ⌦ ᚛-᚜ @ ᚛-᚜ $ ᚛-᚜ ᚛-᚜ & ᚛-᚜ ( ᚛-᚜ | ᚛-᚜
|
||||
* ᚛-᚜ ! ᚛-᚜ ᚛-᚜ % ᚛-᚜ ^ ᚛-᚜ ᚛-᚜ ) ᚛-᚜ ❭
|
||||
* ❬sft᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜
|
||||
* ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ❭
|
||||
* ❬ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜
|
||||
* ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ⇱ ᚛-᚜ ⇑ ᚛-᚜ ❭
|
||||
* ❬ ᚛-᚜ ᚛-᚜lyr᚛-᚜ ᚛-᚜LYR᚛-᚜ ⇓ ᚛-᚜ ⇲ ❭‾‾
|
||||
* ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾
|
||||
*/
|
||||
|
||||
[1] = LAYOUT_landscape(
|
||||
MI_BNDU,QK_BOOT, RGB_M_SN,
|
||||
MI_BNDD,MI_TOGG, RGB_M_B,RGB_M_SW,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,KC_PLUS,_______,_______,
|
||||
KC_TILD,_______,_______,_______,KC_UNDS,KC_LCBR,_______,
|
||||
_______,KC_HASH,_______,_______,KC_ASTR,KC_RCBR,_______,
|
||||
KC_DEL, KC_AT, KC_DLR,_______, KC_AMPR,KC_LPRN,KC_PIPE,
|
||||
KC_EXLM,_______,KC_PERC,KC_CIRC,_______,KC_RPRN,_______,
|
||||
KC_LSFT,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,KC_HOME,KC_PGUP,_______,
|
||||
_______,_______,_______,_______,_______,KC_PGDN,KC_END
|
||||
),
|
||||
// "raise"
|
||||
/**
|
||||
* ... top rows fall through to other layer.
|
||||
* ___ ___ ___ ___ ___ ___ ___
|
||||
* ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ = ᚛-᚜ ᚛-᚜ ❭
|
||||
* ❬ ~ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ _ ᚛-᚜ [ ᚛-᚜ ᚛-᚜
|
||||
* ᚛-᚜ ᚛-᚜ 3 ᚛-᚜ ᚛-᚜ ᚛-᚜ 8 ᚛-᚜ ] ᚛-᚜ ❭
|
||||
* ❬ ⌦ ᚛-᚜ 2 ᚛-᚜ 4 ᚛-᚜ ᚛-᚜ 7 ᚛-᚜ 9 ᚛-᚜ \ ᚛-᚜
|
||||
* ᚛-᚜ 1 ᚛-᚜ ᚛-᚜ 5 ᚛-᚜ 6 ᚛-᚜ ᚛-᚜ 0 ᚛-᚜ ❭
|
||||
* ❬sft᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜
|
||||
* ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ❭
|
||||
* ❬ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜
|
||||
* ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ᚛-᚜ ⇱ ᚛-᚜ ⇑ ᚛-᚜ ❭
|
||||
* ❬ ᚛-᚜ ᚛-᚜lyr᚛-᚜ ᚛-᚜LYR᚛-᚜ ⇓ ᚛-᚜ ⇲ ❭‾‾
|
||||
* ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾
|
||||
*/
|
||||
[2] = LAYOUT_landscape(
|
||||
MI_BNDU,AU_TOGG, RGB_HUI,
|
||||
MI_BNDD,MU_TOGG, RGB_VAD,RGB_MOD,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,KC_EQL ,_______,_______,
|
||||
KC_GRV ,_______,_______,_______,KC_MINS,KC_LBRC,_______,
|
||||
_______, KC_3 ,_______,_______, KC_8 ,KC_RBRC,_______,
|
||||
KC_DEL , KC_2 , KC_4 ,_______, KC_7 , KC_9 ,KC_BSLS,
|
||||
KC_1 ,_______, KC_5 , KC_6 ,_______, KC_0 ,_______,
|
||||
KC_LSFT,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,_______,_______,_______,
|
||||
_______,_______,_______,_______,KC_HOME,KC_PGUP,_______,
|
||||
_______,_______,_______,_______,_______,KC_PGDN,KC_END
|
||||
)
|
||||
|
||||
|
||||
};
|
||||
|
||||
// Hue, Saturation, Config
|
||||
#define HSC_AZURE 132, 102, rgb_matrix_config.hsv.v
|
||||
#define HSC_BLUE 170, 255, rgb_matrix_config.hsv.v
|
||||
#define HSC_CHARTREUSE 64, 255, rgb_matrix_config.hsv.v
|
||||
#define HSC_CORAL 11, 176, rgb_matrix_config.hsv.v
|
||||
#define HSC_CYAN 128, 255, rgb_matrix_config.hsv.v
|
||||
#define HSC_GOLD 36, 255, rgb_matrix_config.hsv.v
|
||||
#define HSC_GOLDENROD 30, 218, rgb_matrix_config.hsv.v
|
||||
#define HSC_GREEN 85, 255, rgb_matrix_config.hsv.v
|
||||
#define HSC_MAGENTA 213, 255, rgb_matrix_config.hsv.v
|
||||
#define HSC_ORANGE 21, 255, rgb_matrix_config.hsv.v
|
||||
#define HSC_PINK 234, 128, rgb_matrix_config.hsv.v
|
||||
#define HSC_PURPLE 191, 255, rgb_matrix_config.hsv.v
|
||||
#define HSC_RED 0, 255, rgb_matrix_config.hsv.v
|
||||
#define HSC_SPRINGGREEN 106, 255, rgb_matrix_config.hsv.v
|
||||
#define HSC_TEAL 128, 255, rgb_matrix_config.hsv.v>>1
|
||||
#define HSC_TURQUOISE 123, 90, rgb_matrix_config.hsv.v>>1
|
||||
#define HSC_WHITE 0, 0, rgb_matrix_config.hsv.v
|
||||
#define HSC_YELLOW 43, 255, rgb_matrix_config.hsv.v
|
||||
#define HSC_GRAY 0, 0, rgb_matrix_config.hsv.v>>1
|
||||
// Categories
|
||||
#define HSC_LETTERS HSC_GRAY
|
||||
#define HSC_SLETTERS HSC_WHITE
|
||||
#define HSC_NUMBERS HSC_YELLOW >> 1
|
||||
#define HSC_SNUMBERS HSC_YELLOW
|
||||
|
||||
void rgb_matrix_set_hsv(uint8_t i, uint8_t h, uint8_t s, uint8_t v) {
|
||||
HSV hsv = {h, s, v};
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
|
||||
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
|
||||
uint8_t layer = get_highest_layer(layer_state);
|
||||
if (layer < 0) {
|
||||
return false;
|
||||
}
|
||||
for (uint8_t row = 0; row < MATRIX_ROWS; ++row) {
|
||||
for (uint8_t col = 0; col < MATRIX_COLS; ++col) {
|
||||
uint8_t index = g_led_config.matrix_co[row][col];
|
||||
if (index < led_min || index >= led_max || index == NO_LED) continue;
|
||||
uint16_t keycode = keymap_key_to_keycode(layer, (keypos_t){col, row});
|
||||
if (keycode >= KC_1 && keycode <= KC_0)
|
||||
rgb_matrix_set_hsv(index, HSC_NUMBERS);
|
||||
else if (keycode >= S(KC_1) && keycode <= S(KC_0))
|
||||
rgb_matrix_set_hsv(index, HSC_SNUMBERS);
|
||||
else if (keycode == KC_ENTER || keycode == KC_TAB || keycode == KC_SPACE)
|
||||
rgb_matrix_set_hsv(index, HSC_SPRINGGREEN);
|
||||
else if (keycode == KC_BACKSPACE || keycode == KC_DELETE)
|
||||
rgb_matrix_set_hsv(index, HSC_RED);
|
||||
else if (keycode == KC_CAPS_LOCK)
|
||||
rgb_matrix_set_hsv(index, HSC_BLUE);
|
||||
else if (keycode >= KC_A && keycode <= KC_SLASH)
|
||||
rgb_matrix_set_hsv(index, HSC_LETTERS);
|
||||
else if (keycode >= S(KC_A) && keycode <= S(KC_SLASH))
|
||||
rgb_matrix_set_hsv(index, HSC_SLETTERS);
|
||||
else if (keycode >= KC_F1 && keycode <= KC_NUM_LOCK)
|
||||
rgb_matrix_set_hsv(index, HSC_BLUE);
|
||||
// TODO: numpad keycodes
|
||||
else if (keycode >= KC_APPLICATION && keycode <= KC_MS_ACCEL2)
|
||||
rgb_matrix_set_hsv(index, HSC_BLUE);
|
||||
else if (keycode >= KC_LEFT_CTRL && keycode <= KC_RIGHT_GUI)
|
||||
rgb_matrix_set_hsv(index, HSC_PURPLE);
|
||||
// TODO: magic keycodes
|
||||
else if (keycode >= QK_MIDI_NOTE_C_0 && keycode <= QK_MIDI_NOTE_B_5) {
|
||||
rgb_matrix_set_hsv(index, ((keycode - QK_MIDI_NOTE_C_0) % 12) * 21, 255, rgb_matrix_config.hsv.v);
|
||||
}
|
||||
// sequencer, joystick, programmable, settings...
|
||||
else if (keycode == MO(1) || keycode == MO(2))
|
||||
rgb_matrix_set_hsv(index, HSC_PINK);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
bool oled_task_user(void) {
|
||||
// Host Keyboard Layer Status
|
||||
oled_write_P(PSTR(" Layer: "), false);
|
||||
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case 0:
|
||||
oled_write_P(PSTR("Default\n"), false);
|
||||
break;
|
||||
case 1:
|
||||
oled_write_P(PSTR("symbols\n"), false);
|
||||
break;
|
||||
case 2:
|
||||
oled_write_P(PSTR("numbers\n"), false);
|
||||
break;
|
||||
default:
|
||||
// Or use the write_ln shortcut over adding '\n' to the end of your string
|
||||
oled_write_ln_P(PSTR("Undefined"), false);
|
||||
}
|
||||
|
||||
// Host Keyboard LED Status
|
||||
// led_t led_state = host_keyboard_led_state();
|
||||
// oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
|
||||
// oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
||||
// oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
1
keyboards/hexboard/keymaps/keyboard/rules.mk
Normal file
1
keyboards/hexboard/keymaps/keyboard/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
5
keyboards/hexboard/keymaps/midi/config.h
Normal file
5
keyboards/hexboard/keymaps/midi/config.h
Normal file
@ -0,0 +1,5 @@
|
||||
// Copyright 2023 Zach DeCook
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
#pragma once
|
||||
|
||||
#define MIDI_ADVANCED
|
268
keyboards/hexboard/keymaps/midi/keymap.c
Normal file
268
keyboards/hexboard/keymaps/midi/keymap.c
Normal file
@ -0,0 +1,268 @@
|
||||
// Copyright 2022-2023 Zach DeCook
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Define the keycode, `QK_USER` avoids collisions with existing keycodes
|
||||
enum keycodes {
|
||||
KC_CYCLE_LAYERS = QK_USER,
|
||||
KC_ENCODER_CCW,
|
||||
KC_ENCODER_CW,
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = {ENCODER_CCW_CW(KC_ENCODER_CCW, KC_ENCODER_CW),},
|
||||
[1] = {ENCODER_CCW_CW(KC_ENCODER_CCW, KC_ENCODER_CW),},
|
||||
[2] = {ENCODER_CCW_CW(KC_ENCODER_CCW, KC_ENCODER_CW),},
|
||||
[3] = {ENCODER_CCW_CW(KC_ENCODER_CCW, KC_ENCODER_CW),},
|
||||
};
|
||||
#endif
|
||||
|
||||
// 1st layer on the cycle
|
||||
#define LAYER_CYCLE_START 0
|
||||
// Last layer on the cycle
|
||||
#define LAYER_CYCLE_END 3
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Hexboard Harmonic table layout (landscape)
|
||||
* ___ ___ ___
|
||||
* ❬BnU ᚛-᚜ ᚛-᚜VlM❭__
|
||||
* ❬BnD᚛-᚜Mod᚛-᚜VlL᚛-᚜VlH❭
|
||||
* ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾
|
||||
* ___ ___ ___ ___ ___ ___ ___
|
||||
* ❬F 5᚛-᚜Gb5᚛-᚜G 5᚛-᚜Ab5᚛-᚜A 5᚛-᚜Bb5᚛-᚜B 5❭__
|
||||
* ᚛-᚜D 5᚛-᚜Eb5᚛-᚜E 5᚛-᚜F 5᚛-᚜Gb5᚛-᚜G 5᚛-᚜Ab5❭
|
||||
* ❬Bb4᚛-᚜B 4᚛-᚜C 5᚛-᚜Db5᚛-᚜D 5᚛-᚜Eb5᚛-᚜E 5᚛-᚜
|
||||
* ᚛-᚜G 4᚛-᚜Ab4᚛-᚜A 4᚛-᚜Bb4᚛-᚜B 4᚛-᚜C 5᚛-᚜Db5❭
|
||||
* ❬Eb4᚛-᚜E 4᚛-᚜F 4᚛-᚜Gb4᚛-᚜G 4᚛-᚜Ab4᚛-᚜A 4᚛-᚜
|
||||
* ᚛-᚜C 4᚛-᚜Db4᚛-᚜D 4᚛-᚜Eb4᚛-᚜E 4᚛-᚜F 4᚛-᚜Gb4❭
|
||||
* ❬Ab3᚛-᚜A 3᚛-᚜Bb3᚛-᚜B 3᚛-᚜C 4᚛-᚜Db4᚛-᚜D 4᚛-᚜
|
||||
* ᚛-᚜F 3᚛-᚜Gb3᚛-᚜G 3᚛-᚜Ab3᚛-᚜A 3᚛-᚜Bb3᚛-᚜B 3❭
|
||||
* ❬Db3᚛-᚜D 3᚛-᚜Eb3᚛-᚜E 3᚛-᚜F 3᚛-᚜Gb3᚛-᚜G 3᚛-᚜
|
||||
* ᚛-᚜Bb2᚛-᚜B 2᚛-᚜C 3᚛-᚜Db3᚛-᚜D 3᚛-᚜Eb3᚛-᚜E 3❭
|
||||
* ❬Gb2᚛-᚜G 2᚛-᚜Ab2᚛-᚜A 2᚛-᚜Bb2᚛-᚜B 2᚛-᚜C 3᚛-᚜
|
||||
* ᚛-᚜Eb2᚛-᚜E 2᚛-᚜F 2᚛-᚜Gb2᚛-᚜G 2᚛-᚜Ab2᚛-᚜A 2❭
|
||||
* ❬B 1᚛-᚜C 2᚛-᚜Db2᚛-᚜D 2᚛-᚜Eb2᚛-᚜E 2᚛-᚜F 2᚛-᚜
|
||||
* ᚛-᚜Ab1᚛-᚜A 1᚛-᚜Bb1᚛-᚜B 1᚛-᚜C 2᚛-᚜Db2᚛-᚜D 2❭
|
||||
* ❬E 1᚛-᚜F 1᚛-᚜Gb1᚛-᚜G 1᚛-᚜Ab1᚛-᚜A 1᚛-᚜Bb1᚛-᚜
|
||||
* ᚛-᚜Db1᚛-᚜D 1᚛-᚜Eb1᚛-᚜E 1᚛-᚜F 1᚛-᚜Gb1᚛-᚜G 1❭
|
||||
* ❬A ᚛-᚜Bb ᚛-᚜B ᚛-᚜C 1᚛-᚜Db1᚛-᚜D 1᚛-᚜Eb1᚛-᚜
|
||||
* ᚛-᚜Gb ᚛-᚜G ᚛-᚜Ab ᚛-᚜A ᚛-᚜Bb ᚛-᚜B ᚛-᚜C 1❭
|
||||
* ❬D ᚛-᚜Eb ᚛-᚜E ᚛-᚜F ᚛-᚜Gb ᚛-᚜G ᚛-᚜Ab ❭‾‾
|
||||
* ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾ ‾‾‾
|
||||
*/
|
||||
[0] = LAYOUT_landscape(
|
||||
MI_BNDU,KC_CYCLE_LAYERS,MI_VL5,
|
||||
MI_BNDD,MI_MOD, MI_VL2,MI_VL10,
|
||||
|
||||
|
||||
MI_F5, MI_Gb5, MI_G5, MI_Ab5, MI_A5, MI_Bb5, MI_B5,
|
||||
MI_D5, MI_Eb5, MI_E5, MI_F5, MI_Gb5, MI_G5, MI_Ab5,
|
||||
MI_Bb4, MI_B4, MI_C5, MI_Db5, MI_D5, MI_Eb5, MI_E5,
|
||||
MI_G4, MI_Ab4, MI_A4, MI_Bb4, MI_B4, MI_C5, MI_Db5,
|
||||
MI_Eb4, MI_E4, MI_F4, MI_Gb4, MI_G4, MI_Ab4, MI_A4,
|
||||
MI_C4, MI_Db4, MI_D4, MI_Eb4, MI_E4, MI_F4, MI_Gb4,
|
||||
MI_Ab3, MI_A3, MI_Bb3, MI_B3, MI_C4, MI_Db4, MI_D4,
|
||||
MI_F3, MI_Gb3, MI_G3, MI_Ab3, MI_A3, MI_Bb3, MI_B3,
|
||||
MI_Db3, MI_D3, MI_Eb3, MI_E3, MI_F3, MI_Gb3, MI_G3,
|
||||
MI_Bb2, MI_B2, MI_C3, MI_Db3, MI_D3, MI_Eb3, MI_E3,
|
||||
MI_Gb2, MI_G2, MI_Ab2, MI_A2, MI_Bb2, MI_B2, MI_C3,
|
||||
MI_Eb2, MI_E2, MI_F2, MI_Gb2, MI_G2, MI_Ab2, MI_A2,
|
||||
MI_B1, MI_C2, MI_Db2, MI_D2, MI_Eb2, MI_E2, MI_F2,
|
||||
MI_Ab1, MI_A1, MI_Bb1, MI_B1, MI_C2, MI_Db2, MI_D2,
|
||||
MI_E1, MI_F1, MI_Gb1, MI_G1, MI_Ab1, MI_A1, MI_Bb1,
|
||||
MI_Db1, MI_D1, MI_Eb1, MI_E1, MI_F1, MI_Gb1, MI_G1,
|
||||
MI_A, MI_Bb, MI_B, MI_C1, MI_Db1, MI_D1, MI_Eb1,
|
||||
MI_Gb, MI_G, MI_Ab, MI_A, MI_Bb, MI_B, MI_C1,
|
||||
MI_D, MI_Eb, MI_E, MI_F, MI_Gb1, MI_G, MI_Ab
|
||||
),
|
||||
// wickiHaydenLayout
|
||||
// ./makeLayout.py 79 2 -7 qmk
|
||||
[1] = LAYOUT_portrait(
|
||||
MI_VL10, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
MI_VL5, MI_G5, MI_A5, MI_B5, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
MI_C5, MI_D5, MI_E5, MI_Gb5, MI_Ab5, MI_Bb5, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
MI_VL2, MI_G4, MI_A4, MI_B4, MI_Db5, MI_Eb5, MI_F5, MI_G5, MI_A5, MI_B5,
|
||||
MI_C4, MI_D4, MI_E4, MI_Gb4, MI_Ab4, MI_Bb4, MI_C5, MI_D5, MI_E5, MI_Gb5,
|
||||
QK_USER, MI_G3, MI_A3, MI_B3, MI_Db4, MI_Eb4, MI_F4, MI_G4, MI_A4, MI_B4,
|
||||
MI_C3, MI_D3, MI_E3, MI_Gb3, MI_Ab3, MI_Bb3, MI_C4, MI_D4, MI_E4, MI_Gb4,
|
||||
MI_MOD, MI_G2, MI_A2, MI_B2, MI_Db3, MI_Eb3, MI_F3, MI_G3, MI_A3, MI_B3,
|
||||
MI_C2, MI_D2, MI_E2, MI_Gb2, MI_Ab2, MI_Bb2, MI_C3, MI_D3, MI_E3, MI_Gb3,
|
||||
MI_BNDU, MI_G1, MI_A1, MI_B1, MI_Db2, MI_Eb2, MI_F2, MI_G2, MI_A2, MI_B2,
|
||||
MI_C1, MI_D1, MI_E1, MI_Gb1, MI_Ab1, MI_Bb1, MI_C2, MI_D2, MI_E2, MI_Gb2,
|
||||
MI_BNDD, MI_G, MI_A, MI_B, MI_Db1, MI_Eb1, MI_F1, MI_G1, MI_A1, MI_B1,
|
||||
MI_C, MI_D, MI_E, MI_Gb, MI_Ab, MI_Bb, MI_C1, MI_D1, MI_E1, MI_Gb1
|
||||
),
|
||||
// gerhardLayout
|
||||
// ./makeLayout.py 62 -1 -3 qmk
|
||||
[2] = LAYOUT_portrait(
|
||||
MI_VL10, MI_D5, MI_Db5, MI_C5, MI_B4, MI_Bb4, MI_A4, MI_Ab4, MI_G4, MI_Gb4,
|
||||
MI_B4, MI_Bb4, MI_A4, MI_Ab4, MI_G4, MI_Gb4, MI_F4, MI_E4, MI_Eb4, MI_D4,
|
||||
MI_VL5, MI_G4, MI_Gb4, MI_F4, MI_E4, MI_Eb4, MI_D4, MI_Db4, MI_C4, MI_B3,
|
||||
MI_E4, MI_Eb4, MI_D4, MI_Db4, MI_C4, MI_B3, MI_Bb3, MI_A3, MI_Ab3, MI_G3,
|
||||
MI_VL2, MI_C4, MI_B3, MI_Bb3, MI_A3, MI_Ab3, MI_G3, MI_Gb3, MI_F3, MI_E3,
|
||||
MI_A3, MI_Ab3, MI_G3, MI_Gb3, MI_F3, MI_E3, MI_Eb3, MI_D3, MI_Db3, MI_C3,
|
||||
QK_USER, MI_F3, MI_E3, MI_Eb3, MI_D3, MI_Db3, MI_C3, MI_B2, MI_Bb2, MI_A2,
|
||||
MI_D3, MI_Db3, MI_C3, MI_B2, MI_Bb2, MI_A2, MI_Ab2, MI_G2, MI_Gb2, MI_F2,
|
||||
MI_MOD, MI_Bb2, MI_A2, MI_Ab2, MI_G2, MI_Gb2, MI_F2, MI_E2, MI_Eb2, MI_D2,
|
||||
MI_G2, MI_Gb2, MI_F2, MI_E2, MI_Eb2, MI_D2, MI_Db2, MI_C2, MI_B1, MI_Bb1,
|
||||
MI_BNDU, MI_Eb2, MI_D2, MI_Db2, MI_C2, MI_B1, MI_Bb1, MI_A1, MI_Ab1, MI_G1,
|
||||
MI_C2, MI_B1, MI_Bb1, MI_A1, MI_Ab1, MI_G1, MI_Gb1, MI_F1, MI_E1, MI_Eb1,
|
||||
MI_BNDD, MI_Ab1, MI_G1, MI_Gb1, MI_F1, MI_E1, MI_Eb1, MI_D1, MI_Db1, MI_C1,
|
||||
MI_F1, MI_E1, MI_Eb1, MI_D1, MI_Db1, MI_C1, MI_B, MI_Bb, MI_A, MI_Ab
|
||||
),
|
||||
// "Full" layout -- notably not full in qmk
|
||||
// ./makeLayout.py 132 -1 -9 qmk
|
||||
[3] = LAYOUT_portrait(
|
||||
MI_VL10, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
MI_VL5, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
MI_VL2, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
QK_USER, KC_NO, KC_NO, KC_NO, KC_NO, MI_B5, MI_Bb5, MI_A5, MI_Ab5, MI_G5,
|
||||
MI_Gb5, MI_F5, MI_E5, MI_Eb5, MI_D5, MI_Db5, MI_C5, MI_B4, MI_Bb4, MI_A4,
|
||||
MI_MOD, MI_Ab4, MI_G4, MI_Gb4, MI_F4, MI_E4, MI_Eb4, MI_D4, MI_Db4, MI_C4,
|
||||
MI_B3, MI_Bb3, MI_A3, MI_Ab3, MI_G3, MI_Gb3, MI_F3, MI_E3, MI_Eb3, MI_D3,
|
||||
MI_BNDU, MI_Db3, MI_C3, MI_B2, MI_Bb2, MI_A2, MI_Ab2, MI_G2, MI_Gb2, MI_F2,
|
||||
MI_E2, MI_Eb2, MI_D2, MI_Db2, MI_C2, MI_B1, MI_Bb1, MI_A1, MI_Ab1, MI_G1,
|
||||
MI_BNDD, MI_Gb1, MI_F1, MI_E1, MI_Eb1, MI_D1, MI_Db1, MI_C1, MI_B, MI_Bb,
|
||||
MI_A, MI_Ab, MI_G, MI_Gb, MI_F, MI_E, MI_Eb, MI_D, MI_Db, MI_C
|
||||
),
|
||||
};
|
||||
|
||||
void rgb_matrix_set_hsv(uint8_t i, uint8_t h, uint8_t s, uint8_t v) {
|
||||
HSV hsv = {h, s, v};
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
|
||||
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
|
||||
if (get_highest_layer(layer_state) < 0) {
|
||||
return false;
|
||||
}
|
||||
uint8_t layer = get_highest_layer(layer_state);
|
||||
for (uint8_t row = 0; row < MATRIX_ROWS; ++row) {
|
||||
for (uint8_t col = 0; col < MATRIX_COLS; ++col) {
|
||||
uint8_t index = g_led_config.matrix_co[row][col];
|
||||
if (index < led_min || index >= led_max || index == NO_LED) continue;
|
||||
uint16_t keycode = keymap_key_to_keycode(layer, (keypos_t){col, row});
|
||||
if (keycode >= QK_MIDI_NOTE_C_0 && keycode <= QK_MIDI_NOTE_B_5) {
|
||||
rgb_matrix_set_hsv(index, ((keycode - QK_MIDI_NOTE_C_0) % 12) * 21, 255, rgb_matrix_config.hsv.v);
|
||||
} else if (keycode == QK_MIDI_PITCH_BEND_DOWN || keycode == QK_MIDI_PITCH_BEND_UP) {
|
||||
// TODO: Make this reflect the internal pitch bend value.
|
||||
rgb_matrix_set_hsv(index, 0, 255, rgb_matrix_config.hsv.v);
|
||||
} else if (keycode == QK_MIDI_MODULATION) {
|
||||
// TODO: Make this reflect the internal modulation value.
|
||||
rgb_matrix_set_hsv(index, 85, 255, rgb_matrix_config.hsv.v);
|
||||
} else if (keycode >= QK_MIDI_VELOCITY_0 && keycode <= QK_MIDI_VELOCITY_10) {
|
||||
uint8_t vlev = keycode - QK_MIDI_VELOCITY_0; // 0-10
|
||||
// Set brightness based on which is closest.
|
||||
uint8_t brightness = 127 - abs((vlev * 12) - midi_config.velocity);
|
||||
if (brightness > rgb_matrix_config.hsv.v) brightness = rgb_matrix_config.hsv.v;
|
||||
// Highest velocity is red.
|
||||
rgb_matrix_set_hsv(index, (10 - (vlev)) * 20, 255, brightness);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
uint16_t held_keycode = 0;
|
||||
// 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;
|
||||
// Track the option buttons so they can modify the behavior of the encoder.
|
||||
case MI_BNDU:
|
||||
case MI_BNDD:
|
||||
case MI_MOD:
|
||||
case MI_VL2:
|
||||
case MI_VL5:
|
||||
case MI_VL10:
|
||||
if (record->event.pressed) {
|
||||
held_keycode = keycode;
|
||||
} else if (held_keycode == keycode) {
|
||||
held_keycode = 0;
|
||||
}
|
||||
// process normally
|
||||
return true;
|
||||
case KC_ENCODER_CCW:
|
||||
case KC_ENCODER_CW:
|
||||
switch (held_keycode) {
|
||||
case MI_MOD:
|
||||
if (keycode == KC_ENCODER_CW ? midi_config.modulation_interval != 255 : midi_config.modulation_interval != 0) {
|
||||
midi_config.modulation_interval += (keycode == KC_ENCODER_CW ? 1 : -1);
|
||||
}
|
||||
break;
|
||||
case MI_VL2:
|
||||
case MI_VL5:
|
||||
case MI_VL10:
|
||||
if (keycode == KC_ENCODER_CW ? midi_config.velocity != 127 : midi_config.velocity != 0) {
|
||||
midi_config.velocity += (keycode == KC_ENCODER_CW ? 1 : -1);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
// done processing.
|
||||
return false;
|
||||
// Process other keycodes normally
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
bool oled_task_user(void) {
|
||||
// Host Keyboard Layer Status
|
||||
oled_write_P(PSTR("Layer:"), false);
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case 0:
|
||||
// skip the space because this fill the OLED width
|
||||
oled_write_ln_P(PSTR("Harmonic Table"), false);
|
||||
break;
|
||||
case 1:
|
||||
oled_write_ln_P(PSTR(" Wicki-Hayden"), false);
|
||||
break;
|
||||
case 2:
|
||||
oled_write_ln_P(PSTR(" Gerhard"), false);
|
||||
break;
|
||||
case 3:
|
||||
oled_write_ln_P(PSTR(" 'Full'"), false);
|
||||
break;
|
||||
default:
|
||||
// Or use the write_ln shortcut over adding '\n' to the end of your string
|
||||
oled_write_ln_P(PSTR("Undefined"), false);
|
||||
}
|
||||
oled_write_P(PSTR("Velocity: "), held_keycode >= MI_VL0 && held_keycode <= MI_VL10);
|
||||
oled_write_ln(get_u8_str(midi_config.velocity, ' '), false);
|
||||
oled_write_P(PSTR("Octave: "), held_keycode >= MI_OCN2 && held_keycode <= MI_OCTU);
|
||||
oled_write_ln(get_u8_str(midi_config.octave, ' '), false);
|
||||
oled_write_P(PSTR("Transposition: "), held_keycode >= MI_TRN6 && held_keycode <= MI_TRSU);
|
||||
oled_write_ln(get_u8_str(midi_config.transpose, ' '), false);
|
||||
oled_write_P(PSTR("Mod Int: "), held_keycode >= MI_MOD && held_keycode <= MI_MODU);
|
||||
oled_write_ln(get_u8_str(midi_config.modulation_interval, ' '), false);
|
||||
return false;
|
||||
}
|
||||
#endif
|
1
keyboards/hexboard/keymaps/midi/rules.mk
Normal file
1
keyboards/hexboard/keymaps/midi/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
55
keyboards/hexboard/matrix.c
Normal file
55
keyboards/hexboard/matrix.c
Normal file
@ -0,0 +1,55 @@
|
||||
// Copyright 2023 Zach DeCook
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
#include "matrix.h"
|
||||
|
||||
static const uint8_t columns[MATRIX_COLS] = MATRIX_COL_PINS;
|
||||
|
||||
// At least four of these should be defined!
|
||||
static const pin_t mux_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
|
||||
|
||||
void matrix_init_custom(void) {
|
||||
// Set pinModes for the digital button matrix.
|
||||
// For each column pin...
|
||||
for (int pinNumber = 0; pinNumber < MATRIX_COLS; pinNumber++) {
|
||||
// set the pinMode to INPUT_PULLUP (+3.3V / HIGH).
|
||||
gpio_set_pin_input_high(columns[pinNumber]);
|
||||
}
|
||||
gpio_set_pin_output(mux_pins[0]);
|
||||
gpio_set_pin_output(mux_pins[1]);
|
||||
gpio_set_pin_output(mux_pins[2]);
|
||||
gpio_set_pin_output(mux_pins[3]);
|
||||
}
|
||||
|
||||
bool matrix_scan_custom(matrix_row_t current_matrix[]) {
|
||||
bool matrix_has_changed = false;
|
||||
|
||||
// Button Deck
|
||||
// Iterate through each of the row pins on the multiplexing chip.
|
||||
for (int rowIndex = 0; rowIndex < 14; rowIndex++) {
|
||||
gpio_write_pin(mux_pins[0], rowIndex & 1);
|
||||
gpio_write_pin(mux_pins[1], (rowIndex & 2) >> 1);
|
||||
gpio_write_pin(mux_pins[2], (rowIndex & 4) >> 2);
|
||||
gpio_write_pin(mux_pins[3], (rowIndex & 8) >> 3);
|
||||
// Now iterate through each of the column pins that are connected to the current row pin.
|
||||
for (int columnIndex = 0; columnIndex < MATRIX_COLS; columnIndex++) {
|
||||
// Hold the currently selected column pin in a variable.
|
||||
pin_t columnPin = columns[columnIndex];
|
||||
// Set that row pin to INPUT_PULLUP mode (+3.3V / HIGH).
|
||||
gpio_set_pin_input_high(columnPin);
|
||||
matrix_io_delay();
|
||||
bool previousValue = (current_matrix[rowIndex] >> columnIndex) & 1;
|
||||
bool buttonState = !gpio_read_pin(columnPin); // inverted...
|
||||
matrix_has_changed |= previousValue != buttonState;
|
||||
if (buttonState) {
|
||||
current_matrix[rowIndex] |= (1 << columnIndex);
|
||||
} else {
|
||||
current_matrix[rowIndex] &= ~(1 << columnIndex);
|
||||
}
|
||||
|
||||
// Set the selected column pin back to INPUT mode (0V / LOW).
|
||||
gpio_set_pin_input(columnPin);
|
||||
}
|
||||
}
|
||||
|
||||
return matrix_has_changed;
|
||||
}
|
15
keyboards/hexboard/mcuconf.h
Normal file
15
keyboards/hexboard/mcuconf.h
Normal file
@ -0,0 +1,15 @@
|
||||
// Copyright 2023 Zach DeCook
|
||||
// SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef RP_I2C_USE_I2C0
|
||||
#define RP_I2C_USE_I2C0 TRUE
|
||||
#undef RP_I2C_USE_I2C1
|
||||
#define RP_I2C_USE_I2C1 FALSE
|
||||
|
||||
// For audio, pin 23 is PWM3 B
|
||||
#undef RP_PWM_USE_PWM3
|
||||
#define RP_PWM_USE_PWM3 TRUE
|
34
keyboards/hexboard/readme.md
Normal file
34
keyboards/hexboard/readme.md
Normal file
@ -0,0 +1,34 @@
|
||||
# HexBoard
|
||||
|
||||

|
||||
|
||||
*The HexBoard is a 140-key hexagonal MIDI controller which can double as a 120% keyboard*
|
||||
|
||||
* Keyboard Maintainer: [Zach DeCook](https://github.com/earboxer)
|
||||
* Hardware Supported: Dev Unit with RP2040 Processor, HexBoard Production Unit (1.1)
|
||||
* Hardware Not Supported: Dev Unit with Teensy Processor
|
||||
* Hardware Availability:
|
||||
* HexBoard Production Unit (1.1) https://shapingthesilence.com/tech/hexboard-midi-controller/ Since 2023.
|
||||
|
||||
The ["Arduino" firmware](https://sr.ht/~earboxer/HexBoard/) remains the official firmware for the HexBoard, but QMK can be used as an alternative which offers keyboard functionality.
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make hexboard/1_1:default
|
||||
make hexboard/dev:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make hexboard/1_1:default:flash
|
||||
make hexboard/dev: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).
|
||||
|
||||
## Flashing the Firmware
|
||||
|
||||
0. When you run the flash command, it will say "Waiting for drive to deploy..."
|
||||
1. On the production model, hold the little button next to the USB-C port when plugging it in.
|
||||
* On the dev model, hold the little button labeled RPBOOT while plugging it in
|
||||
2. Mount the device on your computer
|
||||
3. The flash command will copy the uf2 file onto the mounted device
|
||||
4. Wait (maybe seven seconds)
|
Loading…
Reference in New Issue
Block a user