mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-16 12:51:47 +00:00
Merge branch 'pr/21213' into planck_fixes
This commit is contained in:
commit
3191d75c6d
@ -4,6 +4,8 @@
|
||||
|
||||
The [QMK Configurator](https://config.qmk.fm) is an online graphical user interface that generates QMK Firmware `.hex` or `.bin` files.
|
||||
|
||||
It should be noted that Configurator cannot produce firmwares for keyboards using a different controller than they were designed for, i.e. an RP2040 controller on a board designed for pro micro. You will have to use the command line [converters](https://docs.qmk.fm/#/feature_converters?id=supported-converters) for this.
|
||||
|
||||
Watch the [Video Tutorial](https://www.youtube.com/watch?v=-imgglzDMdY). Many people find that is enough information to start programming their own keyboard.
|
||||
|
||||
The QMK Configurator works best with Chrome or Firefox.
|
||||
|
@ -15,7 +15,7 @@ Different keyboards have different ways to enter this special mode. If your PCB
|
||||
* Press the physical `RESET` button, usually located on the underside of the PCB
|
||||
* Locate header pins on the PCB labeled `RESET` and `GND`, and short them together while plugging your PCB in
|
||||
|
||||
If you've attempted all of the above to no avail, and the main chip on the board says `STM32` on it, this may be a bit more complicated. Generally your best bet is to ask on [Discord](https://discord.gg/Uq7gcHh) for assistance. It's likely some photos of the board will be asked for -- if you can get them ready beforehand it'll help move things along!
|
||||
If you've attempted all of the above to no avail, and the main chip on the board says `STM32` or `RP2-B1` on it, this may be a bit more complicated. Generally your best bet is to ask on [Discord](https://discord.gg/Uq7gcHh) for assistance. It's likely some photos of the board will be asked for -- if you can get them ready beforehand it'll help move things along!
|
||||
|
||||
Otherwise, you should see a message in yellow, similar to this in QMK Toolbox:
|
||||
|
||||
@ -31,6 +31,8 @@ The simplest way to flash your keyboard will be with the [QMK Toolbox](https://g
|
||||
|
||||
However, the Toolbox is currently only available for Windows and macOS. If you're using Linux (or just wish to flash the firmware from the command line), skip to the [Flash your Keyboard from the Command Line](#flash-your-keyboard-from-the-command-line) section.
|
||||
|
||||
?> QMK Toolbox is not necessary for flashing [RP2040 devices](https://docs.qmk.fm/#/flashing?id=raspberry-pi-rp2040-uf2).
|
||||
|
||||
### Load the File into QMK Toolbox
|
||||
|
||||
Begin by opening the QMK Toolbox application. You'll want to locate the firmware file in Finder or Explorer. Your keyboard firmware may be in one of two formats- `.hex` or `.bin`. QMK tries to copy the appropriate one for your keyboard into the root `qmk_firmware` directory.
|
||||
|
@ -15,8 +15,11 @@
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "STM32F072",
|
||||
"bootloader": "stm32-dfu",
|
||||
"layout_aliases": {
|
||||
"LAYOUT": "LAYOUT_all"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
@ -47,21 +50,21 @@
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"matrix": [2, 0], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
|
||||
{"matrix": [2, 1], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 2], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
@ -88,6 +91,284 @@
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso_tsangan_split_rshift": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [1, 13], "x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 13], "x": 14, "y": 3},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso_tsangan_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"matrix": [1, 13], "x": 14, "y": 0},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 13], "x": 14, "y": 3},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso_wkl_split_rshift": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [1, 13], "x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 13], "x": 14, "y": 3},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso_wkl_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"matrix": [1, 13], "x": 14, "y": 0},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 13], "x": 14, "y": 3},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,14 +18,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// main layer
|
||||
[0] = LAYOUT(
|
||||
[0] = 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_NO, 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
|
||||
// basic function layer
|
||||
[1] = LAYOUT(
|
||||
[1] = LAYOUT_all(
|
||||
QK_BOOT, 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_DEL,
|
||||
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NUHS, KC_TRNS,
|
||||
|
@ -18,28 +18,28 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// main layer
|
||||
[0] = LAYOUT(
|
||||
[0] = LAYOUT_all(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
|
||||
// basic function layer
|
||||
[1] = LAYOUT(
|
||||
[1] = LAYOUT_all(
|
||||
QK_BOOT, 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_DEL,
|
||||
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
// extra layer for VIA
|
||||
[2] = LAYOUT(
|
||||
[2] = LAYOUT_all(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
||||
// extra layer for VIA
|
||||
[3] = LAYOUT(
|
||||
[3] = LAYOUT_all(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
|
24
keyboards/4pplet/waffling60/rev_d_iso/matrix_diagram.md
Normal file
24
keyboards/4pplet/waffling60/rev_d_iso/matrix_diagram.md
Normal file
@ -0,0 +1,24 @@
|
||||
# Matrix Diagram for 4pplet Waffling60 Rev D ISO
|
||||
|
||||
```
|
||||
┌───────┐
|
||||
2u Backspace │1D │
|
||||
└───────┘
|
||||
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
|
||||
│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │1D │
|
||||
├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
|
||||
│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │ │
|
||||
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐2D │
|
||||
│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │ │
|
||||
├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤
|
||||
│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │
|
||||
├────┴┬──┴┬──┴──┬┴───┴───┴──┬┴──┬┴───┴───┴──┬┴───┴┬───┬─┴───┤
|
||||
│40 │41 │42 │44 │46 │48 │4B │4C │4D │
|
||||
└─────┴───┴─────┴───────────┴───┴───────────┴─────┴───┴─────┘
|
||||
┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
|
||||
│40 │41 │42 │46 │4B │4C │4D │ Tsangan/WKL/HHKB
|
||||
└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
|
||||
┌─────┬───┬───────────────────────────────────────┬───┬─────┐
|
||||
│40 │41 │46 │4C │4D │ 10u Spacebar
|
||||
└─────┴───┴───────────────────────────────────────┴───┴─────┘
|
||||
```
|
162
keyboards/akko/5108/5108.c
Normal file
162
keyboards/akko/5108/5108.c
Normal file
@ -0,0 +1,162 @@
|
||||
/* Copyright (C) 2022 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "quantum.h"
|
||||
// clang-format off
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
|
||||
/* Refer to IS31 manual for these locations
|
||||
* driver
|
||||
* | R location
|
||||
* | | G location
|
||||
* | | | B location
|
||||
* | | | | */
|
||||
/*row0*/
|
||||
{1, A_1, B_1, C_1},
|
||||
{1, A_2, B_2, C_2},
|
||||
{1, A_3, B_3, C_3},
|
||||
{1, A_4, B_4, C_4},
|
||||
{1, A_5, B_5, C_5},
|
||||
{1, A_6, B_6, C_6},
|
||||
{1, A_7, B_7, C_7},
|
||||
{1, A_8, B_8, C_8},
|
||||
{1, A_9, B_9, C_9},
|
||||
{1, A_10, B_10, C_10},
|
||||
{1, A_11, B_11, C_11},
|
||||
{1, A_12, B_12, C_12},
|
||||
{1, A_13, B_13, C_13},
|
||||
{1, A_14, B_14, C_14},
|
||||
{1, A_15, B_15, C_15},
|
||||
{1, A_16, B_16, C_16},
|
||||
{1, D_11, E_11, F_11},
|
||||
{1, D_12, E_12, F_12},
|
||||
{1, D_13, E_13, F_13},
|
||||
{1, D_14, E_14, F_14},
|
||||
|
||||
/*row1*/
|
||||
{0, A_1, B_1, C_1},
|
||||
{0, A_2, B_2, C_2},
|
||||
{0, A_3, B_3, C_3},
|
||||
{0, A_4, B_4, C_4},
|
||||
{0, A_5, B_5, C_5},
|
||||
{0, A_6, B_6, C_6},
|
||||
{0, A_7, B_7, C_7},
|
||||
{0, A_8, B_8, C_8},
|
||||
{0, A_9, B_9, C_9},
|
||||
{0, A_10, B_10, C_10},
|
||||
{0, A_11, B_11, C_11},
|
||||
{0, A_12, B_12, C_12},
|
||||
{0, A_13, B_13, C_13},
|
||||
{0, A_14, B_14, C_14},
|
||||
{1, D_1, E_1, F_1 },
|
||||
{1, D_2, E_2, F_2},
|
||||
{1, D_3, E_3, F_3},
|
||||
{1, D_4, E_4, F_4},
|
||||
{1, D_5, E_5, F_5},
|
||||
{1, D_6, E_6, F_6},
|
||||
{1, D_7, E_7, F_7},
|
||||
|
||||
/*row2*/
|
||||
{0, D_1, E_1, F_1},
|
||||
{0, D_2, E_2, F_2},
|
||||
{0, D_3, E_3, F_3},
|
||||
{0, D_4, E_4, F_4},
|
||||
{0, D_5, E_5, F_5},
|
||||
{0, D_6, E_6, F_6},
|
||||
{0, D_7, E_7, F_7},
|
||||
{0, D_8, E_8, F_8},
|
||||
{0, D_9, E_9, F_9},
|
||||
{0, D_10, E_10, F_10},
|
||||
{0, D_11, E_11, F_11},
|
||||
{0, D_12, E_12, F_12},
|
||||
{0, D_13, E_13, F_13},
|
||||
{0, D_14, E_14, F_14},
|
||||
{1, G_1, H_1, I_1},
|
||||
{1, G_2, H_2, I_2},
|
||||
{1, G_3, H_3, I_3},
|
||||
{1, D_8, E_8, F_8},
|
||||
{1, D_9, E_9, F_9},
|
||||
{1, D_10, E_10, F_10},
|
||||
{1, G_7, H_7, I_7},
|
||||
|
||||
/*row3*/
|
||||
{0, G_1, H_1, I_1},
|
||||
{0, G_2, H_2, I_2},
|
||||
{0, G_3, H_3, I_3},
|
||||
{0, G_4, H_4, I_4},
|
||||
{0, G_5, H_5, I_5},
|
||||
{0, G_6, H_6, I_6},
|
||||
{0, G_7, H_7, I_7},
|
||||
{0, G_8, H_8, I_8},
|
||||
{0, G_9, H_9, I_9},
|
||||
{0, G_10, H_10, I_10},
|
||||
{0, G_11, H_11, I_11},
|
||||
{0, G_12, H_12, I_12},
|
||||
{0, G_13, H_13, I_13},
|
||||
{1, G_4, H_4, I_4},
|
||||
{1, G_5, H_5, I_5},
|
||||
{1, G_6, H_6, I_6},
|
||||
|
||||
/*row4*/
|
||||
{0, J_1, K_1, L_1},
|
||||
{0, J_2, K_2, L_2},
|
||||
{0, J_3, K_3, L_3},
|
||||
{0, J_4, K_4, L_4},
|
||||
{0, J_5, K_5, L_5},
|
||||
{0, J_6, K_6, L_6},
|
||||
{0, J_7, K_7, L_7},
|
||||
{0, J_8, K_8, L_8},
|
||||
{0, J_9, K_9, L_9},
|
||||
{0, J_10, K_10, L_10},
|
||||
{0, J_11, K_11, L_11},
|
||||
{0, J_12, K_12, L_12},
|
||||
{1, J_4, K_4, L_4},
|
||||
{1, J_7, K_7, L_7},
|
||||
{1, J_8, K_8, L_8},
|
||||
{1, J_9, K_9, L_9},
|
||||
{1, J_10, K_10, L_10},
|
||||
|
||||
/*row5*/
|
||||
{0, J_13, K_13, L_13},
|
||||
{0, J_14, K_14, L_14},
|
||||
{0, J_15, K_15, L_15},
|
||||
{0, J_16, K_16, L_16},
|
||||
{0, G_14, H_14, I_14},
|
||||
{0, G_15, H_15, I_15},
|
||||
{0, G_16, H_16, I_16},
|
||||
{0, D_15, E_15, F_15},
|
||||
{1, J_1, K_1, L_1},
|
||||
{1, J_2, K_2, L_2},
|
||||
{1, J_3, K_3, L_3},
|
||||
{1, J_5, K_5, L_5},
|
||||
{1, J_6, K_6, L_6},
|
||||
|
||||
};
|
||||
#endif
|
||||
|
||||
void keyboard_pre_init_kb(void) {
|
||||
setPinOutput(LED_WIN_LOCK_PIN); // LED3 Win Lock
|
||||
writePinLow(LED_WIN_LOCK_PIN);
|
||||
keyboard_pre_init_user();
|
||||
}
|
||||
|
||||
bool led_update_kb(led_t led_state) {
|
||||
bool res = led_update_user(led_state);
|
||||
if (res) {
|
||||
writePin(LED_WIN_LOCK_PIN, keymap_config.no_gui);
|
||||
}
|
||||
return res;
|
||||
}
|
54
keyboards/akko/5108/config.h
Normal file
54
keyboards/akko/5108/config.h
Normal file
@ -0,0 +1,54 @@
|
||||
/* Copyright (C) 2022 jonylee@hfd
|
||||
*
|
||||
* 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
|
||||
|
||||
/* Use 5 dynamic keymap layers */
|
||||
#define DYNAMIC_KEYMAP_LAYER_COUNT 6
|
||||
|
||||
/* LED Indicators */
|
||||
#define LED_WIN_LOCK_PIN C11
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/* SPI Config for spi flash*/
|
||||
#define SPI_DRIVER SPIDQ
|
||||
#define SPI_SCK_PIN B3
|
||||
#define SPI_MOSI_PIN B5
|
||||
#define SPI_MISO_PIN B4
|
||||
#define SPI_MOSI_PAL_MODE 5
|
||||
|
||||
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12
|
||||
#define WEAR_LEVELING_BACKING_SIZE (8 * 1024)
|
||||
|
||||
/* I2C Config for LED Driver */
|
||||
#define DRIVER_COUNT 2
|
||||
#define DRIVER_ADDR_1 0b1110100
|
||||
#define DRIVER_ADDR_2 0b1110111
|
||||
#define I2C1_SCL_PAL_MODE 4
|
||||
#define I2C1_OPMODE OPMODE_I2C
|
||||
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
|
||||
|
||||
#define RGB_MATRIX_LED_COUNT 108
|
||||
|
||||
#define RGB_TRIGGER_ON_KEYDOWN
|
||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
|
||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
#define RGB_MATRIX_KEYPRESSES
|
||||
#define RGB_MATRIX_KEYRELEASES
|
23
keyboards/akko/5108/halconf.h
Normal file
23
keyboards/akko/5108/halconf.h
Normal file
@ -0,0 +1,23 @@
|
||||
/* Copyright (C) 2022 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_I2C TRUE
|
||||
#define HAL_USE_SPI TRUE
|
||||
#define SPI_USE_WAIT TRUE
|
||||
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
|
||||
|
||||
#include_next <halconf.h>
|
290
keyboards/akko/5108/info.json
Normal file
290
keyboards/akko/5108/info.json
Normal file
@ -0,0 +1,290 @@
|
||||
{
|
||||
"keyboard_name": "5108",
|
||||
"manufacturer": "Akko",
|
||||
"url":"https://www.akkogear.com",
|
||||
"maintainer": "jonylee@hfd",
|
||||
"usb": {
|
||||
"vid": "0xFFFE",
|
||||
"pid": "0x000D",
|
||||
"device_version": "1.0.3",
|
||||
"suspend_wakeup_delay": 400,
|
||||
"force_nkro": true
|
||||
},
|
||||
"processor": "WB32FQ95",
|
||||
"bootloader": "wb32-dfu",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
"extrakey": true,
|
||||
"console": false,
|
||||
"command": false,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": [ "C1", "C2", "C3", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B2", "B10", "B11", "B12", "B13", "B14"],
|
||||
"rows": ["B15", "C6", "C7", "C8", "C9", "A8"]
|
||||
},
|
||||
"diode_direction": "ROW2COL",
|
||||
"indicators": {
|
||||
"num_lock": "A15",
|
||||
"caps_lock": "C10"
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"driver": "IS31FL3733",
|
||||
"max_brightness": 180,
|
||||
"animations": {
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_up_down": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"dual_beacon": true,
|
||||
"rainbow_beacon": true,
|
||||
"raindrops": true,
|
||||
"typing_heatmap": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_cross": true,
|
||||
"multisplash": true
|
||||
},
|
||||
"layout":[
|
||||
{ "flags": 4, "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 1], "x": 20, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 2], "x": 30, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 3], "x": 40, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 4], "x": 50, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 5], "x": 70, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 6], "x": 80, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 7], "x": 90, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 8], "x": 100, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 9], "x": 110, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 10], "x": 120, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 11], "x": 130, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 12], "x": 140, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 14], "x": 156, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 15], "x": 166, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 16], "x": 176, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 17], "x": 194, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 18], "x": 204, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 19], "x": 214, "y": 0 },
|
||||
{ "flags": 4, "matrix": [0, 20], "x": 224, "y": 0 },
|
||||
|
||||
{ "flags": 4, "matrix": [1, 0], "x": 0, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 1], "x": 10, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 2], "x": 20, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 3], "x": 30, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 4], "x": 40, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 5], "x": 50, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 6], "x": 60, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 7], "x": 70, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 8], "x": 80, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 9], "x": 90, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 10], "x": 100, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 11], "x": 110, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 12], "x": 120, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 13], "x": 140, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 14], "x": 156, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 15], "x": 166, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 16], "x": 176, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 17], "x": 194, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 18], "x": 204, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 19], "x": 214, "y": 13 },
|
||||
{ "flags": 4, "matrix": [1, 20], "x": 224, "y": 13 },
|
||||
|
||||
{ "flags": 4, "matrix": [2, 0], "x": 0, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 1], "x": 10, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 2], "x": 20, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 3], "x": 30, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 4], "x": 40, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 5], "x": 50, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 6], "x": 60, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 7], "x": 70, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 8], "x": 80, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 9], "x": 90, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 10], "x": 100, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 11], "x": 110, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 12], "x": 128, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 13], "x": 140, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 14], "x": 156, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 15], "x": 166, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 16], "x": 176, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 17], "x": 194, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 18], "x": 204, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 19], "x": 214, "y": 26 },
|
||||
{ "flags": 4, "matrix": [2, 20], "x": 224, "y": 26 },
|
||||
|
||||
{ "flags": 4, "matrix": [3, 0], "x": 0, "y": 38 },
|
||||
{ "flags": 4, "matrix": [3, 1], "x": 10, "y": 38 },
|
||||
{ "flags": 4, "matrix": [3, 2], "x": 20, "y": 38 },
|
||||
{ "flags": 4, "matrix": [3, 3], "x": 30, "y": 38 },
|
||||
{ "flags": 4, "matrix": [3, 4], "x": 40, "y": 38 },
|
||||
{ "flags": 4, "matrix": [3, 5], "x": 50, "y": 38 },
|
||||
{ "flags": 4, "matrix": [3, 6], "x": 60, "y": 38 },
|
||||
{ "flags": 4, "matrix": [3, 7], "x": 70, "y": 38 },
|
||||
{ "flags": 4, "matrix": [3, 8], "x": 80, "y": 38 },
|
||||
{ "flags": 4, "matrix": [3, 9], "x": 90, "y": 38 },
|
||||
{ "flags": 4, "matrix": [3, 10], "x": 100, "y": 38 },
|
||||
{ "flags": 4, "matrix": [3, 11], "x": 110, "y": 38 },
|
||||
{ "flags": 4, "matrix": [3, 13], "x": 135, "y": 38 },
|
||||
{ "flags": 4, "matrix": [3, 17], "x": 194, "y": 38 },
|
||||
{ "flags": 4, "matrix": [3, 18], "x": 204, "y": 38 },
|
||||
{ "flags": 4, "matrix": [3, 19], "x": 214, "y": 38 },
|
||||
|
||||
{ "flags": 4, "matrix": [4, 0], "x": 5, "y": 51 },
|
||||
{ "flags": 4, "matrix": [4, 1], "x": 20, "y": 51 },
|
||||
{ "flags": 4, "matrix": [4, 2], "x": 30, "y": 51 },
|
||||
{ "flags": 4, "matrix": [4, 3], "x": 40, "y": 51 },
|
||||
{ "flags": 4, "matrix": [4, 4], "x": 50, "y": 51 },
|
||||
{ "flags": 4, "matrix": [4, 5], "x": 60, "y": 51 },
|
||||
{ "flags": 4, "matrix": [4, 6], "x": 70, "y": 51 },
|
||||
{ "flags": 4, "matrix": [4, 7], "x": 80, "y": 51 },
|
||||
{ "flags": 4, "matrix": [4, 8], "x": 90, "y": 51 },
|
||||
{ "flags": 4, "matrix": [4, 9], "x": 100, "y": 51 },
|
||||
{ "flags": 4, "matrix": [4, 10], "x": 110, "y": 51 },
|
||||
{ "flags": 4, "matrix": [4, 13], "x": 135, "y": 51 },
|
||||
{ "flags": 4, "matrix": [4, 15], "x": 166, "y": 51 },
|
||||
{ "flags": 4, "matrix": [4, 17], "x": 194, "y": 51 },
|
||||
{ "flags": 4, "matrix": [4, 18], "x": 204, "y": 51 },
|
||||
{ "flags": 4, "matrix": [4, 19], "x": 214, "y": 51 },
|
||||
{ "flags": 4, "matrix": [4, 20], "x": 224, "y": 51 },
|
||||
|
||||
{ "flags": 4, "matrix": [5, 0], "x": 0, "y": 64 },
|
||||
{ "flags": 4, "matrix": [5, 1], "x": 10, "y": 64 },
|
||||
{ "flags": 4, "matrix": [5, 2], "x": 20, "y": 64 },
|
||||
{ "flags": 4, "matrix": [5, 5], "x": 60, "y": 64 },
|
||||
{ "flags": 4, "matrix": [5, 9], "x": 100, "y": 64 },
|
||||
{ "flags": 4, "matrix": [5, 10], "x": 110, "y": 64 },
|
||||
{ "flags": 4, "matrix": [5, 11], "x": 130, "y": 64 },
|
||||
{ "flags": 4, "matrix": [5, 13], "x": 140, "y": 64 },
|
||||
{ "flags": 4, "matrix": [5, 14], "x": 156, "y": 64 },
|
||||
{ "flags": 4, "matrix": [5, 15], "x": 166, "y": 64 },
|
||||
{ "flags": 4, "matrix": [5, 16], "x": 176, "y": 64 },
|
||||
{ "flags": 4, "matrix": [5, 18], "x": 199, "y": 64 },
|
||||
{ "flags": 4, "matrix": [5, 19], "x": 214, "y": 64 }
|
||||
]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
{ "label": "F1", "matrix": [0, 1], "x": 2, "y": 0 },
|
||||
{ "label": "F2", "matrix": [0, 2], "x": 3, "y": 0 },
|
||||
{ "label": "F3", "matrix": [0, 3], "x": 4, "y": 0 },
|
||||
{ "label": "F4", "matrix": [0, 4], "x": 5, "y": 0 },
|
||||
{ "label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0 },
|
||||
{ "label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0 },
|
||||
{ "label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0 },
|
||||
{ "label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0 },
|
||||
{ "label": "F9", "matrix": [0, 9], "x": 11, "y": 0 },
|
||||
{ "label": "F10", "matrix": [0, 10], "x": 12, "y": 0 },
|
||||
{ "label": "F11", "matrix": [0, 11], "x": 13, "y": 0 },
|
||||
{ "label": "F12", "matrix": [0, 12], "x": 14, "y": 0 },
|
||||
{ "label": "PrtSc", "matrix": [0, 14], "x": 15.25, "y": 0 },
|
||||
{ "label": "ScrLk", "matrix": [0, 15], "x": 16.25, "y": 0 },
|
||||
{ "label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0 },
|
||||
{ "label": "Cal", "matrix": [0, 17], "x": 18.5, "y": 0 },
|
||||
{ "label": "Mute", "matrix": [0, 18], "x": 19.5, "y": 0 },
|
||||
{ "label": "Vold", "matrix": [0, 19], "x": 20.5, "y": 0 },
|
||||
{ "label": "Volu", "matrix": [0, 20], "x": 21.5, "y": 0 },
|
||||
|
||||
{ "label": "~", "matrix": [1, 0], "x": 0, "y": 1.25 },
|
||||
{ "label": "!", "matrix": [1, 1], "x": 1, "y": 1.25 },
|
||||
{ "label": "@", "matrix": [1, 2], "x": 2, "y": 1.25 },
|
||||
{ "label": "#", "matrix": [1, 3], "x": 3, "y": 1.25 },
|
||||
{ "label": "$", "matrix": [1, 4], "x": 4, "y": 1.25 },
|
||||
{ "label": "%", "matrix": [1, 5], "x": 5, "y": 1.25 },
|
||||
{ "label": "^", "matrix": [1, 6], "x": 6, "y": 1.25 },
|
||||
{ "label": "&", "matrix": [1, 7], "x": 7, "y": 1.25 },
|
||||
{ "label": "*", "matrix": [1, 8], "x": 8, "y": 1.25 },
|
||||
{ "label": "(", "matrix": [1, 9], "x": 9, "y": 1.25 },
|
||||
{ "label": ")", "matrix": [1, 10], "x": 10, "y": 1.25 },
|
||||
{ "label": "_", "matrix": [1, 11], "x": 11, "y": 1.25 },
|
||||
{ "label": "+", "matrix": [1, 12], "x": 12, "y": 1.25 },
|
||||
{ "label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2 },
|
||||
{ "label": "Ins", "matrix": [1, 14], "x": 15.25, "y": 1.25 },
|
||||
{ "label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25 },
|
||||
{ "label": "PgUp", "matrix": [1, 16], "x": 17.25, "y": 1.25 },
|
||||
{ "label": "Num", "matrix": [1, 17], "x": 18.5, "y": 1.25 },
|
||||
{ "label": "/", "matrix": [1, 18], "x": 19.5, "y": 1.25 },
|
||||
{ "label": "*", "matrix": [1, 19], "x": 20.5, "y": 1.25 },
|
||||
{ "label": "-", "matrix": [1, 20], "x": 21.5, "y": 1.25 },
|
||||
|
||||
{ "label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5 },
|
||||
{ "label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25 },
|
||||
{ "label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25 },
|
||||
{ "label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25 },
|
||||
{ "label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25 },
|
||||
{ "label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25 },
|
||||
{ "label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25 },
|
||||
{ "label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25 },
|
||||
{ "label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25 },
|
||||
{ "label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25 },
|
||||
{ "label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25 },
|
||||
{ "label": "{", "matrix": [2, 11], "x": 11.5, "y": 2.25 },
|
||||
{ "label": "}", "matrix": [2, 12], "x": 12.5, "y": 2.25 },
|
||||
{ "label": "|", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5 },
|
||||
{ "label": "Del", "matrix": [2, 14], "x": 15.25, "y": 2.25 },
|
||||
{ "label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25 },
|
||||
{ "label": "PgDn", "matrix": [2, 16], "x": 17.25, "y": 2.25 },
|
||||
{ "label": "7", "matrix": [2, 17], "x": 18.5, "y": 2.25 },
|
||||
{ "label": "8", "matrix": [2, 18], "x": 19.5, "y": 2.25 },
|
||||
{ "label": "9", "matrix": [2, 19], "x": 20.5, "y": 2.25 },
|
||||
{ "label": "+", "matrix": [2, 20], "x": 21.5, "y": 2.25, "h": 2 },
|
||||
|
||||
{ "label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75 },
|
||||
{ "label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25 },
|
||||
{ "label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25 },
|
||||
{ "label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25 },
|
||||
{ "label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25 },
|
||||
{ "label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25 },
|
||||
{ "label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25 },
|
||||
{ "label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25 },
|
||||
{ "label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25 },
|
||||
{ "label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25 },
|
||||
{ "label": ":", "matrix": [3, 10], "x": 10.75, "y": 3.25 },
|
||||
{ "label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25 },
|
||||
{ "label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25 },
|
||||
{ "label": "4", "matrix": [3, 17], "x": 18.5, "y": 3.25 },
|
||||
{ "label": "5", "matrix": [3, 18], "x": 19.5, "y": 3.25 },
|
||||
{ "label": "6", "matrix": [3, 19], "x": 20.5, "y": 3.25 },
|
||||
|
||||
{ "label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25 },
|
||||
{ "label": "Z", "matrix": [4, 1], "x": 2.25, "y": 4.25 },
|
||||
{ "label": "X", "matrix": [4, 2], "x": 3.25, "y": 4.25 },
|
||||
{ "label": "C", "matrix": [4, 3], "x": 4.25, "y": 4.25 },
|
||||
{ "label": "V", "matrix": [4, 4], "x": 5.25, "y": 4.25 },
|
||||
{ "label": "B", "matrix": [4, 5], "x": 6.25, "y": 4.25 },
|
||||
{ "label": "N", "matrix": [4, 6], "x": 7.25, "y": 4.25 },
|
||||
{ "label": "M", "matrix": [4, 7], "x": 8.25, "y": 4.25 },
|
||||
{ "label": "<", "matrix": [4, 8], "x": 9.25, "y": 4.25 },
|
||||
{ "label": ">", "matrix": [4, 9], "x": 10.25, "y": 4.25 },
|
||||
{ "label": "?", "matrix": [4, 10], "x": 11.25, "y": 4.25 },
|
||||
{ "label": "Shift", "matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75 },
|
||||
{ "label": "Up", "matrix": [4, 15], "x": 16.25, "y": 4.25 },
|
||||
{ "label": "1", "matrix": [4, 17], "x": 18.5, "y": 4.25 },
|
||||
{ "label": "2", "matrix": [4, 18], "x": 19.5, "y": 4.25 },
|
||||
{ "label": "3", "matrix": [4, 19], "x": 20.5, "y": 4.25 },
|
||||
{ "label": "Enter", "matrix": [4, 20], "x": 21.5, "y": 4.25, "h": 2 },
|
||||
|
||||
{ "label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Win", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Space", "matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25 },
|
||||
{ "label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Win", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Fn", "matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Ctrl", "matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Left", "matrix": [5, 14], "x": 15.25, "y": 5.25 },
|
||||
{ "label": "Down", "matrix": [5, 15], "x": 16.25, "y": 5.25 },
|
||||
{ "label": "Right", "matrix": [5, 16], "x": 17.25, "y": 5.25 },
|
||||
{ "label": "0", "matrix": [5, 18], "x": 18.5, "y": 5.25, "w": 2 },
|
||||
{ "label": ".", "matrix": [5, 19], "x": 20.5, "y": 5.25 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
79
keyboards/akko/5108/keymaps/default/keymap.c
Normal file
79
keyboards/akko/5108/keymaps/default/keymap.c
Normal file
@ -0,0 +1,79 @@
|
||||
/* Copyright (C) 2023 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum __layers {
|
||||
WIN_B,
|
||||
WIN_W,
|
||||
WIN_FN,
|
||||
MAC_B,
|
||||
MAC_W,
|
||||
MAC_FN
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[WIN_B] = LAYOUT( /* Base */
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
|
||||
|
||||
[WIN_W] = LAYOUT( /* Base */
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, MO(WIN_FN), _______, KC_A, KC_S, KC_D, _______, _______),
|
||||
|
||||
[WIN_FN] = LAYOUT( /* FN */
|
||||
_______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______,TG(WIN_W),_______,_______,_______,_______, _______, _______, DF(MAC_B),_______,_______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______,
|
||||
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI, _______, _______),
|
||||
|
||||
[MAC_B] = LAYOUT( /* Base */
|
||||
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
|
||||
|
||||
[MAC_W] = LAYOUT( /* Base */
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, MO(MAC_FN), _______, KC_A, KC_S, KC_D, _______, _______),
|
||||
|
||||
[MAC_FN] = LAYOUT( /* FN */
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______,TG(MAC_W),_______,_______,_______,_______, _______, _______, DF(WIN_B),_______,_______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI, _______, _______)
|
||||
};
|
||||
// clang-format on
|
79
keyboards/akko/5108/keymaps/via/keymap.c
Normal file
79
keyboards/akko/5108/keymaps/via/keymap.c
Normal file
@ -0,0 +1,79 @@
|
||||
/* Copyright (C) 2023 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum __layers {
|
||||
WIN_B,
|
||||
WIN_W,
|
||||
WIN_FN,
|
||||
MAC_B,
|
||||
MAC_W,
|
||||
MAC_FN
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[WIN_B] = LAYOUT( /* Base */
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
|
||||
|
||||
[WIN_W] = LAYOUT( /* Base */
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, MO(WIN_FN), _______, KC_A, KC_S, KC_D, _______, _______),
|
||||
|
||||
[WIN_FN] = LAYOUT( /* FN */
|
||||
_______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______,TG(WIN_W),_______,_______,_______,_______, _______, _______, DF(MAC_B),_______,_______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______,
|
||||
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI, _______, _______),
|
||||
|
||||
[MAC_B] = LAYOUT( /* Base */
|
||||
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
|
||||
|
||||
[MAC_W] = LAYOUT( /* Base */
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, MO(MAC_FN), _______, KC_A, KC_S, KC_D, _______, _______),
|
||||
|
||||
[MAC_FN] = LAYOUT( /* FN */
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______,TG(MAC_W),_______,_______,_______,_______, _______, _______, DF(WIN_B),_______,_______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI, _______, _______)
|
||||
};
|
||||
// clang-format on
|
1
keyboards/akko/5108/keymaps/via/rules.mk
Normal file
1
keyboards/akko/5108/keymaps/via/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
24
keyboards/akko/5108/mcuconf.h
Normal file
24
keyboards/akko/5108/mcuconf.h
Normal file
@ -0,0 +1,24 @@
|
||||
/* Copyright (C) 2022 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef WB32_SPI_USE_QSPI
|
||||
#define WB32_SPI_USE_QSPI TRUE
|
||||
|
||||
#undef WB32_I2C_USE_I2C1
|
||||
#define WB32_I2C_USE_I2C1 TRUE
|
20
keyboards/akko/5108/readme.md
Normal file
20
keyboards/akko/5108/readme.md
Normal file
@ -0,0 +1,20 @@
|
||||
# 5108
|
||||
|
||||
A customizable 100% keyboard.
|
||||
|
||||
* Keyboard Maintainer: [jonylee@hfd](https://github.com/jonylee1986)
|
||||
* Hardware Supported: Akko 5108
|
||||
* Hardware Availability: [akko](https://www.akkogear.com/)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make akko/5108:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make akko/5108:default:flash
|
||||
|
||||
## Bootloader
|
||||
**Reset Key**: Hold down the key located at *K000*, which programmed as *Esc* while plugging in the keyboard.
|
||||
|
||||
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).
|
2
keyboards/akko/5108/rules.mk
Normal file
2
keyboards/akko/5108/rules.mk
Normal file
@ -0,0 +1,2 @@
|
||||
EEPROM_DRIVER = wear_leveling
|
||||
WEAR_LEVELING_DRIVER = spi_flash
|
217
keyboards/akko/acr87/acr87.c
Normal file
217
keyboards/akko/acr87/acr87.c
Normal file
@ -0,0 +1,217 @@
|
||||
/* Copyright (C) 2022 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "quantum.h"
|
||||
// clang-format off
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
|
||||
/* Refer to IS31 manual for these locations
|
||||
* driver
|
||||
* | R location
|
||||
* | | G location
|
||||
* | | | B location
|
||||
* | | | | */
|
||||
/*row0*/
|
||||
{1, A_1, B_1, C_1},
|
||||
{1, A_2, B_2, C_2},
|
||||
{1, A_3, B_3, C_3},
|
||||
{1, A_4, B_4, C_4},
|
||||
{1, A_5, B_5, C_5},
|
||||
{1, A_6, B_6, C_6},
|
||||
{1, A_7, B_7, C_7},
|
||||
{1, A_8, B_8, C_8},
|
||||
{1, A_9, B_9, C_9},
|
||||
{1, A_10, B_10, C_10},
|
||||
{1, A_11, B_11, C_11},
|
||||
{1, A_12, B_12, C_12},
|
||||
{1, A_13, B_13, C_13},
|
||||
{1, A_14, B_14, C_14},
|
||||
{1, A_15, B_15, C_15},
|
||||
{1, A_16, B_16, C_16},
|
||||
|
||||
/*row1*/
|
||||
{0, A_1, B_1, C_1},
|
||||
{0, A_2, B_2, C_2},
|
||||
{0, A_3, B_3, C_3},
|
||||
{0, A_4, B_4, C_4},
|
||||
{0, A_5, B_5, C_5},
|
||||
{0, A_6, B_6, C_6},
|
||||
{0, A_7, B_7, C_7},
|
||||
{0, A_8, B_8, C_8},
|
||||
{0, A_9, B_9, C_9},
|
||||
{0, A_10, B_10, C_10},
|
||||
{0, A_11, B_11, C_11},
|
||||
{0, A_12, B_12, C_12},
|
||||
{0, A_13, B_13, C_13},
|
||||
{0, A_14, B_14, C_14},
|
||||
{1, D_1, E_1, F_1},
|
||||
{1, D_2, E_2, F_2},
|
||||
{1, D_3, E_3, F_3},
|
||||
|
||||
/*row2*/
|
||||
{0, D_1, E_1, F_1},
|
||||
{0, D_2, E_2, F_2},
|
||||
{0, D_3, E_3, F_3},
|
||||
{0, D_4, E_4, F_4},
|
||||
{0, D_5, E_5, F_5},
|
||||
{0, D_6, E_6, F_6},
|
||||
{0, D_7, E_7, F_7},
|
||||
{0, D_8, E_8, F_8},
|
||||
{0, D_9, E_9, F_9},
|
||||
{0, D_10, E_10, F_10},
|
||||
{0, D_11, E_11, F_11},
|
||||
{0, D_12, E_12, F_12},
|
||||
{0, D_13, E_13, F_13},
|
||||
{0, D_14, E_14, F_14},
|
||||
{1, G_1, H_1, I_1},
|
||||
{1, G_2, H_2, I_2},
|
||||
{1, G_3, H_3, I_3},
|
||||
|
||||
/*row3*/
|
||||
{0, G_1, H_1, I_1},
|
||||
{0, G_2, H_2, I_2},
|
||||
{0, G_3, H_3, I_3},
|
||||
{0, G_4, H_4, I_4},
|
||||
{0, G_5, H_5, I_5},
|
||||
{0, G_6, H_6, I_6},
|
||||
{0, G_7, H_7, I_7},
|
||||
{0, G_8, H_8, I_8},
|
||||
{0, G_9, H_9, I_9},
|
||||
{0, G_10, H_10, I_10},
|
||||
{0, G_11, H_11, I_11},
|
||||
{0, G_12, H_12, I_12},
|
||||
{0, G_13, H_13, I_13},
|
||||
|
||||
/*row4*/
|
||||
{0, J_1, K_1, L_1},
|
||||
{0, J_2, K_2, L_2},
|
||||
{0, J_3, K_3, L_3},
|
||||
{0, J_4, K_4, L_4},
|
||||
{0, J_5, K_5, L_5},
|
||||
{0, J_6, K_6, L_6},
|
||||
{0, J_7, K_7, L_7},
|
||||
{0, J_8, K_8, L_8},
|
||||
{0, J_9, K_9, L_9},
|
||||
{0, J_10, K_10, L_10},
|
||||
{0, J_11, K_11, L_11},
|
||||
{0, J_12, K_12, L_12},
|
||||
{1, J_4, K_4, L_4},
|
||||
|
||||
/*row5*/
|
||||
{0, J_13, K_13, L_13},
|
||||
{0, J_14, K_14, L_14},
|
||||
{0, J_15, K_15, L_15},
|
||||
{0, J_16, K_16, L_16},
|
||||
{0, G_14, H_14, I_14},
|
||||
{0, G_15, H_15, I_15},
|
||||
{0, G_16, H_16, I_16},
|
||||
{0, D_15, E_15, F_15},
|
||||
{1, J_1, K_1, L_1},
|
||||
{1, J_2, K_2, L_2},
|
||||
{1, J_3, K_3, L_3},
|
||||
|
||||
{2, J_12, K_12, L_12},
|
||||
{2, J_11, K_11, L_11},
|
||||
{2, J_10, K_10, L_10},
|
||||
{2, J_9, K_9, L_9},
|
||||
{2, J_8, K_8, L_8},
|
||||
{2, J_7, K_7, L_7},
|
||||
{2, J_6, K_6, L_6},
|
||||
{2, J_5, K_5, L_5},
|
||||
{2, J_4, K_4, L_4},
|
||||
{2, J_3, K_3, L_3},
|
||||
{2, J_2, K_2, L_2},
|
||||
{2, J_1, K_1, L_1},
|
||||
{2, G_12, H_12, I_12},
|
||||
{2, G_11, H_11, I_11},
|
||||
{2, G_10, H_10, I_10},
|
||||
{2, G_9, H_9, I_9},
|
||||
|
||||
{2, A_1, B_1, C_1},
|
||||
{2, G_8, H_8, I_8},
|
||||
|
||||
{2, A_2, B_2, C_2},
|
||||
{2, G_7, H_7, I_7},
|
||||
|
||||
{2, A_3, B_3, C_3},
|
||||
{2, G_6, H_6, I_6},
|
||||
|
||||
{2, A_4, B_4, C_4},
|
||||
{2, G_5, H_5, I_5},
|
||||
|
||||
{2, A_5, B_5, C_5},
|
||||
{2, G_4, H_4, I_4},
|
||||
|
||||
{2, A_6, B_6, C_6},
|
||||
{2, G_3, H_3, I_3},
|
||||
|
||||
{2, A_7, B_7, C_7},
|
||||
{2, G_2, H_2, I_2},
|
||||
|
||||
{2, A_8, B_8, C_8},
|
||||
{2, A_9, B_9, C_9},
|
||||
{2, A_10, B_10, C_10},
|
||||
{2, A_11, B_11, C_11},
|
||||
{2, A_12, B_12, C_12},
|
||||
{2, D_1, E_1, F_1},
|
||||
{2, D_2, E_2, F_2},
|
||||
{2, D_3, E_3, F_3},
|
||||
{2, D_4, E_4, F_4},
|
||||
{2, D_5, E_5, F_5},
|
||||
{2, D_6, E_6, F_6},
|
||||
{2, D_7, E_7, F_7},
|
||||
{2, D_8, E_8, F_8},
|
||||
{2, D_9, E_9, F_9},
|
||||
{2, D_10, E_10, F_10},
|
||||
{2, D_11, E_11, F_11},
|
||||
{2, D_12, E_12, F_12},
|
||||
{2, G_1, H_1, I_1},
|
||||
};
|
||||
|
||||
// clang-format on
|
||||
bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max)
|
||||
{
|
||||
if (!rgb_matrix_indicators_advanced_user(led_min, led_max))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (host_keyboard_led_state().caps_lock)
|
||||
{
|
||||
RGB_MATRIX_INDICATOR_SET_COLOR(50, 255, 255, 255);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!rgb_matrix_get_flags())
|
||||
{
|
||||
RGB_MATRIX_INDICATOR_SET_COLOR(50, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
if (keymap_config.no_gui)
|
||||
{
|
||||
RGB_MATRIX_INDICATOR_SET_COLOR(77, 255, 255, 255);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!rgb_matrix_get_flags())
|
||||
{
|
||||
RGB_MATRIX_INDICATOR_SET_COLOR(77, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif
|
53
keyboards/akko/acr87/config.h
Normal file
53
keyboards/akko/acr87/config.h
Normal file
@ -0,0 +1,53 @@
|
||||
/* Copyright (C) 2022 jonylee@hfd
|
||||
*
|
||||
* 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
|
||||
|
||||
/* Use 5 dynamic keymap layers */
|
||||
#define DYNAMIC_KEYMAP_LAYER_COUNT 6
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/* SPI Config for spi flash*/
|
||||
#define SPI_DRIVER SPIDQ
|
||||
#define SPI_SCK_PIN B3
|
||||
#define SPI_MOSI_PIN B5
|
||||
#define SPI_MISO_PIN B4
|
||||
#define SPI_MOSI_PAL_MODE 5
|
||||
|
||||
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12
|
||||
#define WEAR_LEVELING_BACKING_SIZE (8 * 1024)
|
||||
|
||||
/* I2C Config for LED Driver */
|
||||
#define DRIVER_COUNT 3
|
||||
#define DRIVER_ADDR_1 0b1110100
|
||||
#define DRIVER_ADDR_2 0b1110111
|
||||
#define DRIVER_ADDR_3 0b1110110
|
||||
|
||||
#define I2C1_SCL_PAL_MODE 4
|
||||
#define I2C1_OPMODE OPMODE_I2C
|
||||
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
|
||||
|
||||
#define RGB_MATRIX_LED_COUNT 135
|
||||
|
||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
|
||||
#define RGB_TRIGGER_ON_KEYDOWN
|
||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
#define RGB_MATRIX_KEYPRESSES
|
||||
#define RGB_MATRIX_KEYRELEASES
|
23
keyboards/akko/acr87/halconf.h
Normal file
23
keyboards/akko/acr87/halconf.h
Normal file
@ -0,0 +1,23 @@
|
||||
/* Copyright (C) 2022 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_I2C TRUE
|
||||
#define HAL_USE_SPI TRUE
|
||||
#define SPI_USE_WAIT TRUE
|
||||
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
|
||||
|
||||
#include_next <halconf.h>
|
294
keyboards/akko/acr87/info.json
Normal file
294
keyboards/akko/acr87/info.json
Normal file
@ -0,0 +1,294 @@
|
||||
{
|
||||
"keyboard_name": "ACR87",
|
||||
"manufacturer": "Akko",
|
||||
"url":"https://www.akkogear.com",
|
||||
"maintainer": "jonylee@hfd",
|
||||
"usb": {
|
||||
"vid": "0xFFFE",
|
||||
"pid": "0x0010",
|
||||
"device_version": "1.0.1",
|
||||
"suspend_wakeup_delay": 400,
|
||||
"force_nkro": true
|
||||
},
|
||||
"processor": "WB32FQ95",
|
||||
"bootloader": "wb32-dfu",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
"extrakey": true,
|
||||
"console": false,
|
||||
"command": false,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": [ "C1", "C2", "C3", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B2", "B10"],
|
||||
"rows": [ "B15", "C6", "C7", "C8", "C9", "A8"]
|
||||
},
|
||||
"diode_direction": "ROW2COL",
|
||||
"rgb_matrix": {
|
||||
"driver": "IS31FL3733",
|
||||
"max_brightness": 180,
|
||||
"animations": {
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_up_down": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"dual_beacon": true,
|
||||
"rainbow_beacon": true,
|
||||
"raindrops": true,
|
||||
"typing_heatmap": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_cross": true,
|
||||
"multisplash": true
|
||||
},
|
||||
"layout":[
|
||||
{ "flags": 4, "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 1], "x": 24, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 2], "x": 38, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 3], "x": 52, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 4], "x": 66, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 5], "x": 82, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 6], "x": 96, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 7], "x":110, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 8], "x":124, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 9], "x":140, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 10], "x":154, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 11], "x":168, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 12], "x":182, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 14], "x":196, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 15], "x":210, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 16], "x":224, "y": 0},
|
||||
|
||||
{ "flags": 4, "matrix": [1, 0], "x": 0, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 1], "x": 13, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 2], "x": 26, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 3], "x": 39, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 4], "x": 52, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 5], "x": 65, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 6], "x": 79, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 7], "x": 92, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 8], "x":105, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 9], "x":118, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 10], "x":131, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 11], "x":144, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 12], "x":158, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 13], "x":171, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 14], "x":184, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 15], "x":197, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 16], "x":210, "y": 12},
|
||||
|
||||
{ "flags": 4, "matrix": [2, 0], "x": 0, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 1], "x": 14, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 2], "x": 28, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 3], "x": 42, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 4], "x": 56, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 5], "x": 70, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 6], "x": 84, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 7], "x": 98, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 8], "x":112, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 9], "x":126, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 10], "x":140, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 11], "x":154, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 12], "x":168, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 13], "x":182, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 14], "x":196, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 15], "x":210, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 16], "x":224, "y": 26},
|
||||
|
||||
{ "flags": 4, "matrix": [3, 0], "x": 0, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 1], "x": 14, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 2], "x": 28, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 3], "x": 42, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 4], "x": 56, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 5], "x": 70, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 6], "x": 84, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 7], "x": 98, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 8], "x":112, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 9], "x":126, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 10], "x":140, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 11], "x":154, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 13], "x":182, "y": 38},
|
||||
|
||||
{ "flags": 4, "matrix": [4, 0], "x": 0, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 1], "x": 14, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 2], "x": 28, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 3], "x": 42, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 4], "x": 56, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 5], "x": 70, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 6], "x": 84, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 7], "x": 98, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 8], "x":112, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 9], "x":126, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 10], "x":140, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 13], "x":154, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 15], "x":182, "y": 51},
|
||||
|
||||
{ "flags": 4, "matrix": [5, 0], "x": 0, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 1], "x": 14, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 2], "x": 28, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 5], "x": 70, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 9], "x":126, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 10], "x":140, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 11], "x":154, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 13], "x":182, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 14], "x":196, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 15], "x":210, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 16], "x":224, "y": 64},
|
||||
|
||||
{"flags": 2, "x":13, "y":0},
|
||||
{"flags": 2, "x":24, "y":0},
|
||||
{"flags": 2, "x":38, "y":0},
|
||||
{"flags": 2, "x":52, "y":0},
|
||||
{"flags": 2, "x":66, "y":0},
|
||||
{"flags": 2, "x":82, "y":0},
|
||||
{"flags": 2, "x":96, "y":0},
|
||||
{"flags": 2, "x":110, "y":0},
|
||||
{"flags": 2, "x":124, "y":0},
|
||||
{"flags": 2, "x":140, "y":0},
|
||||
{"flags": 2, "x":154, "y":0},
|
||||
{"flags": 2, "x":168, "y":0},
|
||||
{"flags": 2, "x":182, "y":0},
|
||||
{"flags": 2, "x":196, "y":0},
|
||||
{"flags": 2, "x":210, "y":0},
|
||||
{"flags": 2, "x":224, "y":0},
|
||||
{"flags": 2, "x":0, "y":8},
|
||||
{"flags": 2, "x":224, "y":8},
|
||||
{"flags": 2, "x":0, "y":16},
|
||||
{"flags": 2, "x":224, "y":16},
|
||||
{"flags": 2, "x":0, "y":24},
|
||||
{"flags": 2, "x":224, "y":24},
|
||||
{"flags": 2, "x":0, "y":32},
|
||||
{"flags": 2, "x":224, "y":32},
|
||||
{"flags": 2, "x":0, "y":40},
|
||||
{"flags": 2, "x":224, "y":40},
|
||||
{"flags": 2, "x":0, "y":48},
|
||||
{"flags": 2, "x":224, "y":48},
|
||||
{"flags": 2, "x":0, "y":56},
|
||||
{"flags": 2, "x":224, "y":56},
|
||||
{"flags": 2, "x":0, "y":64},
|
||||
{"flags": 2, "x":13, "y":64},
|
||||
{"flags": 2, "x":25, "y":64},
|
||||
{"flags": 2, "x":37, "y":64},
|
||||
{"flags": 2, "x":49, "y":64},
|
||||
{"flags": 2, "x":61, "y":64},
|
||||
{"flags": 2, "x":73, "y":64},
|
||||
{"flags": 2, "x":85, "y":64},
|
||||
{"flags": 2, "x":97, "y":64},
|
||||
{"flags": 2, "x":109, "y":64},
|
||||
{"flags": 2, "x":121, "y":64},
|
||||
{"flags": 2, "x":133, "y":64},
|
||||
{"flags": 2, "x":145, "y":64},
|
||||
{"flags": 2, "x":157, "y":64},
|
||||
{"flags": 2, "x":170, "y":64},
|
||||
{"flags": 2, "x":196, "y":64},
|
||||
{"flags": 2, "x":210, "y":64},
|
||||
{"flags": 2, "x":224, "y":64}
|
||||
]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
{ "label": "F1", "matrix": [0, 1], "x": 2, "y": 0 },
|
||||
{ "label": "F2", "matrix": [0, 2], "x": 3, "y": 0 },
|
||||
{ "label": "F3", "matrix": [0, 3], "x": 4, "y": 0 },
|
||||
{ "label": "F4", "matrix": [0, 4], "x": 5, "y": 0 },
|
||||
{ "label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0 },
|
||||
{ "label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0 },
|
||||
{ "label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0 },
|
||||
{ "label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0 },
|
||||
{ "label": "F9", "matrix": [0, 9], "x": 11, "y": 0 },
|
||||
{ "label": "F10", "matrix": [0, 10], "x": 12, "y": 0 },
|
||||
{ "label": "F11", "matrix": [0, 11], "x": 13, "y": 0 },
|
||||
{ "label": "F12", "matrix": [0, 12], "x": 14, "y": 0 },
|
||||
{ "label": "PrtSc", "matrix": [0, 14], "x": 15.25, "y": 0 },
|
||||
{ "label": "ScrLk", "matrix": [0, 15], "x": 16.25, "y": 0 },
|
||||
{ "label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0 },
|
||||
|
||||
{ "label": "~", "matrix": [1, 0], "x": 0, "y": 1.25 },
|
||||
{ "label": "!", "matrix": [1, 1], "x": 1, "y": 1.25 },
|
||||
{ "label": "@", "matrix": [1, 2], "x": 2, "y": 1.25 },
|
||||
{ "label": "#", "matrix": [1, 3], "x": 3, "y": 1.25 },
|
||||
{ "label": "$", "matrix": [1, 4], "x": 4, "y": 1.25 },
|
||||
{ "label": "%", "matrix": [1, 5], "x": 5, "y": 1.25 },
|
||||
{ "label": "^", "matrix": [1, 6], "x": 6, "y": 1.25 },
|
||||
{ "label": "&", "matrix": [1, 7], "x": 7, "y": 1.25 },
|
||||
{ "label": "*", "matrix": [1, 8], "x": 8, "y": 1.25 },
|
||||
{ "label": "(", "matrix": [1, 9], "x": 9, "y": 1.25 },
|
||||
{ "label": ")", "matrix": [1, 10], "x": 10, "y": 1.25 },
|
||||
{ "label": "_", "matrix": [1, 11], "x": 11, "y": 1.25 },
|
||||
{ "label": "+", "matrix": [1, 12], "x": 12, "y": 1.25 },
|
||||
{ "label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2 },
|
||||
{ "label": "Ins", "matrix": [1, 14], "x": 15.25, "y": 1.25 },
|
||||
{ "label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25 },
|
||||
{ "label": "PgUp", "matrix": [1, 16], "x": 17.25, "y": 1.25 },
|
||||
|
||||
{ "label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5 },
|
||||
{ "label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25 },
|
||||
{ "label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25 },
|
||||
{ "label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25 },
|
||||
{ "label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25 },
|
||||
{ "label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25 },
|
||||
{ "label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25 },
|
||||
{ "label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25 },
|
||||
{ "label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25 },
|
||||
{ "label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25 },
|
||||
{ "label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25 },
|
||||
{ "label": "{", "matrix": [2, 11], "x": 11.5, "y": 2.25 },
|
||||
{ "label": "}", "matrix": [2, 12], "x": 12.5, "y": 2.25 },
|
||||
{ "label": "|", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5 },
|
||||
{ "label": "Del", "matrix": [2, 14], "x": 15.25, "y": 2.25 },
|
||||
{ "label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25 },
|
||||
{ "label": "PgDn", "matrix": [2, 16], "x": 17.25, "y": 2.25 },
|
||||
|
||||
{ "label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75 },
|
||||
{ "label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25 },
|
||||
{ "label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25 },
|
||||
{ "label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25 },
|
||||
{ "label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25 },
|
||||
{ "label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25 },
|
||||
{ "label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25 },
|
||||
{ "label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25 },
|
||||
{ "label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25 },
|
||||
{ "label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25 },
|
||||
{ "label": ":", "matrix": [3, 10], "x": 10.75, "y": 3.25 },
|
||||
{ "label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25 },
|
||||
{ "label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25 },
|
||||
|
||||
{ "label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25 },
|
||||
{ "label": "Z", "matrix": [4, 1], "x": 2.25, "y": 4.25 },
|
||||
{ "label": "X", "matrix": [4, 2], "x": 3.25, "y": 4.25 },
|
||||
{ "label": "C", "matrix": [4, 3], "x": 4.25, "y": 4.25 },
|
||||
{ "label": "V", "matrix": [4, 4], "x": 5.25, "y": 4.25 },
|
||||
{ "label": "B", "matrix": [4, 5], "x": 6.25, "y": 4.25 },
|
||||
{ "label": "N", "matrix": [4, 6], "x": 7.25, "y": 4.25 },
|
||||
{ "label": "M", "matrix": [4, 7], "x": 8.25, "y": 4.25 },
|
||||
{ "label": "<", "matrix": [4, 8], "x": 9.25, "y": 4.25 },
|
||||
{ "label": ">", "matrix": [4, 9], "x": 10.25, "y": 4.25 },
|
||||
{ "label": "?", "matrix": [4, 10], "x": 11.25, "y": 4.25 },
|
||||
{ "label": "Shift", "matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75 },
|
||||
{ "label": "Up", "matrix": [4, 15], "x": 16.25, "y": 4.25 },
|
||||
|
||||
{ "label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Win", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Space", "matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25 },
|
||||
{ "label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Win", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Fn", "matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Ctrl", "matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Left", "matrix": [5, 14], "x": 15.25, "y": 5.25 },
|
||||
{ "label": "Down", "matrix": [5, 15], "x": 16.25, "y": 5.25 },
|
||||
{ "label": "Right", "matrix": [5, 16], "x": 17.25, "y": 5.25 }
|
||||
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
79
keyboards/akko/acr87/keymaps/default/keymap.c
Normal file
79
keyboards/akko/acr87/keymaps/default/keymap.c
Normal file
@ -0,0 +1,79 @@
|
||||
/* Copyright (C) 2023 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum __layers {
|
||||
WIN_B,
|
||||
WIN_W,
|
||||
WIN_FN,
|
||||
MAC_B,
|
||||
MAC_W,
|
||||
MAC_FN
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[WIN_B] = LAYOUT( /* Base */
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[WIN_W] = LAYOUT( /* Base */
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W,
|
||||
_______, _______, _______, _______, _______, _______, MO(WIN_FN), _______, KC_A, KC_S, KC_D),
|
||||
|
||||
|
||||
[WIN_FN] = LAYOUT( /* FN */
|
||||
_______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______,_______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______,
|
||||
_______, _______,TG(WIN_W),_______, _______, _______, _______, _______, _______, DF(MAC_B),_______,_______, _______, RGB_MOD, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI,
|
||||
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI,
|
||||
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI),
|
||||
|
||||
[MAC_B] = LAYOUT( /* Base */
|
||||
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[MAC_W] = LAYOUT( /* Base */
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W,
|
||||
_______, _______, _______, _______, _______, _______, MO(MAC_FN), _______, KC_A, KC_S, KC_D),
|
||||
[MAC_FN] = LAYOUT( /* FN */
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______,
|
||||
_______, _______,TG(MAC_W),_______, _______, _______, _______, _______, _______, DF(WIN_B),_______,_______, _______, RGB_MOD, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI,
|
||||
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI)
|
||||
};
|
||||
// clang-format on
|
79
keyboards/akko/acr87/keymaps/via/keymap.c
Normal file
79
keyboards/akko/acr87/keymaps/via/keymap.c
Normal file
@ -0,0 +1,79 @@
|
||||
/* Copyright (C) 2023 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum __layers {
|
||||
WIN_B,
|
||||
WIN_W,
|
||||
WIN_FN,
|
||||
MAC_B,
|
||||
MAC_W,
|
||||
MAC_FN
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[WIN_B] = LAYOUT( /* Base */
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[WIN_W] = LAYOUT( /* Base */
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W,
|
||||
_______, _______, _______, _______, _______, _______, MO(WIN_FN), _______, KC_A, KC_S, KC_D),
|
||||
|
||||
|
||||
[WIN_FN] = LAYOUT( /* FN */
|
||||
_______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______,_______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______,
|
||||
_______, _______,TG(WIN_W),_______, _______, _______, _______, _______, _______, DF(MAC_B),_______,_______, _______, RGB_MOD, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI,
|
||||
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI,
|
||||
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI),
|
||||
|
||||
[MAC_B] = LAYOUT( /* Base */
|
||||
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[MAC_W] = LAYOUT( /* Base */
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W,
|
||||
_______, _______, _______, _______, _______, _______, MO(MAC_FN), _______, KC_A, KC_S, KC_D),
|
||||
[MAC_FN] = LAYOUT( /* FN */
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______,
|
||||
_______, _______,TG(MAC_W),_______, _______, _______, _______, _______, _______, DF(WIN_B),_______,_______, _______, RGB_MOD, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI,
|
||||
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI)
|
||||
};
|
||||
// clang-format on
|
1
keyboards/akko/acr87/keymaps/via/rules.mk
Normal file
1
keyboards/akko/acr87/keymaps/via/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
24
keyboards/akko/acr87/mcuconf.h
Normal file
24
keyboards/akko/acr87/mcuconf.h
Normal file
@ -0,0 +1,24 @@
|
||||
/* Copyright (C) 2022 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef WB32_SPI_USE_QSPI
|
||||
#define WB32_SPI_USE_QSPI TRUE
|
||||
|
||||
#undef WB32_I2C_USE_I2C1
|
||||
#define WB32_I2C_USE_I2C1 TRUE
|
19
keyboards/akko/acr87/readme.md
Normal file
19
keyboards/akko/acr87/readme.md
Normal file
@ -0,0 +1,19 @@
|
||||
# acr87
|
||||
|
||||
A customizable 80% encoder keyboard.
|
||||
|
||||
* Keyboard Maintainer: [jonylee@hfd](https://github.com/jonylee1986)
|
||||
* Hardware Supported: acr87
|
||||
* Hardware Availability: [akko](https://www.akkogear.com/)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make akko/acr87:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make akko/acr87:default:flash
|
||||
|
||||
**Reset Key**: Hold down the key located at *K000*, which programmed as *Esc* while plugging in the keyboard.
|
||||
|
||||
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).
|
3
keyboards/akko/acr87/rules.mk
Normal file
3
keyboards/akko/acr87/rules.mk
Normal file
@ -0,0 +1,3 @@
|
||||
EEPROM_DRIVER = wear_leveling
|
||||
WEAR_LEVELING_DRIVER = spi_flash
|
||||
|
52
keyboards/akko/top40/config.h
Normal file
52
keyboards/akko/top40/config.h
Normal file
@ -0,0 +1,52 @@
|
||||
/* Copyright (C) 2022 jonylee@hfd
|
||||
*
|
||||
* 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
|
||||
|
||||
/* Use 5 dynamic keymap layers */
|
||||
#define DYNAMIC_KEYMAP_LAYER_COUNT 6
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/* SPI Config for spi flash*/
|
||||
#define SPI_DRIVER SPIDQ
|
||||
#define SPI_SCK_PIN B3
|
||||
#define SPI_MOSI_PIN B5
|
||||
#define SPI_MISO_PIN B4
|
||||
#define SPI_MOSI_PAL_MODE 5
|
||||
|
||||
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12
|
||||
#define WEAR_LEVELING_BACKING_SIZE (8 * 1024)
|
||||
|
||||
/* I2C Config for LED Driver */
|
||||
#define DRIVER_COUNT 2
|
||||
#define DRIVER_ADDR_1 0b1110100
|
||||
#define DRIVER_ADDR_2 0b1110111
|
||||
#define I2C1_SCL_PAL_MODE 4
|
||||
#define I2C1_OPMODE OPMODE_I2C
|
||||
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
|
||||
|
||||
#define RGB_MATRIX_LED_COUNT 76
|
||||
|
||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
|
||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
#define RGB_MATRIX_KEYPRESSES
|
||||
#define RGB_MATRIX_KEYRELEASES
|
||||
#define RGB_TRIGGER_ON_KEYDOWN
|
||||
|
23
keyboards/akko/top40/halconf.h
Normal file
23
keyboards/akko/top40/halconf.h
Normal file
@ -0,0 +1,23 @@
|
||||
/* Copyright (C) 2022 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_I2C TRUE
|
||||
#define HAL_USE_SPI TRUE
|
||||
#define SPI_USE_WAIT TRUE
|
||||
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
|
||||
|
||||
#include_next <halconf.h>
|
188
keyboards/akko/top40/info.json
Normal file
188
keyboards/akko/top40/info.json
Normal file
@ -0,0 +1,188 @@
|
||||
{
|
||||
"keyboard_name": "TOP40",
|
||||
"manufacturer": "Akko",
|
||||
"url":"https://www.akkogear.com",
|
||||
"maintainer": "jonylee@hfd",
|
||||
"usb": {
|
||||
"vid": "0xFFFE",
|
||||
"pid": "0x000E",
|
||||
"device_version": "1.0.2",
|
||||
"suspend_wakeup_delay": 400,
|
||||
"force_nkro": true
|
||||
},
|
||||
"processor": "WB32FQ95",
|
||||
"bootloader": "wb32-dfu",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
"extrakey": true,
|
||||
"console": false,
|
||||
"command": false,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["C1", "C2", "C3", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "C4"],
|
||||
"rows": ["C7", "C8", "C9", "A8"]
|
||||
},
|
||||
"diode_direction": "ROW2COL",
|
||||
"rgb_matrix": {
|
||||
"driver": "IS31FL3733",
|
||||
"max_brightness": 180,
|
||||
"animations": {
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_up_down": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"dual_beacon": true,
|
||||
"rainbow_beacon": true,
|
||||
"raindrops": true,
|
||||
"typing_heatmap": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_cross": true,
|
||||
"multisplash": true
|
||||
},
|
||||
"layout":[
|
||||
{ "flags": 4, "matrix": [0, 0], "x": 10, "y":10 },
|
||||
{ "flags": 4, "matrix": [0, 1], "x": 20, "y":10 },
|
||||
{ "flags": 4, "matrix": [0, 2], "x": 40, "y":10 },
|
||||
{ "flags": 4, "matrix": [0, 3], "x": 60, "y":10 },
|
||||
{ "flags": 4, "matrix": [0, 4], "x": 80, "y":10 },
|
||||
{ "flags": 4, "matrix": [0, 5], "x":100 , "y":10 },
|
||||
{ "flags": 4, "matrix": [0, 6], "x":120 , "y":10 },
|
||||
{ "flags": 4, "matrix": [0, 7], "x":140 , "y":10 },
|
||||
{ "flags": 4, "matrix": [0, 8], "x":160 , "y":10 },
|
||||
{ "flags": 4, "matrix": [0, 9], "x":180 , "y":10 },
|
||||
{ "flags": 4, "matrix": [0, 10], "x":200 , "y":10 },
|
||||
{ "flags": 4, "matrix": [0, 11], "x":218 , "y":10 },
|
||||
|
||||
{ "flags": 4, "matrix": [1, 0], "x": 10, "y":24 },
|
||||
{ "flags": 4, "matrix": [1, 1], "x": 20, "y":24 },
|
||||
{ "flags": 4, "matrix": [1, 2], "x": 40, "y":24 },
|
||||
{ "flags": 4, "matrix": [1, 3], "x": 60, "y":24 },
|
||||
{ "flags": 4, "matrix": [1, 4], "x": 80, "y":24 },
|
||||
{ "flags": 4, "matrix": [1, 5], "x":100 , "y":24 },
|
||||
{ "flags": 4, "matrix": [1, 6], "x":120 , "y":24 },
|
||||
{ "flags": 4, "matrix": [1, 7], "x":140 , "y":24 },
|
||||
{ "flags": 4, "matrix": [1, 8], "x":160 , "y":24 },
|
||||
{ "flags": 4, "matrix": [1, 9], "x":180 , "y":24 },
|
||||
{ "flags": 4, "matrix": [1, 10], "x":200 , "y":24 },
|
||||
{ "flags": 4, "matrix": [1, 11], "x":218 , "y":24 },
|
||||
|
||||
{ "flags": 4, "matrix": [2, 0], "x": 10, "y":39 },
|
||||
{ "flags": 4, "matrix": [2, 1], "x": 20, "y":39 },
|
||||
{ "flags": 4, "matrix": [2, 2], "x": 40, "y":39 },
|
||||
{ "flags": 4, "matrix": [2, 3], "x": 60, "y":39 },
|
||||
{ "flags": 4, "matrix": [2, 4], "x": 80, "y":39 },
|
||||
{ "flags": 4, "matrix": [2, 5], "x":100 , "y":39 },
|
||||
{ "flags": 4, "matrix": [2, 6], "x":120 , "y":39 },
|
||||
{ "flags": 4, "matrix": [2, 7], "x":140 , "y":39 },
|
||||
{ "flags": 4, "matrix": [2, 8], "x":160 , "y":39 },
|
||||
{ "flags": 4, "matrix": [2, 9], "x":180 , "y":39 },
|
||||
{ "flags": 4, "matrix": [2, 10], "x":200 , "y":39 },
|
||||
{ "flags": 4, "matrix": [2, 11], "x":218 , "y":39 },
|
||||
|
||||
{ "flags": 4, "matrix": [3, 0], "x": 10, "y":54 },
|
||||
{ "flags": 4, "matrix": [3, 1], "x": 20, "y":54 },
|
||||
{ "flags": 4, "matrix": [3, 2], "x": 40, "y":54 },
|
||||
{ "flags": 4, "matrix": [3, 4], "x": 80, "y":54 },
|
||||
{ "flags": 4, "matrix": [3, 6], "x":120 , "y":54 },
|
||||
{ "flags": 4, "matrix": [3, 8], "x":160 , "y":54 },
|
||||
{ "flags": 4, "matrix": [3, 9], "x":180 , "y":54 },
|
||||
{ "flags": 4, "matrix": [3, 10], "x":200 , "y":54 },
|
||||
{ "flags": 4, "matrix": [3, 11], "x":218 , "y":54 },
|
||||
|
||||
{"flags": 2, "x":0, "y":0},
|
||||
{"flags": 2, "x":15, "y":0},
|
||||
{"flags": 2, "x":25, "y":0},
|
||||
{"flags": 2, "x":45, "y":0},
|
||||
{"flags": 2, "x":65, "y":0},
|
||||
{"flags": 2, "x":85, "y":0},
|
||||
{"flags": 2, "x":105, "y":0},
|
||||
{"flags": 2, "x":125, "y":0},
|
||||
{"flags": 2, "x":145, "y":0},
|
||||
{"flags": 2, "x":165, "y":0},
|
||||
{"flags": 2, "x":185, "y":0},
|
||||
{"flags": 2, "x":205, "y":0},
|
||||
{"flags": 2, "x":224, "y":0},
|
||||
{"flags": 2, "x":0, "y":16},
|
||||
{"flags": 2, "x":224, "y":16},
|
||||
{"flags": 2, "x":0, "y":32},
|
||||
{"flags": 2, "x":224, "y":32},
|
||||
{"flags": 2, "x":0, "y":48},
|
||||
{"flags": 2, "x":224, "y":48},
|
||||
{"flags": 2, "x":0, "y":64},
|
||||
{"flags": 2, "x":15, "y":64},
|
||||
{"flags": 2, "x":40, "y":64},
|
||||
{"flags": 2, "x":62, "y":64},
|
||||
{"flags": 2, "x":80, "y":64},
|
||||
{"flags": 2, "x":100, "y":64},
|
||||
{"flags": 2, "x":125, "y":64},
|
||||
{"flags": 2, "x":145, "y":64},
|
||||
{"flags": 2, "x":165, "y":64},
|
||||
{"flags": 2, "x":185, "y":64},
|
||||
{"flags": 2, "x":205, "y":64},
|
||||
{"flags": 2, "x":224, "y":64}
|
||||
]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{ "label": "Ese", "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
{ "label": "Q", "matrix": [0, 1], "x": 1, "y": 0 },
|
||||
{ "label": "W", "matrix": [0, 2], "x": 2, "y": 0 },
|
||||
{ "label": "E", "matrix": [0, 3], "x": 3, "y": 0 },
|
||||
{ "label": "R", "matrix": [0, 4], "x": 4, "y": 0 },
|
||||
{ "label": "T", "matrix": [0, 5], "x": 5, "y": 0 },
|
||||
{ "label": "Y", "matrix": [0, 6], "x": 6, "y": 0 },
|
||||
{ "label": "U", "matrix": [0, 7], "x": 7, "y": 0 },
|
||||
{ "label": "I", "matrix": [0, 8], "x": 8, "y": 0 },
|
||||
{ "label": "O", "matrix": [0, 9], "x": 9, "y": 0 },
|
||||
{ "label": "P", "matrix": [0, 10], "x": 10, "y": 0 },
|
||||
{ "label": "BackSpace", "matrix": [0, 11], "x": 11, "y": 0 , "w": 1.75},
|
||||
|
||||
{ "label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.25 },
|
||||
{ "label": "A", "matrix": [1, 1], "x": 1.25, "y": 1 },
|
||||
{ "label": "S", "matrix": [1, 2], "x": 2.25, "y": 1 },
|
||||
{ "label": "D", "matrix": [1, 3], "x": 3.25, "y": 1 },
|
||||
{ "label": "F", "matrix": [1, 4], "x": 4.25, "y": 1 },
|
||||
{ "label": "G", "matrix": [1, 5], "x": 5.25, "y": 1 },
|
||||
{ "label": "H", "matrix": [1, 6], "x": 6.25, "y": 1 },
|
||||
{ "label": "J", "matrix": [1, 7], "x": 7.25, "y": 1 },
|
||||
{ "label": "K", "matrix": [1, 8], "x": 8.25, "y": 1 },
|
||||
{ "label": "L", "matrix": [1, 9], "x": 9.25, "y": 1 },
|
||||
{ "label": ":", "matrix": [1, 10], "x": 10.25, "y": 1 },
|
||||
{ "label": "Enter", "matrix": [1, 11], "x": 11.25, "y": 1, "w": 1.5 },
|
||||
|
||||
{ "label": "Shift", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75 },
|
||||
{ "label": "Z", "matrix": [2, 1], "x": 1.75, "y": 2 },
|
||||
{ "label": "X", "matrix": [2, 2], "x": 2.75, "y": 2 },
|
||||
{ "label": "C", "matrix": [2, 3], "x": 3.75, "y": 2 },
|
||||
{ "label": "V", "matrix": [2, 4], "x": 4.75, "y": 2 },
|
||||
{ "label": "B", "matrix": [2, 5], "x": 5.75, "y": 2 },
|
||||
{ "label": "N", "matrix": [2, 6], "x": 6.75, "y": 2 },
|
||||
{ "label": "M", "matrix": [2, 7], "x": 7.75, "y": 2 },
|
||||
{ "label": "<", "matrix": [2, 8], "x": 8.75, "y": 2 },
|
||||
{ "label": ">", "matrix": [2, 9], "x": 9.75, "y": 2 },
|
||||
{ "label": "Up", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{ "label": "Shift", "matrix": [2, 11], "x": 11.75, "y": 2 },
|
||||
|
||||
{ "label": "Ctrl", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25 },
|
||||
{ "label": "Win", "matrix": [3, 1], "x": 1.25, "y": 3, "w": 1.25 },
|
||||
{ "label": "Alt", "matrix": [3, 2], "x": 2.5, "y": 3, "w": 1.25 },
|
||||
{ "label": "Space", "matrix": [3, 4], "x": 3.75, "y": 3, "w": 6.25 },
|
||||
{ "label": "Space", "matrix": [3, 6], "x": 6, "y": 3, "w": 2.75 },
|
||||
{ "label": "Fn", "matrix": [3, 8], "x": 8.75, "y": 3, "w": 1.25 },
|
||||
{ "label": "Left", "matrix": [3, 9], "x": 9.75, "y": 3 },
|
||||
{ "label": "Down", "matrix": [3, 10], "x": 10.75, "y": 3 },
|
||||
{ "label": "Right", "matrix": [3, 11], "x": 11.75, "y": 3 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
37
keyboards/akko/top40/keymaps/default/keymap.c
Normal file
37
keyboards/akko/top40/keymaps/default/keymap.c
Normal file
@ -0,0 +1,37 @@
|
||||
/* Copyright (C) 2023 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
// clang-format off
|
||||
enum __layers {
|
||||
_Base,
|
||||
_FN
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_Base] = LAYOUT( /* Base */
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, MO(_FN),KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[_FN] = LAYOUT( /* Fn */
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||
_______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_HOME, KC_END, RGB_TOG, RGB_MOD,
|
||||
_______, _______, _______, KC_CALC, _______, AG_TOGG, _______, KC_MUTE, KC_VOLD, KC_VOLU, RGB_VAI, _______,
|
||||
_______, GU_TOGG, _______, _______, _______, _______, RGB_SPI, RGB_VAD, RGB_SAI)
|
||||
};
|
37
keyboards/akko/top40/keymaps/via/keymap.c
Normal file
37
keyboards/akko/top40/keymaps/via/keymap.c
Normal file
@ -0,0 +1,37 @@
|
||||
/* Copyright (C) 2023 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
// clang-format off
|
||||
enum __layers {
|
||||
_Base,
|
||||
_FN
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_Base] = LAYOUT( /* Base */
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, MO(_FN),KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[_FN] = LAYOUT( /* Fn */
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||
_______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, KC_HOME, KC_END, RGB_TOG, RGB_MOD,
|
||||
_______, _______, _______, KC_CALC, _______, AG_TOGG, _______, KC_MUTE, KC_VOLD, KC_VOLU, RGB_VAI, _______,
|
||||
_______, GU_TOGG, _______, _______, _______, _______, RGB_SPI, RGB_VAD, RGB_SAI)
|
||||
};
|
1
keyboards/akko/top40/keymaps/via/rules.mk
Normal file
1
keyboards/akko/top40/keymaps/via/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
24
keyboards/akko/top40/mcuconf.h
Normal file
24
keyboards/akko/top40/mcuconf.h
Normal file
@ -0,0 +1,24 @@
|
||||
/* Copyright (C) 2022 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef WB32_SPI_USE_QSPI
|
||||
#define WB32_SPI_USE_QSPI TRUE
|
||||
|
||||
#undef WB32_I2C_USE_I2C1
|
||||
#define WB32_I2C_USE_I2C1 TRUE
|
19
keyboards/akko/top40/readme.md
Normal file
19
keyboards/akko/top40/readme.md
Normal file
@ -0,0 +1,19 @@
|
||||
# top40
|
||||
|
||||
A customizable 40% keyboard.
|
||||
|
||||
* Keyboard Maintainer: [jonylee@hfd](https://github.com/jonylee1986)
|
||||
* Hardware Supported: top40
|
||||
* Hardware Availability: [akko](https://www.akkogear.com/)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make akko/top40:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make akko/top40:default:flash
|
||||
|
||||
**Reset Key**: Hold down the key located at *K01*, which programmed as *Esc* while plugging in the keyboard.
|
||||
|
||||
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).
|
6
keyboards/akko/top40/rules.mk
Normal file
6
keyboards/akko/top40/rules.mk
Normal file
@ -0,0 +1,6 @@
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
EEPROM_DRIVER = wear_leveling
|
||||
WEAR_LEVELING_DRIVER = spi_flash
|
||||
|
125
keyboards/akko/top40/top40.c
Normal file
125
keyboards/akko/top40/top40.c
Normal file
@ -0,0 +1,125 @@
|
||||
/* Copyright (C) 2022 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "quantum.h"
|
||||
// clang-format off
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
|
||||
/* Refer to IS31 manual for these locations
|
||||
* driver
|
||||
* | R location
|
||||
* | | G location
|
||||
* | | | B location
|
||||
* | | | | */
|
||||
{0, A_1, B_1, C_1},
|
||||
{0, A_2, B_2, C_2},
|
||||
{0, A_3, B_3, C_3},
|
||||
{0, A_4, B_4, C_4},
|
||||
{0, A_5, B_5, C_5},
|
||||
{0, A_6, B_6, C_6},
|
||||
{0, A_7, B_7, C_7},
|
||||
{0, A_8, B_8, C_8},
|
||||
{0, A_9, B_9, C_9},
|
||||
{0, A_10, B_10, C_10},
|
||||
{0, A_11, B_11, C_11},
|
||||
{0, A_12, B_12, C_12},
|
||||
|
||||
{0, D_1, E_1, F_1},
|
||||
{0, D_2, E_2, F_2},
|
||||
{0, D_3, E_3, F_3},
|
||||
{0, D_4, E_4, F_4},
|
||||
{0, D_5, E_5, F_5},
|
||||
{0, D_6, E_6, F_6},
|
||||
{0, D_7, E_7, F_7},
|
||||
{0, D_8, E_8, F_8},
|
||||
{0, D_9, E_9, F_9},
|
||||
{0, D_10, E_10, F_10},
|
||||
{0, D_11, E_11, F_11},
|
||||
{0, D_12, E_12, F_12},
|
||||
|
||||
{0, G_1, H_1, I_1},
|
||||
{0, G_2, H_2, I_2},
|
||||
{0, G_3, H_3, I_3},
|
||||
{0, G_4, H_4, I_4},
|
||||
{0, G_5, H_5, I_5},
|
||||
{0, G_6, H_6, I_6},
|
||||
{0, G_7, H_7, I_7},
|
||||
{0, G_8, H_8, I_8},
|
||||
{0, G_9, H_9, I_9},
|
||||
{0, G_10, H_10, I_10},
|
||||
{0, G_11, H_11, I_11},
|
||||
{0, G_12, H_12, I_12},
|
||||
|
||||
{0, J_1, K_1, L_1},
|
||||
{0, J_2, K_2, L_2},
|
||||
{0, J_3, K_3, L_3},
|
||||
{0, J_5, K_5, L_5},
|
||||
{0, J_7, K_7, L_7},
|
||||
{0, J_9, K_9, L_9},
|
||||
{0, J_10, K_10, L_10},
|
||||
{0, J_11, K_11, L_11},
|
||||
{0, J_12, K_12, L_12},
|
||||
|
||||
{1, A_1, B_1, C_1},
|
||||
{1, A_2, B_2, C_2},
|
||||
{1, A_3, B_3, C_3},
|
||||
{1, J_7, K_7, L_7},
|
||||
{1, J_6, K_6, L_6},
|
||||
{1, J_5, K_5, L_5},
|
||||
{1, J_4, K_4, L_4},
|
||||
{1, J_3, K_3, L_3},
|
||||
{1, J_2, K_2, L_2},
|
||||
{1, J_1, K_1, L_1},
|
||||
{1, G_8, H_8, I_8},
|
||||
{1, G_7, H_7, I_7},
|
||||
{1, G_6, H_6, I_6},
|
||||
|
||||
{1, A_4, B_4, C_4},
|
||||
{1, G_5, H_5, I_5},
|
||||
|
||||
{1, A_5, B_5, C_5},
|
||||
{1, G_4, H_4, I_4},
|
||||
|
||||
{1, A_6, B_6, C_6},
|
||||
{1, G_3, H_3, I_3},
|
||||
|
||||
{1, A_7, B_7, C_7},
|
||||
{1, A_8, B_8, C_8},
|
||||
{1, D_1, E_1, F_1},
|
||||
{1, D_2, E_2, F_2},
|
||||
{1, D_3, E_3, F_3},
|
||||
{1, D_4, E_4, F_4},
|
||||
{1, D_5, E_5, F_5},
|
||||
{1, D_6, E_6, F_6},
|
||||
{1, D_7, E_7, F_7},
|
||||
{1, D_8, E_8, F_8},
|
||||
{1, G_2, H_2, I_2},
|
||||
{1, G_1, H_1, I_1},
|
||||
|
||||
};
|
||||
|
||||
// clang-format on
|
||||
bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
|
||||
if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) {
|
||||
return false;
|
||||
}
|
||||
if (keymap_config.no_gui) {
|
||||
rgb_matrix_set_color(37, 200, 200, 200);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif
|
6
keyboards/artemis/paragon/hotswap/info.json
Normal file
6
keyboards/artemis/paragon/hotswap/info.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"matrix_pins": {
|
||||
"cols": ["F7", "F6", "F5", "F4", "F1", "F0", "C7", "E6", "B0", "B3", "B6", "B5", "B4", "D7", "D4", "D6"],
|
||||
"rows": ["D2", "D1", "D0", "B2", "B1", "C6"]
|
||||
}
|
||||
}
|
1
keyboards/artemis/paragon/hotswap/rules.mk
Normal file
1
keyboards/artemis/paragon/hotswap/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
# This file intentionally left blank
|
122
keyboards/artemis/paragon/info.json
Normal file
122
keyboards/artemis/paragon/info.json
Normal file
@ -0,0 +1,122 @@
|
||||
{
|
||||
"manufacturer": "Artemis",
|
||||
"keyboard_name": "Paragon",
|
||||
"maintainer": "Sleepdealr",
|
||||
"bootloader": "atmel-dfu",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"encoder": true
|
||||
},
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"url": "",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{ "pin_a": "D3", "pin_b": "D5" }
|
||||
]
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x3449",
|
||||
"vid": "0x8C27"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"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": [0, 8], "x": 8, "y": 0 },
|
||||
{ "matrix": [0, 9], "x": 9, "y": 0 },
|
||||
{ "matrix": [0, 10], "x": 10.5, "y": 0 },
|
||||
{ "matrix": [0, 11], "x": 11.5, "y": 0 },
|
||||
{ "matrix": [0, 12], "x": 12.5, "y": 0 },
|
||||
{ "matrix": [0, 13], "x": 13.5, "y": 0 },
|
||||
{ "matrix": [1, 0], "x": 0, "y": 1.5 },
|
||||
{ "matrix": [1, 1], "x": 1, "y": 1.5 },
|
||||
{ "matrix": [1, 2], "x": 2, "y": 1.5 },
|
||||
{ "matrix": [1, 3], "x": 3, "y": 1.5 },
|
||||
{ "matrix": [1, 4], "x": 4, "y": 1.5 },
|
||||
{ "matrix": [1, 5], "x": 5, "y": 1.5 },
|
||||
{ "matrix": [1, 6], "x": 6, "y": 1.5 },
|
||||
{ "matrix": [1, 7], "x": 7, "y": 1.5 },
|
||||
{ "matrix": [1, 8], "x": 8, "y": 1.5 },
|
||||
{ "matrix": [1, 9], "x": 9, "y": 1.5 },
|
||||
{ "matrix": [1, 10], "x": 10, "y": 1.5 },
|
||||
{ "matrix": [1, 11], "x": 11, "y": 1.5 },
|
||||
{ "matrix": [1, 12], "x": 12, "y": 1.5 },
|
||||
{ "matrix": [1, 13], "x": 13, "y": 1.5 },
|
||||
{ "matrix": [1, 14], "x": 14, "y": 1.5 },
|
||||
{ "matrix": [1, 15], "x": 15, "y": 1.5 },
|
||||
{ "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.5 },
|
||||
{ "matrix": [2, 1], "x": 1.5, "y": 2.5 },
|
||||
{ "matrix": [2, 2], "x": 2.5, "y": 2.5 },
|
||||
{ "matrix": [2, 3], "x": 3.5, "y": 2.5 },
|
||||
{ "matrix": [2, 4], "x": 4.5, "y": 2.5 },
|
||||
{ "matrix": [2, 5], "x": 5.5, "y": 2.5 },
|
||||
{ "matrix": [2, 6], "x": 6.5, "y": 2.5 },
|
||||
{ "matrix": [2, 7], "x": 7.5, "y": 2.5 },
|
||||
{ "matrix": [2, 8], "x": 8.5, "y": 2.5 },
|
||||
{ "matrix": [2, 9], "x": 9.5, "y": 2.5 },
|
||||
{ "matrix": [2, 10], "x": 10.5, "y": 2.5 },
|
||||
{ "matrix": [2, 11], "x": 11.5, "y": 2.5 },
|
||||
{ "matrix": [2, 12], "x": 12.5, "y": 2.5 },
|
||||
{ "matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 2.5 },
|
||||
{ "matrix": [2, 15], "x": 15, "y": 2.5 },
|
||||
{ "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.5 },
|
||||
{ "matrix": [3, 1], "x": 1.75, "y": 3.5 },
|
||||
{ "matrix": [3, 2], "x": 2.75, "y": 3.5 },
|
||||
{ "matrix": [3, 3], "x": 3.75, "y": 3.5 },
|
||||
{ "matrix": [3, 4], "x": 4.75, "y": 3.5 },
|
||||
{ "matrix": [3, 5], "x": 5.75, "y": 3.5 },
|
||||
{ "matrix": [3, 6], "x": 6.75, "y": 3.5 },
|
||||
{ "matrix": [3, 7], "x": 7.75, "y": 3.5 },
|
||||
{ "matrix": [3, 8], "x": 8.75, "y": 3.5 },
|
||||
{ "matrix": [3, 9], "x": 9.75, "y": 3.5 },
|
||||
{ "matrix": [3, 10], "x": 10.75, "y": 3.5 },
|
||||
{ "matrix": [3, 11], "x": 11.75, "y": 3.5 },
|
||||
{ "matrix": [3, 12], "x": 12.75, "y": 3.5 },
|
||||
{ "matrix": [3, 13], "w": 1.25, "x": 13.75, "y": 3.5 },
|
||||
{ "matrix": [3, 15], "x": 15, "y": 3.5 },
|
||||
{ "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4.5 },
|
||||
{ "matrix": [4, 1], "x": 1.25, "y": 4.5 },
|
||||
{ "matrix": [4, 2], "x": 2.25, "y": 4.5 },
|
||||
{ "matrix": [4, 3], "x": 3.25, "y": 4.5 },
|
||||
{ "matrix": [4, 4], "x": 4.25, "y": 4.5 },
|
||||
{ "matrix": [4, 5], "x": 5.25, "y": 4.5 },
|
||||
{ "matrix": [4, 6], "x": 6.25, "y": 4.5 },
|
||||
{ "matrix": [4, 7], "x": 7.25, "y": 4.5 },
|
||||
{ "matrix": [4, 8], "x": 8.25, "y": 4.5 },
|
||||
{ "matrix": [4, 9], "x": 9.25, "y": 4.5 },
|
||||
{ "matrix": [4, 10], "x": 10.25, "y": 4.5 },
|
||||
{ "matrix": [4, 11], "x": 11.25, "y": 4.5 },
|
||||
{ "matrix": [4, 12], "w": 1.75, "x": 12.25, "y": 4.5 },
|
||||
{ "matrix": [4, 13], "x": 14, "y": 4.5 },
|
||||
{ "matrix": [4, 15], "x": 15, "y": 4.5 },
|
||||
{ "matrix": [5, 0], "w": 1.25, "x": 0, "y": 5.5 },
|
||||
{ "matrix": [5, 2], "w": 1.25, "x": 1.25, "y": 5.5 },
|
||||
{ "matrix": [5, 3], "w": 1.25, "x": 2.5, "y": 5.5 },
|
||||
{ "matrix": [5, 4], "w": 2.25, "x": 3.75, "y": 5.5 },
|
||||
{ "matrix": [5, 6], "w": 1.25, "x": 6, "y": 5.5 },
|
||||
{ "matrix": [5, 8], "w": 2.75, "x": 7.25, "y": 5.5 },
|
||||
{ "matrix": [5, 10], "w": 1.5, "x": 10, "y": 5.5 },
|
||||
{ "matrix": [5, 11], "w": 1.5, "x": 11.5, "y": 5.5 },
|
||||
{ "matrix": [5, 12], "x": 13, "y": 5.5 },
|
||||
{ "matrix": [5, 13], "x": 14, "y": 5.5 },
|
||||
{ "matrix": [5, 15], "x": 15, "y": 5.5 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
33
keyboards/artemis/paragon/keymaps/default/keymap.c
Normal file
33
keyboards/artemis/paragon/keymaps/default/keymap.c
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
Copyright 2023 Sleepdealer
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
KC_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_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_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_NUBS, KC_ENT, KC_PGDN,
|
||||
KC_LSFT, KC_NUHS, 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_SPC, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }
|
||||
};
|
||||
#endif
|
1
keyboards/artemis/paragon/keymaps/default/rules.mk
Normal file
1
keyboards/artemis/paragon/keymaps/default/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
33
keyboards/artemis/paragon/keymaps/via/keymap.c
Normal file
33
keyboards/artemis/paragon/keymaps/via/keymap.c
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
Copyright 2023 Sleepdealer
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
KC_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_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_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_NUBS, KC_ENT, KC_PGDN,
|
||||
KC_LSFT, KC_NUHS, 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, KC_SPC, KC_SPC, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }
|
||||
};
|
||||
#endif
|
2
keyboards/artemis/paragon/keymaps/via/rules.mk
Normal file
2
keyboards/artemis/paragon/keymaps/via/rules.mk
Normal file
@ -0,0 +1,2 @@
|
||||
VIA_ENABLE = yes
|
||||
ENCODER_MAP_ENABLE = yes
|
23
keyboards/artemis/paragon/readme.md
Normal file
23
keyboards/artemis/paragon/readme.md
Normal file
@ -0,0 +1,23 @@
|
||||
# Artemis/Paragon
|
||||
|
||||
* Keyboard Maintainer: [Sleepdealer](https://github.com/Sleepdealr)
|
||||
* Hardware Supported: Paragon PCB
|
||||
* Hardware Availability: GB
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make artemis/paragon/hotswap:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make artemis/paragon/hotswap: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
|
6
keyboards/artemis/paragon/soldered/info.json
Normal file
6
keyboards/artemis/paragon/soldered/info.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"matrix_pins": {
|
||||
"cols": ["E6", "F0", "F1", "F4", "F5", "F6", "F7", "B0", "B1", "B3", "D0", "D1", "D2", "D3", "D7", "D5"],
|
||||
"rows": ["B2", "C7", "C6", "B6", "B5", "B4"]
|
||||
}
|
||||
}
|
1
keyboards/artemis/paragon/soldered/rules.mk
Normal file
1
keyboards/artemis/paragon/soldered/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
# This file intentionally left blank
|
@ -81,21 +81,21 @@
|
||||
{"matrix": [3, 4], "x": 4, "y": 3.125},
|
||||
{"matrix": [3, 5], "x": 5, "y": 3.25},
|
||||
|
||||
{"matrix": [7, 5], "x": 6, "y": 2.75},
|
||||
{"matrix": [7, 4], "x": 9.5, "y": 2.75},
|
||||
{"matrix": [7, 3], "x": 10.5, "y": 3.25},
|
||||
{"matrix": [7, 2], "x": 11.5, "y": 3.125},
|
||||
{"matrix": [7, 1], "x": 12.5, "y": 3},
|
||||
{"matrix": [7, 0], "x": 13.5, "y": 3.125},
|
||||
{"matrix": [7, 5], "x": 10.5, "y": 3.25},
|
||||
{"matrix": [7, 4], "x": 11.5, "y": 3.125},
|
||||
{"matrix": [7, 3], "x": 12.5, "y": 3},
|
||||
{"matrix": [7, 2], "x": 13.5, "y": 3.125},
|
||||
{"matrix": [7, 1], "x": 14.5, "y": 3.375},
|
||||
{"matrix": [7, 0], "x": 15.5, "y": 3.5},
|
||||
|
||||
{"matrix": [8, 0], "x": 14.5, "y": 3.375},
|
||||
{"matrix": [8, 1], "x": 15.5, "y": 3.5},
|
||||
{"matrix": [8, 2], "x": 0, "y": 4.5},
|
||||
{"matrix": [8, 3], "x": 2.5, "y": 4.125},
|
||||
{"matrix": [8, 4], "x": 3.5, "y": 4.15},
|
||||
{"matrix": [8, 5], "x": 4.5, "y": 4.25},
|
||||
{"matrix": [8, 0], "x": 0, "y": 4.5},
|
||||
{"matrix": [8, 1], "x": 2.5, "y": 4.125},
|
||||
{"matrix": [8, 2], "x": 3.5, "y": 4.15},
|
||||
{"matrix": [8, 3], "x": 4.5, "y": 4.25},
|
||||
{"matrix": [8, 4], "x": 6, "y": 4.25, "h": 1.25},
|
||||
{"matrix": [8, 5], "x": 6, "y": 2.75},
|
||||
|
||||
{"matrix": [9, 5], "x": 6, "y": 4.25, "h": 1.25},
|
||||
{"matrix": [9, 5], "x": 9.5, "y": 2.75},
|
||||
{"matrix": [9, 4], "x": 9.5, "y": 4.25, "h": 1.25},
|
||||
{"matrix": [9, 3], "x": 11, "y": 4.25},
|
||||
{"matrix": [9, 2], "x": 12, "y": 4.15},
|
||||
|
@ -73,26 +73,26 @@
|
||||
{"matrix": [3, 4], "x": 4, "y": 3.125},
|
||||
{"matrix": [3, 5], "x": 5, "y": 3.25},
|
||||
|
||||
{"matrix": [7, 5], "x": 6, "y": 2.75},
|
||||
{"matrix": [7, 4], "x": 9.5, "y": 2.75},
|
||||
{"matrix": [7, 3], "x": 10.5, "y": 3.25},
|
||||
{"matrix": [7, 2], "x": 11.5, "y": 3.125},
|
||||
{"matrix": [7, 1], "x": 12.5, "y": 3},
|
||||
{"matrix": [7, 0], "x": 13.5, "y": 3.125},
|
||||
{"matrix": [7, 5], "x": 10.5, "y": 3.25},
|
||||
{"matrix": [7, 4], "x": 11.5, "y": 3.125},
|
||||
{"matrix": [7, 3], "x": 12.5, "y": 3},
|
||||
{"matrix": [7, 2], "x": 13.5, "y": 3.125},
|
||||
{"matrix": [7, 1], "x": 14.5, "y": 3.375},
|
||||
{"matrix": [7, 0], "x": 15.5, "y": 3.5},
|
||||
|
||||
{"matrix": [8, 0], "x": 14.5, "y": 3.375},
|
||||
{"matrix": [8, 1], "x": 15.5, "y": 3.5},
|
||||
{"matrix": [8, 2], "x": 0, "y": 4.5},
|
||||
{"matrix": [8, 3], "x": 2.5, "y": 4.125},
|
||||
{"matrix": [8, 4], "x": 3.5, "y": 4.15},
|
||||
{"matrix": [8, 5], "x": 4.5, "y": 4.25},
|
||||
{"matrix": [8, 0], "x": 0, "y": 4.5},
|
||||
{"matrix": [8, 1], "x": 2.5, "y": 4.125},
|
||||
{"matrix": [8, 2], "x": 3.5, "y": 4.15},
|
||||
{"matrix": [8, 3], "x": 4.5, "y": 4.25},
|
||||
{"matrix": [8, 4], "x": 6, "y": 4.25, "h": 1.25},
|
||||
{"matrix": [8, 5], "x": 6, "y": 2.75},
|
||||
|
||||
{"matrix": [9, 5], "x": 6, "y": 4.25, "h": 1.25},
|
||||
{"matrix": [9, 5], "x": 9.5, "y": 2.75},
|
||||
{"matrix": [9, 4], "x": 9.5, "y": 4.25, "h": 1.25},
|
||||
{"matrix": [9, 3], "x": 11, "y": 4.25},
|
||||
{"matrix": [9, 2], "x": 12, "y": 4.15},
|
||||
{"matrix": [9, 1], "x": 13, "y": 4.125},
|
||||
{"matrix": [9, 0], "x": 14.5, "y": 4.5}
|
||||
{"matrix": [9, 0], "x": 15.5, "y": 4.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
311
keyboards/cannonkeys/leviatan/info.json
Normal file
311
keyboards/cannonkeys/leviatan/info.json
Normal file
@ -0,0 +1,311 @@
|
||||
{
|
||||
"manufacturer": "CannonKeys",
|
||||
"url": "https://cannonkeys.com",
|
||||
"maintainer": "awkannan",
|
||||
"keyboard_name": "Leviatan",
|
||||
"usb": {
|
||||
"vid": "0xCA04",
|
||||
"pid": "0x0024",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B11", "B10", "B2", "A9", "A15", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "C13", "C14", "C15"],
|
||||
"rows": ["B1", "B0", "A7", "A5", "A4"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "STM32F072",
|
||||
"bootloader": "stm32-dfu",
|
||||
"community_layouts": ["60_ansi", "60_tsangan_hhkb", "60_iso"],
|
||||
"layouts": {
|
||||
"LAYOUT_60_ansi": {
|
||||
"layout": [
|
||||
{"x": 0, "y": 0, "matrix": [0, 0]},
|
||||
{"x": 1, "y": 0, "matrix": [0, 1]},
|
||||
{"x": 2, "y": 0, "matrix": [0, 2]},
|
||||
{"x": 3, "y": 0, "matrix": [0, 3]},
|
||||
{"x": 4, "y": 0, "matrix": [0, 4]},
|
||||
{"x": 5, "y": 0, "matrix": [0, 5]},
|
||||
{"x": 6, "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": [0, 10]},
|
||||
{"x": 11, "y": 0, "matrix": [0, 11]},
|
||||
{"x": 12, "y": 0, "matrix": [0, 12]},
|
||||
{"x": 13, "y": 0, "w": 2, "matrix": [0, 13]},
|
||||
|
||||
{"x": 0, "y": 1, "w": 1.5, "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": [1, 10]},
|
||||
{"x": 11.5, "y": 1, "matrix": [1, 11]},
|
||||
{"x": 12.5, "y": 1, "matrix": [1, 12]},
|
||||
{"x": 13.5, "y": 1, "w": 1.5, "matrix": [1, 14]},
|
||||
|
||||
{"x": 0, "y": 2, "w": 1.75, "matrix": [2, 0]},
|
||||
{"x": 1.75, "y": 2, "matrix": [2, 1]},
|
||||
{"x": 2.75, "y": 2, "matrix": [2, 2]},
|
||||
{"x": 3.75, "y": 2, "matrix": [2, 3]},
|
||||
{"x": 4.75, "y": 2, "matrix": [2, 4]},
|
||||
{"x": 5.75, "y": 2, "matrix": [2, 5]},
|
||||
{"x": 6.75, "y": 2, "matrix": [2, 6]},
|
||||
{"x": 7.75, "y": 2, "matrix": [2, 7]},
|
||||
{"x": 8.75, "y": 2, "matrix": [2, 8]},
|
||||
{"x": 9.75, "y": 2, "matrix": [2, 9]},
|
||||
{"x": 10.75, "y": 2, "matrix": [2, 10]},
|
||||
{"x": 11.75, "y": 2, "matrix": [2, 11]},
|
||||
{"x": 12.75, "y": 2, "w": 2.25, "matrix": [2, 14]},
|
||||
|
||||
{"x": 0, "y": 3, "w": 2.25, "matrix": [3, 0]},
|
||||
{"x": 2.25, "y": 3, "matrix": [3, 2]},
|
||||
{"x": 3.25, "y": 3, "matrix": [3, 3]},
|
||||
{"x": 4.25, "y": 3, "matrix": [3, 4]},
|
||||
{"x": 5.25, "y": 3, "matrix": [3, 5]},
|
||||
{"x": 6.25, "y": 3, "matrix": [3, 6]},
|
||||
{"x": 7.25, "y": 3, "matrix": [3, 7]},
|
||||
{"x": 8.25, "y": 3, "matrix": [3, 8]},
|
||||
{"x": 9.25, "y": 3, "matrix": [3, 9]},
|
||||
{"x": 10.25, "y": 3, "matrix": [3, 10]},
|
||||
{"x": 11.25, "y": 3, "matrix": [3, 11]},
|
||||
{"x": 12.25, "y": 3, "w": 2.75, "matrix": [3, 12]},
|
||||
|
||||
{"x": 0, "y": 4, "w": 1.25, "matrix": [4, 0]},
|
||||
{"x": 1.25, "y": 4, "w": 1.25, "matrix": [4, 1]},
|
||||
{"x": 2.5, "y": 4, "w": 1.25, "matrix": [4, 2]},
|
||||
{"x": 3.75, "y": 4, "w": 6.25, "matrix": [4, 6]},
|
||||
{"x": 10, "y": 4, "w": 1.25, "matrix": [4, 10]},
|
||||
{"x": 11.25, "y": 4, "w": 1.25, "matrix": [4, 11]},
|
||||
{"x": 12.5, "y": 4, "w": 1.25, "matrix": [4, 12]},
|
||||
{"x": 13.75, "y": 4, "w": 1.25, "matrix": [4, 14]}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_tsangan_hhkb": {
|
||||
"layout": [
|
||||
{"x": 0, "y": 0, "matrix": [0, 0]},
|
||||
{"x": 1, "y": 0, "matrix": [0, 1]},
|
||||
{"x": 2, "y": 0, "matrix": [0, 2]},
|
||||
{"x": 3, "y": 0, "matrix": [0, 3]},
|
||||
{"x": 4, "y": 0, "matrix": [0, 4]},
|
||||
{"x": 5, "y": 0, "matrix": [0, 5]},
|
||||
{"x": 6, "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": [0, 10]},
|
||||
{"x": 11, "y": 0, "matrix": [0, 11]},
|
||||
{"x": 12, "y": 0, "matrix": [0, 12]},
|
||||
{"x": 13, "y": 0, "matrix": [0, 13]},
|
||||
{"x": 14, "y": 0, "matrix": [0, 14]},
|
||||
|
||||
{"x": 0, "y": 1, "w": 1.5, "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": [1, 10]},
|
||||
{"x": 11.5, "y": 1, "matrix": [1, 11]},
|
||||
{"x": 12.5, "y": 1, "matrix": [1, 12]},
|
||||
{"x": 13.5, "y": 1, "w": 1.5, "matrix": [1, 14]},
|
||||
|
||||
{"x": 0, "y": 2, "w": 1.75, "matrix": [2, 0]},
|
||||
{"x": 1.75, "y": 2, "matrix": [2, 1]},
|
||||
{"x": 2.75, "y": 2, "matrix": [2, 2]},
|
||||
{"x": 3.75, "y": 2, "matrix": [2, 3]},
|
||||
{"x": 4.75, "y": 2, "matrix": [2, 4]},
|
||||
{"x": 5.75, "y": 2, "matrix": [2, 5]},
|
||||
{"x": 6.75, "y": 2, "matrix": [2, 6]},
|
||||
{"x": 7.75, "y": 2, "matrix": [2, 7]},
|
||||
{"x": 8.75, "y": 2, "matrix": [2, 8]},
|
||||
{"x": 9.75, "y": 2, "matrix": [2, 9]},
|
||||
{"x": 10.75, "y": 2, "matrix": [2, 10]},
|
||||
{"x": 11.75, "y": 2, "matrix": [2, 11]},
|
||||
{"x": 12.75, "y": 2, "w": 2.25, "matrix": [2, 14]},
|
||||
|
||||
{"x": 0, "y": 3, "w": 2.25, "matrix": [3, 0]},
|
||||
{"x": 2.25, "y": 3, "matrix": [3, 2]},
|
||||
{"x": 3.25, "y": 3, "matrix": [3, 3]},
|
||||
{"x": 4.25, "y": 3, "matrix": [3, 4]},
|
||||
{"x": 5.25, "y": 3, "matrix": [3, 5]},
|
||||
{"x": 6.25, "y": 3, "matrix": [3, 6]},
|
||||
{"x": 7.25, "y": 3, "matrix": [3, 7]},
|
||||
{"x": 8.25, "y": 3, "matrix": [3, 8]},
|
||||
{"x": 9.25, "y": 3, "matrix": [3, 9]},
|
||||
{"x": 10.25, "y": 3, "matrix": [3, 10]},
|
||||
{"x": 11.25, "y": 3, "matrix": [3, 11]},
|
||||
{"x": 12.25, "y": 3, "w": 1.75, "matrix": [3, 12]},
|
||||
{"x": 14, "y": 3, "matrix": [3, 14]},
|
||||
|
||||
{"x": 0, "y": 4, "w": 1.5, "matrix": [4, 0]},
|
||||
{"x": 1.5, "y": 4, "matrix": [4, 1]},
|
||||
{"x": 2.5, "y": 4, "w": 1.5, "matrix": [4, 2]},
|
||||
{"x": 4, "y": 4, "w": 7, "matrix": [4, 6]},
|
||||
{"x": 11, "y": 4, "w": 1.5, "matrix": [4, 11]},
|
||||
{"x": 12.5, "y": 4, "matrix": [4, 12]},
|
||||
{"x": 13.5, "y": 4, "w": 1.5, "matrix": [4, 14]}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso": {
|
||||
"layout": [
|
||||
{"x": 0, "y": 0, "matrix": [0, 0]},
|
||||
{"x": 1, "y": 0, "matrix": [0, 1]},
|
||||
{"x": 2, "y": 0, "matrix": [0, 2]},
|
||||
{"x": 3, "y": 0, "matrix": [0, 3]},
|
||||
{"x": 4, "y": 0, "matrix": [0, 4]},
|
||||
{"x": 5, "y": 0, "matrix": [0, 5]},
|
||||
{"x": 6, "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": [0, 10]},
|
||||
{"x": 11, "y": 0, "matrix": [0, 11]},
|
||||
{"x": 12, "y": 0, "matrix": [0, 12]},
|
||||
{"x": 13, "y": 0, "w": 2, "matrix": [0, 13]},
|
||||
|
||||
{"x": 0, "y": 1, "w": 1.5, "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": [1, 10]},
|
||||
{"x": 11.5, "y": 1, "matrix": [1, 11]},
|
||||
{"x": 12.5, "y": 1, "matrix": [1, 12]},
|
||||
|
||||
{"x": 0, "y": 2, "w": 1.75, "matrix": [2, 0]},
|
||||
{"x": 1.75, "y": 2, "matrix": [2, 1]},
|
||||
{"x": 2.75, "y": 2, "matrix": [2, 2]},
|
||||
{"x": 3.75, "y": 2, "matrix": [2, 3]},
|
||||
{"x": 4.75, "y": 2, "matrix": [2, 4]},
|
||||
{"x": 5.75, "y": 2, "matrix": [2, 5]},
|
||||
{"x": 6.75, "y": 2, "matrix": [2, 6]},
|
||||
{"x": 7.75, "y": 2, "matrix": [2, 7]},
|
||||
{"x": 8.75, "y": 2, "matrix": [2, 8]},
|
||||
{"x": 9.75, "y": 2, "matrix": [2, 9]},
|
||||
{"x": 10.75, "y": 2, "matrix": [2, 10]},
|
||||
{"x": 11.75, "y": 2, "matrix": [2, 11]},
|
||||
{"x": 12.75, "y": 2, "matrix": [2, 12]},
|
||||
{"x": 13.75, "y": 1, "w": 1.25, "h": 2, "matrix": [2, 14]},
|
||||
|
||||
{"x": 0, "y": 3, "w": 1.25, "matrix": [3, 0]},
|
||||
{"x": 1.25, "y": 3, "matrix": [3, 1]},
|
||||
{"x": 2.25, "y": 3, "matrix": [3, 2]},
|
||||
{"x": 3.25, "y": 3, "matrix": [3, 3]},
|
||||
{"x": 4.25, "y": 3, "matrix": [3, 4]},
|
||||
{"x": 5.25, "y": 3, "matrix": [3, 5]},
|
||||
{"x": 6.25, "y": 3, "matrix": [3, 6]},
|
||||
{"x": 7.25, "y": 3, "matrix": [3, 7]},
|
||||
{"x": 8.25, "y": 3, "matrix": [3, 8]},
|
||||
{"x": 9.25, "y": 3, "matrix": [3, 9]},
|
||||
{"x": 10.25, "y": 3, "matrix": [3, 10]},
|
||||
{"x": 11.25, "y": 3, "matrix": [3, 11]},
|
||||
{"x": 12.25, "y": 3, "w": 2.75, "matrix": [3, 12]},
|
||||
|
||||
{"x": 0, "y": 4, "w": 1.25, "matrix": [4, 0]},
|
||||
{"x": 1.25, "y": 4, "w": 1.25, "matrix": [4, 1]},
|
||||
{"x": 2.5, "y": 4, "w": 1.25, "matrix": [4, 2]},
|
||||
{"x": 3.75, "y": 4, "w": 6.25, "matrix": [4, 6]},
|
||||
{"x": 10, "y": 4, "w": 1.25, "matrix": [4, 10]},
|
||||
{"x": 11.25, "y": 4, "w": 1.25, "matrix": [4, 11]},
|
||||
{"x": 12.5, "y": 4, "w": 1.25, "matrix": [4, 12]},
|
||||
{"x": 13.75, "y": 4, "w": 1.25, "matrix": [4, 14]}
|
||||
]
|
||||
},
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"x": 0, "y": 0, "matrix": [0, 0]},
|
||||
{"x": 1, "y": 0, "matrix": [0, 1]},
|
||||
{"x": 2, "y": 0, "matrix": [0, 2]},
|
||||
{"x": 3, "y": 0, "matrix": [0, 3]},
|
||||
{"x": 4, "y": 0, "matrix": [0, 4]},
|
||||
{"x": 5, "y": 0, "matrix": [0, 5]},
|
||||
{"x": 6, "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": [0, 10]},
|
||||
{"x": 11, "y": 0, "matrix": [0, 11]},
|
||||
{"x": 12, "y": 0, "matrix": [0, 12]},
|
||||
{"x": 13, "y": 0, "matrix": [0, 13]},
|
||||
{"x": 14, "y": 0, "matrix": [0, 14]},
|
||||
|
||||
{"x": 0, "y": 1, "w": 1.5, "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": [1, 10]},
|
||||
{"x": 11.5, "y": 1, "matrix": [1, 11]},
|
||||
{"x": 12.5, "y": 1, "matrix": [1, 12]},
|
||||
{"x": 13.5, "y": 1, "w": 1.5, "matrix": [1, 14]},
|
||||
|
||||
{"x": 0, "y": 2, "w": 1.75, "matrix": [2, 0]},
|
||||
{"x": 1.75, "y": 2, "matrix": [2, 1]},
|
||||
{"x": 2.75, "y": 2, "matrix": [2, 2]},
|
||||
{"x": 3.75, "y": 2, "matrix": [2, 3]},
|
||||
{"x": 4.75, "y": 2, "matrix": [2, 4]},
|
||||
{"x": 5.75, "y": 2, "matrix": [2, 5]},
|
||||
{"x": 6.75, "y": 2, "matrix": [2, 6]},
|
||||
{"x": 7.75, "y": 2, "matrix": [2, 7]},
|
||||
{"x": 8.75, "y": 2, "matrix": [2, 8]},
|
||||
{"x": 9.75, "y": 2, "matrix": [2, 9]},
|
||||
{"x": 10.75, "y": 2, "matrix": [2, 10]},
|
||||
{"x": 11.75, "y": 2, "matrix": [2, 11]},
|
||||
{"x": 12.75, "y": 2, "matrix": [2, 12]},
|
||||
{"x": 13.75, "y": 2, "w": 1.25, "matrix": [2, 14]},
|
||||
|
||||
{"x": 0, "y": 3, "w": 1.25, "matrix": [3, 0]},
|
||||
{"x": 1.25, "y": 3, "matrix": [3, 1]},
|
||||
{"x": 2.25, "y": 3, "matrix": [3, 2]},
|
||||
{"x": 3.25, "y": 3, "matrix": [3, 3]},
|
||||
{"x": 4.25, "y": 3, "matrix": [3, 4]},
|
||||
{"x": 5.25, "y": 3, "matrix": [3, 5]},
|
||||
{"x": 6.25, "y": 3, "matrix": [3, 6]},
|
||||
{"x": 7.25, "y": 3, "matrix": [3, 7]},
|
||||
{"x": 8.25, "y": 3, "matrix": [3, 8]},
|
||||
{"x": 9.25, "y": 3, "matrix": [3, 9]},
|
||||
{"x": 10.25, "y": 3, "matrix": [3, 10]},
|
||||
{"x": 11.25, "y": 3, "matrix": [3, 11]},
|
||||
{"x": 12.25, "y": 3, "w": 1.75, "matrix": [3, 12]},
|
||||
{"x": 14, "y": 3, "matrix": [3, 14]},
|
||||
|
||||
{"x": 0, "y": 4, "w": 1.25, "matrix": [4, 0]},
|
||||
{"x": 1.25, "y": 4, "w": 1.25, "matrix": [4, 1]},
|
||||
{"x": 2.5, "y": 4, "w": 1.25, "matrix": [4, 2]},
|
||||
{"x": 3.75, "y": 4, "w": 6.25, "matrix": [4, 6]},
|
||||
{"x": 10, "y": 4, "w": 1.25, "matrix": [4, 10]},
|
||||
{"x": 11.25, "y": 4, "w": 1.25, "matrix": [4, 11]},
|
||||
{"x": 12.5, "y": 4, "w": 1.25, "matrix": [4, 12]},
|
||||
{"x": 13.75, "y": 4, "w": 1.25, "matrix": [4, 14]}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
45
keyboards/cannonkeys/leviatan/keymaps/default/keymap.c
Normal file
45
keyboards/cannonkeys/leviatan/keymaps/default/keymap.c
Normal file
@ -0,0 +1,45 @@
|
||||
/*
|
||||
Copyright 2012,2013 Jun Wako <wakojun@gmail.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
|
||||
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_names {
|
||||
_BASE,
|
||||
_FN1
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_60_ansi(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN1), KC_RCTL
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT_60_ansi(
|
||||
QK_GESC, 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,
|
||||
RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
BL_UP, BL_DOWN, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_GRV, _______, _______, _______, _______, _______, _______, QK_BOOT
|
||||
)
|
||||
};
|
45
keyboards/cannonkeys/leviatan/keymaps/iso/keymap.c
Normal file
45
keyboards/cannonkeys/leviatan/keymaps/iso/keymap.c
Normal file
@ -0,0 +1,45 @@
|
||||
/*
|
||||
Copyright 2012,2013 Jun Wako <wakojun@gmail.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
|
||||
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_names {
|
||||
_BASE,
|
||||
_FN1
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_60_iso(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN1), KC_RCTL
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT_60_iso(
|
||||
QK_GESC, 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,
|
||||
RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
BL_UP, _______, BL_DOWN, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_GRV, _______, _______, _______, _______, _______, _______, QK_BOOT
|
||||
)
|
||||
};
|
46
keyboards/cannonkeys/leviatan/keymaps/tsangan/keymap.c
Normal file
46
keyboards/cannonkeys/leviatan/keymaps/tsangan/keymap.c
Normal file
@ -0,0 +1,46 @@
|
||||
/*
|
||||
Copyright 2012,2013 Jun Wako <wakojun@gmail.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
|
||||
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_names {
|
||||
_BASE,
|
||||
_FN1
|
||||
};
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_60_tsangan_hhkb(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_DEL,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT_60_tsangan_hhkb(
|
||||
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, _______,
|
||||
RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
BL_UP, BL_DOWN, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, QK_BOOT
|
||||
)
|
||||
};
|
45
keyboards/cannonkeys/leviatan/keymaps/via/keymap.c
Normal file
45
keyboards/cannonkeys/leviatan/keymaps/via/keymap.c
Normal file
@ -0,0 +1,45 @@
|
||||
/*
|
||||
Copyright 2012,2013 Jun Wako <wakojun@gmail.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
|
||||
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
||||
// entirely and just use numbers.
|
||||
enum layer_names {
|
||||
_BASE,
|
||||
_FN1,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_all(
|
||||
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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN1), KC_RCTL
|
||||
),
|
||||
|
||||
[_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_DEL, KC_DEL,
|
||||
RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
BL_BRTG, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
BL_UP, BL_DOWN, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, QK_BOOT
|
||||
)
|
||||
};
|
1
keyboards/cannonkeys/leviatan/keymaps/via/rules.mk
Normal file
1
keyboards/cannonkeys/leviatan/keymaps/via/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
25
keyboards/cannonkeys/leviatan/readme.md
Normal file
25
keyboards/cannonkeys/leviatan/readme.md
Normal file
@ -0,0 +1,25 @@
|
||||
# CannonKeys Leviatan for LaminarDesigns
|
||||
|
||||
Leviatan Keyboard
|
||||
|
||||
* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan)
|
||||
* Hardware Supported: STM32F072CBT6 (or equivalent)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make cannonkeys/leviatan:default
|
||||
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make cannonkeys/leviatan: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 "0" 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
|
5
keyboards/cannonkeys/leviatan/rules.mk
Normal file
5
keyboards/cannonkeys/leviatan/rules.mk
Normal file
@ -0,0 +1,5 @@
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
||||
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
45
keyboards/cipulot/ec_alveus/1_0_0/config.h
Normal file
45
keyboards/cipulot/ec_alveus/1_0_0/config.h
Normal file
@ -0,0 +1,45 @@
|
||||
/* Copyright 2023 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 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 16
|
||||
|
||||
/* Custom matrix pins and port select array */
|
||||
#define MATRIX_ROW_PINS \
|
||||
{ A14, B3, A15, B5, B4 }
|
||||
#define MATRIX_COL_CHANNELS \
|
||||
{ 3, 0, 1, 2, 6, 5, 7, 4 }
|
||||
#define MUX_SEL_PINS \
|
||||
{ B7, B8, B9 }
|
||||
|
||||
/* Hardware peripherals pins */
|
||||
#define APLEX_EN_PIN_0 C13
|
||||
#define APLEX_EN_PIN_1 C14
|
||||
#define DISCHARGE_PIN B1
|
||||
#define ANALOG_PORT A3
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
#define DEFAULT_ACTUATION_LEVEL 550
|
||||
#define DEFAULT_RELEASE_LEVEL 500
|
||||
|
||||
#define DISCHARGE_TIME 10
|
183
keyboards/cipulot/ec_alveus/1_0_0/ec_switch_matrix.c
Normal file
183
keyboards/cipulot/ec_alveus/1_0_0/ec_switch_matrix.c
Normal file
@ -0,0 +1,183 @@
|
||||
/* Copyright 2023 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 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 "ec_switch_matrix.h"
|
||||
#include "analog.h"
|
||||
#include "atomic_util.h"
|
||||
#include "print.h"
|
||||
#include "wait.h"
|
||||
|
||||
/* Pin and port array */
|
||||
const uint32_t row_pins[] = MATRIX_ROW_PINS;
|
||||
const uint8_t col_channels[] = MATRIX_COL_CHANNELS;
|
||||
const uint32_t mux_sel_pins[] = MUX_SEL_PINS;
|
||||
|
||||
static ecsm_config_t config;
|
||||
static uint16_t ecsm_sw_value[MATRIX_ROWS][MATRIX_COLS];
|
||||
|
||||
static adc_mux adcMux;
|
||||
|
||||
static inline void discharge_capacitor(void) {
|
||||
writePinLow(DISCHARGE_PIN);
|
||||
}
|
||||
static inline void charge_capacitor(uint8_t row) {
|
||||
writePinHigh(DISCHARGE_PIN);
|
||||
writePinHigh(row_pins[row]);
|
||||
}
|
||||
|
||||
static inline void init_mux_sel(void) {
|
||||
for (int idx = 0; idx < 3; idx++) {
|
||||
setPinOutput(mux_sel_pins[idx]);
|
||||
}
|
||||
}
|
||||
|
||||
static inline void select_mux(uint8_t col) {
|
||||
uint8_t ch = col_channels[col];
|
||||
writePin(mux_sel_pins[0], ch & 1);
|
||||
writePin(mux_sel_pins[1], ch & 2);
|
||||
writePin(mux_sel_pins[2], ch & 4);
|
||||
}
|
||||
|
||||
static inline void init_row(void) {
|
||||
for (int idx = 0; idx < MATRIX_ROWS; idx++) {
|
||||
setPinOutput(row_pins[idx]);
|
||||
writePinLow(row_pins[idx]);
|
||||
}
|
||||
}
|
||||
|
||||
/* Initialize the peripherals pins */
|
||||
int ecsm_init(ecsm_config_t const* const ecsm_config) {
|
||||
// Initialize config
|
||||
config = *ecsm_config;
|
||||
|
||||
palSetLineMode(ANALOG_PORT, PAL_MODE_INPUT_ANALOG);
|
||||
adcMux = pinToMux(ANALOG_PORT);
|
||||
|
||||
// Dummy call to make sure that adcStart() has been called in the appropriate state
|
||||
adc_read(adcMux);
|
||||
|
||||
// Initialize discharge pin as discharge mode
|
||||
writePinLow(DISCHARGE_PIN);
|
||||
setPinOutputOpenDrain(DISCHARGE_PIN);
|
||||
|
||||
// Initialize drive lines
|
||||
init_row();
|
||||
|
||||
// Initialize multiplexer select pin
|
||||
init_mux_sel();
|
||||
|
||||
// Enable AMUX
|
||||
setPinOutput(APLEX_EN_PIN_0);
|
||||
writePinLow(APLEX_EN_PIN_0);
|
||||
setPinOutput(APLEX_EN_PIN_1);
|
||||
writePinLow(APLEX_EN_PIN_1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ecsm_update(ecsm_config_t const* const ecsm_config) {
|
||||
// Save config
|
||||
config = *ecsm_config;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Read the capacitive sensor value
|
||||
uint16_t ecsm_readkey_raw(uint8_t channel, uint8_t row, uint8_t col) {
|
||||
uint16_t sw_value = 0;
|
||||
|
||||
// Select the multiplexer
|
||||
if (channel == 0) {
|
||||
writePinHigh(APLEX_EN_PIN_0);
|
||||
select_mux(col);
|
||||
writePinLow(APLEX_EN_PIN_0);
|
||||
} else {
|
||||
writePinHigh(APLEX_EN_PIN_1);
|
||||
select_mux(col);
|
||||
writePinLow(APLEX_EN_PIN_1);
|
||||
}
|
||||
|
||||
// Set strobe pins to low state
|
||||
writePinLow(row_pins[row]);
|
||||
ATOMIC_BLOCK_FORCEON {
|
||||
// Set the row pin to high state and have capacitor charge
|
||||
charge_capacitor(row);
|
||||
// Read the ADC value
|
||||
sw_value = adc_read(adcMux);
|
||||
}
|
||||
// Discharge peak hold capacitor
|
||||
discharge_capacitor();
|
||||
// Waiting for the ghost capacitor to discharge fully
|
||||
wait_us(DISCHARGE_TIME);
|
||||
|
||||
return sw_value;
|
||||
}
|
||||
|
||||
// Update press/release state of key
|
||||
bool ecsm_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value) {
|
||||
bool current_state = (*current_row >> col) & 1;
|
||||
|
||||
// Press to release
|
||||
if (current_state && sw_value < config.ecsm_actuation_threshold) {
|
||||
*current_row &= ~(1 << col);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Release to press
|
||||
if ((!current_state) && sw_value > config.ecsm_release_threshold) {
|
||||
*current_row |= (1 << col);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Scan key values and update matrix state
|
||||
bool ecsm_matrix_scan(matrix_row_t current_matrix[]) {
|
||||
bool updated = false;
|
||||
|
||||
// Disable AMUX of channel 1
|
||||
writePinHigh(APLEX_EN_PIN_1);
|
||||
for (int col = 0; col < sizeof(col_channels); col++) {
|
||||
for (int row = 0; row < MATRIX_ROWS; row++) {
|
||||
ecsm_sw_value[row][col] = ecsm_readkey_raw(0, row, col);
|
||||
updated |= ecsm_update_key(¤t_matrix[row], row, col, ecsm_sw_value[row][col]);
|
||||
}
|
||||
}
|
||||
|
||||
// Disable AMUX of channel 1
|
||||
writePinHigh(APLEX_EN_PIN_0);
|
||||
for (int col = 0; col < sizeof(col_channels); col++) {
|
||||
for (int row = 0; row < MATRIX_ROWS; row++) {
|
||||
ecsm_sw_value[row][col + 8] = ecsm_readkey_raw(1, row, col);
|
||||
updated |= ecsm_update_key(¤t_matrix[row], row, col + 8, ecsm_sw_value[row][col + 8]);
|
||||
}
|
||||
}
|
||||
return updated;
|
||||
}
|
||||
|
||||
// Debug print key values
|
||||
void ecsm_print_matrix(void) {
|
||||
for (int row = 0; row < MATRIX_ROWS; row++) {
|
||||
for (int col = 0; col < MATRIX_COLS; col++) {
|
||||
uprintf("%4d", ecsm_sw_value[row][col]);
|
||||
if (col < (MATRIX_COLS - 1)) {
|
||||
print(",");
|
||||
}
|
||||
}
|
||||
print("\n");
|
||||
}
|
||||
print("\n");
|
||||
}
|
36
keyboards/cipulot/ec_alveus/1_0_0/ec_switch_matrix.h
Normal file
36
keyboards/cipulot/ec_alveus/1_0_0/ec_switch_matrix.h
Normal file
@ -0,0 +1,36 @@
|
||||
/* Copyright 2023 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 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "matrix.h"
|
||||
|
||||
typedef struct {
|
||||
uint16_t ecsm_actuation_threshold; // threshold for key release
|
||||
uint16_t ecsm_release_threshold; // threshold for key press
|
||||
} ecsm_config_t;
|
||||
|
||||
ecsm_config_t ecsm_config;
|
||||
|
||||
int ecsm_init(ecsm_config_t const* const ecsm_config);
|
||||
int ecsm_update(ecsm_config_t const* const ecsm_config);
|
||||
bool ecsm_matrix_scan(matrix_row_t current_matrix[]);
|
||||
uint16_t ecsm_readkey_raw(uint8_t channel, uint8_t row, uint8_t col);
|
||||
bool ecsm_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value);
|
||||
void ecsm_print_matrix(void);
|
21
keyboards/cipulot/ec_alveus/1_0_0/halconf.h
Normal file
21
keyboards/cipulot/ec_alveus/1_0_0/halconf.h
Normal file
@ -0,0 +1,21 @@
|
||||
/* Copyright 2023 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 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_ADC TRUE
|
||||
|
||||
#include_next <halconf.h>
|
181
keyboards/cipulot/ec_alveus/1_0_0/info.json
Normal file
181
keyboards/cipulot/ec_alveus/1_0_0/info.json
Normal file
@ -0,0 +1,181 @@
|
||||
{
|
||||
"manufacturer": "Cipulot",
|
||||
"keyboard_name": "EC Alveus 1.0.0",
|
||||
"maintainer": "Cipulot",
|
||||
"bootloader": "stm32-dfu",
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"audio": false,
|
||||
"backlight": false,
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgblight": false
|
||||
},
|
||||
"mouse_key": {
|
||||
"enabled": true
|
||||
},
|
||||
"processor": "STM32F401",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x6BA4",
|
||||
"shared_endpoint": {
|
||||
"keyboard": true
|
||||
},
|
||||
"vid": "0x6369"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{ "label": "0,0", "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
{ "label": "0,1", "matrix": [0, 1], "x": 1, "y": 0 },
|
||||
{ "label": "0,2", "matrix": [0, 2], "x": 2, "y": 0 },
|
||||
{ "label": "0,3", "matrix": [0, 3], "x": 3, "y": 0 },
|
||||
{ "label": "0,4", "matrix": [0, 4], "x": 4, "y": 0 },
|
||||
{ "label": "0,5", "matrix": [0, 5], "x": 5, "y": 0 },
|
||||
{ "label": "0,6", "matrix": [0, 6], "x": 6, "y": 0 },
|
||||
{ "label": "0,7", "matrix": [0, 7], "x": 7, "y": 0 },
|
||||
{ "label": "0,8", "matrix": [0, 8], "x": 8, "y": 0 },
|
||||
{ "label": "0,9", "matrix": [0, 9], "x": 9, "y": 0 },
|
||||
{ "label": "0,10", "matrix": [0, 10], "x": 10, "y": 0 },
|
||||
{ "label": "0,11", "matrix": [0, 11], "x": 11, "y": 0 },
|
||||
{ "label": "0,12", "matrix": [0, 12], "x": 12, "y": 0 },
|
||||
{ "label": "0,13", "matrix": [0, 13], "w": 2, "x": 13, "y": 0 },
|
||||
{ "label": "0,14", "matrix": [0, 14], "x": 15.25, "y": 0 },
|
||||
{ "label": "0,15", "matrix": [0, 15], "x": 16.25, "y": 0 },
|
||||
{ "label": "1,15", "matrix": [1, 15], "x": 17.25, "y": 0 },
|
||||
{ "label": "1,0", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||
{ "label": "1,1", "matrix": [1, 1], "x": 1.5, "y": 1 },
|
||||
{ "label": "1,2", "matrix": [1, 2], "x": 2.5, "y": 1 },
|
||||
{ "label": "1,3", "matrix": [1, 3], "x": 3.5, "y": 1 },
|
||||
{ "label": "1,4", "matrix": [1, 4], "x": 4.5, "y": 1 },
|
||||
{ "label": "1,5", "matrix": [1, 5], "x": 5.5, "y": 1 },
|
||||
{ "label": "1,6", "matrix": [1, 6], "x": 6.5, "y": 1 },
|
||||
{ "label": "1,7", "matrix": [1, 7], "x": 7.5, "y": 1 },
|
||||
{ "label": "1,8", "matrix": [1, 8], "x": 8.5, "y": 1 },
|
||||
{ "label": "1,9", "matrix": [1, 9], "x": 9.5, "y": 1 },
|
||||
{ "label": "1,10", "matrix": [1, 10], "x": 10.5, "y": 1 },
|
||||
{ "label": "1,11", "matrix": [1, 11], "x": 11.5, "y": 1 },
|
||||
{ "label": "1,12", "matrix": [1, 12], "x": 12.5, "y": 1 },
|
||||
{ "label": "1,13", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
|
||||
{ "label": "1,14", "matrix": [1, 14], "x": 15.25, "y": 1 },
|
||||
{ "label": "2,14", "matrix": [2, 14], "x": 16.25, "y": 1 },
|
||||
{ "label": "2,15", "matrix": [2, 15], "x": 17.25, "y": 1 },
|
||||
{ "label": "2,0", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||
{ "label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2 },
|
||||
{ "label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2 },
|
||||
{ "label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2 },
|
||||
{ "label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2 },
|
||||
{ "label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2 },
|
||||
{ "label": "2,6", "matrix": [2, 6], "x": 6.75, "y": 2 },
|
||||
{ "label": "2,7", "matrix": [2, 7], "x": 7.75, "y": 2 },
|
||||
{ "label": "2,8", "matrix": [2, 8], "x": 8.75, "y": 2 },
|
||||
{ "label": "2,9", "matrix": [2, 9], "x": 9.75, "y": 2 },
|
||||
{ "label": "2,10", "matrix": [2, 10], "x": 10.75, "y": 2 },
|
||||
{ "label": "2,11", "matrix": [2, 11], "x": 11.75, "y": 2 },
|
||||
{ "label": "2,13", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
|
||||
{ "label": "3,0", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
|
||||
{ "label": "3,1", "matrix": [3, 1], "x": 2.25, "y": 3 },
|
||||
{ "label": "3,2", "matrix": [3, 2], "x": 3.25, "y": 3 },
|
||||
{ "label": "3,3", "matrix": [3, 3], "x": 4.25, "y": 3 },
|
||||
{ "label": "3,4", "matrix": [3, 4], "x": 5.25, "y": 3 },
|
||||
{ "label": "3,5", "matrix": [3, 5], "x": 6.25, "y": 3 },
|
||||
{ "label": "3,6", "matrix": [3, 6], "x": 7.25, "y": 3 },
|
||||
{ "label": "3,7", "matrix": [3, 7], "x": 8.25, "y": 3 },
|
||||
{ "label": "3,8", "matrix": [3, 8], "x": 9.25, "y": 3 },
|
||||
{ "label": "3,9", "matrix": [3, 9], "x": 10.25, "y": 3 },
|
||||
{ "label": "3,10", "matrix": [3, 10], "x": 11.25, "y": 3 },
|
||||
{ "label": "3,13", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 },
|
||||
{ "label": "3,14", "matrix": [3, 14], "x": 16.25, "y": 3 },
|
||||
{ "label": "4,0", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 },
|
||||
{ "label": "4,1", "matrix": [4, 1], "x": 1.5, "y": 4 },
|
||||
{ "label": "4,2", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 },
|
||||
{ "label": "4,5", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 },
|
||||
{ "label": "4,11", "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 },
|
||||
{ "label": "4,12", "matrix": [4, 12], "x": 12.5, "y": 4 },
|
||||
{ "label": "4,13", "matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4 },
|
||||
{ "label": "4,14", "matrix": [4, 14], "x": 15.25, "y": 4 },
|
||||
{ "label": "4,15", "matrix": [4, 15], "x": 16.25, "y": 4 },
|
||||
{ "label": "3,15", "matrix": [3, 15], "x": 17.25, "y": 4 }
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_nofrow_ansi_tsangan_wkl": {
|
||||
"layout": [
|
||||
{ "label": "0,0", "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
{ "label": "0,1", "matrix": [0, 1], "x": 1, "y": 0 },
|
||||
{ "label": "0,2", "matrix": [0, 2], "x": 2, "y": 0 },
|
||||
{ "label": "0,3", "matrix": [0, 3], "x": 3, "y": 0 },
|
||||
{ "label": "0,4", "matrix": [0, 4], "x": 4, "y": 0 },
|
||||
{ "label": "0,5", "matrix": [0, 5], "x": 5, "y": 0 },
|
||||
{ "label": "0,6", "matrix": [0, 6], "x": 6, "y": 0 },
|
||||
{ "label": "0,7", "matrix": [0, 7], "x": 7, "y": 0 },
|
||||
{ "label": "0,8", "matrix": [0, 8], "x": 8, "y": 0 },
|
||||
{ "label": "0,9", "matrix": [0, 9], "x": 9, "y": 0 },
|
||||
{ "label": "0,10", "matrix": [0, 10], "x": 10, "y": 0 },
|
||||
{ "label": "0,11", "matrix": [0, 11], "x": 11, "y": 0 },
|
||||
{ "label": "0,12", "matrix": [0, 12], "x": 12, "y": 0 },
|
||||
{ "label": "0,13", "matrix": [0, 13], "w": 2, "x": 13, "y": 0 },
|
||||
{ "label": "0,14", "matrix": [0, 14], "x": 15.25, "y": 0 },
|
||||
{ "label": "0,15", "matrix": [0, 15], "x": 16.25, "y": 0 },
|
||||
{ "label": "1,15", "matrix": [1, 15], "x": 17.25, "y": 0 },
|
||||
{ "label": "1,0", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||
{ "label": "1,1", "matrix": [1, 1], "x": 1.5, "y": 1 },
|
||||
{ "label": "1,2", "matrix": [1, 2], "x": 2.5, "y": 1 },
|
||||
{ "label": "1,3", "matrix": [1, 3], "x": 3.5, "y": 1 },
|
||||
{ "label": "1,4", "matrix": [1, 4], "x": 4.5, "y": 1 },
|
||||
{ "label": "1,5", "matrix": [1, 5], "x": 5.5, "y": 1 },
|
||||
{ "label": "1,6", "matrix": [1, 6], "x": 6.5, "y": 1 },
|
||||
{ "label": "1,7", "matrix": [1, 7], "x": 7.5, "y": 1 },
|
||||
{ "label": "1,8", "matrix": [1, 8], "x": 8.5, "y": 1 },
|
||||
{ "label": "1,9", "matrix": [1, 9], "x": 9.5, "y": 1 },
|
||||
{ "label": "1,10", "matrix": [1, 10], "x": 10.5, "y": 1 },
|
||||
{ "label": "1,11", "matrix": [1, 11], "x": 11.5, "y": 1 },
|
||||
{ "label": "1,12", "matrix": [1, 12], "x": 12.5, "y": 1 },
|
||||
{ "label": "1,13", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
|
||||
{ "label": "1,14", "matrix": [1, 14], "x": 15.25, "y": 1 },
|
||||
{ "label": "2,14", "matrix": [2, 14], "x": 16.25, "y": 1 },
|
||||
{ "label": "2,15", "matrix": [2, 15], "x": 17.25, "y": 1 },
|
||||
{ "label": "2,0", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||
{ "label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2 },
|
||||
{ "label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2 },
|
||||
{ "label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2 },
|
||||
{ "label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2 },
|
||||
{ "label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2 },
|
||||
{ "label": "2,6", "matrix": [2, 6], "x": 6.75, "y": 2 },
|
||||
{ "label": "2,7", "matrix": [2, 7], "x": 7.75, "y": 2 },
|
||||
{ "label": "2,8", "matrix": [2, 8], "x": 8.75, "y": 2 },
|
||||
{ "label": "2,9", "matrix": [2, 9], "x": 9.75, "y": 2 },
|
||||
{ "label": "2,10", "matrix": [2, 10], "x": 10.75, "y": 2 },
|
||||
{ "label": "2,11", "matrix": [2, 11], "x": 11.75, "y": 2 },
|
||||
{ "label": "2,13", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
|
||||
{ "label": "3,0", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
|
||||
{ "label": "3,1", "matrix": [3, 1], "x": 2.25, "y": 3 },
|
||||
{ "label": "3,2", "matrix": [3, 2], "x": 3.25, "y": 3 },
|
||||
{ "label": "3,3", "matrix": [3, 3], "x": 4.25, "y": 3 },
|
||||
{ "label": "3,4", "matrix": [3, 4], "x": 5.25, "y": 3 },
|
||||
{ "label": "3,5", "matrix": [3, 5], "x": 6.25, "y": 3 },
|
||||
{ "label": "3,6", "matrix": [3, 6], "x": 7.25, "y": 3 },
|
||||
{ "label": "3,7", "matrix": [3, 7], "x": 8.25, "y": 3 },
|
||||
{ "label": "3,8", "matrix": [3, 8], "x": 9.25, "y": 3 },
|
||||
{ "label": "3,9", "matrix": [3, 9], "x": 10.25, "y": 3 },
|
||||
{ "label": "3,10", "matrix": [3, 10], "x": 11.25, "y": 3 },
|
||||
{ "label": "3,13", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 },
|
||||
{ "label": "3,14", "matrix": [3, 14], "x": 16.25, "y": 3 },
|
||||
{ "label": "4,0", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 },
|
||||
{ "label": "4,2", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 },
|
||||
{ "label": "4,5", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 },
|
||||
{ "label": "4,11", "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 },
|
||||
{ "label": "4,13", "matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4 },
|
||||
{ "label": "4,14", "matrix": [4, 14], "x": 15.25, "y": 4 },
|
||||
{ "label": "4,15", "matrix": [4, 15], "x": 16.25, "y": 4 },
|
||||
{ "label": "3,15", "matrix": [3, 15], "x": 17.25, "y": 4 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
49
keyboards/cipulot/ec_alveus/1_0_0/keymaps/default/keymap.c
Normal file
49
keyboards/cipulot/ec_alveus/1_0_0/keymaps/default/keymap.c
Normal file
@ -0,0 +1,49 @@
|
||||
/* Copyright 2023 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 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// clang-format off
|
||||
[0] = LAYOUT_tkl_nofrow_ansi_tsangan_wkl(
|
||||
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_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_ENTER,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
|
||||
|
||||
[1] = LAYOUT_tkl_nofrow_ansi_tsangan_wkl(
|
||||
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, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______),
|
||||
|
||||
[2] = LAYOUT_tkl_nofrow_ansi_tsangan_wkl(
|
||||
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______),
|
||||
|
||||
[3] = LAYOUT_tkl_nofrow_ansi_tsangan_wkl(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______)
|
||||
// clang-format on
|
||||
};
|
20
keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/config.h
Normal file
20
keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/config.h
Normal file
@ -0,0 +1,20 @@
|
||||
/* Copyright 2023 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 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
|
||||
|
||||
// This is the size of the EEPROM for the custom VIA-specific data
|
||||
#define EECONFIG_USER_DATA_SIZE 4
|
49
keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/keymap.c
Normal file
49
keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/keymap.c
Normal file
@ -0,0 +1,49 @@
|
||||
/* Copyright 2023 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 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// clang-format off
|
||||
[0] = 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_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_ENTER,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
|
||||
|
||||
[1] = 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, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||
|
||||
[2] = LAYOUT_all(
|
||||
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||
|
||||
[3] = LAYOUT_all(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
|
||||
// clang-format on
|
||||
};
|
3
keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/rules.mk
Normal file
3
keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/rules.mk
Normal file
@ -0,0 +1,3 @@
|
||||
VIA_ENABLE = yes
|
||||
|
||||
SRC += via_apc.c
|
156
keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/via_apc.c
Normal file
156
keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/via_apc.c
Normal file
@ -0,0 +1,156 @@
|
||||
/* Copyright 2023 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 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 "ec_switch_matrix.h"
|
||||
#include "action.h"
|
||||
#include "via.h"
|
||||
|
||||
void apc_init_thresholds(void);
|
||||
void apc_set_threshold(bool is_for_actuation);
|
||||
|
||||
// Declaring an _apc_config_t struct that will store our data
|
||||
typedef struct _apc_config_t {
|
||||
uint16_t actuation_threshold;
|
||||
uint16_t release_threshold;
|
||||
} apc_config;
|
||||
|
||||
// Check if the size of the reserved persistent memory is the same as the size of struct apc_config
|
||||
_Static_assert(sizeof(apc_config) == EECONFIG_USER_DATA_SIZE, "Mismatch in keyboard EECONFIG stored data");
|
||||
|
||||
// Declaring a new variable apc of type apc_config
|
||||
apc_config apc;
|
||||
|
||||
// Declaring enums for VIA config menu
|
||||
enum via_apc_enums {
|
||||
// clang-format off
|
||||
id_apc_actuation_threshold = 1,
|
||||
id_apc_release_threshold = 2
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
// Initializing persistent memory configuration: default values are declared and stored in PMEM
|
||||
void eeconfig_init_user(void) {
|
||||
// Default values
|
||||
apc.actuation_threshold = DEFAULT_ACTUATION_LEVEL;
|
||||
apc.release_threshold = DEFAULT_RELEASE_LEVEL;
|
||||
// Write default value to EEPROM now
|
||||
eeconfig_update_user_datablock(&apc);
|
||||
}
|
||||
|
||||
// On Keyboard startup
|
||||
void keyboard_post_init_user(void) {
|
||||
// Read custom menu variables from memory
|
||||
eeconfig_read_user_datablock(&apc);
|
||||
apc_init_thresholds();
|
||||
}
|
||||
|
||||
// Handle the data received by the keyboard from the VIA menus
|
||||
void apc_config_set_value(uint8_t *data) {
|
||||
// data = [ value_id, value_data ]
|
||||
uint8_t *value_id = &(data[0]);
|
||||
uint8_t *value_data = &(data[1]);
|
||||
|
||||
switch (*value_id) {
|
||||
case id_apc_actuation_threshold: {
|
||||
apc.actuation_threshold = value_data[1] | (value_data[0] << 8);
|
||||
apc_set_threshold(true);
|
||||
break;
|
||||
}
|
||||
case id_apc_release_threshold: {
|
||||
apc.release_threshold = value_data[1] | (value_data[0] << 8);
|
||||
apc_set_threshold(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Handle the data sent by the keyboard to the VIA menus
|
||||
void apc_config_get_value(uint8_t *data) {
|
||||
// data = [ value_id, value_data ]
|
||||
uint8_t *value_id = &(data[0]);
|
||||
uint8_t *value_data = &(data[1]);
|
||||
|
||||
switch (*value_id) {
|
||||
case id_apc_actuation_threshold: {
|
||||
value_data[0] = apc.actuation_threshold >> 8;
|
||||
value_data[1] = apc.actuation_threshold & 0xFF;
|
||||
break;
|
||||
}
|
||||
case id_apc_release_threshold: {
|
||||
value_data[0] = apc.release_threshold >> 8;
|
||||
value_data[1] = apc.release_threshold & 0xFF;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Save the data to persistent memory after changes are made
|
||||
void apc_config_save(void) {
|
||||
eeconfig_update_user_datablock(&apc);
|
||||
}
|
||||
|
||||
void via_custom_value_command_kb(uint8_t *data, uint8_t length) {
|
||||
// data = [ command_id, channel_id, value_id, value_data ]
|
||||
uint8_t *command_id = &(data[0]);
|
||||
uint8_t *channel_id = &(data[1]);
|
||||
uint8_t *value_id_and_data = &(data[2]);
|
||||
|
||||
if (*channel_id == id_custom_channel) {
|
||||
switch (*command_id) {
|
||||
case id_custom_set_value: {
|
||||
apc_config_set_value(value_id_and_data);
|
||||
break;
|
||||
}
|
||||
case id_custom_get_value: {
|
||||
apc_config_get_value(value_id_and_data);
|
||||
break;
|
||||
}
|
||||
case id_custom_save: {
|
||||
apc_config_save();
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
// Unhandled message.
|
||||
*command_id = id_unhandled;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
*command_id = id_unhandled;
|
||||
}
|
||||
|
||||
// Initialize the thresholds
|
||||
void apc_init_thresholds(void) {
|
||||
ecsm_config.ecsm_actuation_threshold = apc.actuation_threshold;
|
||||
ecsm_config.ecsm_release_threshold = apc.release_threshold;
|
||||
|
||||
// Update the ecsm_config
|
||||
ecsm_update(&ecsm_config);
|
||||
}
|
||||
|
||||
// Set the thresholds
|
||||
void apc_set_threshold(bool is_for_actuation) {
|
||||
if (is_for_actuation) {
|
||||
ecsm_config.ecsm_actuation_threshold = apc.actuation_threshold;
|
||||
|
||||
} else {
|
||||
ecsm_config.ecsm_release_threshold = apc.release_threshold;
|
||||
}
|
||||
// Update the ecsm_config
|
||||
ecsm_update(&ecsm_config);
|
||||
}
|
44
keyboards/cipulot/ec_alveus/1_0_0/matrix.c
Normal file
44
keyboards/cipulot/ec_alveus/1_0_0/matrix.c
Normal file
@ -0,0 +1,44 @@
|
||||
/* Copyright 2023 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 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 "ec_switch_matrix.h"
|
||||
#include "matrix.h"
|
||||
|
||||
/* matrix state(1:on, 0:off) */
|
||||
extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values
|
||||
extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values
|
||||
|
||||
void matrix_init_custom(void) {
|
||||
// Default values, overwritten by VIA if enabled later
|
||||
ecsm_config.ecsm_actuation_threshold = DEFAULT_ACTUATION_LEVEL;
|
||||
ecsm_config.ecsm_release_threshold = DEFAULT_RELEASE_LEVEL;
|
||||
|
||||
ecsm_init(&ecsm_config);
|
||||
}
|
||||
|
||||
bool matrix_scan_custom(matrix_row_t current_matrix[]) {
|
||||
bool updated = ecsm_matrix_scan(current_matrix);
|
||||
|
||||
// RAW matrix values on console
|
||||
#ifdef CONSOLE_ENABLE
|
||||
static int cnt = 0;
|
||||
if (cnt++ == 350) {
|
||||
cnt = 0;
|
||||
ecsm_print_matrix();
|
||||
}
|
||||
#endif
|
||||
return updated;
|
||||
}
|
22
keyboards/cipulot/ec_alveus/1_0_0/mcuconf.h
Normal file
22
keyboards/cipulot/ec_alveus/1_0_0/mcuconf.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* Copyright 2023 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 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_ADC_USE_ADC1
|
||||
#define STM32_ADC_USE_ADC1 TRUE
|
27
keyboards/cipulot/ec_alveus/1_0_0/readme.md
Normal file
27
keyboards/cipulot/ec_alveus/1_0_0/readme.md
Normal file
@ -0,0 +1,27 @@
|
||||
# EC Alveus
|
||||
|
||||

|
||||
|
||||
EC FRL TKL keyboard.
|
||||
|
||||
* Keyboard Maintainer: [cipulot](https://github.com/cipulot)
|
||||
* Hardware Supported: EC Alveus 1.0.0
|
||||
* Hardware Availability: Raffle Sale from [Densus](https://www.instagram.com/densusdesign/)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make cipulot/ec_alveus/1_0_0:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make cipulot/ec_alveus/1_0_0: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**: Long short the exposed pads on the top of the PCB
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
3
keyboards/cipulot/ec_alveus/1_0_0/rules.mk
Normal file
3
keyboards/cipulot/ec_alveus/1_0_0/rules.mk
Normal file
@ -0,0 +1,3 @@
|
||||
CUSTOM_MATRIX = lite
|
||||
QUANTUM_LIB_SRC += analog.c
|
||||
SRC += matrix.c ec_switch_matrix.c
|
45
keyboards/cipulot/ec_alveus/1_2_0/config.h
Normal file
45
keyboards/cipulot/ec_alveus/1_2_0/config.h
Normal file
@ -0,0 +1,45 @@
|
||||
/* Copyright 2023 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 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 16
|
||||
|
||||
/* Custom matrix pins and port select array */
|
||||
#define MATRIX_ROW_PINS \
|
||||
{ A14, B3, A15, B5, B4 }
|
||||
#define MATRIX_COL_CHANNELS \
|
||||
{ 3, 0, 1, 2, 6, 5, 7, 4 }
|
||||
#define MUX_SEL_PINS \
|
||||
{ B7, B8, B9 }
|
||||
|
||||
/* Hardware peripherals pins */
|
||||
#define APLEX_EN_PIN_0 C13
|
||||
#define APLEX_EN_PIN_1 C14
|
||||
#define DISCHARGE_PIN B1
|
||||
#define ANALOG_PORT A3
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
#define DEFAULT_ACTUATION_LEVEL 550
|
||||
#define DEFAULT_RELEASE_LEVEL 500
|
||||
|
||||
#define DISCHARGE_TIME 10
|
183
keyboards/cipulot/ec_alveus/1_2_0/ec_switch_matrix.c
Normal file
183
keyboards/cipulot/ec_alveus/1_2_0/ec_switch_matrix.c
Normal file
@ -0,0 +1,183 @@
|
||||
/* Copyright 2023 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 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 "ec_switch_matrix.h"
|
||||
#include "analog.h"
|
||||
#include "atomic_util.h"
|
||||
#include "print.h"
|
||||
#include "wait.h"
|
||||
|
||||
/* Pin and port array */
|
||||
const uint32_t row_pins[] = MATRIX_ROW_PINS;
|
||||
const uint8_t col_channels[] = MATRIX_COL_CHANNELS;
|
||||
const uint32_t mux_sel_pins[] = MUX_SEL_PINS;
|
||||
|
||||
static ecsm_config_t config;
|
||||
static uint16_t ecsm_sw_value[MATRIX_ROWS][MATRIX_COLS];
|
||||
|
||||
static adc_mux adcMux;
|
||||
|
||||
static inline void discharge_capacitor(void) {
|
||||
writePinLow(DISCHARGE_PIN);
|
||||
}
|
||||
static inline void charge_capacitor(uint8_t row) {
|
||||
writePinHigh(DISCHARGE_PIN);
|
||||
writePinHigh(row_pins[row]);
|
||||
}
|
||||
|
||||
static inline void init_mux_sel(void) {
|
||||
for (int idx = 0; idx < 3; idx++) {
|
||||
setPinOutput(mux_sel_pins[idx]);
|
||||
}
|
||||
}
|
||||
|
||||
static inline void select_mux(uint8_t col) {
|
||||
uint8_t ch = col_channels[col];
|
||||
writePin(mux_sel_pins[0], ch & 1);
|
||||
writePin(mux_sel_pins[1], ch & 2);
|
||||
writePin(mux_sel_pins[2], ch & 4);
|
||||
}
|
||||
|
||||
static inline void init_row(void) {
|
||||
for (int idx = 0; idx < MATRIX_ROWS; idx++) {
|
||||
setPinOutput(row_pins[idx]);
|
||||
writePinLow(row_pins[idx]);
|
||||
}
|
||||
}
|
||||
|
||||
/* Initialize the peripherals pins */
|
||||
int ecsm_init(ecsm_config_t const* const ecsm_config) {
|
||||
// Initialize config
|
||||
config = *ecsm_config;
|
||||
|
||||
palSetLineMode(ANALOG_PORT, PAL_MODE_INPUT_ANALOG);
|
||||
adcMux = pinToMux(ANALOG_PORT);
|
||||
|
||||
// Dummy call to make sure that adcStart() has been called in the appropriate state
|
||||
adc_read(adcMux);
|
||||
|
||||
// Initialize discharge pin as discharge mode
|
||||
writePinLow(DISCHARGE_PIN);
|
||||
setPinOutputOpenDrain(DISCHARGE_PIN);
|
||||
|
||||
// Initialize drive lines
|
||||
init_row();
|
||||
|
||||
// Initialize multiplexer select pin
|
||||
init_mux_sel();
|
||||
|
||||
// Enable AMUX
|
||||
setPinOutput(APLEX_EN_PIN_0);
|
||||
writePinLow(APLEX_EN_PIN_0);
|
||||
setPinOutput(APLEX_EN_PIN_1);
|
||||
writePinLow(APLEX_EN_PIN_1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ecsm_update(ecsm_config_t const* const ecsm_config) {
|
||||
// Save config
|
||||
config = *ecsm_config;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Read the capacitive sensor value
|
||||
uint16_t ecsm_readkey_raw(uint8_t channel, uint8_t row, uint8_t col) {
|
||||
uint16_t sw_value = 0;
|
||||
|
||||
// Select the multiplexer
|
||||
if (channel == 0) {
|
||||
writePinHigh(APLEX_EN_PIN_0);
|
||||
select_mux(col);
|
||||
writePinLow(APLEX_EN_PIN_0);
|
||||
} else {
|
||||
writePinHigh(APLEX_EN_PIN_1);
|
||||
select_mux(col);
|
||||
writePinLow(APLEX_EN_PIN_1);
|
||||
}
|
||||
|
||||
// Set strobe pins to low state
|
||||
writePinLow(row_pins[row]);
|
||||
ATOMIC_BLOCK_FORCEON {
|
||||
// Set the row pin to high state and have capacitor charge
|
||||
charge_capacitor(row);
|
||||
// Read the ADC value
|
||||
sw_value = adc_read(adcMux);
|
||||
}
|
||||
// Discharge peak hold capacitor
|
||||
discharge_capacitor();
|
||||
// Waiting for the ghost capacitor to discharge fully
|
||||
wait_us(DISCHARGE_TIME);
|
||||
|
||||
return sw_value;
|
||||
}
|
||||
|
||||
// Update press/release state of key
|
||||
bool ecsm_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value) {
|
||||
bool current_state = (*current_row >> col) & 1;
|
||||
|
||||
// Press to release
|
||||
if (current_state && sw_value < config.ecsm_actuation_threshold) {
|
||||
*current_row &= ~(1 << col);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Release to press
|
||||
if ((!current_state) && sw_value > config.ecsm_release_threshold) {
|
||||
*current_row |= (1 << col);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Scan key values and update matrix state
|
||||
bool ecsm_matrix_scan(matrix_row_t current_matrix[]) {
|
||||
bool updated = false;
|
||||
|
||||
// Disable AMUX of channel 1
|
||||
writePinHigh(APLEX_EN_PIN_1);
|
||||
for (int col = 0; col < sizeof(col_channels); col++) {
|
||||
for (int row = 0; row < MATRIX_ROWS; row++) {
|
||||
ecsm_sw_value[row][col] = ecsm_readkey_raw(0, row, col);
|
||||
updated |= ecsm_update_key(¤t_matrix[row], row, col, ecsm_sw_value[row][col]);
|
||||
}
|
||||
}
|
||||
|
||||
// Disable AMUX of channel 1
|
||||
writePinHigh(APLEX_EN_PIN_0);
|
||||
for (int col = 0; col < sizeof(col_channels); col++) {
|
||||
for (int row = 0; row < MATRIX_ROWS; row++) {
|
||||
ecsm_sw_value[row][col + 8] = ecsm_readkey_raw(1, row, col);
|
||||
updated |= ecsm_update_key(¤t_matrix[row], row, col + 8, ecsm_sw_value[row][col + 8]);
|
||||
}
|
||||
}
|
||||
return updated;
|
||||
}
|
||||
|
||||
// Debug print key values
|
||||
void ecsm_print_matrix(void) {
|
||||
for (int row = 0; row < MATRIX_ROWS; row++) {
|
||||
for (int col = 0; col < MATRIX_COLS; col++) {
|
||||
uprintf("%4d", ecsm_sw_value[row][col]);
|
||||
if (col < (MATRIX_COLS - 1)) {
|
||||
print(",");
|
||||
}
|
||||
}
|
||||
print("\n");
|
||||
}
|
||||
print("\n");
|
||||
}
|
36
keyboards/cipulot/ec_alveus/1_2_0/ec_switch_matrix.h
Normal file
36
keyboards/cipulot/ec_alveus/1_2_0/ec_switch_matrix.h
Normal file
@ -0,0 +1,36 @@
|
||||
/* Copyright 2023 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 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "matrix.h"
|
||||
|
||||
typedef struct {
|
||||
uint16_t ecsm_actuation_threshold; // threshold for key release
|
||||
uint16_t ecsm_release_threshold; // threshold for key press
|
||||
} ecsm_config_t;
|
||||
|
||||
ecsm_config_t ecsm_config;
|
||||
|
||||
int ecsm_init(ecsm_config_t const* const ecsm_config);
|
||||
int ecsm_update(ecsm_config_t const* const ecsm_config);
|
||||
bool ecsm_matrix_scan(matrix_row_t current_matrix[]);
|
||||
uint16_t ecsm_readkey_raw(uint8_t channel, uint8_t row, uint8_t col);
|
||||
bool ecsm_update_key(matrix_row_t* current_row, uint8_t row, uint8_t col, uint16_t sw_value);
|
||||
void ecsm_print_matrix(void);
|
21
keyboards/cipulot/ec_alveus/1_2_0/halconf.h
Normal file
21
keyboards/cipulot/ec_alveus/1_2_0/halconf.h
Normal file
@ -0,0 +1,21 @@
|
||||
/* Copyright 2023 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 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_ADC TRUE
|
||||
|
||||
#include_next <halconf.h>
|
255
keyboards/cipulot/ec_alveus/1_2_0/info.json
Normal file
255
keyboards/cipulot/ec_alveus/1_2_0/info.json
Normal file
@ -0,0 +1,255 @@
|
||||
{
|
||||
"manufacturer": "Cipulot",
|
||||
"keyboard_name": "EC Alveus 1.2.0",
|
||||
"maintainer": "Cipulot",
|
||||
"bootloader": "stm32-dfu",
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"audio": false,
|
||||
"backlight": false,
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgblight": false
|
||||
},
|
||||
"mouse_key": {
|
||||
"enabled": true
|
||||
},
|
||||
"processor": "STM32F401",
|
||||
"usb": {
|
||||
"device_version": "1.2.0",
|
||||
"pid": "0x6B90",
|
||||
"shared_endpoint": {
|
||||
"keyboard": true
|
||||
},
|
||||
"vid": "0x6369"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{ "label": "0,0", "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
{ "label": "0,1", "matrix": [0, 1], "x": 1, "y": 0 },
|
||||
{ "label": "0,2", "matrix": [0, 2], "x": 2, "y": 0 },
|
||||
{ "label": "0,3", "matrix": [0, 3], "x": 3, "y": 0 },
|
||||
{ "label": "0,4", "matrix": [0, 4], "x": 4, "y": 0 },
|
||||
{ "label": "0,5", "matrix": [0, 5], "x": 5, "y": 0 },
|
||||
{ "label": "0,6", "matrix": [0, 6], "x": 6, "y": 0 },
|
||||
{ "label": "0,7", "matrix": [0, 7], "x": 7, "y": 0 },
|
||||
{ "label": "0,8", "matrix": [0, 8], "x": 8, "y": 0 },
|
||||
{ "label": "0,9", "matrix": [0, 9], "x": 9, "y": 0 },
|
||||
{ "label": "0,10", "matrix": [0, 10], "x": 10, "y": 0 },
|
||||
{ "label": "0,11", "matrix": [0, 11], "x": 11, "y": 0 },
|
||||
{ "label": "0,12", "matrix": [0, 12], "x": 12, "y": 0 },
|
||||
{ "label": "0,13", "matrix": [0, 13], "x": 13, "y": 0 },
|
||||
{ "label": "1,13", "matrix": [1, 13], "x": 14, "y": 0 },
|
||||
{ "label": "0,14", "matrix": [0, 14], "x": 15.25, "y": 0 },
|
||||
{ "label": "0,15", "matrix": [0, 15], "x": 16.25, "y": 0 },
|
||||
{ "label": "1,15", "matrix": [1, 15], "x": 17.25, "y": 0 },
|
||||
{ "label": "1,0", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||
{ "label": "1,1", "matrix": [1, 1], "x": 1.5, "y": 1 },
|
||||
{ "label": "1,2", "matrix": [1, 2], "x": 2.5, "y": 1 },
|
||||
{ "label": "1,3", "matrix": [1, 3], "x": 3.5, "y": 1 },
|
||||
{ "label": "1,4", "matrix": [1, 4], "x": 4.5, "y": 1 },
|
||||
{ "label": "1,5", "matrix": [1, 5], "x": 5.5, "y": 1 },
|
||||
{ "label": "1,6", "matrix": [1, 6], "x": 6.5, "y": 1 },
|
||||
{ "label": "1,7", "matrix": [1, 7], "x": 7.5, "y": 1 },
|
||||
{ "label": "1,8", "matrix": [1, 8], "x": 8.5, "y": 1 },
|
||||
{ "label": "1,9", "matrix": [1, 9], "x": 9.5, "y": 1 },
|
||||
{ "label": "1,10", "matrix": [1, 10], "x": 10.5, "y": 1 },
|
||||
{ "label": "1,11", "matrix": [1, 11], "x": 11.5, "y": 1 },
|
||||
{ "label": "1,12", "matrix": [1, 12], "x": 12.5, "y": 1 },
|
||||
{ "label": "2,13", "matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 1 },
|
||||
{ "label": "1,14", "matrix": [1, 14], "x": 15.25, "y": 1 },
|
||||
{ "label": "2,14", "matrix": [2, 14], "x": 16.25, "y": 1 },
|
||||
{ "label": "2,15", "matrix": [2, 15], "x": 17.25, "y": 1 },
|
||||
{ "label": "2,0", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||
{ "label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2 },
|
||||
{ "label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2 },
|
||||
{ "label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2 },
|
||||
{ "label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2 },
|
||||
{ "label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2 },
|
||||
{ "label": "2,6", "matrix": [2, 6], "x": 6.75, "y": 2 },
|
||||
{ "label": "2,7", "matrix": [2, 7], "x": 7.75, "y": 2 },
|
||||
{ "label": "2,8", "matrix": [2, 8], "x": 8.75, "y": 2 },
|
||||
{ "label": "2,9", "matrix": [2, 9], "x": 9.75, "y": 2 },
|
||||
{ "label": "2,10", "matrix": [2, 10], "x": 10.75, "y": 2 },
|
||||
{ "label": "2,11", "matrix": [2, 11], "x": 11.75, "y": 2 },
|
||||
{ "label": "2,12", "matrix": [2, 12], "w": 2.25, "x": 12.75, "y": 2 },
|
||||
{ "label": "3,0", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
|
||||
{ "label": "3,1", "matrix": [3, 1], "x": 2.25, "y": 3 },
|
||||
{ "label": "3,2", "matrix": [3, 2], "x": 3.25, "y": 3 },
|
||||
{ "label": "3,3", "matrix": [3, 3], "x": 4.25, "y": 3 },
|
||||
{ "label": "3,4", "matrix": [3, 4], "x": 5.25, "y": 3 },
|
||||
{ "label": "3,5", "matrix": [3, 5], "x": 6.25, "y": 3 },
|
||||
{ "label": "3,6", "matrix": [3, 6], "x": 7.25, "y": 3 },
|
||||
{ "label": "3,7", "matrix": [3, 7], "x": 8.25, "y": 3 },
|
||||
{ "label": "3,8", "matrix": [3, 8], "x": 9.25, "y": 3 },
|
||||
{ "label": "3,9", "matrix": [3, 9], "x": 10.25, "y": 3 },
|
||||
{ "label": "3,10", "matrix": [3, 10], "x": 11.25, "y": 3 },
|
||||
{ "label": "3,13", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 },
|
||||
{ "label": "3,14", "matrix": [3, 14], "x": 16.25, "y": 3 },
|
||||
{ "label": "4,0", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 },
|
||||
{ "label": "4,1", "matrix": [4, 1], "x": 1.5, "y": 4 },
|
||||
{ "label": "4,2", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 },
|
||||
{ "label": "4,5", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 },
|
||||
{ "label": "4,11", "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 },
|
||||
{ "label": "4,12", "matrix": [4, 12], "x": 12.5, "y": 4 },
|
||||
{ "label": "4,13", "matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4 },
|
||||
{ "label": "4,14", "matrix": [4, 14], "x": 15.25, "y": 4 },
|
||||
{ "label": "4,15", "matrix": [4, 15], "x": 16.25, "y": 4 },
|
||||
{ "label": "3,15", "matrix": [3, 15], "x": 17.25, "y": 4 }
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_nofrow_ansi_tsangan_wkl": {
|
||||
"layout": [
|
||||
{ "label": "0,0", "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
{ "label": "0,1", "matrix": [0, 1], "x": 1, "y": 0 },
|
||||
{ "label": "0,2", "matrix": [0, 2], "x": 2, "y": 0 },
|
||||
{ "label": "0,3", "matrix": [0, 3], "x": 3, "y": 0 },
|
||||
{ "label": "0,4", "matrix": [0, 4], "x": 4, "y": 0 },
|
||||
{ "label": "0,5", "matrix": [0, 5], "x": 5, "y": 0 },
|
||||
{ "label": "0,6", "matrix": [0, 6], "x": 6, "y": 0 },
|
||||
{ "label": "0,7", "matrix": [0, 7], "x": 7, "y": 0 },
|
||||
{ "label": "0,8", "matrix": [0, 8], "x": 8, "y": 0 },
|
||||
{ "label": "0,9", "matrix": [0, 9], "x": 9, "y": 0 },
|
||||
{ "label": "0,10", "matrix": [0, 10], "x": 10, "y": 0 },
|
||||
{ "label": "0,11", "matrix": [0, 11], "x": 11, "y": 0 },
|
||||
{ "label": "0,12", "matrix": [0, 12], "x": 12, "y": 0 },
|
||||
{ "label": "1,13", "matrix": [1, 13], "w": 2, "x": 13, "y": 0 },
|
||||
{ "label": "0,14", "matrix": [0, 14], "x": 15.25, "y": 0 },
|
||||
{ "label": "0,15", "matrix": [0, 15], "x": 16.25, "y": 0 },
|
||||
{ "label": "1,15", "matrix": [1, 15], "x": 17.25, "y": 0 },
|
||||
{ "label": "1,0", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||
{ "label": "1,1", "matrix": [1, 1], "x": 1.5, "y": 1 },
|
||||
{ "label": "1,2", "matrix": [1, 2], "x": 2.5, "y": 1 },
|
||||
{ "label": "1,3", "matrix": [1, 3], "x": 3.5, "y": 1 },
|
||||
{ "label": "1,4", "matrix": [1, 4], "x": 4.5, "y": 1 },
|
||||
{ "label": "1,5", "matrix": [1, 5], "x": 5.5, "y": 1 },
|
||||
{ "label": "1,6", "matrix": [1, 6], "x": 6.5, "y": 1 },
|
||||
{ "label": "1,7", "matrix": [1, 7], "x": 7.5, "y": 1 },
|
||||
{ "label": "1,8", "matrix": [1, 8], "x": 8.5, "y": 1 },
|
||||
{ "label": "1,9", "matrix": [1, 9], "x": 9.5, "y": 1 },
|
||||
{ "label": "1,10", "matrix": [1, 10], "x": 10.5, "y": 1 },
|
||||
{ "label": "1,11", "matrix": [1, 11], "x": 11.5, "y": 1 },
|
||||
{ "label": "1,12", "matrix": [1, 12], "x": 12.5, "y": 1 },
|
||||
{ "label": "2,13", "matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 1 },
|
||||
{ "label": "1,14", "matrix": [1, 14], "x": 15.25, "y": 1 },
|
||||
{ "label": "2,14", "matrix": [2, 14], "x": 16.25, "y": 1 },
|
||||
{ "label": "2,15", "matrix": [2, 15], "x": 17.25, "y": 1 },
|
||||
{ "label": "2,0", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||
{ "label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2 },
|
||||
{ "label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2 },
|
||||
{ "label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2 },
|
||||
{ "label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2 },
|
||||
{ "label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2 },
|
||||
{ "label": "2,6", "matrix": [2, 6], "x": 6.75, "y": 2 },
|
||||
{ "label": "2,7", "matrix": [2, 7], "x": 7.75, "y": 2 },
|
||||
{ "label": "2,8", "matrix": [2, 8], "x": 8.75, "y": 2 },
|
||||
{ "label": "2,9", "matrix": [2, 9], "x": 9.75, "y": 2 },
|
||||
{ "label": "2,10", "matrix": [2, 10], "x": 10.75, "y": 2 },
|
||||
{ "label": "2,11", "matrix": [2, 11], "x": 11.75, "y": 2 },
|
||||
{ "label": "2,12", "matrix": [2, 12], "w": 2.25, "x": 12.75, "y": 2 },
|
||||
{ "label": "3,0", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
|
||||
{ "label": "3,1", "matrix": [3, 1], "x": 2.25, "y": 3 },
|
||||
{ "label": "3,2", "matrix": [3, 2], "x": 3.25, "y": 3 },
|
||||
{ "label": "3,3", "matrix": [3, 3], "x": 4.25, "y": 3 },
|
||||
{ "label": "3,4", "matrix": [3, 4], "x": 5.25, "y": 3 },
|
||||
{ "label": "3,5", "matrix": [3, 5], "x": 6.25, "y": 3 },
|
||||
{ "label": "3,6", "matrix": [3, 6], "x": 7.25, "y": 3 },
|
||||
{ "label": "3,7", "matrix": [3, 7], "x": 8.25, "y": 3 },
|
||||
{ "label": "3,8", "matrix": [3, 8], "x": 9.25, "y": 3 },
|
||||
{ "label": "3,9", "matrix": [3, 9], "x": 10.25, "y": 3 },
|
||||
{ "label": "3,10", "matrix": [3, 10], "x": 11.25, "y": 3 },
|
||||
{ "label": "3,13", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 },
|
||||
{ "label": "3,14", "matrix": [3, 14], "x": 16.25, "y": 3 },
|
||||
{ "label": "4,0", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 },
|
||||
{ "label": "4,2", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 },
|
||||
{ "label": "4,5", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 },
|
||||
{ "label": "4,11", "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 },
|
||||
{ "label": "4,13", "matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4 },
|
||||
{ "label": "4,14", "matrix": [4, 14], "x": 15.25, "y": 4 },
|
||||
{ "label": "4,15", "matrix": [4, 15], "x": 16.25, "y": 4 },
|
||||
{ "label": "3,15", "matrix": [3, 15], "x": 17.25, "y": 4 }
|
||||
]
|
||||
},
|
||||
"LAYOUT_tkl_nofrow_ansi_tsangan_wkl_split_bs": {
|
||||
"layout": [
|
||||
{ "label": "0,0", "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
{ "label": "0,1", "matrix": [0, 1], "x": 1, "y": 0 },
|
||||
{ "label": "0,2", "matrix": [0, 2], "x": 2, "y": 0 },
|
||||
{ "label": "0,3", "matrix": [0, 3], "x": 3, "y": 0 },
|
||||
{ "label": "0,4", "matrix": [0, 4], "x": 4, "y": 0 },
|
||||
{ "label": "0,5", "matrix": [0, 5], "x": 5, "y": 0 },
|
||||
{ "label": "0,6", "matrix": [0, 6], "x": 6, "y": 0 },
|
||||
{ "label": "0,7", "matrix": [0, 7], "x": 7, "y": 0 },
|
||||
{ "label": "0,8", "matrix": [0, 8], "x": 8, "y": 0 },
|
||||
{ "label": "0,9", "matrix": [0, 9], "x": 9, "y": 0 },
|
||||
{ "label": "0,10", "matrix": [0, 10], "x": 10, "y": 0 },
|
||||
{ "label": "0,11", "matrix": [0, 11], "x": 11, "y": 0 },
|
||||
{ "label": "0,12", "matrix": [0, 12], "x": 12, "y": 0 },
|
||||
{ "label": "0,13", "matrix": [0, 13], "x": 13, "y": 0 },
|
||||
{ "label": "1,13", "matrix": [1, 13], "x": 14, "y": 0 },
|
||||
{ "label": "0,14", "matrix": [0, 14], "x": 15.25, "y": 0 },
|
||||
{ "label": "0,15", "matrix": [0, 15], "x": 16.25, "y": 0 },
|
||||
{ "label": "1,15", "matrix": [1, 15], "x": 17.25, "y": 0 },
|
||||
{ "label": "1,0", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||
{ "label": "1,1", "matrix": [1, 1], "x": 1.5, "y": 1 },
|
||||
{ "label": "1,2", "matrix": [1, 2], "x": 2.5, "y": 1 },
|
||||
{ "label": "1,3", "matrix": [1, 3], "x": 3.5, "y": 1 },
|
||||
{ "label": "1,4", "matrix": [1, 4], "x": 4.5, "y": 1 },
|
||||
{ "label": "1,5", "matrix": [1, 5], "x": 5.5, "y": 1 },
|
||||
{ "label": "1,6", "matrix": [1, 6], "x": 6.5, "y": 1 },
|
||||
{ "label": "1,7", "matrix": [1, 7], "x": 7.5, "y": 1 },
|
||||
{ "label": "1,8", "matrix": [1, 8], "x": 8.5, "y": 1 },
|
||||
{ "label": "1,9", "matrix": [1, 9], "x": 9.5, "y": 1 },
|
||||
{ "label": "1,10", "matrix": [1, 10], "x": 10.5, "y": 1 },
|
||||
{ "label": "1,11", "matrix": [1, 11], "x": 11.5, "y": 1 },
|
||||
{ "label": "1,12", "matrix": [1, 12], "x": 12.5, "y": 1 },
|
||||
{ "label": "2,13", "matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 1 },
|
||||
{ "label": "1,14", "matrix": [1, 14], "x": 15.25, "y": 1 },
|
||||
{ "label": "2,14", "matrix": [2, 14], "x": 16.25, "y": 1 },
|
||||
{ "label": "2,15", "matrix": [2, 15], "x": 17.25, "y": 1 },
|
||||
{ "label": "2,0", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||
{ "label": "2,1", "matrix": [2, 1], "x": 1.75, "y": 2 },
|
||||
{ "label": "2,2", "matrix": [2, 2], "x": 2.75, "y": 2 },
|
||||
{ "label": "2,3", "matrix": [2, 3], "x": 3.75, "y": 2 },
|
||||
{ "label": "2,4", "matrix": [2, 4], "x": 4.75, "y": 2 },
|
||||
{ "label": "2,5", "matrix": [2, 5], "x": 5.75, "y": 2 },
|
||||
{ "label": "2,6", "matrix": [2, 6], "x": 6.75, "y": 2 },
|
||||
{ "label": "2,7", "matrix": [2, 7], "x": 7.75, "y": 2 },
|
||||
{ "label": "2,8", "matrix": [2, 8], "x": 8.75, "y": 2 },
|
||||
{ "label": "2,9", "matrix": [2, 9], "x": 9.75, "y": 2 },
|
||||
{ "label": "2,10", "matrix": [2, 10], "x": 10.75, "y": 2 },
|
||||
{ "label": "2,11", "matrix": [2, 11], "x": 11.75, "y": 2 },
|
||||
{ "label": "2,12", "matrix": [2, 12], "w": 2.25, "x": 12.75, "y": 2 },
|
||||
{ "label": "3,0", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
|
||||
{ "label": "3,1", "matrix": [3, 1], "x": 2.25, "y": 3 },
|
||||
{ "label": "3,2", "matrix": [3, 2], "x": 3.25, "y": 3 },
|
||||
{ "label": "3,3", "matrix": [3, 3], "x": 4.25, "y": 3 },
|
||||
{ "label": "3,4", "matrix": [3, 4], "x": 5.25, "y": 3 },
|
||||
{ "label": "3,5", "matrix": [3, 5], "x": 6.25, "y": 3 },
|
||||
{ "label": "3,6", "matrix": [3, 6], "x": 7.25, "y": 3 },
|
||||
{ "label": "3,7", "matrix": [3, 7], "x": 8.25, "y": 3 },
|
||||
{ "label": "3,8", "matrix": [3, 8], "x": 9.25, "y": 3 },
|
||||
{ "label": "3,9", "matrix": [3, 9], "x": 10.25, "y": 3 },
|
||||
{ "label": "3,10", "matrix": [3, 10], "x": 11.25, "y": 3 },
|
||||
{ "label": "3,13", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 },
|
||||
{ "label": "3,14", "matrix": [3, 14], "x": 16.25, "y": 3 },
|
||||
{ "label": "4,0", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 },
|
||||
{ "label": "4,2", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 },
|
||||
{ "label": "4,5", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 },
|
||||
{ "label": "4,11", "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 },
|
||||
{ "label": "4,13", "matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4 },
|
||||
{ "label": "4,14", "matrix": [4, 14], "x": 15.25, "y": 4 },
|
||||
{ "label": "4,15", "matrix": [4, 15], "x": 16.25, "y": 4 },
|
||||
{ "label": "3,15", "matrix": [3, 15], "x": 17.25, "y": 4 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
49
keyboards/cipulot/ec_alveus/1_2_0/keymaps/default/keymap.c
Normal file
49
keyboards/cipulot/ec_alveus/1_2_0/keymaps/default/keymap.c
Normal file
@ -0,0 +1,49 @@
|
||||
/* Copyright 2023 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 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// clang-format off
|
||||
[0] = LAYOUT_tkl_nofrow_ansi_tsangan_wkl(
|
||||
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_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_ENTER,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
|
||||
|
||||
[1] = LAYOUT_tkl_nofrow_ansi_tsangan_wkl(
|
||||
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, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______),
|
||||
|
||||
[2] = LAYOUT_tkl_nofrow_ansi_tsangan_wkl(
|
||||
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______),
|
||||
|
||||
[3] = LAYOUT_tkl_nofrow_ansi_tsangan_wkl(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______)
|
||||
// clang-format on
|
||||
};
|
@ -0,0 +1,49 @@
|
||||
/* Copyright 2023 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 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// clang-format off
|
||||
[0] = LAYOUT_tkl_nofrow_ansi_tsangan_wkl_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_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_ENTER,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
|
||||
|
||||
[1] = LAYOUT_tkl_nofrow_ansi_tsangan_wkl_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, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______),
|
||||
|
||||
[2] = LAYOUT_tkl_nofrow_ansi_tsangan_wkl_split_bs(
|
||||
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______),
|
||||
|
||||
[3] = LAYOUT_tkl_nofrow_ansi_tsangan_wkl_split_bs(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______)
|
||||
// clang-format on
|
||||
};
|
20
keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/config.h
Normal file
20
keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/config.h
Normal file
@ -0,0 +1,20 @@
|
||||
/* Copyright 2023 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 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
|
||||
|
||||
// This is the size of the EEPROM for the custom VIA-specific data
|
||||
#define EECONFIG_USER_DATA_SIZE 4
|
49
keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/keymap.c
Normal file
49
keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/keymap.c
Normal file
@ -0,0 +1,49 @@
|
||||
/* Copyright 2023 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 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// clang-format off
|
||||
[0] = 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_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENTER,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
|
||||
|
||||
[1] = 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, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||
|
||||
[2] = LAYOUT_all(
|
||||
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||
|
||||
[3] = LAYOUT_all(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
|
||||
// clang-format on
|
||||
};
|
3
keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/rules.mk
Normal file
3
keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/rules.mk
Normal file
@ -0,0 +1,3 @@
|
||||
VIA_ENABLE = yes
|
||||
|
||||
SRC += via_apc.c
|
156
keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/via_apc.c
Normal file
156
keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/via_apc.c
Normal file
@ -0,0 +1,156 @@
|
||||
/* Copyright 2023 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 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 "ec_switch_matrix.h"
|
||||
#include "action.h"
|
||||
#include "via.h"
|
||||
|
||||
void apc_init_thresholds(void);
|
||||
void apc_set_threshold(bool is_for_actuation);
|
||||
|
||||
// Declaring an _apc_config_t struct that will store our data
|
||||
typedef struct _apc_config_t {
|
||||
uint16_t actuation_threshold;
|
||||
uint16_t release_threshold;
|
||||
} apc_config;
|
||||
|
||||
// Check if the size of the reserved persistent memory is the same as the size of struct apc_config
|
||||
_Static_assert(sizeof(apc_config) == EECONFIG_USER_DATA_SIZE, "Mismatch in keyboard EECONFIG stored data");
|
||||
|
||||
// Declaring a new variable apc of type apc_config
|
||||
apc_config apc;
|
||||
|
||||
// Declaring enums for VIA config menu
|
||||
enum via_apc_enums {
|
||||
// clang-format off
|
||||
id_apc_actuation_threshold = 1,
|
||||
id_apc_release_threshold = 2
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
// Initializing persistent memory configuration: default values are declared and stored in PMEM
|
||||
void eeconfig_init_user(void) {
|
||||
// Default values
|
||||
apc.actuation_threshold = DEFAULT_ACTUATION_LEVEL;
|
||||
apc.release_threshold = DEFAULT_RELEASE_LEVEL;
|
||||
// Write default value to EEPROM now
|
||||
eeconfig_update_user_datablock(&apc);
|
||||
}
|
||||
|
||||
// On Keyboard startup
|
||||
void keyboard_post_init_user(void) {
|
||||
// Read custom menu variables from memory
|
||||
eeconfig_read_user_datablock(&apc);
|
||||
apc_init_thresholds();
|
||||
}
|
||||
|
||||
// Handle the data received by the keyboard from the VIA menus
|
||||
void apc_config_set_value(uint8_t *data) {
|
||||
// data = [ value_id, value_data ]
|
||||
uint8_t *value_id = &(data[0]);
|
||||
uint8_t *value_data = &(data[1]);
|
||||
|
||||
switch (*value_id) {
|
||||
case id_apc_actuation_threshold: {
|
||||
apc.actuation_threshold = value_data[1] | (value_data[0] << 8);
|
||||
apc_set_threshold(true);
|
||||
break;
|
||||
}
|
||||
case id_apc_release_threshold: {
|
||||
apc.release_threshold = value_data[1] | (value_data[0] << 8);
|
||||
apc_set_threshold(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Handle the data sent by the keyboard to the VIA menus
|
||||
void apc_config_get_value(uint8_t *data) {
|
||||
// data = [ value_id, value_data ]
|
||||
uint8_t *value_id = &(data[0]);
|
||||
uint8_t *value_data = &(data[1]);
|
||||
|
||||
switch (*value_id) {
|
||||
case id_apc_actuation_threshold: {
|
||||
value_data[0] = apc.actuation_threshold >> 8;
|
||||
value_data[1] = apc.actuation_threshold & 0xFF;
|
||||
break;
|
||||
}
|
||||
case id_apc_release_threshold: {
|
||||
value_data[0] = apc.release_threshold >> 8;
|
||||
value_data[1] = apc.release_threshold & 0xFF;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Save the data to persistent memory after changes are made
|
||||
void apc_config_save(void) {
|
||||
eeconfig_update_user_datablock(&apc);
|
||||
}
|
||||
|
||||
void via_custom_value_command_kb(uint8_t *data, uint8_t length) {
|
||||
// data = [ command_id, channel_id, value_id, value_data ]
|
||||
uint8_t *command_id = &(data[0]);
|
||||
uint8_t *channel_id = &(data[1]);
|
||||
uint8_t *value_id_and_data = &(data[2]);
|
||||
|
||||
if (*channel_id == id_custom_channel) {
|
||||
switch (*command_id) {
|
||||
case id_custom_set_value: {
|
||||
apc_config_set_value(value_id_and_data);
|
||||
break;
|
||||
}
|
||||
case id_custom_get_value: {
|
||||
apc_config_get_value(value_id_and_data);
|
||||
break;
|
||||
}
|
||||
case id_custom_save: {
|
||||
apc_config_save();
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
// Unhandled message.
|
||||
*command_id = id_unhandled;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
*command_id = id_unhandled;
|
||||
}
|
||||
|
||||
// Initialize the thresholds
|
||||
void apc_init_thresholds(void) {
|
||||
ecsm_config.ecsm_actuation_threshold = apc.actuation_threshold;
|
||||
ecsm_config.ecsm_release_threshold = apc.release_threshold;
|
||||
|
||||
// Update the ecsm_config
|
||||
ecsm_update(&ecsm_config);
|
||||
}
|
||||
|
||||
// Set the thresholds
|
||||
void apc_set_threshold(bool is_for_actuation) {
|
||||
if (is_for_actuation) {
|
||||
ecsm_config.ecsm_actuation_threshold = apc.actuation_threshold;
|
||||
|
||||
} else {
|
||||
ecsm_config.ecsm_release_threshold = apc.release_threshold;
|
||||
}
|
||||
// Update the ecsm_config
|
||||
ecsm_update(&ecsm_config);
|
||||
}
|
44
keyboards/cipulot/ec_alveus/1_2_0/matrix.c
Normal file
44
keyboards/cipulot/ec_alveus/1_2_0/matrix.c
Normal file
@ -0,0 +1,44 @@
|
||||
/* Copyright 2023 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 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 "ec_switch_matrix.h"
|
||||
#include "matrix.h"
|
||||
|
||||
/* matrix state(1:on, 0:off) */
|
||||
extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values
|
||||
extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values
|
||||
|
||||
void matrix_init_custom(void) {
|
||||
// Default values, overwritten by VIA if enabled later
|
||||
ecsm_config.ecsm_actuation_threshold = DEFAULT_ACTUATION_LEVEL;
|
||||
ecsm_config.ecsm_release_threshold = DEFAULT_RELEASE_LEVEL;
|
||||
|
||||
ecsm_init(&ecsm_config);
|
||||
}
|
||||
|
||||
bool matrix_scan_custom(matrix_row_t current_matrix[]) {
|
||||
bool updated = ecsm_matrix_scan(current_matrix);
|
||||
|
||||
// RAW matrix values on console
|
||||
#ifdef CONSOLE_ENABLE
|
||||
static int cnt = 0;
|
||||
if (cnt++ == 350) {
|
||||
cnt = 0;
|
||||
ecsm_print_matrix();
|
||||
}
|
||||
#endif
|
||||
return updated;
|
||||
}
|
22
keyboards/cipulot/ec_alveus/1_2_0/mcuconf.h
Normal file
22
keyboards/cipulot/ec_alveus/1_2_0/mcuconf.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* Copyright 2023 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 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_ADC_USE_ADC1
|
||||
#define STM32_ADC_USE_ADC1 TRUE
|
27
keyboards/cipulot/ec_alveus/1_2_0/readme.md
Normal file
27
keyboards/cipulot/ec_alveus/1_2_0/readme.md
Normal file
@ -0,0 +1,27 @@
|
||||
# EC Alveus
|
||||
|
||||

|
||||
|
||||
EC FRL TKL keyboard.
|
||||
|
||||
* Keyboard Maintainer: [cipulot](https://github.com/cipulot)
|
||||
* Hardware Supported: EC Alveus 1.2.0
|
||||
* Hardware Availability: Raffle Sale from [Densus](https://www.instagram.com/densusdesign/)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make cipulot/ec_alveus/1_2_0:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make cipulot/ec_alveus/1_2_0: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**: Long short the exposed pads on the top of the PCB
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
3
keyboards/cipulot/ec_alveus/1_2_0/rules.mk
Normal file
3
keyboards/cipulot/ec_alveus/1_2_0/rules.mk
Normal file
@ -0,0 +1,3 @@
|
||||
CUSTOM_MATRIX = lite
|
||||
QUANTUM_LIB_SRC += analog.c
|
||||
SRC += matrix.c ec_switch_matrix.c
|
@ -14,6 +14,7 @@
|
||||
# undef TAPPING_TERM
|
||||
#endif
|
||||
#define TAPPING_TERM 200
|
||||
#define VER_NEWLINE_WAIT 200 // in milliseconds
|
||||
|
||||
#define NO_ACTION_ONESHOT
|
||||
|
||||
@ -32,63 +33,80 @@
|
||||
#define RGBLIGHT_SLEEP
|
||||
|
||||
#if defined(RGBLIGHT_ENABLE)
|
||||
# define RGBLIGHT_LAYERS
|
||||
# define RGBLIGHT_LIMIT_VAL 150
|
||||
# define RGBLIGHT_HUE_STEP 16
|
||||
# define RGBLIGHT_SAT_STEP 32
|
||||
# define RGBLIGHT_VAL_STEP 32
|
||||
|
||||
# define RGBLIGHT_EFFECT_ALTERING
|
||||
# define RGBLIGHT_EFFECT_BREATHING
|
||||
# define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
# define RGBLIGHT_EFFECT_KNIGHT
|
||||
# define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
# define RGBLIGHT_EFFECT_KNIGHT
|
||||
# define RGBLIGHT_EFFECT_RGB_TEST
|
||||
# define RGBLIGHT_EFFECT_SNAKE
|
||||
# define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
# define RGBLIGHT_EFFECT_TWINKLE
|
||||
#endif
|
||||
|
||||
#if defined(RGB_MATRIX_ENABLE)
|
||||
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
||||
# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
|
||||
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
|
||||
# define SPLIT_LAYER_STATE_ENABLE
|
||||
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
||||
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
|
||||
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
|
||||
// limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
|
||||
# define RGB_MATRIX_HUE_STEP 32
|
||||
# define RGB_MATRIX_SAT_STEP 64
|
||||
# define RGB_MATRIX_VAL_STEP 64
|
||||
# define RGB_MATRIX_SPD_STEP 20
|
||||
# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
|
||||
# define RGB_MATRIX_HUE_STEP 32
|
||||
# define RGB_MATRIX_SAT_STEP 64
|
||||
# define RGB_MATRIX_VAL_STEP 64
|
||||
# define RGB_MATRIX_SPD_STEP 20
|
||||
# define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR
|
||||
|
||||
/* Disable the animations you don't want/need. You will need to disable a good number of these *
|
||||
* because they take up a lot of space. Disable until you can successfully compile your firmware. */
|
||||
# undef ENABLE_RGB_MATRIX_ALPHAS_MODS
|
||||
# define ENABLE_RGB_MATRIX_ALPHAS_MODS
|
||||
# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||
# define ENABLE_RGB_MATRIX_BREATHING
|
||||
# undef ENABLE_RGB_MATRIX_BREATHING
|
||||
# undef ENABLE_RGB_MATRIX_BAND_SAT
|
||||
# undef ENABLE_RGB_MATRIX_BAND_VAL
|
||||
# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
||||
# undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
|
||||
# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
||||
# undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
|
||||
# define ENABLE_RGB_MATRIX_CYCLE_ALL
|
||||
# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
|
||||
# undef ENABLE_RGB_MATRIX_CYCLE_ALL
|
||||
# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
|
||||
# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
|
||||
# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
|
||||
# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
|
||||
# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
|
||||
# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
|
||||
# undef ENABLE_RGB_MATRIX_DUAL_BEACON
|
||||
# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
|
||||
# undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
|
||||
# undef ENABLE_RGB_MATRIX_RAINBOW_BEACON
|
||||
# undef ENABLE_RGB_MATRIX_DUAL_BEACON
|
||||
# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
|
||||
# undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
|
||||
# undef ENABLE_RGB_MATRIX_RAINDROPS
|
||||
# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
|
||||
# undef ENABLE_RGB_MATRIX_HUE_BREATHING
|
||||
# undef ENABLE_RGB_MATRIX_HUE_PENDULUM
|
||||
# undef ENABLE_RGB_MATRIX_HUE_WAVE
|
||||
# undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
|
||||
# define ENABLE_RGB_MATRIX_PIXEL_FLOW
|
||||
# undef ENABLE_RGB_MATRIX_PIXEL_RAIN
|
||||
# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
|
||||
# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
||||
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
||||
# define ENABLE_RGB_MATRIX_SPLASH
|
||||
# undef ENABLE_RGB_MATRIX_MULTISPLASH
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_SPLASH
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||
# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
||||
# undef ENABLE_RGB_MATRIX_SPLASH
|
||||
# define ENABLE_RGB_MATRIX_MULTISPLASH
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_SPLASH
|
||||
# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||
#endif
|
||||
|
@ -5,12 +5,15 @@
|
||||
|
||||
enum custom_keycodes {
|
||||
// Layer Macros
|
||||
COLEMAK = SAFE_RANGE,
|
||||
COLEMAK = QK_USER,
|
||||
QWERTY,
|
||||
FUNCTION,
|
||||
CODE,
|
||||
ADJUST,
|
||||
# if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
RGBRST,
|
||||
# endif
|
||||
VRSN,
|
||||
// Secret Macros
|
||||
M_XXX1,
|
||||
M_XXX2,
|
||||
|
@ -80,6 +80,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
};
|
||||
// clang-format off
|
||||
|
||||
#if defined(RGBLIGHT_ENABLE)
|
||||
__attribute__((weak))
|
||||
void set_rgb_by_layer(layer_state_t state) {
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
# if defined(RGBLIGHT_ENABLE)
|
||||
set_rgb_by_layer(state);
|
||||
# endif
|
||||
return update_tri_layer_state(state, _FUNCTION, _ADJUST, _SECRET);
|
||||
}
|
||||
|
@ -48,10 +48,10 @@
|
||||
|
||||
#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE)
|
||||
# define ________________________ADJUST_L2________________________ RGBRST , XXXXXXX , RGB_SPI , RGB_SAI , RGB_HUI , RGB_VAI
|
||||
# define ________________________ADJUST_L3________________________ EE_CLR , XXXXXXX , RGB_SPD , RGB_SAD , RGB_HUD , RGB_VAD
|
||||
# define ________________________ADJUST_L3________________________ EE_CLR , VRSN , RGB_SPD , RGB_SAD , RGB_HUD , RGB_VAD
|
||||
#else
|
||||
# define ________________________ADJUST_L2________________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
|
||||
# define ________________________ADJUST_L3________________________ EE_CLR , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
|
||||
# define ________________________ADJUST_L3________________________ EE_CLR , VRSN , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
|
||||
#endif
|
||||
|
||||
#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE)
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#include "keycodes.h"
|
||||
#include "version.h"
|
||||
|
||||
__attribute__((weak))
|
||||
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
|
||||
@ -23,18 +24,31 @@ bool process_record_oled(uint16_t keycode, keyrecord_t *record) {
|
||||
#endif
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
|
||||
case COLEMAK:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_COLEMAK);
|
||||
if (record->event.pressed) {
|
||||
switch (keycode) {
|
||||
case COLEMAK:
|
||||
set_single_persistent_default_layer(_COLEMAK);
|
||||
break;
|
||||
case QWERTY:
|
||||
set_single_persistent_default_layer(_QWERTY);
|
||||
break;
|
||||
# if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
case RGBRST:
|
||||
# if defined(RGBLIGHT_ENABLE)
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
# else
|
||||
eeconfig_update_rgb_matrix_default();
|
||||
# endif
|
||||
break;
|
||||
# endif
|
||||
case VRSN:
|
||||
send_string(
|
||||
"# qmk " QMK_VERSION "\n" SS_DELAY(VER_NEWLINE_WAIT)
|
||||
"# " QMK_KEYBOARD "/" QMK_KEYMAP "\n" SS_DELAY(VER_NEWLINE_WAIT)
|
||||
"# built on: " QMK_BUILDDATE "\n");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case QWERTY:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_QWERTY);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return process_record_keymap(keycode, record) && process_record_secrets(keycode, record)
|
||||
|
@ -54,7 +54,7 @@ The concept is Mac and **baby finger** friendly keymap.
|
||||
| --- | --- | --- |
|
||||
| ESC | Caps lock | |
|
||||
|
||||
- ADJUST: RGB control, Power control, default layer setting and reset
|
||||
- ADJUST: RGB control, Power control, default layer setting, QMK version and reset
|
||||

|
||||
- SECRET: hold `ADJUST` and `FUNCTION` to activate
|
||||
|
||||
|
61
keyboards/crkbd/keymaps/thunderbird2086/rgb.c
Normal file
61
keyboards/crkbd/keymaps/thunderbird2086/rgb.c
Normal file
@ -0,0 +1,61 @@
|
||||
// Copyright 2023 Allen Choi (@thunderbird2086)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
|
||||
# include QMK_KEYBOARD_H
|
||||
|
||||
# include "keycodes.h"
|
||||
|
||||
# ifdef RGBLIGHT_ENABLE
|
||||
|
||||
const rgblight_segment_t PROGMEM _rgb_layer_0[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{0, 56, HSV_BLUE}
|
||||
);
|
||||
const rgblight_segment_t PROGMEM _rgb_layer_1[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{0, 56, HSV_GREEN}
|
||||
);
|
||||
const rgblight_segment_t PROGMEM _rgb_layer_2[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{0, 56, HSV_YELLOW}
|
||||
);
|
||||
|
||||
const rgblight_segment_t* const PROGMEM _rgb_layers[] = RGBLIGHT_LAYERS_LIST(
|
||||
_rgb_layer_0,
|
||||
_rgb_layer_1,
|
||||
_rgb_layer_2
|
||||
);
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
// Enable the LED layers
|
||||
rgblight_layers = _rgb_layers;
|
||||
}
|
||||
|
||||
void set_rgb_by_layer(layer_state_t state) {
|
||||
rgblight_set_layer_state(0, layer_state_cmp(state, _CODE));
|
||||
rgblight_set_layer_state(1, layer_state_cmp(state, _FUNCTION));
|
||||
rgblight_set_layer_state(2, layer_state_cmp(state, _ADJUST));
|
||||
}
|
||||
|
||||
# else
|
||||
|
||||
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
|
||||
for (uint8_t i = led_min; i < led_max; i++) {
|
||||
switch(get_highest_layer(layer_state|default_layer_state)) {
|
||||
case _CODE:
|
||||
rgb_matrix_set_color(i, RGB_BLUE);
|
||||
break;
|
||||
case _FUNCTION:
|
||||
rgb_matrix_set_color(i, RGB_GREEN);
|
||||
break;
|
||||
case _ADJUST:
|
||||
rgb_matrix_set_color(i, RGB_YELLOW);
|
||||
// RGB_WHITE caused crash
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
# endif
|
||||
#endif
|
@ -11,6 +11,7 @@ TAP_DANCE_ENABLE = yes
|
||||
|
||||
SRC += oled.c
|
||||
SRC += process_records.c
|
||||
SRC += rgb.c
|
||||
SRC += tap_dances.c
|
||||
|
||||
ifneq ("$(wildcard keyboards/crkbd/keymaps/thunderbird2086/secrets.c)","")
|
||||
|
26
keyboards/custommk/ergostrafer/config.h
Normal file
26
keyboards/custommk/ergostrafer/config.h
Normal file
@ -0,0 +1,26 @@
|
||||
// Copyright 2023 customMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
// FRAM configuration
|
||||
#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN B7
|
||||
#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 4 // 48MHz / 4 = 12MHz; max supported by MB85R64 is 20MHz
|
||||
|
||||
// SPI configuration
|
||||
#define SPI_DRIVER SPID1
|
||||
#define SPI_SCK_PIN B3
|
||||
#define SPI_SCK_PAL_MODE 5
|
||||
#define SPI_MOSI_PIN B5
|
||||
#define SPI_MOSI_PAL_MODE 5
|
||||
#define SPI_MISO_PIN B4
|
||||
#define SPI_MISO_PAL_MODE 5
|
||||
|
||||
#define TAP_CODE_DELAY 10
|
||||
|
||||
// Audio configuration
|
||||
#define AUDIO_PIN B8
|
||||
#define AUDIO_PWM_DRIVER PWMD4
|
||||
#define AUDIO_PWM_CHANNEL 3
|
||||
#define AUDIO_PWM_PAL_MODE 2
|
||||
#define AUDIO_STATE_TIMER GPTD5
|
30
keyboards/custommk/ergostrafer/halconf.h
Normal file
30
keyboards/custommk/ergostrafer/halconf.h
Normal file
@ -0,0 +1,30 @@
|
||||
/* Copyright 2023 customMK
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_PWM TRUE
|
||||
|
||||
#define HAL_USE_SPI TRUE
|
||||
|
||||
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
|
||||
|
||||
#define SERIAL_BUFFERS_SIZE 256
|
||||
|
||||
// This enables interrupt-driven mode
|
||||
#define SPI_USE_WAIT TRUE
|
||||
|
||||
#include_next <halconf.h>
|
83
keyboards/custommk/ergostrafer/info.json
Normal file
83
keyboards/custommk/ergostrafer/info.json
Normal file
@ -0,0 +1,83 @@
|
||||
{
|
||||
"manufacturer": "customMK",
|
||||
"keyboard_name": "ErgoStrafer",
|
||||
"maintainer": "customMK",
|
||||
"bootloader": "stm32-dfu",
|
||||
"diode_direction": "ROW2COL",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"encoder": true,
|
||||
"audio": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B0", "A1", "A2", "A3", "A6", "B6", "B10"],
|
||||
"rows": ["C13", "C14", "C15", "B1", "A7", "A5"]
|
||||
},
|
||||
"processor": "STM32F411",
|
||||
"url": "https://shop.custommk.com/collections/ergostrafer/products/ergostrafer",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0xFAB8",
|
||||
"vid": "0xF35B"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{ "matrix": [0, 0], "label":"F9", "x":7.5, "y":0 },
|
||||
{ "matrix": [0, 1], "label":"7", "x":1.5, "y":1.25 },
|
||||
{ "matrix": [0, 2], "label":"8", "x":2.5, "y":1.25 },
|
||||
{ "matrix": [0, 3], "label":"9", "x":3.5, "y":1.25 },
|
||||
{ "matrix": [0, 4], "label":"0", "x":4.5, "y":1.25 },
|
||||
{ "matrix": [0, 5], "label":"-", "x":5.5, "y":1.25 },
|
||||
{ "matrix": [0, 6], "label":"T", "x":7.25, "y":3.25, "w":1.5 },
|
||||
|
||||
{ "matrix": [1, 0], "label":"PrtScr", "x":7.5, "y":1 },
|
||||
{ "matrix": [1, 1], "label":"1", "x":1, "y":2.25 },
|
||||
{ "matrix": [1, 2], "label":"2", "x":2, "y":2.25 },
|
||||
{ "matrix": [1, 3], "label":"3", "x":3, "y":2.25 },
|
||||
{ "matrix": [1, 4], "label":"5", "x":5, "y":2.25 },
|
||||
{ "matrix": [1, 5], "label":"6", "x":6, "y":2.25 },
|
||||
{ "matrix": [1, 6], "label":"G", "x":7.25, "y":4.25, "w":1.5 },
|
||||
|
||||
{ "matrix": [2, 0], "label":"F5", "x":7.5, "y":2 },
|
||||
{ "matrix": [2, 1], "label":"Tab", "x":1, "y":3.5 },
|
||||
{ "matrix": [2, 2], "label":"Q", "x":2.5, "y":3.4 },
|
||||
{ "matrix": [2, 3], "label":"4", "x":4, "y":2.25 },
|
||||
{ "matrix": [2, 4], "label":"E", "x":4.5, "y":3.4 },
|
||||
{ "matrix": [2, 5], "label":"R", "x":6, "y":3.3 },
|
||||
{ "matrix": [2, 6], "label":"B", "x":6.5, "y":5.75, "w":1.5 },
|
||||
|
||||
{ "matrix": [3, 0], "label":"Caps Lock", "x":0, "y":3.5 },
|
||||
{ "matrix": [3, 1], "label":"L Alt", "x":0.25, "y":4.75, "w":1.5 },
|
||||
{ "matrix": [3, 2], "label":"A", "x":2.5, "y":4.5 },
|
||||
{ "matrix": [3, 3], "label":"W", "x":3.5, "y":3.4 },
|
||||
{ "matrix": [3, 4], "label":"D", "x":4.5, "y":4.5 },
|
||||
{ "matrix": [3, 5], "label":"F", "x":6, "y":4.3 },
|
||||
{ "matrix": [3, 6], "label":"P", "x":8, "y":5.75 },
|
||||
|
||||
{ "matrix": [4, 1], "label":"L Shift", "x":0.25, "y":5.75, "w":1.5 },
|
||||
{ "matrix": [4, 2], "label":"Z", "x":2.5, "y":5.6 },
|
||||
{ "matrix": [4, 3], "label":"S", "x":3.5, "y":4.5 },
|
||||
{ "matrix": [4, 5], "label":"V", "x":5, "y":5.75, "w":1.5 },
|
||||
{ "matrix": [4, 6], "label":"Space", "x":6.5, "y":6.85, "w":1.75 }
|
||||
|
||||
{ "matrix": [5, 1], "label":"L Ctrl Duck", "x":0.25, "y":6.75, "w":1.5 },
|
||||
{ "matrix": [5, 3], "label":"X", "x":3.5, "y":5.6 },
|
||||
{ "matrix": [5, 5], "label":"C", "x":4.75, "y":6.85, "w":1.75 },
|
||||
{ "matrix": [5, 6], "label":"L Ctrl", "x":9.5, "y":5.75 }
|
||||
]
|
||||
}
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{ "pin_a": "A8", "pin_b": "A4"},
|
||||
{ "pin_a": "B12", "pin_b": "B14"},
|
||||
{ "pin_a": "B15", "pin_b": "A15"}
|
||||
]
|
||||
}
|
||||
}
|
21
keyboards/custommk/ergostrafer/keymaps/default/keymap.c
Normal file
21
keyboards/custommk/ergostrafer/keymaps/default/keymap.c
Normal file
@ -0,0 +1,21 @@
|
||||
// Copyright 2023 customMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_F9, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_T,
|
||||
KC_PSCR, KC_1, KC_2, KC_3, KC_5, KC_6, KC_G,
|
||||
KC_F5, KC_TAB, KC_Q, KC_4, KC_E, KC_R, KC_B,
|
||||
KC_CAPS, KC_LALT, KC_A, KC_W, KC_D, KC_F, KC_P,
|
||||
KC_LSFT, KC_Z, KC_S, KC_V, KC_SPC,
|
||||
KC_LCTL, KC_X, KC_C, KC_LCTL
|
||||
)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
|
||||
};
|
||||
#endif
|
1
keyboards/custommk/ergostrafer/keymaps/default/rules.mk
Normal file
1
keyboards/custommk/ergostrafer/keymaps/default/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
13
keyboards/custommk/ergostrafer/keymaps/via/config.h
Normal file
13
keyboards/custommk/ergostrafer/keymaps/via/config.h
Normal file
@ -0,0 +1,13 @@
|
||||
// Copyright 2023 customMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
// With 8k FRAM, max out dynamic keymap layers and macros
|
||||
// 7x6 matrix (84 bytes) and three encoders (12 bytes) consume 96 bytes per layer
|
||||
// 32 layers consumes 3072 bytes
|
||||
#define DYNAMIC_KEYMAP_LAYER_COUNT 32
|
||||
|
||||
// Most of the remaining space can be used for macros
|
||||
// QMK Macro keycode range allows up to 128 macros
|
||||
#define DYNAMIC_KEYMAP_MACRO_COUNT 128
|
21
keyboards/custommk/ergostrafer/keymaps/via/keymap.c
Normal file
21
keyboards/custommk/ergostrafer/keymaps/via/keymap.c
Normal file
@ -0,0 +1,21 @@
|
||||
// Copyright 2023 customMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_F9, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_T,
|
||||
KC_PSCR, KC_1, KC_2, KC_3, KC_5, KC_6, KC_G,
|
||||
KC_F5, KC_TAB, KC_Q, KC_4, KC_E, KC_R, KC_B,
|
||||
KC_CAPS, KC_LALT, KC_A, KC_W, KC_D, KC_F, KC_P,
|
||||
KC_LSFT, KC_Z, KC_S, KC_V, KC_SPC,
|
||||
KC_LCTL, KC_X, KC_C, KC_LCTL
|
||||
)
|
||||
};
|
||||
|
||||
//#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
|
||||
};
|
||||
//#endif
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user