summaryrefslogtreecommitdiff
path: root/keyboards/handwired/oem_iso_fullsize
diff options
context:
space:
mode:
authorNick Brassel <nick@tzarc.org>2023-05-29 06:17:24 +1000
committerNick Brassel <nick@tzarc.org>2023-05-29 06:17:24 +1000
commit5024370dd0b441e86ace3089193e84c5b050d892 (patch)
treeb661d5b154be987f9c3dba3a526b70e0b63f9fef /keyboards/handwired/oem_iso_fullsize
parent16767e4d59c2334fcd2d5e6556a68d5ff60ffd7b (diff)
parent8b1d86eabf399e82af7738fb675b9c74195d0f98 (diff)
Merge branch 'develop'
Diffstat (limited to 'keyboards/handwired/oem_iso_fullsize')
-rw-r--r--keyboards/handwired/oem_iso_fullsize/config.h37
-rw-r--r--keyboards/handwired/oem_iso_fullsize/info.json234
-rw-r--r--keyboards/handwired/oem_iso_fullsize/oem_iso_fullsize.c20
-rw-r--r--keyboards/handwired/oem_iso_fullsize/oem_iso_fullsize.h38
4 files changed, 129 insertions, 200 deletions
diff --git a/keyboards/handwired/oem_iso_fullsize/config.h b/keyboards/handwired/oem_iso_fullsize/config.h
deleted file mode 100644
index af6146110d..0000000000
--- a/keyboards/handwired/oem_iso_fullsize/config.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/** Copyright 2021 andresteare
- *
- * 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
-
-
-/*
- * Keyboard Matrix Assignments
- *
- * Change this to how you wired your keyboard
- * COLS: AVR pins used for columns, left to right
- * ROWS: AVR pins used for rows, top to bottom
- * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
- * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
- *
- */
-#define MATRIX_ROW_PINS { C0, B4, F3, F4, F5, F6 }
-#define MATRIX_COL_PINS { C2, C1, E0, D4, D5, A4, A0, B2, B0, E7, E6, D6, B1, B3, D3, D2, B6, F7, F0, F1, F2 }
-
-#define DIODE_DIRECTION ROW2COL
-
-
-// generated by KBFirmware JSON to QMK Parser
-// https://noroadsleft.github.io/kbf_qmk_converter/
diff --git a/keyboards/handwired/oem_iso_fullsize/info.json b/keyboards/handwired/oem_iso_fullsize/info.json
index b1c5c50969..e943b65643 100644
--- a/keyboards/handwired/oem_iso_fullsize/info.json
+++ b/keyboards/handwired/oem_iso_fullsize/info.json
@@ -8,116 +8,140 @@
"pid": "0x7070",
"device_version": "0.0.1"
},
+ "matrix_pins": {
+ "cols": ["C2", "C1", "E0", "D4", "D5", "A4", "A0", "B2", "B0", "E7", "E6", "D6", "B1", "B3", "D3", "D2", "B6", "F7", "F0", "F1", "F2"],
+ "rows": ["C0", "B4", "F3", "F4", "F5", "F6"]
+ },
+ "diode_direction": "ROW2COL",
"processor": "at90usb1286",
"bootloader": "atmel-dfu",
"layouts": {
"LAYOUT": {
"layout": [
- {"label":"K00 (C0,C2)", "x":0, "y":0},
- {"label":"K01 (C0,C1)", "x":2, "y":0},
- {"label":"K02 (C0,E0)", "x":3, "y":0},
- {"label":"K03 (C0,D4)", "x":4, "y":0},
- {"label":"K04 (C0,D5)", "x":5, "y":0},
- {"label":"K05 (C0,A4)", "x":6.5, "y":0},
- {"label":"K06 (C0,A0)", "x":7.5, "y":0},
- {"label":"K07 (C0,B2)", "x":8.5, "y":0},
- {"label":"K08 (C0,B0)", "x":9.5, "y":0},
- {"label":"K09 (C0,E7)", "x":11, "y":0},
- {"label":"K0A (C0,E6)", "x":12, "y":0},
- {"label":"K0B (C0,D6)", "x":13, "y":0},
- {"label":"K0C (C0,B1)", "x":14, "y":0},
- {"label":"K0E (C0,D3)", "x":15.25, "y":0},
- {"label":"K0F (C0,D2)", "x":16.25, "y":0},
- {"label":"K0G (C0,B6)", "x":17.25, "y":0},
- {"label":"K10 (B4,C2)", "x":0, "y":1.5},
- {"label":"K11 (B4,C1)", "x":1, "y":1.5},
- {"label":"K12 (B4,E0)", "x":2, "y":1.5},
- {"label":"K13 (B4,D4)", "x":3, "y":1.5},
- {"label":"K14 (B4,D5)", "x":4, "y":1.5},
- {"label":"K15 (B4,A4)", "x":5, "y":1.5},
- {"label":"K16 (B4,A0)", "x":6, "y":1.5},
- {"label":"K17 (B4,B2)", "x":7, "y":1.5},
- {"label":"K18 (B4,B0)", "x":8, "y":1.5},
- {"label":"K19 (B4,E7)", "x":9, "y":1.5},
- {"label":"K1A (B4,E6)", "x":10, "y":1.5},
- {"label":"K1B (B4,D6)", "x":11, "y":1.5},
- {"label":"K1C (B4,B1)", "x":12, "y":1.5},
- {"label":"K1D (B4,B3)", "x":13, "y":1.5, "w":2},
- {"label":"K1E (B4,D3)", "x":15.25, "y":1.5},
- {"label":"K1F (B4,D2)", "x":16.25, "y":1.5},
- {"label":"K1G (B4,B6)", "x":17.25, "y":1.5},
- {"label":"K1H (B4,F7)", "x":18.5, "y":1.5},
- {"label":"K1I (B4,F0)", "x":19.5, "y":1.5},
- {"label":"K1J (B4,F1)", "x":20.5, "y":1.5},
- {"label":"K1K (B4,F2)", "x":21.5, "y":1.5},
- {"label":"K20 (F3,C2)", "x":0, "y":2.5, "w":1.5},
- {"label":"K21 (F3,C1)", "x":1.5, "y":2.5},
- {"label":"K22 (F3,E0)", "x":2.5, "y":2.5},
- {"label":"K23 (F3,D4)", "x":3.5, "y":2.5},
- {"label":"K24 (F3,D5)", "x":4.5, "y":2.5},
- {"label":"K25 (F3,A4)", "x":5.5, "y":2.5},
- {"label":"K26 (F3,A0)", "x":6.5, "y":2.5},
- {"label":"K27 (F3,B2)", "x":7.5, "y":2.5},
- {"label":"K28 (F3,B0)", "x":8.5, "y":2.5},
- {"label":"K29 (F3,E7)", "x":9.5, "y":2.5},
- {"label":"K2A (F3,E6)", "x":10.5, "y":2.5},
- {"label":"K2B (F3,D6)", "x":11.5, "y":2.5},
- {"label":"K2C (F3,B1)", "x":12.5, "y":2.5},
- {"label":"K2D (F3,B3)", "x":13.75, "y":2.5, "w":1.25, "h":2},
- {"label":"K2E (F3,D3)", "x":15.25, "y":2.5},
- {"label":"K2F (F3,D2)", "x":16.25, "y":2.5},
- {"label":"K2G (F3,B6)", "x":17.25, "y":2.5},
- {"label":"K2H (F3,F7)", "x":18.5, "y":2.5},
- {"label":"K2I (F3,F0)", "x":19.5, "y":2.5},
- {"label":"K2J (F3,F1)", "x":20.5, "y":2.5},
- {"label":"K2K (F3,F2)", "x":21.5, "y":2.5, "h":2},
- {"label":"K30 (F4,C2)", "x":0, "y":3.5, "w":1.75},
- {"label":"K31 (F4,C1)", "x":1.75, "y":3.5},
- {"label":"K32 (F4,E0)", "x":2.75, "y":3.5},
- {"label":"K33 (F4,D4)", "x":3.75, "y":3.5},
- {"label":"K34 (F4,D5)", "x":4.75, "y":3.5},
- {"label":"K35 (F4,A4)", "x":5.75, "y":3.5},
- {"label":"K36 (F4,A0)", "x":6.75, "y":3.5},
- {"label":"K37 (F4,B2)", "x":7.75, "y":3.5},
- {"label":"K38 (F4,B0)", "x":8.75, "y":3.5},
- {"label":"K39 (F4,E7)", "x":9.75, "y":3.5},
- {"label":"K3A (F4,E6)", "x":10.75, "y":3.5},
- {"label":"K3B (F4,D6)", "x":11.75, "y":3.5},
- {"label":"K3D (F4,B3)", "x":12.75, "y":3.5},
- {"label":"K3H (F4,F7)", "x":18.5, "y":3.5},
- {"label":"K3I (F4,F0)", "x":19.5, "y":3.5},
- {"label":"K3J (F4,F1)", "x":20.5, "y":3.5},
- {"label":"K40 (F5,C2)", "x":0, "y":4.5, "w":1.25},
- {"label":"K4E (F5,D3)", "x":1.25, "y":4.5},
- {"label":"K41 (F5,C1)", "x":2.25, "y":4.5},
- {"label":"K42 (F5,E0)", "x":3.25, "y":4.5},
- {"label":"K43 (F5,D4)", "x":4.25, "y":4.5},
- {"label":"K44 (F5,D5)", "x":5.25, "y":4.5},
- {"label":"K45 (F5,A4)", "x":6.25, "y":4.5},
- {"label":"K46 (F5,A0)", "x":7.25, "y":4.5},
- {"label":"K47 (F5,B2)", "x":8.25, "y":4.5},
- {"label":"K48 (F5,B0)", "x":9.25, "y":4.5},
- {"label":"K49 (F5,E7)", "x":10.25, "y":4.5},
- {"label":"K4A (F5,E6)", "x":11.25, "y":4.5},
- {"label":"K4B (F5,D6)", "x":12.25, "y":4.5, "w":2.75},
- {"label":"K4F (F5,D2)", "x":16.25, "y":4.5},
- {"label":"K4H (F5,F7)", "x":18.5, "y":4.5},
- {"label":"K4I (F5,F0)", "x":19.5, "y":4.5},
- {"label":"K4J (F5,F1)", "x":20.5, "y":4.5},
- {"label":"K4K (F5,F2)", "x":21.5, "y":4.5, "h":2},
- {"label":"K50 (F6,C2)", "x":0, "y":5.5, "w":1.25},
- {"label":"K51 (F6,C1)", "x":1.25, "y":5.5, "w":1.25},
- {"label":"K52 (F6,E0)", "x":2.5, "y":5.5, "w":1.25},
- {"label":"K53 (F6,D4)", "x":3.75, "y":5.5, "w":6.25},
- {"label":"K54 (F6,D5)", "x":10, "y":5.5, "w":1.25},
- {"label":"K55 (F6,A4)", "x":11.25, "y":5.5, "w":1.25},
- {"label":"K56 (F6,A0)", "x":12.5, "y":5.5, "w":1.25},
- {"label":"K58 (F6,B0)", "x":13.75, "y":5.5, "w":1.25},
- {"label":"K5E (F6,D3)", "x":15.25, "y":5.5},
- {"label":"K5F (F6,D2)", "x":16.25, "y":5.5},
- {"label":"K5G (F6,B6)", "x":17.25, "y":5.5},
- {"label":"K5I (F6,F0)", "x":18.5, "y":5.5, "w":2},
- {"label":"K5J (F6,F1)", "x":20.5, "y":5.5}
+ {"matrix": [0, 0], "x": 0, "y": 0},
+
+ {"matrix": [0, 1], "x": 2, "y": 0},
+ {"matrix": [0, 2], "x": 3, "y": 0},
+ {"matrix": [0, 3], "x": 4, "y": 0},
+ {"matrix": [0, 4], "x": 5, "y": 0},
+
+ {"matrix": [0, 5], "x": 6.5, "y": 0},
+ {"matrix": [0, 6], "x": 7.5, "y": 0},
+ {"matrix": [0, 7], "x": 8.5, "y": 0},
+ {"matrix": [0, 8], "x": 9.5, "y": 0},
+
+ {"matrix": [0, 9], "x": 11, "y": 0},
+ {"matrix": [0, 10], "x": 12, "y": 0},
+ {"matrix": [0, 11], "x": 13, "y": 0},
+ {"matrix": [0, 12], "x": 14, "y": 0},
+
+ {"matrix": [0, 14], "x": 15.25, "y": 0},
+ {"matrix": [0, 15], "x": 16.25, "y": 0},
+ {"matrix": [0, 16], "x": 17.25, "y": 0},
+
+ {"matrix": [1, 0], "x": 0, "y": 1.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, "w": 2},
+
+ {"matrix": [1, 14], "x": 15.25, "y": 1.5},
+ {"matrix": [1, 15], "x": 16.25, "y": 1.5},
+ {"matrix": [1, 16], "x": 17.25, "y": 1.5},
+
+ {"matrix": [1, 17], "x": 18.5, "y": 1.5},
+ {"matrix": [1, 18], "x": 19.5, "y": 1.5},
+ {"matrix": [1, 19], "x": 20.5, "y": 1.5},
+ {"matrix": [1, 20], "x": 21.5, "y": 1.5},
+
+ {"matrix": [2, 0], "x": 0, "y": 2.5, "w": 1.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], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2},
+
+ {"matrix": [2, 14], "x": 15.25, "y": 2.5},
+ {"matrix": [2, 15], "x": 16.25, "y": 2.5},
+ {"matrix": [2, 16], "x": 17.25, "y": 2.5},
+
+ {"matrix": [2, 17], "x": 18.5, "y": 2.5},
+ {"matrix": [2, 18], "x": 19.5, "y": 2.5},
+ {"matrix": [2, 19], "x": 20.5, "y": 2.5},
+ {"matrix": [2, 20], "x": 21.5, "y": 2.5, "h": 2},
+
+ {"matrix": [3, 0], "x": 0, "y": 3.5, "w": 1.75},
+ {"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, 13], "x": 12.75, "y": 3.5},
+
+ {"matrix": [3, 17], "x": 18.5, "y": 3.5},
+ {"matrix": [3, 18], "x": 19.5, "y": 3.5},
+ {"matrix": [3, 19], "x": 20.5, "y": 3.5},
+
+ {"matrix": [4, 0], "x": 0, "y": 4.5, "w": 1.25},
+ {"matrix": [4, 14], "x": 1.25, "y": 4.5},
+ {"matrix": [4, 1], "x": 2.25, "y": 4.5},
+ {"matrix": [4, 2], "x": 3.25, "y": 4.5},
+ {"matrix": [4, 3], "x": 4.25, "y": 4.5},
+ {"matrix": [4, 4], "x": 5.25, "y": 4.5},
+ {"matrix": [4, 5], "x": 6.25, "y": 4.5},
+ {"matrix": [4, 6], "x": 7.25, "y": 4.5},
+ {"matrix": [4, 7], "x": 8.25, "y": 4.5},
+ {"matrix": [4, 8], "x": 9.25, "y": 4.5},
+ {"matrix": [4, 9], "x": 10.25, "y": 4.5},
+ {"matrix": [4, 10], "x": 11.25, "y": 4.5},
+ {"matrix": [4, 11], "x": 12.25, "y": 4.5, "w": 2.75},
+
+ {"matrix": [4, 15], "x": 16.25, "y": 4.5},
+
+ {"matrix": [4, 17], "x": 18.5, "y": 4.5},
+ {"matrix": [4, 18], "x": 19.5, "y": 4.5},
+ {"matrix": [4, 19], "x": 20.5, "y": 4.5},
+ {"matrix": [4, 20], "x": 21.5, "y": 4.5, "h": 2},
+
+ {"matrix": [5, 0], "x": 0, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 1], "x": 1.25, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 2], "x": 2.5, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 3], "x": 3.75, "y": 5.5, "w": 6.25},
+ {"matrix": [5, 4], "x": 10, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 5], "x": 11.25, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 6], "x": 12.5, "y": 5.5, "w": 1.25},
+ {"matrix": [5, 8], "x": 13.75, "y": 5.5, "w": 1.25},
+
+ {"matrix": [5, 14], "x": 15.25, "y": 5.5},
+ {"matrix": [5, 15], "x": 16.25, "y": 5.5},
+ {"matrix": [5, 16], "x": 17.25, "y": 5.5},
+
+ {"matrix": [5, 18], "x": 18.5, "y": 5.5, "w": 2},
+ {"matrix": [5, 19], "x": 20.5, "y": 5.5}
]
}
}
diff --git a/keyboards/handwired/oem_iso_fullsize/oem_iso_fullsize.c b/keyboards/handwired/oem_iso_fullsize/oem_iso_fullsize.c
deleted file mode 100644
index 62690ef673..0000000000
--- a/keyboards/handwired/oem_iso_fullsize/oem_iso_fullsize.c
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2021 andresteare
- *
- * 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 "oem_iso_fullsize.h"
-
-// generated by KBFirmware JSON to QMK Parser
-// https://noroadsleft.github.io/kbf_qmk_converter/
diff --git a/keyboards/handwired/oem_iso_fullsize/oem_iso_fullsize.h b/keyboards/handwired/oem_iso_fullsize/oem_iso_fullsize.h
deleted file mode 100644
index 4f8c898038..0000000000
--- a/keyboards/handwired/oem_iso_fullsize/oem_iso_fullsize.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright 2021 andresteare
- *
- * 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 "quantum.h"
-
-#define LAYOUT( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3H, K3I, K3J, \
- K40, K4E, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4F, K4H, K4I, K4J, K4K, \
- K50, K51, K52, K53, K54, K55, K56, K58, K5E, K5F, K5G, K5I, K5J \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F, K0G, KC_NO, KC_NO, KC_NO, KC_NO }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, KC_NO, KC_NO, KC_NO, K3H, K3I, K3J, KC_NO }, \
- { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, KC_NO, KC_NO, K4E, K4F, KC_NO, K4H, K4I, K4J, K4K }, \
- { K50, K51, K52, K53, K54, K55, K56, KC_NO, K58, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K5E, K5F, K5G, KC_NO, K5I, K5J, KC_NO }, \
-}
-
-// generated by KBFirmware JSON to QMK Parser
-// https://noroadsleft.github.io/kbf_qmk_converter/