From 45d060805ecd53e92955bfaeccb7b135fb38387d Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Tue, 6 Jun 2023 14:46:15 -0700 Subject: [PATCH 01/46] xelus/rs108: correct layout data (#21146) --- keyboards/xelus/rs108/info.json | 72 ++++++++++++++++----------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/keyboards/xelus/rs108/info.json b/keyboards/xelus/rs108/info.json index 62377018b6f8..fd2358d68dd3 100644 --- a/keyboards/xelus/rs108/info.json +++ b/keyboards/xelus/rs108/info.json @@ -96,25 +96,25 @@ {"matrix": [5, 8], "x": 18.5, "y": 2.25}, {"matrix": [4, 9], "x": 19.5, "y": 2.25}, {"matrix": [5, 9], "x": 20.5, "y": 2.25}, - {"matrix": [6, 0], "x": 21.5, "y": 2.25, "h": 2}, - - {"matrix": [7, 0], "x": 0, "y": 3.25, "w": 1.75}, - {"matrix": [6, 1], "x": 1.75, "y": 3.25}, - {"matrix": [7, 1], "x": 2.75, "y": 3.25}, - {"matrix": [6, 2], "x": 3.75, "y": 3.25}, - {"matrix": [7, 2], "x": 4.75, "y": 3.25}, - {"matrix": [6, 3], "x": 5.75, "y": 3.25}, - {"matrix": [7, 3], "x": 6.75, "y": 3.25}, - {"matrix": [6, 4], "x": 7.75, "y": 3.25}, - {"matrix": [7, 4], "x": 8.75, "y": 3.25}, - {"matrix": [6, 5], "x": 9.75, "y": 3.25}, - {"matrix": [7, 5], "x": 10.75, "y": 3.25}, - {"matrix": [7, 6], "x": 11.75, "y": 3.25}, - {"matrix": [7, 8], "x": 12.75, "y": 3.25, "w": 2.25}, - - {"matrix": [6, 9], "x": 18.5, "y": 3.25}, - {"matrix": [7, 9], "x": 19.5, "y": 3.25}, - {"matrix": [6, 10], "x": 20.5, "y": 3.25}, + + {"matrix": [6, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [7, 0], "x": 1.75, "y": 3.25}, + {"matrix": [6, 1], "x": 2.75, "y": 3.25}, + {"matrix": [7, 1], "x": 3.75, "y": 3.25}, + {"matrix": [6, 2], "x": 4.75, "y": 3.25}, + {"matrix": [7, 2], "x": 5.75, "y": 3.25}, + {"matrix": [6, 3], "x": 6.75, "y": 3.25}, + {"matrix": [7, 3], "x": 7.75, "y": 3.25}, + {"matrix": [6, 4], "x": 8.75, "y": 3.25}, + {"matrix": [7, 4], "x": 9.75, "y": 3.25}, + {"matrix": [6, 5], "x": 10.75, "y": 3.25}, + {"matrix": [7, 5], "x": 11.75, "y": 3.25}, + {"matrix": [7, 6], "x": 12.75, "y": 3.25, "w": 2.25}, + + {"matrix": [7, 8], "x": 18.5, "y": 3.25}, + {"matrix": [6, 9], "x": 19.5, "y": 3.25}, + {"matrix": [7, 9], "x": 20.5, "y": 3.25}, + {"matrix": [6, 10], "x": 21.5, "y": 2.25, "h": 2}, {"matrix": [8, 0], "x": 0, "y": 4.25, "w": 2.25}, {"matrix": [9, 0], "x": 2.25, "y": 4.25}, @@ -134,23 +134,23 @@ {"matrix": [9, 8], "x": 18.5, "y": 4.25}, {"matrix": [8, 9], "x": 19.5, "y": 4.25}, {"matrix": [9, 9], "x": 20.5, "y": 4.25}, - {"matrix": [10, 0], "x": 21.5, "y": 4.25, "h": 2}, - - {"matrix": [11, 0], "x": 0, "y": 5.25, "w": 1.25}, - {"matrix": [10, 1], "x": 1.25, "y": 5.25, "w": 1.25}, - {"matrix": [11, 2], "x": 2.5, "y": 5.25, "w": 1.25}, - {"matrix": [11, 4], "x": 3.75, "y": 5.25, "w": 6.25}, - {"matrix": [10, 5], "x": 10, "y": 5.25, "w": 1.25}, - {"matrix": [10, 6], "x": 11.25, "y": 5.25, "w": 1.25}, - {"matrix": [11, 6], "x": 12.5, "y": 5.25, "w": 1.25}, - {"matrix": [10, 7], "x": 13.75, "y": 5.25, "w": 1.25}, - - {"matrix": [11, 7], "x": 15.25, "y": 5.25}, - {"matrix": [10, 8], "x": 16.25, "y": 5.25}, - {"matrix": [10, 9], "x": 17.25, "y": 5.25}, - - {"matrix": [11, 9], "x": 18.5, "y": 5.25, "w": 2}, - {"matrix": [10, 10], "x": 20.5, "y": 5.25} + + {"matrix": [10, 0], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [11, 0], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [10, 1], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [11, 2], "x": 3.75, "y": 5.25, "w": 6.25}, + {"matrix": [11, 4], "x": 10, "y": 5.25, "w": 1.25}, + {"matrix": [10, 5], "x": 11.25, "y": 5.25, "w": 1.25}, + {"matrix": [10, 6], "x": 12.5, "y": 5.25, "w": 1.25}, + {"matrix": [11, 6], "x": 13.75, "y": 5.25, "w": 1.25}, + {"matrix": [10, 7], "x": 15.25, "y": 5.25}, + + {"matrix": [11, 7], "x": 16.25, "y": 5.25}, + {"matrix": [10, 8], "x": 17.25, "y": 5.25}, + {"matrix": [10, 9], "x": 18.5, "y": 5.25, "w": 2}, + + {"matrix": [11, 9], "x": 20.5, "y": 5.25}, + {"matrix": [10, 10], "x": 21.5, "y": 4.25, "h": 2} ] } } From bb57aa28e511f069c7c6403d1582be828e4ac9f7 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Tue, 6 Jun 2023 14:54:31 -0700 Subject: [PATCH 02/46] peej/tripel: correct layout data (#21145) Corrects the layout data for all three versions of the Peej Tripel. --- keyboards/peej/tripel/left/info.json | 2 +- keyboards/peej/tripel/middle/info.json | 2 +- keyboards/peej/tripel/right/info.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/peej/tripel/left/info.json b/keyboards/peej/tripel/left/info.json index b938ef9b9a34..e9833e2464bc 100644 --- a/keyboards/peej/tripel/left/info.json +++ b/keyboards/peej/tripel/left/info.json @@ -70,7 +70,7 @@ {"matrix": [5, 7], "x": 1, "y": 4}, {"matrix": [4, 6], "x": 2, "y": 4}, {"matrix": [4, 7], "x": 3, "y": 4}, - {"matrix": [7, 6], "x": 7, "y": 4, "w": 7}, + {"matrix": [7, 6], "x": 4, "y": 4, "w": 7}, {"matrix": [2, 7], "x": 11, "y": 4}, {"matrix": [1, 6], "x": 12, "y": 4}, {"matrix": [1, 7], "x": 13, "y": 4}, diff --git a/keyboards/peej/tripel/middle/info.json b/keyboards/peej/tripel/middle/info.json index b1bdf10f82e5..98d854e4893a 100644 --- a/keyboards/peej/tripel/middle/info.json +++ b/keyboards/peej/tripel/middle/info.json @@ -70,7 +70,7 @@ {"matrix": [2, 7], "x": 1, "y": 4}, {"matrix": [1, 6], "x": 2, "y": 4}, {"matrix": [1, 7], "x": 3, "y": 4}, - {"matrix": [4, 6], "x": 7, "y": 4, "w": 7}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, {"matrix": [8, 7], "x": 11, "y": 4}, {"matrix": [7, 6], "x": 12, "y": 4}, {"matrix": [7, 7], "x": 13, "y": 4}, diff --git a/keyboards/peej/tripel/right/info.json b/keyboards/peej/tripel/right/info.json index 9916d317f2fc..c9f31f46797f 100644 --- a/keyboards/peej/tripel/right/info.json +++ b/keyboards/peej/tripel/right/info.json @@ -70,7 +70,7 @@ {"matrix": [8, 7], "x": 1, "y": 4}, {"matrix": [7, 6], "x": 2, "y": 4}, {"matrix": [7, 7], "x": 3, "y": 4}, - {"matrix": [1, 6], "x": 7, "y": 4, "w": 7}, + {"matrix": [1, 6], "x": 4, "y": 4, "w": 7}, {"matrix": [5, 7], "x": 11, "y": 4}, {"matrix": [4, 6], "x": 12, "y": 4}, {"matrix": [4, 7], "x": 13, "y": 4}, From ae0342c12a1d0a097efb848dd8f4cb726ef2697d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Mart=C3=ADnez?= <58857054+elpekenin@users.noreply.github.com> Date: Thu, 8 Jun 2023 00:59:13 +0200 Subject: [PATCH 03/46] [Bugfix] LVGL bindings wrong offset math (#21147) --- quantum/painter/lvgl/qp_lvgl.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/quantum/painter/lvgl/qp_lvgl.c b/quantum/painter/lvgl/qp_lvgl.c index 660ffb610083..6cc0061d73ba 100644 --- a/quantum/painter/lvgl/qp_lvgl.c +++ b/quantum/painter/lvgl/qp_lvgl.c @@ -112,9 +112,6 @@ bool qp_lvgl_attach(painter_device_t device) { uint16_t panel_width, panel_height, offset_x, offset_y; qp_get_geometry(selected_display, &panel_width, &panel_height, NULL, &offset_x, &offset_y); - panel_width -= offset_x; - panel_height -= offset_y; - // Setting up display driver static lv_disp_drv_t disp_drv; /*Descriptor of a display driver*/ lv_disp_drv_init(&disp_drv); /*Basic initialization*/ From 57c5f3e6743789d8aeb4fb8a45a13e04ff8de31d Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:55:49 -0700 Subject: [PATCH 04/46] poker87d: correct layout data (#21159) --- keyboards/poker87d/info.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/poker87d/info.json b/keyboards/poker87d/info.json index 98cb25d91c68..3e0ea91fdc78 100644 --- a/keyboards/poker87d/info.json +++ b/keyboards/poker87d/info.json @@ -89,7 +89,7 @@ {"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, "w": 1.25}, + {"matrix": [2, 12], "x": 12.5, "y": 2.5}, {"matrix": [2, 14], "x": 15.25, "y": 2.5}, {"matrix": [5, 13], "x": 16.25, "y": 2.5}, From dffbe1e655dff573547b8b0182ef489dc0d18f28 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:57:05 -0700 Subject: [PATCH 05/46] monoflex60: fix LAYOUT_60_iso_tsangan implementation (#21158) --- keyboards/monoflex60/info.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/keyboards/monoflex60/info.json b/keyboards/monoflex60/info.json index f7ed4b0938de..39c2546bba96 100644 --- a/keyboards/monoflex60/info.json +++ b/keyboards/monoflex60/info.json @@ -191,21 +191,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": [1, 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": [1, 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}, From f136171753dbdf005cf8a75c01ac89772ffd5d8a Mon Sep 17 00:00:00 2001 From: biuboom-jun <65760331+biuboom-jun@users.noreply.github.com> Date: Thu, 8 Jun 2023 09:03:17 +0800 Subject: [PATCH 06/46] add kibou/wendy (#21150) --- keyboards/kibou/wendy/info.json | 126 ++++++++++++++++++ .../kibou/wendy/keymaps/default/keymap.c | 14 ++ keyboards/kibou/wendy/keymaps/via/keymap.c | 14 ++ keyboards/kibou/wendy/keymaps/via/rules.mk | 1 + keyboards/kibou/wendy/readme.md | 23 ++++ keyboards/kibou/wendy/rules.mk | 1 + 6 files changed, 179 insertions(+) create mode 100644 keyboards/kibou/wendy/info.json create mode 100644 keyboards/kibou/wendy/keymaps/default/keymap.c create mode 100644 keyboards/kibou/wendy/keymaps/via/keymap.c create mode 100644 keyboards/kibou/wendy/keymaps/via/rules.mk create mode 100644 keyboards/kibou/wendy/readme.md create mode 100644 keyboards/kibou/wendy/rules.mk diff --git a/keyboards/kibou/wendy/info.json b/keyboards/kibou/wendy/info.json new file mode 100644 index 000000000000..4277cc03bd2b --- /dev/null +++ b/keyboards/kibou/wendy/info.json @@ -0,0 +1,126 @@ +{ + "manufacturer": "kibou", + "keyboard_name": "wendy", + "maintainer": "kibou", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["B11", "B10", "B2", "B1", "B0", "A7", "A6", "A5", "A4", "A10", "A9", "A8", "A3", "B15", "B14", "B7", "B9", "B6"], + "rows": ["B4", "B3", "A15", "B13", "B8", "B5"] + }, + "processor": "STM32F072", + "url": "https://kibou.store/", + "usb": { + "device_version": "0.0.1", + "pid": "0xA001", + "vid": "0x586A" + }, + "indicators": { + "caps_lock": "B12" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0,0], "x":0, "y":0}, + {"matrix": [0,1], "x":1.25, "y":0}, + {"matrix": [0,2], "x":2.25, "y":0}, + {"matrix": [0,3], "x":3.25, "y":0}, + {"matrix": [0,4], "x":4.25, "y":0}, + {"matrix": [0,5], "x":5.5, "y":0}, + {"matrix": [0,6], "x":6.5, "y":0}, + {"matrix": [0,7], "x":7.5, "y":0}, + {"matrix": [0,8], "x":8.5, "y":0}, + {"matrix": [0,10], "x":9.75, "y":0}, + {"matrix": [0,11], "x":10.75, "y":0}, + {"matrix": [0,12], "x":11.75, "y":0}, + {"matrix": [0,13], "x":12.75, "y":0}, + {"matrix": [0,15], "x":15.25, "y":0}, + {"matrix": [0,16], "x":16.25, "y":0}, + {"matrix": [0,17], "x":17.25, "y":0}, + {"matrix": [1,0], "x":0, "y":1.25}, + {"matrix": [1,1], "x":1, "y":1.25}, + {"matrix": [1,2], "x":2, "y":1.25}, + {"matrix": [1,3], "x":3, "y":1.25}, + {"matrix": [1,4], "x":4, "y":1.25}, + {"matrix": [1,5], "x":5, "y":1.25}, + {"matrix": [1,6], "x":6, "y":1.25}, + {"matrix": [1,7], "x":7, "y":1.25}, + {"matrix": [1,8], "x":8, "y":1.25}, + {"matrix": [1,9], "x":9, "y":1.25}, + {"matrix": [1,10], "x":10, "y":1.25}, + {"matrix": [1,11], "x":11, "y":1.25}, + {"matrix": [1,12], "x":12, "y":1.25}, + {"matrix": [1,13], "x":13, "y":1.25}, + {"matrix": [1,14], "x":14, "y":1.25}, + {"matrix": [1,15], "x":15.25, "y":1.25}, + {"matrix": [1,16], "x":16.25, "y":1.25}, + {"matrix": [1,17], "x":17.25, "y":1.25}, + {"matrix": [2,0], "x":0, "y":2.25, "w":1.5}, + {"matrix": [2,1], "x":1.5, "y":2.25}, + {"matrix": [2,2], "x":2.5, "y":2.25}, + {"matrix": [2,3], "x":3.5, "y":2.25}, + {"matrix": [2,4], "x":4.5, "y":2.25}, + {"matrix": [2,5], "x":5.5, "y":2.25}, + {"matrix": [2,6], "x":6.5, "y":2.25}, + {"matrix": [2,7], "x":7.5, "y":2.25}, + {"matrix": [2,8], "x":8.5, "y":2.25}, + {"matrix": [2,9], "x":9.5, "y":2.25}, + {"matrix": [2,10], "x":10.5, "y":2.25}, + {"matrix": [2,11], "x":11.5, "y":2.25}, + {"matrix": [2,12], "x":12.5, "y":2.25}, + {"matrix": [2,13], "x":13.5, "y":2.25, "w":1.5}, + {"matrix": [3,14], "x":13.75, "y":2.25, "w":1.25, "h":2}, + {"matrix": [2,15], "x":15.25, "y":2.25}, + {"matrix": [2,16], "x":16.25, "y":2.25}, + {"matrix": [2,17], "x":17.25, "y":2.25}, + {"matrix": [3,0], "x":0, "y":3.25, "w":1.75}, + {"matrix": [3,1], "x":1.75, "y":3.25}, + {"matrix": [3,2], "x":2.75, "y":3.25}, + {"matrix": [3,3], "x":3.75, "y":3.25}, + {"matrix": [3,4], "x":4.75, "y":3.25}, + {"matrix": [3,5], "x":5.75, "y":3.25}, + {"matrix": [3,6], "x":6.75, "y":3.25}, + {"matrix": [3,7], "x":7.75, "y":3.25}, + {"matrix": [3,8], "x":8.75, "y":3.25}, + {"matrix": [3,9], "x":9.75, "y":3.25}, + {"matrix": [3,10], "x":10.75, "y":3.25}, + {"matrix": [3,11], "x":11.75, "y":3.25}, + {"matrix": [3,13], "x":12.75, "y":3.25}, + {"matrix": [4,0], "x":0, "y":4.25, "w":1.25}, + {"matrix": [4,1], "x":1.25, "y":4.25}, + {"matrix": [4,2], "x":2.25, "y":4.25}, + {"matrix": [4,3], "x":3.25, "y":4.25}, + {"matrix": [4,4], "x":4.25, "y":4.25}, + {"matrix": [4,5], "x":5.25, "y":4.25}, + {"matrix": [4,6], "x":6.25, "y":4.25}, + {"matrix": [4,7], "x":7.25, "y":4.25}, + {"matrix": [4,8], "x":8.25, "y":4.25}, + {"matrix": [4,9], "x":9.25, "y":4.25}, + {"matrix": [4,10], "x":10.25, "y":4.25}, + {"matrix": [4,11], "x":11.25, "y":4.25}, + {"matrix": [4,12], "x":12.25, "y":4.25, "w":1.75}, + {"matrix": [4,14], "x":14, "y":4.25}, + {"matrix": [4,16], "x":16.25, "y":4.25}, + {"matrix": [5,0], "x":0, "y":5.25, "w":1.25}, + {"matrix": [5,1], "x":1.25, "y":5.25, "w":1.25}, + {"matrix": [5,2], "x":2.5, "y":5.25, "w":1.25}, + {"matrix": [5,6], "x":3.75, "y":5.25, "w":6.25}, + {"matrix": [5,10], "x":10, "y":5.25, "w":1.25}, + {"matrix": [5,11], "x":11.25, "y":5.25, "w":1.25}, + {"matrix": [5,12], "x":12.5, "y":5.25, "w":1.25}, + {"matrix": [5,14], "x":13.75, "y":5.25, "w":1.25}, + {"matrix": [5,15], "x":15.25, "y":5.25}, + {"matrix": [5,16], "x":16.25, "y":5.25}, + {"matrix": [5,17], "x":17.25, "y":5.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/kibou/wendy/keymaps/default/keymap.c b/keyboards/kibou/wendy/keymaps/default/keymap.c new file mode 100644 index 000000000000..f7618e9a0867 --- /dev/null +++ b/keyboards/kibou/wendy/keymaps/default/keymap.c @@ -0,0 +1,14 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_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_BSLS, KC_DEL, 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_NO, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_NO, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_MENU, KC_LCTL, KC_LEFT, KC_DOWN, KC_RIGHT) +}; diff --git a/keyboards/kibou/wendy/keymaps/via/keymap.c b/keyboards/kibou/wendy/keymaps/via/keymap.c new file mode 100644 index 000000000000..f7618e9a0867 --- /dev/null +++ b/keyboards/kibou/wendy/keymaps/via/keymap.c @@ -0,0 +1,14 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_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_BSLS, KC_DEL, 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_NO, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_NO, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_MENU, KC_LCTL, KC_LEFT, KC_DOWN, KC_RIGHT) +}; diff --git a/keyboards/kibou/wendy/keymaps/via/rules.mk b/keyboards/kibou/wendy/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/kibou/wendy/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/kibou/wendy/readme.md b/keyboards/kibou/wendy/readme.md new file mode 100644 index 000000000000..a190d03047c7 --- /dev/null +++ b/keyboards/kibou/wendy/readme.md @@ -0,0 +1,23 @@ +# wendy + +* Keyboard Maintainer: [wendy](https://kibou.store/) +* Hardware Supported: wendy PCBs, STM32F072 +* Hardware Availability: https://kibou.store/ + +Make example for this keyboard (after setting up your build environment): + + make kibou/wendy:default + +Flashing example for this keyboard: + + make kibou/wendy: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 diff --git a/keyboards/kibou/wendy/rules.mk b/keyboards/kibou/wendy/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/kibou/wendy/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From d042b92e7a78b0f5c2d39e51826df6417530a487 Mon Sep 17 00:00:00 2001 From: NortonTech Date: Wed, 7 Jun 2023 19:47:06 -0600 Subject: [PATCH 07/46] Add NortonTech handwired keypad (NortonTechPad) (#21148) --- keyboards/handwired/nortontechpad/config.h | 24 +++++++++ keyboards/handwired/nortontechpad/info.json | 53 +++++++++++++++++++ .../nortontechpad/keymaps/default/keymap.c | 27 ++++++++++ .../nortontechpad/keymaps/via/keymap.c | 27 ++++++++++ .../nortontechpad/keymaps/via/rules.mk | 1 + keyboards/handwired/nortontechpad/readme.md | 27 ++++++++++ keyboards/handwired/nortontechpad/rules.mk | 1 + 7 files changed, 160 insertions(+) create mode 100644 keyboards/handwired/nortontechpad/config.h create mode 100644 keyboards/handwired/nortontechpad/info.json create mode 100644 keyboards/handwired/nortontechpad/keymaps/default/keymap.c create mode 100644 keyboards/handwired/nortontechpad/keymaps/via/keymap.c create mode 100644 keyboards/handwired/nortontechpad/keymaps/via/rules.mk create mode 100644 keyboards/handwired/nortontechpad/readme.md create mode 100644 keyboards/handwired/nortontechpad/rules.mk diff --git a/keyboards/handwired/nortontechpad/config.h b/keyboards/handwired/nortontechpad/config.h new file mode 100644 index 000000000000..48ea26f0058a --- /dev/null +++ b/keyboards/handwired/nortontechpad/config.h @@ -0,0 +1,24 @@ +/* Copyright 2020 Joel Schneider + * + * 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 . + */ + +#pragma once + +/* 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 + diff --git a/keyboards/handwired/nortontechpad/info.json b/keyboards/handwired/nortontechpad/info.json new file mode 100644 index 000000000000..51871b42e32b --- /dev/null +++ b/keyboards/handwired/nortontechpad/info.json @@ -0,0 +1,53 @@ +{ + "keyboard_name": "NortonTechPad", + "manufacturer": "NortonTech", + "url": "", + "maintainer": "NortonTech", + "usb": { + "vid": "0x9879", + "pid": "0x0001", + "device_version": "0.0.1" + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["D7", "E6", "B4", "B5"], + "rows": ["F7", "B1", "B3", "B2", "B6"] + }, + "diode_direction": "COL2ROW", + "development_board": "promicro", + "community_layouts": ["numpad_5x4"], + "layouts": { + "LAYOUT_numpad_5x4": { + "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": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [1, 3], "x": 3, "y": 1, "h": 2}, + + + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + + + {"matrix": [4, 0], "x": 0, "y": 4, "w": 2}, + {"matrix": [4, 2], "x": 2, "y": 4}, + {"matrix": [4, 3], "x": 3, "y": 3, "h": 2} + ] + } + } +} diff --git a/keyboards/handwired/nortontechpad/keymaps/default/keymap.c b/keyboards/handwired/nortontechpad/keymaps/default/keymap.c new file mode 100644 index 000000000000..dca76ce990d5 --- /dev/null +++ b/keyboards/handwired/nortontechpad/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2020 Joel Schneider + * + * 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 . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_numpad_5x4( + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, + KC_P0, KC_PDOT, KC_PENT + ) +}; diff --git a/keyboards/handwired/nortontechpad/keymaps/via/keymap.c b/keyboards/handwired/nortontechpad/keymaps/via/keymap.c new file mode 100644 index 000000000000..dca76ce990d5 --- /dev/null +++ b/keyboards/handwired/nortontechpad/keymaps/via/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2020 Joel Schneider + * + * 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 . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_numpad_5x4( + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, + KC_P0, KC_PDOT, KC_PENT + ) +}; diff --git a/keyboards/handwired/nortontechpad/keymaps/via/rules.mk b/keyboards/handwired/nortontechpad/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/handwired/nortontechpad/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/handwired/nortontechpad/readme.md b/keyboards/handwired/nortontechpad/readme.md new file mode 100644 index 000000000000..6aacc8d72ae6 --- /dev/null +++ b/keyboards/handwired/nortontechpad/readme.md @@ -0,0 +1,27 @@ +# NortonTechPad + + + +The NortonTechPad is a numpad inspired by the SiCK-Pad,it is also 3D printed and designed to be inexpensive. + +- Keyboard Maintainer: [NortonTech](https://github.com/NortonTech-Official) +- Hardware Supported: Pro Micro + + +Make example for this keyboard (after setting up your build environment): + + make handwired/nortontechpad:default + +Flashing example for this keyboard: + + make handwired/nortontechpad:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the top left key and plug in the keyboard. This will also clear EEPROM, so it is a good first step if the keyboard is misbehaving. +* **Physical reset button**: Short the GND and RST pins on the Pro Micro with something conductive. +* **Keycode in layout**: There is no key mapped to `QK_BOOT` in the pre-created keymaps, but you may assign this key in any keymaps you create. diff --git a/keyboards/handwired/nortontechpad/rules.mk b/keyboards/handwired/nortontechpad/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/nortontechpad/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 4c6c387724c5fb17e0cd01784565bedb059fd3ad Mon Sep 17 00:00:00 2001 From: Albert Y <76888457+filterpaper@users.noreply.github.com> Date: Thu, 8 Jun 2023 17:10:30 +0800 Subject: [PATCH 08/46] Add an emphasis on QMK MSYS terminal (#21168) * Add an emphasis on QMK MSYS terminal Not using MSYS terminal is a frequent user error. This change adds an additional statement to guide users to run the first command in MSYS itself. Edited the same statement for consistency in the other OSes. * Update instructions for the other operating systems --- docs/newbs_getting_started.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/newbs_getting_started.md b/docs/newbs_getting_started.md index b0d28d89d163..a16207f267b1 100644 --- a/docs/newbs_getting_started.md +++ b/docs/newbs_getting_started.md @@ -120,7 +120,7 @@ NOTE: remember to follow the instructions printed at the end of installation (us ### ** Windows ** -After installing QMK you can set it up with this command: +Open QMK MSYS and run the following command: qmk setup @@ -128,7 +128,7 @@ In most situations you will want to answer `y` to all of the prompts. ### ** macOS ** -After installing QMK you can set it up with this command: +Open Terminal and run the following command: qmk setup @@ -136,7 +136,7 @@ In most situations you will want to answer `y` to all of the prompts. ### ** Linux/WSL ** -After installing QMK you can set it up with this command: +Open your preferred terminal app and run the following command: qmk setup @@ -150,7 +150,7 @@ Luckily, the fix is easy. Run this as your user: `echo 'PATH="$HOME/.local/bin:$ ### ** FreeBSD ** -After installing QMK you can set it up with this command: +Open your preferred terminal app and run the following command: qmk setup From a9f677b5186f1b998dd987a4a1a2ae79eb3cf72e Mon Sep 17 00:00:00 2001 From: Ryan Date: Fri, 9 Jun 2023 06:08:02 +1000 Subject: [PATCH 09/46] Slightly refine `g_led_config` parsing (#21170) --- lib/python/qmk/c_parse.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/python/qmk/c_parse.py b/lib/python/qmk/c_parse.py index 7dd464bd3418..08d23cf5ba9f 100644 --- a/lib/python/qmk/c_parse.py +++ b/lib/python/qmk/c_parse.py @@ -241,19 +241,24 @@ def _parse_led_config(file, matrix_cols, matrix_rows): position_raw = [] flags = [] - found_led_config = False + found_led_config_t = False + found_g_led_config = False bracket_count = 0 section = 0 current_row_index = 0 current_row = [] for _type, value in lex(_preprocess_c_file(file), CLexer()): - # Assume g_led_config..stuff..; - if value == 'g_led_config': - found_led_config = True + if not found_g_led_config: + # Check for type + if value == 'led_config_t': + found_led_config_t = True + # Type found, now check for name + elif found_led_config_t and value == 'g_led_config': + found_g_led_config = True elif value == ';': - found_led_config = False - elif found_led_config: + found_g_led_config = False + else: # Assume bracket count hints to section of config we are within if value == '{': bracket_count += 1 From 232281946d1baab9db4da3f5f6da210792c4c184 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 8 Jun 2023 21:46:09 -0400 Subject: [PATCH 10/46] Adds Planck Rev 7 & Updates rev6_drop to Matrix Lite Implementation (#21175) * adds planck/rev7 * Remove config.h include Co-authored-by: Drashna Jaelre * convert planck matrices to lite implementation --------- Co-authored-by: Drashna Jaelre --- keyboards/planck/readme.md | 2 +- keyboards/planck/rev6_drop/matrix.c | 159 ++------- keyboards/planck/rev6_drop/rules.mk | 2 +- keyboards/planck/rev7/chconf.h | 29 ++ keyboards/planck/rev7/config.h | 53 +++ keyboards/planck/rev7/halconf.h | 24 ++ keyboards/planck/rev7/info.json | 322 ++++++++++++++++++ .../planck/rev7/keymaps/default/config.h | 49 +++ .../planck/rev7/keymaps/default/keymap.c | 315 +++++++++++++++++ .../planck/rev7/keymaps/default/rules.mk | 1 + keyboards/planck/rev7/matrix.c | 173 ++++++++++ keyboards/planck/rev7/mcuconf.h | 51 +++ keyboards/planck/rev7/readme.md | 31 ++ keyboards/planck/rev7/rev7.c | 74 ++++ keyboards/planck/rev7/rules.mk | 9 + 15 files changed, 1164 insertions(+), 130 deletions(-) create mode 100644 keyboards/planck/rev7/chconf.h create mode 100644 keyboards/planck/rev7/config.h create mode 100644 keyboards/planck/rev7/halconf.h create mode 100644 keyboards/planck/rev7/info.json create mode 100644 keyboards/planck/rev7/keymaps/default/config.h create mode 100644 keyboards/planck/rev7/keymaps/default/keymap.c create mode 100644 keyboards/planck/rev7/keymaps/default/rules.mk create mode 100644 keyboards/planck/rev7/matrix.c create mode 100644 keyboards/planck/rev7/mcuconf.h create mode 100644 keyboards/planck/rev7/readme.md create mode 100644 keyboards/planck/rev7/rev7.c create mode 100644 keyboards/planck/rev7/rules.mk diff --git a/keyboards/planck/readme.md b/keyboards/planck/readme.md index 748c2514788a..797774dc0a15 100644 --- a/keyboards/planck/readme.md +++ b/keyboards/planck/readme.md @@ -6,7 +6,7 @@ Planck A compact 40% (12x4) ortholinear keyboard kit made and sold by OLKB and Massdrop. [More info on qmk.fm](http://qmk.fm/planck/) Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert) -Hardware Supported: Planck PCB rev1, rev2, rev3, rev4, rev5, rev6; Planck Light, Planck EZ +Hardware Supported: Planck PCB rev1, rev2, rev3, rev4, rev5, rev6, rev7; Planck Light, Planck EZ Hardware Availability: [OLKB.com](https://olkb.com), [Massdrop](https://www.massdrop.com/buy/planck-mechanical-keyboard?mode=guest_open), [Ergodox (Planck EZ)](https://ergodox-ez.com/pages/planck) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/planck/rev6_drop/matrix.c b/keyboards/planck/rev6_drop/matrix.c index 6f7d6725a192..fae7de179c83 100644 --- a/keyboards/planck/rev6_drop/matrix.c +++ b/keyboards/planck/rev6_drop/matrix.c @@ -1,5 +1,5 @@ /* - * Copyright 2018 Jack Humbert + * Copyright 2018-2023 Jack Humbert * * 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 @@ -17,155 +17,58 @@ #include "quantum.h" -#ifndef DEBOUNCE -# define DEBOUNCE 5 -#endif - -/* - * col: { B11, B10, B2, B1, A7, B0 } - * row: { A10, A9, A8, B15, C13, C14, C15, A2 } - */ /* matrix state(1:on, 0:off) */ -static matrix_row_t matrix[MATRIX_ROWS]; -static matrix_row_t matrix_debouncing[MATRIX_COLS]; -static bool debouncing = false; -static uint16_t debouncing_time = 0; - -__attribute__((weak)) void matrix_init_user(void) {} +static pin_t matrix_row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +static pin_t matrix_col_pins[MATRIX_COLS] = MATRIX_COL_PINS; -__attribute__((weak)) void matrix_scan_user(void) {} +static matrix_row_t matrix_inverted[MATRIX_COLS]; -__attribute__((weak)) void matrix_init_kb(void) { - matrix_init_user(); -} +void matrix_init_custom(void) { + // actual matrix setup - cols + for (int i = 0; i < MATRIX_COLS; i++) { + setPinOutput(matrix_col_pins[i]); + } -__attribute__((weak)) void matrix_scan_kb(void) { - matrix_scan_user(); + // rows + for (int i = 0; i < MATRIX_ROWS; i++) { + setPinInputLow(matrix_row_pins[i]); + } } -void matrix_init(void) { - dprintf("matrix init\n"); - // debug_matrix = true; +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool changed = false; - // actual matrix setup - palSetPadMode(GPIOB, 11, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOB, 10, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOB, 2, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOB, 1, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOA, 7, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOB, 0, PAL_MODE_OUTPUT_PUSHPULL); - - palSetPadMode(GPIOA, 10, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(GPIOA, 9, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(GPIOA, 8, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(GPIOB, 15, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(GPIOC, 13, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(GPIOC, 14, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(GPIOC, 15, PAL_MODE_INPUT_PULLDOWN); - palSetPadMode(GPIOA, 2, PAL_MODE_INPUT_PULLDOWN); - - memset(matrix, 0, MATRIX_ROWS * sizeof(matrix_row_t)); - memset(matrix_debouncing, 0, MATRIX_COLS * sizeof(matrix_row_t)); - - matrix_init_kb(); -} - -uint8_t matrix_scan(void) { // actual matrix for (int col = 0; col < MATRIX_COLS; col++) { matrix_row_t data = 0; - // strobe col { B11, B10, B2, B1, A7, B0 } - switch (col) { - case 0: - palSetPad(GPIOB, 11); - break; - case 1: - palSetPad(GPIOB, 10); - break; - case 2: - palSetPad(GPIOB, 2); - break; - case 3: - palSetPad(GPIOB, 1); - break; - case 4: - palSetPad(GPIOA, 7); - break; - case 5: - palSetPad(GPIOB, 0); - break; - } + // strobe col + writePinHigh(matrix_col_pins[col]); // need wait to settle pin state wait_us(20); - // read row data { A10, A9, A8, B15, C13, C14, C15, A2 } - data = ((palReadPad(GPIOA, 10) << 0) | (palReadPad(GPIOA, 9) << 1) | (palReadPad(GPIOA, 8) << 2) | (palReadPad(GPIOB, 15) << 3) | (palReadPad(GPIOC, 13) << 4) | (palReadPad(GPIOC, 14) << 5) | (palReadPad(GPIOC, 15) << 6) | (palReadPad(GPIOA, 2) << 7)); - - // unstrobe col { B11, B10, B2, B1, A7, B0 } - switch (col) { - case 0: - palClearPad(GPIOB, 11); - break; - case 1: - palClearPad(GPIOB, 10); - break; - case 2: - palClearPad(GPIOB, 2); - break; - case 3: - palClearPad(GPIOB, 1); - break; - case 4: - palClearPad(GPIOA, 7); - break; - case 5: - palClearPad(GPIOB, 0); - break; + // read row data + for (int row = 0; row < MATRIX_ROWS; row++) { + data |= (readPin(matrix_row_pins[row]) << row); } - if (matrix_debouncing[col] != data) { - matrix_debouncing[col] = data; - debouncing = true; - debouncing_time = timer_read(); - } - } + // unstrobe col + writePinLow(matrix_col_pins[col]); - if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) { - for (int row = 0; row < MATRIX_ROWS; row++) { - matrix[row] = 0; - for (int col = 0; col < MATRIX_COLS; col++) { - matrix[row] |= ((matrix_debouncing[col] & (1 << row) ? 1 : 0) << col); - } + if (matrix_inverted[col] != data) { + matrix_inverted[col] = data; } - debouncing = false; } - matrix_scan_kb(); - - return 1; -} - -bool matrix_is_on(uint8_t row, uint8_t col) { - return (matrix[row] & (1 << col)); -} - -matrix_row_t matrix_get_row(uint8_t row) { - return matrix[row]; -} - -void matrix_print(void) { - dprintf("\nr/c 01234567\n"); - for (uint8_t row = 0; row < MATRIX_ROWS; row++) { - dprintf("%X0: ", row); - matrix_row_t data = matrix_get_row(row); + for (int row = 0; row < MATRIX_ROWS; row++) { + matrix_row_t old = current_matrix[row]; + current_matrix[row] = 0; for (int col = 0; col < MATRIX_COLS; col++) { - if (data & (1 << col)) - dprintf("1"); - else - dprintf("0"); + current_matrix[row] |= ((matrix_inverted[col] & (1 << row) ? 1 : 0) << col); } - dprintf("\n"); + changed |= old != current_matrix[row]; } + + return changed; } diff --git a/keyboards/planck/rev6_drop/rules.mk b/keyboards/planck/rev6_drop/rules.mk index e20d33831d00..3eb3eac7ebc3 100644 --- a/keyboards/planck/rev6_drop/rules.mk +++ b/keyboards/planck/rev6_drop/rules.mk @@ -10,7 +10,7 @@ NKRO_ENABLE = yes # Enable N-Key Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow AUDIO_ENABLE = yes # Audio output -CUSTOM_MATRIX = yes +CUSTOM_MATRIX = lite # Do not enable RGB_MATRIX_ENABLE together with RGBLIGHT_ENABLE RGB_MATRIX_ENABLE = no ENCODER_ENABLE = yes diff --git a/keyboards/planck/rev7/chconf.h b/keyboards/planck/rev7/chconf.h new file mode 100644 index 000000000000..e1243f23eca4 --- /dev/null +++ b/keyboards/planck/rev7/chconf.h @@ -0,0 +1,29 @@ +/* Copyright 2020 QMK + * + * 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/planck/rev6/chconf.h -r platforms/chibios/QMK_PROTON_C/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_RESOLUTION 16 + +#define CH_CFG_ST_FREQUENCY 10000 + +#include_next + diff --git a/keyboards/planck/rev7/config.h b/keyboards/planck/rev7/config.h new file mode 100644 index 000000000000..3da5a4e6b9c5 --- /dev/null +++ b/keyboards/planck/rev7/config.h @@ -0,0 +1,53 @@ +/* + * Copyright 2023 Jack Humbert + * + * 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 . + */ + +#pragma once + +#define DIP_SWITCH_PINS \ + { B14, A15, A0, B9 } + +#define MUSIC_MAP +#undef AUDIO_VOICES +#undef AUDIO_PIN +#define AUDIO_PIN A5 +#define AUDIO_PIN_ALT A4 +#define AUDIO_PIN_ALT_AS_NEGATIVE + +#define WS2812_PWM_DRIVER PWMD2 +#define WS2812_PWM_CHANNEL 2 +#define WS2812_PWM_PAL_MODE 1 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 +#define WS2812_DMA_CHANNEL 2 + +#define RGB_DISABLE_WHEN_USB_SUSPENDED + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT + diff --git a/keyboards/planck/rev7/halconf.h b/keyboards/planck/rev7/halconf.h new file mode 100644 index 000000000000..6da795fada1a --- /dev/null +++ b/keyboards/planck/rev7/halconf.h @@ -0,0 +1,24 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#define HAL_USE_PWM TRUE +#define HAL_USE_GPT TRUE +#define HAL_USE_DAC TRUE +#define HAL_USE_I2C TRUE +#define HAL_USE_WDG TRUE + +#include_next diff --git a/keyboards/planck/rev7/info.json b/keyboards/planck/rev7/info.json new file mode 100644 index 000000000000..e4d743342366 --- /dev/null +++ b/keyboards/planck/rev7/info.json @@ -0,0 +1,322 @@ +{ + "keyboard_name": "Planck", + "manufacturer": "Drop", + "url": "https://olkb.com/planck", + "maintainer": "jackhumbert", + "usb": { + "vid": "0x03A8", + "pid": "0xA4F9", + "device_version": "0.0.7" + }, + "ws2812": { + "pin": "A1", + "driver": "pwm" + }, + "rgb_matrix": { + "driver": "WS2812" + }, + "matrix_pins": { + "cols": ["B11", "B10", "B2", "B1", "A7", "B0"], + "rows": ["A10", "A9", "A8", "B15", "C13", "C14", "C15", "A2"] + }, + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "B12", "pin_b": "B13"} + ] + }, + "features": { + "audio": true, + "bootmagic": true, + "command": true, + "console": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "rgblight": { + "led_count": 9 + }, + "processor": "STM32F303", + "bootloader": "stm32-dfu", + "community_layouts": ["ortho_4x12", "planck_mit"], + "layout_aliases": { + "LAYOUT": "LAYOUT_ortho_4x12", + "LAYOUT_planck_grid": "LAYOUT_ortho_4x12", + "LAYOUT_planck_mit": "LAYOUT_planck_1x2uC" + }, + "layouts": { + "LAYOUT_ortho_4x12": { + "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": [4, 0], "x": 6, "y": 0 }, + { "matrix": [4, 1], "x": 7, "y": 0 }, + { "matrix": [4, 2], "x": 8, "y": 0 }, + { "matrix": [4, 3], "x": 9, "y": 0 }, + { "matrix": [4, 4], "x": 10, "y": 0 }, + { "matrix": [4, 5], "x": 11, "y": 0 }, + + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [5, 0], "x": 6, "y": 1 }, + { "matrix": [5, 1], "x": 7, "y": 1 }, + { "matrix": [5, 2], "x": 8, "y": 1 }, + { "matrix": [5, 3], "x": 9, "y": 1 }, + { "matrix": [5, 4], "x": 10, "y": 1 }, + { "matrix": [5, 5], "x": 11, "y": 1 }, + + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [6, 0], "x": 6, "y": 2 }, + { "matrix": [6, 1], "x": 7, "y": 2 }, + { "matrix": [6, 2], "x": 8, "y": 2 }, + { "matrix": [6, 3], "x": 9, "y": 2 }, + { "matrix": [6, 4], "x": 10, "y": 2 }, + { "matrix": [6, 5], "x": 11, "y": 2 }, + + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [7, 3], "x": 3, "y": 3 }, + { "matrix": [7, 4], "x": 4, "y": 3 }, + { "matrix": [7, 5], "x": 5, "y": 3 }, + { "matrix": [7, 0], "x": 6, "y": 3 }, + { "matrix": [7, 1], "x": 7, "y": 3 }, + { "matrix": [7, 2], "x": 8, "y": 3 }, + { "matrix": [3, 3], "x": 9, "y": 3 }, + { "matrix": [3, 4], "x": 10, "y": 3 }, + { "matrix": [3, 5], "x": 11, "y": 3 } + ] + }, + "LAYOUT_planck_1x2uC": { + "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": [4, 0], "x": 6, "y": 0 }, + { "matrix": [4, 1], "x": 7, "y": 0 }, + { "matrix": [4, 2], "x": 8, "y": 0 }, + { "matrix": [4, 3], "x": 9, "y": 0 }, + { "matrix": [4, 4], "x": 10, "y": 0 }, + { "matrix": [4, 5], "x": 11, "y": 0 }, + + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [5, 0], "x": 6, "y": 1 }, + { "matrix": [5, 1], "x": 7, "y": 1 }, + { "matrix": [5, 2], "x": 8, "y": 1 }, + { "matrix": [5, 3], "x": 9, "y": 1 }, + { "matrix": [5, 4], "x": 10, "y": 1 }, + { "matrix": [5, 5], "x": 11, "y": 1 }, + + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [6, 0], "x": 6, "y": 2 }, + { "matrix": [6, 1], "x": 7, "y": 2 }, + { "matrix": [6, 2], "x": 8, "y": 2 }, + { "matrix": [6, 3], "x": 9, "y": 2 }, + { "matrix": [6, 4], "x": 10, "y": 2 }, + { "matrix": [6, 5], "x": 11, "y": 2 }, + + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [7, 3], "x": 3, "y": 3 }, + { "matrix": [7, 4], "x": 4, "y": 3 }, + { "matrix": [7, 0], "x": 5, "y": 3, "w": 2 }, + { "matrix": [7, 1], "x": 7, "y": 3 }, + { "matrix": [7, 2], "x": 8, "y": 3 }, + { "matrix": [3, 3], "x": 9, "y": 3 }, + { "matrix": [3, 4], "x": 10, "y": 3 }, + { "matrix": [3, 5], "x": 11, "y": 3 } + ] + }, + "LAYOUT_planck_1x2uL": { + "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": [4, 0], "x": 6, "y": 0 }, + { "matrix": [4, 1], "x": 7, "y": 0 }, + { "matrix": [4, 2], "x": 8, "y": 0 }, + { "matrix": [4, 3], "x": 9, "y": 0 }, + { "matrix": [4, 4], "x": 10, "y": 0 }, + { "matrix": [4, 5], "x": 11, "y": 0 }, + + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [5, 0], "x": 6, "y": 1 }, + { "matrix": [5, 1], "x": 7, "y": 1 }, + { "matrix": [5, 2], "x": 8, "y": 1 }, + { "matrix": [5, 3], "x": 9, "y": 1 }, + { "matrix": [5, 4], "x": 10, "y": 1 }, + { "matrix": [5, 5], "x": 11, "y": 1 }, + + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [6, 0], "x": 6, "y": 2 }, + { "matrix": [6, 1], "x": 7, "y": 2 }, + { "matrix": [6, 2], "x": 8, "y": 2 }, + { "matrix": [6, 3], "x": 9, "y": 2 }, + { "matrix": [6, 4], "x": 10, "y": 2 }, + { "matrix": [6, 5], "x": 11, "y": 2 }, + + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [7, 3], "x": 3, "y": 3 }, + { "matrix": [7, 5], "x": 4, "y": 3, "w": 2 }, + { "matrix": [7, 0], "x": 6, "y": 3 }, + { "matrix": [7, 1], "x": 7, "y": 3 }, + { "matrix": [7, 2], "x": 8, "y": 3 }, + { "matrix": [3, 3], "x": 9, "y": 3 }, + { "matrix": [3, 4], "x": 10, "y": 3 }, + { "matrix": [3, 5], "x": 11, "y": 3 } + ] + }, + "LAYOUT_planck_1x2uR": { + "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": [4, 0], "x": 6, "y": 0 }, + { "matrix": [4, 1], "x": 7, "y": 0 }, + { "matrix": [4, 2], "x": 8, "y": 0 }, + { "matrix": [4, 3], "x": 9, "y": 0 }, + { "matrix": [4, 4], "x": 10, "y": 0 }, + { "matrix": [4, 5], "x": 11, "y": 0 }, + + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [5, 0], "x": 6, "y": 1 }, + { "matrix": [5, 1], "x": 7, "y": 1 }, + { "matrix": [5, 2], "x": 8, "y": 1 }, + { "matrix": [5, 3], "x": 9, "y": 1 }, + { "matrix": [5, 4], "x": 10, "y": 1 }, + { "matrix": [5, 5], "x": 11, "y": 1 }, + + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [6, 0], "x": 6, "y": 2 }, + { "matrix": [6, 1], "x": 7, "y": 2 }, + { "matrix": [6, 2], "x": 8, "y": 2 }, + { "matrix": [6, 3], "x": 9, "y": 2 }, + { "matrix": [6, 4], "x": 10, "y": 2 }, + { "matrix": [6, 5], "x": 11, "y": 2 }, + + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [7, 3], "x": 3, "y": 3 }, + { "matrix": [7, 4], "x": 4, "y": 3 }, + { "matrix": [7, 5], "x": 5, "y": 3 }, + { "matrix": [7, 1], "x": 6, "y": 3, "w": 2 }, + { "matrix": [7, 2], "x": 8, "y": 3 }, + { "matrix": [3, 3], "x": 9, "y": 3 }, + { "matrix": [3, 4], "x": 10, "y": 3 }, + { "matrix": [3, 5], "x": 11, "y": 3 } + ] + }, + "LAYOUT_planck_2x2u": { + "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": [4, 0], "x": 6, "y": 0 }, + { "matrix": [4, 1], "x": 7, "y": 0 }, + { "matrix": [4, 2], "x": 8, "y": 0 }, + { "matrix": [4, 3], "x": 9, "y": 0 }, + { "matrix": [4, 4], "x": 10, "y": 0 }, + { "matrix": [4, 5], "x": 11, "y": 0 }, + + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [5, 0], "x": 6, "y": 1 }, + { "matrix": [5, 1], "x": 7, "y": 1 }, + { "matrix": [5, 2], "x": 8, "y": 1 }, + { "matrix": [5, 3], "x": 9, "y": 1 }, + { "matrix": [5, 4], "x": 10, "y": 1 }, + { "matrix": [5, 5], "x": 11, "y": 1 }, + + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [6, 0], "x": 6, "y": 2 }, + { "matrix": [6, 1], "x": 7, "y": 2 }, + { "matrix": [6, 2], "x": 8, "y": 2 }, + { "matrix": [6, 3], "x": 9, "y": 2 }, + { "matrix": [6, 4], "x": 10, "y": 2 }, + { "matrix": [6, 5], "x": 11, "y": 2 }, + + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [7, 3], "x": 3, "y": 3 }, + { "matrix": [7, 5], "x": 4, "y": 3, "w": 2 }, + { "matrix": [7, 1], "x": 6, "y": 3, "w": 2 }, + { "matrix": [7, 2], "x": 8, "y": 3 }, + { "matrix": [3, 3], "x": 9, "y": 3 }, + { "matrix": [3, 4], "x": 10, "y": 3 }, + { "matrix": [3, 5], "x": 11, "y": 3 } + ] + } + } +} diff --git a/keyboards/planck/rev7/keymaps/default/config.h b/keyboards/planck/rev7/keymaps/default/config.h new file mode 100644 index 000000000000..c3de26365b22 --- /dev/null +++ b/keyboards/planck/rev7/keymaps/default/config.h @@ -0,0 +1,49 @@ +/* Copyright 2015-2023 Jack Humbert + * + * 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 . + */ + +#pragma once + +#ifdef AUDIO_ENABLE +# define STARTUP_SONG SONG(PLANCK_SOUND) +// #define STARTUP_SONG SONG(NO_SOUND) + +# define DEFAULT_LAYER_SONGS \ + { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND) } +#endif + +/* + * MIDI options + */ + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +#define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +// #define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +// #define MIDI_TONE_KEYCODE_OCTAVES 2 + +// Most tactile encoders have detents every 4 stages +#define ENCODER_RESOLUTION 4 diff --git a/keyboards/planck/rev7/keymaps/default/keymap.c b/keyboards/planck/rev7/keymaps/default/keymap.c new file mode 100644 index 000000000000..37d7ba0d23c4 --- /dev/null +++ b/keyboards/planck/rev7/keymaps/default/keymap.c @@ -0,0 +1,315 @@ +/* Copyright 2015-2023 Jack Humbert + * + * 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 . + */ + +#include QMK_KEYBOARD_H + +enum planck_layers { _QWERTY, _COLEMAK, _DVORAK, _LOWER, _RAISE, _PLOVER, _ADJUST }; + +enum planck_keycodes { QWERTY = SAFE_RANGE, COLEMAK, DVORAK, PLOVER, BACKLIT, EXT_PLV }; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) + +/* clang-format off */ +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | ' | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_RSFT, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | ' | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = LAYOUT_planck_grid( + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , + BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_RSFT, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | ' | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = LAYOUT_planck_grid( + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , + BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_RSFT, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_planck_grid( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_planck_grid( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY +), + +/* Plover layer (http://opensteno.org) + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | E | U | | | | + * `-----------------------------------------------------------------------------------' + */ +[_PLOVER] = LAYOUT_planck_grid( + KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 , + XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX +), + +/* Adjust (Lower + Raise) + * v------------------------RGB CONTROL--------------------v + * ,-----------------------------------------------------------------------------------. + * | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | |MUSmod|Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_planck_grid( + _______, QK_BOOT, DB_TOGG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL , + _______, EE_CLR, MU_NEXT, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______, + _______, AU_PREV, AU_NEXT, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +) + +}; +/* clang-format on */ + +#ifdef AUDIO_ENABLE +float plover_song[][2] = SONG(PLOVER_SOUND); +float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); +#endif + +layer_state_t layer_state_set_user(layer_state_t state) { + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + print("mode just switched to qwerty and this is a huge string\n"); + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); +#ifdef BACKLIGHT_ENABLE + backlight_step(); +#endif +#ifdef KEYBOARD_planck_rev5 + writePinLow(E6); +#endif + } else { + unregister_code(KC_RSFT); +#ifdef KEYBOARD_planck_rev5 + writePinHigh(E6); +#endif + } + return false; + break; + case PLOVER: + if (record->event.pressed) { +#ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_SONG(plover_song); +#endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { +#ifdef AUDIO_ENABLE + PLAY_SONG(plover_gb_song); +#endif + layer_off(_PLOVER); + } + return false; + break; + } + return true; +} + +/* clang-format off */ +float melody[8][2][2] = { + {{440.0f, 8}, {440.0f, 24}}, + {{440.0f, 8}, {440.0f, 24}}, + {{440.0f, 8}, {440.0f, 24}}, + {{440.0f, 8}, {440.0f, 24}}, + {{440.0f, 8}, {440.0f, 24}}, + {{440.0f, 8}, {440.0f, 24}}, + {{440.0f, 8}, {440.0f, 24}}, + {{440.0f, 8}, {440.0f, 24}}, +}; +/* clang-format on */ + +#define JUST_MINOR_THIRD 1.2 +#define JUST_MAJOR_THIRD 1.25 +#define JUST_PERFECT_FOURTH 1.33333333 +#define JUST_TRITONE 1.42222222 +#define JUST_PERFECT_FIFTH 1.33333333 + +#define ET12_MINOR_SECOND 1.059463 +#define ET12_MAJOR_SECOND 1.122462 +#define ET12_MINOR_THIRD 1.189207 +#define ET12_MAJOR_THIRD 1.259921 +#define ET12_PERFECT_FOURTH 1.33484 +#define ET12_TRITONE 1.414214 +#define ET12_PERFECT_FIFTH 1.498307 + +deferred_token tokens[8]; + +uint32_t reset_note(uint32_t trigger_time, void *note) { + *(float*)note = 440.0f; + return 0; +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + cancel_deferred_exec(tokens[index]); + if (clockwise) { + melody[index][1][0] = melody[index][1][0] * ET12_MINOR_SECOND; + melody[index][0][0] = melody[index][1][0] / ET12_PERFECT_FIFTH; + audio_play_melody(&melody[index], 2, false); + } else { + melody[index][1][0] = melody[index][1][0] / ET12_MINOR_SECOND; + melody[index][0][0] = melody[index][1][0] * ET12_TRITONE; + audio_play_melody(&melody[index], 2, false); + } + tokens[index] = defer_exec(1000, reset_note, &melody[index][1][0]); + return false; +} + +bool dip_switch_update_user(uint8_t index, bool active) { + switch (index) { + case 0: { +#ifdef AUDIO_ENABLE + static bool play_sound = false; +#endif + if (active) { +#ifdef AUDIO_ENABLE + if (play_sound) { + PLAY_SONG(plover_song); + } +#endif + layer_on(_ADJUST); + } else { +#ifdef AUDIO_ENABLE + if (play_sound) { + PLAY_SONG(plover_gb_song); + } +#endif + layer_off(_ADJUST); + } +#ifdef AUDIO_ENABLE + play_sound = true; +#endif + break; + } + } + return true; +} \ No newline at end of file diff --git a/keyboards/planck/rev7/keymaps/default/rules.mk b/keyboards/planck/rev7/keymaps/default/rules.mk new file mode 100644 index 000000000000..13fc199bb6c7 --- /dev/null +++ b/keyboards/planck/rev7/keymaps/default/rules.mk @@ -0,0 +1 @@ +DEFERRED_EXEC_ENABLE = yes \ No newline at end of file diff --git a/keyboards/planck/rev7/matrix.c b/keyboards/planck/rev7/matrix.c new file mode 100644 index 000000000000..6b45d618611f --- /dev/null +++ b/keyboards/planck/rev7/matrix.c @@ -0,0 +1,173 @@ +/* + * Copyright 2018-2023 Jack Humbert + * + * 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 . + */ + +#include "gpio.h" +#include "hal_pal.h" +#include "hal_pal_lld.h" +#include "quantum.h" + +// STM32-specific watchdog config calculations +// timeout = 31.25us * PR * (RL + 1) +#define _STM32_IWDG_LSI(us) ((us) / 31.25) +#define STM32_IWDG_PR_US(us) (uint8_t)(log(_STM32_IWDG_LSI(us)) / log(2) - 11) +#define STM32_IWDG_PR_MS(s) STM32_IWDG_PR_US(s * 1000.0) +#define STM32_IWDG_PR_S(s) STM32_IWDG_PR_US(s * 1000000.0) +#define _STM32_IWDG_SCALAR(us) (2 << ((uint8_t)STM32_IWDG_PR_US(us) + 1)) +#define STM32_IWDG_RL_US(us) (uint64_t)(_STM32_IWDG_LSI(us)) / _STM32_IWDG_SCALAR(us) +#define STM32_IWDG_RL_MS(s) STM32_IWDG_RL_US(s * 1000.0) +#define STM32_IWDG_RL_S(s) STM32_IWDG_RL_US(s * 1000000.0) + +/* matrix state(1:on, 0:off) */ +static pin_t matrix_row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +static pin_t matrix_col_pins[MATRIX_COLS] = MATRIX_COL_PINS; + +static matrix_row_t matrix_inverted[MATRIX_COLS]; + +int8_t encoder_LUT[] = {0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1, 0}; +uint8_t encoder_state[8] = {0}; +int8_t encoder_pulses[8] = {0}; +uint8_t encoder_value[8] = {0}; + +void matrix_init_custom(void) { + // actual matrix setup - cols + for (int i = 0; i < MATRIX_COLS; i++) { + setPinOutput(matrix_col_pins[i]); + } + + // rows + for (int i = 0; i < MATRIX_ROWS; i++) { + setPinInputLow(matrix_row_pins[i]); + } + + // encoder A & B setup + setPinInputLow(B12); + setPinInputLow(B13); + + // setup watchdog timer for 1 second + wdgInit(); + + static WDGConfig wdgcfg; + wdgcfg.pr = STM32_IWDG_PR_S(1.0); + wdgcfg.rlr = STM32_IWDG_RL_S(1.0); + wdgcfg.winr = STM32_IWDG_WIN_DISABLED; + wdgStart(&WDGD1, &wdgcfg); +} + +bool encoder_update(uint8_t index, uint8_t state) { + bool changed = false; + uint8_t i = index; + + encoder_pulses[i] += encoder_LUT[state & 0xF]; + + if (encoder_pulses[i] >= ENCODER_RESOLUTION) { + encoder_value[index]++; + changed = true; +#ifdef ENCODER_MAP_ENABLE + encoder_exec_mapping(index, false); +#else // ENCODER_MAP_ENABLE + encoder_update_kb(index, false); +#endif // ENCODER_MAP_ENABLE + } + if (encoder_pulses[i] <= -ENCODER_RESOLUTION) { + encoder_value[index]--; + changed = true; +#ifdef ENCODER_MAP_ENABLE + encoder_exec_mapping(index, true); +#else // ENCODER_MAP_ENABLE + encoder_update_kb(index, true); +#endif // ENCODER_MAP_ENABLE + } + encoder_pulses[i] %= ENCODER_RESOLUTION; +#ifdef ENCODER_DEFAULT_POS + encoder_pulses[i] = 0; +#endif + return changed; +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + // reset watchdog + wdgReset(&WDGD1); + + bool changed = false; + + // actual matrix + for (int col = 0; col < MATRIX_COLS; col++) { + matrix_row_t data = 0; + + // strobe col + writePinHigh(matrix_col_pins[col]); + + // need wait to settle pin state + wait_us(20); + + // read row data + for (int row = 0; row < MATRIX_ROWS; row++) { + data |= (readPin(matrix_row_pins[row]) << row); + } + + // unstrobe col + writePinLow(matrix_col_pins[col]); + + if (matrix_inverted[col] != data) { + matrix_inverted[col] = data; + } + } + + for (int row = 0; row < MATRIX_ROWS; row++) { + matrix_row_t old = current_matrix[row]; + current_matrix[row] = 0; + for (int col = 0; col < MATRIX_COLS; col++) { + current_matrix[row] |= ((matrix_inverted[col] & (1 << row) ? 1 : 0) << col); + } + changed |= old != current_matrix[row]; + } + + // encoder-matrix functionality + + // set up C/rows for encoder read + for (int i = 0; i < MATRIX_ROWS; i++) { + setPinOutput(matrix_row_pins[i]); + writePinHigh(matrix_row_pins[i]); + } + + // set up A & B for reading + setPinInputHigh(B12); + setPinInputHigh(B13); + + for (int i = 0; i < MATRIX_ROWS; i++) { + writePinLow(matrix_row_pins[i]); + wait_us(10); + uint8_t new_status = (palReadPad(GPIOB, 12) << 0) | (palReadPad(GPIOB, 13) << 1); + if ((encoder_state[i] & 0x3) != new_status) { + encoder_state[i] <<= 2; + encoder_state[i] |= new_status; + encoder_update(i, encoder_state[i]); + } + writePinHigh(matrix_row_pins[i]); + } + + // revert A & B to matrix state + setPinInputLow(B12); + setPinInputLow(B13); + + // revert C/rows to matrix state + for (int i = 0; i < MATRIX_ROWS; i++) { + setPinInputLow(matrix_row_pins[i]); + } + + return changed; +} diff --git a/keyboards/planck/rev7/mcuconf.h b/keyboards/planck/rev7/mcuconf.h new file mode 100644 index 000000000000..fa3d3be885de --- /dev/null +++ b/keyboards/planck/rev7/mcuconf.h @@ -0,0 +1,51 @@ +/* Copyright 2020 QMK Contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +// The SysTick timer from the normal quantum/stm32 uses TIM2 -- the WS2812 pin used +// on the Planck requires the use of TIM2 to run PWM -- rework which timers are +// allocated for PWM usage. +#undef STM32_PWM_USE_TIM2 +#define STM32_PWM_USE_TIM2 TRUE + +#undef STM32_DAC_USE_DAC1_CH1 +#define STM32_DAC_USE_DAC1_CH1 TRUE +#undef STM32_DAC_USE_DAC1_CH2 +#define STM32_DAC_USE_DAC1_CH2 TRUE +#undef STM32_GPT_USE_TIM6 +#define STM32_GPT_USE_TIM6 TRUE +#undef STM32_GPT_USE_TIM7 +#define STM32_GPT_USE_TIM7 TRUE +#undef STM32_GPT_USE_TIM8 +#define STM32_GPT_USE_TIM8 TRUE + +// As mentioned above, we need to reallocate the SysTick timer used from +// TIM2 to TIM3. +#undef STM32_ST_USE_TIMER +#define STM32_ST_USE_TIMER 3 + +// enable i2c +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +// use the watchdog timer +#undef STM32_WDG_USE_IWDG +#define STM32_WDG_USE_IWDG TRUE +#undef STM32_IWDG_IS_WINDOWED +#define STM32_IWDG_IS_WINDOWED TRUE diff --git a/keyboards/planck/rev7/readme.md b/keyboards/planck/rev7/readme.md new file mode 100644 index 000000000000..f41ec9afd573 --- /dev/null +++ b/keyboards/planck/rev7/readme.md @@ -0,0 +1,31 @@ +# Planck + +A compact 40% (12x4) ortholinear keyboard kit designed by OLKB and sold by Drop. A complete hardware rework of the rev6 Planck PCB, with support for up to 8 rotary encoders. [More info on qmk.fm](http://qmk.fm/planck/) + +* Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert) +* Hardware Supported: Planck PCB rev7 +* Hardware Availability: [Drop](https://drop.com/buy/planck-mechanical-keyboard?mode=guest_open) + +Make example for this keyboard (after setting up your build environment): + + make planck/rev7:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Encoders + +Encoders much have matching pulse & detent resolutions (e.g. 24/24) for the scanning to work properly. Multiple encoders can be used at the same time, and are zero-indexed (compared to being one-indexed on the PCB's silkscreen) in the `encoder_update_user(index, clockwise)` function: + +``` +,-----------------------------------------------------------------------------------. +| 0 | | | | | | | | | | | 4 | +|------+------+------+------+------+------+------+------+------+------+------+------| +| 1 | | | | | | | | | | | 5 | +|------+------+------+------+------+------+------+------+------+------+------+------| +| 2 | | | | | | | | | | | 6 | +|------+------+------+------+------+------+------+------+------+------+------+------| +| 3 | | | | | | | | | | 7 | +`-----------------------------------------------------------------------------------' +``` + +If an encoder has a switch built-in, it's connected to the key at that location. On the default keymap, each encoder will play its own rising/falling tone sequence when rotated, and will reset the pitch after one second of inactivity. \ No newline at end of file diff --git a/keyboards/planck/rev7/rev7.c b/keyboards/planck/rev7/rev7.c new file mode 100644 index 000000000000..bb9d0ee1e8cc --- /dev/null +++ b/keyboards/planck/rev7/rev7.c @@ -0,0 +1,74 @@ +/* Copyright 2023 Jack Humbert + * + * 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 . + */ +#include "quantum.h" + +#ifdef RGB_MATRIX_ENABLE +// clang-format off +led_config_t g_led_config = { { + // Key Matrix to LED Index + { NO_LED, 6, NO_LED, NO_LED, 5, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0 }, + { NO_LED, 7, NO_LED, NO_LED, 2, NO_LED }, + { NO_LED, 4, NO_LED, NO_LED, 3, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, + { NO_LED, 1, NO_LED, NO_LED, 8, NO_LED }, +}, { + // LED Index to Physical Position + {112, 39}, {148, 60}, {206, 53}, {206, 3}, {150, 3}, {74, 3}, {18, 3}, {18, 54}, {77, 60} +}, { + // LED Index to Flag + LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, + LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL +} }; + +// LED physical location index +// 6 5 4 3 +// 0 +// 7 8 1 2 + +#endif + +#ifdef SWAP_HANDS_ENABLE +__attribute__ ((weak)) +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { + {{5, 4}, {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}}, + {{5, 5}, {4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}}, + {{5, 6}, {4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}}, + {{5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}}, + + {{5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}}, + {{5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}}, + {{5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}}, + {{5, 7}, {4, 7}, {3, 7}, {2, 7}, {1, 7}, {0, 7}}, +}; + +# ifdef ENCODER_MAP_ENABLE +const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {0}; +# endif +#endif + +const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = { + {36, 37, 38, 39, 40, 41}, + {24, 25, 26, 27, 28, 29}, + {12, 13, 14, 15, 16, 17}, + { 0, 1, 2, 9, 10, 11}, + {42, 43, 44, 45, 46, 47}, + {30, 31, 32, 33, 34, 35}, + {18, 19, 20, 21, 22, 23}, + { 6, 7, 8, 3, 4, 5} +}; diff --git a/keyboards/planck/rev7/rules.mk b/keyboards/planck/rev7/rules.mk new file mode 100644 index 000000000000..38710bc00b8b --- /dev/null +++ b/keyboards/planck/rev7/rules.mk @@ -0,0 +1,9 @@ +# Build Options +# change yes to no to disable +# +CUSTOM_MATRIX = lite +DIP_SWITCH_ENABLE = yes + +SRC += matrix.c + +LAYOUTS_HAS_RGB = no From 04b7a262e0f4fded365ff5cd2f366dfb7b044701 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Mart=C3=ADnez?= <58857054+elpekenin@users.noreply.github.com> Date: Fri, 9 Jun 2023 16:51:17 +0200 Subject: [PATCH 11/46] Fix typo (#21189) --- docs/feature_layers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/feature_layers.md b/docs/feature_layers.md index 8503603ffefa..697064b49aee 100644 --- a/docs/feature_layers.md +++ b/docs/feature_layers.md @@ -155,7 +155,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { uint8_t current_layer = get_highest_layer(layer_state); // Check if we are within the range, if not quit - if (curent_layer > LAYER_CYCLE_END || current_layer < LAYER_CYCLE_START) { + if (current_layer > LAYER_CYCLE_END || current_layer < LAYER_CYCLE_START) { return false; } From e3b80b41512eda41437d5d51fba5c553aee2db32 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 10 Jun 2023 04:34:24 +1000 Subject: [PATCH 12/46] Remove some keymap-level info.jsons (#21191) --- .../keymaps/default_giabarinaix2/info.json | 146 ------------------ .../keymaps/giabarinaix2led/info.json | 146 ------------------ .../keymaps/via_giabarinaix2/info.json | 146 ------------------ 3 files changed, 438 deletions(-) delete mode 100644 keyboards/giabalanai/keymaps/default_giabarinaix2/info.json delete mode 100644 keyboards/giabalanai/keymaps/giabarinaix2led/info.json delete mode 100644 keyboards/giabalanai/keymaps/via_giabarinaix2/info.json diff --git a/keyboards/giabalanai/keymaps/default_giabarinaix2/info.json b/keyboards/giabalanai/keymaps/default_giabarinaix2/info.json deleted file mode 100644 index 6581733dd1c5..000000000000 --- a/keyboards/giabalanai/keymaps/default_giabarinaix2/info.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "keyboard_name": "giabarinaix2", - "manufacturer": "3araht", - "url": "https://github.com/3araht", - "maintainer": "3araht", - "usb": { - "vid": "0xFEED", - "pid": "0xF4B2", - "device_version": "0.0.1" - }, - "layouts": { - "LAYOUT": { - "layout": [ - {"label": "l00", "x": 0, "y": 0}, - {"label": "l01", "x": 1, "y": 0}, - {"label": "l02", "x": 2, "y": 0}, - {"label": "l03", "x": 3, "y": 0}, - {"label": "l04", "x": 4, "y": 0}, - {"label": "l05", "x": 5, "y": 0}, - {"label": "l06", "x": 6, "y": 0}, - {"label": "l07", "x": 7, "y": 0}, - {"label": "l08", "x": 8, "y": 0}, - {"label": "l09", "x": 9, "y": 0}, - {"label": "l0a", "x": 10, "y": 0}, - {"label": "l0b", "x": 11, "y": 0}, - - {"label": "r00", "x": 14.5, "y": 0}, - {"label": "r01", "x": 15.5, "y": 0}, - {"label": "r02", "x": 16.5, "y": 0}, - {"label": "r03", "x": 17.5, "y": 0}, - {"label": "r04", "x": 18.5, "y": 0}, - {"label": "r05", "x": 19.5, "y": 0}, - {"label": "r06", "x": 20.5, "y": 0}, - {"label": "r07", "x": 21.5, "y": 0}, - {"label": "r08", "x": 22.5, "y": 0}, - {"label": "r09", "x": 23.5, "y": 0}, - {"label": "r0a", "x": 24.5, "y": 0}, - {"label": "r0b", "x": 25.5, "y": 0}, - - {"label": "l10", "x": 0.5, "y": 1}, - {"label": "l11", "x": 1.5, "y": 1}, - {"label": "l12", "x": 2.5, "y": 1}, - {"label": "l13", "x": 3.5, "y": 1}, - {"label": "l14", "x": 4.5, "y": 1}, - {"label": "l15", "x": 5.5, "y": 1}, - {"label": "l16", "x": 6.5, "y": 1}, - {"label": "l17", "x": 7.5, "y": 1}, - {"label": "l18", "x": 8.5, "y": 1}, - {"label": "l19", "x": 9.5, "y": 1}, - {"label": "l1a", "x": 10.5, "y": 1}, - {"label": "l1b", "x": 11.5, "y": 1}, - - {"label": "r10", "x": 15, "y": 1}, - {"label": "r11", "x": 16, "y": 1}, - {"label": "r12", "x": 17, "y": 1}, - {"label": "r13", "x": 18, "y": 1}, - {"label": "r14", "x": 19, "y": 1}, - {"label": "r15", "x": 20, "y": 1}, - {"label": "r16", "x": 21, "y": 1}, - {"label": "r17", "x": 22, "y": 1}, - {"label": "r18", "x": 23, "y": 1}, - {"label": "r19", "x": 24, "y": 1}, - {"label": "r1a", "x": 25, "y": 1}, - {"label": "r1b", "x": 26, "y": 1}, - - {"label": "l20", "x": 1, "y": 2}, - {"label": "l21", "x": 2, "y": 2}, - {"label": "l22", "x": 3, "y": 2}, - {"label": "l23", "x": 4, "y": 2}, - {"label": "l24", "x": 5, "y": 2}, - {"label": "l25", "x": 6, "y": 2}, - {"label": "l26", "x": 7, "y": 2}, - {"label": "l27", "x": 8, "y": 2}, - {"label": "l28", "x": 9, "y": 2}, - {"label": "l29", "x": 10, "y": 2}, - {"label": "l2a", "x": 11, "y": 2}, - {"label": "l2b", "x": 12, "y": 2}, - - {"label": "r20", "x": 15.5, "y": 2}, - {"label": "r21", "x": 16.5, "y": 2}, - {"label": "r22", "x": 17.5, "y": 2}, - {"label": "r23", "x": 18.5, "y": 2}, - {"label": "r24", "x": 19.5, "y": 2}, - {"label": "r25", "x": 20.5, "y": 2}, - {"label": "r26", "x": 21.5, "y": 2}, - {"label": "r27", "x": 22.5, "y": 2}, - {"label": "r28", "x": 23.5, "y": 2}, - {"label": "r29", "x": 24.5, "y": 2}, - {"label": "r2a", "x": 25.5, "y": 2}, - {"label": "r2b", "x": 26.5, "y": 2}, - - {"label": "l30", "x": 1.5, "y": 3}, - {"label": "l31", "x": 2.5, "y": 3}, - {"label": "l32", "x": 3.5, "y": 3}, - {"label": "l33", "x": 4.5, "y": 3}, - {"label": "l34", "x": 5.5, "y": 3}, - {"label": "l35", "x": 6.5, "y": 3}, - {"label": "l36", "x": 7.5, "y": 3}, - {"label": "l37", "x": 8.5, "y": 3}, - {"label": "l38", "x": 9.5, "y": 3}, - {"label": "l39", "x": 10.5, "y": 3}, - {"label": "l3a", "x": 11.5, "y": 3}, - {"label": "l3b", "x": 12.5, "y": 3}, - - {"label": "r30", "x": 16, "y": 3}, - {"label": "r31", "x": 17, "y": 3}, - {"label": "r32", "x": 18, "y": 3}, - {"label": "r33", "x": 19, "y": 3}, - {"label": "r34", "x": 20, "y": 3}, - {"label": "r35", "x": 21, "y": 3}, - {"label": "r36", "x": 22, "y": 3}, - {"label": "r37", "x": 23, "y": 3}, - {"label": "r38", "x": 24, "y": 3}, - {"label": "r39", "x": 25, "y": 3}, - {"label": "r3a", "x": 26, "y": 3}, - {"label": "r3b", "x": 27, "y": 3}, - - {"label": "l40", "x": 2, "y": 4}, - {"label": "l41", "x": 3, "y": 4}, - {"label": "l42", "x": 4, "y": 4}, - {"label": "l43", "x": 5, "y": 4}, - {"label": "l44", "x": 6, "y": 4}, - {"label": "l45", "x": 7, "y": 4}, - {"label": "l46", "x": 8, "y": 4}, - {"label": "l47", "x": 9, "y": 4}, - {"label": "l48", "x": 10, "y": 4}, - {"label": "l49", "x": 11, "y": 4}, - {"label": "l4a", "x": 12, "y": 4}, - {"label": "l4b", "x": 13, "y": 4}, - - {"label": "r40", "x": 16.5, "y": 4}, - {"label": "r41", "x": 17.5, "y": 4}, - {"label": "r42", "x": 18.5, "y": 4}, - {"label": "r43", "x": 19.5, "y": 4}, - {"label": "r44", "x": 20.5, "y": 4}, - {"label": "r45", "x": 21.5, "y": 4}, - {"label": "r46", "x": 22.5, "y": 4}, - {"label": "r47", "x": 23.5, "y": 4}, - {"label": "r48", "x": 24.5, "y": 4}, - {"label": "r49", "x": 25.5, "y": 4}, - {"label": "r4a", "x": 26.5, "y": 4}, - {"label": "r4b", "x": 27.5, "y": 4} - ] - } - } -} diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/info.json b/keyboards/giabalanai/keymaps/giabarinaix2led/info.json deleted file mode 100644 index 6581733dd1c5..000000000000 --- a/keyboards/giabalanai/keymaps/giabarinaix2led/info.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "keyboard_name": "giabarinaix2", - "manufacturer": "3araht", - "url": "https://github.com/3araht", - "maintainer": "3araht", - "usb": { - "vid": "0xFEED", - "pid": "0xF4B2", - "device_version": "0.0.1" - }, - "layouts": { - "LAYOUT": { - "layout": [ - {"label": "l00", "x": 0, "y": 0}, - {"label": "l01", "x": 1, "y": 0}, - {"label": "l02", "x": 2, "y": 0}, - {"label": "l03", "x": 3, "y": 0}, - {"label": "l04", "x": 4, "y": 0}, - {"label": "l05", "x": 5, "y": 0}, - {"label": "l06", "x": 6, "y": 0}, - {"label": "l07", "x": 7, "y": 0}, - {"label": "l08", "x": 8, "y": 0}, - {"label": "l09", "x": 9, "y": 0}, - {"label": "l0a", "x": 10, "y": 0}, - {"label": "l0b", "x": 11, "y": 0}, - - {"label": "r00", "x": 14.5, "y": 0}, - {"label": "r01", "x": 15.5, "y": 0}, - {"label": "r02", "x": 16.5, "y": 0}, - {"label": "r03", "x": 17.5, "y": 0}, - {"label": "r04", "x": 18.5, "y": 0}, - {"label": "r05", "x": 19.5, "y": 0}, - {"label": "r06", "x": 20.5, "y": 0}, - {"label": "r07", "x": 21.5, "y": 0}, - {"label": "r08", "x": 22.5, "y": 0}, - {"label": "r09", "x": 23.5, "y": 0}, - {"label": "r0a", "x": 24.5, "y": 0}, - {"label": "r0b", "x": 25.5, "y": 0}, - - {"label": "l10", "x": 0.5, "y": 1}, - {"label": "l11", "x": 1.5, "y": 1}, - {"label": "l12", "x": 2.5, "y": 1}, - {"label": "l13", "x": 3.5, "y": 1}, - {"label": "l14", "x": 4.5, "y": 1}, - {"label": "l15", "x": 5.5, "y": 1}, - {"label": "l16", "x": 6.5, "y": 1}, - {"label": "l17", "x": 7.5, "y": 1}, - {"label": "l18", "x": 8.5, "y": 1}, - {"label": "l19", "x": 9.5, "y": 1}, - {"label": "l1a", "x": 10.5, "y": 1}, - {"label": "l1b", "x": 11.5, "y": 1}, - - {"label": "r10", "x": 15, "y": 1}, - {"label": "r11", "x": 16, "y": 1}, - {"label": "r12", "x": 17, "y": 1}, - {"label": "r13", "x": 18, "y": 1}, - {"label": "r14", "x": 19, "y": 1}, - {"label": "r15", "x": 20, "y": 1}, - {"label": "r16", "x": 21, "y": 1}, - {"label": "r17", "x": 22, "y": 1}, - {"label": "r18", "x": 23, "y": 1}, - {"label": "r19", "x": 24, "y": 1}, - {"label": "r1a", "x": 25, "y": 1}, - {"label": "r1b", "x": 26, "y": 1}, - - {"label": "l20", "x": 1, "y": 2}, - {"label": "l21", "x": 2, "y": 2}, - {"label": "l22", "x": 3, "y": 2}, - {"label": "l23", "x": 4, "y": 2}, - {"label": "l24", "x": 5, "y": 2}, - {"label": "l25", "x": 6, "y": 2}, - {"label": "l26", "x": 7, "y": 2}, - {"label": "l27", "x": 8, "y": 2}, - {"label": "l28", "x": 9, "y": 2}, - {"label": "l29", "x": 10, "y": 2}, - {"label": "l2a", "x": 11, "y": 2}, - {"label": "l2b", "x": 12, "y": 2}, - - {"label": "r20", "x": 15.5, "y": 2}, - {"label": "r21", "x": 16.5, "y": 2}, - {"label": "r22", "x": 17.5, "y": 2}, - {"label": "r23", "x": 18.5, "y": 2}, - {"label": "r24", "x": 19.5, "y": 2}, - {"label": "r25", "x": 20.5, "y": 2}, - {"label": "r26", "x": 21.5, "y": 2}, - {"label": "r27", "x": 22.5, "y": 2}, - {"label": "r28", "x": 23.5, "y": 2}, - {"label": "r29", "x": 24.5, "y": 2}, - {"label": "r2a", "x": 25.5, "y": 2}, - {"label": "r2b", "x": 26.5, "y": 2}, - - {"label": "l30", "x": 1.5, "y": 3}, - {"label": "l31", "x": 2.5, "y": 3}, - {"label": "l32", "x": 3.5, "y": 3}, - {"label": "l33", "x": 4.5, "y": 3}, - {"label": "l34", "x": 5.5, "y": 3}, - {"label": "l35", "x": 6.5, "y": 3}, - {"label": "l36", "x": 7.5, "y": 3}, - {"label": "l37", "x": 8.5, "y": 3}, - {"label": "l38", "x": 9.5, "y": 3}, - {"label": "l39", "x": 10.5, "y": 3}, - {"label": "l3a", "x": 11.5, "y": 3}, - {"label": "l3b", "x": 12.5, "y": 3}, - - {"label": "r30", "x": 16, "y": 3}, - {"label": "r31", "x": 17, "y": 3}, - {"label": "r32", "x": 18, "y": 3}, - {"label": "r33", "x": 19, "y": 3}, - {"label": "r34", "x": 20, "y": 3}, - {"label": "r35", "x": 21, "y": 3}, - {"label": "r36", "x": 22, "y": 3}, - {"label": "r37", "x": 23, "y": 3}, - {"label": "r38", "x": 24, "y": 3}, - {"label": "r39", "x": 25, "y": 3}, - {"label": "r3a", "x": 26, "y": 3}, - {"label": "r3b", "x": 27, "y": 3}, - - {"label": "l40", "x": 2, "y": 4}, - {"label": "l41", "x": 3, "y": 4}, - {"label": "l42", "x": 4, "y": 4}, - {"label": "l43", "x": 5, "y": 4}, - {"label": "l44", "x": 6, "y": 4}, - {"label": "l45", "x": 7, "y": 4}, - {"label": "l46", "x": 8, "y": 4}, - {"label": "l47", "x": 9, "y": 4}, - {"label": "l48", "x": 10, "y": 4}, - {"label": "l49", "x": 11, "y": 4}, - {"label": "l4a", "x": 12, "y": 4}, - {"label": "l4b", "x": 13, "y": 4}, - - {"label": "r40", "x": 16.5, "y": 4}, - {"label": "r41", "x": 17.5, "y": 4}, - {"label": "r42", "x": 18.5, "y": 4}, - {"label": "r43", "x": 19.5, "y": 4}, - {"label": "r44", "x": 20.5, "y": 4}, - {"label": "r45", "x": 21.5, "y": 4}, - {"label": "r46", "x": 22.5, "y": 4}, - {"label": "r47", "x": 23.5, "y": 4}, - {"label": "r48", "x": 24.5, "y": 4}, - {"label": "r49", "x": 25.5, "y": 4}, - {"label": "r4a", "x": 26.5, "y": 4}, - {"label": "r4b", "x": 27.5, "y": 4} - ] - } - } -} diff --git a/keyboards/giabalanai/keymaps/via_giabarinaix2/info.json b/keyboards/giabalanai/keymaps/via_giabarinaix2/info.json deleted file mode 100644 index 6581733dd1c5..000000000000 --- a/keyboards/giabalanai/keymaps/via_giabarinaix2/info.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "keyboard_name": "giabarinaix2", - "manufacturer": "3araht", - "url": "https://github.com/3araht", - "maintainer": "3araht", - "usb": { - "vid": "0xFEED", - "pid": "0xF4B2", - "device_version": "0.0.1" - }, - "layouts": { - "LAYOUT": { - "layout": [ - {"label": "l00", "x": 0, "y": 0}, - {"label": "l01", "x": 1, "y": 0}, - {"label": "l02", "x": 2, "y": 0}, - {"label": "l03", "x": 3, "y": 0}, - {"label": "l04", "x": 4, "y": 0}, - {"label": "l05", "x": 5, "y": 0}, - {"label": "l06", "x": 6, "y": 0}, - {"label": "l07", "x": 7, "y": 0}, - {"label": "l08", "x": 8, "y": 0}, - {"label": "l09", "x": 9, "y": 0}, - {"label": "l0a", "x": 10, "y": 0}, - {"label": "l0b", "x": 11, "y": 0}, - - {"label": "r00", "x": 14.5, "y": 0}, - {"label": "r01", "x": 15.5, "y": 0}, - {"label": "r02", "x": 16.5, "y": 0}, - {"label": "r03", "x": 17.5, "y": 0}, - {"label": "r04", "x": 18.5, "y": 0}, - {"label": "r05", "x": 19.5, "y": 0}, - {"label": "r06", "x": 20.5, "y": 0}, - {"label": "r07", "x": 21.5, "y": 0}, - {"label": "r08", "x": 22.5, "y": 0}, - {"label": "r09", "x": 23.5, "y": 0}, - {"label": "r0a", "x": 24.5, "y": 0}, - {"label": "r0b", "x": 25.5, "y": 0}, - - {"label": "l10", "x": 0.5, "y": 1}, - {"label": "l11", "x": 1.5, "y": 1}, - {"label": "l12", "x": 2.5, "y": 1}, - {"label": "l13", "x": 3.5, "y": 1}, - {"label": "l14", "x": 4.5, "y": 1}, - {"label": "l15", "x": 5.5, "y": 1}, - {"label": "l16", "x": 6.5, "y": 1}, - {"label": "l17", "x": 7.5, "y": 1}, - {"label": "l18", "x": 8.5, "y": 1}, - {"label": "l19", "x": 9.5, "y": 1}, - {"label": "l1a", "x": 10.5, "y": 1}, - {"label": "l1b", "x": 11.5, "y": 1}, - - {"label": "r10", "x": 15, "y": 1}, - {"label": "r11", "x": 16, "y": 1}, - {"label": "r12", "x": 17, "y": 1}, - {"label": "r13", "x": 18, "y": 1}, - {"label": "r14", "x": 19, "y": 1}, - {"label": "r15", "x": 20, "y": 1}, - {"label": "r16", "x": 21, "y": 1}, - {"label": "r17", "x": 22, "y": 1}, - {"label": "r18", "x": 23, "y": 1}, - {"label": "r19", "x": 24, "y": 1}, - {"label": "r1a", "x": 25, "y": 1}, - {"label": "r1b", "x": 26, "y": 1}, - - {"label": "l20", "x": 1, "y": 2}, - {"label": "l21", "x": 2, "y": 2}, - {"label": "l22", "x": 3, "y": 2}, - {"label": "l23", "x": 4, "y": 2}, - {"label": "l24", "x": 5, "y": 2}, - {"label": "l25", "x": 6, "y": 2}, - {"label": "l26", "x": 7, "y": 2}, - {"label": "l27", "x": 8, "y": 2}, - {"label": "l28", "x": 9, "y": 2}, - {"label": "l29", "x": 10, "y": 2}, - {"label": "l2a", "x": 11, "y": 2}, - {"label": "l2b", "x": 12, "y": 2}, - - {"label": "r20", "x": 15.5, "y": 2}, - {"label": "r21", "x": 16.5, "y": 2}, - {"label": "r22", "x": 17.5, "y": 2}, - {"label": "r23", "x": 18.5, "y": 2}, - {"label": "r24", "x": 19.5, "y": 2}, - {"label": "r25", "x": 20.5, "y": 2}, - {"label": "r26", "x": 21.5, "y": 2}, - {"label": "r27", "x": 22.5, "y": 2}, - {"label": "r28", "x": 23.5, "y": 2}, - {"label": "r29", "x": 24.5, "y": 2}, - {"label": "r2a", "x": 25.5, "y": 2}, - {"label": "r2b", "x": 26.5, "y": 2}, - - {"label": "l30", "x": 1.5, "y": 3}, - {"label": "l31", "x": 2.5, "y": 3}, - {"label": "l32", "x": 3.5, "y": 3}, - {"label": "l33", "x": 4.5, "y": 3}, - {"label": "l34", "x": 5.5, "y": 3}, - {"label": "l35", "x": 6.5, "y": 3}, - {"label": "l36", "x": 7.5, "y": 3}, - {"label": "l37", "x": 8.5, "y": 3}, - {"label": "l38", "x": 9.5, "y": 3}, - {"label": "l39", "x": 10.5, "y": 3}, - {"label": "l3a", "x": 11.5, "y": 3}, - {"label": "l3b", "x": 12.5, "y": 3}, - - {"label": "r30", "x": 16, "y": 3}, - {"label": "r31", "x": 17, "y": 3}, - {"label": "r32", "x": 18, "y": 3}, - {"label": "r33", "x": 19, "y": 3}, - {"label": "r34", "x": 20, "y": 3}, - {"label": "r35", "x": 21, "y": 3}, - {"label": "r36", "x": 22, "y": 3}, - {"label": "r37", "x": 23, "y": 3}, - {"label": "r38", "x": 24, "y": 3}, - {"label": "r39", "x": 25, "y": 3}, - {"label": "r3a", "x": 26, "y": 3}, - {"label": "r3b", "x": 27, "y": 3}, - - {"label": "l40", "x": 2, "y": 4}, - {"label": "l41", "x": 3, "y": 4}, - {"label": "l42", "x": 4, "y": 4}, - {"label": "l43", "x": 5, "y": 4}, - {"label": "l44", "x": 6, "y": 4}, - {"label": "l45", "x": 7, "y": 4}, - {"label": "l46", "x": 8, "y": 4}, - {"label": "l47", "x": 9, "y": 4}, - {"label": "l48", "x": 10, "y": 4}, - {"label": "l49", "x": 11, "y": 4}, - {"label": "l4a", "x": 12, "y": 4}, - {"label": "l4b", "x": 13, "y": 4}, - - {"label": "r40", "x": 16.5, "y": 4}, - {"label": "r41", "x": 17.5, "y": 4}, - {"label": "r42", "x": 18.5, "y": 4}, - {"label": "r43", "x": 19.5, "y": 4}, - {"label": "r44", "x": 20.5, "y": 4}, - {"label": "r45", "x": 21.5, "y": 4}, - {"label": "r46", "x": 22.5, "y": 4}, - {"label": "r47", "x": 23.5, "y": 4}, - {"label": "r48", "x": 24.5, "y": 4}, - {"label": "r49", "x": 25.5, "y": 4}, - {"label": "r4a", "x": 26.5, "y": 4}, - {"label": "r4b", "x": 27.5, "y": 4} - ] - } - } -} From a875f7f03803790ac011f08c496d112d0744d1b9 Mon Sep 17 00:00:00 2001 From: Joe Scotto Date: Fri, 9 Jun 2023 19:48:55 -0400 Subject: [PATCH 13/46] [Keyboard] Add ScottoGame Keyboard (#20940) --- .../handwired/scottokeebs/scottogame/config.h | 21 ++ .../scottokeebs/scottogame/info.json | 89 ++++++ .../scottogame/keymaps/default/config.h | 23 ++ .../scottogame/keymaps/default/keymap.c | 49 +++ .../scottogame/keymaps/scotto/config.h | 23 ++ .../scottogame/keymaps/scotto/keymap.c | 289 ++++++++++++++++++ .../scottogame/keymaps/scotto/rules.mk | 2 + .../scottokeebs/scottogame/readme.md | 27 ++ .../handwired/scottokeebs/scottogame/rules.mk | 1 + .../scottokeebs/scottogame/scottogame.c | 34 +++ 10 files changed, 558 insertions(+) create mode 100644 keyboards/handwired/scottokeebs/scottogame/config.h create mode 100644 keyboards/handwired/scottokeebs/scottogame/info.json create mode 100644 keyboards/handwired/scottokeebs/scottogame/keymaps/default/config.h create mode 100644 keyboards/handwired/scottokeebs/scottogame/keymaps/default/keymap.c create mode 100644 keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/config.h create mode 100644 keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/keymap.c create mode 100644 keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/rules.mk create mode 100644 keyboards/handwired/scottokeebs/scottogame/readme.md create mode 100644 keyboards/handwired/scottokeebs/scottogame/rules.mk create mode 100644 keyboards/handwired/scottokeebs/scottogame/scottogame.c diff --git a/keyboards/handwired/scottokeebs/scottogame/config.h b/keyboards/handwired/scottokeebs/scottogame/config.h new file mode 100644 index 000000000000..a168f0ef218f --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottogame/config.h @@ -0,0 +1,21 @@ +/* +Copyright 2022 Joe Scotto + +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 . +*/ + +#pragma once + +// OLED +#define OLED_DISPLAY_128X64 \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottogame/info.json b/keyboards/handwired/scottokeebs/scottogame/info.json new file mode 100644 index 000000000000..5c300b866e44 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottogame/info.json @@ -0,0 +1,89 @@ +{ + "manufacturer": "ScottoKeebs", + "keyboard_name": "ScottoGame", + "maintainer": "joe-scotto", + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "oled": true + }, + "build": { + "lto": true + }, + "matrix_pins": { + // RX1, 4, 5, 6, 7, 8, 9, A3, A2, A1 + "cols": ["D2", "D4", "C6", "D7", "E6", "B4", "B5", "F4", "F5", "F6"], + + // A0, 15, 14, 16, 10 + "rows": ["F7", "B1", "B3", "B2", "B6"] + }, + "url": "https://scottokeebs.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x0006", + "vid": "0x534B" + }, + "layouts": { + "LAYOUT_ortho_6_3x10_6": { + "layout": [ + // Row 1 + { "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, 6], "x": 6, "y": 0 }, + + // Row 2 + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [1, 6], "x": 6, "y": 1 }, + { "matrix": [1, 7], "x": 7, "y": 1 }, + { "matrix": [1, 8], "x": 8, "y": 1 }, + { "matrix": [1, 9], "x": 9, "y": 1 }, + + // Row 3 + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [2, 6], "x": 6, "y": 2 }, + { "matrix": [2, 7], "x": 7, "y": 2 }, + { "matrix": [2, 8], "x": 8, "y": 2 }, + { "matrix": [2, 9], "x": 9, "y": 2 }, + + // Row 3 + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [3, 3], "x": 3, "y": 3 }, + { "matrix": [3, 4], "x": 4, "y": 3 }, + { "matrix": [3, 5], "x": 5, "y": 3 }, + { "matrix": [3, 6], "x": 6, "y": 3 }, + { "matrix": [3, 7], "x": 7, "y": 3 }, + { "matrix": [3, 8], "x": 8, "y": 3 }, + { "matrix": [3, 9], "x": 9, "y": 3 }, + + // Row 5 + { "matrix": [4, 1], "x": 1, "y": 4 }, + { "matrix": [4, 2], "x": 2, "y": 4 }, + { "matrix": [4, 3], "x": 3, "y": 4 }, + { "matrix": [4, 6], "x": 6, "y": 4 }, + { "matrix": [4, 7], "x": 7, "y": 4 }, + { "matrix": [4, 8], "x": 8, "y": 4 } + ] + } + } +} diff --git a/keyboards/handwired/scottokeebs/scottogame/keymaps/default/config.h b/keyboards/handwired/scottokeebs/scottogame/keymaps/default/config.h new file mode 100644 index 000000000000..1a6512052c1d --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottogame/keymaps/default/config.h @@ -0,0 +1,23 @@ +/* +Copyright 2022 Joe Scotto + +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 . +*/ + +#pragma once + +// Define options +#define TAPPING_TERM 135 +#define PERMISSIVE_HOLD +#define TAPPING_TERM_PER_KEY diff --git a/keyboards/handwired/scottokeebs/scottogame/keymaps/default/keymap.c b/keyboards/handwired/scottokeebs/scottogame/keymaps/default/keymap.c new file mode 100644 index 000000000000..786587e543b5 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottogame/keymaps/default/keymap.c @@ -0,0 +1,49 @@ +/* +Copyright 2022 Joe Scotto + +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 . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_6_3x10_6( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_BSPC, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), + KC_LCTL, KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), KC_ESC + ), + [1] = LAYOUT_ortho_6_3x10_6( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, + KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, + LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_ortho_6_3x10_6( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_ortho_6_3x10_6( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/config.h b/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/config.h new file mode 100644 index 000000000000..1a6512052c1d --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/config.h @@ -0,0 +1,23 @@ +/* +Copyright 2022 Joe Scotto + +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 . +*/ + +#pragma once + +// Define options +#define TAPPING_TERM 135 +#define PERMISSIVE_HOLD +#define TAPPING_TERM_PER_KEY diff --git a/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/keymap.c b/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/keymap.c new file mode 100644 index 000000000000..09fdf5dd9ab4 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/keymap.c @@ -0,0 +1,289 @@ +/* +Copyright 2022 Joe Scotto + +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 . +*/ + +#include QMK_KEYBOARD_H + +#include + +// Tap Dance declarations +enum { + TD_ESC_SPOTLIGHT_EMOJI, + TD_ESC_WINDOWS_EMOJI +}; + +void td_esc_spotlight_emoji (tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + tap_code(KC_ESC); + } else if (state->count == 2) { + tap_code16(G(KC_SPC)); + } else if (state->count == 3) { + tap_code16(C(G(KC_SPC))); + } +} + +void td_esc_windows_emoji (tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + tap_code(KC_ESC); + } else if (state->count == 2) { + tap_code(KC_LGUI); + } else if (state->count == 3) { + tap_code16(G(KC_DOT)); + } +}; + + // Tap Dance definitions +tap_dance_action_t tap_dance_actions[] = { + [TD_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_spotlight_emoji), + [TD_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_windows_emoji) +}; + +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case TD(TD_ESC_SPOTLIGHT_EMOJI) : + case TD(TD_ESC_WINDOWS_EMOJI) : + case LGUI_T(KC_SPC) : + case LT(1, KC_TAB) : + case LT(2, KC_ENT) : + return 200; + default: + return TAPPING_TERM; + } +}; + +// Layer Names +enum layer_names { + _MAC_DEFAULT, + _MAC_CODE, + _MAC_NUM, + _MAC_FUNC, + _WIN_DEFAULT, + _WIN_CODE, + _WIN_NUM, + _WIN_FUNC +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_6_3x10_6( + KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_SPOTLIGHT_EMOJI), + KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, + KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), + KC_LCTL, KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), TD(TD_ESC_SPOTLIGHT_EMOJI) + ), + [1] = LAYOUT_ortho_6_3x10_6( + KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_SPOTLIGHT_EMOJI), + KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, + KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, + LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), + KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI) + ), + [2] = LAYOUT_ortho_6_3x10_6( + KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_SPOTLIGHT_EMOJI), + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI) + ), + [3] = LAYOUT_ortho_6_3x10_6( + KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_SPOTLIGHT_EMOJI), + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4), + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, + KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI) + ), + [4] = LAYOUT_ortho_6_3x10_6( + KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_WINDOWS_EMOJI), + KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, + KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), + KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_ESC_WINDOWS_EMOJI) + ), + [5] = LAYOUT_ortho_6_3x10_6( + KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_WINDOWS_EMOJI), + KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, + KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, + LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), + KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI) + ), + [6] = LAYOUT_ortho_6_3x10_6( + KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_WINDOWS_EMOJI), + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI) + ), + [7] = LAYOUT_ortho_6_3x10_6( + KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_WINDOWS_EMOJI), + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0), + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, + KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI) + ) +}; + +#ifdef OLED_ENABLE +// WPM responsiveness +#define IDLE_FRAMES 5 +#define IDLE_SPEED 20 // Speed at which animation goes into idle +#define TAP_FRAMES 2 +#define TAP_SPEED 40 // WPM to trigger Bongo +#define ANIM_FRAME_DURATION 200 // Frame MS +#define ANIM_SIZE 636 // Number of bytes in array, max 1024 + +uint32_t anim_timer = 0; +uint32_t anim_sleep = 0; +uint8_t current_idle_frame = 0; +uint8_t current_tap_frame = 0; + +static void render_animation(void) { + static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; + static const char PROGMEM prep[][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; + static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = { + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + }; + + void animation_phase(void) { + if (get_current_wpm() <= IDLE_SPEED) { + current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES; + oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE); + } + + if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) { + oled_write_raw_P(prep[0], ANIM_SIZE); + } + + if (get_current_wpm() >= TAP_SPEED) { + current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES; + oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE); + } + } + if (get_current_wpm() != 000) { + oled_on(); // Enables OLED on any alpha keypress + + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + + anim_sleep = timer_read32(); + } else { + if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { + oled_off(); + } else { + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + animation_phase(); + } + } + } +} + +// Draw to OLED +bool oled_task_user() { + oled_set_cursor(0, 0); + oled_write(" ScottoGame ", false); + + // Render Bongo Cat + oled_set_cursor(86, 0); + render_animation(); + + // WPM text + oled_set_cursor(0,5); + oled_write(get_u8_str(get_current_wpm(), '0'), false); + + // Layer text + oled_set_cursor(0, 6); + switch (get_highest_layer(layer_state)) { + case _MAC_DEFAULT : + oled_write_P(PSTR("MAC"), false); + oled_set_cursor(0, 7); + oled_write_P(PSTR("MAIN"), false); + break; + case _MAC_CODE : + oled_write_P(PSTR("MAC"), false); + oled_set_cursor(0, 7); + oled_write_P(PSTR("CODE"), false); + break; + case _MAC_NUM : + oled_write_P(PSTR("MAC"), false); + oled_set_cursor(0, 7); + oled_write_P(PSTR("NUM"), false); + break; + case _MAC_FUNC : + oled_write_P(PSTR("MAC"), false); + oled_set_cursor(0, 7); + oled_write_P(PSTR("FUNC"), false); + break; + case _WIN_DEFAULT : + oled_write_P(PSTR("WIN"), false); + oled_set_cursor(0, 7); + oled_write_P(PSTR("MAIN"), false); + break; + case _WIN_CODE : + oled_write_P(PSTR("WIN"), false); + oled_set_cursor(0, 7); + oled_write_P(PSTR("CODE"), false); + break; + case _WIN_NUM : + oled_write_P(PSTR("WIN"), false); + oled_set_cursor(0, 7); + oled_write_P(PSTR("NUM"), false); + break; + case _WIN_FUNC : + oled_write_P(PSTR("WIN"), false); + oled_set_cursor(0, 7); + oled_write_P(PSTR("FUNC"), false); + break; + } + + // Caps lock text + led_t led_state = host_keyboard_led_state(); + oled_set_cursor(0, 4); + oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false); + + return false; +} +#endif diff --git a/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/rules.mk b/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/rules.mk new file mode 100644 index 000000000000..bcee933e75eb --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottogame/keymaps/scotto/rules.mk @@ -0,0 +1,2 @@ +WPM_ENABLE = yes +TAP_DANCE_ENABLE = yes diff --git a/keyboards/handwired/scottokeebs/scottogame/readme.md b/keyboards/handwired/scottokeebs/scottogame/readme.md new file mode 100644 index 000000000000..c622df1b4ef7 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottogame/readme.md @@ -0,0 +1,27 @@ +# ScottoGame + +![ScottoGame](https://i.imgur.com/uXUWY7wh.jpg) + +A 42-key ortholinear keyboard with a dedicated action button, split spacebar, 5 function keys, and a 0.96" 128x64 OLED display. Case files available [here](https://github.com/joe-scotto/scottokeebs). + +* Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto) +* Hardware Supported: ATmega32U4, 0.96" 128x64 I2C OLED +* Hardware Availability: [Amazon](https://amazon.com) + +Make example for this keyboard (after setting up your build environment): + + make handwired/scottokeebs/scottogame:default + +Flashing example for this keyboard: + + make handwired/scottokeebs/scottogame: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 \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottogame/rules.mk b/keyboards/handwired/scottokeebs/scottogame/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottogame/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottogame/scottogame.c b/keyboards/handwired/scottokeebs/scottogame/scottogame.c new file mode 100644 index 000000000000..bea5a57a3b7f --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottogame/scottogame.c @@ -0,0 +1,34 @@ +/* +Copyright 2023 Joe Scotto + +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 . +*/ + +#include "quantum.h" + +#ifdef OLED_ENABLE + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + + // Default OLED code + oled_set_cursor(0, 0); + oled_write(" ScottoGame ", false); + + return false; +} + +#endif \ No newline at end of file From e01e3fc866f3d2da37cfdaf5cce5480f9410cc10 Mon Sep 17 00:00:00 2001 From: Jared Date: Fri, 9 Jun 2023 19:16:46 -0700 Subject: [PATCH 14/46] Typo Correction in planck/rev7 readme.md (#21194) Corrected typo explaining encoder requirements. --- keyboards/planck/rev7/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/planck/rev7/readme.md b/keyboards/planck/rev7/readme.md index f41ec9afd573..9b531a4e0942 100644 --- a/keyboards/planck/rev7/readme.md +++ b/keyboards/planck/rev7/readme.md @@ -14,7 +14,7 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to ## Encoders -Encoders much have matching pulse & detent resolutions (e.g. 24/24) for the scanning to work properly. Multiple encoders can be used at the same time, and are zero-indexed (compared to being one-indexed on the PCB's silkscreen) in the `encoder_update_user(index, clockwise)` function: +Encoders must have matching pulse & detent resolutions (e.g. 24/24) for the scanning to work properly. Multiple encoders can be used at the same time, and are zero-indexed (compared to being one-indexed on the PCB's silkscreen) in the `encoder_update_user(index, clockwise)` function: ``` ,-----------------------------------------------------------------------------------. @@ -28,4 +28,4 @@ Encoders much have matching pulse & detent resolutions (e.g. 24/24) for the scan `-----------------------------------------------------------------------------------' ``` -If an encoder has a switch built-in, it's connected to the key at that location. On the default keymap, each encoder will play its own rising/falling tone sequence when rotated, and will reset the pitch after one second of inactivity. \ No newline at end of file +If an encoder has a switch built-in, it's connected to the key at that location. On the default keymap, each encoder will play its own rising/falling tone sequence when rotated, and will reset the pitch after one second of inactivity. From f35cb924e9714827789adbea8dd6a8a2ef945177 Mon Sep 17 00:00:00 2001 From: Tom Barnes Date: Sat, 10 Jun 2023 15:56:43 +0100 Subject: [PATCH 15/46] Update newbs docs with some rp2040 stuff (#21186) * Update newbs_building_firmware_configurator.md * Update docs/newbs_flashing.md Co-authored-by: Ryan --- docs/newbs_building_firmware_configurator.md | 2 ++ docs/newbs_flashing.md | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/newbs_building_firmware_configurator.md b/docs/newbs_building_firmware_configurator.md index eae0cef2c280..20256e5f28fb 100644 --- a/docs/newbs_building_firmware_configurator.md +++ b/docs/newbs_building_firmware_configurator.md @@ -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. diff --git a/docs/newbs_flashing.md b/docs/newbs_flashing.md index 549ffcb2be60..c5ba897e17a2 100644 --- a/docs/newbs_flashing.md +++ b/docs/newbs_flashing.md @@ -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. From 08289fc53a843a0e62accd715e9e4a29a094add2 Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Sat, 10 Jun 2023 16:58:36 +0200 Subject: [PATCH 16/46] EC Alveus (#20840) Cipulot's EC Alveus PR --- keyboards/cipulot/ec_alveus/1_0_0/config.h | 45 ++++ .../ec_alveus/1_0_0/ec_switch_matrix.c | 183 +++++++++++++ .../ec_alveus/1_0_0/ec_switch_matrix.h | 36 +++ keyboards/cipulot/ec_alveus/1_0_0/halconf.h | 21 ++ keyboards/cipulot/ec_alveus/1_0_0/info.json | 181 +++++++++++++ .../ec_alveus/1_0_0/keymaps/default/keymap.c | 49 ++++ .../ec_alveus/1_0_0/keymaps/via/config.h | 20 ++ .../ec_alveus/1_0_0/keymaps/via/keymap.c | 49 ++++ .../ec_alveus/1_0_0/keymaps/via/rules.mk | 3 + .../ec_alveus/1_0_0/keymaps/via/via_apc.c | 156 +++++++++++ keyboards/cipulot/ec_alveus/1_0_0/matrix.c | 44 +++ keyboards/cipulot/ec_alveus/1_0_0/mcuconf.h | 22 ++ keyboards/cipulot/ec_alveus/1_0_0/readme.md | 27 ++ keyboards/cipulot/ec_alveus/1_0_0/rules.mk | 3 + keyboards/cipulot/ec_alveus/1_2_0/config.h | 45 ++++ .../ec_alveus/1_2_0/ec_switch_matrix.c | 183 +++++++++++++ .../ec_alveus/1_2_0/ec_switch_matrix.h | 36 +++ keyboards/cipulot/ec_alveus/1_2_0/halconf.h | 21 ++ keyboards/cipulot/ec_alveus/1_2_0/info.json | 255 ++++++++++++++++++ .../ec_alveus/1_2_0/keymaps/default/keymap.c | 49 ++++ .../keymap.c | 49 ++++ .../ec_alveus/1_2_0/keymaps/via/config.h | 20 ++ .../ec_alveus/1_2_0/keymaps/via/keymap.c | 49 ++++ .../ec_alveus/1_2_0/keymaps/via/rules.mk | 3 + .../ec_alveus/1_2_0/keymaps/via/via_apc.c | 156 +++++++++++ keyboards/cipulot/ec_alveus/1_2_0/matrix.c | 44 +++ keyboards/cipulot/ec_alveus/1_2_0/mcuconf.h | 22 ++ keyboards/cipulot/ec_alveus/1_2_0/readme.md | 27 ++ keyboards/cipulot/ec_alveus/1_2_0/rules.mk | 3 + 29 files changed, 1801 insertions(+) create mode 100644 keyboards/cipulot/ec_alveus/1_0_0/config.h create mode 100644 keyboards/cipulot/ec_alveus/1_0_0/ec_switch_matrix.c create mode 100644 keyboards/cipulot/ec_alveus/1_0_0/ec_switch_matrix.h create mode 100644 keyboards/cipulot/ec_alveus/1_0_0/halconf.h create mode 100644 keyboards/cipulot/ec_alveus/1_0_0/info.json create mode 100644 keyboards/cipulot/ec_alveus/1_0_0/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/config.h create mode 100644 keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/via_apc.c create mode 100644 keyboards/cipulot/ec_alveus/1_0_0/matrix.c create mode 100644 keyboards/cipulot/ec_alveus/1_0_0/mcuconf.h create mode 100644 keyboards/cipulot/ec_alveus/1_0_0/readme.md create mode 100644 keyboards/cipulot/ec_alveus/1_0_0/rules.mk create mode 100644 keyboards/cipulot/ec_alveus/1_2_0/config.h create mode 100644 keyboards/cipulot/ec_alveus/1_2_0/ec_switch_matrix.c create mode 100644 keyboards/cipulot/ec_alveus/1_2_0/ec_switch_matrix.h create mode 100644 keyboards/cipulot/ec_alveus/1_2_0/halconf.h create mode 100644 keyboards/cipulot/ec_alveus/1_2_0/info.json create mode 100644 keyboards/cipulot/ec_alveus/1_2_0/keymaps/default/keymap.c create mode 100644 keyboards/cipulot/ec_alveus/1_2_0/keymaps/tkl_nofrow_ansi_tsangan_wkl_split_bs/keymap.c create mode 100644 keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/config.h create mode 100644 keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/keymap.c create mode 100644 keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/rules.mk create mode 100644 keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/via_apc.c create mode 100644 keyboards/cipulot/ec_alveus/1_2_0/matrix.c create mode 100644 keyboards/cipulot/ec_alveus/1_2_0/mcuconf.h create mode 100644 keyboards/cipulot/ec_alveus/1_2_0/readme.md create mode 100644 keyboards/cipulot/ec_alveus/1_2_0/rules.mk diff --git a/keyboards/cipulot/ec_alveus/1_0_0/config.h b/keyboards/cipulot/ec_alveus/1_0_0/config.h new file mode 100644 index 000000000000..1947c308026d --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_0_0/config.h @@ -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 . + */ + +#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 diff --git a/keyboards/cipulot/ec_alveus/1_0_0/ec_switch_matrix.c b/keyboards/cipulot/ec_alveus/1_0_0/ec_switch_matrix.c new file mode 100644 index 000000000000..783c00457c78 --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_0_0/ec_switch_matrix.c @@ -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 . + */ + +#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"); +} diff --git a/keyboards/cipulot/ec_alveus/1_0_0/ec_switch_matrix.h b/keyboards/cipulot/ec_alveus/1_0_0/ec_switch_matrix.h new file mode 100644 index 000000000000..9dcb216caa3f --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_0_0/ec_switch_matrix.h @@ -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 . + */ + +#pragma once + +#include +#include + +#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); diff --git a/keyboards/cipulot/ec_alveus/1_0_0/halconf.h b/keyboards/cipulot/ec_alveus/1_0_0/halconf.h new file mode 100644 index 000000000000..5b71acecbbc8 --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_0_0/halconf.h @@ -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 . + */ + +#pragma once + +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/ec_alveus/1_0_0/info.json b/keyboards/cipulot/ec_alveus/1_0_0/info.json new file mode 100644 index 000000000000..3e1954608917 --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_0_0/info.json @@ -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 } + ] + } + } +} diff --git a/keyboards/cipulot/ec_alveus/1_0_0/keymaps/default/keymap.c b/keyboards/cipulot/ec_alveus/1_0_0/keymaps/default/keymap.c new file mode 100644 index 000000000000..d111c6a6853f --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_0_0/keymaps/default/keymap.c @@ -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 . + */ + +#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 +}; diff --git a/keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/config.h b/keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/config.h new file mode 100644 index 000000000000..ebf954d07aca --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/config.h @@ -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 . + */ + +#pragma once + +// This is the size of the EEPROM for the custom VIA-specific data +#define EECONFIG_USER_DATA_SIZE 4 diff --git a/keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/keymap.c b/keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/keymap.c new file mode 100644 index 000000000000..5fc6c4d94e08 --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/keymap.c @@ -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 . + */ + +#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 +}; diff --git a/keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/rules.mk b/keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/rules.mk new file mode 100644 index 000000000000..520b11f20312 --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes + +SRC += via_apc.c diff --git a/keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/via_apc.c b/keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/via_apc.c new file mode 100644 index 000000000000..5ea77af44c8b --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_0_0/keymaps/via/via_apc.c @@ -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 . + */ + +#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); +} diff --git a/keyboards/cipulot/ec_alveus/1_0_0/matrix.c b/keyboards/cipulot/ec_alveus/1_0_0/matrix.c new file mode 100644 index 000000000000..1850acf26414 --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_0_0/matrix.c @@ -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 . + */ + +#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; +} diff --git a/keyboards/cipulot/ec_alveus/1_0_0/mcuconf.h b/keyboards/cipulot/ec_alveus/1_0_0/mcuconf.h new file mode 100644 index 000000000000..d91f576bd48b --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_0_0/mcuconf.h @@ -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 . + */ + +#pragma once + +#include_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/ec_alveus/1_0_0/readme.md b/keyboards/cipulot/ec_alveus/1_0_0/readme.md new file mode 100644 index 000000000000..01e82a88055d --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_0_0/readme.md @@ -0,0 +1,27 @@ +# EC Alveus + +![EC Alveus](https://i.imgur.com/J31LzzOh.jpg) + +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 diff --git a/keyboards/cipulot/ec_alveus/1_0_0/rules.mk b/keyboards/cipulot/ec_alveus/1_0_0/rules.mk new file mode 100644 index 000000000000..b8929fa590d7 --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_0_0/rules.mk @@ -0,0 +1,3 @@ +CUSTOM_MATRIX = lite +QUANTUM_LIB_SRC += analog.c +SRC += matrix.c ec_switch_matrix.c diff --git a/keyboards/cipulot/ec_alveus/1_2_0/config.h b/keyboards/cipulot/ec_alveus/1_2_0/config.h new file mode 100644 index 000000000000..1947c308026d --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_2_0/config.h @@ -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 . + */ + +#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 diff --git a/keyboards/cipulot/ec_alveus/1_2_0/ec_switch_matrix.c b/keyboards/cipulot/ec_alveus/1_2_0/ec_switch_matrix.c new file mode 100644 index 000000000000..783c00457c78 --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_2_0/ec_switch_matrix.c @@ -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 . + */ + +#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"); +} diff --git a/keyboards/cipulot/ec_alveus/1_2_0/ec_switch_matrix.h b/keyboards/cipulot/ec_alveus/1_2_0/ec_switch_matrix.h new file mode 100644 index 000000000000..9dcb216caa3f --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_2_0/ec_switch_matrix.h @@ -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 . + */ + +#pragma once + +#include +#include + +#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); diff --git a/keyboards/cipulot/ec_alveus/1_2_0/halconf.h b/keyboards/cipulot/ec_alveus/1_2_0/halconf.h new file mode 100644 index 000000000000..5b71acecbbc8 --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_2_0/halconf.h @@ -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 . + */ + +#pragma once + +#define HAL_USE_ADC TRUE + +#include_next diff --git a/keyboards/cipulot/ec_alveus/1_2_0/info.json b/keyboards/cipulot/ec_alveus/1_2_0/info.json new file mode 100644 index 000000000000..65af74e99bad --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_2_0/info.json @@ -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 } + ] + } + } +} diff --git a/keyboards/cipulot/ec_alveus/1_2_0/keymaps/default/keymap.c b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/default/keymap.c new file mode 100644 index 000000000000..d111c6a6853f --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/default/keymap.c @@ -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 . + */ + +#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 +}; diff --git a/keyboards/cipulot/ec_alveus/1_2_0/keymaps/tkl_nofrow_ansi_tsangan_wkl_split_bs/keymap.c b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/tkl_nofrow_ansi_tsangan_wkl_split_bs/keymap.c new file mode 100644 index 000000000000..4552cd64575a --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/tkl_nofrow_ansi_tsangan_wkl_split_bs/keymap.c @@ -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 . + */ + +#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 +}; diff --git a/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/config.h b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/config.h new file mode 100644 index 000000000000..ebf954d07aca --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/config.h @@ -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 . + */ + +#pragma once + +// This is the size of the EEPROM for the custom VIA-specific data +#define EECONFIG_USER_DATA_SIZE 4 diff --git a/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/keymap.c b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/keymap.c new file mode 100644 index 000000000000..54a8f3b4f00b --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/keymap.c @@ -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 . + */ + +#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 +}; diff --git a/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/rules.mk b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/rules.mk new file mode 100644 index 000000000000..520b11f20312 --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes + +SRC += via_apc.c diff --git a/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/via_apc.c b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/via_apc.c new file mode 100644 index 000000000000..5ea77af44c8b --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_2_0/keymaps/via/via_apc.c @@ -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 . + */ + +#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); +} diff --git a/keyboards/cipulot/ec_alveus/1_2_0/matrix.c b/keyboards/cipulot/ec_alveus/1_2_0/matrix.c new file mode 100644 index 000000000000..1850acf26414 --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_2_0/matrix.c @@ -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 . + */ + +#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; +} diff --git a/keyboards/cipulot/ec_alveus/1_2_0/mcuconf.h b/keyboards/cipulot/ec_alveus/1_2_0/mcuconf.h new file mode 100644 index 000000000000..d91f576bd48b --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_2_0/mcuconf.h @@ -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 . + */ + +#pragma once + +#include_next + +#undef STM32_ADC_USE_ADC1 +#define STM32_ADC_USE_ADC1 TRUE diff --git a/keyboards/cipulot/ec_alveus/1_2_0/readme.md b/keyboards/cipulot/ec_alveus/1_2_0/readme.md new file mode 100644 index 000000000000..e4c3ef86c3f4 --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_2_0/readme.md @@ -0,0 +1,27 @@ +# EC Alveus + +![EC Alveus](https://i.imgur.com/J31LzzOh.jpg) + +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 diff --git a/keyboards/cipulot/ec_alveus/1_2_0/rules.mk b/keyboards/cipulot/ec_alveus/1_2_0/rules.mk new file mode 100644 index 000000000000..b8929fa590d7 --- /dev/null +++ b/keyboards/cipulot/ec_alveus/1_2_0/rules.mk @@ -0,0 +1,3 @@ +CUSTOM_MATRIX = lite +QUANTUM_LIB_SRC += analog.c +SRC += matrix.c ec_switch_matrix.c From eee9a53a803dbcd2bc265a082c67afe0324371fc Mon Sep 17 00:00:00 2001 From: Florent Linguenheld Date: Sat, 10 Jun 2023 17:01:44 +0200 Subject: [PATCH 17/46] Up keymap (#20769) flinguenheld keymap aurora sweep --- .../sweep/keymaps/flinguenheld/.clang-format | 1 + .../sweep/keymaps/flinguenheld/config.h | 11 +- .../flinguenheld/features/auto_shift.c | 639 +++++++++---- .../keymaps/flinguenheld/features/combo.c | 435 ++++----- .../keymaps/flinguenheld/features/leader.c | 436 ++++----- .../sweep/keymaps/flinguenheld/keycodes.h | 63 +- .../sweep/keymaps/flinguenheld/keymap.c | 44 +- .../keymaps/flinguenheld/oled/glcdfont.c | 304 ++---- .../sweep/keymaps/flinguenheld/oled/oled.c | 885 +++++++++--------- .../sweep/keymaps/flinguenheld/readme.md | 155 ++- .../sweep/keymaps/flinguenheld/rules.mk | 5 +- 11 files changed, 1505 insertions(+), 1473 deletions(-) create mode 100644 keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/.clang-format diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/.clang-format b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/.clang-format new file mode 100644 index 000000000000..f87f20d8b68c --- /dev/null +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/.clang-format @@ -0,0 +1 @@ +ColumnLimit: 110 diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/config.h b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/config.h index c147d5e67fa6..f14e2b17e189 100644 --- a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/config.h +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/config.h @@ -18,23 +18,21 @@ /* Flash */ #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior -#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // Timeout window in ms in which the double tap can occur. +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // In ms in which the double tap can occur /* OLED */ #undef OLED_FONT_H #define OLED_FONT_H "./oled/glcdfont.c" -#define OLED_TIMEOUT 25000 -#define OLED_BRIGHTNESS 60 // Protect my eyesss +#define OLED_TIMEOUT 25000 +#define OLED_BRIGHTNESS 50 // Protect my eyesss #define SPLIT_LAYER_STATE_ENABLE #define SPLIT_MODS_ENABLE #define SPLIT_OLED_ENABLE /* Auto shift ♥ */ #define AUTO_SHIFT_TIMEOUT 115 - -/* Redefine CTRL + space (See space cadet shift) */ -#define LCPO_KEYS KC_LCTL, KC_TRNS, KC_SPC +#define TAPPING_TERM 155 /* Unicode */ // #define UNICODE_SELECTED_MODES UC_LNX @@ -61,7 +59,6 @@ #define MK_C_OFFSET_2 25 #define MK_C_INTERVAL_2 10 - #define MK_W_OFFSET_0 1 #define MK_W_INTERVAL_0 160 diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c index d6bd3818b42d..d5bf9f022357 100644 --- a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c @@ -7,193 +7,498 @@ /* Only for basis letters Exceptions like Tab or Enter */ bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_TAB: + // case KC_ENT: - switch (keycode) { - - case KC_TAB: - case KC_ENT: - - // -- - case KC_A: - case KC_B: - case KC_C: - case KC_D: - case KC_E: - case KC_F: - case KC_G: - case KC_H: - case KC_I: - case KC_J: - case KC_K: - case KC_L: - case KC_M: - case KC_N: - case KC_O: - case KC_P: - case KC_Q: - case KC_R: - case KC_S: - case KC_T: - case KC_U: - case KC_V: - case KC_W: - case KC_X: - case KC_Y: - case KC_Z: - - return true; - } - - return get_custom_auto_shifted_key(keycode, record); -} + case US_EACU: + case US_CCED: + case US_AE: + case US_OE: + + // -- + case KC_A: + case KC_B: + case KC_C: + case KC_D: + case KC_E: + case KC_F: + case KC_G: + case KC_H: + case KC_I: + case KC_J: + case KC_K: + case KC_L: + case KC_M: + case KC_N: + case KC_O: + case KC_P: + case KC_Q: + case KC_R: + case KC_S: + case KC_T: + case KC_U: + case KC_V: + case KC_W: + case KC_X: + case KC_Y: + case KC_Z: + return true; + } + + return get_custom_auto_shifted_key(keycode, record); +} /* Custom auto shift I use this instead of tap dance because double tap is horrible Add here the letter or the custom enum, then add in press_user and press_release the actions */ bool get_custom_auto_shifted_key(uint16_t keycode, keyrecord_t *record) { - switch(keycode) { + switch (keycode) { + case KC_BSPC: - case KC_BSPC: - case KC_LABK: // Easy indent with vim - case KC_RABK: + // Double them !!! + case KC_AMPERSAND: + case KC_AT: + case KC_BACKSLASH: + case KC_CIRCUMFLEX: + case KC_COLON: + case KC_DOLLAR: + case KC_EQUAL: + case KC_EXCLAIM: + case KC_GRAVE: + case KC_HASH: + case KC_MINUS: + case KC_PERC: + case KC_PIPE: + case KC_PLUS: + case KC_QUESTION: + case KC_QUOTE: + case KC_DOUBLE_QUOTE: + case KC_SEMICOLON: + case KC_SLASH: + case KC_ASTERISK: + case KC_TILDE: + case KC_UNDERSCORE: - /* French */ - case CS_E_ACUTE: + case KC_LEFT_ANGLE_BRACKET: // Easy indent with vim + case KC_RIGHT_ANGLE_BRACKET: - case CS_A_GRAVE: - case CS_E_GRAVE: - case CS_I_GRAVE: - case CS_O_GRAVE: - case CS_U_GRAVE: + case KC_LEFT_BRACKET: + case KC_RIGHT_BRACKET: + case KC_LEFT_CURLY_BRACE: + case KC_RIGHT_CURLY_BRACE: + case KC_LEFT_PAREN: + case KC_RIGHT_PAREN: - case CS_A_CIRCUMFLEX: - case CS_E_CIRCUMFLEX: - case CS_I_CIRCUMFLEX: - case CS_O_CIRCUMFLEX: - case CS_U_CIRCUMFLEX: + /* French */ + case CS_A_GRAVE: + case CS_E_GRAVE: + case CS_U_GRAVE: - case CS_A_DIAERESIS: - case CS_E_DIAERESIS: - case CS_I_DIAERESIS: - case CS_O_DIAERESIS: - case CS_U_DIAERESIS: - case CS_Y_DIAERESIS: + case CS_A_CIRCUMFLEX: + case CS_E_CIRCUMFLEX: + case CS_I_CIRCUMFLEX: + case CS_O_CIRCUMFLEX: + case CS_U_CIRCUMFLEX: - case CS_C_CEDILLA: - case CS_AE: - case CS_OE: + case CS_E_DIAERESIS: + case CS_I_DIAERESIS: + case CS_U_DIAERESIS: + case CS_Y_DIAERESIS: + return true; - return true; - - default: - return false; - } + default: + return false; + } } void autoshift_press_user(uint16_t keycode, bool shifted, keyrecord_t *record) { - switch(keycode) { - - case KC_BSPC: - register_code16((!shifted) ? KC_BSPC : KC_DEL); - break; - - case KC_LABK: - if (shifted) { send_unicode_string("<<"); } - else { send_unicode_string("<"); } break; - - case KC_RABK: - if (shifted) { send_unicode_string(">>"); } - else { send_unicode_string(">"); } break; - - /* French - Release is not necessary with 'send_unicode_string()' */ - case CS_E_ACUTE: - if (shifted) { send_unicode_string("É"); } - else { send_unicode_string("é"); } break; - - case CS_A_GRAVE: - if (shifted) { send_unicode_string("À"); } - else { send_unicode_string("à"); } break; - case CS_E_GRAVE: - if (shifted) { send_unicode_string("È"); } - else { send_unicode_string("è"); } break; - case CS_I_GRAVE: - if (shifted) { send_unicode_string("Ì"); } - else { send_unicode_string("ì"); } break; - case CS_O_GRAVE: - if (shifted) { send_unicode_string("Ò"); } - else { send_unicode_string("ò"); } break; - case CS_U_GRAVE: - if (shifted) { send_unicode_string("Ù"); } - else { send_unicode_string("ù"); } break; - - case CS_A_CIRCUMFLEX: - if (shifted) { send_unicode_string("Â"); } - else { send_unicode_string("â"); } break; - case CS_E_CIRCUMFLEX: - if (shifted) { send_unicode_string("Ê"); } - else { send_unicode_string("ê"); } break; - case CS_I_CIRCUMFLEX: - if (shifted) { send_unicode_string("Î"); } - else { send_unicode_string("î"); } break; - case CS_O_CIRCUMFLEX: - if (shifted) { send_unicode_string("Ô"); } - else { send_unicode_string("ô"); } break; - case CS_U_CIRCUMFLEX: - if (shifted) { send_unicode_string("Û"); } - else { send_unicode_string("û"); } break; - - case CS_A_DIAERESIS: - if (shifted) { send_unicode_string("Ä"); } - else { send_unicode_string("ä"); } break; - case CS_E_DIAERESIS: - if (shifted) { send_unicode_string("Ë"); } - else { send_unicode_string("ë"); } break; - case CS_I_DIAERESIS: - if (shifted) { send_unicode_string("Ï"); } - else { send_unicode_string("ï"); } break; - case CS_O_DIAERESIS: - if (shifted) { send_unicode_string("Ö"); } - else { send_unicode_string("ö"); } break; - case CS_U_DIAERESIS: - if (shifted) { send_unicode_string("Ü"); } - else { send_unicode_string("ü"); } break; - case CS_Y_DIAERESIS: - if (shifted) { send_unicode_string("Ÿ"); } - else { send_unicode_string("ÿ"); } break; - - case CS_C_CEDILLA: - if (shifted) { send_unicode_string("Ç"); } - else { send_unicode_string("ç"); } break; - case CS_AE: - if (shifted) { send_unicode_string("Æ"); } - else { send_unicode_string("æ"); } break; - case CS_OE: - if (shifted) { send_unicode_string("Œ"); } - else { send_unicode_string("œ"); } break; - - - default: - if (shifted) { - add_weak_mods(MOD_BIT(KC_LSFT)); - } - /* & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift */ - register_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode); + switch (keycode) { + case KC_BSPC: + if (shifted) { + tap_code16(KC_DEL); + } else { + tap_code16(KC_BSPC); } -} + break; + break; -void autoshift_release_user(uint16_t keycode, bool shifted, keyrecord_t *record) { - switch(keycode) { + case KC_AMPERSAND: + if (shifted) { + tap_code16(KC_AMPERSAND); + tap_code16(KC_AMPERSAND); + } else { + tap_code16(KC_AMPERSAND); + } + break; + case KC_AT: + if (shifted) { + tap_code16(KC_AT); + tap_code16(KC_AT); + } else { + tap_code16(KC_AT); + } + break; + case KC_BACKSLASH: + if (shifted) { + tap_code16(KC_BACKSLASH); + tap_code16(KC_BACKSLASH); + } else { + tap_code16(KC_BACKSLASH); + } + break; + case KC_CIRCUMFLEX: + if (shifted) { + tap_code16(KC_CIRCUMFLEX); + tap_code16(KC_CIRCUMFLEX); + } else { + tap_code16(KC_CIRCUMFLEX); + } + break; + case KC_COLON: + if (shifted) { + tap_code16(KC_COLON); + tap_code16(KC_COLON); + } else { + tap_code16(KC_COLON); + } + break; + case KC_DOLLAR: + if (shifted) { + tap_code16(KC_DOLLAR); + tap_code16(KC_DOLLAR); + } else { + tap_code16(KC_DOLLAR); + } + break; + case KC_EQUAL: + if (shifted) { + tap_code16(KC_EQUAL); + tap_code16(KC_EQUAL); + } else { + tap_code16(KC_EQUAL); + } + break; + case KC_EXCLAIM: + if (shifted) { + tap_code16(KC_EXCLAIM); + tap_code16(KC_EXCLAIM); + } else { + tap_code16(KC_EXCLAIM); + } + break; + case KC_GRAVE: + if (shifted) { + tap_code16(KC_GRAVE); + tap_code16(KC_GRAVE); + } else { + tap_code16(KC_GRAVE); + } + break; + case KC_HASH: + if (shifted) { + tap_code16(KC_HASH); + tap_code16(KC_HASH); + } else { + tap_code16(KC_HASH); + } + break; + case KC_MINUS: + if (shifted) { + tap_code16(KC_MINUS); + tap_code16(KC_MINUS); + } else { + tap_code16(KC_MINUS); + } + break; + case KC_PERCENT: + if (shifted) { + tap_code16(KC_PERCENT); + tap_code16(KC_PERCENT); + } else { + tap_code16(KC_PERCENT); + } + break; + case KC_PIPE: + if (shifted) { + tap_code16(KC_PIPE); + tap_code16(KC_PIPE); + } else { + tap_code16(KC_PIPE); + } + break; + case KC_PLUS: + if (shifted) { + tap_code16(KC_PLUS); + tap_code16(KC_PLUS); + } else { + tap_code16(KC_PLUS); + } + break; + case KC_QUESTION: + if (shifted) { + tap_code16(KC_QUESTION); + tap_code16(KC_QUESTION); + } else { + tap_code16(KC_QUESTION); + } + break; + case KC_QUOTE: + if (shifted) { + tap_code16(KC_QUOTE); + tap_code16(KC_QUOTE); + } else { + tap_code16(KC_QUOTE); + } + break; + case KC_DOUBLE_QUOTE: + if (shifted) { + tap_code16(KC_DOUBLE_QUOTE); + tap_code16(KC_DOUBLE_QUOTE); + } else { + tap_code16(KC_DOUBLE_QUOTE); + } + break; + case KC_SEMICOLON: + if (shifted) { + tap_code16(KC_SEMICOLON); + tap_code16(KC_SEMICOLON); + } else { + tap_code16(KC_SEMICOLON); + } + break; + case KC_SLASH: + if (shifted) { + tap_code16(KC_SLASH); + tap_code16(KC_SLASH); + } else { + tap_code16(KC_SLASH); + } + break; + case KC_ASTERISK: + if (shifted) { + tap_code16(KC_ASTERISK); + tap_code16(KC_ASTERISK); + } else { + tap_code16(KC_ASTERISK); + } + break; + case KC_TILDE: + if (shifted) { + tap_code16(KC_TILDE); + tap_code16(KC_TILDE); + } else { + tap_code16(KC_TILDE); + } + break; + case KC_UNDERSCORE: + if (shifted) { + tap_code16(KC_UNDERSCORE); + tap_code16(KC_UNDERSCORE); + } else { + tap_code16(KC_UNDERSCORE); + } + break; - case KC_BSPC: - unregister_code16((!shifted) ? KC_BSPC : KC_DEL); - break; + case KC_LEFT_ANGLE_BRACKET: + if (shifted) { + tap_code16(KC_LEFT_ANGLE_BRACKET); + tap_code16(KC_LEFT_ANGLE_BRACKET); + } else { + tap_code16(KC_LEFT_ANGLE_BRACKET); + } + break; + case KC_RIGHT_ANGLE_BRACKET: + if (shifted) { + tap_code16(KC_RIGHT_ANGLE_BRACKET); + tap_code16(KC_RIGHT_ANGLE_BRACKET); + } else { + tap_code16(KC_RIGHT_ANGLE_BRACKET); + } + break; - default: - /* & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift - The IS_RETRO check isn't really necessary here, always using - keycode & 0xFF would be fine. */ - unregister_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode); + case KC_LEFT_BRACKET: + if (shifted) { + tap_code16(KC_LEFT_BRACKET); + tap_code16(KC_LEFT_BRACKET); + } else { + tap_code16(KC_LEFT_BRACKET); + } + break; + case KC_RIGHT_BRACKET: + if (shifted) { + tap_code16(KC_RIGHT_BRACKET); + tap_code16(KC_RIGHT_BRACKET); + } else { + tap_code16(KC_RIGHT_BRACKET); + } + break; + case KC_LEFT_CURLY_BRACE: + if (shifted) { + tap_code16(KC_LEFT_CURLY_BRACE); + tap_code16(KC_LEFT_CURLY_BRACE); + } else { + tap_code16(KC_LEFT_CURLY_BRACE); + } + break; + case KC_RIGHT_CURLY_BRACE: + if (shifted) { + tap_code16(KC_RIGHT_CURLY_BRACE); + tap_code16(KC_RIGHT_CURLY_BRACE); + } else { + tap_code16(KC_RIGHT_CURLY_BRACE); + } + break; + case KC_LEFT_PAREN: + if (shifted) { + tap_code16(KC_LEFT_PAREN); + tap_code16(KC_LEFT_PAREN); + } else { + tap_code16(KC_LEFT_PAREN); + } + break; + case KC_RIGHT_PAREN: + if (shifted) { + tap_code16(KC_RIGHT_PAREN); + tap_code16(KC_RIGHT_PAREN); + } else { + tap_code16(KC_RIGHT_PAREN); + } + break; + + /* French + Release is not necessary with 'send_unicode_string()' */ + case CS_A_GRAVE: + if (shifted) { + tap_code16(US_DGRV); + tap_code16(S(KC_A)); + } else { + tap_code16(US_DGRV); + tap_code16(KC_A); + } + break; + case CS_E_GRAVE: + if (shifted) { + tap_code16(US_DGRV); + tap_code16(S(KC_E)); + } else { + tap_code16(US_DGRV); + tap_code16(KC_E); + } + break; + case CS_U_GRAVE: + if (shifted) { + tap_code16(US_DGRV); + tap_code16(S(KC_U)); + } else { + tap_code16(US_DGRV); + tap_code16(KC_U); + } + break; + + case CS_A_CIRCUMFLEX: + if (shifted) { + tap_code16(US_DCIR); + tap_code16(S(KC_A)); + } else { + tap_code16(US_DCIR); + tap_code16(KC_A); + } + break; + case CS_E_CIRCUMFLEX: + if (shifted) { + tap_code16(US_DCIR); + tap_code16(S(KC_E)); + } else { + tap_code16(US_DCIR); + tap_code16(KC_E); } + break; + case CS_I_CIRCUMFLEX: + if (shifted) { + tap_code16(US_DCIR); + tap_code16(S(KC_I)); + } else { + tap_code16(US_DCIR); + tap_code16(KC_I); + } + break; + case CS_O_CIRCUMFLEX: + if (shifted) { + tap_code16(US_DCIR); + tap_code16(S(KC_O)); + } else { + tap_code16(US_DCIR); + tap_code16(KC_O); + } + break; + case CS_U_CIRCUMFLEX: + if (shifted) { + tap_code16(US_DCIR); + tap_code16(S(KC_U)); + } else { + tap_code16(US_DCIR); + tap_code16(KC_U); + } + break; + + case CS_E_DIAERESIS: + if (shifted) { + tap_code16(US_DIAE); + tap_code16(S(KC_E)); + } else { + tap_code16(US_DIAE); + tap_code16(KC_E); + } + break; + case CS_I_DIAERESIS: + if (shifted) { + tap_code16(US_DIAE); + tap_code16(S(KC_I)); + } else { + tap_code16(US_DIAE); + tap_code16(KC_I); + } + break; + case CS_U_DIAERESIS: + if (shifted) { + tap_code16(US_DIAE); + tap_code16(S(KC_U)); + } else { + tap_code16(US_DIAE); + tap_code16(KC_U); + } + break; + case CS_Y_DIAERESIS: + if (shifted) { + tap_code16(US_DIAE); + tap_code16(S(KC_Y)); + } else { + tap_code16(US_DIAE); + tap_code16(KC_Y); + } + break; + + default: + if (shifted) { + add_weak_mods(MOD_BIT(KC_LSFT)); + } + /* & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift */ + register_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode); + } +} + +void autoshift_release_user(uint16_t keycode, bool shifted, keyrecord_t *record) { + switch (keycode) { + case KC_BSPC: + unregister_code16((!shifted) ? KC_BSPC : KC_DEL); + break; + + default: + /* & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift + The IS_RETRO check isn't really necessary here, always using + keycode & 0xFF would be fine. */ + unregister_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode); + } } diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/combo.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/combo.c index c382eedddc11..de0436b361ed 100644 --- a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/combo.c +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/combo.c @@ -15,256 +15,231 @@ */ enum combos { - LEADER, - BOOTLOADER, - - LAYER_ADJUST, - LAYER_FN, - LAYER_LEFT_HAND, - - /* French */ - E_ACUTE, - C_CEDILLA, - E_A, - E_O, - - A_GRAVE, - E_GRAVE, - I_GRAVE, - O_GRAVE, - U_GRAVE, - - A_CIRCUMFLEX, - E_CIRCUMFLEX, - I_CIRCUMFLEX, - O_CIRCUMFLEX, - U_CIRCUMFLEX, - - A_DIAERESIS, - E_DIAERESIS, - I_DIAERESIS, - O_DIAERESIS, - U_DIAERESIS, - Y_DIAERESIS, - - /* -- */ - AMPERSAND, - AT_SIGN, - BACKSLASH, - CIRCUMFLEX, - COLON, - DOLLAR, - EQUAL, - EXCLAMATION_MARK, - GRAVE, - HASH, - MINUS, - PERCENT, - PIPE, - PLUS, - QUESTION_MARK, - QUOTE, - QUOTE_DOUBLE, - SEMICOLON, - SLASH, - STAR, - TILDE, - UNDERSCORE, - - ANGLE_BRACKET_LEFT, - ANGLE_BRACKET_RIGHT, - - BRACKET_LEFT, - BRACKET_RIGHT, - CURLY_BRACKET_LEFT, - CURLY_BRACKET_RIGHT, - PARENTHESIS_LEFT, - PARENTHESIS_RIGHT, - - /* -- */ - ALT_SHIFT, - CONTROL_SHIFT, - CONTROL_ALT, - CONTROL_SHIFT_ALT, - RIGHT_ALT, - - /* One hand special */ - CONTROL_RIGHT, - CONTROL_SHIFT_RIGHT, - - // DEL_LEFT, - SHIFT_LEFT, - ALTGR_LEFT, - CONTROL_SHIFT_LEFT, + LEADER, + BOOTLOADER, + + LAYER_ADJ, + LAYER_FN, + LAYER_LEFT_HAND, + LAYER_MOUSE, + LAYER_MOUSE_BACK, + + /* French */ + C_CEDILLA, + E_A, + E_O, + + A_GRAVE, + E_GRAVE, + U_GRAVE, + + A_CIRCUMFLEX, + E_CIRCUMFLEX, + I_CIRCUMFLEX, + O_CIRCUMFLEX, + U_CIRCUMFLEX, + + E_DIAERESIS, + I_DIAERESIS, + U_DIAERESIS, + Y_DIAERESIS, + + /* -- */ + AMPERSAND, + AT_SIGN, + BACKSLASH, + CIRCUMFLEX, + COLON, + DOLLAR, + EQUAL, + EXCLAMATION_MARK, + GRAVE, + HASH, + MINUS, + PERCENT, + PIPE, + PLUS, + QUESTION_MARK, + QUOTE, + QUOTE_DOUBLE, + SEMICOLON, + SLASH, + STAR, + TILDE, + UNDERSCORE, + + ANGLE_BRACKET_LEFT, + ANGLE_BRACKET_RIGHT, + + BRACKET_LEFT, + BRACKET_RIGHT, + CURLY_BRACKET_LEFT, + CURLY_BRACKET_RIGHT, + PARENTHESIS_LEFT, + PARENTHESIS_RIGHT, + + /* Non qwerty */ + EURO, + + /* One hand special */ + CONTROL_RIGHT, + CONTROL_SHIFT_RIGHT, + + ALT_LEFT, + SHIFT_LEFT, + CONTROL_SHIFT_LEFT, + + /* Just to replace the define in config.h */ + COMBO_LENGTH, }; +uint16_t COMBO_LEN = COMBO_LENGTH; /* Sequences fo keys */ -const uint16_t PROGMEM combo_leader[] = {LT(_MOUSE, KC_COMM), LT(_ARROWS, KC_DOT), COMBO_END}; -const uint16_t PROGMEM combo_bootloader[] = {KC_K, KC_TAB, KC_Z, KC_BSPC, KC_V, KC_J, COMBO_END}; +const uint16_t PROGMEM combo_leader[] = {LT(_MOUSE, KC_COMM), LT(_ARROWS, KC_DOT), COMBO_END}; +const uint16_t PROGMEM combo_bootloader[] = {KC_K, KC_TAB, KC_Z, KC_BSPC, KC_V, KC_J, COMBO_END}; + +const uint16_t PROGMEM combo_ADJ[] = {CTL_T(KC_SPACE), LT(_NUMERIC, KC_ENT), COMBO_END}; +const uint16_t PROGMEM combo_fn[] = {LT(_NUMERIC, KC_ENT), KC_N, COMBO_END}; +const uint16_t PROGMEM combo_left_hand[] = {LT(_MOUSE, KC_COMM), GUI_T(KC_ESC), COMBO_END}; +const uint16_t PROGMEM combo_mouse[] = {KC_A, KC_I, KC_E, KC_U, COMBO_END}; +const uint16_t PROGMEM combo_mouse_back[] = {KC_MS_LEFT, KC_MS_UP, KC_MS_DOWN, KC_MS_RIGHT, COMBO_END}; +/* -- */ +const uint16_t PROGMEM combo_c_cedilla[] = {LT(_ARROWS, KC_DOT), KC_C, COMBO_END}; +const uint16_t PROGMEM combo_ea[] = {US_EACU, KC_A, COMBO_END}; +const uint16_t PROGMEM combo_eo[] = {US_EACU, KC_O, COMBO_END}; -const uint16_t PROGMEM combo_adjust[] = {KC_LCPO, LT(_NUMERIC, KC_ENT), COMBO_END}; -const uint16_t PROGMEM combo_fn[] = {LT(_NUMERIC, KC_ENT), KC_N, COMBO_END}; -const uint16_t PROGMEM combo_left_hand[] = {KC_LCPO, GUI_T(KC_ESC), COMBO_END}; +const uint16_t PROGMEM combo_a_grave[] = {CTL_T(KC_SPACE), KC_A, COMBO_END}; +const uint16_t PROGMEM combo_e_grave[] = {CTL_T(KC_SPACE), KC_E, COMBO_END}; +const uint16_t PROGMEM combo_u_grave[] = {CTL_T(KC_SPACE), KC_U, COMBO_END}; -/* -- */ -// const uint16_t PROGMEM combo_enter_shifted[] = {LT(_NUMERIC, KC_ENT), KC_S, COMBO_END}; -const uint16_t PROGMEM combo_control_shift[] = {KC_LCPO, KC_S, COMBO_END}; -const uint16_t PROGMEM combo_control_alt[] = {KC_LCPO, KC_LALT, COMBO_END}; -const uint16_t PROGMEM combo_control_shift_alt[] = {KC_LCPO, KC_S, KC_A, COMBO_END}; -const uint16_t PROGMEM combo_right_alt[] = {KC_LAPO, KC_G, COMBO_END}; -const uint16_t PROGMEM combo_alt_shift[] = {KC_LALT, KC_S, COMBO_END}; +const uint16_t PROGMEM combo_a_circumflex[] = {LT(_MOUSE, KC_COMM), KC_A, COMBO_END}; +const uint16_t PROGMEM combo_e_circumflex[] = {LT(_MOUSE, KC_COMM), KC_E, COMBO_END}; +const uint16_t PROGMEM combo_i_circumflex[] = {LT(_MOUSE, KC_COMM), KC_I, COMBO_END}; +const uint16_t PROGMEM combo_o_circumflex[] = {LT(_MOUSE, KC_COMM), KC_O, COMBO_END}; +const uint16_t PROGMEM combo_u_circumflex[] = {LT(_MOUSE, KC_COMM), KC_U, COMBO_END}; -/* -- */ -const uint16_t PROGMEM combo_e_acute[] = {KC_LCPO, KC_E, COMBO_END}; -const uint16_t PROGMEM combo_c_cedilla[] = {KC_LCPO, KC_I, COMBO_END}; -const uint16_t PROGMEM combo_ea[] = {KC_LCPO, KC_A, COMBO_END}; -const uint16_t PROGMEM combo_eo[] = {KC_LCPO, KC_O, COMBO_END}; - -const uint16_t PROGMEM combo_a_grave[] = {LT(_MOUSE, KC_COMM), KC_A, COMBO_END}; -const uint16_t PROGMEM combo_e_grave[] = {LT(_MOUSE, KC_COMM), KC_E, COMBO_END}; -const uint16_t PROGMEM combo_i_grave[] = {LT(_MOUSE, KC_COMM), KC_I, COMBO_END}; -const uint16_t PROGMEM combo_o_grave[] = {LT(_MOUSE, KC_COMM), KC_O, COMBO_END}; -const uint16_t PROGMEM combo_u_grave[] = {LT(_MOUSE, KC_COMM), KC_U, COMBO_END}; - -const uint16_t PROGMEM combo_a_circumflex[] = {KC_C, KC_A, COMBO_END}; -const uint16_t PROGMEM combo_e_circumflex[] = {KC_C, KC_E, COMBO_END}; -const uint16_t PROGMEM combo_i_circumflex[] = {KC_C, KC_I, COMBO_END}; -const uint16_t PROGMEM combo_o_circumflex[] = {KC_C, KC_O, COMBO_END}; -const uint16_t PROGMEM combo_u_circumflex[] = {KC_C, KC_U, COMBO_END}; - -const uint16_t PROGMEM combo_a_diaeresis[] = {KC_T, KC_A, COMBO_END}; -const uint16_t PROGMEM combo_e_diaeresis[] = {KC_T, KC_E, COMBO_END}; -const uint16_t PROGMEM combo_i_diaeresis[] = {KC_T, KC_I, COMBO_END}; -const uint16_t PROGMEM combo_o_diaeresis[] = {KC_T, KC_O, COMBO_END}; -const uint16_t PROGMEM combo_u_diaeresis[] = {KC_T, KC_U, COMBO_END}; -const uint16_t PROGMEM combo_y_diaeresis[] = {KC_T, KC_Y, COMBO_END}; +const uint16_t PROGMEM combo_e_diaeresis[] = {US_EACU, KC_E, COMBO_END}; +const uint16_t PROGMEM combo_i_diaeresis[] = {US_EACU, KC_I, COMBO_END}; +const uint16_t PROGMEM combo_u_diaeresis[] = {US_EACU, KC_U, COMBO_END}; +const uint16_t PROGMEM combo_y_diaeresis[] = {US_EACU, KC_Y, COMBO_END}; /* -- */ -const uint16_t PROGMEM combo_ampersand[] = {KC_I, KC_E, COMBO_END}; -const uint16_t PROGMEM combo_at_sign[] = {KC_Q, KC_Y, COMBO_END}; -const uint16_t PROGMEM combo_backslash[] = {KC_D, KC_R, COMBO_END}; -const uint16_t PROGMEM combo_circumflex[] = {KC_T, KC_D, COMBO_END}; -const uint16_t PROGMEM combo_colon[] = {KC_C, KC_G, COMBO_END}; -const uint16_t PROGMEM combo_dollar[] = {KC_D, KC_L, COMBO_END}; -const uint16_t PROGMEM combo_equal[] = {KC_T, KC_H, COMBO_END}; -const uint16_t PROGMEM combo_exclamation_mark[] = {KC_O, KC_W, COMBO_END}; -const uint16_t PROGMEM combo_grave[] = {KC_T, KC_G, COMBO_END}; -const uint16_t PROGMEM combo_hash[] = {KC_I, KC_O, COMBO_END}; -const uint16_t PROGMEM combo_minus[] = {KC_T, KC_R, COMBO_END}; -const uint16_t PROGMEM combo_percent[] = {KC_O, KC_U, COMBO_END}; -const uint16_t PROGMEM combo_pipe[] = {KC_E, KC_U, COMBO_END}; -const uint16_t PROGMEM combo_plus[] = {KC_T, KC_L, COMBO_END}; -const uint16_t PROGMEM combo_question_mark[] = {KC_B, KC_O, COMBO_END}; -const uint16_t PROGMEM combo_quote[] = {KC_T, KC_N, COMBO_END}; -const uint16_t PROGMEM combo_quote_double[] = {KC_A, KC_U, COMBO_END}; -const uint16_t PROGMEM combo_semicolon[] = {KC_G, KC_H, COMBO_END}; -const uint16_t PROGMEM combo_slash[] = {KC_S, KC_L, COMBO_END}; -const uint16_t PROGMEM combo_star[] = {KC_S, KC_T, COMBO_END}; -const uint16_t PROGMEM combo_tilde[] = {KC_I, KC_U, COMBO_END}; -const uint16_t PROGMEM combo_underscore[] = {KC_S, KC_R, COMBO_END}; - -const uint16_t PROGMEM combo_angle_bracket_left[] = {KC_C, KC_S, COMBO_END}; -const uint16_t PROGMEM combo_angle_bracket_right[] = {KC_S, KC_H, COMBO_END}; - -const uint16_t PROGMEM combo_bracket_left[] = {KC_Q, KC_U, COMBO_END}; -const uint16_t PROGMEM combo_bracket_right[] = {KC_E, KC_Y, COMBO_END}; -const uint16_t PROGMEM combo_curly_bracket_left[] = {KC_X, KC_E, COMBO_END}; -const uint16_t PROGMEM combo_curly_bracket_right[] = {KC_I, KC_Q, COMBO_END}; -const uint16_t PROGMEM combo_parenthesis_left[] = {KC_X, KC_U, COMBO_END}; -const uint16_t PROGMEM combo_parenthesis_right[] = {KC_I, KC_Y, COMBO_END}; +const uint16_t PROGMEM combo_ampersand[] = {KC_E, KC_U, COMBO_END}; +const uint16_t PROGMEM combo_at_sign[] = {KC_D, KC_L, COMBO_END}; +const uint16_t PROGMEM combo_backslash[] = {KC_B, KC_E, COMBO_END}; +const uint16_t PROGMEM combo_circumflex[] = {KC_B, KC_O, COMBO_END}; +const uint16_t PROGMEM combo_colon[] = {KC_C, KC_G, COMBO_END}; +const uint16_t PROGMEM combo_dollar[] = {KC_O, KC_W, COMBO_END}; +const uint16_t PROGMEM combo_equal[] = {KC_T, KC_H, COMBO_END}; +const uint16_t PROGMEM combo_exclamation_mark[] = {KC_Q, KC_Y, COMBO_END}; +const uint16_t PROGMEM combo_grave[] = {KC_T, KC_G, COMBO_END}; +const uint16_t PROGMEM combo_hash[] = {KC_X, KC_U, COMBO_END}; +const uint16_t PROGMEM combo_minus[] = {KC_T, KC_R, COMBO_END}; +const uint16_t PROGMEM combo_percent[] = {KC_B, KC_U, COMBO_END}; +const uint16_t PROGMEM combo_pipe[] = {KC_I, KC_E, COMBO_END}; +const uint16_t PROGMEM combo_plus[] = {KC_T, KC_L, COMBO_END}; +const uint16_t PROGMEM combo_question_mark[] = {KC_P, KC_D, COMBO_END}; +const uint16_t PROGMEM combo_quote[] = {KC_T, KC_N, COMBO_END}; +const uint16_t PROGMEM combo_quote_double[] = {KC_A, KC_U, COMBO_END}; +const uint16_t PROGMEM combo_semicolon[] = {KC_G, KC_H, COMBO_END}; +const uint16_t PROGMEM combo_slash[] = {KC_S, KC_L, COMBO_END}; +const uint16_t PROGMEM combo_star[] = {KC_S, KC_T, COMBO_END}; +const uint16_t PROGMEM combo_tilde[] = {KC_I, KC_U, COMBO_END}; +const uint16_t PROGMEM combo_underscore[] = {KC_S, KC_R, COMBO_END}; + +const uint16_t PROGMEM combo_angle_bracket_left[] = {KC_C, KC_S, COMBO_END}; +const uint16_t PROGMEM combo_angle_bracket_right[] = {KC_S, KC_H, COMBO_END}; +const uint16_t PROGMEM combo_bracket_left[] = {KC_I, KC_O, COMBO_END}; +const uint16_t PROGMEM combo_bracket_right[] = {KC_O, KC_U, COMBO_END}; +const uint16_t PROGMEM combo_curly_bracket_left[] = {KC_X, KC_E, COMBO_END}; +const uint16_t PROGMEM combo_curly_bracket_right[] = {KC_E, KC_Y, COMBO_END}; +const uint16_t PROGMEM combo_parenthesis_left[] = {KC_T, KC_D, COMBO_END}; +const uint16_t PROGMEM combo_parenthesis_right[] = {KC_D, KC_R, COMBO_END}; + +/* Non qwerty */ +const uint16_t PROGMEM combo_euro[] = {KC_X, KC_Q, COMBO_END}; /* One hand special */ -const uint16_t PROGMEM combo_control_right[] = {LT(_NUMERIC, KC_ENT), KC_R, COMBO_END}; -const uint16_t PROGMEM combo_control_shift_right[] = {LT(_NUMERIC, KC_ENT), KC_S, COMBO_END}; - -const uint16_t PROGMEM combo_shift_left[] = {KC_LCPO, KC_LALT, COMBO_END}; -// const uint16_t PROGMEM combo_altgr_left[] = {LT(_MOUSE, KC_COMM), KC_LALT, COMBO_END}; -// const uint16_t PROGMEM combo_del_left[] = {GUI_T(KC_ESC), KC_K, COMBO_END}; -const uint16_t PROGMEM combo_control_shift_left[] = {LT(_MOUSE, KC_COMM), KC_LALT, COMBO_END}; +const uint16_t PROGMEM combo_control_right[] = {LT(_NUMERIC, KC_ENT), KC_R, COMBO_END}; +const uint16_t PROGMEM combo_control_shift_right[] = {LT(_NUMERIC, KC_ENT), KC_S, COMBO_END}; +const uint16_t PROGMEM combo_shift_left[] = {LT(_MOUSE, KC_COMM), US_EACU, COMBO_END}; +const uint16_t PROGMEM combo_alt_left[] = {CTL_T(KC_SPACE), US_EACU, COMBO_END}; +const uint16_t PROGMEM combo_control_shift_left[] = {CTL_T(KC_SPACE), GUI_T(KC_ESC), COMBO_END}; /* Sequences fo keys */ combo_t key_combos[] = { - [LEADER] = COMBO(combo_leader, KC_LEAD), - [BOOTLOADER] = COMBO(combo_bootloader, QK_BOOTLOADER), + [LEADER] = COMBO(combo_leader, QK_LEAD), + [BOOTLOADER] = COMBO(combo_bootloader, QK_BOOTLOADER), - [LAYER_ADJUST] = COMBO(combo_adjust, OSL(_ADJUST)), - [LAYER_FN] = COMBO(combo_fn, OSL(_FN)), - [LAYER_LEFT_HAND] = COMBO(combo_left_hand, OSL(_LEFT_HAND)), - - /* -- */ - // [ENTER_SHIFTED] = COMBO(combo_enter_shifted, S(KC_ENT)), - [ALT_SHIFT] = COMBO(combo_alt_shift, A(S(XXXXXXX))), - [CONTROL_SHIFT] = COMBO(combo_control_shift, C(S(XXXXXXX))), - [CONTROL_ALT] = COMBO(combo_control_alt, C(A(XXXXXXX))), - [CONTROL_SHIFT_ALT] = COMBO(combo_control_shift_alt, C(S(A(XXXXXXX)))), - [RIGHT_ALT] = COMBO(combo_right_alt, KC_RALT), + [LAYER_ADJ] = COMBO(combo_ADJ, OSL(_ADJ)), + [LAYER_FN] = COMBO(combo_fn, OSL(_FN)), + [LAYER_LEFT_HAND] = COMBO(combo_left_hand, OSL(_LEFT_HAND)), + [LAYER_MOUSE] = COMBO(combo_mouse, TG(_MOUSE)), + [LAYER_MOUSE_BACK] = COMBO(combo_mouse_back, TG(_MOUSE)), /* French */ - [E_ACUTE] = COMBO(combo_e_acute, CS_E_ACUTE), - [C_CEDILLA] = COMBO(combo_c_cedilla, CS_C_CEDILLA), - [E_A] = COMBO(combo_ea, CS_AE), - [E_O] = COMBO(combo_eo, CS_OE), - - [A_GRAVE] = COMBO(combo_a_grave, CS_A_GRAVE), - [E_GRAVE] = COMBO(combo_e_grave, CS_E_GRAVE), - [I_GRAVE] = COMBO(combo_i_grave, CS_I_GRAVE), - [O_GRAVE] = COMBO(combo_o_grave, CS_O_GRAVE), - [U_GRAVE] = COMBO(combo_u_grave, CS_U_GRAVE), - - [A_CIRCUMFLEX] = COMBO(combo_a_circumflex, CS_A_CIRCUMFLEX), - [E_CIRCUMFLEX] = COMBO(combo_e_circumflex, CS_E_CIRCUMFLEX), - [I_CIRCUMFLEX] = COMBO(combo_i_circumflex, CS_I_CIRCUMFLEX), - [O_CIRCUMFLEX] = COMBO(combo_o_circumflex, CS_O_CIRCUMFLEX), - [U_CIRCUMFLEX] = COMBO(combo_u_circumflex, CS_U_CIRCUMFLEX), - - [A_DIAERESIS] = COMBO(combo_a_diaeresis, CS_A_DIAERESIS), - [E_DIAERESIS] = COMBO(combo_e_diaeresis, CS_E_DIAERESIS), - [I_DIAERESIS] = COMBO(combo_i_diaeresis, CS_I_DIAERESIS), - [O_DIAERESIS] = COMBO(combo_o_diaeresis, CS_O_DIAERESIS), - [U_DIAERESIS] = COMBO(combo_u_diaeresis, CS_U_DIAERESIS), - [Y_DIAERESIS] = COMBO(combo_y_diaeresis, CS_Y_DIAERESIS), + [C_CEDILLA] = COMBO(combo_c_cedilla, US_CCED), + [E_A] = COMBO(combo_ea, US_AE), + [E_O] = COMBO(combo_eo, US_OE), + + [A_GRAVE] = COMBO(combo_a_grave, CS_A_GRAVE), + [E_GRAVE] = COMBO(combo_e_grave, CS_E_GRAVE), + [U_GRAVE] = COMBO(combo_u_grave, CS_U_GRAVE), + + [A_CIRCUMFLEX] = COMBO(combo_a_circumflex, CS_A_CIRCUMFLEX), + [E_CIRCUMFLEX] = COMBO(combo_e_circumflex, CS_E_CIRCUMFLEX), + [I_CIRCUMFLEX] = COMBO(combo_i_circumflex, CS_I_CIRCUMFLEX), + [O_CIRCUMFLEX] = COMBO(combo_o_circumflex, CS_O_CIRCUMFLEX), + [U_CIRCUMFLEX] = COMBO(combo_u_circumflex, CS_U_CIRCUMFLEX), + + [E_DIAERESIS] = COMBO(combo_e_diaeresis, CS_E_DIAERESIS), + [I_DIAERESIS] = COMBO(combo_i_diaeresis, CS_I_DIAERESIS), + [U_DIAERESIS] = COMBO(combo_u_diaeresis, CS_U_DIAERESIS), + [Y_DIAERESIS] = COMBO(combo_y_diaeresis, CS_Y_DIAERESIS), /* -- */ - [AMPERSAND] = COMBO(combo_ampersand, KC_AMPR), - [AT_SIGN] = COMBO(combo_at_sign, KC_AT), - [BACKSLASH] = COMBO(combo_backslash, KC_BSLS), - [CIRCUMFLEX] = COMBO(combo_circumflex, KC_CIRC), - [COLON] = COMBO(combo_colon, KC_COLON), - [DOLLAR] = COMBO(combo_dollar, KC_DLR), - [EQUAL] = COMBO(combo_equal, KC_EQL), - [EXCLAMATION_MARK] = COMBO(combo_exclamation_mark, KC_EXCLAIM), - [GRAVE] = COMBO(combo_grave, KC_GRV), - [HASH] = COMBO(combo_hash, KC_HASH), - [MINUS] = COMBO(combo_minus, KC_MINS), - [PERCENT] = COMBO(combo_percent, KC_PERC), - [PIPE] = COMBO(combo_pipe, KC_PIPE), - [PLUS] = COMBO(combo_plus, KC_PLUS), - [QUESTION_MARK] = COMBO(combo_question_mark, KC_QUESTION), - [QUOTE] = COMBO(combo_quote, KC_QUOTE), - [QUOTE_DOUBLE] = COMBO(combo_quote_double, KC_DOUBLE_QUOTE), - [SEMICOLON] = COMBO(combo_semicolon, KC_SEMICOLON), - [SLASH] = COMBO(combo_slash, KC_SLSH), - [STAR] = COMBO(combo_star, KC_ASTR), - [TILDE] = COMBO(combo_tilde, KC_TILD), - [UNDERSCORE] = COMBO(combo_underscore, KC_UNDS), - - [ANGLE_BRACKET_LEFT] = COMBO(combo_angle_bracket_left, KC_LABK), - [ANGLE_BRACKET_RIGHT] = COMBO(combo_angle_bracket_right, KC_RABK), - - [BRACKET_LEFT] = COMBO(combo_bracket_left, KC_LEFT_BRACKET), - [BRACKET_RIGHT] = COMBO(combo_bracket_right, KC_RIGHT_BRACKET), - [CURLY_BRACKET_LEFT] = COMBO(combo_curly_bracket_left, KC_LEFT_CURLY_BRACE), - [CURLY_BRACKET_RIGHT] = COMBO(combo_curly_bracket_right, KC_RIGHT_CURLY_BRACE), - [PARENTHESIS_LEFT] = COMBO(combo_parenthesis_left, KC_LEFT_PAREN), - [PARENTHESIS_RIGHT] COMBO(combo_parenthesis_right, KC_RIGHT_PAREN), + [AMPERSAND] = COMBO(combo_ampersand, KC_AMPERSAND), + [AT_SIGN] = COMBO(combo_at_sign, KC_AT), + [BACKSLASH] = COMBO(combo_backslash, KC_BACKSLASH), + [CIRCUMFLEX] = COMBO(combo_circumflex, KC_CIRCUMFLEX), + [COLON] = COMBO(combo_colon, KC_COLON), + [DOLLAR] = COMBO(combo_dollar, KC_DOLLAR), + [EQUAL] = COMBO(combo_equal, KC_EQUAL), + [EXCLAMATION_MARK] = COMBO(combo_exclamation_mark, KC_EXCLAIM), + [GRAVE] = COMBO(combo_grave, KC_GRAVE), + [HASH] = COMBO(combo_hash, KC_HASH), + [MINUS] = COMBO(combo_minus, KC_MINUS), + [PERCENT] = COMBO(combo_percent, KC_PERCENT), + [PIPE] = COMBO(combo_pipe, KC_PIPE), + [PLUS] = COMBO(combo_plus, KC_PLUS), + [QUESTION_MARK] = COMBO(combo_question_mark, KC_QUESTION), + [QUOTE] = COMBO(combo_quote, KC_QUOTE), + [QUOTE_DOUBLE] = COMBO(combo_quote_double, KC_DOUBLE_QUOTE), + [SEMICOLON] = COMBO(combo_semicolon, KC_SEMICOLON), + [SLASH] = COMBO(combo_slash, KC_SLASH), + [STAR] = COMBO(combo_star, KC_ASTERISK), + [TILDE] = COMBO(combo_tilde, KC_TILDE), + [UNDERSCORE] = COMBO(combo_underscore, KC_UNDERSCORE), + + [ANGLE_BRACKET_LEFT] = COMBO(combo_angle_bracket_left, KC_LEFT_ANGLE_BRACKET), + [ANGLE_BRACKET_RIGHT] = COMBO(combo_angle_bracket_right, KC_RIGHT_ANGLE_BRACKET), + + [BRACKET_LEFT] = COMBO(combo_bracket_left, KC_LEFT_BRACKET), + [BRACKET_RIGHT] = COMBO(combo_bracket_right, KC_RIGHT_BRACKET), + [CURLY_BRACKET_LEFT] = COMBO(combo_curly_bracket_left, KC_LEFT_CURLY_BRACE), + [CURLY_BRACKET_RIGHT] = COMBO(combo_curly_bracket_right, KC_RIGHT_CURLY_BRACE), + [PARENTHESIS_LEFT] = COMBO(combo_parenthesis_left, KC_LEFT_PAREN), + [PARENTHESIS_RIGHT] COMBO(combo_parenthesis_right, KC_RIGHT_PAREN), + + /* Non qwerty */ + [EURO] COMBO(combo_euro, US_EURO), /* One hand special */ - [CONTROL_RIGHT] = COMBO(combo_control_right, KC_RCTL), - [CONTROL_SHIFT_RIGHT] = COMBO(combo_control_shift_right, C(S(XXXXXXX))), + [CONTROL_RIGHT] = COMBO(combo_control_right, KC_RCTL), + [CONTROL_SHIFT_RIGHT] = COMBO(combo_control_shift_right, C(S(XXXXXXX))), - [SHIFT_LEFT] = COMBO(combo_shift_left, KC_LSFT), - // [ALTGR_LEFT] = COMBO(combo_altgr_left, KC_ALGR), - [CONTROL_SHIFT_LEFT] = COMBO(combo_control_shift_left, C(S(XXXXXXX))), - // [DEL_LEFT] = COMBO(combo_del_left, KC_BSPC), + [ALT_LEFT] = COMBO(combo_alt_left, KC_LALT), + [SHIFT_LEFT] = COMBO(combo_shift_left, KC_LSFT), + [CONTROL_SHIFT_LEFT] = COMBO(combo_control_shift_left, C(S(XXXXXXX))), }; diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/leader.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/leader.c index 7cfd30af6d4b..1964fb428feb 100644 --- a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/leader.c +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/leader.c @@ -2,267 +2,207 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H - -LEADER_EXTERNS(); - -void matrix_scan_user(void) { - LEADER_DICTIONARY() { - leading = false; - leader_end(); - - // SEQ_ONE_KEY(KC_F) { - // // Anything you can do in a macro. - // SEND_STRING("QMK is awesome."); } - - - SEQ_TWO_KEYS(KC_M, KC_S) { - SEND_STRING("f@linguenheld.fr"); } - SEQ_TWO_KEYS(KC_M, KC_L) { - SEND_STRING("florent@linguenheld.fr"); } - SEQ_TWO_KEYS(KC_F, KC_L) { - SEND_STRING("FLinguenheld"); } - - SEQ_THREE_KEYS(KC_T, KC_E, KC_S) { - SEND_STRING("test01234"); } - SEQ_THREE_KEYS(KC_A, KC_D, KC_M) { - SEND_STRING("admin01234"); } - - SEQ_ONE_KEY(KC_C) { - SEND_STRING(" | xclip -r -selection clipboard"); } - - /* Degree */ - SEQ_THREE_KEYS(KC_D, KC_E, KC_G) { - send_unicode_string("°"); } +#include "keycodes.h" +#include + +void leader_end_user(void) { + if (leader_sequence_two_keys(KC_M, KC_S)) { + SEND_STRING("f@linguenheld.fr"); + } else if (leader_sequence_two_keys(KC_M, KC_L)) { + SEND_STRING("florent@linguenheld.fr"); + } else if (leader_sequence_two_keys(KC_F, KC_L)) { + SEND_STRING("flinguenheld"); + + } else if (leader_sequence_three_keys(KC_D, KC_O, KC_T)) { + SEND_STRING("https://github.com/flinguenheld/dotfiles"); + } else if (leader_sequence_three_keys(KC_H, KC_U, KC_B)) { + SEND_STRING("https://github.com/flinguenheld/"); + } else if (leader_sequence_three_keys(KC_Q, KC_M, KC_K)) { + SEND_STRING("$HOME/qmk_firmware/keyboards/splitkb/aurora/sweep/keymaps/sweep_keymap"); + } else if (leader_sequence_three_keys(KC_Q, KC_M, KC_C)) { + SEND_STRING("qmk compile && qmk flash"); + + } else if (leader_sequence_three_keys(KC_T, KC_E, KC_S)) { + SEND_STRING("test01234"); + } else if (leader_sequence_three_keys(KC_A, KC_D, KC_M)) { + SEND_STRING("admin01234"); + + } else if (leader_sequence_one_key(KC_C)) { + SEND_STRING(" | xclip -r -selection clipboard"); + + /* Keyring requests, improbable combinaisons used by i3 */ + } else if (leader_sequence_three_keys(KC_G, KC_I, KC_T)) { + register_code(KC_LEFT_GUI); + register_code(KC_LEFT_SHIFT); + register_code(KC_LEFT_CTRL); + register_code(KC_0); + unregister_code(KC_0); + unregister_code(KC_LEFT_GUI); + unregister_code(KC_LEFT_SHIFT); + unregister_code(KC_LEFT_CTRL); + + } else if (leader_sequence_three_keys(KC_M, KC_A, KC_I)) { + register_code(KC_LEFT_GUI); + register_code(KC_LEFT_SHIFT); + register_code(KC_LEFT_CTRL); + register_code(KC_1); + unregister_code(KC_1); + unregister_code(KC_LEFT_GUI); + unregister_code(KC_LEFT_SHIFT); + unregister_code(KC_LEFT_CTRL); + + } else if (leader_sequence_three_keys(KC_P, KC_A, KC_S)) { + register_code(KC_LEFT_GUI); + register_code(KC_LEFT_SHIFT); + register_code(KC_LEFT_CTRL); + register_code(KC_2); + unregister_code(KC_2); + unregister_code(KC_LEFT_GUI); + unregister_code(KC_LEFT_SHIFT); + unregister_code(KC_LEFT_CTRL); + + /* ----- */ + } else if (leader_sequence_three_keys(KC_D, KC_E, KC_G)) { + tap_code16(US_DEG); // ° + } else if (leader_sequence_three_keys(KC_D, KC_I, KC_A)) { + tap_code16(US_OSTR); // ø + } else if (leader_sequence_three_keys(KC_S, KC_E, KC_C)) { + tap_code16(US_SECT); // § /* Copyright / Register */ - SEQ_THREE_KEYS(KC_C, KC_O, KC_P) { - send_unicode_string("©"); } - SEQ_THREE_KEYS(KC_R, KC_E, KC_G) { - send_unicode_string("®"); } - - /* Diameter */ - SEQ_THREE_KEYS(KC_D, KC_I, KC_A) { - send_unicode_string("ø"); } - SEQ_FOUR_KEYS(KC_D, KC_I, KC_A, KC_M) { - send_unicode_string("Ø"); } + } else if (leader_sequence_three_keys(KC_C, KC_O, KC_P)) { + tap_code16(US_COPY); // © + } else if (leader_sequence_three_keys(KC_R, KC_E, KC_G)) { + tap_code16(US_REGD); // ® /* Currency */ - SEQ_THREE_KEYS(KC_E, KC_U, KC_R) { - send_unicode_string("€"); } - SEQ_THREE_KEYS(KC_P, KC_O, KC_U) { - send_unicode_string("£"); } - SEQ_THREE_KEYS(KC_Y, KC_E, KC_N) { - send_unicode_string("¥"); } - SEQ_THREE_KEYS(KC_C, KC_E, KC_N) { - send_unicode_string("¢"); } + } else if (leader_sequence_three_keys(KC_E, KC_U, KC_R)) { + tap_code16(US_EURO); // € + } else if (leader_sequence_three_keys(KC_P, KC_O, KC_U)) { + tap_code16(US_PND); // £ + } else if (leader_sequence_three_keys(KC_Y, KC_E, KC_N)) { + tap_code16(US_YEN); // ¥ + } else if (leader_sequence_three_keys(KC_C, KC_E, KC_N)) { + tap_code16(US_CENT); // ¢ /* Fractions */ - SEQ_THREE_KEYS(KC_F, KC_C, KC_T) { - send_unicode_string("¼"); } - SEQ_THREE_KEYS(KC_F, KC_C, KC_G) { - send_unicode_string("½"); } - SEQ_THREE_KEYS(KC_F, KC_H, KC_T) { - send_unicode_string("¾"); } + } else if (leader_sequence_three_keys(KC_F, KC_C, KC_T)) { + tap_code16(US_QRTR); // ¼ + } else if (leader_sequence_three_keys(KC_F, KC_C, KC_G)) { + tap_code16(US_HALF); // ½ + } else if (leader_sequence_three_keys(KC_F, KC_H, KC_T)) { + tap_code16(US_TQTR); // ¾ /* Maths */ - SEQ_THREE_KEYS(KC_M, KC_U, KC_L) { - send_unicode_string("×"); } - SEQ_THREE_KEYS(KC_D, KC_I, KC_V) { - send_unicode_string("÷"); } - SEQ_TWO_KEYS(KC_P, KC_M) { - send_unicode_string("±"); } - SEQ_THREE_KEYS(KC_I, KC_N, KC_E) { - send_unicode_string("≠"); } - SEQ_THREE_KEYS(KC_A, KC_L, KC_M) { - send_unicode_string("≈"); } - SEQ_THREE_KEYS(KC_S, KC_Q, KC_U) { - send_unicode_string("√"); } - SEQ_THREE_KEYS(KC_I, KC_N, KC_F) { - send_unicode_string("∞"); } - SEQ_TWO_KEYS(KC_LABK, KC_LABK) { - send_unicode_string("≤"); } - SEQ_TWO_KEYS(KC_RABK, KC_RABK) { - send_unicode_string("≥"); } + } else if (leader_sequence_three_keys(KC_M, KC_U, KC_L)) { + tap_code16(US_MUL); // × + } else if (leader_sequence_three_keys(KC_D, KC_I, KC_V)) { + tap_code16(US_DIV); // ÷ + } else if (leader_sequence_two_keys(KC_P, KC_M)) { + send_unicode_string("±"); + } else if (leader_sequence_three_keys(KC_I, KC_N, KC_E)) { + send_unicode_string("≠"); + } else if (leader_sequence_three_keys(KC_A, KC_L, KC_M)) { + send_unicode_string("≈"); + } else if (leader_sequence_three_keys(KC_S, KC_Q, KC_U)) { + send_unicode_string("√"); + } else if (leader_sequence_three_keys(KC_I, KC_N, KC_F)) { + send_unicode_string("∞"); + } else if (leader_sequence_two_keys(KC_LABK, KC_LABK)) { + send_unicode_string("≤"); + } else if (leader_sequence_two_keys(KC_RABK, KC_RABK)) { + send_unicode_string("≥"); /* Greek */ - SEQ_TWO_KEYS(KC_P, KC_I) { - send_unicode_string("π"); } - SEQ_THREE_KEYS(KC_P, KC_I, KC_I) { - send_unicode_string("Π"); } - - SEQ_THREE_KEYS(KC_O, KC_M, KC_E) { - send_unicode_string("ω"); } - SEQ_FOUR_KEYS(KC_O, KC_M, KC_E, KC_G) { - send_unicode_string("Ω"); } + } else if (leader_sequence_three_keys(KC_B, KC_E, KC_T)) { + tap_code16(US_SS); // ß + } else if (leader_sequence_three_keys(KC_M, KC_I, KC_C)) { + tap_code16(US_MICR); // µ + } else if (leader_sequence_two_keys(KC_P, KC_I)) { + send_unicode_string("π"); + } else if (leader_sequence_three_keys(KC_P, KC_I, KC_I)) { + send_unicode_string("Π"); + + } else if (leader_sequence_three_keys(KC_O, KC_M, KC_E)) { + send_unicode_string("ω"); + } else if (leader_sequence_four_keys(KC_O, KC_M, KC_E, KC_G)) { + send_unicode_string("Ω"); /* Icons */ - SEQ_THREE_KEYS(KC_F, KC_L, KC_A) { - send_unicode_string("⚡"); } - SEQ_THREE_KEYS(KC_S, KC_T, KC_A) { - send_unicode_string("⭐"); } - SEQ_THREE_KEYS(KC_S, KC_P, KC_A) { - send_unicode_string("✨"); } - SEQ_THREE_KEYS(KC_P, KC_O, KC_P) { - send_unicode_string("🎉"); } - SEQ_THREE_KEYS(KC_R, KC_E, KC_C) { - send_unicode_string("♻️"); } - SEQ_THREE_KEYS(KC_L, KC_O, KC_V) { - send_unicode_string("❤️"); } - SEQ_THREE_KEYS(KC_F, KC_I, KC_R) { - send_unicode_string("🔥"); } - SEQ_THREE_KEYS(KC_B, KC_O, KC_M) { - send_unicode_string("💣"); } - SEQ_FOUR_KEYS(KC_B, KC_O, KC_U, KC_M) { - send_unicode_string("💥"); } - SEQ_THREE_KEYS(KC_R, KC_O, KC_C) { - send_unicode_string("🚀"); } - SEQ_THREE_KEYS(KC_T, KC_E, KC_L) { - send_unicode_string("🔭"); } - SEQ_THREE_KEYS(KC_M, KC_A, KC_G) { - send_unicode_string("🔎"); } - SEQ_THREE_KEYS(KC_W, KC_A, KC_R) { - send_unicode_string("⚠️"); } - - SEQ_THREE_KEYS(KC_B, KC_U, KC_L) { - send_unicode_string("💡"); } - SEQ_FOUR_KEYS(KC_I, KC_N, KC_F, KC_O) { - send_unicode_string("ℹ️"); } - SEQ_THREE_KEYS(KC_G, KC_E, KC_A) { - send_unicode_string("⚙️"); } - SEQ_THREE_KEYS(KC_L, KC_I, KC_N) { - send_unicode_string("🔗"); } - SEQ_THREE_KEYS(KC_P, KC_I, KC_N) { - send_unicode_string("📌"); } - SEQ_FOUR_KEYS(KC_F, KC_L, KC_A, KC_G) { - send_unicode_string("🚩"); } - SEQ_THREE_KEYS(KC_B, KC_A, KC_L) { - send_unicode_string("🎈"); } - SEQ_THREE_KEYS(KC_G, KC_I, KC_F) { - send_unicode_string("🎁"); } - - SEQ_THREE_KEYS(KC_P, KC_E, KC_N) { - send_unicode_string("✏️"); } - SEQ_THREE_KEYS(KC_K, KC_E, KC_Y) { - send_unicode_string("🔑"); } - SEQ_THREE_KEYS(KC_B, KC_O, KC_X) { - send_unicode_string("🧰"); } - - SEQ_TWO_KEYS(KC_O, KC_K) { - send_unicode_string("👌"); } - SEQ_THREE_KEYS(KC_O, KC_W, KC_D) { - send_unicode_string("⛔"); } - - SEQ_ONE_KEY(KC_V) { - send_unicode_string("✓"); } - SEQ_TWO_KEYS(KC_V, KC_B) { - send_unicode_string("☑"); } - SEQ_TWO_KEYS(KC_V, KC_G) { - send_unicode_string("✅"); } - - SEQ_ONE_KEY(KC_X) { - send_unicode_string("✗"); } - SEQ_TWO_KEYS(KC_X, KC_B) { - send_unicode_string("☒"); } - SEQ_TWO_KEYS(KC_X, KC_G) { - send_unicode_string("❎"); } - SEQ_TWO_KEYS(KC_X, KC_R) { - send_unicode_string("❌"); } - - SEQ_ONE_KEY(KC_QUESTION) { - send_unicode_string("❔"); } - SEQ_ONE_KEY(KC_EXCLAIM) { - send_unicode_string("❕"); } - SEQ_TWO_KEYS(KC_QUESTION, KC_QUESTION) { - send_unicode_string("❓"); } - SEQ_TWO_KEYS(KC_EXCLAIM, KC_EXCLAIM) { - send_unicode_string("❗"); } - - SEQ_THREE_KEYS(KC_C, KC_O, KC_F) { - send_unicode_string("☕"); } - SEQ_THREE_KEYS(KC_U, KC_M, KC_B) { - send_unicode_string("☔"); } - - SEQ_THREE_KEYS(KC_L, KC_O, KC_L) { - send_unicode_string("😀"); } - SEQ_THREE_KEYS(KC_M, KC_D, KC_R) { - send_unicode_string("🤣"); } - SEQ_THREE_KEYS(KC_K, KC_I, KC_S) { - send_unicode_string("😙"); } - SEQ_THREE_KEYS(KC_A, KC_N, KC_G) { - send_unicode_string("😇"); } - SEQ_THREE_KEYS(KC_G, KC_L, KC_A) { - send_unicode_string("😎"); } - SEQ_THREE_KEYS(KC_A, KC_N, KC_G) { - send_unicode_string("🤬"); } - SEQ_THREE_KEYS(KC_F, KC_E, KC_A) { - send_unicode_string("😱"); } - SEQ_THREE_KEYS(KC_N, KC_E, KC_U) { - send_unicode_string("😐"); } - SEQ_THREE_KEYS(KC_T, KC_H, KC_I) { - send_unicode_string("🤔"); } - SEQ_THREE_KEYS(KC_Z, KC_I, KC_P) { - send_unicode_string("🤐"); } - SEQ_THREE_KEYS(KC_S, KC_U, KC_R) { - send_unicode_string("😯"); } - SEQ_THREE_KEYS(KC_R, KC_O, KC_L) { - send_unicode_string("🙄"); } - SEQ_THREE_KEYS(KC_M, KC_O, KC_O) { - send_unicode_string("🌝"); } - SEQ_THREE_KEYS(KC_H, KC_U, KC_G) { - send_unicode_string("🫂"); } - - SEQ_THREE_KEYS(KC_H, KC_E, KC_N) { - send_unicode_string("🐔"); } - SEQ_THREE_KEYS(KC_R, KC_O, KC_O) { - send_unicode_string("🐓"); } - SEQ_THREE_KEYS(KC_D, KC_U, KC_C) { - send_unicode_string("🦆"); } - SEQ_THREE_KEYS(KC_P, KC_E, KC_A) { - send_unicode_string("🦚"); } - SEQ_THREE_KEYS(KC_B, KC_I, KC_R) { - send_unicode_string("🐦"); } + } else if (leader_sequence_three_keys(KC_L, KC_O, KC_V)) { + send_unicode_string("♥"); + } else if (leader_sequence_three_keys(KC_F, KC_L, KC_A)) { + send_unicode_string("⚡"); + } else if (leader_sequence_three_keys(KC_S, KC_T, KC_A)) { + send_unicode_string("✶"); + } else if (leader_sequence_three_keys(KC_B, KC_U, KC_L)) { + send_unicode_string("💡"); + } else if (leader_sequence_four_keys(KC_I, KC_N, KC_F, KC_O)) { + send_unicode_string("ℹ️"); + } else if (leader_sequence_three_keys(KC_G, KC_E, KC_A)) { + send_unicode_string("⚙️"); + + } else if (leader_sequence_one_key(KC_V)) { + send_unicode_string("✓"); + } else if (leader_sequence_two_keys(KC_V, KC_B)) { + send_unicode_string("✔"); + } else if (leader_sequence_two_keys(KC_V, KC_V)) { + send_unicode_string("✅"); + + } else if (leader_sequence_one_key(KC_X)) { + send_unicode_string("✗"); + } else if (leader_sequence_two_keys(KC_X, KC_B)) { + send_unicode_string("✘"); + + } else if (leader_sequence_one_key(KC_QUESTION)) { + send_unicode_string("❔"); + } else if (leader_sequence_one_key(KC_EXCLAIM)) { + send_unicode_string("❗"); + } else if (leader_sequence_two_keys(KC_QUESTION, KC_QUESTION)) { + send_unicode_string("❓"); + } else if (leader_sequence_two_keys(KC_EXCLAIM, KC_EXCLAIM)) { + send_unicode_string("❕"); /* Subscript / superscript */ - SEQ_THREE_KEYS(KC_U, KC_P, KC_F) { - send_unicode_string("⁰"); } - SEQ_THREE_KEYS(KC_D, KC_N, KC_F) { - send_unicode_string("₀"); } - SEQ_THREE_KEYS(KC_U, KC_P, KC_C) { - send_unicode_string("¹"); } - SEQ_THREE_KEYS(KC_D, KC_N, KC_C) { - send_unicode_string("₁"); } - SEQ_THREE_KEYS(KC_U, KC_P, KC_G) { - send_unicode_string("²"); } - SEQ_THREE_KEYS(KC_D, KC_N, KC_G) { - send_unicode_string("₂"); } - SEQ_THREE_KEYS(KC_U, KC_P, KC_H) { - send_unicode_string("³"); } - SEQ_THREE_KEYS(KC_D, KC_N, KC_H) { - send_unicode_string("₃"); } - SEQ_THREE_KEYS(KC_U, KC_P, KC_T) { - send_unicode_string("⁴"); } - SEQ_THREE_KEYS(KC_D, KC_N, KC_T) { - send_unicode_string("₄"); } - SEQ_THREE_KEYS(KC_U, KC_P, KC_S) { - send_unicode_string("⁵"); } - SEQ_THREE_KEYS(KC_D, KC_N, KC_S) { - send_unicode_string("₅"); } - SEQ_THREE_KEYS(KC_U, KC_P, KC_R) { - send_unicode_string("⁶"); } - SEQ_THREE_KEYS(KC_D, KC_N, KC_R) { - send_unicode_string("₆"); } - SEQ_THREE_KEYS(KC_U, KC_P, KC_P) { - send_unicode_string("⁷"); } - SEQ_THREE_KEYS(KC_D, KC_N, KC_P) { - send_unicode_string("₇"); } - SEQ_THREE_KEYS(KC_U, KC_P, KC_D) { - send_unicode_string("⁸"); } - SEQ_THREE_KEYS(KC_D, KC_N, KC_D) { - send_unicode_string("₈"); } - SEQ_THREE_KEYS(KC_U, KC_P, KC_L) { - send_unicode_string("⁹"); } - SEQ_THREE_KEYS(KC_D, KC_N, KC_L) { - send_unicode_string("₉"); } - + } else if (leader_sequence_three_keys(KC_U, KC_P, KC_N)) { + send_unicode_string("⁰"); + } else if (leader_sequence_three_keys(KC_D, KC_N, KC_N)) { + send_unicode_string("₀"); + } else if (leader_sequence_three_keys(KC_U, KC_P, KC_C)) { + tap_code16(US_SUP1); // ¹ + } else if (leader_sequence_three_keys(KC_D, KC_N, KC_C)) { + send_unicode_string("₁"); + } else if (leader_sequence_three_keys(KC_U, KC_P, KC_G)) { + tap_code16(US_SUP2); // ² + } else if (leader_sequence_three_keys(KC_D, KC_N, KC_G)) { + send_unicode_string("₂"); + } else if (leader_sequence_three_keys(KC_U, KC_P, KC_H)) { + tap_code16(US_SUP3); // ³ + } else if (leader_sequence_three_keys(KC_D, KC_N, KC_H)) { + send_unicode_string("₃"); + } else if (leader_sequence_three_keys(KC_U, KC_P, KC_T)) { + send_unicode_string("⁴"); + } else if (leader_sequence_three_keys(KC_D, KC_N, KC_T)) { + send_unicode_string("₄"); + } else if (leader_sequence_three_keys(KC_U, KC_P, KC_S)) { + send_unicode_string("⁵"); + } else if (leader_sequence_three_keys(KC_D, KC_N, KC_S)) { + send_unicode_string("₅"); + } else if (leader_sequence_three_keys(KC_U, KC_P, KC_R)) { + send_unicode_string("⁶"); + } else if (leader_sequence_three_keys(KC_D, KC_N, KC_R)) { + send_unicode_string("₆"); + } else if (leader_sequence_three_keys(KC_U, KC_P, KC_P)) { + send_unicode_string("⁷"); + } else if (leader_sequence_three_keys(KC_D, KC_N, KC_P)) { + send_unicode_string("₇"); + } else if (leader_sequence_three_keys(KC_U, KC_P, KC_D)) { + send_unicode_string("⁸"); + } else if (leader_sequence_three_keys(KC_D, KC_N, KC_D)) { + send_unicode_string("₈"); + } else if (leader_sequence_three_keys(KC_U, KC_P, KC_L)) { + send_unicode_string("⁹"); + } else if (leader_sequence_three_keys(KC_D, KC_N, KC_L)) { + send_unicode_string("₉"); }; } diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keycodes.h b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keycodes.h index b90b28fda41a..4439f958b7e4 100644 --- a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keycodes.h +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keycodes.h @@ -2,43 +2,34 @@ // SPDX-License-Identifier: GPL-2.0-or-later #pragma once - -enum layers { - _BASE, - _NUMERIC, - _ARROWS, - _MOUSE, - _ADJUST, - _FN, - _LEFT_HAND, +#include "keymap_us_extended.h" + +enum custom_layers { + _BASE, + _NUMERIC, + _ARROWS, + _MOUSE, + _ADJ, + _FN, + _LEFT_HAND, }; enum custom_keys { - UNICODE = SAFE_RANGE, // Shortcut to write unicodes, see numeric layer - - /* See auto-shift */ - CS_E_ACUTE, - - CS_A_GRAVE, - CS_E_GRAVE, - CS_I_GRAVE, - CS_O_GRAVE, - CS_U_GRAVE, - - CS_C_CEDILLA, - CS_AE, - CS_OE, - - CS_A_CIRCUMFLEX, - CS_E_CIRCUMFLEX, - CS_I_CIRCUMFLEX, - CS_O_CIRCUMFLEX, - CS_U_CIRCUMFLEX, - - CS_A_DIAERESIS, - CS_E_DIAERESIS, - CS_I_DIAERESIS, - CS_O_DIAERESIS, - CS_U_DIAERESIS, - CS_Y_DIAERESIS, + UNICODE = QK_KB_0, // Replace SAFE_RANGE, see pr #19909 + + /* See auto-shift */ + CS_A_GRAVE, + CS_E_GRAVE, + CS_U_GRAVE, + + CS_A_CIRCUMFLEX, + CS_E_CIRCUMFLEX, + CS_I_CIRCUMFLEX, + CS_O_CIRCUMFLEX, + CS_U_CIRCUMFLEX, + + CS_E_DIAERESIS, + CS_I_DIAERESIS, + CS_U_DIAERESIS, + CS_Y_DIAERESIS, }; diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keymap.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keymap.c index 50fb7909f371..f024859e7cc2 100644 --- a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keymap.c +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keymap.c @@ -17,7 +17,7 @@ #include QMK_KEYBOARD_H #include "keycodes.h" - +// clang-format off bool process_record_user(uint16_t keycode, keyrecord_t *record) { /* Macros */ @@ -25,14 +25,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case UNICODE: if (record->event.pressed) { - register_code(KC_LCTL); - register_code(KC_LSFT); - tap_code16(KC_U); - } else { - unregister_code(KC_LCTL); - unregister_code(KC_LSFT); - } - break; + tap_code16(C(S(KC_U))); + } break; } return true; @@ -46,11 +40,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| KC_A , KC_I , KC_E , KC_U , KC_TAB , KC_V , KC_T , KC_S , KC_R , KC_N , //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| - KC_LALT , KC_X , KC_Q , KC_Y , KC_K , KC_Z , KC_C , KC_G , KC_H , KC_M , + US_EACU , KC_X , KC_Q , KC_Y , KC_K , KC_Z , KC_C , KC_G , KC_H , KC_M , //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| // |-------------------------+-------------------------| |-------------------------+-------------------------| - LT(_MOUSE, KC_COMM) , KC_LCPO , LT(_NUMERIC, KC_ENT) , LT(_ARROWS, KC_DOT) - // |-------------------------+----/* Space ctl */------| |-------------------------+-------------------------| + LT(_MOUSE, KC_COMM) , CTL_T(KC_SPACE) , LT(_NUMERIC, KC_ENT) , LT(_ARROWS, KC_DOT) + // |-------------------------+-------------------------| |-------------------------+-------------------------| ), [_NUMERIC] = LAYOUT( @@ -59,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ , XXXXXXX , KC_4 , KC_5 , KC_6 , KC_0 , //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| - _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_1 , KC_2 , KC_3 , KC_COMM , + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_1 , KC_2 , KC_3 , KC_COMM , //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| // |-------------------------+-------------------------| |-------------------------+-------------------------| XXXXXXX , UNICODE , XXXXXXX , XXXXXXX @@ -85,21 +79,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ , XXXXXXX , KC_LEFT , KC_DOWN , KC_UP , KC_RIGHT , //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| - _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , C(KC_D) , C(KC_U) , XXXXXXX , + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , C(KC_D) , C(KC_U) , XXXXXXX , //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| // |-------------------------+-------------------------| |-------------------------+-------------------------| XXXXXXX , _______ , XXXXXXX , XXXXXXX // |-------------------------+-------------------------| |-------------------------+-------------------------| ), - [_ADJUST] = LAYOUT( - //|---------------+---------------+---------------+---------------+------------------| |---------------+---------------+---------------+---------------+-----------------| - XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_PRINT_SCREEN , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_AUDIO_VOL_UP , - //|---------------+---------------+---------------+---------------+------------------| |---------------+---------------+---------------+---------------+-----------------| - XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX ,S(KC_PRINT_SCREEN), XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX ,KC_AUDIO_VOL_DOWN, - //|---------------+---------------+---------------+---------------+------------------| |---------------+---------------+---------------+---------------+-----------------| - XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_AUDIO_MUTE , - //|---------------+---------------+---------------+---------------+------------------| |---------------+---------------+---------------+---------------+-----------------| + [_ADJ] = LAYOUT( + //|---------------+---------------+---------------+---------------+------------------| |---------------+---------------+---------------+-----------------+----------| + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_PRINT_SCREEN , XXXXXXX , XXXXXXX , XXXXXXX , KC_AUDIO_VOL_UP , XXXXXXX , + //|---------------+---------------+---------------+---------------+------------------| |---------------+---------------+---------------+-----------------+----------| + XXXXXXX , G(C(S(KC_G))), XXXXXXX , XXXXXXX ,S(KC_PRINT_SCREEN), XXXXXXX , XXXXXXX , XXXXXXX ,KC_AUDIO_VOL_DOWN, XXXXXXX , + //|---------------+---------------+---------------+---------------+------------------| |---------------+---------------+---------------+-----------------+----------| + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_AUDIO_MUTE , XXXXXXX , + //|---------------+---------------+---------------+---------------+------------------| |---------------+---------------+---------------+-----------------+----------| // |-------------------------+-------------------------| |-------------------------+-------------------------| XXXXXXX , _______ , XXXXXXX , XXXXXXX // |-------------------------+-------------------------| |-------------------------+-------------------------| @@ -122,12 +116,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| _______ , XXXXXXX , XXXXXXX , XXXXXXX , _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| - XXXXXXX , C(KC_X) , C(KC_C) , C(KC_V) , _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , + XXXXXXX , KC_CUT , KC_COPY , KC_PASTE , _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| - _______ , XXXXXXX , XXXXXXX , C(KC_Z) , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , + XXXXXXX , XXXXXXX , XXXXXXX , C(KC_Z) , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| // |-------------------------+-------------------------| |-------------------------+-------------------------| - XXXXXXX , _______ , XXXXXXX , XXXXXXX + XXXXXXX , KC_ENTER , XXXXXXX , XXXXXXX // |-------------------------+-------------------------| |-------------------------+-------------------------| ), }; diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/glcdfont.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/glcdfont.c index ad4448993ff3..8ca414fdd0f8 100644 --- a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/glcdfont.c +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/glcdfont.c @@ -5,228 +5,84 @@ /* Online editor: https://joric.github.io/qle/ */ static const unsigned char PROGMEM font[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6, - 0xE6, 0xE6, 0xE6, 0xFE, 0xFE, 0xE6, - 0xE6, 0xE6, 0x06, 0x06, 0xE6, 0xE6, - 0xE6, 0xFE, 0xFE, 0x06, 0x06, 0xFE, - 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFC, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3F, 0x7F, 0x70, 0x60, 0x67, 0x67, - 0x67, 0x67, 0x67, 0x7F, 0x7F, 0x7F, - 0x7F, 0x7F, 0x60, 0x60, 0x7F, 0x7F, - 0x7F, 0x7F, 0x7F, 0x60, 0x60, 0x67, - 0x67, 0x67, 0x67, 0x67, 0x7F, 0x3F, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6, - 0xE6, 0xE6, 0x06, 0x0E, 0xFE, 0xFE, - 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0xFE, - 0xFE, 0xFE, 0xE6, 0xE6, 0xE6, 0x06, - 0x06, 0xE6, 0xE6, 0xE6, 0xFE, 0xFC, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xFC, 0xFE, 0x0E, 0x06, 0x66, 0x66, - 0x66, 0x66, 0xE6, 0xFE, 0xFE, 0x06, - 0x06, 0x66, 0x66, 0x66, 0xE6, 0xE6, - 0xFE, 0xFE, 0xE6, 0xE6, 0xE6, 0x06, - 0x06, 0xE6, 0xE6, 0xE6, 0xFE, 0xFC, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3F, 0x7F, 0x60, 0x60, 0x7C, 0x7C, - 0x7C, 0x7C, 0x60, 0x60, 0x7F, 0x7F, - 0x60, 0x60, 0x67, 0x67, 0x67, 0x67, - 0x67, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, - 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3F, 0x7F, 0x67, 0x66, 0x66, 0x66, - 0x66, 0x60, 0x70, 0x7F, 0x7F, 0x60, - 0x60, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, - 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, - 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6, - 0xE6, 0x06, 0x0E, 0xFE, 0xFE, 0x0E, - 0x06, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, - 0xFE, 0xFE, 0x06, 0x06, 0x66, 0x66, - 0x66, 0x66, 0x06, 0x0E, 0xFE, 0xFC, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6, - 0xE6, 0xE6, 0xE6, 0xFE, 0xFE, 0x06, - 0x06, 0xCE, 0x9E, 0x9E, 0xCE, 0x06, - 0x06, 0xFE, 0xFE, 0x06, 0x06, 0xE6, - 0xE6, 0xE6, 0x0E, 0x1E, 0xFE, 0xFC, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3F, 0x7F, 0x60, 0x60, 0x7C, 0x7C, - 0x7C, 0x60, 0x60, 0x7F, 0x7F, 0x70, - 0x60, 0x67, 0x67, 0x64, 0x60, 0x70, - 0x7F, 0x7F, 0x60, 0x60, 0x7E, 0x7E, - 0x78, 0x70, 0x62, 0x67, 0x7F, 0x3F, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3F, 0x7F, 0x70, 0x60, 0x67, 0x67, - 0x67, 0x67, 0x67, 0x7F, 0x7F, 0x60, - 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, - 0x60, 0x7F, 0x7F, 0x60, 0x60, 0x67, - 0x67, 0x67, 0x70, 0x78, 0x7F, 0x3F, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xFE, 0xFE, + 0xE6, 0xE6, 0xE6, 0x06, 0x06, 0xE6, 0xE6, 0xE6, 0xFE, 0xFE, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, + 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x70, 0x60, 0x67, 0x67, + 0x67, 0x67, 0x67, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x60, + 0x67, 0x67, 0x67, 0x67, 0x67, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, + 0xFE, 0x0E, 0x06, 0xE6, 0xE6, 0xE6, 0xE6, 0x06, 0x0E, 0xFE, 0xFE, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0xFE, + 0xFE, 0xFE, 0xE6, 0xE6, 0xE6, 0x06, 0x06, 0xE6, 0xE6, 0xE6, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x0E, 0x06, 0x66, 0x66, 0x66, 0x66, 0xE6, + 0xFE, 0xFE, 0x06, 0x06, 0x66, 0x66, 0x66, 0xE6, 0xE6, 0xFE, 0xFE, 0xE6, 0xE6, 0xE6, 0x06, 0x06, 0xE6, + 0xE6, 0xE6, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x60, 0x60, 0x7C, 0x7C, 0x7C, 0x7C, 0x60, 0x60, 0x7F, 0x7F, 0x60, + 0x60, 0x67, 0x67, 0x67, 0x67, 0x67, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x67, 0x66, + 0x66, 0x66, 0x66, 0x60, 0x70, 0x7F, 0x7F, 0x60, 0x60, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x60, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6, 0xE6, 0x06, + 0x0E, 0xFE, 0xFE, 0x0E, 0x06, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xFE, 0xFE, 0x06, 0x06, 0x66, 0x66, 0x66, + 0x66, 0x06, 0x0E, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xFE, 0xFE, 0x06, 0x06, 0xCE, 0x9E, 0x9E, + 0xCE, 0x06, 0x06, 0xFE, 0xFE, 0x06, 0x06, 0xE6, 0xE6, 0xE6, 0x0E, 0x1E, 0xFE, 0xFC, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x60, + 0x60, 0x7C, 0x7C, 0x7C, 0x60, 0x60, 0x7F, 0x7F, 0x70, 0x60, 0x67, 0x67, 0x64, 0x60, 0x70, 0x7F, 0x7F, + 0x60, 0x60, 0x7E, 0x7E, 0x78, 0x70, 0x62, 0x67, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x70, 0x60, 0x67, 0x67, 0x67, 0x67, 0x67, 0x7F, 0x7F, + 0x60, 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, 0x60, 0x7F, 0x7F, 0x60, 0x60, 0x67, 0x67, 0x67, 0x70, 0x78, + 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, }; diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/oled.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/oled.c index 5b177acc7c14..2d00ef4e3a7a 100644 --- a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/oled.c +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/oled.c @@ -4,454 +4,463 @@ #include QMK_KEYBOARD_H #include "keycodes.h" -/* Leader state */ -static bool is_leader_active = false; -void leader_start(void) { - is_leader_active = true; +/* Blank space to place modifiers */ +void add_blank(void) { + + oled_write_char(0x10, false); + oled_write_char(0x11, false); + oled_write_char(0x12, false); + oled_write_char(0x13, false); + oled_write_char(0x14, false); + + oled_write_char(0x30, false); + oled_write_char(0x31, false); + oled_write_char(0x32, false); + oled_write_char(0x33, false); + oled_write_char(0x34, false); } -void leader_end(void) { - is_leader_active = false; -} - void oled_display(void) { - /* Layers */ - switch (get_highest_layer(layer_state)) { - - case _BASE: ; - if (is_keyboard_master()) { - static const char PROGMEM qmk_logo_master[] = { - // 'raven', 32x128px - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, - 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x8f, 0x5f, 0x31, 0x79, 0x33, 0x7f, - 0x3b, 0x71, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x4c, 0x02, 0x01, 0x95, 0xff, 0xb5, 0x05, 0x02, 0x4c, 0x30, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7e, 0x01, 0x01, 0x01, 0x7e, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, - 0xf0, 0xf8, 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0xfc, 0x7c, 0x7c, 0xf8, 0xf0, 0xe0, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xcf, 0xef, 0xe7, 0xf3, 0xfb, 0xf9, - 0xfd, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x0f, 0x0e, 0x1a, 0x23, 0x43, 0x3f, 0x03, 0x00, - 0x00, 0x0c, 0x1e, 0x1f, 0x3f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x80, 0x40, 0xe0, 0xbf, 0x33, - 0x30, 0x60, 0x20, 0x21, 0xff, 0x20, 0x60, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, - 0xfc, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x7c, 0xfc, 0xfc, 0xf8, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x30, - 0x20, 0x30, 0x20, 0x32, 0x20, 0x32, 0x20, 0x30, 0x20, 0x1c, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - oled_write_raw_P(qmk_logo_master, sizeof(qmk_logo_master)); - - } else { - static const char PROGMEM qmk_logo_slave[] = { - // 'birds', 32x128px - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x40, 0xc0, 0xe0, 0xd0, 0x88, 0x84, 0x04, 0x04, 0xc4, 0xc4, 0x08, 0x08, 0x10, 0x60, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xf8, 0x46, 0x81, 0x02, 0x02, 0x06, 0x04, 0x04, 0x04, 0x74, 0x84, 0x06, 0x03, 0x81, - 0x42, 0x24, 0x18, 0x10, 0xa0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x06, 0x08, 0x11, 0x12, 0x24, 0x24, 0x48, 0xc8, 0x48, 0x48, 0xc9, 0x49, 0x4a, - 0x4a, 0x26, 0x25, 0x25, 0x14, 0x14, 0x14, 0x1d, 0x15, 0x2e, 0x54, 0x60, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x05, 0x02, 0x03, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x40, 0x20, 0x10, 0x08, 0x08, 0x08, 0x08, 0x88, 0xc8, 0x08, 0x30, 0xc0, 0xc0, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x18, 0x04, 0x03, - 0x00, 0x00, 0x00, 0x80, 0x80, 0x70, 0x18, 0x00, 0x00, 0x00, 0x80, 0x70, 0x0f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x70, 0x50, 0x48, 0x48, 0x24, 0x24, 0x12, 0x0a, 0x05, 0x09, 0x13, 0x12, 0x22, 0x22, - 0xe1, 0x21, 0x21, 0x20, 0xe0, 0x20, 0x20, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x07, 0x04, 0x00, 0x04, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - oled_write_raw_P(qmk_logo_slave, sizeof(qmk_logo_slave)); - } - break; - - case _NUMERIC: ; - static const char PROGMEM qmk_numeric[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x03, 0x07, 0x0f, 0x1e, - 0x3c, 0x78, 0xf0, 0xe0, 0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x03, 0x87, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, - 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0e, 0x1c, 0x38, 0x70, 0xe0, - 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, - 0xc7, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x38, 0x38, - 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, - 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x0e, 0x1e, 0x3e, 0x77, 0xe7, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, 0xf0, 0xf0, - 0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xff, 0xff, - 0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, - 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - oled_write_raw_P(qmk_numeric, sizeof(qmk_numeric)); - break; - - case _MOUSE: ; - static const char PROGMEM qmk_mouse[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x3e, 0x3c, 0x78, 0xf0, 0xe0, 0xc0, - 0xc0, 0xe0, 0xf0, 0x78, 0x3c, 0x3e, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, - 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x81, 0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, - 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, - 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xc1, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x7f, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, - 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x7f, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, - 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, - 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, - 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x81, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, - 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, - 0xc1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, - 0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - oled_write_raw_P(qmk_mouse, sizeof(qmk_mouse)); - break; - - case _ARROWS: ; - static const char PROGMEM qmk_arrows[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, - 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x3e, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0xff, 0xff, - 0xff, 0xff, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3e, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, - 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0x7c, 0x3c, 0x1c, 0x0c, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x1e, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xde, 0x9e, 0x1e, 0x1e, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x0f, 0x0e, 0x0c, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x30, 0x70, 0xf0, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0x78, 0x78, 0x78, 0x79, 0x7b, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x30, 0x38, 0x3c, 0x3e, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, - 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x7c, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0xff, 0xff, - 0xff, 0xff, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0x7c, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, - 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - oled_write_raw_P(qmk_arrows, sizeof(qmk_arrows)); - break; - - case _ADJUST: ; - static const char PROGMEM qmk_adjust[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xf8, 0x38, 0x38, 0x38, 0x38, 0x38, - 0x38, 0x38, 0x38, 0x38, 0x38, 0xf8, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x38, 0x38, 0x38, 0x38, 0x38, - 0x38, 0x38, 0x38, 0x38, 0x38, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x07, 0x07, 0x07, 0x07, - 0x07, 0x07, 0x07, 0x07, 0x0f, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, - 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xff, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xe1, 0xe1, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, - 0xe1, 0xe1, 0xe1, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x38, - 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, - 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xf0, 0xf0, - 0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, - 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - oled_write_raw_P(qmk_adjust, sizeof(qmk_adjust)); - break; - - case _FN: ; - static const char PROGMEM qmk_fn[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, - 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, - 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xf8, 0xe0, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0xfe, - 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x07, 0x1f, 0x7f, 0xfe, 0xf8, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - oled_write_raw_P(qmk_fn, sizeof(qmk_fn)); - break; - - case _LEFT_HAND: ; - static const char PROGMEM qmk_left_hand[] = { - // 'layers_left_hand', 32x128px - 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe1, 0xf1, 0xf1, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0x1f, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0x87, 0x87, 0x87, 0x87, 0x87, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, - 0x71, 0x71, 0x71, 0x70, 0x70, 0xf0, 0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x3c, 0xfc, 0xf8, 0xf0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe3, 0xe3, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xe3, 0xe3, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0f, 0x1e, 0x3c, 0x78, 0xf0, 0xe0, 0xc0, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x1f, 0x1f, 0x1f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x1e, 0xfc, 0xf8, 0xf0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0x78, 0x3f, 0x1f, 0x0f - }; - - oled_write_raw_P(qmk_left_hand, sizeof(qmk_left_hand)); - break; + /* Layers */ + switch (get_highest_layer(layer_state)) { + + case _BASE:; + if (is_keyboard_master()) { + static const char PROGMEM qmk_logo_master[] = { + // 'raven', 32x128px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x8f, 0x5f, 0x31, 0x79, 0x33, 0x7f, + 0x3b, 0x71, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x4c, 0x02, 0x01, 0x95, 0xff, 0xb5, 0x05, 0x02, 0x4c, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7e, 0x01, 0x01, 0x01, 0x7e, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xf0, + 0xf8, 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0xfc, 0x7c, 0x7c, 0xf8, 0xf0, 0xe0, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xcf, 0xef, 0xe7, 0xf3, 0xfb, 0xf9, 0xfd, + 0xfc, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x0f, 0x0e, 0x1a, 0x23, 0x43, 0x3f, 0x03, 0x00, 0x00, + 0x0c, 0x1e, 0x1f, 0x3f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x80, 0x40, 0xe0, 0xbf, 0x33, 0x30, + 0x60, 0x20, 0x21, 0xff, 0x20, 0x60, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfc, + 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x7c, 0xfc, 0xfc, 0xf8, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x30, 0x20, + 0x30, 0x20, 0x32, 0x20, 0x32, 0x20, 0x30, 0x20, 0x1c, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + oled_write_raw_P(qmk_logo_master, sizeof(qmk_logo_master)); + + } else { + static const char PROGMEM qmk_logo_slave[] = { + // 'birds', 32x128px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xc0, 0xe0, 0xd0, 0x88, 0x84, 0x04, 0x04, 0xc4, 0xc4, 0x08, 0x08, 0x10, 0x60, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf8, 0x46, 0x81, 0x02, 0x02, 0x06, 0x04, 0x04, 0x04, 0x74, 0x84, 0x06, 0x03, 0x81, + 0x42, 0x24, 0x18, 0x10, 0xa0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x06, 0x08, 0x11, 0x12, 0x24, 0x24, 0x48, 0xc8, 0x48, 0x48, 0xc9, 0x49, 0x4a, + 0x4a, 0x26, 0x25, 0x25, 0x14, 0x14, 0x14, 0x1d, 0x15, 0x2e, 0x54, 0x60, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x05, 0x02, 0x03, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x40, 0x20, 0x10, 0x08, 0x08, 0x08, 0x08, 0x88, 0xc8, 0x08, 0x30, 0xc0, 0xc0, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x18, 0x04, 0x03, + 0x00, 0x00, 0x00, 0x80, 0x80, 0x70, 0x18, 0x00, 0x00, 0x00, 0x80, 0x70, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x70, 0x50, 0x48, 0x48, 0x24, 0x24, 0x12, 0x0a, 0x05, 0x09, 0x13, 0x12, 0x22, 0x22, + 0xe1, 0x21, 0x21, 0x20, 0xe0, 0x20, 0x20, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x07, 0x04, 0x00, 0x04, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + oled_write_raw_P(qmk_logo_slave, sizeof(qmk_logo_slave)); + } + break; + + case _NUMERIC:; + static const char PROGMEM qmk_numeric[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x03, 0x07, 0x0f, 0x1e, 0x3c, 0x78, 0xf0, + 0xe0, 0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x87, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, + 0x87, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0x0e, 0x1c, 0x38, 0x70, 0xe0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xc7, 0xc7, 0xc7, + 0xc7, 0xc7, 0xc7, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, + 0x1c, 0x1c, 0x1c, 0xfc, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x1e, + 0x3e, 0x77, 0xe7, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, 0xf0, 0xf0, 0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xff, 0xff, 0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xc0, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc0, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0e, 0x0e, + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00}; + + oled_write_raw_P(qmk_numeric, sizeof(qmk_numeric)); + break; + + case _MOUSE:; + static const char PROGMEM qmk_mouse[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x3e, 0x3c, 0x78, 0xf0, 0xe0, 0xc0, 0xc0, 0xe0, 0xf0, + 0x78, 0x3c, 0x3e, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x81, 0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, + 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc1, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xc1, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x7f, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, + 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x7f, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, + 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, + 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x81, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc0, + 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xc1, + 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00}; + + oled_write_raw_P(qmk_mouse, sizeof(qmk_mouse)); + break; + + case _ARROWS:; + static const char PROGMEM qmk_arrows[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfc, 0xf8, 0xf0, + 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7c, 0x3e, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0xff, 0xff, 0xff, 0xff, 0x01, 0x03, 0x07, + 0x0f, 0x1f, 0x3e, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, + 0xf0, 0xf8, 0x7c, 0x3c, 0x1c, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x1e, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xde, + 0x9e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x0f, + 0x0e, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, + 0x30, 0x70, 0xf0, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x79, 0x7b, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x38, 0x3c, 0x3e, + 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x7c, + 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0xff, 0xff, 0xff, 0xff, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0x7c, 0x3e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00}; + + oled_write_raw_P(qmk_arrows, sizeof(qmk_arrows)); + break; + + case _ADJ:; + static const char PROGMEM qmk_ADJ[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xf8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0xf8, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0f, 0xfe, 0xfc, + 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xff, 0x7f, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xe1, + 0xe1, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, + 0x3f, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, + 0x87, 0x87, 0x87, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xff, 0xff, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, + 0x70, 0x70, 0x70, 0x70, 0x70, 0xf0, 0xf0, 0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00}; + + oled_write_raw_P(qmk_ADJ, sizeof(qmk_ADJ)); + break; + + case _FN:; + static const char PROGMEM qmk_fn[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0xfe, 0xf8, 0xe0, 0x80, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0xfe, 0xf8, 0xe0, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, + 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0x7f, + 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00}; + + oled_write_raw_P(qmk_fn, sizeof(qmk_fn)); + break; + + case _LEFT_HAND:; + static const char PROGMEM qmk_left_hand[] = { + // 'layers_left_hand', 32x128px + 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xf1, 0xf1, 0x71, + 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x38, 0x38, 0x38, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1f, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x87, 0x87, 0x87, 0x87, 0x87, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x80, 0x80, 0x71, 0x71, 0x71, 0x70, 0x70, 0xf0, 0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x3c, 0xfc, 0xf8, 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xe3, 0xe3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xe3, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0f, 0x1e, + 0x3c, 0x78, 0xf0, 0xe0, 0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x03, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0f, + 0x1e, 0xfc, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0x78, 0x3f, + 0x1f, 0x0f}; + + oled_write_raw_P(qmk_left_hand, sizeof(qmk_left_hand)); + break; + } + + /* Leader */ + if (leader_sequence_active()) { + + static const char PROGMEM qmk_leader[] = { + 0x00, 0x00, 0xf8, 0xf8, 0x78, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x78, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x00, 0x0e, 0x0e, + 0x0e, 0x0e, 0x0e, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x70, 0x70, 0x70, 0x70, + 0x70, 0x7f, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xf8, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc6, 0xc6, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xc0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xc1, 0x81, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0x38, 0x38, 0x38, 0x78, 0xf8, 0xf8, 0xbf, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, + 0x00, 0x00}; + + oled_write_raw_P(qmk_leader, sizeof(qmk_leader)); + } + + /* Modifier keys */ + if (get_mods()) { + + if (get_mods() & MOD_MASK_GUI) { + + oled_write_char(0x8B, false); + oled_write_char(0x8C, false); + oled_write_char(0x8D, false); + oled_write_char(0x8E, false); + oled_write_char(0x8F, false); + + oled_write_char(0xAB, false); + oled_write_char(0xAC, false); + oled_write_char(0xAD, false); + oled_write_char(0xAE, false); + oled_write_char(0xAF, false); + } else { + add_blank(); + } + + if (get_mods() & MOD_MASK_CTRL) { + + oled_write_char(0x01, false); + oled_write_char(0x02, false); + oled_write_char(0x03, false); + oled_write_char(0x04, false); + oled_write_char(0x05, false); + + oled_write_char(0x21, false); + oled_write_char(0x22, false); + oled_write_char(0x23, false); + oled_write_char(0x24, false); + oled_write_char(0x25, false); + } else { + add_blank(); } - /* Leader */ - if (is_leader_active) { - - static const char PROGMEM qmk_leader[] = { - 0x00, 0x00, 0xf8, 0xf8, 0x78, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x78, 0xf8, 0xf8, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, - 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, - 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x18, 0x18, 0x18, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x87, 0x87, 0x87, 0x87, 0x87, - 0x87, 0x87, 0x87, 0x87, 0x87, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc3, 0xc3, 0xc3, - 0xc3, 0xc3, 0xc3, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x00, 0x0e, 0x0e, - 0x0e, 0x0e, 0x0e, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x70, 0x70, - 0x70, 0x70, 0x70, 0x7f, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xf8, 0x38, 0x38, 0x38, - 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc6, 0xc6, 0xc6, - 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, - 0xe1, 0xe1, 0xe1, 0xe1, 0xc1, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x38, 0x38, 0x38, - 0x78, 0xf8, 0xf8, 0xbf, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00 - }; - - oled_write_raw_P(qmk_leader, sizeof(qmk_leader)); + if (get_mods() & MOD_BIT(KC_LALT)) { + + oled_write_char(0x41, false); + oled_write_char(0x42, false); + oled_write_char(0x43, false); + oled_write_char(0x44, false); + oled_write_char(0x45, false); + + oled_write_char(0x61, false); + oled_write_char(0x62, false); + oled_write_char(0x63, false); + oled_write_char(0x64, false); + oled_write_char(0x65, false); + } else { + add_blank(); } - /* Modifier keys */ - if (get_mods()) { - - if (get_mods() & MOD_MASK_CTRL) { - - oled_write_char(0x01, false); - oled_write_char(0x02, false); - oled_write_char(0x03, false); - oled_write_char(0x04, false); - oled_write_char(0x05, false); - - oled_write_char(0x21, false); - oled_write_char(0x22, false); - oled_write_char(0x23, false); - oled_write_char(0x24, false); - oled_write_char(0x25, false); - } - if (get_mods() & MOD_BIT(KC_LALT)) { - - oled_write_char(0x41, false); - oled_write_char(0x42, false); - oled_write_char(0x43, false); - oled_write_char(0x44, false); - oled_write_char(0x45, false); - - oled_write_char(0x61, false); - oled_write_char(0x62, false); - oled_write_char(0x63, false); - oled_write_char(0x64, false); - oled_write_char(0x65, false); - } - if (get_mods() & MOD_BIT(KC_RALT)) { - - oled_write_char(0x81, false); - oled_write_char(0x82, false); - oled_write_char(0x83, false); - oled_write_char(0x84, false); - oled_write_char(0x85, false); - - oled_write_char(0xA1, false); - oled_write_char(0xA2, false); - oled_write_char(0xA3, false); - oled_write_char(0xA4, false); - oled_write_char(0xA5, false); - } - if (get_mods() & MOD_MASK_SHIFT) { - - oled_write_char(0x4B, false); - oled_write_char(0x4C, false); - oled_write_char(0x4D, false); - oled_write_char(0x4E, false); - oled_write_char(0x4F, false); - - oled_write_char(0x6B, false); - oled_write_char(0x6C, false); - oled_write_char(0x6D, false); - oled_write_char(0x6E, false); - oled_write_char(0x6F, false); - } - if (get_mods() & MOD_MASK_GUI) { - - oled_write_char(0x8B, false); - oled_write_char(0x8C, false); - oled_write_char(0x8D, false); - oled_write_char(0x8E, false); - oled_write_char(0x8F, false); - - oled_write_char(0xAB, false); - oled_write_char(0xAC, false); - oled_write_char(0xAD, false); - oled_write_char(0xAE, false); - oled_write_char(0xAF, false); - } + if (get_mods() & MOD_MASK_SHIFT) { + + oled_write_char(0x4B, false); + oled_write_char(0x4C, false); + oled_write_char(0x4D, false); + oled_write_char(0x4E, false); + oled_write_char(0x4F, false); + + oled_write_char(0x6B, false); + oled_write_char(0x6C, false); + oled_write_char(0x6D, false); + oled_write_char(0x6E, false); + oled_write_char(0x6F, false); + } else { + add_blank(); } + + if (get_mods() & MOD_BIT(KC_RALT)) { + + oled_write_char(0x81, false); + oled_write_char(0x82, false); + oled_write_char(0x83, false); + oled_write_char(0x84, false); + oled_write_char(0x85, false); + + oled_write_char(0xA1, false); + oled_write_char(0xA2, false); + oled_write_char(0xA3, false); + oled_write_char(0xA4, false); + oled_write_char(0xA5, false); + } + + // Add a line + oled_write_char(0xC1, false); + oled_write_char(0xC2, false); + oled_write_char(0xC3, false); + oled_write_char(0xC4, false); + oled_write_char(0xC5, false); + } }; bool oled_task_user(void) { - oled_display(); - return false; + oled_display(); + return false; } diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/readme.md b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/readme.md index 3873ca45cfbb..b70b3655da75 100644 --- a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/readme.md +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/readme.md @@ -1,16 +1,16 @@ ### Custom aurora sweep keymap +This keymap is inspired by [optimot](https://optimot.fr) which is a French layout. +Nonetheless it uses the US international extended keymap for French keys. -This keymap is inspired by [optimot](https://bepo.fr/) which is a French layout. -Nonetheless all French characters are sent in unicode, so it works with the standard US ANSI layout. +It uses the _best_ QMK features : -It uses the *best* qmk features : -- combos ♥ -- auto shift -- leader +- combos ♥ +- auto shift +- leader I tried to optimise key positions for neovim and i3wm while limit digrams. -The oled screens are used to display the current layout, the modifier keys and the leader key. +The oled screens are used to display the current layout, the modifier keys and the leader key. ![oledmodifiers](https://i.imgur.com/on95jx0.png) ![oledmouse](https://i.imgur.com/PwkR6P2.png) @@ -27,104 +27,71 @@ Navigate into the keymap folder and launch this command for both sides : qmk compile && qmk flash -and : +And : - Click twice on the flash button and use nautilus for instance to clic on the keyboard. + Click twice on the flash button and use nautilus for instance to clic on the keyboard. Don't forget to flash with the double tap bootloader define before soldering. +#### Layout + +Set the us altgr international to activate French keys : + + /usr/share/X11/xkb/symbols/ + localectl list-x11-keymap-variants us + + setxkbmap us altgr-intl + #### Links [qmk](https://docs.qmk.fm/#/) [ferris sweep](https://github.com/davidphilipbarr/Sweep) -[splitkb](https://splitkb.com) +[splitkb](https://splitkb.com) #### Layouts -![base](https://i.imgur.com/E3hRkxW.png) -![numeric](https://i.imgur.com/GeC0reE.png) -![mouse](https://i.imgur.com/QhsWVrE.png) -![arrows](https://i.imgur.com/4sAfGAt.png) -![adjust](https://i.imgur.com/hcoN2P8.png) -![fn](https://i.imgur.com/dVunqFF.png) -![left hand](https://i.imgur.com/fk5YJj6.png) -![combo](https://i.imgur.com/aZ8TpuY.png) -![combo2](https://i.imgur.com/QayRuFA.png) -![combo3](https://i.imgur.com/YpnbMeh.png) - -#### French - -| - | | -|------------------|------------------------| -| space + e | é | -| space + i | ç | -| space + a | æ | -| space + o | œ | -| comma + a | à | -| comma + e | è | -| comma + i | ì | -| comma + o | ò | -| comma + u | ù | -| enter + a | â | -| enter + e | ê | -| enter + i | î | -| enter + o | ô | -| enter + u | û | -| dot + a | ä | -| dot + e | ë | -| dot + i | ï | -| dot + o | ö | -| dot + u | ü | -| dot + y | ÿ | +![base](https://i.imgur.com/i7NgrCD.png) +![numeric](https://i.imgur.com/6Yso40L.png) +![mouse](https://i.imgur.com/skSL4Lo.png) +![arrows](https://i.imgur.com/NIjJR2I.png) +![adjust](https://i.imgur.com/xj6i70P.png) +![fn](https://i.imgur.com/Q41ZdQi.png) +![left hand](https://i.imgur.com/WDEGxGM.png) +![combos](https://i.imgur.com/wj6DEY0.png) #### Leader -| - | | -|--------------------|------------------------| -| M + S | mail short | -| M + L | mail long | -| D + E + G | ° | -| C + O + P | © | -| R + E + G | ® | -| D + I + A | ø | -| D + I + A + M | Ø | -| E + U + R | € | -| P + O + U | £ | -| Y + E + N | ¥ | -| C + E + N | ¢ | -| P + I | π | -| P + I + I | Π | -| O + M + E | ω | -| O + M + E + G | Ω | -| U + P + F | ⁰ | -| D + N + F | ₀ | - -| - | | -|--------------------|------------------------| -| M + U + L | × | -| D + I + V | ÷ | -| P + M | ± | -| I + N + E | ≠ | -| A + L + M | ≈ | -| S + Q + U | √ | -| I + N + F | ∞ | -| < + < | ≤ | -| > + > | ≥ | -| F + S + T | ¼ | -| F + S + G | ½ | -| F + H + T | ¾ | - -| - | | -|--------------------|------------------------| -| F + L + A | ⚡ | -| S + P + A | ✨ | -| O + W + D | ⛔ | -| C + O + F | ☕ | -| U + M + B | ☔ | -| Y + E + S | ✅ | -| N + O | ❎ | -| C + R + O | ❌ | -| ? | ❔ | -| ! | ❕ | -| ? + ? | ❓ | -| ! + ! | ❗ | +| - | | +| ------------- | ---------- | +| M + S | mail short | +| M + L | mail long | +| D + E + G | ° | +| C + O + P | © | +| R + E + G | ® | +| D + I + A | ø | +| D + I + A + M | Ø | +| E + U + R | € | +| P + O + U | £ | +| Y + E + N | ¥ | +| C + E + N | ¢ | +| P + I | π | +| P + I + I | Π | +| O + M + E | ω | +| O + M + E + G | Ω | +| U + P + F | ⁰ | +| D + N + F | ₀ | + +| - | | +| --------- | --- | +| M + U + L | × | +| D + I + V | ÷ | +| P + M | ± | +| I + N + E | ≠ | +| A + L + M | ≈ | +| S + Q + U | √ | +| I + N + F | ∞ | +| < + < | ≤ | +| > + > | ≥ | +| F + S + T | ¼ | +| F + S + G | ½ | +| F + H + T | ¾ | diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/rules.mk b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/rules.mk index d854cbb16bea..b1c72a8aaffa 100644 --- a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/rules.mk +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/rules.mk @@ -2,7 +2,7 @@ LTO_ENABLE = yes CONVERT_TO = elite_pi SRC += features/auto_shift.c -SRC += features/combo.c +INTROSPECTION_KEYMAP_C = features/combo.c # Replace SRC, see issue #21137 SRC += features/leader.c SRC += oled/oled.c @@ -15,8 +15,5 @@ AUTO_SHIFT_MODIFIERS = no COMBO_ENABLE = yes LEADER_ENABLE = yes -# Recommended for space cadet shift -COMMAND_ENABLE = no - UNICODE_ENABLE = yes SEND_STRING_ENABLE = yes From 57b23b8d968695e98e7738ab8f563124b87545fb Mon Sep 17 00:00:00 2001 From: Allen Choi <37539914+Thunderbird2086@users.noreply.github.com> Date: Sun, 11 Jun 2023 04:35:15 +0800 Subject: [PATCH 18/46] [Keymap] thunderbird2086 layer status with RGB lighting/matrix (#21063) --- .../crkbd/keymaps/thunderbird2086/config.h | 76 ++++++++++++------- .../crkbd/keymaps/thunderbird2086/keycodes.h | 5 +- .../crkbd/keymaps/thunderbird2086/keymap.c | 10 +++ .../keymaps/thunderbird2086/layers_block.h | 4 +- .../keymaps/thunderbird2086/process_records.c | 36 ++++++--- .../crkbd/keymaps/thunderbird2086/readme.md | 2 +- keyboards/crkbd/keymaps/thunderbird2086/rgb.c | 61 +++++++++++++++ .../crkbd/keymaps/thunderbird2086/rules.mk | 1 + 8 files changed, 151 insertions(+), 44 deletions(-) create mode 100644 keyboards/crkbd/keymaps/thunderbird2086/rgb.c diff --git a/keyboards/crkbd/keymaps/thunderbird2086/config.h b/keyboards/crkbd/keymaps/thunderbird2086/config.h index ad2bfcabc7c7..8251bc9b8fc2 100644 --- a/keyboards/crkbd/keymaps/thunderbird2086/config.h +++ b/keyboards/crkbd/keymaps/thunderbird2086/config.h @@ -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 diff --git a/keyboards/crkbd/keymaps/thunderbird2086/keycodes.h b/keyboards/crkbd/keymaps/thunderbird2086/keycodes.h index cb10a3ac0748..90b26b88a4e0 100644 --- a/keyboards/crkbd/keymaps/thunderbird2086/keycodes.h +++ b/keyboards/crkbd/keymaps/thunderbird2086/keycodes.h @@ -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, diff --git a/keyboards/crkbd/keymaps/thunderbird2086/keymap.c b/keyboards/crkbd/keymaps/thunderbird2086/keymap.c index 7bc23db8aa78..69c5d25fd445 100644 --- a/keyboards/crkbd/keymaps/thunderbird2086/keymap.c +++ b/keyboards/crkbd/keymaps/thunderbird2086/keymap.c @@ -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); } diff --git a/keyboards/crkbd/keymaps/thunderbird2086/layers_block.h b/keyboards/crkbd/keymaps/thunderbird2086/layers_block.h index ba41cd922349..db47ea65ed6d 100644 --- a/keyboards/crkbd/keymaps/thunderbird2086/layers_block.h +++ b/keyboards/crkbd/keymaps/thunderbird2086/layers_block.h @@ -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) diff --git a/keyboards/crkbd/keymaps/thunderbird2086/process_records.c b/keyboards/crkbd/keymaps/thunderbird2086/process_records.c index 381cf281e5cc..46b9126677f3 100644 --- a/keyboards/crkbd/keymaps/thunderbird2086/process_records.c +++ b/keyboards/crkbd/keymaps/thunderbird2086/process_records.c @@ -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); - } - break; - case QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); + 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; } return process_record_keymap(keycode, record) && process_record_secrets(keycode, record) diff --git a/keyboards/crkbd/keymaps/thunderbird2086/readme.md b/keyboards/crkbd/keymaps/thunderbird2086/readme.md index 6400309fe8d7..cb57f20aecbd 100644 --- a/keyboards/crkbd/keymaps/thunderbird2086/readme.md +++ b/keyboards/crkbd/keymaps/thunderbird2086/readme.md @@ -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 ![adjust](https://i.imgur.com/uDIhigd.png) - SECRET: hold `ADJUST` and `FUNCTION` to activate diff --git a/keyboards/crkbd/keymaps/thunderbird2086/rgb.c b/keyboards/crkbd/keymaps/thunderbird2086/rgb.c new file mode 100644 index 000000000000..d9b0003c8817 --- /dev/null +++ b/keyboards/crkbd/keymaps/thunderbird2086/rgb.c @@ -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 diff --git a/keyboards/crkbd/keymaps/thunderbird2086/rules.mk b/keyboards/crkbd/keymaps/thunderbird2086/rules.mk index 4da48db08e39..adc61ea60d3d 100644 --- a/keyboards/crkbd/keymaps/thunderbird2086/rules.mk +++ b/keyboards/crkbd/keymaps/thunderbird2086/rules.mk @@ -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)","") From dd8b4dce55bd1845c69d4472bc3ce6338dcfa278 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Sat, 10 Jun 2023 16:33:33 -0700 Subject: [PATCH 19/46] Atreyu: correct layout data (#21197) --- keyboards/atreyu/rev1/info.json | 26 +++++++++++++------------- keyboards/atreyu/rev2/info.json | 28 ++++++++++++++-------------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/keyboards/atreyu/rev1/info.json b/keyboards/atreyu/rev1/info.json index a4e12a71fb1b..8a38baabf812 100644 --- a/keyboards/atreyu/rev1/info.json +++ b/keyboards/atreyu/rev1/info.json @@ -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}, diff --git a/keyboards/atreyu/rev2/info.json b/keyboards/atreyu/rev2/info.json index fd40f9fcb844..6fcfd64d1fff 100644 --- a/keyboards/atreyu/rev2/info.json +++ b/keyboards/atreyu/rev2/info.json @@ -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} ] } } From 8cd9f07c305b704a8fd163bd2dbc1891e80c3b18 Mon Sep 17 00:00:00 2001 From: blindassassin111 <38090555+blindassassin111@users.noreply.github.com> Date: Sun, 11 Jun 2023 01:27:13 -0500 Subject: [PATCH 20/46] [Keyboard] Adding OSAv2 Topre PCB (#21080) --- keyboards/viktus/osav2_topre/ec.c | 205 ++++++ keyboards/viktus/osav2_topre/ec.h | 31 + keyboards/viktus/osav2_topre/info.json | 588 ++++++++++++++++++ .../osav2_topre/keymaps/default/keymap.c | 34 + .../viktus/osav2_topre/keymaps/via/keymap.c | 34 + .../viktus/osav2_topre/keymaps/via/rules.mk | 1 + keyboards/viktus/osav2_topre/osav2_topre.c | 49 ++ keyboards/viktus/osav2_topre/readme.md | 25 + keyboards/viktus/osav2_topre/rules.mk | 3 + 9 files changed, 970 insertions(+) create mode 100644 keyboards/viktus/osav2_topre/ec.c create mode 100644 keyboards/viktus/osav2_topre/ec.h create mode 100644 keyboards/viktus/osav2_topre/info.json create mode 100644 keyboards/viktus/osav2_topre/keymaps/default/keymap.c create mode 100644 keyboards/viktus/osav2_topre/keymaps/via/keymap.c create mode 100644 keyboards/viktus/osav2_topre/keymaps/via/rules.mk create mode 100644 keyboards/viktus/osav2_topre/osav2_topre.c create mode 100644 keyboards/viktus/osav2_topre/readme.md create mode 100644 keyboards/viktus/osav2_topre/rules.mk diff --git a/keyboards/viktus/osav2_topre/ec.c b/keyboards/viktus/osav2_topre/ec.c new file mode 100644 index 000000000000..fd2e8fa0ec54 --- /dev/null +++ b/keyboards/viktus/osav2_topre/ec.c @@ -0,0 +1,205 @@ +/* Copyright 2023 Viktus Design LLC + * + * 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 . + */ + +#include "quantum.h" +#include "ec.h" +#include "analog.h" +//#include "debug.h" // needed for debugging + +// sensing channel definitions +#define A0 0 +#define A1 1 +#define A2 2 +#define A3 3 +#define A4 4 +#define A5 5 +#define A6 6 +#define A7 7 + +// analog connection settings +#define DISCHARGE_PIN D3 +#define ANALOG_PORT D4 + +#ifndef MUX_SEL_PIN +# define MUX_SEL_PINS \ + { D0, D1, D2 } +#endif + +// pin connections +const uint8_t row_channels[] = MATRIX_ROW_PINS; +const uint8_t col_pins[] = MATRIX_COL_PINS; +const uint8_t mux_sel_pins[] = MUX_SEL_PINS; + +_Static_assert(sizeof(mux_sel_pins) == 3, "invalid MUX_SEL_PINS"); + +static ec_config_t config; +static uint16_t ec_sw_value[MATRIX_COLS][MATRIX_ROWS]; + +static inline void discharge_capacitor(void) { setPinOutput(DISCHARGE_PIN); } +static inline void charge_capacitor(uint8_t col) { + setPinInput(DISCHARGE_PIN); + writePinHigh(col_pins[col]); +} + +static inline void clear_all_col_pins(void) { + for (int col = 0; col < sizeof(col_pins); col++) { + writePinLow(col_pins[col]); + } +} + +void init_mux_sel(void) { + for (int idx = 0; idx < sizeof(mux_sel_pins); idx++) { + setPinOutput(mux_sel_pins[idx]); + } +} + +void select_mux(uint8_t row) { + uint8_t ch = row_channels[row]; + writePin(mux_sel_pins[0], ch & 1); + writePin(mux_sel_pins[1], ch & 2); + writePin(mux_sel_pins[2], ch & 4); +} + +void init_col(void) { + for (int idx = 0; idx < sizeof(col_pins); idx++) { + setPinOutput(col_pins[idx]); + writePinLow(col_pins[idx]); + } +} + +void ec_init(ec_config_t const* const ec_config) { + // save config + config = *ec_config; + + // initialize discharge pin as discharge mode + writePinLow(DISCHARGE_PIN); + setPinOutput(DISCHARGE_PIN); + + // set analog reference + analogReference(ADC_REF_POWER); + + // initialize drive lines + init_col(); + + // initialize multiplexer select pin + init_mux_sel(); + + // set discharge pin to charge mode + setPinInput(DISCHARGE_PIN); +} + +uint16_t ec_readkey_raw(uint8_t col, uint8_t row) { + uint16_t sw_value = 0; + + discharge_capacitor(); + + select_mux(row); + + clear_all_col_pins(); + + cli(); + + charge_capacitor(col); + + sw_value = analogReadPin(ANALOG_PORT); + + sei(); + + return sw_value; +} + +bool ec_update_key(matrix_row_t* current_row, matrix_row_t col, uint16_t sw_value, uint16_t reset_pt, uint16_t actuation_pt) { + bool current_state = (*current_row >> col) & 1; + + // press to release + if (current_state && sw_value < reset_pt) { + *current_row &= ~(MATRIX_ROW_SHIFTER << col); + return true; + } + + // release to press + if ((!current_state) && sw_value > actuation_pt) { + *current_row |= (MATRIX_ROW_SHIFTER << col); + return true; + } + + return false; +} + +bool ec_matrix_scan(matrix_row_t current_matrix[]) { + bool updated = false; + + for (int row = 0; row < sizeof(row_channels); row++) { + for (int col = 0; col < sizeof(col_pins); col++) { + uint16_t reset_pt = config.reset_pt; + uint16_t actuation_pt = config.actuation_pt; + + //Modifying threshold values for overlapping pads + switch(row) { + case 0: + switch(col) { + case 14: // lower threshold for split backspace: left 1U( rest, btm) + case 15: // lower threshold for 2U backspace: 2U(38 rest, 60 btm) + reset_pt = 44; + actuation_pt = 48; + break; + } + break; + case 3: + switch(col) { + case 14: // Lower threshold for right shift: 1.75U(40 rest, 70 btm) + reset_pt = 48; + actuation_pt = 53; + break; + } + break; + case 4: + switch(col) { + case 3: // Lower threshold for left space: col3( rest, btm) + case 4: // Lower threshold for left space: col4(38 rest, 88 btm) + reset_pt = 50; + actuation_pt = 60; + break; + case 5: // Lower threshold for left space: col5( rest, btm) + case 6: // Lower threshold for left space: col6(40 rest, 80 btm) + reset_pt = 48; + actuation_pt = 58; + break; + case 14: // Lower threshold for right shift: 2.75U( rest, btm) + reset_pt = 48; + actuation_pt = 53; + break; + } + break; + } + + ec_sw_value[col][row] = ec_readkey_raw(col, row); + updated |= ec_update_key(¤t_matrix[row], col, ec_sw_value[col][row], reset_pt, actuation_pt); + } + } + + return updated; +} + +// console debugging for pad values +/*void ec_dprint_matrix(void) { + for (int row = 0; row < sizeof(row_channels); row++) { + for (int col = 0; col < sizeof(col_pins); col++) { + dprintf("%5d", ec_sw_value[col][row]); + } + dprintf("\n"); + } +}*/ diff --git a/keyboards/viktus/osav2_topre/ec.h b/keyboards/viktus/osav2_topre/ec.h new file mode 100644 index 000000000000..76da647dc86a --- /dev/null +++ b/keyboards/viktus/osav2_topre/ec.h @@ -0,0 +1,31 @@ +/* Copyright 2023 Viktus Design LLC + * + * 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 . + */ + +#include +#include + +#include "matrix.h" + +typedef struct { + uint16_t reset_pt; + uint16_t actuation_pt; +} ec_config_t; + +void ec_init(ec_config_t const* const ec_config); +bool ec_matrix_scan(matrix_row_t current_matrix[]); +//void ec_dprint_matrix(void); // needed for debugging +uint16_t ec_readkey_raw(uint8_t col, uint8_t row); +bool ec_update_key(matrix_row_t* current_row, matrix_row_t col, uint16_t sw_value, uint16_t reset_pt, uint16_t actuation_pt); diff --git a/keyboards/viktus/osav2_topre/info.json b/keyboards/viktus/osav2_topre/info.json new file mode 100644 index 000000000000..1f2120ed57e8 --- /dev/null +++ b/keyboards/viktus/osav2_topre/info.json @@ -0,0 +1,588 @@ +{ + "manufacturer": "Viktus Design LLC", + "keyboard_name": "OSAv2 - Topre", + "maintainer": "BlindAssassin111", + "url": "https://viktus.design", + "usb": { + "device_version": "1.6.0", + "vid": "0x5644", + "pid": "0x446F" + }, + "bootloader": "atmel-dfu", + "processor": "atmega32u4", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["B5", "B6", "C6", "C7", "F7", "F6", "F5", "F4", "B7", "F1", "F0", "E6", "B0", "B1", "B2", "B3"], + "rows": ["A1", "A0", "A3", "A4", "A2"] + }, + "indicators": { + "num_lock": "B4", + "caps_lock": "D7", + "scroll_lock": "D6" + }, + "layouts": { + "LAYOUT_split_back": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0.5, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1.75, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2.75, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3.75, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "x": 4.75, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "x": 5.75, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "x": 6.75, "y": 0 }, + { "label": "K07", "matrix": [0, 7], "x": 7.75, "y": 0 }, + { "label": "K08", "matrix": [0, 8], "x": 9.75, "y": 0 }, + { "label": "K09", "matrix": [0, 9], "x": 10.75, "y": 0 }, + { "label": "K010", "matrix": [0, 10], "x": 11.75, "y": 0 }, + { "label": "K011", "matrix": [0, 11], "x": 12.75, "y": 0 }, + { "label": "K012", "matrix": [0, 12], "x": 13.75, "y": 0 }, + { "label": "K013", "matrix": [0, 13], "x": 14.75, "y": 0 }, + { "label": "K014", "matrix": [0, 14], "x": 15.75, "y": 0 }, + { "label": "K015", "matrix": [0, 15], "x": 16.75, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0.25, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1.5, "x": 1.5, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 3, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "x": 4, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "x": 5, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "x": 6, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "x": 7, "y": 1 }, + { "label": "K18", "matrix": [1, 8], "x": 9.5, "y": 1 }, + { "label": "K19", "matrix": [1, 9], "x": 10.5, "y": 1 }, + { "label": "K110", "matrix": [1, 10], "x": 11.5, "y": 1 }, + { "label": "K111", "matrix": [1, 11], "x": 12.5, "y": 1 }, + { "label": "K112", "matrix": [1, 12], "x": 13.5, "y": 1 }, + { "label": "K113", "matrix": [1, 13], "x": 14.5, "y": 1 }, + { "label": "K114", "matrix": [1, 14], "x": 15.5, "y": 1 }, + { "label": "K115", "matrix": [1, 15], "w": 1.5, "x": 16.5, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1.75, "x": 1.25, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 3, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "x": 4, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "x": 5, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "x": 6, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "x": 7, "y": 2 }, + { "label": "K28", "matrix": [2, 8], "x": 10, "y": 2 }, + { "label": "K29", "matrix": [2, 9], "x": 11, "y": 2 }, + { "label": "K210", "matrix": [2, 10], "x": 12, "y": 2 }, + { "label": "K211", "matrix": [2, 11], "x": 13, "y": 2 }, + { "label": "K212", "matrix": [2, 12], "x": 14, "y": 2 }, + { "label": "K213", "matrix": [2, 13], "x": 15, "y": 2 }, + { "label": "K215", "matrix": [2, 15], "w": 2.25, "x": 16, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 2.25, "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 3.25, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "x": 4.25, "y": 3 }, + { "label": "K34", "matrix": [3, 4], "x": 5.25, "y": 3 }, + { "label": "K35", "matrix": [3, 5], "x": 6.25, "y": 3 }, + { "label": "K36", "matrix": [3, 6], "x": 7.25, "y": 3 }, + { "label": "K38", "matrix": [3, 8], "x": 9.75, "y": 3 }, + { "label": "K39", "matrix": [3, 9], "x": 10.75, "y": 3 }, + { "label": "K310", "matrix": [3, 10], "x": 11.75, "y": 3 }, + { "label": "K311", "matrix": [3, 11], "x": 12.75, "y": 3 }, + { "label": "K312", "matrix": [3, 12], "x": 13.75, "y": 3 }, + { "label": "K313", "matrix": [3, 13], "x": 14.75, "y": 3 }, + { "label": "K414", "matrix": [4, 14], "w": 2.75, "x": 15.75, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "w": 1.5, "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "w": 1.5, "x": 4, "y": 4 }, + { "label": "K44", "matrix": [4, 4], "w": 2.25, "x": 5.5, "y": 4 }, + { "label": "K46", "matrix": [4, 6], "x": 7.75, "y": 4 }, + { "label": "K49", "matrix": [4, 9], "w": 2.75, "x": 9.75, "y": 4 }, + { "label": "K411", "matrix": [4, 11], "w": 1.5, "x": 12.5, "y": 4 }, + { "label": "K415", "matrix": [4, 15], "w": 1.5, "x": 16.75, "y": 4 } + ] + }, + "LAYOUT_2u_back": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0.5, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1.75, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2.75, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3.75, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "x": 4.75, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "x": 5.75, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "x": 6.75, "y": 0 }, + { "label": "K07", "matrix": [0, 7], "x": 7.75, "y": 0 }, + { "label": "K08", "matrix": [0, 8], "x": 9.75, "y": 0 }, + { "label": "K09", "matrix": [0, 9], "x": 10.75, "y": 0 }, + { "label": "K010", "matrix": [0, 10], "x": 11.75, "y": 0 }, + { "label": "K011", "matrix": [0, 11], "x": 12.75, "y": 0 }, + { "label": "K012", "matrix": [0, 12], "x": 13.75, "y": 0 }, + { "label": "K013", "matrix": [0, 13], "x": 14.75, "y": 0 }, + { "label": "K015", "matrix": [0, 15], "w": 2, "x": 15.75, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0.25, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1.5, "x": 1.5, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 3, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "x": 4, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "x": 5, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "x": 6, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "x": 7, "y": 1 }, + { "label": "K18", "matrix": [1, 8], "x": 9.5, "y": 1 }, + { "label": "K19", "matrix": [1, 9], "x": 10.5, "y": 1 }, + { "label": "K110", "matrix": [1, 10], "x": 11.5, "y": 1 }, + { "label": "K111", "matrix": [1, 11], "x": 12.5, "y": 1 }, + { "label": "K112", "matrix": [1, 12], "x": 13.5, "y": 1 }, + { "label": "K113", "matrix": [1, 13], "x": 14.5, "y": 1 }, + { "label": "K114", "matrix": [1, 14], "x": 15.5, "y": 1 }, + { "label": "K115", "matrix": [1, 15], "w": 1.5, "x": 16.5, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1.75, "x": 1.25, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 3, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "x": 4, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "x": 5, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "x": 6, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "x": 7, "y": 2 }, + { "label": "K28", "matrix": [2, 8], "x": 10, "y": 2 }, + { "label": "K29", "matrix": [2, 9], "x": 11, "y": 2 }, + { "label": "K210", "matrix": [2, 10], "x": 12, "y": 2 }, + { "label": "K211", "matrix": [2, 11], "x": 13, "y": 2 }, + { "label": "K212", "matrix": [2, 12], "x": 14, "y": 2 }, + { "label": "K213", "matrix": [2, 13], "x": 15, "y": 2 }, + { "label": "K215", "matrix": [2, 15], "w": 2.25, "x": 16, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 2.25, "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 3.25, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "x": 4.25, "y": 3 }, + { "label": "K34", "matrix": [3, 4], "x": 5.25, "y": 3 }, + { "label": "K35", "matrix": [3, 5], "x": 6.25, "y": 3 }, + { "label": "K36", "matrix": [3, 6], "x": 7.25, "y": 3 }, + { "label": "K38", "matrix": [3, 8], "x": 9.75, "y": 3 }, + { "label": "K39", "matrix": [3, 9], "x": 10.75, "y": 3 }, + { "label": "K310", "matrix": [3, 10], "x": 11.75, "y": 3 }, + { "label": "K311", "matrix": [3, 11], "x": 12.75, "y": 3 }, + { "label": "K312", "matrix": [3, 12], "x": 13.75, "y": 3 }, + { "label": "K313", "matrix": [3, 13], "x": 14.75, "y": 3 }, + { "label": "K414", "matrix": [4, 14], "w": 2.75, "x": 15.75, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "w": 1.5, "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "w": 1.5, "x": 4, "y": 4 }, + { "label": "K44", "matrix": [4, 4], "w": 2.25, "x": 5.5, "y": 4 }, + { "label": "K46", "matrix": [4, 6], "x": 7.75, "y": 4 }, + { "label": "K49", "matrix": [4, 9], "w": 2.75, "x": 9.75, "y": 4 }, + { "label": "K411", "matrix": [4, 11], "w": 1.5, "x": 12.5, "y": 4 }, + { "label": "K415", "matrix": [4, 15], "w": 1.5, "x": 16.75, "y": 4 } + ] + }, + "LAYOUT_split_back_175u_shift": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0.5, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1.75, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2.75, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3.75, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "x": 4.75, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "x": 5.75, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "x": 6.75, "y": 0 }, + { "label": "K07", "matrix": [0, 7], "x": 7.75, "y": 0 }, + { "label": "K08", "matrix": [0, 8], "x": 9.75, "y": 0 }, + { "label": "K09", "matrix": [0, 9], "x": 10.75, "y": 0 }, + { "label": "K010", "matrix": [0, 10], "x": 11.75, "y": 0 }, + { "label": "K011", "matrix": [0, 11], "x": 12.75, "y": 0 }, + { "label": "K012", "matrix": [0, 12], "x": 13.75, "y": 0 }, + { "label": "K013", "matrix": [0, 13], "x": 14.75, "y": 0 }, + { "label": "K014", "matrix": [0, 14], "x": 15.75, "y": 0 }, + { "label": "K015", "matrix": [0, 15], "x": 16.75, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0.25, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1.5, "x": 1.5, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 3, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "x": 4, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "x": 5, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "x": 6, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "x": 7, "y": 1 }, + { "label": "K18", "matrix": [1, 8], "x": 9.5, "y": 1 }, + { "label": "K19", "matrix": [1, 9], "x": 10.5, "y": 1 }, + { "label": "K110", "matrix": [1, 10], "x": 11.5, "y": 1 }, + { "label": "K111", "matrix": [1, 11], "x": 12.5, "y": 1 }, + { "label": "K112", "matrix": [1, 12], "x": 13.5, "y": 1 }, + { "label": "K113", "matrix": [1, 13], "x": 14.5, "y": 1 }, + { "label": "K114", "matrix": [1, 14], "x": 15.5, "y": 1 }, + { "label": "K115", "matrix": [1, 15], "w": 1.5, "x": 16.5, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1.75, "x": 1.25, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 3, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "x": 4, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "x": 5, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "x": 6, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "x": 7, "y": 2 }, + { "label": "K28", "matrix": [2, 8], "x": 10, "y": 2 }, + { "label": "K29", "matrix": [2, 9], "x": 11, "y": 2 }, + { "label": "K210", "matrix": [2, 10], "x": 12, "y": 2 }, + { "label": "K211", "matrix": [2, 11], "x": 13, "y": 2 }, + { "label": "K212", "matrix": [2, 12], "x": 14, "y": 2 }, + { "label": "K213", "matrix": [2, 13], "x": 15, "y": 2 }, + { "label": "K215", "matrix": [2, 15], "w": 2.25, "x": 16, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 2.25, "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 3.25, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "x": 4.25, "y": 3 }, + { "label": "K34", "matrix": [3, 4], "x": 5.25, "y": 3 }, + { "label": "K35", "matrix": [3, 5], "x": 6.25, "y": 3 }, + { "label": "K36", "matrix": [3, 6], "x": 7.25, "y": 3 }, + { "label": "K38", "matrix": [3, 8], "x": 9.75, "y": 3 }, + { "label": "K39", "matrix": [3, 9], "x": 10.75, "y": 3 }, + { "label": "K310", "matrix": [3, 10], "x": 11.75, "y": 3 }, + { "label": "K311", "matrix": [3, 11], "x": 12.75, "y": 3 }, + { "label": "K312", "matrix": [3, 12], "x": 13.75, "y": 3 }, + { "label": "K313", "matrix": [3, 13], "x": 14.75, "y": 3 }, + { "label": "K314", "matrix": [3, 14], "w": 1.75, "x": 15.75, "y": 3 }, + { "label": "K315", "matrix": [3, 15], "x": 17.5, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "w": 1.5, "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "w": 1.5, "x": 4, "y": 4 }, + { "label": "K44", "matrix": [4, 4], "w": 2.25, "x": 5.5, "y": 4 }, + { "label": "K46", "matrix": [4, 6], "x": 7.75, "y": 4 }, + { "label": "K49", "matrix": [4, 9], "w": 2.75, "x": 9.75, "y": 4 }, + { "label": "K411", "matrix": [4, 11], "w": 1.5, "x": 12.5, "y": 4 }, + { "label": "K415", "matrix": [4, 15], "w": 1.5, "x": 16.75, "y": 4 } + ] + }, + "LAYOUT_2u_back_175u_shift": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0.5, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1.75, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2.75, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3.75, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "x": 4.75, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "x": 5.75, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "x": 6.75, "y": 0 }, + { "label": "K07", "matrix": [0, 7], "x": 7.75, "y": 0 }, + { "label": "K08", "matrix": [0, 8], "x": 9.75, "y": 0 }, + { "label": "K09", "matrix": [0, 9], "x": 10.75, "y": 0 }, + { "label": "K010", "matrix": [0, 10], "x": 11.75, "y": 0 }, + { "label": "K011", "matrix": [0, 11], "x": 12.75, "y": 0 }, + { "label": "K012", "matrix": [0, 12], "x": 13.75, "y": 0 }, + { "label": "K013", "matrix": [0, 13], "x": 14.75, "y": 0 }, + { "label": "K015", "matrix": [0, 15], "w": 2, "x": 15.75, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0.25, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1.5, "x": 1.5, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 3, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "x": 4, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "x": 5, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "x": 6, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "x": 7, "y": 1 }, + { "label": "K18", "matrix": [1, 8], "x": 9.5, "y": 1 }, + { "label": "K19", "matrix": [1, 9], "x": 10.5, "y": 1 }, + { "label": "K110", "matrix": [1, 10], "x": 11.5, "y": 1 }, + { "label": "K111", "matrix": [1, 11], "x": 12.5, "y": 1 }, + { "label": "K112", "matrix": [1, 12], "x": 13.5, "y": 1 }, + { "label": "K113", "matrix": [1, 13], "x": 14.5, "y": 1 }, + { "label": "K114", "matrix": [1, 14], "x": 15.5, "y": 1 }, + { "label": "K115", "matrix": [1, 15], "w": 1.5, "x": 16.5, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1.75, "x": 1.25, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 3, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "x": 4, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "x": 5, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "x": 6, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "x": 7, "y": 2 }, + { "label": "K28", "matrix": [2, 8], "x": 10, "y": 2 }, + { "label": "K29", "matrix": [2, 9], "x": 11, "y": 2 }, + { "label": "K210", "matrix": [2, 10], "x": 12, "y": 2 }, + { "label": "K211", "matrix": [2, 11], "x": 13, "y": 2 }, + { "label": "K212", "matrix": [2, 12], "x": 14, "y": 2 }, + { "label": "K213", "matrix": [2, 13], "x": 15, "y": 2 }, + { "label": "K215", "matrix": [2, 15], "w": 2.25, "x": 16, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 2.25, "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 3.25, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "x": 4.25, "y": 3 }, + { "label": "K34", "matrix": [3, 4], "x": 5.25, "y": 3 }, + { "label": "K35", "matrix": [3, 5], "x": 6.25, "y": 3 }, + { "label": "K36", "matrix": [3, 6], "x": 7.25, "y": 3 }, + { "label": "K38", "matrix": [3, 8], "x": 9.75, "y": 3 }, + { "label": "K39", "matrix": [3, 9], "x": 10.75, "y": 3 }, + { "label": "K310", "matrix": [3, 10], "x": 11.75, "y": 3 }, + { "label": "K311", "matrix": [3, 11], "x": 12.75, "y": 3 }, + { "label": "K312", "matrix": [3, 12], "x": 13.75, "y": 3 }, + { "label": "K313", "matrix": [3, 13], "x": 14.75, "y": 3 }, + { "label": "K314", "matrix": [3, 14], "w": 1.75, "x": 15.75, "y": 3 }, + { "label": "K315", "matrix": [3, 15], "x": 17.5, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "w": 1.5, "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "w": 1.5, "x": 4, "y": 4 }, + { "label": "K44", "matrix": [4, 4], "w": 2.25, "x": 5.5, "y": 4 }, + { "label": "K46", "matrix": [4, 6], "x": 7.75, "y": 4 }, + { "label": "K49", "matrix": [4, 9], "w": 2.75, "x": 9.75, "y": 4 }, + { "label": "K411", "matrix": [4, 11], "w": 1.5, "x": 12.5, "y": 4 }, + { "label": "K415", "matrix": [4, 15], "w": 1.5, "x": 16.75, "y": 4 } + ] + }, + "LAYOUT_split_back_mirrored": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0.5, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1.75, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2.75, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3.75, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "x": 4.75, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "x": 5.75, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "x": 6.75, "y": 0 }, + { "label": "K07", "matrix": [0, 7], "x": 7.75, "y": 0 }, + { "label": "K08", "matrix": [0, 8], "x": 9.75, "y": 0 }, + { "label": "K09", "matrix": [0, 9], "x": 10.75, "y": 0 }, + { "label": "K010", "matrix": [0, 10], "x": 11.75, "y": 0 }, + { "label": "K011", "matrix": [0, 11], "x": 12.75, "y": 0 }, + { "label": "K012", "matrix": [0, 12], "x": 13.75, "y": 0 }, + { "label": "K013", "matrix": [0, 13], "x": 14.75, "y": 0 }, + { "label": "K014", "matrix": [0, 14], "x": 15.75, "y": 0 }, + { "label": "K015", "matrix": [0, 15], "x": 16.75, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0.25, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1.5, "x": 1.5, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 3, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "x": 4, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "x": 5, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "x": 6, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "x": 7, "y": 1 }, + { "label": "K18", "matrix": [1, 8], "x": 9.5, "y": 1 }, + { "label": "K19", "matrix": [1, 9], "x": 10.5, "y": 1 }, + { "label": "K110", "matrix": [1, 10], "x": 11.5, "y": 1 }, + { "label": "K111", "matrix": [1, 11], "x": 12.5, "y": 1 }, + { "label": "K112", "matrix": [1, 12], "x": 13.5, "y": 1 }, + { "label": "K113", "matrix": [1, 13], "x": 14.5, "y": 1 }, + { "label": "K114", "matrix": [1, 14], "x": 15.5, "y": 1 }, + { "label": "K115", "matrix": [1, 15], "w": 1.5, "x": 16.5, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1.75, "x": 1.25, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 3, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "x": 4, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "x": 5, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "x": 6, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "x": 7, "y": 2 }, + { "label": "K28", "matrix": [2, 8], "x": 10, "y": 2 }, + { "label": "K29", "matrix": [2, 9], "x": 11, "y": 2 }, + { "label": "K210", "matrix": [2, 10], "x": 12, "y": 2 }, + { "label": "K211", "matrix": [2, 11], "x": 13, "y": 2 }, + { "label": "K212", "matrix": [2, 12], "x": 14, "y": 2 }, + { "label": "K213", "matrix": [2, 13], "x": 15, "y": 2 }, + { "label": "K215", "matrix": [2, 15], "w": 2.25, "x": 16, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 2.25, "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 3.25, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "x": 4.25, "y": 3 }, + { "label": "K34", "matrix": [3, 4], "x": 5.25, "y": 3 }, + { "label": "K35", "matrix": [3, 5], "x": 6.25, "y": 3 }, + { "label": "K36", "matrix": [3, 6], "x": 7.25, "y": 3 }, + { "label": "K38", "matrix": [3, 8], "x": 9.75, "y": 3 }, + { "label": "K39", "matrix": [3, 9], "x": 10.75, "y": 3 }, + { "label": "K310", "matrix": [3, 10], "x": 11.75, "y": 3 }, + { "label": "K311", "matrix": [3, 11], "x": 12.75, "y": 3 }, + { "label": "K312", "matrix": [3, 12], "x": 13.75, "y": 3 }, + { "label": "K313", "matrix": [3, 13], "x": 14.75, "y": 3 }, + { "label": "K414", "matrix": [4, 14], "w": 2.75, "x": 15.75, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "w": 1.5, "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "w": 1.5, "x": 4, "y": 4 }, + { "label": "K44", "matrix": [4, 3], "x": 5.5, "y": 4 }, + { "label": "K46", "matrix": [4, 5], "w": 2.25, "x": 6.5, "y": 4 }, + { "label": "K49", "matrix": [4, 9], "w": 2.75, "x": 9.75, "y": 4 }, + { "label": "K411", "matrix": [4, 11], "w": 1.5, "x": 12.5, "y": 4 }, + { "label": "K415", "matrix": [4, 15], "w": 1.5, "x": 16.75, "y": 4 } + ] + }, + "LAYOUT_2u_back_mirrored": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0.5, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1.75, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2.75, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3.75, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "x": 4.75, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "x": 5.75, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "x": 6.75, "y": 0 }, + { "label": "K07", "matrix": [0, 7], "x": 7.75, "y": 0 }, + { "label": "K08", "matrix": [0, 8], "x": 9.75, "y": 0 }, + { "label": "K09", "matrix": [0, 9], "x": 10.75, "y": 0 }, + { "label": "K010", "matrix": [0, 10], "x": 11.75, "y": 0 }, + { "label": "K011", "matrix": [0, 11], "x": 12.75, "y": 0 }, + { "label": "K012", "matrix": [0, 12], "x": 13.75, "y": 0 }, + { "label": "K013", "matrix": [0, 13], "x": 14.75, "y": 0 }, + { "label": "K015", "matrix": [0, 15], "w": 2, "x": 15.75, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0.25, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1.5, "x": 1.5, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 3, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "x": 4, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "x": 5, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "x": 6, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "x": 7, "y": 1 }, + { "label": "K18", "matrix": [1, 8], "x": 9.5, "y": 1 }, + { "label": "K19", "matrix": [1, 9], "x": 10.5, "y": 1 }, + { "label": "K110", "matrix": [1, 10], "x": 11.5, "y": 1 }, + { "label": "K111", "matrix": [1, 11], "x": 12.5, "y": 1 }, + { "label": "K112", "matrix": [1, 12], "x": 13.5, "y": 1 }, + { "label": "K113", "matrix": [1, 13], "x": 14.5, "y": 1 }, + { "label": "K114", "matrix": [1, 14], "x": 15.5, "y": 1 }, + { "label": "K115", "matrix": [1, 15], "w": 1.5, "x": 16.5, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1.75, "x": 1.25, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 3, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "x": 4, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "x": 5, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "x": 6, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "x": 7, "y": 2 }, + { "label": "K28", "matrix": [2, 8], "x": 10, "y": 2 }, + { "label": "K29", "matrix": [2, 9], "x": 11, "y": 2 }, + { "label": "K210", "matrix": [2, 10], "x": 12, "y": 2 }, + { "label": "K211", "matrix": [2, 11], "x": 13, "y": 2 }, + { "label": "K212", "matrix": [2, 12], "x": 14, "y": 2 }, + { "label": "K213", "matrix": [2, 13], "x": 15, "y": 2 }, + { "label": "K215", "matrix": [2, 15], "w": 2.25, "x": 16, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 2.25, "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 3.25, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "x": 4.25, "y": 3 }, + { "label": "K34", "matrix": [3, 4], "x": 5.25, "y": 3 }, + { "label": "K35", "matrix": [3, 5], "x": 6.25, "y": 3 }, + { "label": "K36", "matrix": [3, 6], "x": 7.25, "y": 3 }, + { "label": "K38", "matrix": [3, 8], "x": 9.75, "y": 3 }, + { "label": "K39", "matrix": [3, 9], "x": 10.75, "y": 3 }, + { "label": "K310", "matrix": [3, 10], "x": 11.75, "y": 3 }, + { "label": "K311", "matrix": [3, 11], "x": 12.75, "y": 3 }, + { "label": "K312", "matrix": [3, 12], "x": 13.75, "y": 3 }, + { "label": "K313", "matrix": [3, 13], "x": 14.75, "y": 3 }, + { "label": "K414", "matrix": [4, 14], "w": 2.75, "x": 15.75, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "w": 1.5, "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "w": 1.5, "x": 4, "y": 4 }, + { "label": "K44", "matrix": [4, 3], "x": 5.5, "y": 4 }, + { "label": "K46", "matrix": [4, 5], "w": 2.25, "x": 6.5, "y": 4 }, + { "label": "K49", "matrix": [4, 9], "w": 2.75, "x": 9.75, "y": 4 }, + { "label": "K411", "matrix": [4, 11], "w": 1.5, "x": 12.5, "y": 4 }, + { "label": "K415", "matrix": [4, 15], "w": 1.5, "x": 16.75, "y": 4 } + ] + }, + "LAYOUT_split_back_175u_shift_mirrored": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0.5, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1.75, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2.75, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3.75, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "x": 4.75, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "x": 5.75, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "x": 6.75, "y": 0 }, + { "label": "K07", "matrix": [0, 7], "x": 7.75, "y": 0 }, + { "label": "K08", "matrix": [0, 8], "x": 9.75, "y": 0 }, + { "label": "K09", "matrix": [0, 9], "x": 10.75, "y": 0 }, + { "label": "K010", "matrix": [0, 10], "x": 11.75, "y": 0 }, + { "label": "K011", "matrix": [0, 11], "x": 12.75, "y": 0 }, + { "label": "K012", "matrix": [0, 12], "x": 13.75, "y": 0 }, + { "label": "K013", "matrix": [0, 13], "x": 14.75, "y": 0 }, + { "label": "K014", "matrix": [0, 14], "x": 15.75, "y": 0 }, + { "label": "K015", "matrix": [0, 15], "x": 16.75, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0.25, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1.5, "x": 1.5, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 3, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "x": 4, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "x": 5, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "x": 6, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "x": 7, "y": 1 }, + { "label": "K18", "matrix": [1, 8], "x": 9.5, "y": 1 }, + { "label": "K19", "matrix": [1, 9], "x": 10.5, "y": 1 }, + { "label": "K110", "matrix": [1, 10], "x": 11.5, "y": 1 }, + { "label": "K111", "matrix": [1, 11], "x": 12.5, "y": 1 }, + { "label": "K112", "matrix": [1, 12], "x": 13.5, "y": 1 }, + { "label": "K113", "matrix": [1, 13], "x": 14.5, "y": 1 }, + { "label": "K114", "matrix": [1, 14], "x": 15.5, "y": 1 }, + { "label": "K115", "matrix": [1, 15], "w": 1.5, "x": 16.5, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1.75, "x": 1.25, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 3, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "x": 4, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "x": 5, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "x": 6, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "x": 7, "y": 2 }, + { "label": "K28", "matrix": [2, 8], "x": 10, "y": 2 }, + { "label": "K29", "matrix": [2, 9], "x": 11, "y": 2 }, + { "label": "K210", "matrix": [2, 10], "x": 12, "y": 2 }, + { "label": "K211", "matrix": [2, 11], "x": 13, "y": 2 }, + { "label": "K212", "matrix": [2, 12], "x": 14, "y": 2 }, + { "label": "K213", "matrix": [2, 13], "x": 15, "y": 2 }, + { "label": "K215", "matrix": [2, 15], "w": 2.25, "x": 16, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 2.25, "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 3.25, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "x": 4.25, "y": 3 }, + { "label": "K34", "matrix": [3, 4], "x": 5.25, "y": 3 }, + { "label": "K35", "matrix": [3, 5], "x": 6.25, "y": 3 }, + { "label": "K36", "matrix": [3, 6], "x": 7.25, "y": 3 }, + { "label": "K38", "matrix": [3, 8], "x": 9.75, "y": 3 }, + { "label": "K39", "matrix": [3, 9], "x": 10.75, "y": 3 }, + { "label": "K310", "matrix": [3, 10], "x": 11.75, "y": 3 }, + { "label": "K311", "matrix": [3, 11], "x": 12.75, "y": 3 }, + { "label": "K312", "matrix": [3, 12], "x": 13.75, "y": 3 }, + { "label": "K313", "matrix": [3, 13], "x": 14.75, "y": 3 }, + { "label": "K314", "matrix": [3, 14], "w": 1.75, "x": 15.75, "y": 3 }, + { "label": "K315", "matrix": [3, 15], "x": 17.5, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "w": 1.5, "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "w": 1.5, "x": 4, "y": 4 }, + { "label": "K44", "matrix": [4, 3], "x": 5.5, "y": 4 }, + { "label": "K46", "matrix": [4, 5], "w": 2.25, "x": 6.5, "y": 4 }, + { "label": "K49", "matrix": [4, 9], "w": 2.75, "x": 9.75, "y": 4 }, + { "label": "K411", "matrix": [4, 11], "w": 1.5, "x": 12.5, "y": 4 }, + { "label": "K415", "matrix": [4, 15], "w": 1.5, "x": 16.75, "y": 4 } + ] + }, + "LAYOUT_2u_back_175u_shift_mirrored": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0.5, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1.75, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2.75, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3.75, "y": 0 }, + { "label": "K04", "matrix": [0, 4], "x": 4.75, "y": 0 }, + { "label": "K05", "matrix": [0, 5], "x": 5.75, "y": 0 }, + { "label": "K06", "matrix": [0, 6], "x": 6.75, "y": 0 }, + { "label": "K07", "matrix": [0, 7], "x": 7.75, "y": 0 }, + { "label": "K08", "matrix": [0, 8], "x": 9.75, "y": 0 }, + { "label": "K09", "matrix": [0, 9], "x": 10.75, "y": 0 }, + { "label": "K010", "matrix": [0, 10], "x": 11.75, "y": 0 }, + { "label": "K011", "matrix": [0, 11], "x": 12.75, "y": 0 }, + { "label": "K012", "matrix": [0, 12], "x": 13.75, "y": 0 }, + { "label": "K013", "matrix": [0, 13], "x": 14.75, "y": 0 }, + { "label": "K015", "matrix": [0, 15], "w": 2, "x": 15.75, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0.25, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "w": 1.5, "x": 1.5, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 3, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "x": 4, "y": 1 }, + { "label": "K14", "matrix": [1, 4], "x": 5, "y": 1 }, + { "label": "K15", "matrix": [1, 5], "x": 6, "y": 1 }, + { "label": "K16", "matrix": [1, 6], "x": 7, "y": 1 }, + { "label": "K18", "matrix": [1, 8], "x": 9.5, "y": 1 }, + { "label": "K19", "matrix": [1, 9], "x": 10.5, "y": 1 }, + { "label": "K110", "matrix": [1, 10], "x": 11.5, "y": 1 }, + { "label": "K111", "matrix": [1, 11], "x": 12.5, "y": 1 }, + { "label": "K112", "matrix": [1, 12], "x": 13.5, "y": 1 }, + { "label": "K113", "matrix": [1, 13], "x": 14.5, "y": 1 }, + { "label": "K114", "matrix": [1, 14], "x": 15.5, "y": 1 }, + { "label": "K115", "matrix": [1, 15], "w": 1.5, "x": 16.5, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "w": 1.75, "x": 1.25, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 3, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "x": 4, "y": 2 }, + { "label": "K24", "matrix": [2, 4], "x": 5, "y": 2 }, + { "label": "K25", "matrix": [2, 5], "x": 6, "y": 2 }, + { "label": "K26", "matrix": [2, 6], "x": 7, "y": 2 }, + { "label": "K28", "matrix": [2, 8], "x": 10, "y": 2 }, + { "label": "K29", "matrix": [2, 9], "x": 11, "y": 2 }, + { "label": "K210", "matrix": [2, 10], "x": 12, "y": 2 }, + { "label": "K211", "matrix": [2, 11], "x": 13, "y": 2 }, + { "label": "K212", "matrix": [2, 12], "x": 14, "y": 2 }, + { "label": "K213", "matrix": [2, 13], "x": 15, "y": 2 }, + { "label": "K215", "matrix": [2, 15], "w": 2.25, "x": 16, "y": 2 }, + { "label": "K31", "matrix": [3, 1], "w": 2.25, "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 3.25, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "x": 4.25, "y": 3 }, + { "label": "K34", "matrix": [3, 4], "x": 5.25, "y": 3 }, + { "label": "K35", "matrix": [3, 5], "x": 6.25, "y": 3 }, + { "label": "K36", "matrix": [3, 6], "x": 7.25, "y": 3 }, + { "label": "K38", "matrix": [3, 8], "x": 9.75, "y": 3 }, + { "label": "K39", "matrix": [3, 9], "x": 10.75, "y": 3 }, + { "label": "K310", "matrix": [3, 10], "x": 11.75, "y": 3 }, + { "label": "K311", "matrix": [3, 11], "x": 12.75, "y": 3 }, + { "label": "K312", "matrix": [3, 12], "x": 13.75, "y": 3 }, + { "label": "K313", "matrix": [3, 13], "x": 14.75, "y": 3 }, + { "label": "K314", "matrix": [3, 14], "w": 1.75, "x": 15.75, "y": 3 }, + { "label": "K315", "matrix": [3, 15], "x": 17.5, "y": 3 }, + { "label": "K41", "matrix": [4, 1], "w": 1.5, "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "w": 1.5, "x": 4, "y": 4 }, + { "label": "K44", "matrix": [4, 3], "x": 5.5, "y": 4 }, + { "label": "K46", "matrix": [4, 5], "w": 2.25, "x": 6.5, "y": 4 }, + { "label": "K49", "matrix": [4, 9], "w": 2.75, "x": 9.75, "y": 4 }, + { "label": "K411", "matrix": [4, 11], "w": 1.5, "x": 12.5, "y": 4 }, + { "label": "K415", "matrix": [4, 15], "w": 1.5, "x": 16.75, "y": 4 } + ] + } + } +} diff --git a/keyboards/viktus/osav2_topre/keymaps/default/keymap.c b/keyboards/viktus/osav2_topre/keymaps/default/keymap.c new file mode 100644 index 000000000000..b9561c9b3255 --- /dev/null +++ b/keyboards/viktus/osav2_topre/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2022 Viktus Design LLC + * + * 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 . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_back_175u_shift( + KC_DEL, 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_TILDE, + 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_BSPC, + 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL + ), + [1] = LAYOUT_split_back_175u_shift( + 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_UP, 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_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 + ) +}; diff --git a/keyboards/viktus/osav2_topre/keymaps/via/keymap.c b/keyboards/viktus/osav2_topre/keymaps/via/keymap.c new file mode 100644 index 000000000000..b9561c9b3255 --- /dev/null +++ b/keyboards/viktus/osav2_topre/keymaps/via/keymap.c @@ -0,0 +1,34 @@ +/* Copyright 2022 Viktus Design LLC + * + * 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 . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_back_175u_shift( + KC_DEL, 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_TILDE, + 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_BSPC, + 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL + ), + [1] = LAYOUT_split_back_175u_shift( + 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_UP, 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_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 + ) +}; diff --git a/keyboards/viktus/osav2_topre/keymaps/via/rules.mk b/keyboards/viktus/osav2_topre/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/viktus/osav2_topre/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/viktus/osav2_topre/osav2_topre.c b/keyboards/viktus/osav2_topre/osav2_topre.c new file mode 100644 index 000000000000..96b04090cf6f --- /dev/null +++ b/keyboards/viktus/osav2_topre/osav2_topre.c @@ -0,0 +1,49 @@ +/* Copyright 2023 Viktus Design LLC + * + * 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 . + */ + +#include "quantum.h" +#include "ec.h" +#include "matrix.h" +//#include "debug.h" // needed for debugging + +#define RESET_PT 55 +#define ACTUATION_PT 65 + +// console debugging for pad values +/*void keyboard_post_init_kb() { + debug_enable = true; + debug_matrix = true; +}*/ + +void matrix_init_custom(void) { + ec_config_t ec_config = {.reset_pt = RESET_PT, .actuation_pt = ACTUATION_PT}; + + ec_init(&ec_config); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool updated = ec_matrix_scan(current_matrix); + + // console debugging for pad values + /*static int cnt = 0; + if (cnt++ == 300) { + cnt = 0; + ec_dprint_matrix(); + dprintf("\n"); + }*/ + + return updated; +} diff --git a/keyboards/viktus/osav2_topre/readme.md b/keyboards/viktus/osav2_topre/readme.md new file mode 100644 index 000000000000..6379644cd69e --- /dev/null +++ b/keyboards/viktus/osav2_topre/readme.md @@ -0,0 +1,25 @@ +# OSAv2 Topre + +![osav2_topre](https://i.imgur.com/WTRrpQFh.png) + +- Keyboard Maintainer: BlindAssassin111 +- Hardware Supported: OSAv2 Topre PCBs +- Hardware Availability: Viktus Design LLC + +Make example for this keyboard (after setting up your build environment): + + make viktus/osav2_topre:default + +Flashing example for this keyboard: + + make viktus/osav2_topre: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 diff --git a/keyboards/viktus/osav2_topre/rules.mk b/keyboards/viktus/osav2_topre/rules.mk new file mode 100644 index 000000000000..037e26c530c7 --- /dev/null +++ b/keyboards/viktus/osav2_topre/rules.mk @@ -0,0 +1,3 @@ +CUSTOM_MATRIX = lite +QUANTUM_LIB_SRC += analog.c +SRC += ec.c From bfdfeb6f3fa1a0fc08d75702f6b0fdbcc850063e Mon Sep 17 00:00:00 2001 From: FanXingStudio <133078117+FanXingStudio@users.noreply.github.com> Date: Sun, 11 Jun 2023 15:51:17 +0800 Subject: [PATCH 21/46] [Keyboard] Add kibou/winter (#21161) --- keyboards/kibou/winter/info.json | 119 ++++++++++++++++++ .../kibou/winter/keymaps/default/keymap.c | 15 +++ keyboards/kibou/winter/keymaps/via/keymap.c | 15 +++ keyboards/kibou/winter/keymaps/via/rules.mk | 1 + keyboards/kibou/winter/readme.md | 23 ++++ keyboards/kibou/winter/rules.mk | 1 + 6 files changed, 174 insertions(+) create mode 100644 keyboards/kibou/winter/info.json create mode 100644 keyboards/kibou/winter/keymaps/default/keymap.c create mode 100644 keyboards/kibou/winter/keymaps/via/keymap.c create mode 100644 keyboards/kibou/winter/keymaps/via/rules.mk create mode 100644 keyboards/kibou/winter/readme.md create mode 100644 keyboards/kibou/winter/rules.mk diff --git a/keyboards/kibou/winter/info.json b/keyboards/kibou/winter/info.json new file mode 100644 index 000000000000..d4d8005aa3d7 --- /dev/null +++ b/keyboards/kibou/winter/info.json @@ -0,0 +1,119 @@ +{ + "manufacturer": "kibou", + "keyboard_name": "winter", + "maintainer": "kibou", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "A4" + }, + "matrix_pins": { + "cols": ["A9", "A8", "B15", "B14", "B13", "B12", "B11", "B10", "B2", "B1", "B0", "A7", "A3", "A6", "A10", "A15", "B9", "B4"], + "rows": ["B6", "B5", "B3", "A5", "B8", "B7"] + }, + "processor": "STM32F072", + "url": "https://kibou.store/", + "usb": { + "device_version": "0.0.1", + "pid": "0xA003", + "vid": "0x586A" + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "matrix": [0, 0], "x": 0, "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.5, "y": 0 }, + { "matrix": [0, 7], "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "x": 9.5, "y": 0 }, + { "matrix": [0, 11], "x": 11, "y": 0 }, + { "matrix": [0, 12], "x": 12, "y": 0 }, + { "matrix": [0, 13], "x": 13, "y": 0 }, + { "matrix": [0, 14], "x": 14, "y": 0 }, + { "matrix": [0, 15], "x": 15.25, "y": 0 }, + { "matrix": [0, 16], "x": 16.25, "y": 0 }, + { "matrix": [0, 17], "x": 17.25, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1.25 }, + { "matrix": [1, 1], "x": 1, "y": 1.25 }, + { "matrix": [1, 2], "x": 2, "y": 1.25 }, + { "matrix": [1, 3], "x": 3, "y": 1.25 }, + { "matrix": [1, 4], "x": 4, "y": 1.25 }, + { "matrix": [1, 5], "x": 5, "y": 1.25 }, + { "matrix": [1, 6], "x": 6, "y": 1.25 }, + { "matrix": [1, 7], "x": 7, "y": 1.25 }, + { "matrix": [1, 8], "x": 8, "y": 1.25 }, + { "matrix": [1, 9], "x": 9, "y": 1.25 }, + { "matrix": [1, 10], "x": 10, "y": 1.25 }, + { "matrix": [1, 11], "x": 11, "y": 1.25 }, + { "matrix": [1, 12], "x": 12, "y": 1.25 }, + { "matrix": [1, 13], "w": 2, "x": 13, "y": 1.25 }, + { "matrix": [1, 15], "x": 15.25, "y": 1.25 }, + { "matrix": [1, 16], "x": 16.25, "y": 1.25 }, + { "matrix": [1, 17], "x": 17.25, "y": 1.25 }, + { "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.25 }, + { "matrix": [2, 1], "x": 1.5, "y": 2.25 }, + { "matrix": [2, 2], "x": 2.5, "y": 2.25 }, + { "matrix": [2, 3], "x": 3.5, "y": 2.25 }, + { "matrix": [2, 4], "x": 4.5, "y": 2.25 }, + { "matrix": [2, 5], "x": 5.5, "y": 2.25 }, + { "matrix": [2, 6], "x": 6.5, "y": 2.25 }, + { "matrix": [2, 7], "x": 7.5, "y": 2.25 }, + { "matrix": [2, 8], "x": 8.5, "y": 2.25 }, + { "matrix": [2, 9], "x": 9.5, "y": 2.25 }, + { "matrix": [2, 10], "x": 10.5, "y": 2.25 }, + { "matrix": [2, 11], "x": 11.5, "y": 2.25 }, + { "matrix": [2, 12], "x": 12.5, "y": 2.25 }, + { "matrix": [2, 14], "w": 1.5, "x": 13.5, "y": 2.25 }, + { "matrix": [2, 15], "x": 15.25, "y": 2.25 }, + { "matrix": [2, 16], "x": 16.25, "y": 2.25 }, + { "matrix": [2, 17], "x": 17.25, "y": 2.25 }, + { "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.25 }, + { "matrix": [3, 1], "x": 1.75, "y": 3.25 }, + { "matrix": [3, 2], "x": 2.75, "y": 3.25 }, + { "matrix": [3, 3], "x": 3.75, "y": 3.25 }, + { "matrix": [3, 4], "x": 4.75, "y": 3.25 }, + { "matrix": [3, 5], "x": 5.75, "y": 3.25 }, + { "matrix": [3, 6], "x": 6.75, "y": 3.25 }, + { "matrix": [3, 7], "x": 7.75, "y": 3.25 }, + { "matrix": [3, 8], "x": 8.75, "y": 3.25 }, + { "matrix": [3, 9], "x": 9.75, "y": 3.25 }, + { "matrix": [3, 10], "x": 10.75, "y": 3.25 }, + { "matrix": [3, 11], "x": 11.75, "y": 3.25 }, + { "matrix": [3, 13], "w": 2.25, "x": 12.75, "y": 3.25 }, + { "matrix": [4, 0], "w": 2.25, "x": 0, "y": 4.25 }, + { "matrix": [4, 1], "x": 2.25, "y": 4.25 }, + { "matrix": [4, 2], "x": 3.25, "y": 4.25 }, + { "matrix": [4, 3], "x": 4.25, "y": 4.25 }, + { "matrix": [4, 4], "x": 5.25, "y": 4.25 }, + { "matrix": [4, 5], "x": 6.25, "y": 4.25 }, + { "matrix": [4, 6], "x": 7.25, "y": 4.25 }, + { "matrix": [4, 7], "x": 8.25, "y": 4.25 }, + { "matrix": [4, 8], "x": 9.25, "y": 4.25 }, + { "matrix": [4, 9], "x": 10.25, "y": 4.25 }, + { "matrix": [4, 10], "x": 11.25, "y": 4.25 }, + { "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.25 }, + { "matrix": [4, 16], "x": 16.25, "y": 4.25 }, + { "matrix": [5, 0], "w": 1.5, "x": 0, "y": 5.25 }, + { "matrix": [5, 2], "w": 1.5, "x": 2.5, "y": 5.25 }, + { "matrix": [5, 6], "w": 7, "x": 4, "y": 5.25 }, + { "matrix": [5, 10], "w": 1.5, "x": 11, "y": 5.25 }, + { "matrix": [5, 14], "w": 1.5, "x": 13.5, "y": 5.25 }, + { "matrix": [5, 15], "x": 15.25, "y": 5.25 }, + { "matrix": [5, 16], "x": 16.25, "y": 5.25 }, + { "matrix": [5, 17], "x": 17.25, "y": 5.25 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/kibou/winter/keymaps/default/keymap.c b/keyboards/kibou/winter/keymaps/default/keymap.c new file mode 100644 index 000000000000..ecaadeb89868 --- /dev/null +++ b/keyboards/kibou/winter/keymaps/default/keymap.c @@ -0,0 +1,15 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_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_LSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/kibou/winter/keymaps/via/keymap.c b/keyboards/kibou/winter/keymaps/via/keymap.c new file mode 100644 index 000000000000..ecaadeb89868 --- /dev/null +++ b/keyboards/kibou/winter/keymaps/via/keymap.c @@ -0,0 +1,15 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_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_LSFT, KC_UP, + KC_LCTL, KC_LALT, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/kibou/winter/keymaps/via/rules.mk b/keyboards/kibou/winter/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/kibou/winter/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/kibou/winter/readme.md b/keyboards/kibou/winter/readme.md new file mode 100644 index 000000000000..29aa667ffd20 --- /dev/null +++ b/keyboards/kibou/winter/readme.md @@ -0,0 +1,23 @@ +# winter + +* Keyboard Maintainer: [kibou](https://kibou.store/) +* Hardware Supported: winter PCBs, STM32F072 +* Hardware Availability: https://kibou.store/ + +Make example for this keyboard (after setting up your build environment): + + make kibou/winter:default + +Flashing example for this keyboard: + + make kibou/winter: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 diff --git a/keyboards/kibou/winter/rules.mk b/keyboards/kibou/winter/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/kibou/winter/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From 1914fbd951ada70259a13b2d35282d299078fa0f Mon Sep 17 00:00:00 2001 From: Joe Scotto Date: Sun, 11 Jun 2023 03:52:24 -0400 Subject: [PATCH 22/46] [Keyboard] Add Scotto9 handwired macropad (#21105) Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com> Co-authored-by: Drashna Jaelre --- .../handwired/scottokeebs/scotto9/info.json | 47 +++++++++++++++++++ .../scotto9/keymaps/default/keymap.c | 27 +++++++++++ .../handwired/scottokeebs/scotto9/readme.md | 27 +++++++++++ .../handwired/scottokeebs/scotto9/rules.mk | 1 + 4 files changed, 102 insertions(+) create mode 100644 keyboards/handwired/scottokeebs/scotto9/info.json create mode 100644 keyboards/handwired/scottokeebs/scotto9/keymaps/default/keymap.c create mode 100644 keyboards/handwired/scottokeebs/scotto9/readme.md create mode 100644 keyboards/handwired/scottokeebs/scotto9/rules.mk diff --git a/keyboards/handwired/scottokeebs/scotto9/info.json b/keyboards/handwired/scottokeebs/scotto9/info.json new file mode 100644 index 000000000000..a42d2063001e --- /dev/null +++ b/keyboards/handwired/scottokeebs/scotto9/info.json @@ -0,0 +1,47 @@ +{ + "manufacturer": "ScottoKeebs", + "keyboard_name": "Scotto9", + "maintainer": "joe-scotto", + "diode_direction": "COL2ROW", + "development_board": "promicro", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + // 4, 5, 6 + "cols": ["D4", "C6", "D7"], + // 15, 14, 16 + "rows": ["B1", "B3", "B2"] + }, + "url": "https://scottokeebs.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x0003", + "vid": "0x534B" + }, + "community_layouts": ["ortho_3x3"], + "layouts": { + "LAYOUT_ortho_3x3": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + + // Row 2 + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + + // Row 3 + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2} + ] + } + } +} diff --git a/keyboards/handwired/scottokeebs/scotto9/keymaps/default/keymap.c b/keyboards/handwired/scottokeebs/scotto9/keymaps/default/keymap.c new file mode 100644 index 000000000000..eec8d684ada3 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scotto9/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* +Copyright 2022 Joe Scotto + +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 . +*/ + +#include QMK_KEYBOARD_H + +// Keymap +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_3x3( + KC_1, KC_2, KC_3, + KC_4, KC_5, KC_6, + KC_7, KC_8, KC_9 + ) +}; diff --git a/keyboards/handwired/scottokeebs/scotto9/readme.md b/keyboards/handwired/scottokeebs/scotto9/readme.md new file mode 100644 index 000000000000..ab8767113859 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scotto9/readme.md @@ -0,0 +1,27 @@ +# Scotto9 + +![Scotto9](https://i.imgur.com/inbmNSEh.jpeg) + +A 9-key macropad. Case files available [here](https://github.com/joe-scotto/scottokeebs). + +* Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto) +* Hardware Supported: ATmega32U4 +* Hardware Availability: [Amazon](https://amazon.com) + +Make example for this keyboard (after setting up your build environment): + + make handwired/scottokeebs/scotto9:default + +Flashing example for this keyboard: + + make handwired/scottokeebs/scotto9: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 \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scotto9/rules.mk b/keyboards/handwired/scottokeebs/scotto9/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scotto9/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 33c93d3a960cbfc9a423771145f68e8997e0ecd4 Mon Sep 17 00:00:00 2001 From: Joe Scotto Date: Sun, 11 Jun 2023 03:52:43 -0400 Subject: [PATCH 23/46] [Keyboard] Add Scotto34 (PCB Edition) (#21085) Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com> --- keyboards/scottokeebs/scotto34/info.json | 75 ++++++ .../scotto34/keymaps/default/config.h | 23 ++ .../scotto34/keymaps/default/keymap.c | 45 ++++ .../scotto34/keymaps/scotto/config.h | 23 ++ .../scotto34/keymaps/scotto/keymap.c | 246 ++++++++++++++++++ .../scotto34/keymaps/scotto/rules.mk | 1 + keyboards/scottokeebs/scotto34/readme.md | 29 +++ keyboards/scottokeebs/scotto34/rules.mk | 1 + 8 files changed, 443 insertions(+) create mode 100644 keyboards/scottokeebs/scotto34/info.json create mode 100644 keyboards/scottokeebs/scotto34/keymaps/default/config.h create mode 100644 keyboards/scottokeebs/scotto34/keymaps/default/keymap.c create mode 100644 keyboards/scottokeebs/scotto34/keymaps/scotto/config.h create mode 100644 keyboards/scottokeebs/scotto34/keymaps/scotto/keymap.c create mode 100644 keyboards/scottokeebs/scotto34/keymaps/scotto/rules.mk create mode 100644 keyboards/scottokeebs/scotto34/readme.md create mode 100644 keyboards/scottokeebs/scotto34/rules.mk diff --git a/keyboards/scottokeebs/scotto34/info.json b/keyboards/scottokeebs/scotto34/info.json new file mode 100644 index 000000000000..72a1801bead9 --- /dev/null +++ b/keyboards/scottokeebs/scotto34/info.json @@ -0,0 +1,75 @@ +{ + "manufacturer": "ScottoKeebs", + "keyboard_name": "Scotto34 (PCB Edition)", + "maintainer": "joe-scotto", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["GP9", "GP10", "GP11", "GP12", "GP13", "GP18", "GP19", "GP20", "GP21", "GP22"], + "rows": ["GP0", "GP1", "GP14", "GP15"] + }, + "processor": "RP2040", + "url": "https://scottokeebs.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x1013", + "vid": "0x534B" + }, + "ws2812": { + "pin": "GP23", + "driver": "vendor" + }, + "rgblight": { + "led_count": 1 + }, + "community_layouts": ["split_3x5_2"], + "layouts": { + "LAYOUT_split_3x5_2": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [1, 6], "x": 6, "y": 1 }, + { "matrix": [1, 7], "x": 7, "y": 1 }, + { "matrix": [1, 8], "x": 8, "y": 1 }, + { "matrix": [1, 9], "x": 9, "y": 1 }, + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [2, 6], "x": 6, "y": 2 }, + { "matrix": [2, 7], "x": 7, "y": 2 }, + { "matrix": [2, 8], "x": 8, "y": 2 }, + { "matrix": [2, 9], "x": 9, "y": 2 }, + { "matrix": [3, 3], "x": 3, "y": 3 }, + { "matrix": [3, 4], "x": 4, "y": 3 }, + { "matrix": [3, 5], "x": 5, "y": 3 }, + { "matrix": [3, 6], "x": 6, "y": 3 } + ] + } + } +} diff --git a/keyboards/scottokeebs/scotto34/keymaps/default/config.h b/keyboards/scottokeebs/scotto34/keymaps/default/config.h new file mode 100644 index 000000000000..9e99bf0205e9 --- /dev/null +++ b/keyboards/scottokeebs/scotto34/keymaps/default/config.h @@ -0,0 +1,23 @@ +/* +Copyright 2023 Joe Scotto + +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 . +*/ + +#pragma once + +// Define options +#define TAPPING_TERM 135 +#define PERMISSIVE_HOLD +#define TAPPING_TERM_PER_KEY diff --git a/keyboards/scottokeebs/scotto34/keymaps/default/keymap.c b/keyboards/scottokeebs/scotto34/keymaps/default/keymap.c new file mode 100644 index 000000000000..a06722184a9b --- /dev/null +++ b/keyboards/scottokeebs/scotto34/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +/* +Copyright 2023 Joe Scotto + +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 . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_3x5_2( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_BSPC, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), + KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT) + ), + [1] = LAYOUT_split_3x5_2( + KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, + KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, + LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_split_3x5_2( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_split_3x5_2( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/scottokeebs/scotto34/keymaps/scotto/config.h b/keyboards/scottokeebs/scotto34/keymaps/scotto/config.h new file mode 100644 index 000000000000..9e99bf0205e9 --- /dev/null +++ b/keyboards/scottokeebs/scotto34/keymaps/scotto/config.h @@ -0,0 +1,23 @@ +/* +Copyright 2023 Joe Scotto + +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 . +*/ + +#pragma once + +// Define options +#define TAPPING_TERM 135 +#define PERMISSIVE_HOLD +#define TAPPING_TERM_PER_KEY diff --git a/keyboards/scottokeebs/scotto34/keymaps/scotto/keymap.c b/keyboards/scottokeebs/scotto34/keymaps/scotto/keymap.c new file mode 100644 index 000000000000..b1720f430207 --- /dev/null +++ b/keyboards/scottokeebs/scotto34/keymaps/scotto/keymap.c @@ -0,0 +1,246 @@ +/* +Copyright 2023 Joe Scotto + +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 . +*/ + +#include QMK_KEYBOARD_H + +// Tap dance declarations +enum { + TD_ESC_LALT_LCTL_SPOTLIGHT_EMOJI, + TD_ESC_LCTL_LALT_WINDOWS_EMOJI +}; + +// Custom tapping term for multi function keys +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case TD(TD_ESC_LALT_LCTL_SPOTLIGHT_EMOJI) : + case TD(TD_ESC_LCTL_LALT_WINDOWS_EMOJI) : + case LGUI_T(KC_SPC) : + case LT(1, KC_SPC) : + case LT(1, KC_TAB) : + case LT(2, KC_ENT) : + return 200; + default: + return TAPPING_TERM; + } +}; + +// Begin quad TD +typedef enum { + TD_NONE, + TD_UNKNOWN, + TD_SINGLE_HOLD, + TD_DOUBLE_HOLD, + TD_TRIPLE_HOLD, + TD_SINGLE_TAP, + TD_DOUBLE_TAP, + TD_TRIPLE_TAP +} td_state_t; + +typedef struct { + bool is_press_action; + td_state_t state; +} td_tap_t; + +// Create an instance of 'td_tap_t' for the 'x' tap dance. +static td_tap_t xtap_state = { + .is_press_action = true, + .state = TD_NONE +}; + +td_state_t cur_dance(tap_dance_state_t *state) { + if (state->count == 1) { + if (state->interrupted || !state->pressed) { + return TD_SINGLE_TAP; + } else { + return TD_SINGLE_HOLD; + } + } else if (state->count == 2) { + if (state->interrupted || !state->pressed) { + return TD_DOUBLE_TAP; + } else { + return TD_DOUBLE_HOLD; + } + } else if (state->count == 3) { + if (state->interrupted || !state->pressed) { + return TD_TRIPLE_TAP; + } else { + return TD_TRIPLE_HOLD; + } + } + + return TD_UNKNOWN; +} + +void td_esc_lalt_lctl_spotlight_emoji_finished(tap_dance_state_t *state, void *user_data) { + xtap_state.state = cur_dance(state); + switch (xtap_state.state) { + case TD_SINGLE_TAP: tap_code(KC_ESC); break; + case TD_SINGLE_HOLD: register_code(KC_LALT); break; + case TD_DOUBLE_HOLD: register_code(KC_LCTL); break; + case TD_DOUBLE_TAP: tap_code16(G(KC_SPC)); break; + case TD_TRIPLE_TAP: tap_code16(C(G(KC_SPC))); break; + default: break; + } +} + +void td_esc_lalt_lctl_spotlight_emoji_reset(tap_dance_state_t *state, void *user_data) { + switch (xtap_state.state) { + case TD_SINGLE_TAP: unregister_code(KC_ESC); break; + case TD_SINGLE_HOLD: unregister_code(KC_LALT); break; + case TD_DOUBLE_HOLD: unregister_code(KC_LCTL); break; + default: break; + } + xtap_state.state = TD_NONE; +} + +void td_esc_lctl_lalt_windows_emoji_finished(tap_dance_state_t *state, void *user_data) { + xtap_state.state = cur_dance(state); + switch (xtap_state.state) { + case TD_SINGLE_TAP: tap_code16(KC_ESC); break; + case TD_SINGLE_HOLD: register_code(KC_LCTL); break; + case TD_DOUBLE_HOLD: register_code(KC_LALT); break; + case TD_DOUBLE_TAP: tap_code(KC_LGUI); break; + case TD_TRIPLE_TAP: tap_code16(G(KC_DOT)); break; + default: break; + } +} + +void td_esc_lctl_lalt_windows_emoji_reset(tap_dance_state_t *state, void *user_data) { + switch (xtap_state.state) { + case TD_SINGLE_TAP: unregister_code(KC_ESC); break; + case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break; + case TD_DOUBLE_HOLD: unregister_code(KC_LALT); break; + default: break; + } + xtap_state.state = TD_NONE; +} + + // Tap Dance definitions +tap_dance_action_t tap_dance_actions[] = { + [TD_ESC_LALT_LCTL_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_esc_lalt_lctl_spotlight_emoji_finished, td_esc_lalt_lctl_spotlight_emoji_reset), + [TD_ESC_LCTL_LALT_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_esc_lctl_lalt_windows_emoji_finished, td_esc_lctl_lalt_windows_emoji_reset) +}; +// For the x tap dance. Put it here so it can be used in any keymap +void x_finished(tap_dance_state_t *state, void *user_data); +void x_reset(tap_dance_state_t *state, void *user_data); + +// Onboard LED +#ifdef RGBLIGHT_ENABLE + // Configure LED + void keyboard_post_init_user(void) { + // Initialize RGB to static black + rgblight_enable_noeeprom(); + rgblight_sethsv_noeeprom(HSV_BLACK); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + } + + // Change LED + void housekeeping_task_user(void) { + // Caps lock status + if (host_keyboard_led_state().caps_lock) { + rgblight_setrgb_at(4, 4, 0, 0); + } else { + // Layers + switch (get_highest_layer(layer_state | default_layer_state)) { + case 0: + rgblight_setrgb_at(4, 4, 4, 0); + break; + case 1: + rgblight_setrgb_at(4, 4, 4, 0); + break; + case 2: + rgblight_setrgb_at(4, 4, 4, 0); + break; + case 3: + rgblight_setrgb_at(4, 4, 4, 0); + break; + case 4: + rgblight_setrgb_at(0, 0, 4, 0); + break; + case 5: + rgblight_setrgb_at(0, 4, 0, 0); + break; + case 6: + rgblight_setrgb_at(0, 0, 4, 0); + break; + case 7: + rgblight_setrgb_at(0, 0, 4, 0); + break; + case 8: + rgblight_setrgb_at(0, 0, 4, 0); + break; + } + } + } +#endif + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_3x5_2( + KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, + KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), + TD(TD_ESC_LALT_LCTL_SPOTLIGHT_EMOJI), LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT) + ), + [1] = LAYOUT_split_3x5_2( + KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, + KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, + LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_split_3x5_2( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_split_3x5_2( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(5), TO(4), + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [4] = LAYOUT_split_3x5_2( + KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, + KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), + TD(TD_ESC_LCTL_LALT_WINDOWS_EMOJI), LCTL_T(KC_SPC), LT(6, KC_TAB), LT(7, KC_ENT) + ), + [5] = LAYOUT_split_3x5_2( + KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, + KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, KC_SLSH, + KC_LCTL, KC_SPC, LT(6, KC_TAB), LT(7, KC_ENT) + ), + [6] = LAYOUT_split_3x5_2( + KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, + KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, + LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [7] = LAYOUT_split_3x5_2( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_LSFT, KC_NO, KC_NO, KC_NO, MO(8), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [8] = LAYOUT_split_3x5_2( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4), TO(5), TO(0), + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/scottokeebs/scotto34/keymaps/scotto/rules.mk b/keyboards/scottokeebs/scotto34/keymaps/scotto/rules.mk new file mode 100644 index 000000000000..e5ddcae8d927 --- /dev/null +++ b/keyboards/scottokeebs/scotto34/keymaps/scotto/rules.mk @@ -0,0 +1 @@ +TAP_DANCE_ENABLE = yes diff --git a/keyboards/scottokeebs/scotto34/readme.md b/keyboards/scottokeebs/scotto34/readme.md new file mode 100644 index 000000000000..546a20b08a6d --- /dev/null +++ b/keyboards/scottokeebs/scotto34/readme.md @@ -0,0 +1,29 @@ +# Scotto34 (PCB Edition) + +![Scotto34 (PCB Edition)](https://i.imgur.com/nTxYa7ih.jpg) + +A low profile 34-key split monoblock ortholinear keyboard that uses 18x17mm spaced Choc switches and an exposed controller in the middle. + +* Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto) +* Hardware Supported: Scotto34 (PCB Edition), Raspberry Pi Pico +* Hardware Availability: [ScottoKeebs](https://scottokeebs.com), [Amazon](https://amazon.com), [AliExpress](https://aliexpress.com) + +# Compiling + +Make example for this keyboard (after setting up your build environment): + + make scottokeebs/scotto34:default + +Flashing example for this keyboard: + + make scottokeebs/scotto34: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 diff --git a/keyboards/scottokeebs/scotto34/rules.mk b/keyboards/scottokeebs/scotto34/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/scottokeebs/scotto34/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 40c3b715697e418f5014b77bb10ff97c8bd5040f Mon Sep 17 00:00:00 2001 From: flashquark <59234072+flashquark@users.noreply.github.com> Date: Sun, 11 Jun 2023 03:55:06 -0400 Subject: [PATCH 24/46] [Keyboard] Add Flashquark Horizon Z (#21055) Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/flashquark/horizon_z/config.h | 78 +++++++++ keyboards/flashquark/horizon_z/horizon_z.c | 95 ++++++++++ keyboards/flashquark/horizon_z/info.json | 162 ++++++++++++++++++ .../horizon_z/keymaps/default/keymap.c | 35 ++++ .../flashquark/horizon_z/keymaps/via/keymap.c | 35 ++++ .../flashquark/horizon_z/keymaps/via/rules.mk | 2 + keyboards/flashquark/horizon_z/readme.md | 20 +++ keyboards/flashquark/horizon_z/rules.mk | 0 8 files changed, 427 insertions(+) create mode 100755 keyboards/flashquark/horizon_z/config.h create mode 100755 keyboards/flashquark/horizon_z/horizon_z.c create mode 100755 keyboards/flashquark/horizon_z/info.json create mode 100755 keyboards/flashquark/horizon_z/keymaps/default/keymap.c create mode 100755 keyboards/flashquark/horizon_z/keymaps/via/keymap.c create mode 100755 keyboards/flashquark/horizon_z/keymaps/via/rules.mk create mode 100755 keyboards/flashquark/horizon_z/readme.md create mode 100755 keyboards/flashquark/horizon_z/rules.mk diff --git a/keyboards/flashquark/horizon_z/config.h b/keyboards/flashquark/horizon_z/config.h new file mode 100755 index 000000000000..8828834d740c --- /dev/null +++ b/keyboards/flashquark/horizon_z/config.h @@ -0,0 +1,78 @@ +/* Copyright 2023 Flashquark + * + * 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 . + */ + + +#pragma once + + + +#ifdef RGB_MATRIX_ENABLE +# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +# define RGB_MATRIX_KEYPRESSES +# define RGB_MATRIX_FRAMEBUFFER_EFFECTS +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects +# define ENABLE_RGB_MATRIX_ALPHAS_MODS +// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +// # define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +# define ENABLE_RGB_MATRIX_RAINDROPS +# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +# define ENABLE_RGB_MATRIX_PIXEL_RAIN +# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +// # define ENABLE_RGB_MATRIX_SPLASH +// # define ENABLE_RGB_MATRIX_MULTISPLASH +// # define ENABLE_RGB_MATRIX_SOLID_SPLASH +// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +# define DRIVER_ADDR_1 0b1010000 +# define DRIVER_COUNT 1 +# define RGB_MATRIX_LED_COUNT 62 +#endif diff --git a/keyboards/flashquark/horizon_z/horizon_z.c b/keyboards/flashquark/horizon_z/horizon_z.c new file mode 100755 index 000000000000..da62deaf29bf --- /dev/null +++ b/keyboards/flashquark/horizon_z/horizon_z.c @@ -0,0 +1,95 @@ +/* Copyright 2023 Flashquark + * + * 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 . + */ + +#include "quantum.h" + +#ifdef RGB_MATRIX_ENABLE +const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { + {0, B_1, A_1, C_1}, + {0, B_2, A_2, C_2}, + {0, B_3, A_3, C_3}, + {0, B_4, A_4, C_4}, + {0, B_5, A_5, C_5}, + {0, B_6, A_6, C_6}, + {0, B_7, A_7, C_7}, + {0, B_8, A_8, C_8}, + {0, B_9, A_9, C_9}, + {0, B_10, A_10, C_10}, + {0, B_11, A_11, C_11}, + {0, B_12, A_12, C_12}, + {0, B_13, A_13, C_13}, + {0, B_14, A_14, C_14}, + {0, E_1, D_1, F_1}, + {0, E_2, D_2, F_2}, + {0, E_3, D_3, F_3}, + {0, E_4, D_4, F_4}, + {0, E_5, D_5, F_5}, + {0, E_6, D_6, F_6}, + {0, E_7, D_7, F_7}, + {0, E_8, D_8, F_8}, + {0, E_9, D_9, F_9}, + {0, E_10, D_10, F_10}, + {0, E_11, D_11, F_11}, + {0, E_12, D_12, F_12}, + {0, E_13, D_13, F_13}, + {0, E_14, D_14, F_14}, + {0, H_1, G_1, I_1}, + {0, H_2, G_2, I_2}, + {0, H_3, G_3, I_3}, + {0, H_4, G_4, I_4}, + {0, H_5, G_5, I_5}, + {0, H_6, G_6, I_6}, + {0, H_7, G_7, I_7}, + {0, H_8, G_8, I_8}, + {0, H_9, G_9, I_9}, + {0, H_10, G_10, I_10}, + {0, H_11, G_11, I_11}, + {0, H_12, G_12, I_12}, + {0, H_13, G_13, I_13}, + {0, K_1, J_1, L_1}, + {0, K_2, J_2, L_2}, + {0, K_3, J_3, L_3}, + {0, K_4, J_4, L_4}, + {0, K_5, J_5, L_5}, + {0, K_6, J_6, L_6}, + {0, K_7, J_7, L_7}, + {0, K_8, J_8, L_8}, + {0, K_9, J_9, L_9}, + {0, K_10, J_10, L_10}, + {0, K_11, J_11, L_11}, + {0, K_14, J_14, L_14}, + {0, B_16, A_16, C_16}, + {0, E_16, D_16, F_16}, + {0, H_16, G_16, I_16}, + {0, K_16, J_16, L_16}, + {0, K_15, J_15, L_15}, + {0, K_12, J_12, L_12}, + {0, K_13, J_13, L_13}, + {0, H_14, G_14, I_14}, +}; + + +#endif + +bool rgb_matrix_indicators_kb(void) { + if (!rgb_matrix_indicators_user()) { + return false; + } + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color(28, 0xFF, 0xFF, 0xFF); + } + return true; +} diff --git a/keyboards/flashquark/horizon_z/info.json b/keyboards/flashquark/horizon_z/info.json new file mode 100755 index 000000000000..3e299442c542 --- /dev/null +++ b/keyboards/flashquark/horizon_z/info.json @@ -0,0 +1,162 @@ +{ + "manufacturer": "FLASHQUARK", + "keyboard_name": "Horizon_Z", + "maintainer": "FLASHQUARK", + "bootloader": "atmel-dfu", + "debounce": 3, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["B5", "B6", "C6", "C7", "F7", "F6", "B0", "B1", "B2", "B3", "B7", "D2", "D3", "D5"], + "rows": ["F0", "F1", "F4", "F5", "B4"] + }, + "processor": "atmega32u4", + "rgb_matrix": { + "driver": "IS31FL3733", + "layout": [ + { "flags": 1, "matrix": [0, 0], "x": 0, "y": 0 }, + { "flags": 4, "matrix": [0, 1], "x": 16, "y": 0 }, + { "flags": 4, "matrix": [0, 2], "x": 32, "y": 0 }, + { "flags": 4, "matrix": [0, 3], "x": 48, "y": 0 }, + { "flags": 4, "matrix": [0, 4], "x": 64, "y": 0 }, + { "flags": 4, "matrix": [0, 5], "x": 80, "y": 0 }, + { "flags": 4, "matrix": [0, 6], "x": 96, "y": 0 }, + { "flags": 4, "matrix": [0, 7], "x": 112, "y": 0 }, + { "flags": 4, "matrix": [0, 8], "x": 128, "y": 0 }, + { "flags": 4, "matrix": [0, 9], "x": 144, "y": 0 }, + { "flags": 4, "matrix": [0, 10], "x": 160, "y": 0 }, + { "flags": 4, "matrix": [0, 11], "x": 176, "y": 0 }, + { "flags": 4, "matrix": [0, 12], "x": 192, "y": 0 }, + { "flags": 1, "matrix": [0, 13], "x": 216, "y": 0 }, + { "flags": 4, "matrix": [1, 0], "x": 4, "y": 16 }, + { "flags": 4, "matrix": [1, 1], "x": 24, "y": 16 }, + { "flags": 4, "matrix": [1, 2], "x": 40, "y": 16 }, + { "flags": 4, "matrix": [1, 3], "x": 56, "y": 16 }, + { "flags": 4, "matrix": [1, 4], "x": 72, "y": 16 }, + { "flags": 4, "matrix": [1, 5], "x": 88, "y": 16 }, + { "flags": 4, "matrix": [1, 6], "x": 104, "y": 16 }, + { "flags": 4, "matrix": [1, 7], "x": 120, "y": 16 }, + { "flags": 4, "matrix": [1, 8], "x": 136, "y": 16 }, + { "flags": 4, "matrix": [1, 9], "x": 152, "y": 16 }, + { "flags": 4, "matrix": [1, 10], "x": 168, "y": 16 }, + { "flags": 4, "matrix": [1, 11], "x": 184, "y": 16 }, + { "flags": 4, "matrix": [1, 12], "x": 200, "y": 16 }, + { "flags": 4, "matrix": [1, 13], "x": 220, "y": 16 }, + { "flags": 4, "matrix": [2, 0], "x": 6, "y": 32 }, + { "flags": 4, "matrix": [2, 1], "x": 28, "y": 32 }, + { "flags": 4, "matrix": [2, 2], "x": 44, "y": 32 }, + { "flags": 4, "matrix": [2, 3], "x": 60, "y": 32 }, + { "flags": 4, "matrix": [2, 4], "x": 76, "y": 32 }, + { "flags": 4, "matrix": [2, 5], "x": 92, "y": 32 }, + { "flags": 4, "matrix": [2, 6], "x": 108, "y": 32 }, + { "flags": 4, "matrix": [2, 7], "x": 124, "y": 32 }, + { "flags": 4, "matrix": [2, 8], "x": 140, "y": 32 }, + { "flags": 4, "matrix": [2, 9], "x": 156, "y": 32 }, + { "flags": 4, "matrix": [2, 10], "x": 172, "y": 32 }, + { "flags": 4, "matrix": [2, 11], "x": 188, "y": 32 }, + { "flags": 1, "matrix": [2, 13], "x": 204, "y": 32 }, + { "flags": 1, "matrix": [3, 0], "x": 10, "y": 48 }, + { "flags": 4, "matrix": [3, 1], "x": 20, "y": 48 }, + { "flags": 4, "matrix": [3, 2], "x": 52, "y": 48 }, + { "flags": 4, "matrix": [3, 3], "x": 68, "y": 48 }, + { "flags": 4, "matrix": [3, 4], "x": 84, "y": 48 }, + { "flags": 4, "matrix": [3, 5], "x": 100, "y": 48 }, + { "flags": 4, "matrix": [3, 6], "x": 116, "y": 48 }, + { "flags": 4, "matrix": [3, 7], "x": 132, "y": 48 }, + { "flags": 4, "matrix": [3, 8], "x": 148, "y": 48 }, + { "flags": 4, "matrix": [3, 9], "x": 164, "y": 48 }, + { "flags": 4, "matrix": [3, 10], "x": 180, "y": 48 }, + { "flags": 1, "matrix": [3, 13], "x": 210, "y": 48 }, + { "flags": 1, "matrix": [4, 0], "x": 2, "y": 64 }, + { "flags": 1, "matrix": [4, 1], "x": 22, "y": 64 }, + { "flags": 1, "matrix": [4, 2], "x": 42, "y": 64 }, + { "flags": 1, "matrix": [4, 5], "x": 102, "y": 64 }, + { "flags": 1, "matrix": [4, 9], "x": 162, "y": 64 }, + { "flags": 1, "matrix": [4, 10], "x": 182, "y": 64 }, + { "flags": 1, "matrix": [4, 12], "x": 202, "y": 64 }, + { "flags": 1, "matrix": [4, 13], "x": 222, "y": 64 } + ] + }, + "url": "https://flashquark.com/product/flashquark-horizon-z-qmk-edition-custom-kit/", + "usb": { + "device_version": "1.0.0", + "pid": "0x0223", + "vid": "0x4B42" + }, + "community_layouts": ["60_ansi"], + "layouts": { + "LAYOUT_60_ansi": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [0, 10], "x": 10, "y": 0 }, + { "matrix": [0, 11], "x": 11, "y": 0 }, + { "matrix": [0, 12], "x": 12, "y": 0 }, + { "matrix": [0, 13], "w": 2, "x": 13, "y": 0 }, + { "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "matrix": [3, 0], "w": 2.25, "x": 0, "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, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, + { "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 }, + { "matrix": [4, 9], "w": 1.25, "x": 10, "y": 4 }, + { "matrix": [4, 10], "w": 1.25, "x": 11.25, "y": 4 }, + { "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 }, + { "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/flashquark/horizon_z/keymaps/default/keymap.c b/keyboards/flashquark/horizon_z/keymaps/default/keymap.c new file mode 100755 index 000000000000..1ab95c54a562 --- /dev/null +++ b/keyboards/flashquark/horizon_z/keymaps/default/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2023 Flashquark + * + * 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 . + */ + +#include QMK_KEYBOARD_H +enum layers { + _LAYER0, + _LAYER1, +}; +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_LAYER0] = LAYOUT_60_ansi( /* Base */ + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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, + CTL_T(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, MO(1), KC_RGUI, KC_RCTL), + [_LAYER1] = LAYOUT_60_ansi( /* FN */ + 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 , + KC_TRNS, RGB_TOG, KC_UP, RGB_MOD, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, QK_BOOT , + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, + KC_MPRV, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, MAGIC_TOGGLE_NKRO, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_MNXT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + }; \ No newline at end of file diff --git a/keyboards/flashquark/horizon_z/keymaps/via/keymap.c b/keyboards/flashquark/horizon_z/keymaps/via/keymap.c new file mode 100755 index 000000000000..1ab95c54a562 --- /dev/null +++ b/keyboards/flashquark/horizon_z/keymaps/via/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2023 Flashquark + * + * 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 . + */ + +#include QMK_KEYBOARD_H +enum layers { + _LAYER0, + _LAYER1, +}; +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_LAYER0] = LAYOUT_60_ansi( /* Base */ + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, + KC_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, + CTL_T(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, MO(1), KC_RGUI, KC_RCTL), + [_LAYER1] = LAYOUT_60_ansi( /* FN */ + 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 , + KC_TRNS, RGB_TOG, KC_UP, RGB_MOD, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, QK_BOOT , + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, + KC_MPRV, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, MAGIC_TOGGLE_NKRO, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_MNXT, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + }; \ No newline at end of file diff --git a/keyboards/flashquark/horizon_z/keymaps/via/rules.mk b/keyboards/flashquark/horizon_z/keymaps/via/rules.mk new file mode 100755 index 000000000000..bfbf8681c994 --- /dev/null +++ b/keyboards/flashquark/horizon_z/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/flashquark/horizon_z/readme.md b/keyboards/flashquark/horizon_z/readme.md new file mode 100755 index 000000000000..0c4e8d574570 --- /dev/null +++ b/keyboards/flashquark/horizon_z/readme.md @@ -0,0 +1,20 @@ +# Horizon Z QMK Edition + +A hotswap 60% keyboard by Flashquark + +* Keyboard Maintainer: [Flashquark](https://flashquark.com) +* Hardware Supported: Horizon Z QMK +* Hardware Availability: [Horizon Z QMK Edition](https://flashquark.com/product/flashquark-horizon-z-qmk-edition-custom-kit/) + + +## Build + +Make example for this keyboard (after setting up your build environment): + + make flashquark/horizon_z:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Press reset button on the back of keyboard. \ No newline at end of file diff --git a/keyboards/flashquark/horizon_z/rules.mk b/keyboards/flashquark/horizon_z/rules.mk new file mode 100755 index 000000000000..e69de29bb2d1 From fdb2851187d13aac270f94c43fbcb76cff84c65e Mon Sep 17 00:00:00 2001 From: Joe Scotto Date: Sun, 11 Jun 2023 03:56:20 -0400 Subject: [PATCH 25/46] [Keyboard] Add ScottoSplit Keyboard (#20945) Co-authored-by: Drashna Jaelre --- .../scottokeebs/scottosplit/info.json | 78 ++++++++ .../scottosplit/keymaps/default/config.h | 23 +++ .../scottosplit/keymaps/default/keymap.c | 45 +++++ .../scottosplit/keymaps/scotto/config.h | 23 +++ .../scottosplit/keymaps/scotto/keymap.c | 174 ++++++++++++++++++ .../scottosplit/keymaps/scotto/rules.mk | 1 + .../scottokeebs/scottosplit/readme.md | 27 +++ .../scottokeebs/scottosplit/rules.mk | 1 + 8 files changed, 372 insertions(+) create mode 100644 keyboards/handwired/scottokeebs/scottosplit/info.json create mode 100644 keyboards/handwired/scottokeebs/scottosplit/keymaps/default/config.h create mode 100644 keyboards/handwired/scottokeebs/scottosplit/keymaps/default/keymap.c create mode 100644 keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/config.h create mode 100644 keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/keymap.c create mode 100644 keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/rules.mk create mode 100644 keyboards/handwired/scottokeebs/scottosplit/readme.md create mode 100644 keyboards/handwired/scottokeebs/scottosplit/rules.mk diff --git a/keyboards/handwired/scottokeebs/scottosplit/info.json b/keyboards/handwired/scottokeebs/scottosplit/info.json new file mode 100644 index 000000000000..792084b82cca --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottosplit/info.json @@ -0,0 +1,78 @@ +{ + "manufacturer": "ScottoKeebs", + "keyboard_name": "ScottoSplit", + "maintainer": "joe-scotto", + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + // 3, 4, 5, 6, 7, 8, 9, A3, A2, A1 + "cols": ["D0", "D4", "C6", "D7", "E6", "B4", "B5", "F4", "F5", "F6"] + + // 15, 14, 16, 10 + "rows": ["B1", "B3", "B2", "B6"] + }, + "url": "https://scottokeebs.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x0012", + "vid": "0xFEED" + }, + "community_layouts": ["split_3x5_3"], + "layouts": { + "LAYOUT_split_3x5_3": { + "layout": [ + // Row 1 + { "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 }, + + // Row 2 + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [1, 6], "x": 6, "y": 1 }, + { "matrix": [1, 7], "x": 7, "y": 1 }, + { "matrix": [1, 8], "x": 8, "y": 1 }, + { "matrix": [1, 9], "x": 9, "y": 1 }, + + // Row 3 + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [2, 6], "x": 6, "y": 2 }, + { "matrix": [2, 7], "x": 7, "y": 2 }, + { "matrix": [2, 8], "x": 8, "y": 2 }, + { "matrix": [2, 9], "x": 9, "y": 2 }, + + // Row 4 + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [3, 3], "x": 3, "y": 3 }, + { "matrix": [3, 4], "x": 4, "y": 3 }, + { "matrix": [3, 5], "x": 5, "y": 3 }, + { "matrix": [3, 6], "x": 6, "y": 3 }, + { "matrix": [3, 7], "x": 7, "y": 3 } + ] + } + } +} diff --git a/keyboards/handwired/scottokeebs/scottosplit/keymaps/default/config.h b/keyboards/handwired/scottokeebs/scottosplit/keymaps/default/config.h new file mode 100644 index 000000000000..de6c83da9a40 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottosplit/keymaps/default/config.h @@ -0,0 +1,23 @@ +/* +Copyright 2022 Joe Scotto + +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 . +*/ + +#pragma once + + +// Define options +#define TAPPING_TERM 135 +#define PERMISSIVE_HOLD diff --git a/keyboards/handwired/scottokeebs/scottosplit/keymaps/default/keymap.c b/keyboards/handwired/scottokeebs/scottosplit/keymaps/default/keymap.c new file mode 100644 index 000000000000..2633845d509e --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottosplit/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +/* +Copyright 2022 Joe Scotto + +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 . +*/ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_3x5_3( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_BSPC, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), + KC_LGUI, KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), KC_ESC + ), + [1] = LAYOUT_split_3x5_3( + KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, + KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, + LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_split_3x5_3( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_split_3x5_3( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/config.h b/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/config.h new file mode 100644 index 000000000000..1a6512052c1d --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/config.h @@ -0,0 +1,23 @@ +/* +Copyright 2022 Joe Scotto + +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 . +*/ + +#pragma once + +// Define options +#define TAPPING_TERM 135 +#define PERMISSIVE_HOLD +#define TAPPING_TERM_PER_KEY diff --git a/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/keymap.c b/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/keymap.c new file mode 100644 index 000000000000..f4d0a0c7bba3 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/keymap.c @@ -0,0 +1,174 @@ +/* +Copyright 2022 Joe Scotto + +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 . +*/ + +#include QMK_KEYBOARD_H + +// Tap dance declarations +enum { + TD_LCTL_ESC_SPOTLIGHT_EMOJI, + TD_LALT_ESC_WINDOWS_EMOJI +}; + +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) : + case TD(TD_LALT_ESC_WINDOWS_EMOJI) : + case LGUI_T(KC_SPC) : + case LT(1, KC_TAB) : + case LT(2, KC_ENT) : + return 200; + default: + return TAPPING_TERM; + } +}; + +// Begin quad TD +typedef enum { + TD_NONE, + TD_UNKNOWN, + TD_SINGLE_HOLD, + TD_SINGLE_TAP, + TD_DOUBLE_TAP, + TD_TRIPLE_TAP +} td_state_t; + +typedef struct { + bool is_press_action; + td_state_t state; +} td_tap_t; + +// Create an instance of 'td_tap_t' for the 'x' tap dance. +static td_tap_t xtap_state = { + .is_press_action = true, + .state = TD_NONE +}; + +td_state_t cur_dance(tap_dance_state_t *state) { + if (state->count == 1) { + if (state->interrupted || !state->pressed) { + return TD_SINGLE_TAP; + } else { + return TD_SINGLE_HOLD; + } + } else if (state->count == 2) { + return TD_DOUBLE_TAP; + } else if (state->count == 3) { + return TD_TRIPLE_TAP; + } + + return TD_UNKNOWN; +} + +void td_lctl_esc_spotlight_emoji_finished(tap_dance_state_t *state, void *user_data) { + xtap_state.state = cur_dance(state); + switch (xtap_state.state) { + case TD_SINGLE_TAP: register_code(KC_ESC); break; + case TD_SINGLE_HOLD: register_code(KC_LCTL); break; + case TD_DOUBLE_TAP: tap_code16(G(KC_SPC)); break; + case TD_TRIPLE_TAP: tap_code16(C(G(KC_SPC))); break; + default: break; + } +} + +void td_lctl_esc_spotlight_emoji_reset(tap_dance_state_t *state, void *user_data) { + switch (xtap_state.state) { + case TD_SINGLE_TAP: unregister_code(KC_ESC); break; + case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break; + default: break; + } + xtap_state.state = TD_NONE; +} + +void td_lalt_esc_windowr_emoji_finished(tap_dance_state_t *state, void *user_data) { + xtap_state.state = cur_dance(state); + switch (xtap_state.state) { + case TD_SINGLE_TAP: register_code(KC_ESC); break; + case TD_SINGLE_HOLD: register_code(KC_LALT); break; + case TD_DOUBLE_TAP: tap_code(KC_LGUI); break; + case TD_TRIPLE_TAP: tap_code16(G(KC_DOT)); break; + default: break; + } +} + +void td_lalt_esc_windowr_emoji_reset(tap_dance_state_t *state, void *user_data) { + switch (xtap_state.state) { + case TD_SINGLE_TAP: unregister_code(KC_ESC); break; + case TD_SINGLE_HOLD: unregister_code(KC_LALT); break; + default: break; + } + xtap_state.state = TD_NONE; +} + + // Tap Dance definitions +tap_dance_action_t tap_dance_actions[] = { + [TD_LCTL_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lctl_esc_spotlight_emoji_finished, td_lctl_esc_spotlight_emoji_reset), + [TD_LALT_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lalt_esc_windowr_emoji_finished, td_lalt_esc_windowr_emoji_reset), +}; +// For the x tap dance. Put it here so it can be used in any keymap +void x_finished(tap_dance_state_t *state, void *user_data); +void x_reset(tap_dance_state_t *state, void *user_data); + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_split_3x5_3( + KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, + KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), + TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) + ), + [1] = LAYOUT_split_3x5_3( + KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, + KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, + LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), + TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) + ), + [2] = LAYOUT_split_3x5_3( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) + ), + [3] = LAYOUT_split_3x5_3( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4), + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, + TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) + ), + [4] = LAYOUT_split_3x5_3( + KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC, + KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), + TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_LALT_ESC_WINDOWS_EMOJI) + ), + [5] = LAYOUT_split_3x5_3( + KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, + KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, + LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), + TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI) + ), + [6] = LAYOUT_split_3x5_3( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI) + ), + [7] = LAYOUT_split_3x5_3( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0), + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, + TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI) + ) +}; \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/rules.mk b/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/rules.mk new file mode 100644 index 000000000000..e5ddcae8d927 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottosplit/keymaps/scotto/rules.mk @@ -0,0 +1 @@ +TAP_DANCE_ENABLE = yes diff --git a/keyboards/handwired/scottokeebs/scottosplit/readme.md b/keyboards/handwired/scottokeebs/scottosplit/readme.md new file mode 100644 index 000000000000..94e73afd1306 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottosplit/readme.md @@ -0,0 +1,27 @@ +# ScottoSplit + +![ScottoSplit](https://i.imgur.com/u6rSzyHh.jpg) + +A 36-key split column-staggered ortholinear keyboard that uses a single MCU and VGA cable to connect the halves. Case files available [here](https://github.com/joe-scotto/scottokeebs). + +* Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto) +* Hardware Supported: ATmega32U4 +* Hardware Availability: [Amazon](https://amazon.com) + +Make example for this keyboard (after setting up your build environment): + + make handwired/jscotto/scottosplit:default + +Flashing example for this keyboard: + + make handwired/jscotto/scottosplit: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 \ No newline at end of file diff --git a/keyboards/handwired/scottokeebs/scottosplit/rules.mk b/keyboards/handwired/scottokeebs/scottosplit/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottosplit/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 53f20b197bf212fc89d04609dffd698e21e41f4d Mon Sep 17 00:00:00 2001 From: Alabahuy Date: Mon, 12 Jun 2023 08:12:19 +0700 Subject: [PATCH 26/46] [Keyboard] Add orba keyboard (#21132) --- keyboards/jaykeeb/orba/info.json | 109 ++++++++++++++++++ .../jaykeeb/orba/keymaps/default/keymap.c | 36 ++++++ keyboards/jaykeeb/orba/keymaps/via/keymap.c | 38 ++++++ keyboards/jaykeeb/orba/keymaps/via/rules.mk | 1 + keyboards/jaykeeb/orba/readme.md | 27 +++++ keyboards/jaykeeb/orba/rules.mk | 1 + 6 files changed, 212 insertions(+) create mode 100644 keyboards/jaykeeb/orba/info.json create mode 100644 keyboards/jaykeeb/orba/keymaps/default/keymap.c create mode 100644 keyboards/jaykeeb/orba/keymaps/via/keymap.c create mode 100644 keyboards/jaykeeb/orba/keymaps/via/rules.mk create mode 100644 keyboards/jaykeeb/orba/readme.md create mode 100644 keyboards/jaykeeb/orba/rules.mk diff --git a/keyboards/jaykeeb/orba/info.json b/keyboards/jaykeeb/orba/info.json new file mode 100644 index 000000000000..192bb385ce25 --- /dev/null +++ b/keyboards/jaykeeb/orba/info.json @@ -0,0 +1,109 @@ +{ + "manufacturer": "Alabahuy", + "keyboard_name": "orba", + "maintainer": "Alabahuy", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP17", "GP16", "GP14", "GP13", "GP12", "GP15", "GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP21", "GP20"], + "rows": ["GP11", "GP10", "GP18", "GP19", "GP0" ] + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0769", + "vid": "0x414C" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0 }, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0 }, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0 }, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0 }, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0 }, + {"label": "`", "matrix": [0, 6], "x": 6, "y": 0 }, + {"label": "-", "matrix": [0, 7], "x": 7, "y": 0 }, + {"label": "=", "matrix": [0, 8], "x": 8, "y": 0 }, + {"label": "6", "matrix": [0, 9], "x": 9, "y": 0 }, + {"label": "7", "matrix": [0, 10], "x": 10, "y": 0 }, + {"label": "8", "matrix": [0, 11], "x": 11, "y": 0 }, + {"label": "9", "matrix": [0, 12], "x": 12, "y": 0 }, + {"label": "0", "matrix": [0, 13], "x": 13, "y": 0 }, + {"label": "Delete", "matrix": [0, 14], "x": 13, "y": 0 }, + {"label": "Home", "matrix": [0, 15], "x": 15, "y": 0 }, + + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1 }, + {"label": "Q", "matrix": [1, 1], "x": 1, "y": 1 }, + {"label": "W", "matrix": [1, 2], "x": 2, "y": 1 }, + {"label": "E", "matrix": [1, 3], "x": 3, "y": 1 }, + {"label": "R", "matrix": [1, 4], "x": 4, "y": 1 }, + {"label": "T", "matrix": [1, 5], "x": 5, "y": 1 }, + {"label": "P7", "matrix": [1, 6], "x": 6, "y": 1 }, + {"label": "P8", "matrix": [1, 7], "x": 7, "y": 1 }, + {"label": "P9", "matrix": [1, 8], "x": 8, "y": 1 }, + {"label": "Y", "matrix": [1, 9], "x": 9, "y": 1 }, + {"label": "U", "matrix": [1, 10], "x": 10, "y": 1 }, + {"label": "I", "matrix": [1, 11], "x": 11, "y": 1 }, + {"label": "O", "matrix": [1, 12], "x": 12, "y": 1 }, + {"label": "P", "matrix": [1, 13], "x": 13, "y": 1 }, + {"label": "Backspace", "matrix": [1, 14], "x": 13, "y": 1 }, + {"label": "Page Up", "matrix": [1, 15], "x": 15, "y": 1 }, + + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2 }, + {"label": "A", "matrix": [2, 1], "x": 1, "y": 2 }, + {"label": "S", "matrix": [2, 2], "x": 2, "y": 2 }, + {"label": "D", "matrix": [2, 3], "x": 3, "y": 2 }, + {"label": "F", "matrix": [2, 4], "x": 4, "y": 2 }, + {"label": "G", "matrix": [2, 5], "x": 5, "y": 2 }, + {"label": "P4", "matrix": [2, 6], "x": 6, "y": 2 }, + {"label": "P5", "matrix": [2, 7], "x": 7, "y": 2 }, + {"label": "P6", "matrix": [2, 8], "x": 8, "y": 2 }, + {"label": "H", "matrix": [2, 9], "x": 9, "y": 2 }, + {"label": "J", "matrix": [2, 10], "x": 10, "y": 2 }, + {"label": "K", "matrix": [2, 11], "x": 11, "y": 2 }, + {"label": "L", "matrix": [2, 12], "x": 12, "y": 2 }, + {"label": ":", "matrix": [2, 13], "x": 13, "y": 2 }, + {"label": "", "matrix": [2, 14], "x": 13, "y": 2 }, + {"label": "Page Down", "matrix": [2, 15], "x": 15, "y": 2 }, + + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3 }, + {"label": "Z", "matrix": [3, 1], "x": 1, "y": 3 }, + {"label": "X", "matrix": [3, 2], "x": 2, "y": 3 }, + {"label": "C", "matrix": [3, 3], "x": 3, "y": 3 }, + {"label": "V", "matrix": [3, 4], "x": 4, "y": 3 }, + {"label": "B", "matrix": [3, 5], "x": 5, "y": 3 }, + {"label": "P1", "matrix": [3, 6], "x": 6, "y": 3 }, + {"label": "P2", "matrix": [3, 7], "x": 7, "y": 3 }, + {"label": "P3", "matrix": [3, 8], "x": 8, "y": 3 }, + {"label": "N", "matrix": [3, 9], "x": 9, "y": 3 }, + {"label": "M", "matrix": [3, 10], "x": 10, "y": 3 }, + {"label": ",", "matrix": [3, 11], "x": 11, "y": 3 }, + {"label": ".", "matrix": [3, 12], "x": 12, "y": 3 }, + {"label": "/", "matrix": [3, 13], "x": 13, "y": 3 }, + {"label": "\u2191", "matrix": [3, 14], "x": 13, "y": 3 }, + {"label": "Enter", "matrix": [3, 15], "x": 15, "y": 3 }, + + {"label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + {"label": "GUI", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + {"label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, + {"label": "Space", "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 }, + {"label": "Fn", "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, + {"label": "Ctrl","matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, + {"label": "\u2190", "matrix": [4, 13], "x": 13, "y": 4 }, + {"label": "\u2193", "matrix": [4, 14], "x": 14, "y": 4 }, + {"label": "\u2192", "matrix": [4, 15], "x": 15, "y": 4 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/jaykeeb/orba/keymaps/default/keymap.c b/keyboards/jaykeeb/orba/keymaps/default/keymap.c new file mode 100644 index 000000000000..96710a95aadd --- /dev/null +++ b/keyboards/jaykeeb/orba/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +// Copyright 2023 Alabahuy (@Alabahuy) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ ~ │ - │ = │ 6 │ 7 │ 8 │ 9 │ 0 │Del│Hom│ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │Tab│ Q │ W │ E │ R │ T │ 7 │ 8 │ 9 │ Y │ U │ I │ O │ P │Bsc│PgU│ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │Cap│ A │ S │ D │ F │ G │ 4 │ 5 │ 6 │ H │ J │ k │ L │ : │ " │PgD│ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │Shf│ Z │ X │ C │ V │ B │ 1 │ 2 │ 3 │ N │ M │ < │ > │ ? │ │Ent│ + * ├───┴┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴───┼───┴┬──┴─┬─┼───┼───┼───┤ + * │Ctrl│GUI │Alt │ │ FN │Ctrl│ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_ENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + + [1] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, QK_RBT, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/jaykeeb/orba/keymaps/via/keymap.c b/keyboards/jaykeeb/orba/keymaps/via/keymap.c new file mode 100644 index 000000000000..c567537ce592 --- /dev/null +++ b/keyboards/jaykeeb/orba/keymaps/via/keymap.c @@ -0,0 +1,38 @@ +// Copyright 2023 Alabahuy (@Alabahuy) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ + * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ ~ │ - │ + │ 6 │ 7 │ 8 │ 9 │ 0 │Del│Hom│ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │Tab│ Q │ W │ E │ R │ T │ 7 │ 8 │ 9 │ Y │ U │ I │ O │ P │Bsc│PgU│ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │Cap│ A │ S │ D │ F │ G │ 4 │ 5 │ 6 │ H │ J │ k │ L │ : │ " │PgD│ + * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ + * │Shf│ Z │ X │ C │ V │ B │ 1 │ 2 │ 3 │ N │ M │ < │ > │ ? │ │Ent│ + * ├───┴┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴───┼───┴┬──┴─┬─┼───┼───┼───┤ + * │Ctrl│GUI │Alt │ │ FN │Ctrl│ │ ← │ ↓ │ → │ + * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘ + */ + [0] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_ENT, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + + [1] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, QK_RBT, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + + +}; diff --git a/keyboards/jaykeeb/orba/keymaps/via/rules.mk b/keyboards/jaykeeb/orba/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/jaykeeb/orba/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/jaykeeb/orba/readme.md b/keyboards/jaykeeb/orba/readme.md new file mode 100644 index 000000000000..23efe28b519d --- /dev/null +++ b/keyboards/jaykeeb/orba/readme.md @@ -0,0 +1,27 @@ +# orba + +![orba](https://i.imgur.com/c9iQPWRh.jpeg) + +PCB like 65% with ortho 16x4 and bottom ansi or tsangan + +* Keyboard Maintainer: [Alabahuy](https://github.com/Alabahuy) +* Hardware Supported: orba PCB, RP2040 +* Hardware Availability: Private GB + +Make example for this keyboard (after setting up your build environment): + + make jaykeeb/orba:default + +Flashing example for this keyboard: + + make jaykeeb/orba: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 diff --git a/keyboards/jaykeeb/orba/rules.mk b/keyboards/jaykeeb/orba/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/jaykeeb/orba/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From 2d838d8ba9acb98f93cf2549e4296399b7d1a7b4 Mon Sep 17 00:00:00 2001 From: Joe Scotto Date: Mon, 12 Jun 2023 15:08:13 -0400 Subject: [PATCH 27/46] [Keyboard] Add ScottoFrog macropad (#21209) --- .../scottokeebs/scottofrog/info.json | 54 +++++++++++++++++++ .../scottofrog/keymaps/default/keymap.c | 28 ++++++++++ .../scottokeebs/scottofrog/readme.md | 27 ++++++++++ .../handwired/scottokeebs/scottofrog/rules.mk | 1 + 4 files changed, 110 insertions(+) create mode 100644 keyboards/handwired/scottokeebs/scottofrog/info.json create mode 100644 keyboards/handwired/scottokeebs/scottofrog/keymaps/default/keymap.c create mode 100644 keyboards/handwired/scottokeebs/scottofrog/readme.md create mode 100644 keyboards/handwired/scottokeebs/scottofrog/rules.mk diff --git a/keyboards/handwired/scottokeebs/scottofrog/info.json b/keyboards/handwired/scottokeebs/scottofrog/info.json new file mode 100644 index 000000000000..202626b70fff --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottofrog/info.json @@ -0,0 +1,54 @@ +{ + "manufacturer": "ScottoKeebs", + "keyboard_name": "ScottoFrog", + "maintainer": "joe-scotto", + "diode_direction": "COL2ROW", + "development_board": "promicro", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "build": { + "lto": true + }, + "matrix_pins": { + "cols": ["D0", "D4", "C6", "D7", "E6", "B4", "B5"], + "rows": ["B1", "B3", "B2", "B6"] + }, + "url": "https://scottokeebs.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x0017", + "vid": "0x534B" + }, + "layouts": { + "LAYOUT_ortho_3x5_5": { + "layout": [ + { "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": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2 }, + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 3], "x": 3, "y": 3 }, + { "matrix": [3, 5], "x": 5, "y": 3 }, + { "matrix": [3, 6], "x": 6, "y": 3 } + ] + } + } +} diff --git a/keyboards/handwired/scottokeebs/scottofrog/keymaps/default/keymap.c b/keyboards/handwired/scottokeebs/scottofrog/keymaps/default/keymap.c new file mode 100644 index 000000000000..9a220170e498 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottofrog/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* +Copyright 2023 Joe Scotto + +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 . +*/ + +#include QMK_KEYBOARD_H + +// Keymap +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_3x5_5( + KC_Q, KC_W, KC_E, KC_W, KC_R, + KC_A, KC_S, KC_D, KC_F, KC_G, + KC_Z, KC_X, KC_C, KC_V, KC_B, + KC_NO, KC_NO, KC_NO, KC_LCTL, KC_SPC + ) +}; diff --git a/keyboards/handwired/scottokeebs/scottofrog/readme.md b/keyboards/handwired/scottokeebs/scottofrog/readme.md new file mode 100644 index 000000000000..59b7f2e82802 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottofrog/readme.md @@ -0,0 +1,27 @@ +# ScottoFrog + +![ScottoFrog](https://i.imgur.com/x1VxGggh.jpg) + +A 17-key macropad. Case files available [here](https://github.com/joe-scotto/scottokeebs). + +- Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto) +- Hardware Supported: ATmega32U4 +- Hardware Availability: [Amazon](https://amazon.com) + +Make example for this keyboard (after setting up your build environment): + + make handwired/scottokeebs/scottofrog:default + +Flashing example for this keyboard: + + make handwired/scottokeebs/scottofrog: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 diff --git a/keyboards/handwired/scottokeebs/scottofrog/rules.mk b/keyboards/handwired/scottokeebs/scottofrog/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottofrog/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From ca6921b1ba422e4276e45062a115bec854864a90 Mon Sep 17 00:00:00 2001 From: Joe Scotto Date: Tue, 13 Jun 2023 02:17:18 -0400 Subject: [PATCH 28/46] [Keyboard] Add ScottoNum macropad (#21208) --- .../handwired/scottokeebs/scottonum/info.json | 56 +++++++++++++++++++ .../scottonum/keymaps/default/keymap.c | 29 ++++++++++ .../handwired/scottokeebs/scottonum/readme.md | 27 +++++++++ .../handwired/scottokeebs/scottonum/rules.mk | 1 + 4 files changed, 113 insertions(+) create mode 100644 keyboards/handwired/scottokeebs/scottonum/info.json create mode 100644 keyboards/handwired/scottokeebs/scottonum/keymaps/default/keymap.c create mode 100644 keyboards/handwired/scottokeebs/scottonum/readme.md create mode 100644 keyboards/handwired/scottokeebs/scottonum/rules.mk diff --git a/keyboards/handwired/scottokeebs/scottonum/info.json b/keyboards/handwired/scottokeebs/scottonum/info.json new file mode 100644 index 000000000000..2907b47af86a --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottonum/info.json @@ -0,0 +1,56 @@ +{ + "manufacturer": "ScottoKeebs", + "keyboard_name": "ScottoNum", + "maintainer": "joe-scotto", + "diode_direction": "COL2ROW", + "development_board": "promicro", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "build": { + "lto": true + }, + "matrix_pins": { + "direct": [ + ["D3", "D2", "D1", "D0"], + ["D4", "C6", "D7", "E6"], + ["B4", "B5", "F4"], + ["F5", "F6", "F7", "B1"], + ["B3", "B2"] + ] + }, + "url": "https://scottokeebs.com", + "usb": { + "device_version": "1.0.0", + "pid": "0x0014", + "vid": "0x534B" + }, + "layouts": { + "LAYOUT_numpad_4x5": { + "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": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2, "y": 3 }, + { "matrix": [3, 3], "x": 3, "y": 3 }, + { "matrix": [4, 0], "x": 0, "y": 4 }, + { "matrix": [4, 1], "x": 1, "y": 3 } + ] + } + } +} diff --git a/keyboards/handwired/scottokeebs/scottonum/keymaps/default/keymap.c b/keyboards/handwired/scottokeebs/scottonum/keymaps/default/keymap.c new file mode 100644 index 000000000000..a4b50f7769df --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottonum/keymaps/default/keymap.c @@ -0,0 +1,29 @@ +/* +Copyright 2023 Joe Scotto + +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 . +*/ + +#include QMK_KEYBOARD_H + +// Keymap +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_numpad_4x5( + KC_CIRCUMFLEX, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, + KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, + KC_KP_4, KC_KP_5, KC_KP_6, + KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, + KC_KP_0, KC_KP_DOT + ) +}; diff --git a/keyboards/handwired/scottokeebs/scottonum/readme.md b/keyboards/handwired/scottokeebs/scottonum/readme.md new file mode 100644 index 000000000000..66cbff80608d --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottonum/readme.md @@ -0,0 +1,27 @@ +# ScottoNum + +![ScottoNum](https://i.imgur.com/VMiA19uh.jpg) + +A 17-key macropad. Case files available [here](https://github.com/joe-scotto/scottokeebs). + +- Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto) +- Hardware Supported: ATmega32U4 +- Hardware Availability: [Amazon](https://amazon.com) + +Make example for this keyboard (after setting up your build environment): + + make handwired/scottokeebs/scottonum:default + +Flashing example for this keyboard: + + make handwired/scottokeebs/scottonum: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 diff --git a/keyboards/handwired/scottokeebs/scottonum/rules.mk b/keyboards/handwired/scottokeebs/scottonum/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/handwired/scottokeebs/scottonum/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From dabbc93df47815c4df42696de220684edd05f873 Mon Sep 17 00:00:00 2001 From: David Hoelscher Date: Tue, 13 Jun 2023 01:32:54 -0500 Subject: [PATCH 29/46] [Keyboard] Add ErgoStrafer keyboard (#21195) --- keyboards/custommk/ergostrafer/config.h | 26 ++++++ keyboards/custommk/ergostrafer/halconf.h | 30 +++++++ keyboards/custommk/ergostrafer/info.json | 83 +++++++++++++++++++ .../ergostrafer/keymaps/default/keymap.c | 21 +++++ .../ergostrafer/keymaps/default/rules.mk | 1 + .../custommk/ergostrafer/keymaps/via/config.h | 13 +++ .../custommk/ergostrafer/keymaps/via/keymap.c | 21 +++++ .../custommk/ergostrafer/keymaps/via/rules.mk | 2 + keyboards/custommk/ergostrafer/mcuconf.h | 27 ++++++ keyboards/custommk/ergostrafer/readme.md | 27 ++++++ keyboards/custommk/ergostrafer/rules.mk | 3 + 11 files changed, 254 insertions(+) create mode 100644 keyboards/custommk/ergostrafer/config.h create mode 100644 keyboards/custommk/ergostrafer/halconf.h create mode 100644 keyboards/custommk/ergostrafer/info.json create mode 100644 keyboards/custommk/ergostrafer/keymaps/default/keymap.c create mode 100644 keyboards/custommk/ergostrafer/keymaps/default/rules.mk create mode 100644 keyboards/custommk/ergostrafer/keymaps/via/config.h create mode 100644 keyboards/custommk/ergostrafer/keymaps/via/keymap.c create mode 100644 keyboards/custommk/ergostrafer/keymaps/via/rules.mk create mode 100644 keyboards/custommk/ergostrafer/mcuconf.h create mode 100644 keyboards/custommk/ergostrafer/readme.md create mode 100644 keyboards/custommk/ergostrafer/rules.mk diff --git a/keyboards/custommk/ergostrafer/config.h b/keyboards/custommk/ergostrafer/config.h new file mode 100644 index 000000000000..c5a0ec75b575 --- /dev/null +++ b/keyboards/custommk/ergostrafer/config.h @@ -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 \ No newline at end of file diff --git a/keyboards/custommk/ergostrafer/halconf.h b/keyboards/custommk/ergostrafer/halconf.h new file mode 100644 index 000000000000..aed037ba2a49 --- /dev/null +++ b/keyboards/custommk/ergostrafer/halconf.h @@ -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 . + */ + +#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 diff --git a/keyboards/custommk/ergostrafer/info.json b/keyboards/custommk/ergostrafer/info.json new file mode 100644 index 000000000000..66f1562fd986 --- /dev/null +++ b/keyboards/custommk/ergostrafer/info.json @@ -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"} + ] + } +} \ No newline at end of file diff --git a/keyboards/custommk/ergostrafer/keymaps/default/keymap.c b/keyboards/custommk/ergostrafer/keymaps/default/keymap.c new file mode 100644 index 000000000000..31ceb4f1e698 --- /dev/null +++ b/keyboards/custommk/ergostrafer/keymaps/default/keymap.c @@ -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 \ No newline at end of file diff --git a/keyboards/custommk/ergostrafer/keymaps/default/rules.mk b/keyboards/custommk/ergostrafer/keymaps/default/rules.mk new file mode 100644 index 000000000000..a40474b4d5c7 --- /dev/null +++ b/keyboards/custommk/ergostrafer/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes \ No newline at end of file diff --git a/keyboards/custommk/ergostrafer/keymaps/via/config.h b/keyboards/custommk/ergostrafer/keymaps/via/config.h new file mode 100644 index 000000000000..81f399d46ba6 --- /dev/null +++ b/keyboards/custommk/ergostrafer/keymaps/via/config.h @@ -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 diff --git a/keyboards/custommk/ergostrafer/keymaps/via/keymap.c b/keyboards/custommk/ergostrafer/keymaps/via/keymap.c new file mode 100644 index 000000000000..68f1df1c26d3 --- /dev/null +++ b/keyboards/custommk/ergostrafer/keymaps/via/keymap.c @@ -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 \ No newline at end of file diff --git a/keyboards/custommk/ergostrafer/keymaps/via/rules.mk b/keyboards/custommk/ergostrafer/keymaps/via/rules.mk new file mode 100644 index 000000000000..4253f570f0bb --- /dev/null +++ b/keyboards/custommk/ergostrafer/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes \ No newline at end of file diff --git a/keyboards/custommk/ergostrafer/mcuconf.h b/keyboards/custommk/ergostrafer/mcuconf.h new file mode 100644 index 000000000000..160b94f786ec --- /dev/null +++ b/keyboards/custommk/ergostrafer/mcuconf.h @@ -0,0 +1,27 @@ +/* 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 . + */ + +#pragma once + +#include_next + +// Used for audio +#undef STM32_PWM_USE_TIM4 +#define STM32_PWM_USE_TIM4 TRUE + +// Used for FRAM +#undef STM32_SPI_USE_SPI1 +#define STM32_SPI_USE_SPI1 TRUE \ No newline at end of file diff --git a/keyboards/custommk/ergostrafer/readme.md b/keyboards/custommk/ergostrafer/readme.md new file mode 100644 index 000000000000..dab089647ffc --- /dev/null +++ b/keyboards/custommk/ergostrafer/readme.md @@ -0,0 +1,27 @@ +# ergostrafer + +![ergostrafer](https://i.imgur.com/ncJgD3jh.jpeg) + +ErgoStrafer is a gaming mechanical keyboard that reproduces the layout of the discontinued SteelSeries Merc Stealth a.k.a. Zboard. + +* Keyboard Maintainer: [customMK](https://github.com/customMK) +* Hardware Supported: ErgoStrafer +* Hardware Availability: [customMK](https://shop.custommk.com/collections/ergostrafer/products/ergostrafer) + +Make example for this keyboard (after setting up your build environment): + + make custommk/ergostrafer:default + +Flashing example for this keyboard: + + make custommk/ergostrafer: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 (the "Load" key in the top right corner) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/custommk/ergostrafer/rules.mk b/keyboards/custommk/ergostrafer/rules.mk new file mode 100644 index 000000000000..ee519ea8b55b --- /dev/null +++ b/keyboards/custommk/ergostrafer/rules.mk @@ -0,0 +1,3 @@ +EEPROM_DRIVER = spi + +AUDIO_DRIVER = pwm_hardware From e8b7244bb51b297b4de055a41f3ab01a9daf0362 Mon Sep 17 00:00:00 2001 From: Alberto Pavano <38161192+ATron789@users.noreply.github.com> Date: Tue, 13 Jun 2023 16:05:03 +0100 Subject: [PATCH 30/46] [Keyboard] rainkeebs trailmix (#20189) Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/rainkeebs/trailmix/info.json | 96 +++++++++++++++++++ .../trailmix/keymaps/default/keymap.c | 66 +++++++++++++ .../trailmix/keymaps/default/rules.mk | 1 + keyboards/rainkeebs/trailmix/readme.md | 28 ++++++ keyboards/rainkeebs/trailmix/rules.mk | 1 + keyboards/rainkeebs/trailmix/trailmix.c | 91 ++++++++++++++++++ 6 files changed, 283 insertions(+) create mode 100644 keyboards/rainkeebs/trailmix/info.json create mode 100644 keyboards/rainkeebs/trailmix/keymaps/default/keymap.c create mode 100644 keyboards/rainkeebs/trailmix/keymaps/default/rules.mk create mode 100644 keyboards/rainkeebs/trailmix/readme.md create mode 100644 keyboards/rainkeebs/trailmix/rules.mk create mode 100644 keyboards/rainkeebs/trailmix/trailmix.c diff --git a/keyboards/rainkeebs/trailmix/info.json b/keyboards/rainkeebs/trailmix/info.json new file mode 100644 index 000000000000..7b3cfdfcdd3e --- /dev/null +++ b/keyboards/rainkeebs/trailmix/info.json @@ -0,0 +1,96 @@ +{ + "manufacturer": "rainkeebs", + "keyboard_name": "trailmix", + "maintainer": "ATron789", + "bootloader": "atmel-dfu", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "diode_direction": "COL2ROW", + "encoder": { + "enabled": true, + "rotary": [ + {"pin_a": "B2", "pin_b": "B4"} + ] + }, + "matrix_pins": { + "cols": ["F6", "D4", "F5", "D0", "F4", "B6"], + "rows": ["D1", "D7", "F7", "C6"] + }, + "processor": "atmega32u4", + "split": { + "enabled": true, + "encoder": { + "right": { + "rotary": [ + {"pin_a": "B2", "pin_b": "B4"} + ] + } + }, + "soft_serial_pin": "D3" + }, + "url": "https://www.rainkeebs.mx", + "usb": { + "device_version": "1.0.0", + "pid": "0x7363", + "vid": "0x726B" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "L00", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "L01", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "L02", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "L03", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "L04", "matrix": [0, 4], "x": 4, "y": 0}, + + {"label": "R04", "matrix": [4, 4], "x": 8, "y": 0}, + {"label": "R03", "matrix": [4, 3], "x": 9, "y": 0}, + {"label": "R02", "matrix": [4, 2], "x": 10, "y": 0}, + {"label": "R01", "matrix": [4, 1], "x": 11, "y": 0}, + {"label": "R00", "matrix": [4, 0], "x": 12, "y": 0}, + + {"label": "L10", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "L11", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "L12", "matrix": [1, 2], "x": 2, "y": 1}, + {"label": "L13", "matrix": [1, 3], "x": 3, "y": 1}, + {"label": "L14", "matrix": [1, 4], "x": 4, "y": 1}, + + {"label": "R14", "matrix": [5, 4], "x": 8, "y": 1}, + {"label": "R13", "matrix": [5, 3], "x": 9, "y": 1}, + {"label": "R12", "matrix": [5, 2], "x": 10, "y": 1}, + {"label": "R11", "matrix": [5, 1], "x": 11, "y": 1}, + {"label": "R10", "matrix": [5, 0], "x": 12, "y": 1}, + + {"label": "L20", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "L21", "matrix": [2, 1], "x": 1, "y": 2}, + {"label": "L22", "matrix": [2, 2], "x": 2, "y": 2}, + {"label": "L23", "matrix": [2, 3], "x": 3, "y": 2}, + {"label": "L24", "matrix": [2, 4], "x": 4, "y": 2}, + {"label": "L25", "matrix": [2, 5], "x": 5, "y": 2}, + + {"label": "R25", "matrix": [6, 5], "x": 7, "y": 2}, + {"label": "R24", "matrix": [6, 4], "x": 8, "y": 2}, + {"label": "R23", "matrix": [6, 3], "x": 9, "y": 2}, + {"label": "R22", "matrix": [6, 2], "x": 10, "y": 2}, + {"label": "R21", "matrix": [6, 1], "x": 11, "y": 2}, + {"label": "R20", "matrix": [6, 0], "x": 12, "y": 2}, + + {"label": "L30", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "L31", "matrix": [3, 1], "x": 1, "y": 3}, + {"label": "L32", "matrix": [3, 2], "x": 2, "y": 3}, + {"label": "L33", "matrix": [3, 3], "x": 3, "y": 3}, + {"label": "L34", "matrix": [3, 4], "x": 4, "y": 3, "w": 2}, + + {"label": "R34", "matrix": [7, 4], "x": 7, "y": 3, "w": 2}, + {"label": "R33", "matrix": [7, 3], "x": 9, "y": 3}, + {"label": "R32", "matrix": [7, 2], "x": 10, "y": 3}, + {"label": "R31", "matrix": [7, 1], "x": 11, "y": 3}, + {"label": "R30", "matrix": [7, 0], "x": 12, "y": 3} + ] + } + } +} diff --git a/keyboards/rainkeebs/trailmix/keymaps/default/keymap.c b/keyboards/rainkeebs/trailmix/keymaps/default/keymap.c new file mode 100644 index 000000000000..77418f9cd636 --- /dev/null +++ b/keyboards/rainkeebs/trailmix/keymaps/default/keymap.c @@ -0,0 +1,66 @@ +/* Copyright 2021 Regan Palmer + * + * 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 . + */ +#include QMK_KEYBOARD_H + +enum layers { + _BASE, + _LOWER, + _RAISE, + _ADJUST, +}; + +#define LOWER MO(_LOWER) +#define RAISE MO(_RAISE) +#define ADJUST MO(_ADJUST) +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENTER, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MPLY, KC_PSCR, KC_N, KC_M, KC_COMM, KC_DOT, KC_BSPC, + KC_LCTL, KC_LALT, KC_LGUI, LOWER,KC_LSFT, KC_SPC, RAISE, KC_RGUI, KC_ESC, KC_TAB + ), + + [_LOWER] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_ESC, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_LBRC, KC_RBRC, KC_SCLN, KC_QUOT, KC_TRNS, + KC_TAB, KC_INSERT, KC_DELETE, KC_BACKSLASH,KC_MINUS, KC_TRNS, KC_TRNS, KC_PLUS, KC_SLSH, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_TRNS, KC_TRNS + ), + + [_RAISE] = LAYOUT( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, + KC_GRAVE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_LCBR, KC_RCBR, KC_COLN, KC_DQT, KC_TRNS, + KC_TRNS, KC_CAPS, KC_TRNS, KC_PIPE, KC_UNDS, KC_TRNS, KC_TRNS, KC_EQUAL, KC_QUESTION, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, ADJUST, KC_TRNS, KC_TRNS + ), + + [_ADJUST] = LAYOUT( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_F12, KC_PRINT_SCREEN, KC_SCROLL_LOCK, KC_PAUSE, KC_H, KC_J, KC_K, KC_L, KC_ENTER, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MPLY, KC_PSCR, KC_N, KC_M, KC_COMM, KC_DOT, KC_BSPC, + KC_LCTL, KC_LALT, ADJUST, RAISE, KC_SPC, KC_LSFT, LOWER, ADJUST, KC_RALT, KC_RCTL + ), +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_BASE] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN)}, + [_LOWER] = {ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_HOME, KC_END)}, + [_RAISE] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_WH_L, KC_WH_R)}, + [_ADJUST] = {ENCODER_CCW_CW(KC_MS_LEFT, KC_MS_RIGHT), ENCODER_CCW_CW(KC_MS_UP, KC_MS_DOWN)}, +}; +#endif diff --git a/keyboards/rainkeebs/trailmix/keymaps/default/rules.mk b/keyboards/rainkeebs/trailmix/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/rainkeebs/trailmix/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/rainkeebs/trailmix/readme.md b/keyboards/rainkeebs/trailmix/readme.md new file mode 100644 index 000000000000..2b2b6437e685 --- /dev/null +++ b/keyboards/rainkeebs/trailmix/readme.md @@ -0,0 +1,28 @@ +# Trailmix + +![Trailmix](https://i.postimg.cc/wB4Zk1pS/IMG-20230326-222616.jpg) + + +Ortho split 40% keyboard by rainkeenbs with encoders. + +* Keyboard Maintainer: [ATron789](https://github.com/atron789) +* Hardware Supported: `Elite Pi`, `Pro Micro Type-C USB`, `Elite-C (v4)`, `nice!nano v2` controllers + + +Make example for this keyboard (after setting up your build environment): + + make rainkeebs/trailmix:default + +Flashing example for this keyboard: + + make rainkeebs/rainkeeb:default:flash + +(Flash one side of the keyboard at the time) + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader: + +* **Physical reset button**: reset button located next to the encoder slot, one on each side of the keyboard. diff --git a/keyboards/rainkeebs/trailmix/rules.mk b/keyboards/rainkeebs/trailmix/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/rainkeebs/trailmix/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/rainkeebs/trailmix/trailmix.c b/keyboards/rainkeebs/trailmix/trailmix.c new file mode 100644 index 000000000000..105d988dadb7 --- /dev/null +++ b/keyboards/rainkeebs/trailmix/trailmix.c @@ -0,0 +1,91 @@ +/* +Copyright 2023 Alberto Pavano "ATron789" + +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 . +*/ + +#include "quantum.h" + +enum layers { _BASE, _LOWER, _RAISE, _ADJUST }; + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + switch (get_highest_layer(layer_state)) { + case _BASE: + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (index == 1) { + if (clockwise) { + tap_code(KC_MS_WH_DOWN); + } else { + tap_code(KC_MS_WH_UP); + } + } + break; + case _RAISE: + if (index == 0) { + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + } else if (index == 1) { + if (clockwise) { + tap_code(KC_WH_R); + } else { + tap_code(KC_WH_L); + } + } + break; + case _LOWER: + if (index == 0) { + if (clockwise) { + tap_code(KC_PGUP); + } else { + tap_code(KC_PGDN); + } + } else if (index == 1) { + if (clockwise) { + tap_code(KC_END); + } else { + tap_code(KC_HOME); + } + } + break; + case _ADJUST: + if (index == 0) { + if (clockwise) { + tap_code(KC_MS_RIGHT); + } else { + tap_code(KC_MS_LEFT); + } + } else if (index == 1) { + if (clockwise) { + tap_code(KC_MS_DOWN); + } else { + tap_code(KC_MS_UP); + } + } + break; + } + return true; +} +#endif From 1194a6f0dde197ede9fa2b9e5cfe924bbcdd729e Mon Sep 17 00:00:00 2001 From: Alabahuy Date: Tue, 13 Jun 2023 22:08:37 +0700 Subject: [PATCH 31/46] [Keyboard] jaykeeb skyline (#21219) --- keyboards/jaykeeb/skyline/info.json | 563 ++++++++++++++++++ .../jaykeeb/skyline/keymaps/default/keymap.c | 37 ++ .../jaykeeb/skyline/keymaps/via/keymap.c | 37 ++ .../jaykeeb/skyline/keymaps/via/rules.mk | 1 + keyboards/jaykeeb/skyline/matrix_diagram.md | 21 + keyboards/jaykeeb/skyline/readme.md | 27 + keyboards/jaykeeb/skyline/rules.mk | 1 + 7 files changed, 687 insertions(+) create mode 100644 keyboards/jaykeeb/skyline/info.json create mode 100644 keyboards/jaykeeb/skyline/keymaps/default/keymap.c create mode 100644 keyboards/jaykeeb/skyline/keymaps/via/keymap.c create mode 100644 keyboards/jaykeeb/skyline/keymaps/via/rules.mk create mode 100644 keyboards/jaykeeb/skyline/matrix_diagram.md create mode 100644 keyboards/jaykeeb/skyline/readme.md create mode 100644 keyboards/jaykeeb/skyline/rules.mk diff --git a/keyboards/jaykeeb/skyline/info.json b/keyboards/jaykeeb/skyline/info.json new file mode 100644 index 000000000000..14b596ebba19 --- /dev/null +++ b/keyboards/jaykeeb/skyline/info.json @@ -0,0 +1,563 @@ +{ + "manufacturer": "Jaykeeb", + "keyboard_name": "Skyline", + "maintainer": "Alabahuy", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "GP24", + "scroll_lock": "GP12", + "on_state": 0 + }, + "matrix_pins": { + "cols": ["GP11", "GP10", "GP9", "GP8", "GP7", "GP6", "GP5", "GP4", "GP3", "GP2", "GP1", "GP0", "GP29", "GP28", "GP16", "GP15", "GP14"], + "rows": ["GP13", "GP27", "GP26", "GP25", "GP22", "GP23"] + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0799", + "vid": "0x414C" + }, + "community_layouts": [ + "tkl_ansi_tsangan", + "tkl_ansi_tsangan_split_bs_rshift", + "tkl_iso_tsangan", + "tkl_iso_tsangan_split_bs_rshift" + ], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + + {"label": "F1", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "F2", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "F3", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "F4", "matrix": [0, 5], "x": 5, "y": 0}, + + {"label": "F5", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "F6", "matrix": [0, 7], "x": 7.5, "y": 0}, + {"label": "F7", "matrix": [0, 8], "x": 8.5, "y": 0}, + {"label": "F8", "matrix": [0, 9], "x": 9.5, "y": 0}, + + {"label": "F9", "matrix": [0, 10], "x": 11, "y": 0}, + {"label": "F10", "matrix": [0, 11], "x": 12, "y": 0}, + {"label": "F11", "matrix": [0, 12], "x": 13, "y": 0}, + {"label": "F12", "matrix": [0, 13], "x": 14, "y": 0}, + + {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0}, + {"label": "Scroll Lock", "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": "1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "0", "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": "\\", "matrix": [1, 13], "x": 13, "y": 1.25}, + {"label": "Delete", "matrix": [2, 13], "x": 14, "y": 1.25}, + + {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"label": "Page Up", "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": [3, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + + {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"label": "Page Down", "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, 12], "x": 13.75, "y": 3.25, "w": 2.25}, + + {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"label": "\u2298", "matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"label": "Fn1", "matrix": [4, 13], "x": 14, "y": 4.25}, + + {"label": "\u2191", "matrix": [4, 15], "x": 16.25, "y": 4.25}, + + {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 5.25}, + {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"label": "Space", "matrix": [5, 7], "x": 3.75, "y": 5.25, "w": 7}, + {"label": "Alt", "matrix": [5, 11], "x": 10, "y": 5.25, "w": 1.5}, + {"label": "GUI", "matrix": [5, 12], "x": 11.25, "y": 5.25}, + {"label": "Ctrl", "matrix": [5, 13], "x": 12.5, "y": 5.25, "w": 1.5}, + + {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"label": "\u2193", "matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi_tsangan": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + + {"label": "F1", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "F2", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "F3", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "F4", "matrix": [0, 5], "x": 5, "y": 0}, + + {"label": "F5", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "F6", "matrix": [0, 7], "x": 7.5, "y": 0}, + {"label": "F7", "matrix": [0, 8], "x": 8.5, "y": 0}, + {"label": "F8", "matrix": [0, 9], "x": 9.5, "y": 0}, + + {"label": "F9", "matrix": [0, 10], "x": 11, "y": 0}, + {"label": "F10", "matrix": [0, 11], "x": 12, "y": 0}, + {"label": "F11", "matrix": [0, 12], "x": 13, "y": 0}, + {"label": "F12", "matrix": [0, 13], "x": 14, "y": 0}, + + {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0}, + {"label": "Scroll Lock", "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": "1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "0", "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": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"label": "Page Up", "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": [3, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + + {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"label": "Page Down", "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, 12], "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, 2], "x": 2.25, "y": 4.25}, + {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + + {"label": "\u2191", "matrix": [4, 15], "x": 16.25, "y": 4.25}, + + {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 5.25}, + {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"label": "Space", "matrix": [5, 7], "x": 3.75, "y": 5.25, "w": 7}, + {"label": "Alt", "matrix": [5, 11], "x": 10, "y": 5.25, "w": 1.5}, + {"label": "GUI", "matrix": [5, 12], "x": 11.25, "y": 5.25}, + {"label": "Ctrl", "matrix": [5, 13], "x": 12.5, "y": 5.25, "w": 1.5}, + + {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"label": "\u2193", "matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_ansi_tsangan_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + + {"label": "F1", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "F2", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "F3", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "F4", "matrix": [0, 5], "x": 5, "y": 0}, + + {"label": "F5", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "F6", "matrix": [0, 7], "x": 7.5, "y": 0}, + {"label": "F7", "matrix": [0, 8], "x": 8.5, "y": 0}, + {"label": "F8", "matrix": [0, 9], "x": 9.5, "y": 0}, + + {"label": "F9", "matrix": [0, 10], "x": 11, "y": 0}, + {"label": "F10", "matrix": [0, 11], "x": 12, "y": 0}, + {"label": "F11", "matrix": [0, 12], "x": 13, "y": 0}, + {"label": "F12", "matrix": [0, 13], "x": 14, "y": 0}, + + {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0}, + {"label": "Scroll Lock", "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": "1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "0", "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": "\\", "matrix": [1, 13], "x": 13, "y": 1.25}, + {"label": "Delete", "matrix": [2, 13], "x": 14, "y": 1.25}, + + {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"label": "Page Up", "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": [3, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + + {"label": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"label": "Page Down", "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, 12], "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, 2], "x": 2.25, "y": 4.25}, + {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"label": "Fn1", "matrix": [4, 13], "x": 14, "y": 4.25}, + + {"label": "\u2191", "matrix": [4, 15], "x": 16.25, "y": 4.25}, + + {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label": "GUI", "matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"label": "Space", "matrix": [5, 4], "x": 4, "y": 5.25, "w": 7}, + {"label": "Alt", "matrix": [5, 9], "x": 11, "y": 5.25, "w": 1.5}, + {"label": "Fn", "matrix": [5, 10], "x": 12.5, "y": 5.25}, + {"label": "Ctrl", "matrix": [5, 11], "x": 13.5, "y": 5.25, "w": 1.5}, + + {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"label": "\u2193", "matrix": [5, 12], "x": 16.25, "y": 5.25}, + {"label": "\u2192", "matrix": [5, 7], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso_tsangan": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + + {"label": "F1", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "F2", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "F3", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "F4", "matrix": [0, 5], "x": 5, "y": 0}, + + {"label": "F5", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "F6", "matrix": [0, 7], "x": 7.5, "y": 0}, + {"label": "F7", "matrix": [0, 8], "x": 8.5, "y": 0}, + {"label": "F8", "matrix": [0, 9], "x": 9.5, "y": 0}, + + {"label": "F9", "matrix": [0, 10], "x": 11, "y": 0}, + {"label": "F10", "matrix": [0, 11], "x": 12, "y": 0}, + {"label": "F11", "matrix": [0, 12], "x": 13, "y": 0}, + {"label": "F12", "matrix": [0, 13], "x": 14, "y": 0}, + + {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0}, + {"label": "Scroll Lock", "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": "1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "0", "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": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"label": "Page Up", "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": "Delete", "matrix": [2, 13], "x": 15.25, "y": 2.25}, + {"label": "End", "matrix": [2, 14], "x": 16.25, "y": 2.25}, + {"label": "Page Down", "matrix": [2, 15], "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": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + + {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + + {"label": "\u2191", "matrix": [4, 15], "x": 16.25, "y": 4.25}, + + {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 5.25}, + {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"label": "Space", "matrix": [5, 7], "x": 3.75, "y": 5.25, "w": 7}, + {"label": "Alt", "matrix": [5, 11], "x": 10, "y": 5.25, "w": 1.5}, + {"label": "GUI", "matrix": [5, 12], "x": 11.25, "y": 5.25}, + {"label": "Ctrl", "matrix": [5, 13], "x": 12.5, "y": 5.25, "w": 1.5}, + + {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"label": "\u2193", "matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_tkl_iso_tsangan_split_bs_rshift": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + + {"label": "F1", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "F2", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "F3", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "F4", "matrix": [0, 5], "x": 5, "y": 0}, + + {"label": "F5", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "F6", "matrix": [0, 7], "x": 7.5, "y": 0}, + {"label": "F7", "matrix": [0, 8], "x": 8.5, "y": 0}, + {"label": "F8", "matrix": [0, 9], "x": 9.5, "y": 0}, + + {"label": "F9", "matrix": [0, 10], "x": 11, "y": 0}, + {"label": "F10", "matrix": [0, 11], "x": 12, "y": 0}, + {"label": "F11", "matrix": [0, 12], "x": 13, "y": 0}, + {"label": "F12", "matrix": [0, 13], "x": 14, "y": 0}, + + {"label": "Print Screen", "matrix": [0, 14], "x": 15.25, "y": 0}, + {"label": "Scroll Lock", "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": "1", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "3", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "4", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "5", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "6", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "7", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "8", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "9", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "0", "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": "\\", "matrix": [1, 13], "x": 13, "y": 1.25}, + {"label": "Delete", "matrix": [2, 13], "x": 14, "y": 1.25}, + + {"label": "Insert", "matrix": [1, 14], "x": 15.25, "y": 1.25}, + {"label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25}, + {"label": "Page Up", "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": "Delete", "matrix": [2, 14], "x": 15.25, "y": 2.25}, + {"label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25}, + {"label": "Page Down", "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": "#", "matrix": [3, 12], "x": 12.75, "y": 3.25}, + {"label": "Enter", "matrix": [3, 13], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2}, + + {"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"label": "\\", "matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": ",", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": ".", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "/", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75}, + {"label": "Fn1", "matrix": [4, 13], "x": 14, "y": 4.25}, + + {"label": "\u2191", "matrix": [4, 15], "x": 16.25, "y": 4.25}, + + {"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label": "GUI", "matrix": [5, 1], "x": 1.25, "y": 5.25}, + {"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"label": "Space", "matrix": [5, 7], "x": 3.75, "y": 5.25, "w": 7}, + {"label": "Alt", "matrix": [5, 11], "x": 10, "y": 5.25, "w": 1.5}, + {"label": "GUI", "matrix": [5, 12], "x": 11.25, "y": 5.25}, + {"label": "Ctrl", "matrix": [5, 13], "x": 12.5, "y": 5.25, "w": 1.5}, + + {"label": "\u2190", "matrix": [5, 14], "x": 15.25, "y": 5.25}, + {"label": "\u2193", "matrix": [5, 15], "x": 16.25, "y": 5.25}, + {"label": "\u2192", "matrix": [5, 16], "x": 17.25, "y": 5.25} + ] + } + } +} diff --git a/keyboards/jaykeeb/skyline/keymaps/default/keymap.c b/keyboards/jaykeeb/skyline/keymaps/default/keymap.c new file mode 100644 index 000000000000..78cf4b4c44d4 --- /dev/null +++ b/keyboards/jaykeeb/skyline/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2023 Alabahuy + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_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_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_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + +}; \ No newline at end of file diff --git a/keyboards/jaykeeb/skyline/keymaps/via/keymap.c b/keyboards/jaykeeb/skyline/keymaps/via/keymap.c new file mode 100644 index 000000000000..78cf4b4c44d4 --- /dev/null +++ b/keyboards/jaykeeb/skyline/keymaps/via/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2023 Alabahuy + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_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_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_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + +}; \ No newline at end of file diff --git a/keyboards/jaykeeb/skyline/keymaps/via/rules.mk b/keyboards/jaykeeb/skyline/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/jaykeeb/skyline/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/jaykeeb/skyline/matrix_diagram.md b/keyboards/jaykeeb/skyline/matrix_diagram.md new file mode 100644 index 000000000000..419567fab547 --- /dev/null +++ b/keyboards/jaykeeb/skyline/matrix_diagram.md @@ -0,0 +1,21 @@ +# Matrix Diagram for Skyline + +``` +┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ +│00 │ │02 │03 │04 │05 │ │06 │07 │08 │09 │ │0A │0B │0C │0D │ │0E │0F │0G │ +└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───────┐ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │2D │ │1E │1F │1G │ │1D │ 2u Backspace +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ └─┬─────┤ +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │3D │ │2E │2F │2G │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ┌──┴┐3D │ ISO Enter +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │ │3C │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┐ └───┴────┘ +│40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │ │4F │ +├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐ +│50 │51 │52 │57 │5B │5C │5D │ │5E │5F │5G │ Tsangan/WKL +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ +┌────────┐ ┌──────────┐ +│40 │ 2.25u LShift 2.75u RShift │4C │ +└────────┘ └──────────┘ +``` diff --git a/keyboards/jaykeeb/skyline/readme.md b/keyboards/jaykeeb/skyline/readme.md new file mode 100644 index 000000000000..92291310e045 --- /dev/null +++ b/keyboards/jaykeeb/skyline/readme.md @@ -0,0 +1,27 @@ +#Skyline + +![skyline](https://i.imgur.com/nIeOhKth.png) + +PCB for "Skyline" TKL Mechanical Keyboard + +* Keyboard Maintainer: [Alabahuy](https://github.com/alabahuy) +* Hardware Supported: Skyline PCB, RP2040 +* Hardware Availability: Private GB + +Make example for this keyboard (after setting up your build environment): + + make jaykeeb/skyline:default + +Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid)) + + make jaykeeb/skyline: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 \ No newline at end of file diff --git a/keyboards/jaykeeb/skyline/rules.mk b/keyboards/jaykeeb/skyline/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/jaykeeb/skyline/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From 55987542e1165aedf826012bf940a235b6afe610 Mon Sep 17 00:00:00 2001 From: rhmokey <57172003+rhmokey@users.noreply.github.com> Date: Tue, 13 Jun 2023 23:17:55 +0800 Subject: [PATCH 32/46] [Keyboard] Add mokey12x2 (#20702) Co-authored-by: Ryan Co-authored-by: Joel Challis --- keyboards/mokey/mokey12x2/info.json | 47 +++++++++++++++++++ .../mokey/mokey12x2/keymaps/default/keymap.c | 26 ++++++++++ .../mokey/mokey12x2/keymaps/via/keymap.c | 26 ++++++++++ .../mokey/mokey12x2/keymaps/via/rules.mk | 1 + keyboards/mokey/mokey12x2/readme.md | 23 +++++++++ keyboards/mokey/mokey12x2/rules.mk | 1 + 6 files changed, 124 insertions(+) create mode 100644 keyboards/mokey/mokey12x2/info.json create mode 100644 keyboards/mokey/mokey12x2/keymaps/default/keymap.c create mode 100644 keyboards/mokey/mokey12x2/keymaps/via/keymap.c create mode 100644 keyboards/mokey/mokey12x2/keymaps/via/rules.mk create mode 100644 keyboards/mokey/mokey12x2/readme.md create mode 100644 keyboards/mokey/mokey12x2/rules.mk diff --git a/keyboards/mokey/mokey12x2/info.json b/keyboards/mokey/mokey12x2/info.json new file mode 100644 index 000000000000..6f22429e72c2 --- /dev/null +++ b/keyboards/mokey/mokey12x2/info.json @@ -0,0 +1,47 @@ +{ + "keyboard_name": "Mokey12x2", + "manufacturer": "Mokey", + "url": "", + "maintainer": "Mokey", + "development_board": "bluepill", + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["A6", "A5", "A4", "A3", "B9"], + "rows": ["A2", "A1", "A0", "A7"] + }, + "usb": { + "device_version": "0.0.1", + "vid": "0x6653", + "pid": "0x012A" + }, + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0,0], "x":0.25, "y":2.75}, + {"matrix": [0,1], "x":1.25, "y":2.75}, + {"matrix": [0,2], "x":2.25, "y":2.75}, + {"matrix": [0,3], "x":3.25, "y":2.75}, + {"matrix": [0,4], "x":0.25, "y":0, "w":1.5, "h":1.5}, + {"matrix": [1,0], "x":0.25, "y":3.75}, + {"matrix": [1,1], "x":1.25, "y":3.75}, + {"matrix": [1,2], "x":2.25, "y":3.75}, + {"matrix": [1,3], "x":3.25, "y":3.75}, + {"matrix": [1,4], "x":2.75, "y":0, "w":1.5, "h":1.5}, + {"matrix": [2,0], "x":0.25, "y":4.75}, + {"matrix": [2,1], "x":1.25, "y":4.75}, + {"matrix": [2,2], "x":2.25, "y":4.75}, + {"matrix": [2,3], "x":3.25, "y":4.75}, + {"matrix": [3,0], "x":0, "y":1.5}, + {"matrix": [3,1], "x":1, "y":1.5}, + {"matrix": [3,2], "x":2.5, "y":1.5}, + {"matrix": [3,3], "x":3.5, "y":1.5} + ] + } + } +} diff --git a/keyboards/mokey/mokey12x2/keymaps/default/keymap.c b/keyboards/mokey/mokey12x2/keymaps/default/keymap.c new file mode 100644 index 000000000000..74fbf1e94791 --- /dev/null +++ b/keyboards/mokey/mokey12x2/keymaps/default/keymap.c @@ -0,0 +1,26 @@ +/* + * Copyright 2023 Mokey12×2 + * + * 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 . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_A, KC_B, KC_C, KC_D, KC_1, + KC_E, KC_F, KC_G, KC_H, KC_2, + KC_I, KC_J, KC_K, KC_L, + KC_I, KC_J, KC_K, KC_L) +}; diff --git a/keyboards/mokey/mokey12x2/keymaps/via/keymap.c b/keyboards/mokey/mokey12x2/keymaps/via/keymap.c new file mode 100644 index 000000000000..74fbf1e94791 --- /dev/null +++ b/keyboards/mokey/mokey12x2/keymaps/via/keymap.c @@ -0,0 +1,26 @@ +/* + * Copyright 2023 Mokey12×2 + * + * 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 . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_A, KC_B, KC_C, KC_D, KC_1, + KC_E, KC_F, KC_G, KC_H, KC_2, + KC_I, KC_J, KC_K, KC_L, + KC_I, KC_J, KC_K, KC_L) +}; diff --git a/keyboards/mokey/mokey12x2/keymaps/via/rules.mk b/keyboards/mokey/mokey12x2/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/mokey/mokey12x2/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/mokey/mokey12x2/readme.md b/keyboards/mokey/mokey12x2/readme.md new file mode 100644 index 000000000000..75a87062c982 --- /dev/null +++ b/keyboards/mokey/mokey12x2/readme.md @@ -0,0 +1,23 @@ +# mokey12x2 + +A Blue Pill STM32F103C8T6-based keyboard. + +* Keyboard Maintainer: [rhmokey](https://github.com/rhmokey) +* Hardware Supported: [rhmokey](https://github.com/rhmokey) + +Make example for this keyboard (after setting up your build environment): + + make mokey/mokey12x2:default + +Flashing example for this keyboard: + + make mokey/mokey12x2:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 2 ways: + +* **Physical reset button**: Briefly press the button: [boot] first, then press button: [reset] on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file diff --git a/keyboards/mokey/mokey12x2/rules.mk b/keyboards/mokey/mokey12x2/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/mokey/mokey12x2/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 4055f2a93706af7f3cec46a9b1683cdefeb0d25a Mon Sep 17 00:00:00 2001 From: "jonylee@hfd" <108282809+jonylee1986@users.noreply.github.com> Date: Wed, 14 Jun 2023 14:27:08 +0800 Subject: [PATCH 33/46] [Keyboard]add 5108 Keyboard. (#21184) Co-authored-by: adophoxia <100170946+adophoxia@users.noreply.github.com> Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/akko/5108/5108.c | 162 +++++++++++ keyboards/akko/5108/config.h | 54 ++++ keyboards/akko/5108/halconf.h | 23 ++ keyboards/akko/5108/info.json | 290 +++++++++++++++++++ keyboards/akko/5108/keymaps/default/keymap.c | 79 +++++ keyboards/akko/5108/keymaps/via/keymap.c | 79 +++++ keyboards/akko/5108/keymaps/via/rules.mk | 1 + keyboards/akko/5108/mcuconf.h | 24 ++ keyboards/akko/5108/readme.md | 20 ++ keyboards/akko/5108/rules.mk | 2 + 10 files changed, 734 insertions(+) create mode 100644 keyboards/akko/5108/5108.c create mode 100644 keyboards/akko/5108/config.h create mode 100644 keyboards/akko/5108/halconf.h create mode 100644 keyboards/akko/5108/info.json create mode 100644 keyboards/akko/5108/keymaps/default/keymap.c create mode 100644 keyboards/akko/5108/keymaps/via/keymap.c create mode 100644 keyboards/akko/5108/keymaps/via/rules.mk create mode 100644 keyboards/akko/5108/mcuconf.h create mode 100644 keyboards/akko/5108/readme.md create mode 100644 keyboards/akko/5108/rules.mk diff --git a/keyboards/akko/5108/5108.c b/keyboards/akko/5108/5108.c new file mode 100644 index 000000000000..a14f02bc76e8 --- /dev/null +++ b/keyboards/akko/5108/5108.c @@ -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 . + */ + +#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; +} diff --git a/keyboards/akko/5108/config.h b/keyboards/akko/5108/config.h new file mode 100644 index 000000000000..f56e825e0501 --- /dev/null +++ b/keyboards/akko/5108/config.h @@ -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 . + */ + +#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 diff --git a/keyboards/akko/5108/halconf.h b/keyboards/akko/5108/halconf.h new file mode 100644 index 000000000000..2f64e65393a5 --- /dev/null +++ b/keyboards/akko/5108/halconf.h @@ -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 . + */ +#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 diff --git a/keyboards/akko/5108/info.json b/keyboards/akko/5108/info.json new file mode 100644 index 000000000000..e9e99be69e3f --- /dev/null +++ b/keyboards/akko/5108/info.json @@ -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 } + ] + } + } +} diff --git a/keyboards/akko/5108/keymaps/default/keymap.c b/keyboards/akko/5108/keymaps/default/keymap.c new file mode 100644 index 000000000000..ef92432ff57f --- /dev/null +++ b/keyboards/akko/5108/keymaps/default/keymap.c @@ -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 . + */ + +#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 diff --git a/keyboards/akko/5108/keymaps/via/keymap.c b/keyboards/akko/5108/keymaps/via/keymap.c new file mode 100644 index 000000000000..ef92432ff57f --- /dev/null +++ b/keyboards/akko/5108/keymaps/via/keymap.c @@ -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 . + */ + +#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 diff --git a/keyboards/akko/5108/keymaps/via/rules.mk b/keyboards/akko/5108/keymaps/via/rules.mk new file mode 100644 index 000000000000..036bd6d1c3ec --- /dev/null +++ b/keyboards/akko/5108/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes \ No newline at end of file diff --git a/keyboards/akko/5108/mcuconf.h b/keyboards/akko/5108/mcuconf.h new file mode 100644 index 000000000000..0d16f4f04e46 --- /dev/null +++ b/keyboards/akko/5108/mcuconf.h @@ -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 . + */ +#pragma once + +#include_next + +#undef WB32_SPI_USE_QSPI +#define WB32_SPI_USE_QSPI TRUE + +#undef WB32_I2C_USE_I2C1 +#define WB32_I2C_USE_I2C1 TRUE diff --git a/keyboards/akko/5108/readme.md b/keyboards/akko/5108/readme.md new file mode 100644 index 000000000000..c7140deb5c7a --- /dev/null +++ b/keyboards/akko/5108/readme.md @@ -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). diff --git a/keyboards/akko/5108/rules.mk b/keyboards/akko/5108/rules.mk new file mode 100644 index 000000000000..24d5f6f52ecc --- /dev/null +++ b/keyboards/akko/5108/rules.mk @@ -0,0 +1,2 @@ +EEPROM_DRIVER = wear_leveling +WEAR_LEVELING_DRIVER = spi_flash From f5ee7b7ed89715860ec769cbbe1b3b6468a80300 Mon Sep 17 00:00:00 2001 From: Danny Date: Wed, 14 Jun 2023 12:26:46 -0400 Subject: [PATCH 34/46] Add Sinc Rev. 4 (#21130) * Fork Rev. 3 to 4 * Update RGB LED positions * Adjust RGB positions * Enable more RGB modes * Update copyrights * Add license headers to keymaps * Use same type of license header Co-authored-by: Joel Challis * Fix I2C pins --------- Co-authored-by: Joel Challis --- .../keebio/sinc/keymaps/default/keymap.c | 3 + keyboards/keebio/sinc/keymaps/iso/keymap.c | 3 + keyboards/keebio/sinc/keymaps/via/keymap.c | 3 + keyboards/keebio/sinc/rev4/config.h | 72 ++ keyboards/keebio/sinc/rev4/halconf.h | 8 + keyboards/keebio/sinc/rev4/info.json | 1146 +++++++++++++++++ keyboards/keebio/sinc/rev4/mcuconf.h | 9 + keyboards/keebio/sinc/rev4/rules.mk | 1 + 8 files changed, 1245 insertions(+) create mode 100644 keyboards/keebio/sinc/rev4/config.h create mode 100644 keyboards/keebio/sinc/rev4/halconf.h create mode 100644 keyboards/keebio/sinc/rev4/info.json create mode 100644 keyboards/keebio/sinc/rev4/mcuconf.h create mode 100644 keyboards/keebio/sinc/rev4/rules.mk diff --git a/keyboards/keebio/sinc/keymaps/default/keymap.c b/keyboards/keebio/sinc/keymaps/default/keymap.c index 20c12a4a6e46..171b7a7d057a 100644 --- a/keyboards/keebio/sinc/keymaps/default/keymap.c +++ b/keyboards/keebio/sinc/keymaps/default/keymap.c @@ -1,3 +1,6 @@ +// Copyright 2023 Danny Nguyen (danny@keeb.io) +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { diff --git a/keyboards/keebio/sinc/keymaps/iso/keymap.c b/keyboards/keebio/sinc/keymaps/iso/keymap.c index f7ad1047bf26..f3eaaa5bca0c 100644 --- a/keyboards/keebio/sinc/keymaps/iso/keymap.c +++ b/keyboards/keebio/sinc/keymaps/iso/keymap.c @@ -1,3 +1,6 @@ +// Copyright 2023 Danny Nguyen (danny@keeb.io) +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { diff --git a/keyboards/keebio/sinc/keymaps/via/keymap.c b/keyboards/keebio/sinc/keymaps/via/keymap.c index 2a54d1aa5a3d..a1299ce112ba 100644 --- a/keyboards/keebio/sinc/keymaps/via/keymap.c +++ b/keyboards/keebio/sinc/keymaps/via/keymap.c @@ -1,3 +1,6 @@ +// Copyright 2023 Danny Nguyen (danny@keeb.io) +// SPDX-License-Identifier: GPL-2.0-or-later + #include QMK_KEYBOARD_H const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { diff --git a/keyboards/keebio/sinc/rev4/config.h b/keyboards/keebio/sinc/rev4/config.h new file mode 100644 index 000000000000..b6c5785f4cfa --- /dev/null +++ b/keyboards/keebio/sinc/rev4/config.h @@ -0,0 +1,72 @@ +// Copyright 2023 Danny Nguyen (danny@keeb.io) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define SPLIT_HAND_PIN GP4 +#define USB_VBUS_PIN GP14 +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_TX_PIN GP0 +#define SERIAL_USART_RX_PIN GP1 +#define SERIAL_USART_PIN_SWAP +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U +#define I2C_DRIVER I2CD1 +#define I2C1_SDA_PIN GP22 +#define I2C1_SCL_PIN GP23 + +// RGB Matrix +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_BAND_SAT +#define ENABLE_RGB_MATRIX_BAND_VAL +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +#define ENABLE_RGB_MATRIX_DUAL_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_BEACON +#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +#define ENABLE_RGB_MATRIX_RAINDROPS +#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +#define ENABLE_RGB_MATRIX_HUE_BREATHING +#define ENABLE_RGB_MATRIX_HUE_PENDULUM +#define ENABLE_RGB_MATRIX_HUE_WAVE +#define ENABLE_RGB_MATRIX_FRACTAL +#define ENABLE_RGB_MATRIX_PIXEL_RAIN +#define ENABLE_RGB_MATRIX_PIXEL_FLOW +#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 +#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS +#define RGB_MATRIX_LED_COUNT 117 +#define RGB_DISABLE_WHEN_USB_SUSPENDED +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_MATRIX_KEYPRESSES +#define SPLIT_TRANSPORT_MIRROR diff --git a/keyboards/keebio/sinc/rev4/halconf.h b/keyboards/keebio/sinc/rev4/halconf.h new file mode 100644 index 000000000000..64036dec35f9 --- /dev/null +++ b/keyboards/keebio/sinc/rev4/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2023 Danny Nguyen (danny@keeb.io) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next diff --git a/keyboards/keebio/sinc/rev4/info.json b/keyboards/keebio/sinc/rev4/info.json new file mode 100644 index 000000000000..f985f64e48fe --- /dev/null +++ b/keyboards/keebio/sinc/rev4/info.json @@ -0,0 +1,1146 @@ +{ + "keyboard_name": "Sinc Rev. 4", + "usb": { + "pid": "0x4267", + "device_version": "4.0.0" + }, + "processor": "RP2040", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "console": true, + "rgb_matrix": true + }, + "split": { + "enabled": true, + "encoder": { + "right": { + "rotary": [ + {"pin_a": "GP5", "pin_b": "GP6"} + ] + } + }, + "matrix_pins": { + "right": { + "cols": ["GP29", "GP28", "GP27", "GP7", "GP2", "GP3", "GP11", "GP12", "GP13"], + "rows": ["GP16", "GP19", "GP17", "GP9", "GP8", "GP26"] + } + } + }, + "matrix_pins": { + "cols": ["GP29", "GP28", "GP27", "GP7", "GP2", "GP3", "GP11", "GP12", "GP13"], + "rows": ["GP25", "GP19", "GP24", "GP17", "GP16", "GP26"] + }, + "encoder": { + "enabled": true, + "rotary": [ + {"pin_a": "GP21", "pin_b": "GP20"} + ] + }, + "ws2812": { + "pin": "GP18", + "driver": "vendor" + }, + "rgb_matrix": { + "driver": "WS2812", + "split_count": [58, 59], + "layout": [ + {"flags": 4, "matrix": [5, 2], "x": 30, "y": 0}, + {"flags": 2, "x": 42, "y": 6}, + {"flags": 4, "matrix": [5, 3], "x": 45, "y": 0}, + {"flags": 4, "matrix": [5, 4], "x": 58, "y": 0}, + {"flags": 2, "x": 67, "y": 6}, + {"flags": 4, "matrix": [5, 5], "x": 70, "y": 0}, + {"flags": 4, "matrix": [5, 6], "x": 82, "y": 0}, + {"flags": 4, "matrix": [5, 7], "x": 97, "y": 0}, + {"flags": 2, "x": 103, "y": 6}, + {"flags": 4, "matrix": [5, 8], "x": 109, "y": 0}, + + {"flags": 4, "matrix": [0, 8], "x": 103, "y": 15}, + {"flags": 4, "matrix": [0, 7], "x": 91, "y": 15}, + {"flags": 4, "matrix": [0, 6], "x": 79, "y": 15}, + {"flags": 4, "matrix": [0, 5], "x": 67, "y": 15}, + {"flags": 4, "matrix": [0, 4], "x": 54, "y": 15}, + {"flags": 4, "matrix": [0, 3], "x": 42, "y": 15}, + {"flags": 4, "matrix": [0, 2], "x": 30, "y": 15}, + + {"flags": 4, "matrix": [1, 2], "x": 33, "y": 27}, + {"flags": 4, "matrix": [1, 3], "x": 48, "y": 27}, + {"flags": 4, "matrix": [1, 4], "x": 61, "y": 27}, + {"flags": 4, "matrix": [1, 5], "x": 73, "y": 27}, + {"flags": 4, "matrix": [1, 6], "x": 85, "y": 27}, + {"flags": 4, "matrix": [1, 7], "x": 97, "y": 27}, + + {"flags": 4, "matrix": [2, 7], "x": 100, "y": 40}, + {"flags": 4, "matrix": [2, 6], "x": 88, "y": 40}, + {"flags": 4, "matrix": [2, 5], "x": 76, "y": 40}, + {"flags": 4, "matrix": [2, 4], "x": 64, "y": 40}, + {"flags": 4, "matrix": [2, 3], "x": 51, "y": 40}, + {"flags": 4, "matrix": [2, 2], "x": 35, "y": 40}, + + {"flags": 4, "matrix": [3, 2], "x": 38, "y": 52}, + {"flags": 4, "matrix": [3, 4], "x": 58, "y": 52}, + {"flags": 4, "matrix": [3, 5], "x": 70, "y": 52}, + {"flags": 4, "matrix": [3, 6], "x": 82, "y": 52}, + {"flags": 4, "matrix": [3, 7], "x": 94, "y": 52}, + {"flags": 2, "x": 100, "y": 55}, + {"flags": 4, "matrix": [3, 8], "x": 106, "y": 52}, + + {"flags": 4, "x": 107, "y": 64}, + {"flags": 4, "matrix": [4, 7], "x": 97, "y": 64}, + {"flags": 4, "matrix": [4, 6], "x": 85, "y": 64}, + {"flags": 4, "matrix": [4, 5], "x": 75, "y": 64}, + {"flags": 2, "x": 70, "y": 64}, + {"flags": 4, "matrix": [4, 4], "x": 62, "y": 64}, + {"flags": 4, "matrix": [4, 3], "x": 47, "y": 64}, + {"flags": 2, "x": 39, "y": 64}, + {"flags": 4, "matrix": [4, 2], "x": 32, "y": 64}, + + {"flags": 4, "matrix": [4, 1], "x": 12, "y": 64}, + {"flags": 2, "x": 6, "y": 64}, + {"flags": 4, "matrix": [4, 0], "x": 0, "y": 64}, + + {"flags": 4, "matrix": [3, 0], "x": 0, "y": 52}, + {"flags": 4, "matrix": [3, 1], "x": 12, "y": 52}, + {"flags": 4, "matrix": [2, 1], "x": 12, "y": 40}, + {"flags": 4, "matrix": [2, 0], "x": 0, "y": 40}, + {"flags": 4, "matrix": [1, 0], "x": 0, "y": 27}, + {"flags": 4, "matrix": [1, 1], "x": 12, "y": 27}, + {"flags": 4, "matrix": [0, 1], "x": 12, "y": 15}, + {"flags": 4, "matrix": [0, 0], "x": 0, "y": 15}, + {"flags": 4, "matrix": [5, 0], "x": 0, "y": 0}, + {"flags": 2, "x": 9, "y": 0}, + + {"flags": 2, "x": 224, "y": 6}, + {"flags": 4, "matrix": [11, 8], "x": 224, "y": 0}, + {"flags": 4, "matrix": [11, 7], "x": 212, "y": 0}, + {"flags": 4, "matrix": [11, 6], "x": 197, "y": 0}, + {"flags": 2, "x": 191, "y": 6}, + {"flags": 4, "matrix": [11, 5], "x": 185, "y": 0}, + {"flags": 4, "matrix": [11, 4], "x": 173, "y": 0}, + {"flags": 2, "x": 166, "y": 6}, + {"flags": 4, "matrix": [11, 3], "x": 160, "y": 0}, + {"flags": 4, "matrix": [11, 2], "x": 145, "y": 0}, + {"flags": 2, "x": 139, "y": 6}, + {"flags": 4, "matrix": [11, 1], "x": 133, "y": 0}, + + {"flags": 4, "matrix": [6, 0], "x": 127, "y": 15}, + {"flags": 4, "matrix": [6, 1], "x": 139, "y": 15}, + {"flags": 4, "matrix": [6, 2], "x": 151, "y": 15}, + {"flags": 4, "matrix": [6, 3], "x": 163, "y": 15}, + {"flags": 4, "matrix": [6, 4], "x": 176, "y": 15}, + {"flags": 4, "matrix": [6, 5], "x": 188, "y": 15}, + {"flags": 4, "matrix": [6, 6], "x": 200, "y": 15}, + {"flags": 4, "matrix": [6, 7], "x": 212, "y": 15}, + {"flags": 4, "matrix": [6, 8], "x": 224, "y": 15}, + + {"flags": 4, "matrix": [7, 8], "x": 224, "y": 27}, + {"flags": 4, "matrix": [7, 7], "x": 209, "y": 27}, + {"flags": 4, "matrix": [7, 6], "x": 194, "y": 27}, + {"flags": 4, "matrix": [7, 5], "x": 182, "y": 27}, + {"flags": 4, "matrix": [7, 4], "x": 170, "y": 27}, + {"flags": 4, "matrix": [7, 3], "x": 157, "y": 27}, + {"flags": 4, "matrix": [7, 2], "x": 145, "y": 27}, + {"flags": 4, "matrix": [7, 1], "x": 133, "y": 27}, + {"flags": 4, "matrix": [7, 0], "x": 121, "y": 27}, + + {"flags": 4, "matrix": [8, 0], "x": 124, "y": 40}, + {"flags": 4, "matrix": [8, 1], "x": 136, "y": 40}, + {"flags": 4, "matrix": [8, 2], "x": 148, "y": 40}, + {"flags": 4, "matrix": [8, 3], "x": 160, "y": 40}, + {"flags": 4, "matrix": [8, 4], "x": 173, "y": 40}, + {"flags": 4, "matrix": [8, 5], "x": 185, "y": 40}, + {"flags": 4, "matrix": [8, 7], "x": 204, "y": 40}, + {"flags": 4, "matrix": [8, 8], "x": 224, "y": 40}, + + {"flags": 4, "matrix": [9, 8], "x": 224, "y": 52}, + {"flags": 4, "matrix": [9, 7], "x": 212, "y": 52}, + {"flags": 4, "matrix": [9, 6], "x": 195, "y": 52}, + {"flags": 4, "matrix": [9, 4], "x": 179, "y": 52}, + {"flags": 4, "matrix": [9, 3], "x": 166, "y": 52}, + {"flags": 4, "matrix": [9, 2], "x": 154, "y": 52}, + {"flags": 4, "matrix": [9, 1], "x": 142, "y": 52}, + {"flags": 4, "matrix": [9, 0], "x": 130, "y": 52}, + + {"flags": 2, "x": 136, "y": 55}, + {"flags": 4, "matrix": [10, 0], "x": 132, "y": 64}, + {"flags": 4, "matrix": [10, 1], "x": 139, "y": 64}, + {"flags": 4, "x": 148, "y": 64}, + {"flags": 2, "x": 154, "y": 64}, + {"flags": 4, "matrix": [10, 2], "x": 163, "y": 64}, + {"flags": 4, "matrix": [10, 3], "x": 176, "y": 64}, + {"flags": 4, "matrix": [10, 4], "x": 188, "y": 64}, + {"flags": 2, "x": 194, "y": 64}, + {"flags": 4, "matrix": [10, 6], "x": 200, "y": 64}, + {"flags": 4, "matrix": [10, 7], "x": 212, "y": 64}, + {"flags": 4, "matrix": [10, 8], "x": 224, "y": 64}, + {"flags": 2, "x": 224, "y": 55} + ] + }, + "layouts": { + "LAYOUT_75": { + "layout": [ + {"matrix": [5, 2], "x": 0, "y": 0}, + {"matrix": [5, 3], "x": 1.25, "y": 0}, + {"matrix": [5, 4], "x": 2.25, "y": 0}, + {"matrix": [5, 5], "x": 3.25, "y": 0}, + {"matrix": [5, 6], "x": 4.25, "y": 0}, + {"matrix": [5, 7], "x": 5.5, "y": 0}, + {"matrix": [5, 8], "x": 6.5, "y": 0}, + + {"matrix": [11, 1], "x": 8.5, "y": 0}, + {"matrix": [11, 2], "x": 9.5, "y": 0}, + {"matrix": [11, 3], "x": 10.75, "y": 0}, + {"matrix": [11, 4], "x": 11.75, "y": 0}, + {"matrix": [11, 5], "x": 12.75, "y": 0}, + {"matrix": [11, 6], "x": 13.75, "y": 0}, + {"matrix": [11, 7], "x": 15, "y": 0}, + + {"matrix": [0, 2], "x": 0, "y": 1.25}, + {"matrix": [0, 3], "x": 1, "y": 1.25}, + {"matrix": [0, 4], "x": 2, "y": 1.25}, + {"matrix": [0, 5], "x": 3, "y": 1.25}, + {"matrix": [0, 6], "x": 4, "y": 1.25}, + {"matrix": [0, 7], "x": 5, "y": 1.25}, + {"matrix": [0, 8], "x": 6, "y": 1.25}, + + {"matrix": [6, 0], "x": 8, "y": 1.25}, + {"matrix": [6, 1], "x": 9, "y": 1.25}, + {"matrix": [6, 2], "x": 10, "y": 1.25}, + {"matrix": [6, 3], "x": 11, "y": 1.25}, + {"matrix": [6, 4], "x": 12, "y": 1.25}, + {"matrix": [6, 5], "x": 13, "y": 1.25}, + {"matrix": [6, 6], "x": 14, "y": 1.25}, + {"matrix": [6, 7], "x": 15, "y": 1.25}, + + {"matrix": [1, 2], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [1, 3], "x": 1.5, "y": 2.25}, + {"matrix": [1, 4], "x": 2.5, "y": 2.25}, + {"matrix": [1, 5], "x": 3.5, "y": 2.25}, + {"matrix": [1, 6], "x": 4.5, "y": 2.25}, + {"matrix": [1, 7], "x": 5.5, "y": 2.25}, + + {"matrix": [7, 0], "x": 7.5, "y": 2.25}, + {"matrix": [7, 1], "x": 8.5, "y": 2.25}, + {"matrix": [7, 2], "x": 9.5, "y": 2.25}, + {"matrix": [7, 3], "x": 10.5, "y": 2.25}, + {"matrix": [7, 4], "x": 11.5, "y": 2.25}, + {"matrix": [7, 5], "x": 12.5, "y": 2.25}, + {"matrix": [7, 6], "x": 13.5, "y": 2.25}, + {"matrix": [7, 7], "x": 14.5, "y": 2.25, "w": 1.5}, + + {"matrix": [2, 2], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [2, 3], "x": 1.75, "y": 3.25}, + {"matrix": [2, 4], "x": 2.75, "y": 3.25}, + {"matrix": [2, 5], "x": 3.75, "y": 3.25}, + {"matrix": [2, 6], "x": 4.75, "y": 3.25}, + {"matrix": [2, 7], "x": 5.75, "y": 3.25}, + + {"matrix": [8, 0], "x": 7.75, "y": 3.25}, + {"matrix": [8, 1], "x": 8.75, "y": 3.25}, + {"matrix": [8, 2], "x": 9.75, "y": 3.25}, + {"matrix": [8, 3], "x": 10.75, "y": 3.25}, + {"matrix": [8, 4], "x": 11.75, "y": 3.25}, + {"matrix": [8, 5], "x": 12.75, "y": 3.25}, + {"matrix": [8, 7], "x": 13.75, "y": 3.25, "w": 2.25}, + + {"matrix": [3, 2], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [3, 4], "x": 2.25, "y": 4.25}, + {"matrix": [3, 5], "x": 3.25, "y": 4.25}, + {"matrix": [3, 6], "x": 4.25, "y": 4.25}, + {"matrix": [3, 7], "x": 5.25, "y": 4.25}, + {"matrix": [3, 8], "x": 6.25, "y": 4.25}, + + {"matrix": [9, 0], "x": 8.25, "y": 4.25}, + {"matrix": [9, 1], "x": 9.25, "y": 4.25}, + {"matrix": [9, 2], "x": 10.25, "y": 4.25}, + {"matrix": [9, 3], "x": 11.25, "y": 4.25}, + {"matrix": [9, 4], "x": 12.25, "y": 4.25}, + {"matrix": [9, 6], "x": 13.25, "y": 4.25, "w": 1.75}, + {"matrix": [9, 7], "x": 15, "y": 4.25}, + + {"matrix": [4, 2], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [4, 3], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [4, 4], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [4, 5], "x": 3.75, "y": 5.25, "w": 1.25}, + {"matrix": [4, 6], "x": 5, "y": 5.25}, + {"matrix": [4, 7], "x": 6, "y": 5.25, "w": 1.25}, + + {"matrix": [10, 0], "x": 8.25, "y": 5.25, "w": 1.25}, + {"matrix": [10, 1], "x": 9.5, "y": 5.25, "w": 1.5}, + {"matrix": [10, 2], "x": 11, "y": 5.25}, + {"matrix": [10, 3], "x": 12, "y": 5.25}, + {"matrix": [10, 4], "x": 13, "y": 5.25}, + {"matrix": [10, 6], "x": 14, "y": 5.25}, + {"matrix": [10, 7], "x": 15, "y": 5.25} + ] + }, + "LAYOUT_75_iso": { + "layout": [ + {"matrix": [5, 2], "x": 0, "y": 0}, + {"matrix": [5, 3], "x": 1.25, "y": 0}, + {"matrix": [5, 4], "x": 2.25, "y": 0}, + {"matrix": [5, 5], "x": 3.25, "y": 0}, + {"matrix": [5, 6], "x": 4.25, "y": 0}, + {"matrix": [5, 7], "x": 5.5, "y": 0}, + {"matrix": [5, 8], "x": 6.5, "y": 0}, + + {"matrix": [11, 1], "x": 8.5, "y": 0}, + {"matrix": [11, 2], "x": 9.5, "y": 0}, + {"matrix": [11, 3], "x": 10.75, "y": 0}, + {"matrix": [11, 4], "x": 11.75, "y": 0}, + {"matrix": [11, 5], "x": 12.75, "y": 0}, + {"matrix": [11, 6], "x": 13.75, "y": 0}, + {"matrix": [11, 7], "x": 15, "y": 0}, + + {"matrix": [0, 2], "x": 0, "y": 1.25}, + {"matrix": [0, 3], "x": 1, "y": 1.25}, + {"matrix": [0, 4], "x": 2, "y": 1.25}, + {"matrix": [0, 5], "x": 3, "y": 1.25}, + {"matrix": [0, 6], "x": 4, "y": 1.25}, + {"matrix": [0, 7], "x": 5, "y": 1.25}, + {"matrix": [0, 8], "x": 6, "y": 1.25}, + + {"matrix": [6, 0], "x": 8, "y": 1.25}, + {"matrix": [6, 1], "x": 9, "y": 1.25}, + {"matrix": [6, 2], "x": 10, "y": 1.25}, + {"matrix": [6, 3], "x": 11, "y": 1.25}, + {"matrix": [6, 4], "x": 12, "y": 1.25}, + {"matrix": [6, 5], "x": 13, "y": 1.25}, + {"matrix": [6, 6], "x": 14, "y": 1.25}, + {"matrix": [6, 7], "x": 15, "y": 1.25}, + + {"matrix": [1, 2], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [1, 3], "x": 1.5, "y": 2.25}, + {"matrix": [1, 4], "x": 2.5, "y": 2.25}, + {"matrix": [1, 5], "x": 3.5, "y": 2.25}, + {"matrix": [1, 6], "x": 4.5, "y": 2.25}, + {"matrix": [1, 7], "x": 5.5, "y": 2.25}, + + {"matrix": [7, 0], "x": 7.5, "y": 2.25}, + {"matrix": [7, 1], "x": 8.5, "y": 2.25}, + {"matrix": [7, 2], "x": 9.5, "y": 2.25}, + {"matrix": [7, 3], "x": 10.5, "y": 2.25}, + {"matrix": [7, 4], "x": 11.5, "y": 2.25}, + {"matrix": [7, 5], "x": 12.5, "y": 2.25}, + {"matrix": [7, 6], "x": 13.5, "y": 2.25}, + + {"matrix": [2, 2], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [2, 3], "x": 1.75, "y": 3.25}, + {"matrix": [2, 4], "x": 2.75, "y": 3.25}, + {"matrix": [2, 5], "x": 3.75, "y": 3.25}, + {"matrix": [2, 6], "x": 4.75, "y": 3.25}, + {"matrix": [2, 7], "x": 5.75, "y": 3.25}, + + {"matrix": [8, 0], "x": 7.75, "y": 3.25}, + {"matrix": [8, 1], "x": 8.75, "y": 3.25}, + {"matrix": [8, 2], "x": 9.75, "y": 3.25}, + {"matrix": [8, 3], "x": 10.75, "y": 3.25}, + {"matrix": [8, 4], "x": 11.75, "y": 3.25}, + {"matrix": [8, 5], "x": 12.75, "y": 3.25}, + {"matrix": [8, 6], "x": 13.75, "y": 3.25}, + {"matrix": [7, 7], "x": 14.75, "y": 2.25, "w": 1.25, "h": 2}, + + {"matrix": [3, 2], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [3, 3], "x": 1.25, "y": 4.25}, + {"matrix": [3, 4], "x": 2.25, "y": 4.25}, + {"matrix": [3, 5], "x": 3.25, "y": 4.25}, + {"matrix": [3, 6], "x": 4.25, "y": 4.25}, + {"matrix": [3, 7], "x": 5.25, "y": 4.25}, + {"matrix": [3, 8], "x": 6.25, "y": 4.25}, + + {"matrix": [9, 0], "x": 8.25, "y": 4.25}, + {"matrix": [9, 1], "x": 9.25, "y": 4.25}, + {"matrix": [9, 2], "x": 10.25, "y": 4.25}, + {"matrix": [9, 3], "x": 11.25, "y": 4.25}, + {"matrix": [9, 4], "x": 12.25, "y": 4.25}, + {"matrix": [9, 6], "x": 13.25, "y": 4.25, "w": 1.75}, + {"matrix": [9, 7], "x": 15, "y": 4.25}, + + {"matrix": [4, 2], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [4, 3], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [4, 4], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [4, 5], "x": 3.75, "y": 5.25, "w": 1.25}, + {"matrix": [4, 6], "x": 5, "y": 5.25}, + {"matrix": [4, 7], "x": 6, "y": 5.25, "w": 1.25}, + + {"matrix": [10, 0], "x": 8.25, "y": 5.25, "w": 1.25}, + {"matrix": [10, 1], "x": 9.5, "y": 5.25, "w": 1.5}, + {"matrix": [10, 2], "x": 11, "y": 5.25}, + {"matrix": [10, 3], "x": 12, "y": 5.25}, + {"matrix": [10, 4], "x": 13, "y": 5.25}, + {"matrix": [10, 6], "x": 14, "y": 5.25}, + {"matrix": [10, 7], "x": 15, "y": 5.25} + ] + }, + "LAYOUT_75_iso_with_macro": { + "layout": [ + {"matrix": [5, 0], "x": 0, "y": 0}, + {"matrix": [5, 2], "x": 2.25, "y": 0}, + {"matrix": [5, 3], "x": 3.5, "y": 0}, + {"matrix": [5, 4], "x": 4.5, "y": 0}, + {"matrix": [5, 5], "x": 5.5, "y": 0}, + {"matrix": [5, 6], "x": 6.5, "y": 0}, + {"matrix": [5, 7], "x": 7.75, "y": 0}, + {"matrix": [5, 8], "x": 8.75, "y": 0}, + + {"matrix": [11, 1], "x": 10.75, "y": 0}, + {"matrix": [11, 2], "x": 11.75, "y": 0}, + {"matrix": [11, 3], "x": 13, "y": 0}, + {"matrix": [11, 4], "x": 14, "y": 0}, + {"matrix": [11, 5], "x": 15, "y": 0}, + {"matrix": [11, 6], "x": 16, "y": 0}, + {"matrix": [11, 7], "x": 17.25, "y": 0}, + + {"matrix": [0, 0], "x": 0, "y": 1.25}, + {"matrix": [0, 1], "x": 1, "y": 1.25}, + {"matrix": [0, 2], "x": 2.25, "y": 1.25}, + {"matrix": [0, 3], "x": 3.25, "y": 1.25}, + {"matrix": [0, 4], "x": 4.25, "y": 1.25}, + {"matrix": [0, 5], "x": 5.25, "y": 1.25}, + {"matrix": [0, 6], "x": 6.25, "y": 1.25}, + {"matrix": [0, 7], "x": 7.25, "y": 1.25}, + {"matrix": [0, 8], "x": 8.25, "y": 1.25}, + + {"matrix": [6, 0], "x": 10.25, "y": 1.25}, + {"matrix": [6, 1], "x": 11.25, "y": 1.25}, + {"matrix": [6, 2], "x": 12.25, "y": 1.25}, + {"matrix": [6, 3], "x": 13.25, "y": 1.25}, + {"matrix": [6, 4], "x": 14.25, "y": 1.25}, + {"matrix": [6, 5], "x": 15.25, "y": 1.25}, + {"matrix": [6, 6], "x": 16.25, "y": 1.25}, + {"matrix": [6, 7], "x": 17.25, "y": 1.25}, + + {"matrix": [1, 0], "x": 0, "y": 2.25}, + {"matrix": [1, 1], "x": 1, "y": 2.25}, + {"matrix": [1, 2], "x": 2.25, "y": 2.25, "w": 1.5}, + {"matrix": [1, 3], "x": 3.75, "y": 2.25}, + {"matrix": [1, 4], "x": 4.75, "y": 2.25}, + {"matrix": [1, 5], "x": 5.75, "y": 2.25}, + {"matrix": [1, 6], "x": 6.75, "y": 2.25}, + {"matrix": [1, 7], "x": 7.75, "y": 2.25}, + + {"matrix": [7, 0], "x": 9.75, "y": 2.25}, + {"matrix": [7, 1], "x": 10.75, "y": 2.25}, + {"matrix": [7, 2], "x": 11.75, "y": 2.25}, + {"matrix": [7, 3], "x": 12.75, "y": 2.25}, + {"matrix": [7, 4], "x": 13.75, "y": 2.25}, + {"matrix": [7, 5], "x": 14.75, "y": 2.25}, + {"matrix": [7, 6], "x": 15.75, "y": 2.25}, + + {"matrix": [2, 0], "x": 0, "y": 3.25}, + {"matrix": [2, 1], "x": 1, "y": 3.25}, + {"matrix": [2, 2], "x": 2.25, "y": 3.25, "w": 1.75}, + {"matrix": [2, 3], "x": 4, "y": 3.25}, + {"matrix": [2, 4], "x": 5, "y": 3.25}, + {"matrix": [2, 5], "x": 6, "y": 3.25}, + {"matrix": [2, 6], "x": 7, "y": 3.25}, + {"matrix": [2, 7], "x": 8, "y": 3.25}, + + {"matrix": [8, 0], "x": 10, "y": 3.25}, + {"matrix": [8, 1], "x": 11, "y": 3.25}, + {"matrix": [8, 2], "x": 12, "y": 3.25}, + {"matrix": [8, 3], "x": 13, "y": 3.25}, + {"matrix": [8, 4], "x": 14, "y": 3.25}, + {"matrix": [8, 5], "x": 15, "y": 3.25}, + {"matrix": [8, 6], "x": 16, "y": 3.25}, + {"matrix": [7, 7], "x": 17, "y": 2.25, "w": 1.25, "h": 2}, + + {"matrix": [3, 0], "x": 0, "y": 4.25}, + {"matrix": [3, 1], "x": 1, "y": 4.25}, + {"matrix": [3, 2], "x": 2.25, "y": 4.25, "w": 1.25}, + {"matrix": [3, 3], "x": 3.5, "y": 4.25}, + {"matrix": [3, 4], "x": 4.5, "y": 4.25}, + {"matrix": [3, 5], "x": 5.5, "y": 4.25}, + {"matrix": [3, 6], "x": 6.5, "y": 4.25}, + {"matrix": [3, 7], "x": 7.5, "y": 4.25}, + {"matrix": [3, 8], "x": 8.5, "y": 4.25}, + + {"matrix": [9, 0], "x": 10.5, "y": 4.25}, + {"matrix": [9, 1], "x": 11.5, "y": 4.25}, + {"matrix": [9, 2], "x": 12.5, "y": 4.25}, + {"matrix": [9, 3], "x": 13.5, "y": 4.25}, + {"matrix": [9, 4], "x": 14.5, "y": 4.25}, + {"matrix": [9, 6], "x": 15.5, "y": 4.25, "w": 1.75}, + {"matrix": [9, 7], "x": 17.25, "y": 4.25}, + + {"matrix": [4, 0], "x": 0, "y": 5.25}, + {"matrix": [4, 1], "x": 1, "y": 5.25}, + {"matrix": [4, 2], "x": 2.25, "y": 5.25, "w": 1.25}, + {"matrix": [4, 3], "x": 3.5, "y": 5.25, "w": 1.25}, + {"matrix": [4, 4], "x": 4.75, "y": 5.25, "w": 1.25}, + {"matrix": [4, 5], "x": 6, "y": 5.25, "w": 1.25}, + {"matrix": [4, 6], "x": 7.25, "y": 5.25}, + {"matrix": [4, 7], "x": 8.25, "y": 5.25, "w": 1.25}, + + {"matrix": [10, 0], "x": 10.5, "y": 5.25, "w": 1.25}, + {"matrix": [10, 1], "x": 11.75, "y": 5.25, "w": 1.5}, + {"matrix": [10, 2], "x": 13.25, "y": 5.25}, + {"matrix": [10, 3], "x": 14.25, "y": 5.25}, + {"matrix": [10, 4], "x": 15.25, "y": 5.25}, + {"matrix": [10, 6], "x": 16.25, "y": 5.25}, + {"matrix": [10, 7], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_75_with_macro": { + "layout": [ + {"matrix": [5, 0], "x": 0, "y": 0}, + {"matrix": [5, 2], "x": 2.25, "y": 0}, + {"matrix": [5, 3], "x": 3.5, "y": 0}, + {"matrix": [5, 4], "x": 4.5, "y": 0}, + {"matrix": [5, 5], "x": 5.5, "y": 0}, + {"matrix": [5, 6], "x": 6.5, "y": 0}, + {"matrix": [5, 7], "x": 7.75, "y": 0}, + {"matrix": [5, 8], "x": 8.75, "y": 0}, + + {"matrix": [11, 1], "x": 10.75, "y": 0}, + {"matrix": [11, 2], "x": 11.75, "y": 0}, + {"matrix": [11, 3], "x": 13, "y": 0}, + {"matrix": [11, 4], "x": 14, "y": 0}, + {"matrix": [11, 5], "x": 15, "y": 0}, + {"matrix": [11, 6], "x": 16, "y": 0}, + {"matrix": [11, 7], "x": 17.25, "y": 0}, + + {"matrix": [0, 0], "x": 0, "y": 1.25}, + {"matrix": [0, 1], "x": 1, "y": 1.25}, + {"matrix": [0, 2], "x": 2.25, "y": 1.25}, + {"matrix": [0, 3], "x": 3.25, "y": 1.25}, + {"matrix": [0, 4], "x": 4.25, "y": 1.25}, + {"matrix": [0, 5], "x": 5.25, "y": 1.25}, + {"matrix": [0, 6], "x": 6.25, "y": 1.25}, + {"matrix": [0, 7], "x": 7.25, "y": 1.25}, + {"matrix": [0, 8], "x": 8.25, "y": 1.25}, + + {"matrix": [6, 0], "x": 10.25, "y": 1.25}, + {"matrix": [6, 1], "x": 11.25, "y": 1.25}, + {"matrix": [6, 2], "x": 12.25, "y": 1.25}, + {"matrix": [6, 3], "x": 13.25, "y": 1.25}, + {"matrix": [6, 4], "x": 14.25, "y": 1.25}, + {"matrix": [6, 5], "x": 15.25, "y": 1.25}, + {"matrix": [6, 6], "x": 16.25, "y": 1.25}, + {"matrix": [6, 7], "x": 17.25, "y": 1.25}, + + {"matrix": [1, 0], "x": 0, "y": 2.25}, + {"matrix": [1, 1], "x": 1, "y": 2.25}, + {"matrix": [1, 2], "x": 2.25, "y": 2.25, "w": 1.5}, + {"matrix": [1, 3], "x": 3.75, "y": 2.25}, + {"matrix": [1, 4], "x": 4.75, "y": 2.25}, + {"matrix": [1, 5], "x": 5.75, "y": 2.25}, + {"matrix": [1, 6], "x": 6.75, "y": 2.25}, + {"matrix": [1, 7], "x": 7.75, "y": 2.25}, + + {"matrix": [7, 0], "x": 9.75, "y": 2.25}, + {"matrix": [7, 1], "x": 10.75, "y": 2.25}, + {"matrix": [7, 2], "x": 11.75, "y": 2.25}, + {"matrix": [7, 3], "x": 12.75, "y": 2.25}, + {"matrix": [7, 4], "x": 13.75, "y": 2.25}, + {"matrix": [7, 5], "x": 14.75, "y": 2.25}, + {"matrix": [7, 6], "x": 15.75, "y": 2.25}, + {"matrix": [7, 7], "x": 16.75, "y": 2.25, "w": 1.5}, + + {"matrix": [2, 0], "x": 0, "y": 3.25}, + {"matrix": [2, 1], "x": 1, "y": 3.25}, + {"matrix": [2, 2], "x": 2.25, "y": 3.25, "w": 1.75}, + {"matrix": [2, 3], "x": 4, "y": 3.25}, + {"matrix": [2, 4], "x": 5, "y": 3.25}, + {"matrix": [2, 5], "x": 6, "y": 3.25}, + {"matrix": [2, 6], "x": 7, "y": 3.25}, + {"matrix": [2, 7], "x": 8, "y": 3.25}, + + {"matrix": [8, 0], "x": 10, "y": 3.25}, + {"matrix": [8, 1], "x": 11, "y": 3.25}, + {"matrix": [8, 2], "x": 12, "y": 3.25}, + {"matrix": [8, 3], "x": 13, "y": 3.25}, + {"matrix": [8, 4], "x": 14, "y": 3.25}, + {"matrix": [8, 5], "x": 15, "y": 3.25}, + {"matrix": [8, 7], "x": 16, "y": 3.25, "w": 2.25}, + + {"matrix": [3, 0], "x": 0, "y": 4.25}, + {"matrix": [3, 1], "x": 1, "y": 4.25}, + {"matrix": [3, 2], "x": 2.25, "y": 4.25, "w": 2.25}, + {"matrix": [3, 4], "x": 4.5, "y": 4.25}, + {"matrix": [3, 5], "x": 5.5, "y": 4.25}, + {"matrix": [3, 6], "x": 6.5, "y": 4.25}, + {"matrix": [3, 7], "x": 7.5, "y": 4.25}, + {"matrix": [3, 8], "x": 8.5, "y": 4.25}, + + {"matrix": [9, 0], "x": 10.5, "y": 4.25}, + {"matrix": [9, 1], "x": 11.5, "y": 4.25}, + {"matrix": [9, 2], "x": 12.5, "y": 4.25}, + {"matrix": [9, 3], "x": 13.5, "y": 4.25}, + {"matrix": [9, 4], "x": 14.5, "y": 4.25}, + {"matrix": [9, 6], "x": 15.5, "y": 4.25, "w": 1.75}, + {"matrix": [9, 7], "x": 17.25, "y": 4.25}, + + {"matrix": [4, 0], "x": 0, "y": 5.25}, + {"matrix": [4, 1], "x": 1, "y": 5.25}, + {"matrix": [4, 2], "x": 2.25, "y": 5.25, "w": 1.25}, + {"matrix": [4, 3], "x": 3.5, "y": 5.25, "w": 1.25}, + {"matrix": [4, 4], "x": 4.75, "y": 5.25, "w": 1.25}, + {"matrix": [4, 5], "x": 6, "y": 5.25, "w": 1.25}, + {"matrix": [4, 6], "x": 7.25, "y": 5.25}, + {"matrix": [4, 7], "x": 8.25, "y": 5.25, "w": 1.25}, + + {"matrix": [10, 0], "x": 10.5, "y": 5.25, "w": 1.25}, + {"matrix": [10, 1], "x": 11.75, "y": 5.25, "w": 1.5}, + {"matrix": [10, 2], "x": 13.25, "y": 5.25}, + {"matrix": [10, 3], "x": 14.25, "y": 5.25}, + {"matrix": [10, 4], "x": 15.25, "y": 5.25}, + {"matrix": [10, 6], "x": 16.25, "y": 5.25}, + {"matrix": [10, 7], "x": 17.25, "y": 5.25} + ] + }, + "LAYOUT_80": { + "layout": [ + {"matrix": [5, 2], "x": 0, "y": 0}, + {"matrix": [5, 3], "x": 1.25, "y": 0}, + {"matrix": [5, 4], "x": 2.25, "y": 0}, + {"matrix": [5, 5], "x": 3.25, "y": 0}, + {"matrix": [5, 6], "x": 4.25, "y": 0}, + {"matrix": [5, 7], "x": 5.5, "y": 0}, + {"matrix": [5, 8], "x": 6.5, "y": 0}, + + {"matrix": [11, 1], "x": 8.5, "y": 0}, + {"matrix": [11, 2], "x": 9.5, "y": 0}, + {"matrix": [11, 3], "x": 10.75, "y": 0}, + {"matrix": [11, 4], "x": 11.75, "y": 0}, + {"matrix": [11, 5], "x": 12.75, "y": 0}, + {"matrix": [11, 6], "x": 13.75, "y": 0}, + {"matrix": [11, 7], "x": 15, "y": 0}, + {"matrix": [11, 8], "x": 16, "y": 0}, + + {"matrix": [0, 2], "x": 0, "y": 1.25}, + {"matrix": [0, 3], "x": 1, "y": 1.25}, + {"matrix": [0, 4], "x": 2, "y": 1.25}, + {"matrix": [0, 5], "x": 3, "y": 1.25}, + {"matrix": [0, 6], "x": 4, "y": 1.25}, + {"matrix": [0, 7], "x": 5, "y": 1.25}, + {"matrix": [0, 8], "x": 6, "y": 1.25}, + + {"matrix": [6, 0], "x": 8, "y": 1.25}, + {"matrix": [6, 1], "x": 9, "y": 1.25}, + {"matrix": [6, 2], "x": 10, "y": 1.25}, + {"matrix": [6, 3], "x": 11, "y": 1.25}, + {"matrix": [6, 4], "x": 12, "y": 1.25}, + {"matrix": [6, 5], "x": 13, "y": 1.25}, + {"matrix": [6, 6], "x": 14, "y": 1.25}, + {"matrix": [6, 7], "x": 15, "y": 1.25}, + {"matrix": [6, 8], "x": 16, "y": 1.25}, + + {"matrix": [1, 2], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [1, 3], "x": 1.5, "y": 2.25}, + {"matrix": [1, 4], "x": 2.5, "y": 2.25}, + {"matrix": [1, 5], "x": 3.5, "y": 2.25}, + {"matrix": [1, 6], "x": 4.5, "y": 2.25}, + {"matrix": [1, 7], "x": 5.5, "y": 2.25}, + + {"matrix": [7, 0], "x": 7.5, "y": 2.25}, + {"matrix": [7, 1], "x": 8.5, "y": 2.25}, + {"matrix": [7, 2], "x": 9.5, "y": 2.25}, + {"matrix": [7, 3], "x": 10.5, "y": 2.25}, + {"matrix": [7, 4], "x": 11.5, "y": 2.25}, + {"matrix": [7, 5], "x": 12.5, "y": 2.25}, + {"matrix": [7, 6], "x": 13.5, "y": 2.25}, + {"matrix": [7, 7], "x": 14.5, "y": 2.25, "w": 1.5}, + {"matrix": [7, 8], "x": 16, "y": 2.25}, + + {"matrix": [2, 2], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [2, 3], "x": 1.75, "y": 3.25}, + {"matrix": [2, 4], "x": 2.75, "y": 3.25}, + {"matrix": [2, 5], "x": 3.75, "y": 3.25}, + {"matrix": [2, 6], "x": 4.75, "y": 3.25}, + {"matrix": [2, 7], "x": 5.75, "y": 3.25}, + + {"matrix": [8, 0], "x": 7.75, "y": 3.25}, + {"matrix": [8, 1], "x": 8.75, "y": 3.25}, + {"matrix": [8, 2], "x": 9.75, "y": 3.25}, + {"matrix": [8, 3], "x": 10.75, "y": 3.25}, + {"matrix": [8, 4], "x": 11.75, "y": 3.25}, + {"matrix": [8, 5], "x": 12.75, "y": 3.25}, + {"matrix": [8, 7], "x": 13.75, "y": 3.25, "w": 2.25}, + {"matrix": [8, 8], "x": 16, "y": 3.25}, + + {"matrix": [3, 2], "x": 0, "y": 4.25, "w": 2.25}, + {"matrix": [3, 4], "x": 2.25, "y": 4.25}, + {"matrix": [3, 5], "x": 3.25, "y": 4.25}, + {"matrix": [3, 6], "x": 4.25, "y": 4.25}, + {"matrix": [3, 7], "x": 5.25, "y": 4.25}, + {"matrix": [3, 8], "x": 6.25, "y": 4.25}, + + {"matrix": [9, 0], "x": 8.25, "y": 4.25}, + {"matrix": [9, 1], "x": 9.25, "y": 4.25}, + {"matrix": [9, 2], "x": 10.25, "y": 4.25}, + {"matrix": [9, 3], "x": 11.25, "y": 4.25}, + {"matrix": [9, 4], "x": 12.25, "y": 4.25}, + {"matrix": [9, 6], "x": 13.25, "y": 4.25, "w": 1.75}, + {"matrix": [9, 7], "x": 15, "y": 4.25}, + {"matrix": [9, 8], "x": 16, "y": 4.25}, + + {"matrix": [4, 2], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [4, 3], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [4, 4], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [4, 5], "x": 3.75, "y": 5.25, "w": 1.25}, + {"matrix": [4, 6], "x": 5, "y": 5.25}, + {"matrix": [4, 7], "x": 6, "y": 5.25, "w": 1.25}, + + {"matrix": [10, 0], "x": 8.25, "y": 5.25, "w": 1.25}, + {"matrix": [10, 1], "x": 9.5, "y": 5.25, "w": 1.5}, + {"matrix": [10, 2], "x": 11, "y": 5.25}, + {"matrix": [10, 3], "x": 12, "y": 5.25}, + {"matrix": [10, 4], "x": 13, "y": 5.25}, + {"matrix": [10, 6], "x": 14, "y": 5.25}, + {"matrix": [10, 7], "x": 15, "y": 5.25}, + {"matrix": [10, 8], "x": 16, "y": 5.25} + ] + }, + "LAYOUT_80_iso": { + "layout": [ + {"matrix": [5, 2], "x": 0, "y": 0}, + {"matrix": [5, 3], "x": 1.25, "y": 0}, + {"matrix": [5, 4], "x": 2.25, "y": 0}, + {"matrix": [5, 5], "x": 3.25, "y": 0}, + {"matrix": [5, 6], "x": 4.25, "y": 0}, + {"matrix": [5, 7], "x": 5.5, "y": 0}, + {"matrix": [5, 8], "x": 6.5, "y": 0}, + + {"matrix": [11, 1], "x": 8.5, "y": 0}, + {"matrix": [11, 2], "x": 9.5, "y": 0}, + {"matrix": [11, 3], "x": 10.75, "y": 0}, + {"matrix": [11, 4], "x": 11.75, "y": 0}, + {"matrix": [11, 5], "x": 12.75, "y": 0}, + {"matrix": [11, 6], "x": 13.75, "y": 0}, + {"matrix": [11, 7], "x": 15, "y": 0}, + {"matrix": [11, 8], "x": 16, "y": 0}, + + {"matrix": [0, 2], "x": 0, "y": 1.25}, + {"matrix": [0, 3], "x": 1, "y": 1.25}, + {"matrix": [0, 4], "x": 2, "y": 1.25}, + {"matrix": [0, 5], "x": 3, "y": 1.25}, + {"matrix": [0, 6], "x": 4, "y": 1.25}, + {"matrix": [0, 7], "x": 5, "y": 1.25}, + {"matrix": [0, 8], "x": 6, "y": 1.25}, + + {"matrix": [6, 0], "x": 8, "y": 1.25}, + {"matrix": [6, 1], "x": 9, "y": 1.25}, + {"matrix": [6, 2], "x": 10, "y": 1.25}, + {"matrix": [6, 3], "x": 11, "y": 1.25}, + {"matrix": [6, 4], "x": 12, "y": 1.25}, + {"matrix": [6, 5], "x": 13, "y": 1.25}, + {"matrix": [6, 6], "x": 14, "y": 1.25}, + {"matrix": [6, 7], "x": 15, "y": 1.25}, + {"matrix": [6, 8], "x": 16, "y": 1.25}, + + {"matrix": [1, 2], "x": 0, "y": 2.25, "w": 1.5}, + {"matrix": [1, 3], "x": 1.5, "y": 2.25}, + {"matrix": [1, 4], "x": 2.5, "y": 2.25}, + {"matrix": [1, 5], "x": 3.5, "y": 2.25}, + {"matrix": [1, 6], "x": 4.5, "y": 2.25}, + {"matrix": [1, 7], "x": 5.5, "y": 2.25}, + + {"matrix": [7, 0], "x": 7.5, "y": 2.25}, + {"matrix": [7, 1], "x": 8.5, "y": 2.25}, + {"matrix": [7, 2], "x": 9.5, "y": 2.25}, + {"matrix": [7, 3], "x": 10.5, "y": 2.25}, + {"matrix": [7, 4], "x": 11.5, "y": 2.25}, + {"matrix": [7, 5], "x": 12.5, "y": 2.25}, + {"matrix": [7, 6], "x": 13.5, "y": 2.25}, + {"matrix": [7, 8], "x": 16, "y": 2.25}, + + {"matrix": [2, 2], "x": 0, "y": 3.25, "w": 1.75}, + {"matrix": [2, 3], "x": 1.75, "y": 3.25}, + {"matrix": [2, 4], "x": 2.75, "y": 3.25}, + {"matrix": [2, 5], "x": 3.75, "y": 3.25}, + {"matrix": [2, 6], "x": 4.75, "y": 3.25}, + {"matrix": [2, 7], "x": 5.75, "y": 3.25}, + + {"matrix": [8, 0], "x": 7.75, "y": 3.25}, + {"matrix": [8, 1], "x": 8.75, "y": 3.25}, + {"matrix": [8, 2], "x": 9.75, "y": 3.25}, + {"matrix": [8, 3], "x": 10.75, "y": 3.25}, + {"matrix": [8, 4], "x": 11.75, "y": 3.25}, + {"matrix": [8, 5], "x": 12.75, "y": 3.25}, + {"matrix": [8, 6], "x": 13.75, "y": 3.25}, + {"matrix": [7, 7], "x": 14.75, "y": 2.25, "w": 1.25, "h": 2}, + {"matrix": [8, 8], "x": 16, "y": 3.25}, + + {"matrix": [3, 2], "x": 0, "y": 4.25, "w": 1.25}, + {"matrix": [3, 3], "x": 1.25, "y": 4.25}, + {"matrix": [3, 4], "x": 2.25, "y": 4.25}, + {"matrix": [3, 5], "x": 3.25, "y": 4.25}, + {"matrix": [3, 6], "x": 4.25, "y": 4.25}, + {"matrix": [3, 7], "x": 5.25, "y": 4.25}, + {"matrix": [3, 8], "x": 6.25, "y": 4.25}, + + {"matrix": [9, 0], "x": 8.25, "y": 4.25}, + {"matrix": [9, 1], "x": 9.25, "y": 4.25}, + {"matrix": [9, 2], "x": 10.25, "y": 4.25}, + {"matrix": [9, 3], "x": 11.25, "y": 4.25}, + {"matrix": [9, 4], "x": 12.25, "y": 4.25}, + {"matrix": [9, 6], "x": 13.25, "y": 4.25, "w": 1.75}, + {"matrix": [9, 7], "x": 15, "y": 4.25}, + {"matrix": [9, 8], "x": 16, "y": 4.25}, + + {"matrix": [4, 2], "x": 0, "y": 5.25, "w": 1.25}, + {"matrix": [4, 3], "x": 1.25, "y": 5.25, "w": 1.25}, + {"matrix": [4, 4], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [4, 5], "x": 3.75, "y": 5.25, "w": 1.25}, + {"matrix": [4, 6], "x": 5, "y": 5.25}, + {"matrix": [4, 7], "x": 6, "y": 5.25, "w": 1.25}, + + {"matrix": [10, 0], "x": 8.25, "y": 5.25, "w": 1.25}, + {"matrix": [10, 1], "x": 9.5, "y": 5.25, "w": 1.5}, + {"matrix": [10, 2], "x": 11, "y": 5.25}, + {"matrix": [10, 3], "x": 12, "y": 5.25}, + {"matrix": [10, 4], "x": 13, "y": 5.25}, + {"matrix": [10, 6], "x": 14, "y": 5.25}, + {"matrix": [10, 7], "x": 15, "y": 5.25}, + {"matrix": [10, 8], "x": 16, "y": 5.25} + ] + }, + "LAYOUT_80_iso_with_macro": { + "layout": [ + {"matrix": [5, 0], "x": 0, "y": 0}, + {"matrix": [5, 2], "x": 2.25, "y": 0}, + {"matrix": [5, 3], "x": 3.5, "y": 0}, + {"matrix": [5, 4], "x": 4.5, "y": 0}, + {"matrix": [5, 5], "x": 5.5, "y": 0}, + {"matrix": [5, 6], "x": 6.5, "y": 0}, + {"matrix": [5, 7], "x": 7.75, "y": 0}, + {"matrix": [5, 8], "x": 8.75, "y": 0}, + + {"matrix": [11, 1], "x": 10.75, "y": 0}, + {"matrix": [11, 2], "x": 11.75, "y": 0}, + {"matrix": [11, 3], "x": 13, "y": 0}, + {"matrix": [11, 4], "x": 14, "y": 0}, + {"matrix": [11, 5], "x": 15, "y": 0}, + {"matrix": [11, 6], "x": 16, "y": 0}, + {"matrix": [11, 7], "x": 17.25, "y": 0}, + {"matrix": [11, 8], "x": 18.25, "y": 0}, + + {"matrix": [0, 0], "x": 0, "y": 1.25}, + {"matrix": [0, 1], "x": 1, "y": 1.25}, + {"matrix": [0, 2], "x": 2.25, "y": 1.25}, + {"matrix": [0, 3], "x": 3.25, "y": 1.25}, + {"matrix": [0, 4], "x": 4.25, "y": 1.25}, + {"matrix": [0, 5], "x": 5.25, "y": 1.25}, + {"matrix": [0, 6], "x": 6.25, "y": 1.25}, + {"matrix": [0, 7], "x": 7.25, "y": 1.25}, + {"matrix": [0, 8], "x": 8.25, "y": 1.25}, + + {"matrix": [6, 0], "x": 10.25, "y": 1.25}, + {"matrix": [6, 1], "x": 11.25, "y": 1.25}, + {"matrix": [6, 2], "x": 12.25, "y": 1.25}, + {"matrix": [6, 3], "x": 13.25, "y": 1.25}, + {"matrix": [6, 4], "x": 14.25, "y": 1.25}, + {"matrix": [6, 5], "x": 15.25, "y": 1.25}, + {"matrix": [6, 6], "x": 16.25, "y": 1.25}, + {"matrix": [6, 7], "x": 17.25, "y": 1.25}, + {"matrix": [6, 8], "x": 18.25, "y": 1.25}, + + {"matrix": [1, 0], "x": 0, "y": 2.25}, + {"matrix": [1, 1], "x": 1, "y": 2.25}, + {"matrix": [1, 2], "x": 2.25, "y": 2.25, "w": 1.5}, + {"matrix": [1, 3], "x": 3.75, "y": 2.25}, + {"matrix": [1, 4], "x": 4.75, "y": 2.25}, + {"matrix": [1, 5], "x": 5.75, "y": 2.25}, + {"matrix": [1, 6], "x": 6.75, "y": 2.25}, + {"matrix": [1, 7], "x": 7.75, "y": 2.25}, + + {"matrix": [7, 0], "x": 9.75, "y": 2.25}, + {"matrix": [7, 1], "x": 10.75, "y": 2.25}, + {"matrix": [7, 2], "x": 11.75, "y": 2.25}, + {"matrix": [7, 3], "x": 12.75, "y": 2.25}, + {"matrix": [7, 4], "x": 13.75, "y": 2.25}, + {"matrix": [7, 5], "x": 14.75, "y": 2.25}, + {"matrix": [7, 6], "x": 15.75, "y": 2.25}, + {"matrix": [7, 8], "x": 18.25, "y": 2.25}, + + {"matrix": [2, 0], "x": 0, "y": 3.25}, + {"matrix": [2, 1], "x": 1, "y": 3.25}, + {"matrix": [2, 2], "x": 2.25, "y": 3.25, "w": 1.75}, + {"matrix": [2, 3], "x": 4, "y": 3.25}, + {"matrix": [2, 4], "x": 5, "y": 3.25}, + {"matrix": [2, 5], "x": 6, "y": 3.25}, + {"matrix": [2, 6], "x": 7, "y": 3.25}, + {"matrix": [2, 7], "x": 8, "y": 3.25}, + + {"matrix": [8, 0], "x": 10, "y": 3.25}, + {"matrix": [8, 1], "x": 11, "y": 3.25}, + {"matrix": [8, 2], "x": 12, "y": 3.25}, + {"matrix": [8, 3], "x": 13, "y": 3.25}, + {"matrix": [8, 4], "x": 14, "y": 3.25}, + {"matrix": [8, 5], "x": 15, "y": 3.25}, + {"matrix": [8, 6], "x": 16, "y": 3.25}, + {"matrix": [7, 7], "x": 17, "y": 2.25, "w": 1.25, "h": 2}, + {"matrix": [8, 8], "x": 18.25, "y": 3.25}, + + {"matrix": [3, 0], "x": 0, "y": 4.25}, + {"matrix": [3, 1], "x": 1, "y": 4.25}, + {"matrix": [3, 2], "x": 2.25, "y": 4.25, "w": 1.25}, + {"matrix": [3, 3], "x": 3.5, "y": 4.25}, + {"matrix": [3, 4], "x": 4.5, "y": 4.25}, + {"matrix": [3, 5], "x": 5.5, "y": 4.25}, + {"matrix": [3, 6], "x": 6.5, "y": 4.25}, + {"matrix": [3, 7], "x": 7.5, "y": 4.25}, + {"matrix": [3, 8], "x": 8.5, "y": 4.25}, + + {"matrix": [9, 0], "x": 10.5, "y": 4.25}, + {"matrix": [9, 1], "x": 11.5, "y": 4.25}, + {"matrix": [9, 2], "x": 12.5, "y": 4.25}, + {"matrix": [9, 3], "x": 13.5, "y": 4.25}, + {"matrix": [9, 4], "x": 14.5, "y": 4.25}, + {"matrix": [9, 6], "x": 15.5, "y": 4.25, "w": 1.75}, + {"matrix": [9, 7], "x": 17.25, "y": 4.25}, + {"matrix": [9, 8], "x": 18.25, "y": 4.25}, + + {"matrix": [4, 0], "x": 0, "y": 5.25}, + {"matrix": [4, 1], "x": 1, "y": 5.25}, + {"matrix": [4, 2], "x": 2.25, "y": 5.25, "w": 1.25}, + {"matrix": [4, 3], "x": 3.5, "y": 5.25, "w": 1.25}, + {"matrix": [4, 4], "x": 4.75, "y": 5.25, "w": 1.25}, + {"matrix": [4, 5], "x": 6, "y": 5.25, "w": 1.25}, + {"matrix": [4, 6], "x": 7.25, "y": 5.25}, + {"matrix": [4, 7], "x": 8.25, "y": 5.25, "w": 1.25}, + + {"matrix": [10, 0], "x": 10.5, "y": 5.25, "w": 1.25}, + {"matrix": [10, 1], "x": 11.75, "y": 5.25, "w": 1.5}, + {"matrix": [10, 2], "x": 13.25, "y": 5.25}, + {"matrix": [10, 3], "x": 14.25, "y": 5.25}, + {"matrix": [10, 4], "x": 15.25, "y": 5.25}, + {"matrix": [10, 6], "x": 16.25, "y": 5.25}, + {"matrix": [10, 7], "x": 17.25, "y": 5.25}, + {"matrix": [10, 8], "x": 18.25, "y": 5.25} + ] + }, + "LAYOUT_80_with_macro": { + "layout": [ + {"matrix": [5, 0], "x": 0, "y": 0}, + {"matrix": [5, 2], "x": 2.25, "y": 0}, + {"matrix": [5, 3], "x": 3.5, "y": 0}, + {"matrix": [5, 4], "x": 4.5, "y": 0}, + {"matrix": [5, 5], "x": 5.5, "y": 0}, + {"matrix": [5, 6], "x": 6.5, "y": 0}, + {"matrix": [5, 7], "x": 7.75, "y": 0}, + {"matrix": [5, 8], "x": 8.75, "y": 0}, + + {"matrix": [11, 1], "x": 10.75, "y": 0}, + {"matrix": [11, 2], "x": 11.75, "y": 0}, + {"matrix": [11, 3], "x": 13, "y": 0}, + {"matrix": [11, 4], "x": 14, "y": 0}, + {"matrix": [11, 5], "x": 15, "y": 0}, + {"matrix": [11, 6], "x": 16, "y": 0}, + {"matrix": [11, 7], "x": 17.25, "y": 0}, + {"matrix": [11, 8], "x": 18.25, "y": 0}, + + {"matrix": [0, 0], "x": 0, "y": 1.25}, + {"matrix": [0, 1], "x": 1, "y": 1.25}, + {"matrix": [0, 2], "x": 2.25, "y": 1.25}, + {"matrix": [0, 3], "x": 3.25, "y": 1.25}, + {"matrix": [0, 4], "x": 4.25, "y": 1.25}, + {"matrix": [0, 5], "x": 5.25, "y": 1.25}, + {"matrix": [0, 6], "x": 6.25, "y": 1.25}, + {"matrix": [0, 7], "x": 7.25, "y": 1.25}, + {"matrix": [0, 8], "x": 8.25, "y": 1.25}, + + {"matrix": [6, 0], "x": 10.25, "y": 1.25}, + {"matrix": [6, 1], "x": 11.25, "y": 1.25}, + {"matrix": [6, 2], "x": 12.25, "y": 1.25}, + {"matrix": [6, 3], "x": 13.25, "y": 1.25}, + {"matrix": [6, 4], "x": 14.25, "y": 1.25}, + {"matrix": [6, 5], "x": 15.25, "y": 1.25}, + {"matrix": [6, 6], "x": 16.25, "y": 1.25}, + {"matrix": [6, 7], "x": 17.25, "y": 1.25}, + {"matrix": [6, 8], "x": 18.25, "y": 1.25}, + + {"matrix": [1, 0], "x": 0, "y": 2.25}, + {"matrix": [1, 1], "x": 1, "y": 2.25}, + {"matrix": [1, 2], "x": 2.25, "y": 2.25, "w": 1.5}, + {"matrix": [1, 3], "x": 3.75, "y": 2.25}, + {"matrix": [1, 4], "x": 4.75, "y": 2.25}, + {"matrix": [1, 5], "x": 5.75, "y": 2.25}, + {"matrix": [1, 6], "x": 6.75, "y": 2.25}, + {"matrix": [1, 7], "x": 7.75, "y": 2.25}, + + {"matrix": [7, 0], "x": 9.75, "y": 2.25}, + {"matrix": [7, 1], "x": 10.75, "y": 2.25}, + {"matrix": [7, 2], "x": 11.75, "y": 2.25}, + {"matrix": [7, 3], "x": 12.75, "y": 2.25}, + {"matrix": [7, 4], "x": 13.75, "y": 2.25}, + {"matrix": [7, 5], "x": 14.75, "y": 2.25}, + {"matrix": [7, 6], "x": 15.75, "y": 2.25}, + {"matrix": [7, 7], "x": 16.75, "y": 2.25, "w": 1.5}, + {"matrix": [7, 8], "x": 18.25, "y": 2.25}, + + {"matrix": [2, 0], "x": 0, "y": 3.25}, + {"matrix": [2, 1], "x": 1, "y": 3.25}, + {"matrix": [2, 2], "x": 2.25, "y": 3.25, "w": 1.75}, + {"matrix": [2, 3], "x": 4, "y": 3.25}, + {"matrix": [2, 4], "x": 5, "y": 3.25}, + {"matrix": [2, 5], "x": 6, "y": 3.25}, + {"matrix": [2, 6], "x": 7, "y": 3.25}, + {"matrix": [2, 7], "x": 8, "y": 3.25}, + + {"matrix": [8, 0], "x": 10, "y": 3.25}, + {"matrix": [8, 1], "x": 11, "y": 3.25}, + {"matrix": [8, 2], "x": 12, "y": 3.25}, + {"matrix": [8, 3], "x": 13, "y": 3.25}, + {"matrix": [8, 4], "x": 14, "y": 3.25}, + {"matrix": [8, 5], "x": 15, "y": 3.25}, + {"matrix": [8, 7], "x": 16, "y": 3.25, "w": 2.25}, + {"matrix": [8, 8], "x": 18.25, "y": 3.25}, + + {"matrix": [3, 0], "x": 0, "y": 4.25}, + {"matrix": [3, 1], "x": 1, "y": 4.25}, + {"matrix": [3, 2], "x": 2.25, "y": 4.25, "w": 2.25}, + {"matrix": [3, 4], "x": 4.5, "y": 4.25}, + {"matrix": [3, 5], "x": 5.5, "y": 4.25}, + {"matrix": [3, 6], "x": 6.5, "y": 4.25}, + {"matrix": [3, 7], "x": 7.5, "y": 4.25}, + {"matrix": [3, 8], "x": 8.5, "y": 4.25}, + + {"matrix": [9, 0], "x": 10.5, "y": 4.25}, + {"matrix": [9, 1], "x": 11.5, "y": 4.25}, + {"matrix": [9, 2], "x": 12.5, "y": 4.25}, + {"matrix": [9, 3], "x": 13.5, "y": 4.25}, + {"matrix": [9, 4], "x": 14.5, "y": 4.25}, + {"matrix": [9, 6], "x": 15.5, "y": 4.25, "w": 1.75}, + {"matrix": [9, 7], "x": 17.25, "y": 4.25}, + {"matrix": [9, 8], "x": 18.25, "y": 4.25}, + + {"matrix": [4, 0], "x": 0, "y": 5.25}, + {"matrix": [4, 1], "x": 1, "y": 5.25}, + {"matrix": [4, 2], "x": 2.25, "y": 5.25, "w": 1.25}, + {"matrix": [4, 3], "x": 3.5, "y": 5.25, "w": 1.25}, + {"matrix": [4, 4], "x": 4.75, "y": 5.25, "w": 1.25}, + {"matrix": [4, 5], "x": 6, "y": 5.25, "w": 1.25}, + {"matrix": [4, 6], "x": 7.25, "y": 5.25}, + {"matrix": [4, 7], "x": 8.25, "y": 5.25, "w": 1.25}, + + {"matrix": [10, 0], "x": 10.5, "y": 5.25, "w": 1.25}, + {"matrix": [10, 1], "x": 11.75, "y": 5.25, "w": 1.5}, + {"matrix": [10, 2], "x": 13.25, "y": 5.25}, + {"matrix": [10, 3], "x": 14.25, "y": 5.25}, + {"matrix": [10, 4], "x": 15.25, "y": 5.25}, + {"matrix": [10, 6], "x": 16.25, "y": 5.25}, + {"matrix": [10, 7], "x": 17.25, "y": 5.25}, + {"matrix": [10, 8], "x": 18.25, "y": 5.25} + ] + }, + "LAYOUT_all": { + "layout": [ + {"matrix": [5, 0], "x": 0, "y": 0}, + {"matrix": [5, 2], "x": 2.25, "y": 0}, + {"matrix": [5, 3], "x": 3.5, "y": 0}, + {"matrix": [5, 4], "x": 4.5, "y": 0}, + {"matrix": [5, 5], "x": 5.5, "y": 0}, + {"matrix": [5, 6], "x": 6.5, "y": 0}, + {"matrix": [5, 7], "x": 7.75, "y": 0}, + {"matrix": [5, 8], "x": 8.75, "y": 0}, + + {"matrix": [11, 1], "x": 10.75, "y": 0}, + {"matrix": [11, 2], "x": 11.75, "y": 0}, + {"matrix": [11, 3], "x": 13, "y": 0}, + {"matrix": [11, 4], "x": 14, "y": 0}, + {"matrix": [11, 5], "x": 15, "y": 0}, + {"matrix": [11, 6], "x": 16, "y": 0}, + {"matrix": [11, 7], "x": 17.25, "y": 0}, + {"matrix": [11, 8], "x": 18.25, "y": 0}, + + {"matrix": [0, 0], "x": 0, "y": 1.25}, + {"matrix": [0, 1], "x": 1, "y": 1.25}, + {"matrix": [0, 2], "x": 2.25, "y": 1.25}, + {"matrix": [0, 3], "x": 3.25, "y": 1.25}, + {"matrix": [0, 4], "x": 4.25, "y": 1.25}, + {"matrix": [0, 5], "x": 5.25, "y": 1.25}, + {"matrix": [0, 6], "x": 6.25, "y": 1.25}, + {"matrix": [0, 7], "x": 7.25, "y": 1.25}, + {"matrix": [0, 8], "x": 8.25, "y": 1.25}, + + {"matrix": [6, 0], "x": 10.25, "y": 1.25}, + {"matrix": [6, 1], "x": 11.25, "y": 1.25}, + {"matrix": [6, 2], "x": 12.25, "y": 1.25}, + {"matrix": [6, 3], "x": 13.25, "y": 1.25}, + {"matrix": [6, 4], "x": 14.25, "y": 1.25}, + {"matrix": [6, 5], "x": 15.25, "y": 1.25}, + {"matrix": [6, 6], "x": 16.25, "y": 1.25}, + {"matrix": [6, 7], "x": 17.25, "y": 1.25}, + {"matrix": [6, 8], "x": 18.25, "y": 1.25}, + + {"matrix": [1, 0], "x": 0, "y": 2.25}, + {"matrix": [1, 1], "x": 1, "y": 2.25}, + {"matrix": [1, 2], "x": 2.25, "y": 2.25, "w": 1.5}, + {"matrix": [1, 3], "x": 3.75, "y": 2.25}, + {"matrix": [1, 4], "x": 4.75, "y": 2.25}, + {"matrix": [1, 5], "x": 5.75, "y": 2.25}, + {"matrix": [1, 6], "x": 6.75, "y": 2.25}, + {"matrix": [1, 7], "x": 7.75, "y": 2.25}, + + {"matrix": [7, 0], "x": 9.75, "y": 2.25}, + {"matrix": [7, 1], "x": 10.75, "y": 2.25}, + {"matrix": [7, 2], "x": 11.75, "y": 2.25}, + {"matrix": [7, 3], "x": 12.75, "y": 2.25}, + {"matrix": [7, 4], "x": 13.75, "y": 2.25}, + {"matrix": [7, 5], "x": 14.75, "y": 2.25}, + {"matrix": [7, 6], "x": 15.75, "y": 2.25}, + {"matrix": [7, 7], "x": 16.75, "y": 2.25, "w": 1.5}, + {"matrix": [7, 8], "x": 18.25, "y": 2.25}, + + {"matrix": [2, 0], "x": 0, "y": 3.25}, + {"matrix": [2, 1], "x": 1, "y": 3.25}, + {"matrix": [2, 2], "x": 2.25, "y": 3.25, "w": 1.75}, + {"matrix": [2, 3], "x": 4, "y": 3.25}, + {"matrix": [2, 4], "x": 5, "y": 3.25}, + {"matrix": [2, 5], "x": 6, "y": 3.25}, + {"matrix": [2, 6], "x": 7, "y": 3.25}, + {"matrix": [2, 7], "x": 8, "y": 3.25}, + + {"matrix": [8, 0], "x": 10, "y": 3.25}, + {"matrix": [8, 1], "x": 11, "y": 3.25}, + {"matrix": [8, 2], "x": 12, "y": 3.25}, + {"matrix": [8, 3], "x": 13, "y": 3.25}, + {"matrix": [8, 4], "x": 14, "y": 3.25}, + {"matrix": [8, 5], "x": 15, "y": 3.25}, + {"matrix": [8, 6], "x": 16, "y": 3.25}, + {"matrix": [8, 7], "x": 17, "y": 3.25, "w": 1.25}, + {"matrix": [8, 8], "x": 18.25, "y": 3.25}, + + {"matrix": [3, 0], "x": 0, "y": 4.25}, + {"matrix": [3, 1], "x": 1, "y": 4.25}, + {"matrix": [3, 2], "x": 2.25, "y": 4.25, "w": 1.25}, + {"matrix": [3, 3], "x": 3.5, "y": 4.25}, + {"matrix": [3, 4], "x": 4.5, "y": 4.25}, + {"matrix": [3, 5], "x": 5.5, "y": 4.25}, + {"matrix": [3, 6], "x": 6.5, "y": 4.25}, + {"matrix": [3, 7], "x": 7.5, "y": 4.25}, + {"matrix": [3, 8], "x": 8.5, "y": 4.25}, + + {"matrix": [9, 0], "x": 10.5, "y": 4.25}, + {"matrix": [9, 1], "x": 11.5, "y": 4.25}, + {"matrix": [9, 2], "x": 12.5, "y": 4.25}, + {"matrix": [9, 3], "x": 13.5, "y": 4.25}, + {"matrix": [9, 4], "x": 14.5, "y": 4.25}, + {"matrix": [9, 6], "x": 15.5, "y": 4.25, "w": 1.75}, + {"matrix": [9, 7], "x": 17.25, "y": 4.25}, + {"matrix": [9, 8], "x": 18.25, "y": 4.25}, + + {"matrix": [4, 0], "x": 0, "y": 5.25}, + {"matrix": [4, 1], "x": 1, "y": 5.25}, + {"matrix": [4, 2], "x": 2.25, "y": 5.25, "w": 1.25}, + {"matrix": [4, 3], "x": 3.5, "y": 5.25, "w": 1.25}, + {"matrix": [4, 4], "x": 4.75, "y": 5.25, "w": 1.25}, + {"matrix": [4, 5], "x": 6, "y": 5.25, "w": 1.25}, + {"matrix": [4, 6], "x": 7.25, "y": 5.25}, + {"matrix": [4, 7], "x": 8.25, "y": 5.25, "w": 1.25}, + + {"matrix": [10, 0], "x": 10.5, "y": 5.25, "w": 1.25}, + {"matrix": [10, 1], "x": 11.75, "y": 5.25, "w": 1.5}, + {"matrix": [10, 2], "x": 13.25, "y": 5.25}, + {"matrix": [10, 3], "x": 14.25, "y": 5.25}, + {"matrix": [10, 4], "x": 15.25, "y": 5.25}, + {"matrix": [10, 6], "x": 16.25, "y": 5.25}, + {"matrix": [10, 7], "x": 17.25, "y": 5.25}, + {"matrix": [10, 8], "x": 18.25, "y": 5.25} + ] + } + } +} diff --git a/keyboards/keebio/sinc/rev4/mcuconf.h b/keyboards/keebio/sinc/rev4/mcuconf.h new file mode 100644 index 000000000000..8b26af413192 --- /dev/null +++ b/keyboards/keebio/sinc/rev4/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2023 Danny Nguyen (danny@keeb.io) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef RP_I2C_USE_I2C1 +#define RP_I2C_USE_I2C1 TRUE diff --git a/keyboards/keebio/sinc/rev4/rules.mk b/keyboards/keebio/sinc/rev4/rules.mk new file mode 100644 index 000000000000..161ec22b16e2 --- /dev/null +++ b/keyboards/keebio/sinc/rev4/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = vendor From 776e980ac1a31080f0a9f73acd24d1832e555cf6 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Wed, 14 Jun 2023 18:45:37 -0700 Subject: [PATCH 35/46] 4pplet Waffling60 Rev D ISO Layout Fix and Additions (#21236) * correct layout data * add matrix diagram * rename LAYOUT to LAYOUT_all * add LAYOUT_60_iso_tsangan_split_bs_rshift * add LAYOUT_60_iso_tsangan_split_rshift * add LAYOUT_60_iso_wkl_split_bs_rshift * add LAYOUT_60_iso_wkl_split_rshift --- .../4pplet/waffling60/rev_d_iso/info.json | 313 +++++++++++++++++- .../rev_d_iso/keymaps/default/keymap.c | 4 +- .../waffling60/rev_d_iso/keymaps/via/keymap.c | 8 +- .../waffling60/rev_d_iso/matrix_diagram.md | 24 ++ 4 files changed, 327 insertions(+), 22 deletions(-) create mode 100644 keyboards/4pplet/waffling60/rev_d_iso/matrix_diagram.md diff --git a/keyboards/4pplet/waffling60/rev_d_iso/info.json b/keyboards/4pplet/waffling60/rev_d_iso/info.json index cab2fa1c0791..fdcf9d0bdee1 100644 --- a/keyboards/4pplet/waffling60/rev_d_iso/info.json +++ b/keyboards/4pplet/waffling60/rev_d_iso/info.json @@ -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} + ] } } } diff --git a/keyboards/4pplet/waffling60/rev_d_iso/keymaps/default/keymap.c b/keyboards/4pplet/waffling60/rev_d_iso/keymaps/default/keymap.c index 563c3838d10f..7536b7f3a1a6 100644 --- a/keyboards/4pplet/waffling60/rev_d_iso/keymaps/default/keymap.c +++ b/keyboards/4pplet/waffling60/rev_d_iso/keymaps/default/keymap.c @@ -18,14 +18,14 @@ along with this program. If not, see . 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, diff --git a/keyboards/4pplet/waffling60/rev_d_iso/keymaps/via/keymap.c b/keyboards/4pplet/waffling60/rev_d_iso/keymaps/via/keymap.c index 18c291226904..b6945a706d81 100644 --- a/keyboards/4pplet/waffling60/rev_d_iso/keymaps/via/keymap.c +++ b/keyboards/4pplet/waffling60/rev_d_iso/keymaps/via/keymap.c @@ -18,28 +18,28 @@ along with this program. If not, see . 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, diff --git a/keyboards/4pplet/waffling60/rev_d_iso/matrix_diagram.md b/keyboards/4pplet/waffling60/rev_d_iso/matrix_diagram.md new file mode 100644 index 000000000000..781000ec413f --- /dev/null +++ b/keyboards/4pplet/waffling60/rev_d_iso/matrix_diagram.md @@ -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 +└─────┴───┴───────────────────────────────────────┴───┴─────┘ +``` From baa9252db2443a9884b344ae77ea58710b1932af Mon Sep 17 00:00:00 2001 From: dztech Date: Thu, 15 Jun 2023 11:29:39 +0800 Subject: [PATCH 36/46] [Keyboard] add pluto keyboard (#21225) --- keyboards/dztech/pluto/info.json | 191 ++++++++++++++++++ .../dztech/pluto/keymaps/default/keymap.c | 27 +++ keyboards/dztech/pluto/keymaps/via/keymap.c | 27 +++ keyboards/dztech/pluto/keymaps/via/rules.mk | 1 + keyboards/dztech/pluto/readme.md | 30 +++ keyboards/dztech/pluto/rules.mk | 1 + 6 files changed, 277 insertions(+) create mode 100644 keyboards/dztech/pluto/info.json create mode 100644 keyboards/dztech/pluto/keymaps/default/keymap.c create mode 100644 keyboards/dztech/pluto/keymaps/via/keymap.c create mode 100644 keyboards/dztech/pluto/keymaps/via/rules.mk create mode 100644 keyboards/dztech/pluto/readme.md create mode 100644 keyboards/dztech/pluto/rules.mk diff --git a/keyboards/dztech/pluto/info.json b/keyboards/dztech/pluto/info.json new file mode 100644 index 000000000000..ab201befa314 --- /dev/null +++ b/keyboards/dztech/pluto/info.json @@ -0,0 +1,191 @@ +{ + "manufacturer": "DZTECH", + "keyboard_name": "PLUTO", + "maintainer": "moyi4681", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP21", "GP20", "GP19", "GP16", "GP15", "GP14", "GP13", "GP0"], + "rows": ["GP1", "GP18", "GP17", "GP12", "GP11"] + }, + "processor": "RP2040", + "usb": { + "device_version": "1.0.0", + "pid": "0x0006", + "vid": "0x445A" + }, + "layouts": { + "LAYOUT_all": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [0, 10], "x": 10, "y": 0 }, + { "matrix": [0, 11], "x": 11, "y": 0 }, + { "matrix": [0, 12], "x": 12, "y": 0 }, + { "matrix": [0, 13], "x": 13, "y": 0 }, + { "matrix": [0, 14], "x": 14, "y": 0 }, + { "matrix": [0, 15], "x": 15.25, "y": 0 }, + { "matrix": [2, 12], "x": 16.25, "y": 0 }, + { "matrix": [2, 13], "x": 17.25, "y": 0 }, + + { "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "matrix": [1, 13], "x": 12.75, "y": 2 }, + { "matrix": [1, 15], "x": 15.25, "y": 1 }, + { "matrix": [2, 14], "x": 16.25, "y": 1 }, + { "matrix": [2, 15], "x": 17.25, "y": 1 }, + + { "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "matrix": [1, 14], "w": 1.25, "x": 12.75, "y": 1 }, + + { "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "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], "w": 1.75, "x": 12.25, "y": 3 }, + { "matrix": [3, 13], "x": 15.25, "y": 3 }, + { "matrix": [3, 14], "x": 16.25, "y": 3 }, + + { "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, + { "matrix": [4, 7], "w": 6.25, "x": 3.75, "y": 4 }, + { "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, + { "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, + { "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 }, + { "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4 }, + { "matrix": [3, 15], "x": 15.25, "y": 4 }, + { "matrix": [4, 14], "x": 16.25, "y": 4 }, + { "matrix": [4, 15], "x": 17.25, "y": 4 } + ] + }, + "LAYOUT_iso": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6, "y": 0 }, + { "matrix": [0, 7], "x": 7, "y": 0 }, + { "matrix": [0, 8], "x": 8, "y": 0 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [0, 10], "x": 10, "y": 0 }, + { "matrix": [0, 11], "x": 11, "y": 0 }, + { "matrix": [0, 12], "x": 12, "y": 0 }, + { "matrix": [0, 13], "x": 13, "y": 0 }, + { "matrix": [0, 14], "x": 14, "y": 0 }, + { "matrix": [0, 15], "x": 15.25, "y": 0 }, + { "matrix": [2, 12], "x": 16.25, "y": 0 }, + { "matrix": [2, 13], "x": 17.25, "y": 0 }, + + { "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "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 }, + { "h": 2, "matrix": [1, 14], "w": 1.25, "x": 13.75, "y": 1 }, + { "matrix": [1, 15], "x": 15.25, "y": 1 }, + { "matrix": [2, 14], "x": 16.25, "y": 1 }, + { "matrix": [2, 15], "x": 17.25, "y": 1 }, + + { "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "matrix": [1, 13], "x": 12.75, "y": 2 }, + + { "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "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], "w": 1.75, "x": 12.25, "y": 3 }, + { "matrix": [3, 13], "x": 15.25, "y": 3 }, + { "matrix": [3, 14], "x": 16.25, "y": 3 }, + + { "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, + { "matrix": [4, 7], "w": 6.25, "x": 3.75, "y": 4 }, + { "matrix": [4, 10], "w": 1.25, "x": 10, "y": 4 }, + { "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, + { "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 }, + { "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4 }, + { "matrix": [3, 15], "x": 15.25, "y": 4 }, + { "matrix": [4, 14], "x": 16.25, "y": 4 }, + { "matrix": [4, 15], "x": 17.25, "y": 4 } + ] + } + } +} diff --git a/keyboards/dztech/pluto/keymaps/default/keymap.c b/keyboards/dztech/pluto/keymaps/default/keymap.c new file mode 100644 index 000000000000..9edd2f178f05 --- /dev/null +++ b/keyboards/dztech/pluto/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2023 DZTECH + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + 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_DEL, 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_NUHS, 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_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/dztech/pluto/keymaps/via/keymap.c b/keyboards/dztech/pluto/keymaps/via/keymap.c new file mode 100644 index 000000000000..9edd2f178f05 --- /dev/null +++ b/keyboards/dztech/pluto/keymaps/via/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2023 DZTECH + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + 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_DEL, 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_NUHS, 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_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/dztech/pluto/keymaps/via/rules.mk b/keyboards/dztech/pluto/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/dztech/pluto/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/dztech/pluto/readme.md b/keyboards/dztech/pluto/readme.md new file mode 100644 index 000000000000..e4db0deb39fe --- /dev/null +++ b/keyboards/dztech/pluto/readme.md @@ -0,0 +1,30 @@ +# PLUTO + +![PLUTO](https://i.imgur.com/BWVvKMO.jpg) + +The main purpose of this board is to introduce more people to the best layout. +This board was originally designed to be O-ring gasket mount only, Top mount was added to make the board whole. +Sticking with a mimal design, the engraving of planets was replaced with the Logo surrounding with pluto moons and planets. +Pluto now also features an accent Piece with an engraving of Pluto Symbol below the nav cluster. + +* Keyboard Maintainer: [DZTECH](https://github.com/moyi4681) +* Hardware Supported: DZTECH +* Hardware Availability: KBDFANS + +Make example for this keyboard (after setting up your build environment): + + make dztech/pluto:default + +Flashing example for this keyboard: + + make dztech/pluto: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 diff --git a/keyboards/dztech/pluto/rules.mk b/keyboards/dztech/pluto/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/dztech/pluto/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 87858108b525bb3c1f40f800a560780fb12101e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20A=2E=20Volpato?= Date: Thu, 15 Jun 2023 00:58:55 -0300 Subject: [PATCH 37/46] Modernize M75H and M75S firmwares (#21244) --- keyboards/mode/m75h/config.h | 32 ++------------------------------ keyboards/mode/m75h/halconf.h | 2 -- keyboards/mode/m75h/info.json | 2 +- keyboards/mode/m75h/m75h.c | 22 ---------------------- keyboards/mode/m75h/rules.mk | 9 ++++----- keyboards/mode/m75s/config.h | 5 ----- 6 files changed, 7 insertions(+), 65 deletions(-) delete mode 100644 keyboards/mode/m75h/m75h.c diff --git a/keyboards/mode/m75h/config.h b/keyboards/mode/m75h/config.h index 640cc43a5ac0..c6d7d037ec84 100644 --- a/keyboards/mode/m75h/config.h +++ b/keyboards/mode/m75h/config.h @@ -17,33 +17,5 @@ along with this program. If not, see . #pragma once -/* 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 EEPROM_I2C_24LC256 -//#define I2C1_CLOCK_SPEED 400000 -//#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2 - -#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT - -#define TAP_CODE_DELAY 50 - -#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 16383 // Overriding to use more EEPROM +#define WEAR_LEVELING_LOGICAL_SIZE 2048 +#define WEAR_LEVELING_BACKING_SIZE 4096 diff --git a/keyboards/mode/m75h/halconf.h b/keyboards/mode/m75h/halconf.h index 6c53f594c769..d4831df0d73f 100644 --- a/keyboards/mode/m75h/halconf.h +++ b/keyboards/mode/m75h/halconf.h @@ -21,6 +21,4 @@ #pragma once -#define HAL_USE_I2C TRUE - #include_next diff --git a/keyboards/mode/m75h/info.json b/keyboards/mode/m75h/info.json index 1ebbb8f29faa..f57aac383efe 100644 --- a/keyboards/mode/m75h/info.json +++ b/keyboards/mode/m75h/info.json @@ -1,5 +1,5 @@ { - "keyboard_name": "75H", + "keyboard_name": "M75H", "manufacturer": "Mode", "url": "", "maintainer": "Gondolindrim", diff --git a/keyboards/mode/m75h/m75h.c b/keyboards/mode/m75h/m75h.c deleted file mode 100644 index 2f2bfbfa4bf4..000000000000 --- a/keyboards/mode/m75h/m75h.c +++ /dev/null @@ -1,22 +0,0 @@ -/* - Copyright 2020 Álvaro "Gondolindrim" Volpato - -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 . -*/ - -#include "quantum.h" - -void board_init(void) { - setPinInput(B10); -} diff --git a/keyboards/mode/m75h/rules.mk b/keyboards/mode/m75h/rules.mk index ee752a964b3b..5302cbfc1927 100644 --- a/keyboards/mode/m75h/rules.mk +++ b/keyboards/mode/m75h/rules.mk @@ -1,16 +1,15 @@ # Build Options # change yes to no to disable # -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = no # Enable N-Key Rollover +NKRO_ENABLE = yes # Enable N-Key Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output -EEPROM_DRIVER = i2c +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output LTO_ENABLE = yes # Enter lower-power sleep mode when on the ChibiOS idle thread diff --git a/keyboards/mode/m75s/config.h b/keyboards/mode/m75s/config.h index b8307f43960b..c17bf51b35cd 100644 --- a/keyboards/mode/m75s/config.h +++ b/keyboards/mode/m75s/config.h @@ -17,11 +17,6 @@ along with this program. If not, see . #pragma once -/* 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 BACKLIGHT_DEFAULT_LEVEL 20 #define BACKLIGHT_PWM_DRIVER PWMD3 #define BACKLIGHT_PWM_CHANNEL 1 From 92203440cd40e319251560869b23e62335fe8eb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gast=C3=B3n=20Jorquera?= Date: Thu, 15 Jun 2023 00:00:13 -0400 Subject: [PATCH 38/46] [Keymap] Left Control is now ESC when tapped (#21241) --- keyboards/lily58/keymaps/gaston/keymap.c | 5 +++-- keyboards/lily58/keymaps/gaston/readme.md | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/keyboards/lily58/keymaps/gaston/keymap.c b/keyboards/lily58/keymaps/gaston/keymap.c index b7129b71e00e..4f8654b41bd4 100644 --- a/keyboards/lily58/keymaps/gaston/keymap.c +++ b/keyboards/lily58/keymaps/gaston/keymap.c @@ -26,6 +26,7 @@ enum layer_number { #define EN_LOWER LT(_LOWER, KC_SPC) #define EN_MOUSE MO(_MOUSE) +#define MT_CESC LCTL_T(KC_ESC) /* See the readme.md file for an ASCII representation of this keymap. */ @@ -34,13 +35,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = LAYOUT( KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, 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_MINS, - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + MT_CESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, EN_MOUSE,KC_EQL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_RALT, KC_LALT, KC_LGUI, EN_LOWER,EN_LOWER, KC_LBRC, KC_RBRC, KC_BSLS ), [_LOWER] = 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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, XXXXXXX, KC_F12, KC_TRNS, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, KC_TRNS, XXXXXXX, XXXXXXX, KC_BRID, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, diff --git a/keyboards/lily58/keymaps/gaston/readme.md b/keyboards/lily58/keymaps/gaston/readme.md index 8edd92cc3ff2..cf8b13786e3f 100644 --- a/keyboards/lily58/keymaps/gaston/readme.md +++ b/keyboards/lily58/keymaps/gaston/readme.md @@ -10,6 +10,7 @@ The main characteristics of this keymap are: * The main thumb buttons are spaces when tapped and enable the LOWER layer when held. * Vim style arrow keys. + * Left Control is ESC when tapped. * Left and right ALT in case you need different behaviors. (For example, the default Option and readline's Alt behavior in macOS.) * The LOWER layer has mostly meta keys. @@ -23,7 +24,7 @@ The main characteristics of this keymap are: |------+------+------+------+------+------| |------+------+------+------+------+------| | TAB | Q | W | E | R | T | | Y | U | I | O | P | - | |------+------+------+------+------+------| |------+------+------+------+------+------| -|LCTRL | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | +|C_ESC | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' | |------+------+------+------+------+------| MOUSE | | = |------+------+------+------+------+------| | LSFT | Z | X | C | V | B |-------| |-------| N | M | , | . | / | ENT | `-----------------------------------------/ LT / \ LT \----------------------------------------' @@ -36,7 +37,7 @@ The main characteristics of this keymap are: ```plain ,-----------------------------------------. ,-----------------------------------------. -| ESC | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | +| TRNS | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | |------+------+------+------+------+------| |------+------+------+------+------+------| | TRNS | | MUTE | VOLD | VOLU | | | HOME | PGDN | PGUP | END | | F12 | |------+------+------+------+------+------| |------+------+------+------+------+------| From a2c17d5518b9301abe8f40b4ca9e62a6e9e38d64 Mon Sep 17 00:00:00 2001 From: Andrew Kannan Date: Thu, 15 Jun 2023 00:08:16 -0400 Subject: [PATCH 39/46] [Keyboard] Add CannonKeys Leviatan PCB (#21231) --- keyboards/cannonkeys/leviatan/info.json | 311 ++++++++++++++++++ .../leviatan/keymaps/default/keymap.c | 45 +++ .../cannonkeys/leviatan/keymaps/iso/keymap.c | 45 +++ .../leviatan/keymaps/tsangan/keymap.c | 46 +++ .../cannonkeys/leviatan/keymaps/via/keymap.c | 45 +++ .../cannonkeys/leviatan/keymaps/via/rules.mk | 1 + keyboards/cannonkeys/leviatan/readme.md | 25 ++ keyboards/cannonkeys/leviatan/rules.mk | 5 + 8 files changed, 523 insertions(+) create mode 100644 keyboards/cannonkeys/leviatan/info.json create mode 100644 keyboards/cannonkeys/leviatan/keymaps/default/keymap.c create mode 100644 keyboards/cannonkeys/leviatan/keymaps/iso/keymap.c create mode 100644 keyboards/cannonkeys/leviatan/keymaps/tsangan/keymap.c create mode 100644 keyboards/cannonkeys/leviatan/keymaps/via/keymap.c create mode 100644 keyboards/cannonkeys/leviatan/keymaps/via/rules.mk create mode 100644 keyboards/cannonkeys/leviatan/readme.md create mode 100644 keyboards/cannonkeys/leviatan/rules.mk diff --git a/keyboards/cannonkeys/leviatan/info.json b/keyboards/cannonkeys/leviatan/info.json new file mode 100644 index 000000000000..7e8d6c6fdd12 --- /dev/null +++ b/keyboards/cannonkeys/leviatan/info.json @@ -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]} + ] + } + } +} diff --git a/keyboards/cannonkeys/leviatan/keymaps/default/keymap.c b/keyboards/cannonkeys/leviatan/keymaps/default/keymap.c new file mode 100644 index 000000000000..317eeab093dc --- /dev/null +++ b/keyboards/cannonkeys/leviatan/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +/* +Copyright 2012,2013 Jun Wako + +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 . +*/ +#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 + ) +}; diff --git a/keyboards/cannonkeys/leviatan/keymaps/iso/keymap.c b/keyboards/cannonkeys/leviatan/keymaps/iso/keymap.c new file mode 100644 index 000000000000..a0cacca0f5ca --- /dev/null +++ b/keyboards/cannonkeys/leviatan/keymaps/iso/keymap.c @@ -0,0 +1,45 @@ +/* +Copyright 2012,2013 Jun Wako + +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 . +*/ +#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 + ) +}; diff --git a/keyboards/cannonkeys/leviatan/keymaps/tsangan/keymap.c b/keyboards/cannonkeys/leviatan/keymaps/tsangan/keymap.c new file mode 100644 index 000000000000..d280f72d1ecd --- /dev/null +++ b/keyboards/cannonkeys/leviatan/keymaps/tsangan/keymap.c @@ -0,0 +1,46 @@ +/* +Copyright 2012,2013 Jun Wako + +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 . +*/ +#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 + ) +}; diff --git a/keyboards/cannonkeys/leviatan/keymaps/via/keymap.c b/keyboards/cannonkeys/leviatan/keymaps/via/keymap.c new file mode 100644 index 000000000000..b3b684cf198f --- /dev/null +++ b/keyboards/cannonkeys/leviatan/keymaps/via/keymap.c @@ -0,0 +1,45 @@ +/* +Copyright 2012,2013 Jun Wako + +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 . +*/ +#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 + ) +}; diff --git a/keyboards/cannonkeys/leviatan/keymaps/via/rules.mk b/keyboards/cannonkeys/leviatan/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/cannonkeys/leviatan/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cannonkeys/leviatan/readme.md b/keyboards/cannonkeys/leviatan/readme.md new file mode 100644 index 000000000000..70b90e95516c --- /dev/null +++ b/keyboards/cannonkeys/leviatan/readme.md @@ -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 diff --git a/keyboards/cannonkeys/leviatan/rules.mk b/keyboards/cannonkeys/leviatan/rules.mk new file mode 100644 index 000000000000..2a5031cd3205 --- /dev/null +++ b/keyboards/cannonkeys/leviatan/rules.mk @@ -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 From 3703d5a83b6ba6d1abd20049eb920fbce417f91c Mon Sep 17 00:00:00 2001 From: blindassassin111 <38090555+blindassassin111@users.noreply.github.com> Date: Wed, 14 Jun 2023 23:20:49 -0500 Subject: [PATCH 40/46] [Keyboard] Adding OSAv2 Numpad Topre support (#21224) --- keyboards/viktus/osav2_numpad_topre/ec.c | 181 ++++++++++++++++++ keyboards/viktus/osav2_numpad_topre/ec.h | 31 +++ keyboards/viktus/osav2_numpad_topre/info.json | 100 ++++++++++ .../keymaps/default/keymap.c | 27 +++ .../osav2_numpad_topre/keymaps/via/keymap.c | 27 +++ .../osav2_numpad_topre/keymaps/via/rules.mk | 1 + .../osav2_numpad_topre/osav2_numpad_topre.c | 49 +++++ keyboards/viktus/osav2_numpad_topre/readme.md | 27 +++ keyboards/viktus/osav2_numpad_topre/rules.mk | 3 + 9 files changed, 446 insertions(+) create mode 100644 keyboards/viktus/osav2_numpad_topre/ec.c create mode 100644 keyboards/viktus/osav2_numpad_topre/ec.h create mode 100644 keyboards/viktus/osav2_numpad_topre/info.json create mode 100644 keyboards/viktus/osav2_numpad_topre/keymaps/default/keymap.c create mode 100644 keyboards/viktus/osav2_numpad_topre/keymaps/via/keymap.c create mode 100644 keyboards/viktus/osav2_numpad_topre/keymaps/via/rules.mk create mode 100644 keyboards/viktus/osav2_numpad_topre/osav2_numpad_topre.c create mode 100644 keyboards/viktus/osav2_numpad_topre/readme.md create mode 100644 keyboards/viktus/osav2_numpad_topre/rules.mk diff --git a/keyboards/viktus/osav2_numpad_topre/ec.c b/keyboards/viktus/osav2_numpad_topre/ec.c new file mode 100644 index 000000000000..e4f59c3b6bf8 --- /dev/null +++ b/keyboards/viktus/osav2_numpad_topre/ec.c @@ -0,0 +1,181 @@ +/* Copyright 2023 Viktus Design LLC + * + * 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 . + */ + +#include "quantum.h" +#include "ec.h" +#include "analog.h" +//#include "debug.h" // needed for debugging + +// sensing channel definitions +#define A0 0 +#define A1 1 +#define A2 2 +#define A3 3 +#define A4 4 +#define A5 5 +#define A6 6 +#define A7 7 + +// analog connection settings +#define DISCHARGE_PIN B5 +#define ANALOG_PORT B6 + +#ifndef MUX_SEL_PIN +# define MUX_SEL_PINS \ + { D6, D7, B4 } +#endif + +// pin connections +const uint8_t row_channels[] = MATRIX_ROW_PINS; +const uint8_t col_pins[] = MATRIX_COL_PINS; +const uint8_t mux_sel_pins[] = MUX_SEL_PINS; + +_Static_assert(sizeof(mux_sel_pins) == 3, "invalid MUX_SEL_PINS"); + +static ec_config_t config; +static uint16_t ec_sw_value[MATRIX_COLS][MATRIX_ROWS]; + +static inline void discharge_capacitor(void) { setPinOutput(DISCHARGE_PIN); } +static inline void charge_capacitor(uint8_t col) { + setPinInput(DISCHARGE_PIN); + writePinHigh(col_pins[col]); +} + +static inline void clear_all_col_pins(void) { + for (int col = 0; col < sizeof(col_pins); col++) { + writePinLow(col_pins[col]); + } +} + +void init_mux_sel(void) { + for (int idx = 0; idx < sizeof(mux_sel_pins); idx++) { + setPinOutput(mux_sel_pins[idx]); + } +} + +void select_mux(uint8_t row) { + uint8_t ch = row_channels[row]; + writePin(mux_sel_pins[0], ch & 1); + writePin(mux_sel_pins[1], ch & 2); + writePin(mux_sel_pins[2], ch & 4); +} + +void init_col(void) { + for (int idx = 0; idx < sizeof(col_pins); idx++) { + setPinOutput(col_pins[idx]); + writePinLow(col_pins[idx]); + } +} + +void ec_init(ec_config_t const* const ec_config) { + // save config + config = *ec_config; + + // initialize discharge pin as discharge mode + writePinLow(DISCHARGE_PIN); + setPinOutput(DISCHARGE_PIN); + + // set analog reference + analogReference(ADC_REF_POWER); + + // initialize drive lines + init_col(); + + // initialize multiplexer select pin + init_mux_sel(); + + // set discharge pin to charge mode + setPinInput(DISCHARGE_PIN); +} + +uint16_t ec_readkey_raw(uint8_t col, uint8_t row) { + uint16_t sw_value = 0; + + discharge_capacitor(); + + select_mux(row); + + clear_all_col_pins(); + + cli(); + + charge_capacitor(col); + + sw_value = analogReadPin(ANALOG_PORT); + + sei(); + + return sw_value; +} + +bool ec_update_key(matrix_row_t* current_row, matrix_row_t col, uint16_t sw_value, uint16_t reset_pt, uint16_t actuation_pt) { + bool current_state = (*current_row >> col) & 1; + + // press to release + if (current_state && sw_value < reset_pt) { + *current_row &= ~(MATRIX_ROW_SHIFTER << col); + return true; + } + + // rest to press + if ((!current_state) && sw_value > actuation_pt) { + *current_row |= (MATRIX_ROW_SHIFTER << col); + return true; + } + + return false; +} + +bool ec_matrix_scan(matrix_row_t current_matrix[]) { + bool updated = false; + + for (int row = 0; row < sizeof(row_channels); row++) { + for (int col = 0; col < sizeof(col_pins); col++) { + uint16_t reset_pt = config.reset_pt; + uint16_t actuation_pt = config.actuation_pt; + + //Modifying threshold values for overlapping pads + switch(row) { + case 1: + case 2: + case 3: + case 4: + switch(col) { + case 3: // lower threshold for plus and enter: (37 rest, 61 btm) + reset_pt = 45; + actuation_pt = 50; + break; + } + break; + } + + ec_sw_value[col][row] = ec_readkey_raw(col, row); + updated |= ec_update_key(¤t_matrix[row], col, ec_sw_value[col][row], reset_pt, actuation_pt); + } + } + + return updated; +} + +// console debugging for pad values +/*void ec_dprint_matrix(void) { + for (int row = 0; row < sizeof(row_channels); row++) { + for (int col = 0; col < sizeof(col_pins); col++) { + dprintf("%5d", ec_sw_value[col][row]); + } + dprintf("\n"); + } +}*/ diff --git a/keyboards/viktus/osav2_numpad_topre/ec.h b/keyboards/viktus/osav2_numpad_topre/ec.h new file mode 100644 index 000000000000..33bdb2d5effb --- /dev/null +++ b/keyboards/viktus/osav2_numpad_topre/ec.h @@ -0,0 +1,31 @@ +/* Copyright 2023 Viktus Design LLC + * + * 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 . + */ + +#include +#include + +#include "matrix.h" + +typedef struct { + uint16_t reset_pt; + uint16_t actuation_pt; +} ec_config_t; + +void ec_init(ec_config_t const* const ec_config); +bool ec_matrix_scan(matrix_row_t current_matrix[]); +//void ec_dprint_matrix(void); // needed for debugging +uint16_t ec_readkey_raw(uint8_t col, uint8_t row); +bool ec_update_key(matrix_row_t* current_row, uint8_t col, uint16_t sw_value, uint16_t reset_pt, uint16_t actuation_pt); diff --git a/keyboards/viktus/osav2_numpad_topre/info.json b/keyboards/viktus/osav2_numpad_topre/info.json new file mode 100644 index 000000000000..55ca939e3f43 --- /dev/null +++ b/keyboards/viktus/osav2_numpad_topre/info.json @@ -0,0 +1,100 @@ +{ + "manufacturer": "Viktus Design LLC", + "keyboard_name": "OSAv2 Numpad - Topre", + "maintainer": "BlindAssassin111", + "url": "https://viktus.design", + "usb": { + "device_version": "1.1.0", + "vid": "0x5644", + "pid": "0x4E54" + }, + "bootloader": "atmel-dfu", + "processor": "atmega32u4", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["F5", "F6", "D3", "D2"], + "rows": ["A1", "A0", "A3", "A2", "A4"] + }, + "layouts": { + "LAYOUT_ortho_5x4": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "x": 1, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 2, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "x": 3, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "x": 1, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 2, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "x": 3, "y": 2 }, + { "label": "K30", "matrix": [3, 0], "x": 0, "y": 3 }, + { "label": "K31", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "K40", "matrix": [4, 0], "x": 0, "y": 4 }, + { "label": "K41", "matrix": [4, 1], "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "x": 2, "y": 4 }, + { "label": "K43", "matrix": [4, 3], "x": 3, "y": 4 } + ] + }, + "LAYOUT_split_plus_2u_enter": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "x": 1, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 2, "y": 1 }, + { "label": "K13", "matrix": [1, 3], "x": 3, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "x": 1, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 2, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "x": 3, "y": 2 }, + { "label": "K30", "matrix": [3, 0], "x": 0, "y": 3 }, + { "label": "K31", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "h": 2, "x": 3, "y": 3 }, + { "label": "K40", "matrix": [4, 0], "x": 0, "y": 4 }, + { "label": "K41", "matrix": [4, 1], "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "x": 2, "y": 4 } + ] + }, + "LAYOUT_2u_plus_2u_enter": { + "layout": [ + { "label": "K00", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "K01", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "K02", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "K03", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "K10", "matrix": [1, 0], "x": 0, "y": 1 }, + { "label": "K11", "matrix": [1, 1], "x": 1, "y": 1 }, + { "label": "K12", "matrix": [1, 2], "x": 2, "y": 1 }, + { "label": "K20", "matrix": [2, 0], "x": 0, "y": 2 }, + { "label": "K21", "matrix": [2, 1], "x": 1, "y": 2 }, + { "label": "K22", "matrix": [2, 2], "x": 2, "y": 2 }, + { "label": "K23", "matrix": [2, 3], "h": 2, "x": 3, "y": 1 }, + { "label": "K30", "matrix": [3, 0], "x": 0, "y": 3 }, + { "label": "K31", "matrix": [3, 1], "x": 1, "y": 3 }, + { "label": "K32", "matrix": [3, 2], "x": 2, "y": 3 }, + { "label": "K33", "matrix": [3, 3], "h": 2, "x": 3, "y": 3 }, + { "label": "K40", "matrix": [4, 0], "x": 0, "y": 4 }, + { "label": "K41", "matrix": [4, 1], "x": 1, "y": 4 }, + { "label": "K42", "matrix": [4, 2], "x": 2, "y": 4 } + ] + } + } +} diff --git a/keyboards/viktus/osav2_numpad_topre/keymaps/default/keymap.c b/keyboards/viktus/osav2_numpad_topre/keymaps/default/keymap.c new file mode 100644 index 000000000000..7545c946c3f0 --- /dev/null +++ b/keyboards/viktus/osav2_numpad_topre/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2023 Viktus Design LLC + * + * 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 . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_5x4( + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PEQL, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_P0, KC_PDOT, KC_DEL + ) +}; diff --git a/keyboards/viktus/osav2_numpad_topre/keymaps/via/keymap.c b/keyboards/viktus/osav2_numpad_topre/keymaps/via/keymap.c new file mode 100644 index 000000000000..7545c946c3f0 --- /dev/null +++ b/keyboards/viktus/osav2_numpad_topre/keymaps/via/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2023 Viktus Design LLC + * + * 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 . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_5x4( + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, KC_PEQL, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, KC_PENT, + KC_P0, KC_P0, KC_PDOT, KC_DEL + ) +}; diff --git a/keyboards/viktus/osav2_numpad_topre/keymaps/via/rules.mk b/keyboards/viktus/osav2_numpad_topre/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/viktus/osav2_numpad_topre/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/viktus/osav2_numpad_topre/osav2_numpad_topre.c b/keyboards/viktus/osav2_numpad_topre/osav2_numpad_topre.c new file mode 100644 index 000000000000..2337fc55f396 --- /dev/null +++ b/keyboards/viktus/osav2_numpad_topre/osav2_numpad_topre.c @@ -0,0 +1,49 @@ +/* Copyright 2023 Viktus Design LLC + * + * 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 . + */ + +#include "quantum.h" +#include "ec.h" +#include "matrix.h" +//#include "debug.h" // needed for debugging + +#define RESET_PT 55 +#define ACTUATION_PT 65 + +// console debugging for pad values +void keyboard_post_init_kb() { + debug_enable = true; + debug_matrix = true; +} + +void matrix_init_custom(void) { + ec_config_t ec_config = {.reset_pt = RESET_PT, .actuation_pt = ACTUATION_PT}; + + ec_init(&ec_config); +} + +bool matrix_scan_custom(matrix_row_t current_matrix[]) { + bool updated = ec_matrix_scan(current_matrix); + + // console debugging for pad values + /*static int cnt = 0; + if (cnt++ == 1000) { + cnt = 0; + ec_dprint_matrix(); + dprintf("\n"); + }*/ + + return updated; +} diff --git a/keyboards/viktus/osav2_numpad_topre/readme.md b/keyboards/viktus/osav2_numpad_topre/readme.md new file mode 100644 index 000000000000..990bfe04fe7a --- /dev/null +++ b/keyboards/viktus/osav2_numpad_topre/readme.md @@ -0,0 +1,27 @@ +# OSAv2 Numpad - Topre + +![osav2_numpad_topre](https://i.imgur.com/G6yNtJMh.png) + +An OSAv2 Numpad in topre flavor. + +- Keyboard Maintainer: BlindAssassin111 +- Hardware Supported: OSAv2 Numpad Topre PCB +- Hardware Availability: Viktus Design LLC + +Make example for this keyboard (after setting up your build environment): + + make viktus/osav2_numpad_topre:default + +Flashing example for this keyboard: + + make viktus/osav2_numpad_topre: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 diff --git a/keyboards/viktus/osav2_numpad_topre/rules.mk b/keyboards/viktus/osav2_numpad_topre/rules.mk new file mode 100644 index 000000000000..037e26c530c7 --- /dev/null +++ b/keyboards/viktus/osav2_numpad_topre/rules.mk @@ -0,0 +1,3 @@ +CUSTOM_MATRIX = lite +QUANTUM_LIB_SRC += analog.c +SRC += ec.c From bbba1d07f94490440bb002148cf9aa10cf8f8ccf Mon Sep 17 00:00:00 2001 From: "jonylee@hfd" <108282809+jonylee1986@users.noreply.github.com> Date: Thu, 15 Jun 2023 12:23:46 +0800 Subject: [PATCH 41/46] [Keyboard] add acr87 keyboard. (#21200) --- keyboards/akko/acr87/acr87.c | 217 +++++++++++++ keyboards/akko/acr87/config.h | 53 ++++ keyboards/akko/acr87/halconf.h | 23 ++ keyboards/akko/acr87/info.json | 294 ++++++++++++++++++ keyboards/akko/acr87/keymaps/default/keymap.c | 79 +++++ keyboards/akko/acr87/keymaps/via/keymap.c | 79 +++++ keyboards/akko/acr87/keymaps/via/rules.mk | 1 + keyboards/akko/acr87/mcuconf.h | 24 ++ keyboards/akko/acr87/readme.md | 19 ++ keyboards/akko/acr87/rules.mk | 3 + 10 files changed, 792 insertions(+) create mode 100644 keyboards/akko/acr87/acr87.c create mode 100644 keyboards/akko/acr87/config.h create mode 100644 keyboards/akko/acr87/halconf.h create mode 100644 keyboards/akko/acr87/info.json create mode 100644 keyboards/akko/acr87/keymaps/default/keymap.c create mode 100644 keyboards/akko/acr87/keymaps/via/keymap.c create mode 100644 keyboards/akko/acr87/keymaps/via/rules.mk create mode 100644 keyboards/akko/acr87/mcuconf.h create mode 100644 keyboards/akko/acr87/readme.md create mode 100644 keyboards/akko/acr87/rules.mk diff --git a/keyboards/akko/acr87/acr87.c b/keyboards/akko/acr87/acr87.c new file mode 100644 index 000000000000..e175e21368ef --- /dev/null +++ b/keyboards/akko/acr87/acr87.c @@ -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 . + */ + +#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 diff --git a/keyboards/akko/acr87/config.h b/keyboards/akko/acr87/config.h new file mode 100644 index 000000000000..221cad86ad1c --- /dev/null +++ b/keyboards/akko/acr87/config.h @@ -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 . + */ + +#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 diff --git a/keyboards/akko/acr87/halconf.h b/keyboards/akko/acr87/halconf.h new file mode 100644 index 000000000000..2f64e65393a5 --- /dev/null +++ b/keyboards/akko/acr87/halconf.h @@ -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 . + */ +#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 diff --git a/keyboards/akko/acr87/info.json b/keyboards/akko/acr87/info.json new file mode 100644 index 000000000000..bcc6b23cb003 --- /dev/null +++ b/keyboards/akko/acr87/info.json @@ -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 } + + ] + } + } +} diff --git a/keyboards/akko/acr87/keymaps/default/keymap.c b/keyboards/akko/acr87/keymaps/default/keymap.c new file mode 100644 index 000000000000..88bfbc8e1fdc --- /dev/null +++ b/keyboards/akko/acr87/keymaps/default/keymap.c @@ -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 . + */ + +#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 diff --git a/keyboards/akko/acr87/keymaps/via/keymap.c b/keyboards/akko/acr87/keymaps/via/keymap.c new file mode 100644 index 000000000000..88bfbc8e1fdc --- /dev/null +++ b/keyboards/akko/acr87/keymaps/via/keymap.c @@ -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 . + */ + +#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 diff --git a/keyboards/akko/acr87/keymaps/via/rules.mk b/keyboards/akko/acr87/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/akko/acr87/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/akko/acr87/mcuconf.h b/keyboards/akko/acr87/mcuconf.h new file mode 100644 index 000000000000..0d16f4f04e46 --- /dev/null +++ b/keyboards/akko/acr87/mcuconf.h @@ -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 . + */ +#pragma once + +#include_next + +#undef WB32_SPI_USE_QSPI +#define WB32_SPI_USE_QSPI TRUE + +#undef WB32_I2C_USE_I2C1 +#define WB32_I2C_USE_I2C1 TRUE diff --git a/keyboards/akko/acr87/readme.md b/keyboards/akko/acr87/readme.md new file mode 100644 index 000000000000..a4f400ce761c --- /dev/null +++ b/keyboards/akko/acr87/readme.md @@ -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). diff --git a/keyboards/akko/acr87/rules.mk b/keyboards/akko/acr87/rules.mk new file mode 100644 index 000000000000..0dc7a3314204 --- /dev/null +++ b/keyboards/akko/acr87/rules.mk @@ -0,0 +1,3 @@ +EEPROM_DRIVER = wear_leveling +WEAR_LEVELING_DRIVER = spi_flash + From 8f980ea69fcebfc70e716da27907ce13940657a1 Mon Sep 17 00:00:00 2001 From: "jonylee@hfd" <108282809+jonylee1986@users.noreply.github.com> Date: Thu, 15 Jun 2023 12:25:23 +0800 Subject: [PATCH 42/46] [Keyboard] add top40 keyboard. (#21199) Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> --- keyboards/akko/top40/config.h | 52 +++++ keyboards/akko/top40/halconf.h | 23 +++ keyboards/akko/top40/info.json | 188 ++++++++++++++++++ keyboards/akko/top40/keymaps/default/keymap.c | 37 ++++ keyboards/akko/top40/keymaps/via/keymap.c | 37 ++++ keyboards/akko/top40/keymaps/via/rules.mk | 1 + keyboards/akko/top40/mcuconf.h | 24 +++ keyboards/akko/top40/readme.md | 19 ++ keyboards/akko/top40/rules.mk | 6 + keyboards/akko/top40/top40.c | 125 ++++++++++++ 10 files changed, 512 insertions(+) create mode 100644 keyboards/akko/top40/config.h create mode 100644 keyboards/akko/top40/halconf.h create mode 100644 keyboards/akko/top40/info.json create mode 100644 keyboards/akko/top40/keymaps/default/keymap.c create mode 100644 keyboards/akko/top40/keymaps/via/keymap.c create mode 100644 keyboards/akko/top40/keymaps/via/rules.mk create mode 100644 keyboards/akko/top40/mcuconf.h create mode 100644 keyboards/akko/top40/readme.md create mode 100644 keyboards/akko/top40/rules.mk create mode 100644 keyboards/akko/top40/top40.c diff --git a/keyboards/akko/top40/config.h b/keyboards/akko/top40/config.h new file mode 100644 index 000000000000..bd849292e6af --- /dev/null +++ b/keyboards/akko/top40/config.h @@ -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 . + */ + +#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 + diff --git a/keyboards/akko/top40/halconf.h b/keyboards/akko/top40/halconf.h new file mode 100644 index 000000000000..2f64e65393a5 --- /dev/null +++ b/keyboards/akko/top40/halconf.h @@ -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 . + */ +#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 diff --git a/keyboards/akko/top40/info.json b/keyboards/akko/top40/info.json new file mode 100644 index 000000000000..e7b3a5d01ff1 --- /dev/null +++ b/keyboards/akko/top40/info.json @@ -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 } + ] + } + } +} diff --git a/keyboards/akko/top40/keymaps/default/keymap.c b/keyboards/akko/top40/keymaps/default/keymap.c new file mode 100644 index 000000000000..fb9df1623552 --- /dev/null +++ b/keyboards/akko/top40/keymaps/default/keymap.c @@ -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 . + */ + +#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) +}; diff --git a/keyboards/akko/top40/keymaps/via/keymap.c b/keyboards/akko/top40/keymaps/via/keymap.c new file mode 100644 index 000000000000..fb9df1623552 --- /dev/null +++ b/keyboards/akko/top40/keymaps/via/keymap.c @@ -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 . + */ + +#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) +}; diff --git a/keyboards/akko/top40/keymaps/via/rules.mk b/keyboards/akko/top40/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/akko/top40/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/akko/top40/mcuconf.h b/keyboards/akko/top40/mcuconf.h new file mode 100644 index 000000000000..0d16f4f04e46 --- /dev/null +++ b/keyboards/akko/top40/mcuconf.h @@ -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 . + */ +#pragma once + +#include_next + +#undef WB32_SPI_USE_QSPI +#define WB32_SPI_USE_QSPI TRUE + +#undef WB32_I2C_USE_I2C1 +#define WB32_I2C_USE_I2C1 TRUE diff --git a/keyboards/akko/top40/readme.md b/keyboards/akko/top40/readme.md new file mode 100644 index 000000000000..87a2287b934f --- /dev/null +++ b/keyboards/akko/top40/readme.md @@ -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). diff --git a/keyboards/akko/top40/rules.mk b/keyboards/akko/top40/rules.mk new file mode 100644 index 000000000000..b753f0682e56 --- /dev/null +++ b/keyboards/akko/top40/rules.mk @@ -0,0 +1,6 @@ +# Build Options +# change yes to no to disable +# +EEPROM_DRIVER = wear_leveling +WEAR_LEVELING_DRIVER = spi_flash + diff --git a/keyboards/akko/top40/top40.c b/keyboards/akko/top40/top40.c new file mode 100644 index 000000000000..7fe193447dc6 --- /dev/null +++ b/keyboards/akko/top40/top40.c @@ -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 . + */ + +#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 \ No newline at end of file From 66f06a175f13851ae1d3c37a85b1d2d3ffea58b7 Mon Sep 17 00:00:00 2001 From: Sleepdealr <35879391+Sleepdealr@users.noreply.github.com> Date: Thu, 15 Jun 2023 00:28:06 -0400 Subject: [PATCH 43/46] [Keyboard] Add Artemis Paragon (#20910) Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/artemis/paragon/hotswap/info.json | 6 + keyboards/artemis/paragon/hotswap/rules.mk | 1 + keyboards/artemis/paragon/info.json | 122 ++++++++++++++++++ .../artemis/paragon/keymaps/default/keymap.c | 33 +++++ .../artemis/paragon/keymaps/default/rules.mk | 1 + .../artemis/paragon/keymaps/via/keymap.c | 33 +++++ .../artemis/paragon/keymaps/via/rules.mk | 2 + keyboards/artemis/paragon/readme.md | 23 ++++ keyboards/artemis/paragon/soldered/info.json | 6 + keyboards/artemis/paragon/soldered/rules.mk | 1 + 10 files changed, 228 insertions(+) create mode 100644 keyboards/artemis/paragon/hotswap/info.json create mode 100644 keyboards/artemis/paragon/hotswap/rules.mk create mode 100644 keyboards/artemis/paragon/info.json create mode 100644 keyboards/artemis/paragon/keymaps/default/keymap.c create mode 100644 keyboards/artemis/paragon/keymaps/default/rules.mk create mode 100644 keyboards/artemis/paragon/keymaps/via/keymap.c create mode 100644 keyboards/artemis/paragon/keymaps/via/rules.mk create mode 100644 keyboards/artemis/paragon/readme.md create mode 100644 keyboards/artemis/paragon/soldered/info.json create mode 100644 keyboards/artemis/paragon/soldered/rules.mk diff --git a/keyboards/artemis/paragon/hotswap/info.json b/keyboards/artemis/paragon/hotswap/info.json new file mode 100644 index 000000000000..c57b49a047d4 --- /dev/null +++ b/keyboards/artemis/paragon/hotswap/info.json @@ -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"] + } +} diff --git a/keyboards/artemis/paragon/hotswap/rules.mk b/keyboards/artemis/paragon/hotswap/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/artemis/paragon/hotswap/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/artemis/paragon/info.json b/keyboards/artemis/paragon/info.json new file mode 100644 index 000000000000..2a2cf046a85a --- /dev/null +++ b/keyboards/artemis/paragon/info.json @@ -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 } + ] + } + } +} diff --git a/keyboards/artemis/paragon/keymaps/default/keymap.c b/keyboards/artemis/paragon/keymaps/default/keymap.c new file mode 100644 index 000000000000..d980180a347b --- /dev/null +++ b/keyboards/artemis/paragon/keymaps/default/keymap.c @@ -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 . +*/ + +#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 diff --git a/keyboards/artemis/paragon/keymaps/default/rules.mk b/keyboards/artemis/paragon/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/artemis/paragon/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/artemis/paragon/keymaps/via/keymap.c b/keyboards/artemis/paragon/keymaps/via/keymap.c new file mode 100644 index 000000000000..84f5735d97b4 --- /dev/null +++ b/keyboards/artemis/paragon/keymaps/via/keymap.c @@ -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 . +*/ + +#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 diff --git a/keyboards/artemis/paragon/keymaps/via/rules.mk b/keyboards/artemis/paragon/keymaps/via/rules.mk new file mode 100644 index 000000000000..f1adcab005e8 --- /dev/null +++ b/keyboards/artemis/paragon/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/artemis/paragon/readme.md b/keyboards/artemis/paragon/readme.md new file mode 100644 index 000000000000..287d141ccc67 --- /dev/null +++ b/keyboards/artemis/paragon/readme.md @@ -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 diff --git a/keyboards/artemis/paragon/soldered/info.json b/keyboards/artemis/paragon/soldered/info.json new file mode 100644 index 000000000000..5158add71e2b --- /dev/null +++ b/keyboards/artemis/paragon/soldered/info.json @@ -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"] + } +} diff --git a/keyboards/artemis/paragon/soldered/rules.mk b/keyboards/artemis/paragon/soldered/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/artemis/paragon/soldered/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 9b36ec53512f89ee834a894e23a64a8b4fcf3fc8 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Thu, 15 Jun 2023 05:18:56 -0700 Subject: [PATCH 44/46] DOIO KB30 Refactor (#21250) * refactor keymaps - remove extra blank lines - convert tabs to spaces - use four-space indent - grid-align keycodes - use QMK-native keycode aliases * info.json: correct layout data * add readme.md * info.json: correct maintainer field Updates the value to reference the maintainer's GitHub username. --- keyboards/doio/kb30/info.json | 42 ++++++----- keyboards/doio/kb30/keymaps/default/keymap.c | 74 ++++++++------------ keyboards/doio/kb30/keymaps/via/keymap.c | 63 ++++++++--------- keyboards/doio/kb30/readme.md | 27 +++++++ 4 files changed, 103 insertions(+), 103 deletions(-) create mode 100644 keyboards/doio/kb30/readme.md diff --git a/keyboards/doio/kb30/info.json b/keyboards/doio/kb30/info.json index 3f3fa1c33270..71a300b9cd81 100644 --- a/keyboards/doio/kb30/info.json +++ b/keyboards/doio/kb30/info.json @@ -2,7 +2,7 @@ "keyboard_name": "KB30-01", "manufacturer": "DOIO", "url": "", - "maintainer": "Alice", + "maintainer": "DOIO2022", "usb": { "vid": "0xD010", "pid": "0x3001", @@ -49,33 +49,31 @@ {"matrix": [1, 5], "x": 5.25, "y": 1}, {"matrix": [1, 6], "x": 6.25, "y": 1}, - {"matrix": [2, 0], "x": 8.25, "y": 2}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, - {"matrix": [2, 1], "x": 0, "y": 2}, - {"matrix": [2, 2], "x": 1, "y": 2}, - {"matrix": [2, 3], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 4.25, "y": 2}, + {"matrix": [2, 4], "x": 5.25, "y": 2}, + {"matrix": [2, 5], "x": 6.25, "y": 2}, - {"matrix": [2, 4], "x": 4.25, "y": 2}, - {"matrix": [2, 5], "x": 5.25, "y": 2}, - {"matrix": [3, 0], "x": 6.25, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3, "h": 2}, - {"matrix": [3, 1], "x": 11, "y": 2}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, - {"matrix": [3, 2], "x": 0, "y": 3}, - {"matrix": [3, 3], "x": 1, "y": 3}, - {"matrix": [3, 5], "x": 2, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 2}, + {"matrix": [4, 1], "x": 2, "y": 4}, - {"matrix": [4, 0], "x": 4.25, "y": 3, "h": 2}, - {"matrix": [4, 1], "x": 5.25, "y": 3}, + {"matrix": [4, 2], "x": 4.25, "y": 4}, + {"matrix": [4, 3], "x": 5.25, "y": 4}, + {"matrix": [4, 4], "x": 6.25, "y": 4}, - {"matrix": [4, 2], "x": 9, "y": 4}, - - {"matrix": [4, 3], "x": 0, "y": 4, "w": 2}, - {"matrix": [4, 4], "x": 2, "y": 4}, - - {"matrix": [5, 4], "x": 4.25, "y": 4}, - {"matrix": [5, 5], "x": 5.25, "y": 4}, - {"matrix": [5, 6], "x": 6.25, "y": 4} + {"matrix": [5, 4], "x": 7.75, "y": 1}, + {"matrix": [5, 5], "x": 9.75, "y": 1}, + {"matrix": [5, 6], "x": 7.75, "y": 2, "w": 3, "h": 3} ] } } diff --git a/keyboards/doio/kb30/keymaps/default/keymap.c b/keyboards/doio/kb30/keymaps/default/keymap.c index fb06acfd8034..2e385d24e308 100644 --- a/keyboards/doio/kb30/keymaps/default/keymap.c +++ b/keyboards/doio/kb30/keymaps/default/keymap.c @@ -15,65 +15,47 @@ * along with this program. If not, see . */ - #include QMK_KEYBOARD_H - enum layer_names { -_LAY0, -_LAY1, -_LAY2, -_LAY3 + _LAY0, + _LAY1, + _LAY2, + _LAY3 }; - - - - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LAY0] = LAYOUT( - KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_PSCR, KC_SCRL, KC_PAUSE, - KC_P7, KC_P8, KC_P9, KC_PPLS, KC_INS, KC_HOME, KC_PGUP, - KC_P4, KC_P5, KC_P6, KC_DEL, KC_END, KC_PGDN, - KC_P1, KC_P2, KC_P3, LT(3,KC_PENT), KC_UP, - KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, - KC_MPLY, TO(1), KC_TRNS), + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_PSCR, KC_SCRL, KC_PAUS, + KC_P7, KC_P8, KC_P9, KC_PPLS, KC_INS, KC_HOME, KC_PGUP, + KC_P4, KC_P5, KC_P6, KC_DEL, KC_END, KC_PGDN, + KC_P1, KC_P2, KC_P3, LT(3,KC_PENT), KC_UP, + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, + KC_MPLY, TO(1), KC_TRNS), [_LAY1] = LAYOUT( - 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, TO(2), 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, TO(2), KC_TRNS), [_LAY2] = LAYOUT( - 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, TO(3), 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, TO(3), KC_TRNS), [_LAY3] = LAYOUT( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_SPI, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_SAD, RGB_SPD, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, - KC_TRNS, KC_TRNS, RGB_VAD, RGB_TOG, RGB_VAI, - KC_TRNS, TO(0), KC_TRNS) + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_SPI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_SAD, RGB_SPD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, + KC_TRNS, KC_TRNS, RGB_VAD, RGB_TOG, RGB_VAI, + KC_TRNS, TO(0), KC_TRNS) }; - - - - - - - - - - - - #ifdef ENCODER_MAP_ENABLE const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_LAY0] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, diff --git a/keyboards/doio/kb30/keymaps/via/keymap.c b/keyboards/doio/kb30/keymaps/via/keymap.c index 2890fe604a1c..2e385d24e308 100644 --- a/keyboards/doio/kb30/keymaps/via/keymap.c +++ b/keyboards/doio/kb30/keymaps/via/keymap.c @@ -15,54 +15,47 @@ * along with this program. If not, see . */ - #include QMK_KEYBOARD_H - enum layer_names { -_LAY0, -_LAY1, -_LAY2, -_LAY3 + _LAY0, + _LAY1, + _LAY2, + _LAY3 }; - - - - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LAY0] = LAYOUT( - KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_PSCR, KC_SCRL, KC_PAUSE, - KC_P7, KC_P8, KC_P9, KC_PPLS, KC_INS, KC_HOME, KC_PGUP, - KC_P4, KC_P5, KC_P6, KC_DEL, KC_END, KC_PGDN, - KC_P1, KC_P2, KC_P3, LT(3,KC_PENT), KC_UP, - KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, - KC_MPLY, TO(1), KC_TRNS), + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_PSCR, KC_SCRL, KC_PAUS, + KC_P7, KC_P8, KC_P9, KC_PPLS, KC_INS, KC_HOME, KC_PGUP, + KC_P4, KC_P5, KC_P6, KC_DEL, KC_END, KC_PGDN, + KC_P1, KC_P2, KC_P3, LT(3,KC_PENT), KC_UP, + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, + KC_MPLY, TO(1), KC_TRNS), [_LAY1] = LAYOUT( - 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, TO(2), 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, TO(2), KC_TRNS), [_LAY2] = LAYOUT( - 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, TO(3), 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, TO(3), KC_TRNS), [_LAY3] = LAYOUT( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_SPI, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_SAD, RGB_SPD, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, - KC_TRNS, KC_TRNS, RGB_VAD, RGB_TOG, RGB_VAI, - KC_TRNS, TO(0), KC_TRNS) + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_SPI, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_SAD, RGB_SPD, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, + KC_TRNS, KC_TRNS, RGB_VAD, RGB_TOG, RGB_VAI, + KC_TRNS, TO(0), KC_TRNS) }; - #ifdef ENCODER_MAP_ENABLE const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [_LAY0] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, diff --git a/keyboards/doio/kb30/readme.md b/keyboards/doio/kb30/readme.md new file mode 100644 index 000000000000..9e66c8993fa1 --- /dev/null +++ b/keyboards/doio/kb30/readme.md @@ -0,0 +1,27 @@ +# Megalodon DOIO 30% Designer Keyboard + +![Megalodon DOIO 30% Designer Keyboard](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/doio/kb30/KB30-01-_0000_778b3a43-228a-433d-94ae-9129f20b2ede_1024xc.jpg) + +A hotswappable 30-key macropad with 3 rotary encoders (2 are clickable), an OLED screen, and RGB lighting. + +* Keyboard Maintainer: [DOIO2022](https://github.com/DOIO2022) +* Hardware Supported: Megalodon DOIO 30% Designer Keyboard with STM32F103 +* Hardware Availability: [KeebMonkey](https://www.keebmonkey.com/products/megalodon-doio-30-designer-keyboard) + +Make example for this keyboard (after setting up your build environment): + + make doio/kb30:default + +## Accessing Bootloader Mode and Flashing + +To access Bootloader Mode, do one of the following: + +* **Bootmagic reset**: Hold the top left key of the keyboard while connecting the USB cable. +* **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. + +Flashing example for this keyboard: + + make doio/kb30: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). From 5263dfb88d321b520925f21a481406d591bf1a61 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Thu, 15 Jun 2023 13:56:07 -0700 Subject: [PATCH 45/46] ButterKeebs PocketPad: correct layout data (#21256) --- keyboards/butterkeebs/pocketpad/info.json | 34 +++++++++++------------ 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/keyboards/butterkeebs/pocketpad/info.json b/keyboards/butterkeebs/pocketpad/info.json index db5258283043..0b42d5fb17ec 100644 --- a/keyboards/butterkeebs/pocketpad/info.json +++ b/keyboards/butterkeebs/pocketpad/info.json @@ -25,28 +25,28 @@ "layouts": { "LAYOUT": { "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": 1, "y": 0, "matrix": [0, 0]}, + {"x": 2, "y": 0, "matrix": [0, 1]}, + {"x": 3, "y": 0, "matrix": [0, 2]}, + {"x": 4, "y": 0, "matrix": [0, 3]}, - {"x": 0, "y": 1, "matrix": [1, 0]}, - {"x": 1, "y": 1, "matrix": [1, 1]}, - {"x": 2, "y": 1, "matrix": [1, 2]}, - {"x": 3, "y": 1, "matrix": [1, 3]}, + {"x": 1, "y": 1, "matrix": [1, 0]}, + {"x": 2, "y": 1, "matrix": [1, 1]}, + {"x": 3, "y": 1, "matrix": [1, 2]}, + {"x": 4, "y": 1.5, "matrix": [1, 3]}, - {"x": 0, "y": 2, "matrix": [2, 0]}, - {"x": 1, "y": 2, "matrix": [2, 1]}, - {"x": 2, "y": 2, "matrix": [2, 2]}, - {"x": 3, "y": 2, "matrix": [2, 3]}, + {"x": 1, "y": 2, "matrix": [2, 0]}, + {"x": 2, "y": 2, "matrix": [2, 1]}, + {"x": 3, "y": 2, "matrix": [2, 2]}, + {"x": 4, "y": 3.5, "matrix": [2, 3]}, - {"x": 0, "y": 3, "matrix": [3, 0]}, - {"x": 1, "y": 3, "matrix": [3, 1]}, - {"x": 2, "y": 3, "matrix": [3, 2]}, - {"x": 3, "y": 3, "matrix": [3, 3]}, + {"x": 1, "y": 3, "matrix": [3, 0]}, + {"x": 2, "y": 3, "matrix": [3, 1]}, + {"x": 3, "y": 3, "matrix": [3, 2]}, + {"x": 3, "y": 4, "matrix": [3, 3]}, {"x": 0, "y": 4, "matrix": [4, 0]}, - {"x": 1, "y": 4, "matrix": [4, 1]} + {"x": 1.5, "y": 4, "matrix": [4, 1]} ] } } From 94311e4dc27e603b6c421d2773a5f82275a24411 Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Thu, 15 Jun 2023 13:57:13 -0700 Subject: [PATCH 46/46] Alas: ISO Layouts Fix and Matrix Diagram (#21255) --- keyboards/alas/info.json | 90 ++++++++++++++++---------------- keyboards/alas/matrix_diagram.md | 24 +++++++++ 2 files changed, 69 insertions(+), 45 deletions(-) create mode 100644 keyboards/alas/matrix_diagram.md diff --git a/keyboards/alas/info.json b/keyboards/alas/info.json index b3db25d2d815..6c2beff27ebf 100755 --- a/keyboards/alas/info.json +++ b/keyboards/alas/info.json @@ -326,21 +326,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": [1, 13], "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": [1, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, {"matrix": [3, 1], "x": 1.25, "y": 3}, @@ -397,21 +397,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": [1, 13], "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": [1, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, {"matrix": [3, 1], "x": 1.25, "y": 3}, @@ -468,21 +468,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": [1, 13], "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": [1, 13], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, {"matrix": [3, 1], "x": 1.25, "y": 3}, diff --git a/keyboards/alas/matrix_diagram.md b/keyboards/alas/matrix_diagram.md new file mode 100644 index 000000000000..87e5844f55af --- /dev/null +++ b/keyboards/alas/matrix_diagram.md @@ -0,0 +1,24 @@ +# Matrix Diagram for Yiancar-Designs Alas + +``` + ┌───────┐ + 2u Backspace │0D │ + └───────┘ +┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ +│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │2C │ +├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌─────┐ +│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ │ │ +├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐2D │ ISO Enter +│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ │1D │ │ +├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ └───┴────┘ +│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ +├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ +│40 │41 │42 │46 │4A │4B │4C │4D │ +└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ +┌────────┐ ┌──────────┐ +│30 │ 2.25u LShift 2.75u RShift │3C │ +└────────┘ └──────────┘ +┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ +│40 │41 │42 │46 │4B │4C │4D │ Tsangan/WKL/HHKB +└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ +```