From 4822ba3c4150a15f089e193dcb5d867862b14be9 Mon Sep 17 00:00:00 2001 From: 4pplet <4pplet@protonmail.com> Date: Sun, 31 Jan 2021 16:16:25 +0100 Subject: [PATCH 01/23] enable rgb underglow for VIA-firmware --- keyboards/4pplet/aekiso60/keymaps/via/rules.mk | 1 + keyboards/4pplet/steezy60/keymaps/via/rules.mk | 1 + 2 files changed, 2 insertions(+) diff --git a/keyboards/4pplet/aekiso60/keymaps/via/rules.mk b/keyboards/4pplet/aekiso60/keymaps/via/rules.mk index 1e5b99807cb7..c4b503281b31 100644 --- a/keyboards/4pplet/aekiso60/keymaps/via/rules.mk +++ b/keyboards/4pplet/aekiso60/keymaps/via/rules.mk @@ -1 +1,2 @@ VIA_ENABLE = yes +RGBLIGHT_ENABLE = yes \ No newline at end of file diff --git a/keyboards/4pplet/steezy60/keymaps/via/rules.mk b/keyboards/4pplet/steezy60/keymaps/via/rules.mk index 1e5b99807cb7..c4b503281b31 100644 --- a/keyboards/4pplet/steezy60/keymaps/via/rules.mk +++ b/keyboards/4pplet/steezy60/keymaps/via/rules.mk @@ -1 +1,2 @@ VIA_ENABLE = yes +RGBLIGHT_ENABLE = yes \ No newline at end of file From 1bb162af422c06c3946ea2919afb68fe0b661d78 Mon Sep 17 00:00:00 2001 From: 4pplet <4pplet@protonmail.com> Date: Mon, 5 Apr 2021 14:21:00 +0200 Subject: [PATCH 02/23] update master branch from remote --- lib/chibios | 2 +- lib/chibios-contrib | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/chibios b/lib/chibios index ffe54d63cb10..313416b8fda9 160000 --- a/lib/chibios +++ b/lib/chibios @@ -1 +1 @@ -Subproject commit ffe54d63cb10a355add318f8e922e39f1c3d4bfd +Subproject commit 313416b8fda90d9973a749a0a35970956852c286 diff --git a/lib/chibios-contrib b/lib/chibios-contrib index 61baa6b03613..e3a3a2404771 160000 --- a/lib/chibios-contrib +++ b/lib/chibios-contrib @@ -1 +1 @@ -Subproject commit 61baa6b036138c155f7cfc5646d833d9423f3243 +Subproject commit e3a3a24047717af33b098266e11c2e4e5102206a From 3d4c946fefceb5a0cfc9e1bb2734fcdec6b31525 Mon Sep 17 00:00:00 2001 From: 4pplet Date: Thu, 29 Apr 2021 10:31:38 +0200 Subject: [PATCH 03/23] cont --- lib/chibios | 2 +- lib/chibios-contrib | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/chibios b/lib/chibios index 313416b8fda9..ffe54d63cb10 160000 --- a/lib/chibios +++ b/lib/chibios @@ -1 +1 @@ -Subproject commit 313416b8fda90d9973a749a0a35970956852c286 +Subproject commit ffe54d63cb10a355add318f8e922e39f1c3d4bfd diff --git a/lib/chibios-contrib b/lib/chibios-contrib index e3a3a2404771..61baa6b03613 160000 --- a/lib/chibios-contrib +++ b/lib/chibios-contrib @@ -1 +1 @@ -Subproject commit e3a3a24047717af33b098266e11c2e4e5102206a +Subproject commit 61baa6b036138c155f7cfc5646d833d9423f3243 From 1fd49873eed89ec1a4a82764544f2ca950b082eb Mon Sep 17 00:00:00 2001 From: 4pplet Date: Tue, 22 Mar 2022 11:10:41 +0100 Subject: [PATCH 04/23] Added build command for rev c and bootloader instruction in the main readme Added build command for rev c and bootloader instruction in the main readme --- keyboards/4pplet/waffling60/readme.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/keyboards/4pplet/waffling60/readme.md b/keyboards/4pplet/waffling60/readme.md index bf5fda880387..374b56ffba62 100644 --- a/keyboards/4pplet/waffling60/readme.md +++ b/keyboards/4pplet/waffling60/readme.md @@ -11,5 +11,12 @@ Make example for this keyboard (after setting up your build environment): make 4pplet/waffling60/rev_a:default make 4pplet/waffling60/rev_b:default + make 4pplet/waffling60/rev_c: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). + +How to enter bootloader (DFU): +* Tap the physical reset button or short the reset-header (labled RESET) on tha back of the PCB for keyboard to enter DFU. When in DFU, it's ready to flash the firmware. + +Alternative option if the firmware is already pre-flashed: +* Unplug your keyboard, hold down the Spacebar and B at the same time, plug in your keyboard and wait a second before releasing the keys. The keyboard will enter DFU and is ready to flash the firmware. From e6b2459966df7842c38f63aa70df4ab191a503d1 Mon Sep 17 00:00:00 2001 From: 4pplet Date: Tue, 4 Oct 2022 11:59:46 +0200 Subject: [PATCH 05/23] Squashed commit of the following: commit b33814211e121a9f51b01cc6eb08e33061ecfc64 Author: 4pplet Date: Tue Oct 4 11:58:47 2022 +0200 Delete chconf.h commit 107b979ae8bbdc0f644769c4e41e8b4e75795da9 Author: 4pplet Date: Mon Oct 3 22:11:01 2022 +0200 cont commit ab054d835d4190bbed4e58a40453cc08135f274b Author: 4pplet Date: Mon Oct 3 14:38:13 2022 +0200 Update config.h commit 05c1347c66987c33d61710f2e14eb672809a0852 Author: 4pplet Date: Mon Oct 3 14:04:46 2022 +0200 cont commit a31c42623e6b76b6cd27461e3df164f91941f6f9 Author: 4pplet Date: Mon Oct 3 13:20:24 2022 +0200 cont commit d6aa8394ca8eeb50711600487f12d1b05834581e Author: 4pplet Date: Fri Sep 23 09:32:47 2022 +0200 cont, compiles but not tested on hardware commit f5a45ceeb55ba8cf2b215bfbae9139d9ff546853 Author: 4pplet Date: Thu Sep 22 18:12:10 2022 +0200 cont commit 2f5ab0074a18816c7e9b01ca45df772fa6162398 Author: 4pplet Date: Wed Sep 21 23:13:55 2022 +0200 initial commit --- .../{ => rev_a}/keymaps/default/keymap.c | 0 .../{ => rev_a}/keymaps/via/keymap.c | 0 .../{ => rev_a}/keymaps/via/rules.mk | 0 .../4pplet/eagle_viper_rep/rev_b/config.h | 76 +++++++++++++++ .../4pplet/eagle_viper_rep/rev_b/halconf.h | 25 +++++ .../4pplet/eagle_viper_rep/rev_b/info.json | 16 ++++ .../rev_b/keymaps/default/keymap.c | 34 +++++++ .../rev_b/keymaps/via/keymap.c | 55 +++++++++++ .../rev_b/keymaps/via/rules.mk | 1 + .../4pplet/eagle_viper_rep/rev_b/mcuconf.h | 25 +++++ .../4pplet/eagle_viper_rep/rev_b/readme.md | 20 ++++ .../4pplet/eagle_viper_rep/rev_b/rev_b.c | 96 +++++++++++++++++++ .../4pplet/eagle_viper_rep/rev_b/rev_b.h | 41 ++++++++ .../4pplet/eagle_viper_rep/rev_b/rules.mk | 23 +++++ 14 files changed, 412 insertions(+) rename keyboards/4pplet/eagle_viper_rep/{ => rev_a}/keymaps/default/keymap.c (100%) rename keyboards/4pplet/eagle_viper_rep/{ => rev_a}/keymaps/via/keymap.c (100%) rename keyboards/4pplet/eagle_viper_rep/{ => rev_a}/keymaps/via/rules.mk (100%) create mode 100644 keyboards/4pplet/eagle_viper_rep/rev_b/config.h create mode 100644 keyboards/4pplet/eagle_viper_rep/rev_b/halconf.h create mode 100644 keyboards/4pplet/eagle_viper_rep/rev_b/info.json create mode 100644 keyboards/4pplet/eagle_viper_rep/rev_b/keymaps/default/keymap.c create mode 100644 keyboards/4pplet/eagle_viper_rep/rev_b/keymaps/via/keymap.c create mode 100644 keyboards/4pplet/eagle_viper_rep/rev_b/keymaps/via/rules.mk create mode 100644 keyboards/4pplet/eagle_viper_rep/rev_b/mcuconf.h create mode 100644 keyboards/4pplet/eagle_viper_rep/rev_b/readme.md create mode 100644 keyboards/4pplet/eagle_viper_rep/rev_b/rev_b.c create mode 100644 keyboards/4pplet/eagle_viper_rep/rev_b/rev_b.h create mode 100644 keyboards/4pplet/eagle_viper_rep/rev_b/rules.mk diff --git a/keyboards/4pplet/eagle_viper_rep/keymaps/default/keymap.c b/keyboards/4pplet/eagle_viper_rep/rev_a/keymaps/default/keymap.c similarity index 100% rename from keyboards/4pplet/eagle_viper_rep/keymaps/default/keymap.c rename to keyboards/4pplet/eagle_viper_rep/rev_a/keymaps/default/keymap.c diff --git a/keyboards/4pplet/eagle_viper_rep/keymaps/via/keymap.c b/keyboards/4pplet/eagle_viper_rep/rev_a/keymaps/via/keymap.c similarity index 100% rename from keyboards/4pplet/eagle_viper_rep/keymaps/via/keymap.c rename to keyboards/4pplet/eagle_viper_rep/rev_a/keymaps/via/keymap.c diff --git a/keyboards/4pplet/eagle_viper_rep/keymaps/via/rules.mk b/keyboards/4pplet/eagle_viper_rep/rev_a/keymaps/via/rules.mk similarity index 100% rename from keyboards/4pplet/eagle_viper_rep/keymaps/via/rules.mk rename to keyboards/4pplet/eagle_viper_rep/rev_a/keymaps/via/rules.mk diff --git a/keyboards/4pplet/eagle_viper_rep/rev_b/config.h b/keyboards/4pplet/eagle_viper_rep/rev_b/config.h new file mode 100644 index 000000000000..fb71feef9fc9 --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_b/config.h @@ -0,0 +1,76 @@ +/* +Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#define MATRIX_ROWS 10 +#define MATRIX_COLS 7 + +#define MATRIX_COL_PINS { A0, A3, A4, A7, B5, B4, B3 } +#define MATRIX_ROW_PINS { A2, A1, B8, A10, C15, A15, B7, B6, C14, C13} +#define DIODE_DIRECTION COL2ROW + +/* In switch leds */ +#define BACKLIGHT_PIN A6 +#define BACKLIGHT_PWM_DRIVER PWMD3 +#define BACKLIGHT_PWM_CHANNEL 1 +#define BACKLIGHT_PAL_MODE 1 +#define BACKLIGHT_LEVELS 6 +#define BACKLIGHT_BREATHING +#define BREATHING_PERIOD 6 +#define BACKLIGHT_ON_STATE 1 + +/* Underglow */ +#define RGBLED_NUM 16 +#define WS2812_EXTERNAL_PULLUP +#define RGB_DI_PIN A8 + +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE + +/* 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 + +/* Indicator leds */ +#define LOCK_LIGHTS TRUE +#define DISPLAY_LAYERS TRUE +#define CAPS_PIN B1 +#define NUM_PIN B12 +#define SCROLL_PIN B13 +#define LAYER_1 B14 +#define LAYER_2 B15 +#define LAYER_3 B0 +#define LAYER_4 B9 +#define LAYER_5 A9 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 5 + +/* Added extra layer for use of layer leds */ +#define DYNAMIC_KEYMAP_LAYER_COUNT 5 diff --git a/keyboards/4pplet/eagle_viper_rep/rev_b/halconf.h b/keyboards/4pplet/eagle_viper_rep/rev_b/halconf.h new file mode 100644 index 000000000000..6eb53aeebddd --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_b/halconf.h @@ -0,0 +1,25 @@ +/* +Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#define HAL_USE_I2C FALSE + +#define HAL_USE_PWM TRUE + +#define HAL_USE_SPI FALSE + +#include_next diff --git a/keyboards/4pplet/eagle_viper_rep/rev_b/info.json b/keyboards/4pplet/eagle_viper_rep/rev_b/info.json new file mode 100644 index 000000000000..0a86c6fab9f7 --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_b/info.json @@ -0,0 +1,16 @@ +{ + "keyboard_name": "Eagle Viper REP Rev B", + "manufacturer": "4pplet", + "url": "https://github.com/4pplet/eagle_viper_rep", + "maintainer": "4pplet", + "usb": { + "vid": "0x4444", + "pid": "0x0010", + "device_version": "0.0.2" + }, + "layouts": { + "LAYOUT": { + "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"1,0", "x":1, "y":0}, {"label":"0,1", "x":2, "y":0}, {"label":"1,1", "x":3, "y":0}, {"label":"0,2", "x":4, "y":0}, {"label":"1,2", "x":5, "y":0}, {"label":"0,3", "x":6, "y":0}, {"label":"1,3", "x":7, "y":0}, {"label":"0,4", "x":8, "y":0}, {"label":"1,4", "x":9, "y":0}, {"label":"0,5", "x":10, "y":0}, {"label":"1,5", "x":11, "y":0}, {"label":"0,6", "x":12, "y":0}, {"label":"1,6", "x":13, "y":0}, {"label":"3,6", "x":14, "y":0}, {"label":"2,0", "x":0, "y":1, "w":1.5}, {"label":"3,0", "x":1.5, "y":1}, {"label":"2,1", "x":2.5, "y":1}, {"label":"3,1", "x":3.5, "y":1}, {"label":"2,2", "x":4.5, "y":1}, {"label":"3,2", "x":5.5, "y":1}, {"label":"2,3", "x":6.5, "y":1}, {"label":"3,3", "x":7.5, "y":1}, {"label":"2,4", "x":8.5, "y":1}, {"label":"3,4", "x":9.5, "y":1}, {"label":"2,5", "x":10.5, "y":1}, {"label":"3,5", "x":11.5, "y":1}, {"label":"2,6", "x":12.5, "y":1}, {"label":"5,6", "x":13.5, "y":1, "w":1.5}, {"label":"4,0", "x":0, "y":2, "w":1.75}, {"label":"5,0", "x":1.75, "y":2}, {"label":"4,1", "x":2.75, "y":2}, {"label":"5,1", "x":3.75, "y":2}, {"label":"4,2", "x":4.75, "y":2}, {"label":"5,2", "x":5.75, "y":2}, {"label":"4,3", "x":6.75, "y":2}, {"label":"5,3", "x":7.75, "y":2}, {"label":"4,4", "x":8.75, "y":2}, {"label":"5,4", "x":9.75, "y":2}, {"label":"4,5", "x":10.75, "y":2}, {"label":"5,5", "x":11.75, "y":2}, {"label":"4,6", "x":12.75, "y":2}, {"label":"7,6", "x":13.75, "y":2, "w":1.25}, {"label":"6,0", "x":0, "y":3, "w":1.25}, {"label":"7,0", "x":1.25, "y":3}, {"label":"6,1", "x":2.25, "y":3}, {"label":"7,1", "x":3.25, "y":3}, {"label":"6,2", "x":4.25, "y":3}, {"label":"7,2", "x":5.25, "y":3}, {"label":"6,3", "x":6.25, "y":3}, {"label":"7,3", "x":7.25, "y":3}, {"label":"6,4", "x":8.25, "y":3}, {"label":"7,4", "x":9.25, "y":3}, {"label":"6,5", "x":10.25, "y":3}, {"label":"7,5", "x":11.25, "y":3}, {"label":"6,6", "x":12.25, "y":3, "w":1.75}, {"label":"9,6", "x":14, "y":3}, {"label":"8,0", "x":0, "y":4, "w":1.25}, {"label":"9,0", "x":1.25, "y":4, "w":1.25}, {"label":"9,1", "x":2.5, "y":4, "w":1.25}, {"label":"9,2", "x":3.75, "y":4, "w":2.25}, {"label":"9,3", "x":6, "y":4, "w":1.25}, {"label":"9,4", "x":10, "y":4, "w":1.25}, {"label":"8,5", "x":11.25, "y":4, "w":1.25}, {"label":"9,5", "x":12.5, "y":4, "w":1.25}, {"label":"8,6", "x":13.75, "y":4, "w":1.25}, {"label":"8,4", "x":7, "y":9, "w":2.75}] + } + } +} diff --git a/keyboards/4pplet/eagle_viper_rep/rev_b/keymaps/default/keymap.c b/keyboards/4pplet/eagle_viper_rep/rev_b/keymaps/default/keymap.c new file mode 100644 index 000000000000..0692a3e853d7 --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_b/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* +Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// main layer +[0] = LAYOUT( + 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_GRV, + 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_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_RALT, KC_RGUI, MO(1)), + // basic function layer +[1] = LAYOUT( + 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_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_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, KC_TRNS) +}; diff --git a/keyboards/4pplet/eagle_viper_rep/rev_b/keymaps/via/keymap.c b/keyboards/4pplet/eagle_viper_rep/rev_b/keymaps/via/keymap.c new file mode 100644 index 000000000000..9c072b769efa --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_b/keymaps/via/keymap.c @@ -0,0 +1,55 @@ +/* +Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// main layer +[0] = LAYOUT( + 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_GRV, + 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_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_RALT, KC_RGUI, MO(1)), +// basic function layer +[1] = LAYOUT( + 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_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_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, KC_TRNS), +// extra layer for VIA +[2] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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 +[4] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/eagle_viper_rep/rev_b/keymaps/via/rules.mk b/keyboards/4pplet/eagle_viper_rep/rev_b/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_b/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/4pplet/eagle_viper_rep/rev_b/mcuconf.h b/keyboards/4pplet/eagle_viper_rep/rev_b/mcuconf.h new file mode 100644 index 000000000000..34ab876215de --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_b/mcuconf.h @@ -0,0 +1,25 @@ +/* +Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM1 +#define STM32_PWM_USE_TIM1 TRUE + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE diff --git a/keyboards/4pplet/eagle_viper_rep/rev_b/readme.md b/keyboards/4pplet/eagle_viper_rep/rev_b/readme.md new file mode 100644 index 000000000000..dff0f36801ed --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_b/readme.md @@ -0,0 +1,20 @@ +# Viper/Eagle REP Rev B + +A alternative PCB for Viper and Eagle V2 and V3 + +* Keyboard Maintainer: [4pplet](https://github.com/4pplet) +* Hardware Supported: Viper/Eagle REP Rev B + +Make example for this keyboard (after setting up your build environment): + + make 4pplet/eagle_viper_rep/rev_b: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). + +How to enter bootloader (DFU): +* Press and hold the button on the keyboard (the small one on the same side as the MCU) for more than 1 second. The keyboard will then enter bootloader (DFU) mode and it's ready to flash the firmware. + +* Note: If holding the button a shorter time, the keyboard will just reset. If you want to exit bootloader mode without flashing a firmware, dissconnect the keyboard from your PC and reconnect it. + +Alternative option if the firmware is already pre-flashed: +* Unplug your keyboard, hold down the Esc-key and at the same time, plug in your keyboard and wait a second before releasing the keys. Bootmagic lite is enabled by default. diff --git a/keyboards/4pplet/eagle_viper_rep/rev_b/rev_b.c b/keyboards/4pplet/eagle_viper_rep/rev_b/rev_b.c new file mode 100644 index 000000000000..f6fceea7a2ec --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_b/rev_b.c @@ -0,0 +1,96 @@ +/* +Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include "rev_b.h" + + + +void keyboard_pre_init_kb(void) { + setPinOutput(CAPS_PIN); + setPinOutput(SCROLL_PIN); + setPinOutput(NUM_PIN); + setPinOutput(LAYER_1); + setPinOutput(LAYER_2); + setPinOutput(LAYER_3); + setPinOutput(LAYER_4); + setPinOutput(LAYER_5); + keyboard_pre_init_user(); +} + +/* Set indicator leds to indicate lock states */ +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if (res && LOCK_LIGHTS) { + writePin(NUM_PIN, led_state.num_lock); + writePin(CAPS_PIN, led_state.caps_lock); + writePin(SCROLL_PIN, led_state.scroll_lock); + } + return true; +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + state = layer_state_set_user(state); + if(DISPLAY_LAYERS){ + setLayerLed(state); + } + return state; +} +/* Set indicator leds to indicate which layer is active */ +void setLayerLed(layer_state_t state){ + switch(get_highest_layer(state)){ + case 0 : + writePin(LAYER_1, 1); + writePin(LAYER_2, 0); + writePin(LAYER_3, 0); + writePin(LAYER_4, 0); + writePin(LAYER_5, 0); + break; + case 1 : + writePin(LAYER_1, 0); + writePin(LAYER_2, 1); + writePin(LAYER_3, 0); + writePin(LAYER_4, 0); + writePin(LAYER_5, 0); + break; + case 2 : + writePin(LAYER_1, 0); + writePin(LAYER_2, 0); + writePin(LAYER_3, 1); + writePin(LAYER_4, 0); + writePin(LAYER_5, 0); + break; + case 3 : + writePin(LAYER_1, 0); + writePin(LAYER_2, 0); + writePin(LAYER_3, 0); + writePin(LAYER_4, 1); + writePin(LAYER_5, 0); + break; + case 4 : + writePin(LAYER_1, 0); + writePin(LAYER_2, 0); + writePin(LAYER_3, 0); + writePin(LAYER_4, 0); + writePin(LAYER_5, 1); + break; + default : + writePin(LAYER_1, 0); + writePin(LAYER_2, 0); + writePin(LAYER_3, 0); + writePin(LAYER_4, 0); + writePin(LAYER_5, 0); + } +} diff --git a/keyboards/4pplet/eagle_viper_rep/rev_b/rev_b.h b/keyboards/4pplet/eagle_viper_rep/rev_b/rev_b.h new file mode 100644 index 000000000000..02dea9d1ca06 --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_b/rev_b.h @@ -0,0 +1,41 @@ +/* +Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#pragma once + +#include "quantum.h" + +void setLayerLed(layer_state_t state); + +#define LAYOUT( \ + k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k36, \ + k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k56,\ + k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k76,\ + k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k96,\ + k80, k90, k91, k92, k93, k84 ,k94, k85, k95, k86 \ +) \ +{ \ + {k00, k01, k02, k03, k04, k05, k06}, \ + {k10, k11, k12, k13, k14, k15, k16}, \ + {k20, k21, k22, k23, k24, k25, k26}, \ + {k30, k31, k32, k33, k34, k35, k36}, \ + {k40, k41, k42, k43, k44, k45, k46}, \ + {k50, k51, k52, k53, k54, k55, k56}, \ + {k60, k61, k62, k63, k64, k65, k66}, \ + {k70, k71, k72, k73, k74, k75, k76}, \ + {k80, KC_NO, KC_NO, KC_NO, k84, k85, k86}, \ + {k90, k91, k92, k93, k94, k95, k96} \ +} diff --git a/keyboards/4pplet/eagle_viper_rep/rev_b/rules.mk b/keyboards/4pplet/eagle_viper_rep/rev_b/rules.mk new file mode 100644 index 000000000000..877f1939f24d --- /dev/null +++ b/keyboards/4pplet/eagle_viper_rep/rev_b/rules.mk @@ -0,0 +1,23 @@ +# MCU name +MCU = STM32F072 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = yes +RGBLIGHT_ENABLE = yes + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -p FFFF -v FFFF + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE From 5c903d29927d9b1c15b7f8dd1f716f6ba37f7d71 Mon Sep 17 00:00:00 2001 From: 4pplet Date: Sun, 20 Nov 2022 12:29:22 +0100 Subject: [PATCH 06/23] Update keyboards/4pplet/eagle_viper_rep/rev_b/rev_b.c Co-authored-by: Drashna Jaelre --- .../4pplet/eagle_viper_rep/rev_b/rev_b.c | 54 ++++++------------- 1 file changed, 17 insertions(+), 37 deletions(-) diff --git a/keyboards/4pplet/eagle_viper_rep/rev_b/rev_b.c b/keyboards/4pplet/eagle_viper_rep/rev_b/rev_b.c index f6fceea7a2ec..7b16fd7ee347 100644 --- a/keyboards/4pplet/eagle_viper_rep/rev_b/rev_b.c +++ b/keyboards/4pplet/eagle_viper_rep/rev_b/rev_b.c @@ -50,47 +50,27 @@ layer_state_t layer_state_set_kb(layer_state_t state) { } /* Set indicator leds to indicate which layer is active */ void setLayerLed(layer_state_t state){ - switch(get_highest_layer(state)){ - case 0 : - writePin(LAYER_1, 1); - writePin(LAYER_2, 0); - writePin(LAYER_3, 0); - writePin(LAYER_4, 0); - writePin(LAYER_5, 0); + writePinLow(LAYER_1); + writePinLow(LAYER_2); + writePinLow(LAYER_3); + writePinLow(LAYER_4); + writePinLow(LAYER_5); + switch (get_highest_layer(state)) { + case 0: + writePinHigh(LAYER_1); break; - case 1 : - writePin(LAYER_1, 0); - writePin(LAYER_2, 1); - writePin(LAYER_3, 0); - writePin(LAYER_4, 0); - writePin(LAYER_5, 0); + case 1: + writePinHigh(LAYER_2); break; - case 2 : - writePin(LAYER_1, 0); - writePin(LAYER_2, 0); - writePin(LAYER_3, 1); - writePin(LAYER_4, 0); - writePin(LAYER_5, 0); + case 2: + writePinHigh(LAYER_3); break; - case 3 : - writePin(LAYER_1, 0); - writePin(LAYER_2, 0); - writePin(LAYER_3, 0); - writePin(LAYER_4, 1); - writePin(LAYER_5, 0); + case 3: + writePinHigh(LAYER_4); break; - case 4 : - writePin(LAYER_1, 0); - writePin(LAYER_2, 0); - writePin(LAYER_3, 0); - writePin(LAYER_4, 0); - writePin(LAYER_5, 1); + case 4: + writePinHigh(LAYER_5); break; - default : - writePin(LAYER_1, 0); - writePin(LAYER_2, 0); - writePin(LAYER_3, 0); - writePin(LAYER_4, 0); - writePin(LAYER_5, 0); } } +} From 2328b59caf09be91ae75886e3ab44126eb698a80 Mon Sep 17 00:00:00 2001 From: 4pplet Date: Sun, 20 Nov 2022 12:46:57 +0100 Subject: [PATCH 07/23] Simplifying led-code and using proper lock LED indicator defines --- .../4pplet/eagle_viper_rep/rev_b/config.h | 18 +++++++-------- .../4pplet/eagle_viper_rep/rev_b/rev_b.c | 22 ++----------------- 2 files changed, 10 insertions(+), 30 deletions(-) diff --git a/keyboards/4pplet/eagle_viper_rep/rev_b/config.h b/keyboards/4pplet/eagle_viper_rep/rev_b/config.h index fb71feef9fc9..f0969f788d0a 100644 --- a/keyboards/4pplet/eagle_viper_rep/rev_b/config.h +++ b/keyboards/4pplet/eagle_viper_rep/rev_b/config.h @@ -58,16 +58,14 @@ along with this program. If not, see . #define LOCKING_RESYNC_ENABLE /* Indicator leds */ -#define LOCK_LIGHTS TRUE -#define DISPLAY_LAYERS TRUE -#define CAPS_PIN B1 -#define NUM_PIN B12 -#define SCROLL_PIN B13 -#define LAYER_1 B14 -#define LAYER_2 B15 -#define LAYER_3 B0 -#define LAYER_4 B9 -#define LAYER_5 A9 +#define LED_CAPS_LOCK_PIN B1 +#define LED_NUM_LOCK_PIN B12 +#define LED_SCROLL_LOCK_PIN B13 +#define LAYER_1 B14 +#define LAYER_2 B15 +#define LAYER_3 B0 +#define LAYER_4 B9 +#define LAYER_5 A9 /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 diff --git a/keyboards/4pplet/eagle_viper_rep/rev_b/rev_b.c b/keyboards/4pplet/eagle_viper_rep/rev_b/rev_b.c index 7b16fd7ee347..2e71e34a267c 100644 --- a/keyboards/4pplet/eagle_viper_rep/rev_b/rev_b.c +++ b/keyboards/4pplet/eagle_viper_rep/rev_b/rev_b.c @@ -16,12 +16,7 @@ along with this program. If not, see . */ #include "rev_b.h" - - void keyboard_pre_init_kb(void) { - setPinOutput(CAPS_PIN); - setPinOutput(SCROLL_PIN); - setPinOutput(NUM_PIN); setPinOutput(LAYER_1); setPinOutput(LAYER_2); setPinOutput(LAYER_3); @@ -30,22 +25,9 @@ void keyboard_pre_init_kb(void) { keyboard_pre_init_user(); } -/* Set indicator leds to indicate lock states */ -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if (res && LOCK_LIGHTS) { - writePin(NUM_PIN, led_state.num_lock); - writePin(CAPS_PIN, led_state.caps_lock); - writePin(SCROLL_PIN, led_state.scroll_lock); - } - return true; -} - layer_state_t layer_state_set_kb(layer_state_t state) { state = layer_state_set_user(state); - if(DISPLAY_LAYERS){ - setLayerLed(state); - } + setLayerLed(state); return state; } /* Set indicator leds to indicate which layer is active */ @@ -73,4 +55,4 @@ void setLayerLed(layer_state_t state){ break; } } -} + From 2b320c9822ccd4a85a35cead1f95f7152ab612a3 Mon Sep 17 00:00:00 2001 From: 4pplet Date: Wed, 30 Nov 2022 12:12:19 +0100 Subject: [PATCH 08/23] Removing RGBLIGHT_ANIMATIONS define for revision A Removing RGBLIGHT_ANIMATIONS define for revision A --- keyboards/4pplet/eagle_viper_rep/rev_a/config.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/config.h b/keyboards/4pplet/eagle_viper_rep/rev_a/config.h index 951c943f1dc8..3c8f4abd66f7 100644 --- a/keyboards/4pplet/eagle_viper_rep/rev_a/config.h +++ b/keyboards/4pplet/eagle_viper_rep/rev_a/config.h @@ -39,7 +39,19 @@ along with this program. If not, see . #define WS2812_SPI_SCK_PIN A5 #define WS2812_SPI_SCK_PAL_MODE 0 #define RGBLED_NUM 16 -#define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE From cac400761becaddac5ae1fd8c2854f89c59a1e47 Mon Sep 17 00:00:00 2001 From: 4pplet Date: Sun, 21 May 2023 22:30:06 +0200 Subject: [PATCH 09/23] start --- .../ratio60_hotswap/keymaps/default/keymap.c | 34 ++ .../ratio60_hotswap/keymaps/via/keymap.c | 48 +++ .../ratio60_hotswap/keymaps/via/rules.mk | 2 + .../rationalist/ratio60_hotswap/readme.md | 29 ++ .../ratio60_hotswap/rev_a/config.h | 19 + .../ratio60_hotswap/rev_a/info.json | 379 ++++++++++++++++++ .../ratio60_hotswap/rev_a/rules.mk | 9 + 7 files changed, 520 insertions(+) create mode 100644 keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c create mode 100644 keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c create mode 100644 keyboards/rationalist/ratio60_hotswap/keymaps/via/rules.mk create mode 100644 keyboards/rationalist/ratio60_hotswap/readme.md create mode 100644 keyboards/rationalist/ratio60_hotswap/rev_a/config.h create mode 100644 keyboards/rationalist/ratio60_hotswap/rev_a/info.json create mode 100644 keyboards/rationalist/ratio60_hotswap/rev_a/rules.mk diff --git a/keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c b/keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c new file mode 100644 index 000000000000..66f43f321329 --- /dev/null +++ b/keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c @@ -0,0 +1,34 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" + +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_60_ansi_split_bs_rshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, MO(1)), + +[1] = LAYOUT_60_ansi_split_bs_rshift( + 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_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ ), +}; diff --git a/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c b/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c new file mode 100644 index 000000000000..7231fa1375e8 --- /dev/null +++ b/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c @@ -0,0 +1,48 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" + +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_60_ansi_split_bs_rshift( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, MO(1)), + +[1] = LAYOUT_60_ansi_split_bs_rshift( + 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_DEL, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ ), + +[2] = LAYOUT_60_ansi_split_bs_rshift( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ ), + +[3] = LAYOUT_60_ansi_split_bs_rshift( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ ) +}; diff --git a/keyboards/rationalist/ratio60_hotswap/keymaps/via/rules.mk b/keyboards/rationalist/ratio60_hotswap/keymaps/via/rules.mk new file mode 100644 index 000000000000..c4b503281b31 --- /dev/null +++ b/keyboards/rationalist/ratio60_hotswap/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +RGBLIGHT_ENABLE = yes \ No newline at end of file diff --git a/keyboards/rationalist/ratio60_hotswap/readme.md b/keyboards/rationalist/ratio60_hotswap/readme.md new file mode 100644 index 000000000000..82608d340787 --- /dev/null +++ b/keyboards/rationalist/ratio60_hotswap/readme.md @@ -0,0 +1,29 @@ +# Steezy60 + +A 60% PCB with a ton of layout options for SMK and Alps switches + +More info: https://geekhack.org/index.php?topic=103531.0 + +* Keyboard Maintainer: [4pplet](https://github.com/4pplet) +* Hardware Supported: Steezy60 Rev A and B +* Hardware Availability: https://4pplet.com/products/steezy60 + +Make example for this keyboard (after setting up your build environment): + + make 4pplet/steezy60/rev_a:default + make 4pplet/steezy60/rev_b:default + +Flashing example for this keyboard: + + make 4pplet/steezy60/rev_a:default:flash + make 4pplet/steezy60/rev_b: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 Escape and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB or short the reset header +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/rationalist/ratio60_hotswap/rev_a/config.h b/keyboards/rationalist/ratio60_hotswap/rev_a/config.h new file mode 100644 index 000000000000..eb7d87e083a0 --- /dev/null +++ b/keyboards/rationalist/ratio60_hotswap/rev_a/config.h @@ -0,0 +1,19 @@ +/* +Copyright 2023 Stefan Sundin "4pplet" + +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 WS2812_EXTERNAL_PULLUP diff --git a/keyboards/rationalist/ratio60_hotswap/rev_a/info.json b/keyboards/rationalist/ratio60_hotswap/rev_a/info.json new file mode 100644 index 000000000000..d1a965b7c9d2 --- /dev/null +++ b/keyboards/rationalist/ratio60_hotswap/rev_a/info.json @@ -0,0 +1,379 @@ +{ + "keyboard_name": "Rati(o)60 Rev A", + "manufacturer": "Rationalist", + "maintainer": "4pplet", + "usb": { + "vid": "0x4446", + "pid": "0x0003", + "device_version": "0.0.1" + }, + "processor": "STM32F072", + "bootloader": "stm32-dfu", + "community_layouts": [ + "60_ansi", + "60_ansi_split_bs_rshift", + "60_ansi_tsangan", + "60_hhkb", + "60_tsangan_hhkb" + ], + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["B2","A4","A3","A2","F1","F0","C15","C14","C13","B9","B8","B7","A15","B3"], + "rows": ["B14","A9","B6","B5","B4"] + }, + "features": { + "audio": false, + "backlight": false, + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": false, + "nkro": true, + "rgblight": true + }, + "rgblight": { + "led_count": 16, + "pin": "A8", + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + } + }, + "layouts": { + "LAYOUT_60_ansi": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "Backspace", "matrix": [4, 13], "w": 2, "x": 13, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 }, + { "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "|", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "~", "matrix": [4, 13], "x": 14, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 }, + { "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 }, + { "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 } + ] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "Backspace", "matrix": [4, 13], "w": 2, "x": 13, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 }, + { "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 }, + { "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 11], "w": 1.5, "x": 13.5, "y": 4 } + ] + }, + "LAYOUT_60_hhkb": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "|", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "~", "matrix": [4, 13], "x": 14, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 }, + { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 }, + { "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 }, + { "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 } + ] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, + { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, + { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, + { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, + { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, + { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, + { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, + { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, + { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, + { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, + { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, + { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, + { "label": "|", "matrix": [0, 13], "x": 13, "y": 0 }, + { "label": "~", "matrix": [4, 13], "x": 14, "y": 0 }, + { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 }, + { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, + { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, + { "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 }, + { "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 }, + { "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 11], "w": 1.5, "x": 13.5, "y": 4 } + ] + } + } +} diff --git a/keyboards/rationalist/ratio60_hotswap/rev_a/rules.mk b/keyboards/rationalist/ratio60_hotswap/rev_a/rules.mk new file mode 100644 index 000000000000..8163e645cf80 --- /dev/null +++ b/keyboards/rationalist/ratio60_hotswap/rev_a/rules.mk @@ -0,0 +1,9 @@ +# Build Options +# change yes to no to disable +# + +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -p FFFF -v FFFF + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE From 74690d24d139dbd0b37b39af846fc6d42241c8ab Mon Sep 17 00:00:00 2001 From: 4pplet Date: Sun, 21 May 2023 23:35:06 +0200 Subject: [PATCH 10/23] cont --- .../ratio60_hotswap/keymaps/default/keymap.c | 7 ++ .../ratio60_hotswap/keymaps/via/keymap.c | 9 ++ .../ratio60_hotswap/keymaps/via/rules.mk | 3 +- .../rationalist/ratio60_hotswap/readme.md | 13 +-- .../ratio60_hotswap/rev_a/info.json | 98 ++++++++++--------- .../rationalist/ratio60_hotswap/rev_a/rev_a.c | 21 ++++ 6 files changed, 97 insertions(+), 54 deletions(-) create mode 100644 keyboards/rationalist/ratio60_hotswap/rev_a/rev_a.c diff --git a/keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c b/keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c index 66f43f321329..f22cab60f38a 100644 --- a/keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c +++ b/keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c @@ -32,3 +32,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), }; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) } +}; +#endif diff --git a/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c b/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c index 7231fa1375e8..5e4aea32ac0b 100644 --- a/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c +++ b/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c @@ -46,3 +46,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) }, + [2] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, + [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) } +}; +#endif diff --git a/keyboards/rationalist/ratio60_hotswap/keymaps/via/rules.mk b/keyboards/rationalist/ratio60_hotswap/keymaps/via/rules.mk index c4b503281b31..c7fce92a4f67 100644 --- a/keyboards/rationalist/ratio60_hotswap/keymaps/via/rules.mk +++ b/keyboards/rationalist/ratio60_hotswap/keymaps/via/rules.mk @@ -1,2 +1,3 @@ VIA_ENABLE = yes -RGBLIGHT_ENABLE = yes \ No newline at end of file +RGBLIGHT_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/rationalist/ratio60_hotswap/readme.md b/keyboards/rationalist/ratio60_hotswap/readme.md index 82608d340787..0f590d1e1021 100644 --- a/keyboards/rationalist/ratio60_hotswap/readme.md +++ b/keyboards/rationalist/ratio60_hotswap/readme.md @@ -1,22 +1,17 @@ # Steezy60 -A 60% PCB with a ton of layout options for SMK and Alps switches - -More info: https://geekhack.org/index.php?topic=103531.0 +A universal 60% PCB for both tray mount and o-ring mount * Keyboard Maintainer: [4pplet](https://github.com/4pplet) -* Hardware Supported: Steezy60 Rev A and B -* Hardware Availability: https://4pplet.com/products/steezy60 +* Hardware Supported: Ratio60 Rev B Make example for this keyboard (after setting up your build environment): - make 4pplet/steezy60/rev_a:default - make 4pplet/steezy60/rev_b:default + make rationalist/ratio60_hotswap/rev_a:default Flashing example for this keyboard: - make 4pplet/steezy60/rev_a:default:flash - make 4pplet/steezy60/rev_b:default:flash + make rationalist/ratio60_hotswap/rev_a: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). diff --git a/keyboards/rationalist/ratio60_hotswap/rev_a/info.json b/keyboards/rationalist/ratio60_hotswap/rev_a/info.json index d1a965b7c9d2..77cb07de7114 100644 --- a/keyboards/rationalist/ratio60_hotswap/rev_a/info.json +++ b/keyboards/rationalist/ratio60_hotswap/rev_a/info.json @@ -30,7 +30,8 @@ "extrakey": true, "mousekey": false, "nkro": true, - "rgblight": true + "rgblight": true, + "encoder": true }, "rgblight": { "led_count": 16, @@ -48,6 +49,15 @@ "twinkle": true } }, + "encoder": { + "rotary": [ + { + "pin_a": "A1", + "pin_b": "A0", + "resolution": 2 + } + ] + }, "layouts": { "LAYOUT_60_ansi": { "layout": [ @@ -64,7 +74,7 @@ { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, - { "label": "Backspace", "matrix": [4, 13], "w": 2, "x": 13, "y": 0 }, + { "label": "Backspace", "matrix": [1, 13], "w": 2, "x": 13, "y": 0 }, { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, @@ -78,7 +88,7 @@ { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, - { "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "|", "matrix": [2, 12], "w": 1.5, "x": 13.5, "y": 1 }, { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, @@ -103,15 +113,15 @@ { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, - { "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 12], "w": 2.75, "x": 12.25, "y": 3 }, { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, - { "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, - { "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 }, - { "label": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 }, - { "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 }, - { "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 }, - { "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "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": "Alt", "matrix": [4, 8], "w": 1.25, "x": 10, "y": 4 }, + { "label": "Win", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4 } ] }, "LAYOUT_60_ansi_split_bs_rshift": { @@ -130,7 +140,7 @@ { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, { "label": "|", "matrix": [0, 13], "x": 13, "y": 0 }, - { "label": "~", "matrix": [4, 13], "x": 14, "y": 0 }, + { "label": "~", "matrix": [1, 13], "x": 14, "y": 0 }, { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, @@ -144,7 +154,7 @@ { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, - { "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "|", "matrix": [2, 12], "w": 1.5, "x": 13.5, "y": 1 }, { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, @@ -169,16 +179,16 @@ { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, - { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, - { "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 }, + { "label": "Shift", "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "Fn", "matrix": [3, 13], "x": 14, "y": 3 }, { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, { "label": "Win", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, - { "label": "Alt", "matrix": [4, 3], "w": 1.25, "x": 2.5, "y": 4 }, - { "label": "Space", "matrix": [4, 5], "w": 6.25, "x": 3.75, "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": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 }, - { "label": "Win", "matrix": [4, 8], "w": 1.25, "x": 11.25, "y": 4 }, - { "label": "Menu", "matrix": [4, 10], "w": 1.25, "x": 12.5, "y": 4 }, - { "label": "Fn", "matrix": [4, 11], "w": 1.25, "x": 13.75, "y": 4 } + { "label": "Win", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, + { "label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4 } ] }, "LAYOUT_60_ansi_tsangan": { @@ -196,7 +206,7 @@ { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, - { "label": "Backspace", "matrix": [4, 13], "w": 2, "x": 13, "y": 0 }, + { "label": "Backspace", "matrix": [1, 13], "w": 2, "x": 13, "y": 0 }, { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, @@ -210,7 +220,7 @@ { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, - { "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "|", "matrix": [2, 12], "w": 1.5, "x": 13.5, "y": 1 }, { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, @@ -235,14 +245,14 @@ { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, - { "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 }, + { "label": "Shift", "matrix": [3, 12], "w": 2.75, "x": 12.25, "y": 3 }, { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, - { "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, - { "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 }, - { "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 }, - { "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 }, - { "label": "Ctrl", "matrix": [4, 11], "w": 1.5, "x": 13.5, "y": 4 } + { "label": "Alt", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 6], "w": 7, "x": 4, "y": 4 }, + { "label": "Alt", "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 }, + { "label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4 } ] }, "LAYOUT_60_hhkb": { @@ -261,7 +271,7 @@ { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, { "label": "|", "matrix": [0, 13], "x": 13, "y": 0 }, - { "label": "~", "matrix": [4, 13], "x": 14, "y": 0 }, + { "label": "~", "matrix": [1, 13], "x": 14, "y": 0 }, { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, @@ -275,7 +285,7 @@ { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, - { "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "|", "matrix": [2, 12], "w": 1.5, "x": 13.5, "y": 1 }, { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, @@ -300,13 +310,13 @@ { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, - { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, - { "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 }, + { "label": "Shift", "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "Fn", "matrix": [3, 13], "x": 14, "y": 3 }, { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, - { "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, - { "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 }, - { "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 }, - { "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 } + { "label": "Alt", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 6], "w": 7, "x": 4, "y": 4 }, + { "label": "Alt", "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 }, + { "label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4 } ] }, "LAYOUT_60_tsangan_hhkb": { @@ -325,7 +335,7 @@ { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, { "label": "|", "matrix": [0, 13], "x": 13, "y": 0 }, - { "label": "~", "matrix": [4, 13], "x": 14, "y": 0 }, + { "label": "~", "matrix": [1, 13], "x": 14, "y": 0 }, { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, @@ -339,7 +349,7 @@ { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, - { "label": "|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "label": "|", "matrix": [2, 12], "w": 1.5, "x": 13.5, "y": 1 }, { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, @@ -364,15 +374,15 @@ { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, - { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 }, - { "label": "Fn", "matrix": [4, 12], "x": 14, "y": 3 }, + { "label": "Shift", "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, + { "label": "Fn", "matrix": [3, 13], "x": 14, "y": 3 }, { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, - { "label": "Alt", "matrix": [4, 3], "w": 1.5, "x": 2.5, "y": 4 }, - { "label": "Space", "matrix": [4, 5], "w": 7, "x": 4, "y": 4 }, - { "label": "Alt", "matrix": [4, 8], "w": 1.5, "x": 11, "y": 4 }, - { "label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4 }, - { "label": "Ctrl", "matrix": [4, 11], "w": 1.5, "x": 13.5, "y": 4 } + { "label": "Alt", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 }, + { "label": "Space", "matrix": [4, 6], "w": 7, "x": 4, "y": 4 }, + { "label": "Alt", "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 }, + { "label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4 }, + { "label": "Ctrl", "matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4 } ] } } diff --git a/keyboards/rationalist/ratio60_hotswap/rev_a/rev_a.c b/keyboards/rationalist/ratio60_hotswap/rev_a/rev_a.c new file mode 100644 index 000000000000..2f6825e2ee13 --- /dev/null +++ b/keyboards/rationalist/ratio60_hotswap/rev_a/rev_a.c @@ -0,0 +1,21 @@ +// Copyright 2022 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +// This will be overridden by encoder map in all default keymaps, but serves as a catch-all for user keymaps that may omit the map. +#if defined (ENCODER_ENABLE) && !defined (ENCODER_MAP_ENABLE) +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; /* Don't process further events if user function exists and returns false */ + } + if (index == 0) { /* First encoder */ + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + } + return true; +} +#endif \ No newline at end of file From 9ef245068f22d1c06773ac1987cc70e002c27c8f Mon Sep 17 00:00:00 2001 From: 4pplet Date: Mon, 12 Jun 2023 12:22:57 +0200 Subject: [PATCH 11/23] Update info.json --- keyboards/rationalist/ratio60_hotswap/rev_a/info.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/rationalist/ratio60_hotswap/rev_a/info.json b/keyboards/rationalist/ratio60_hotswap/rev_a/info.json index 77cb07de7114..4358d4d6ebd7 100644 --- a/keyboards/rationalist/ratio60_hotswap/rev_a/info.json +++ b/keyboards/rationalist/ratio60_hotswap/rev_a/info.json @@ -1,5 +1,5 @@ { - "keyboard_name": "Rati(o)60 Rev A", + "keyboard_name": "Rati(o)60 Hotswap Rev A", "manufacturer": "Rationalist", "maintainer": "4pplet", "usb": { From bd6203a2c42346d13dae5cf0c52b300ce402dba5 Mon Sep 17 00:00:00 2001 From: 4pplet Date: Sat, 8 Jul 2023 11:59:55 +0200 Subject: [PATCH 12/23] cont --- keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c | 2 +- keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c | 2 +- keyboards/rationalist/ratio60_hotswap/rev_a/info.json | 2 +- lib/chibios | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c b/keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c index f22cab60f38a..847ff2a2cd85 100644 --- a/keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c +++ b/keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c @@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO, + 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(1), KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, MO(1)), [1] = LAYOUT_60_ansi_split_bs_rshift( diff --git a/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c b/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c index 5e4aea32ac0b..3f780c4632d9 100644 --- a/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c +++ b/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c @@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO, + 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(1), KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, MO(1)), [1] = LAYOUT_60_ansi_split_bs_rshift( diff --git a/keyboards/rationalist/ratio60_hotswap/rev_a/info.json b/keyboards/rationalist/ratio60_hotswap/rev_a/info.json index 4358d4d6ebd7..5a836031496c 100644 --- a/keyboards/rationalist/ratio60_hotswap/rev_a/info.json +++ b/keyboards/rationalist/ratio60_hotswap/rev_a/info.json @@ -185,7 +185,7 @@ { "label": "Win", "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": "Alt", "matrix": [4, 7], "w": 1.25, "x": 10, "y": 4 }, + { "label": "Alt", "matrix": [4, 8], "w": 1.25, "x": 10, "y": 4 }, { "label": "Win", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, { "label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 }, { "label": "Ctrl", "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4 } diff --git a/lib/chibios b/lib/chibios index 11edb1610980..0062927e3058 160000 --- a/lib/chibios +++ b/lib/chibios @@ -1 +1 @@ -Subproject commit 11edb1610980f213b9f83161e1715a46fb7e4c51 +Subproject commit 0062927e3058a8b5ef587234bbd98d42fb4e595e From 76911690512cb736789d83d54ade9ed0ab1ac5ec Mon Sep 17 00:00:00 2001 From: 4pplet Date: Sun, 23 Jul 2023 23:02:46 +0200 Subject: [PATCH 13/23] Update info.json --- keyboards/rationalist/ratio60_hotswap/rev_a/info.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/keyboards/rationalist/ratio60_hotswap/rev_a/info.json b/keyboards/rationalist/ratio60_hotswap/rev_a/info.json index 5a836031496c..11906a855c7f 100644 --- a/keyboards/rationalist/ratio60_hotswap/rev_a/info.json +++ b/keyboards/rationalist/ratio60_hotswap/rev_a/info.json @@ -33,9 +33,11 @@ "rgblight": true, "encoder": true }, + "ws2812": { + "pin": "A8" + }, "rgblight": { "led_count": 16, - "pin": "A8", "animations": { "alternating": true, "breathing": true, From 97e8c1e4a5395766ac9b4941d3d2d5ea755aae27 Mon Sep 17 00:00:00 2001 From: 4pplet Date: Tue, 25 Jul 2023 16:31:19 +0200 Subject: [PATCH 14/23] fix format using format-json command fix format using format-json command --- .../ratio60_hotswap/rev_a/info.json | 674 +++++++++--------- 1 file changed, 332 insertions(+), 342 deletions(-) diff --git a/keyboards/rationalist/ratio60_hotswap/rev_a/info.json b/keyboards/rationalist/ratio60_hotswap/rev_a/info.json index 11906a855c7f..645b6fae147f 100644 --- a/keyboards/rationalist/ratio60_hotswap/rev_a/info.json +++ b/keyboards/rationalist/ratio60_hotswap/rev_a/info.json @@ -1,25 +1,13 @@ { - "keyboard_name": "Rati(o)60 Hotswap Rev A", "manufacturer": "Rationalist", + "keyboard_name": "Rati(o)60 Hotswap Rev A", "maintainer": "4pplet", - "usb": { - "vid": "0x4446", - "pid": "0x0003", - "device_version": "0.0.1" - }, - "processor": "STM32F072", "bootloader": "stm32-dfu", - "community_layouts": [ - "60_ansi", - "60_ansi_split_bs_rshift", - "60_ansi_tsangan", - "60_hhkb", - "60_tsangan_hhkb" - ], "diode_direction": "COL2ROW", - "matrix_pins": { - "cols": ["B2","A4","A3","A2","F1","F0","C15","C14","C13","B9","B8","B7","A15","B3"], - "rows": ["B14","A9","B6","B5","B4"] + "encoder": { + "rotary": [ + {"pin_a": "A1", "pin_b": "A0", "resolution": 2} + ] }, "features": { "audio": false, @@ -27,17 +15,18 @@ "bootmagic": true, "command": false, "console": false, + "encoder": true, "extrakey": true, "mousekey": false, "nkro": true, - "rgblight": true, - "encoder": true + "rgblight": true }, - "ws2812": { - "pin": "A8" + "matrix_pins": { + "cols": ["B2", "A4", "A3", "A2", "F1", "F0", "C15", "C14", "C13", "B9", "B8", "B7", "A15", "B3"], + "rows": ["B14", "A9", "B6", "B5", "B4"] }, + "processor": "STM32F072", "rgblight": { - "led_count": 16, "animations": { "alternating": true, "breathing": true, @@ -49,342 +38,343 @@ "snake": true, "static_gradient": true, "twinkle": true - } + }, + "led_count": 16 }, - "encoder": { - "rotary": [ - { - "pin_a": "A1", - "pin_b": "A0", - "resolution": 2 - } - ] + "usb": { + "device_version": "0.0.1", + "pid": "0x0003", + "vid": "0x4446" + }, + "ws2812": { + "pin": "A8" }, + "community_layouts": ["60_ansi", "60_ansi_split_bs_rshift", "60_ansi_tsangan", "60_hhkb", "60_tsangan_hhkb"], "layouts": { - "LAYOUT_60_ansi": { + "LAYOUT_60_ansi": { "layout": [ - { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, - { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, - { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, - { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, - { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, - { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, - { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, - { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, - { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, - { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, - { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, - { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, - { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, - { "label": "Backspace", "matrix": [1, 13], "w": 2, "x": 13, "y": 0 }, - { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, - { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, - { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, - { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 }, - { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 }, - { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 }, - { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 }, - { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 }, - { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 }, - { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 }, - { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, - { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, - { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, - { "label": "|", "matrix": [2, 12], "w": 1.5, "x": 13.5, "y": 1 }, - { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, - { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, - { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, - { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, - { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, - { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, - { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, - { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, - { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, - { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, - { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, - { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, - { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, - { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, - { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, - { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, - { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, - { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, - { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, - { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, - { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, - { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, - { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, - { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, - { "label": "Shift", "matrix": [3, 12], "w": 2.75, "x": 12.25, "y": 3 }, - { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, - { "label": "Win", "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": "Alt", "matrix": [4, 8], "w": 1.25, "x": 10, "y": 4 }, - { "label": "Win", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, - { "label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 }, - { "label": "Ctrl", "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4 } + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 8], "x": 10, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} ] }, - "LAYOUT_60_ansi_split_bs_rshift": { + "LAYOUT_60_ansi_split_bs_rshift": { "layout": [ - { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, - { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, - { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, - { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, - { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, - { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, - { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, - { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, - { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, - { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, - { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, - { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, - { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, - { "label": "|", "matrix": [0, 13], "x": 13, "y": 0 }, - { "label": "~", "matrix": [1, 13], "x": 14, "y": 0 }, - { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, - { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, - { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, - { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 }, - { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 }, - { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 }, - { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 }, - { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 }, - { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 }, - { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 }, - { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, - { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, - { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, - { "label": "|", "matrix": [2, 12], "w": 1.5, "x": 13.5, "y": 1 }, - { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, - { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, - { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, - { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, - { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, - { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, - { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, - { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, - { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, - { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, - { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, - { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, - { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, - { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, - { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, - { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, - { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, - { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, - { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, - { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, - { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, - { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, - { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, - { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, - { "label": "Shift", "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, - { "label": "Fn", "matrix": [3, 13], "x": 14, "y": 3 }, - { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, - { "label": "Win", "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": "Alt", "matrix": [4, 8], "w": 1.25, "x": 10, "y": 4 }, - { "label": "Win", "matrix": [4, 11], "w": 1.25, "x": 11.25, "y": 4 }, - { "label": "Menu", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 }, - { "label": "Ctrl", "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4 } + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [1, 13], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"label": "Alt", "matrix": [4, 8], "x": 10, "y": 4, "w": 1.25}, + {"label": "Win", "matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"label": "Menu", "matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25} ] }, - "LAYOUT_60_ansi_tsangan": { + "LAYOUT_60_ansi_tsangan": { "layout": [ - { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, - { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, - { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, - { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, - { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, - { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, - { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, - { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, - { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, - { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, - { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, - { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, - { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, - { "label": "Backspace", "matrix": [1, 13], "w": 2, "x": 13, "y": 0 }, - { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, - { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, - { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, - { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 }, - { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 }, - { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 }, - { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 }, - { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 }, - { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 }, - { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 }, - { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, - { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, - { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, - { "label": "|", "matrix": [2, 12], "w": 1.5, "x": 13.5, "y": 1 }, - { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, - { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, - { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, - { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, - { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, - { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, - { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, - { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, - { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, - { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, - { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, - { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, - { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, - { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, - { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, - { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, - { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, - { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, - { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, - { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, - { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, - { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, - { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, - { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, - { "label": "Shift", "matrix": [3, 12], "w": 2.75, "x": 12.25, "y": 3 }, - { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, - { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, - { "label": "Alt", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 }, - { "label": "Space", "matrix": [4, 6], "w": 7, "x": 4, "y": 4 }, - { "label": "Alt", "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 }, - { "label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4 }, - { "label": "Ctrl", "matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4 } + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Backspace", "matrix": [1, 13], "x": 13, "y": 0, "w": 2}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} ] }, - "LAYOUT_60_hhkb": { + "LAYOUT_60_hhkb": { "layout": [ - { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, - { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, - { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, - { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, - { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, - { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, - { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, - { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, - { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, - { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, - { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, - { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, - { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, - { "label": "|", "matrix": [0, 13], "x": 13, "y": 0 }, - { "label": "~", "matrix": [1, 13], "x": 14, "y": 0 }, - { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, - { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, - { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, - { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 }, - { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 }, - { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 }, - { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 }, - { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 }, - { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 }, - { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 }, - { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, - { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, - { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, - { "label": "|", "matrix": [2, 12], "w": 1.5, "x": 13.5, "y": 1 }, - { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, - { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, - { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, - { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, - { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, - { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, - { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, - { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, - { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, - { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, - { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, - { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, - { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, - { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, - { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, - { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, - { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, - { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, - { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, - { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, - { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, - { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, - { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, - { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, - { "label": "Shift", "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, - { "label": "Fn", "matrix": [3, 13], "x": 14, "y": 3 }, - { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, - { "label": "Alt", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 }, - { "label": "Space", "matrix": [4, 6], "w": 7, "x": 4, "y": 4 }, - { "label": "Alt", "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 }, - { "label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4 } + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [1, 13], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4} ] }, - "LAYOUT_60_tsangan_hhkb": { + "LAYOUT_60_tsangan_hhkb": { "layout": [ - { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 }, - { "label": "!", "matrix": [0, 1], "x": 1, "y": 0 }, - { "label": "@", "matrix": [0, 2], "x": 2, "y": 0 }, - { "label": "#", "matrix": [0, 3], "x": 3, "y": 0 }, - { "label": "$", "matrix": [0, 4], "x": 4, "y": 0 }, - { "label": "%", "matrix": [0, 5], "x": 5, "y": 0 }, - { "label": "^", "matrix": [0, 6], "x": 6, "y": 0 }, - { "label": "&", "matrix": [0, 7], "x": 7, "y": 0 }, - { "label": "*", "matrix": [0, 8], "x": 8, "y": 0 }, - { "label": "(", "matrix": [0, 9], "x": 9, "y": 0 }, - { "label": ")", "matrix": [0, 10], "x": 10, "y": 0 }, - { "label": "_", "matrix": [0, 11], "x": 11, "y": 0 }, - { "label": "+", "matrix": [0, 12], "x": 12, "y": 0 }, - { "label": "|", "matrix": [0, 13], "x": 13, "y": 0 }, - { "label": "~", "matrix": [1, 13], "x": 14, "y": 0 }, - { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, - { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 }, - { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 }, - { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 }, - { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 }, - { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 }, - { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 }, - { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 }, - { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 }, - { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 }, - { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 }, - { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1 }, - { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1 }, - { "label": "|", "matrix": [2, 12], "w": 1.5, "x": 13.5, "y": 1 }, - { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, - { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 }, - { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 }, - { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 }, - { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 }, - { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 }, - { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 }, - { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 }, - { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 }, - { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 }, - { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2 }, - { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2 }, - { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, - { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, - { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 }, - { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 }, - { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 }, - { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 }, - { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 }, - { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 }, - { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 }, - { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3 }, - { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3 }, - { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3 }, - { "label": "Shift", "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, - { "label": "Fn", "matrix": [3, 13], "x": 14, "y": 3 }, - { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, - { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4 }, - { "label": "Alt", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 }, - { "label": "Space", "matrix": [4, 6], "w": 7, "x": 4, "y": 4 }, - { "label": "Alt", "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 }, - { "label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4 }, - { "label": "Ctrl", "matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4 } + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "!", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "@", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "#", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "$", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "%", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "^", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "&", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "*", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "(", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": ")", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "_", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "+", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "|", "matrix": [0, 13], "x": 13, "y": 0}, + {"label": "~", "matrix": [1, 13], "x": 14, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1}, + {"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1}, + {"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1}, + {"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1}, + {"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1}, + {"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1}, + {"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1}, + {"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1}, + {"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1}, + {"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1}, + {"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1}, + {"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1}, + {"label": "|", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5}, + {"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2}, + {"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2}, + {"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2}, + {"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2}, + {"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2}, + {"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2}, + {"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2}, + {"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2}, + {"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2}, + {"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2}, + {"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2}, + {"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3}, + {"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3}, + {"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3}, + {"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3}, + {"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3}, + {"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3}, + {"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3}, + {"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3}, + {"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3}, + {"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3}, + {"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4}, + {"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4}, + {"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5} ] } } From b153957437db0008c4548c69abb348a04a0066b0 Mon Sep 17 00:00:00 2001 From: 4pplet Date: Tue, 25 Jul 2023 16:37:30 +0200 Subject: [PATCH 15/23] Update readme.md --- keyboards/rationalist/ratio60_hotswap/readme.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/rationalist/ratio60_hotswap/readme.md b/keyboards/rationalist/ratio60_hotswap/readme.md index 0f590d1e1021..7085b8484371 100644 --- a/keyboards/rationalist/ratio60_hotswap/readme.md +++ b/keyboards/rationalist/ratio60_hotswap/readme.md @@ -1,9 +1,9 @@ -# Steezy60 +# Rati(o)60 -A universal 60% PCB for both tray mount and o-ring mount +A 60% hot swap PCB for both tray mount and o-ring mount * Keyboard Maintainer: [4pplet](https://github.com/4pplet) -* Hardware Supported: Ratio60 Rev B +* Hardware Supported: Rati(o)60 Rev A Make example for this keyboard (after setting up your build environment): @@ -20,5 +20,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to Enter the bootloader in 3 ways: * **Bootmagic reset**: Hold down Escape and plug in the keyboard -* **Physical reset button**: Briefly press the button on the back of the PCB or short the reset header +* **Physical reset button**: Press and hold the button on the back of the PCB or short the reset header for about 3 seconds then release the buttom/remove the short * **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available From c722f14036e08a87318035834823229d7c4e6c16 Mon Sep 17 00:00:00 2001 From: 4pplet Date: Tue, 25 Jul 2023 17:13:04 +0200 Subject: [PATCH 16/23] Apply suggestions from code review Co-authored-by: Duncan Sutherland --- .../ratio60_hotswap/keymaps/via/keymap.c | 18 +----------------- .../ratio60_hotswap/keymaps/via/rules.mk | 1 - 2 files changed, 1 insertion(+), 18 deletions(-) diff --git a/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c b/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c index 3f780c4632d9..537fea1a8332 100644 --- a/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c +++ b/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c @@ -30,28 +30,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______ ), - -[2] = LAYOUT_60_ansi_split_bs_rshift( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______ ), - -[3] = LAYOUT_60_ansi_split_bs_rshift( - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ) }; #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) }, - [2] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }, - [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) } + [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) } }; #endif diff --git a/keyboards/rationalist/ratio60_hotswap/keymaps/via/rules.mk b/keyboards/rationalist/ratio60_hotswap/keymaps/via/rules.mk index c7fce92a4f67..f1adcab005e8 100644 --- a/keyboards/rationalist/ratio60_hotswap/keymaps/via/rules.mk +++ b/keyboards/rationalist/ratio60_hotswap/keymaps/via/rules.mk @@ -1,3 +1,2 @@ VIA_ENABLE = yes -RGBLIGHT_ENABLE = yes ENCODER_MAP_ENABLE = yes From f40c98513eb2393dde27383c734ccf09b1494460 Mon Sep 17 00:00:00 2001 From: 4pplet Date: Tue, 25 Jul 2023 17:16:57 +0200 Subject: [PATCH 17/23] Update chibios --- lib/chibios | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/chibios b/lib/chibios index 0062927e3058..11edb1610980 160000 --- a/lib/chibios +++ b/lib/chibios @@ -1 +1 @@ -Subproject commit 0062927e3058a8b5ef587234bbd98d42fb4e595e +Subproject commit 11edb1610980f213b9f83161e1715a46fb7e4c51 From 0b21ccc071af779477e88e4ee3147122e6197c4c Mon Sep 17 00:00:00 2001 From: 4pplet Date: Wed, 26 Jul 2023 08:49:35 +0200 Subject: [PATCH 18/23] Update keyboards/rationalist/ratio60_hotswap/rev_a/info.json Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/rationalist/ratio60_hotswap/rev_a/info.json | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/keyboards/rationalist/ratio60_hotswap/rev_a/info.json b/keyboards/rationalist/ratio60_hotswap/rev_a/info.json index 645b6fae147f..5d3763d52d92 100644 --- a/keyboards/rationalist/ratio60_hotswap/rev_a/info.json +++ b/keyboards/rationalist/ratio60_hotswap/rev_a/info.json @@ -10,14 +10,10 @@ ] }, "features": { - "audio": false, - "backlight": false, "bootmagic": true, - "command": false, - "console": false, "encoder": true, "extrakey": true, - "mousekey": false, + "mousekey": true, "nkro": true, "rgblight": true }, From b1ba55a2a567251cd712f6bae6d1093475b13bca Mon Sep 17 00:00:00 2001 From: 4pplet Date: Wed, 26 Jul 2023 08:49:43 +0200 Subject: [PATCH 19/23] Update keyboards/rationalist/ratio60_hotswap/rev_a/rules.mk Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/rationalist/ratio60_hotswap/rev_a/rules.mk | 7 ------- 1 file changed, 7 deletions(-) diff --git a/keyboards/rationalist/ratio60_hotswap/rev_a/rules.mk b/keyboards/rationalist/ratio60_hotswap/rev_a/rules.mk index 8163e645cf80..04fe1eba2acd 100644 --- a/keyboards/rationalist/ratio60_hotswap/rev_a/rules.mk +++ b/keyboards/rationalist/ratio60_hotswap/rev_a/rules.mk @@ -1,9 +1,2 @@ -# Build Options -# change yes to no to disable -# - # Wildcard to allow APM32 MCU DFU_SUFFIX_ARGS = -p FFFF -v FFFF - -# Enter lower-power sleep mode when on the ChibiOS idle thread -OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE From ea5bb1ce9026daed637c2a65ce927d836fe78f22 Mon Sep 17 00:00:00 2001 From: 4pplet Date: Wed, 26 Jul 2023 09:17:15 +0200 Subject: [PATCH 20/23] Delete rev_a.c --- .../rationalist/ratio60_hotswap/rev_a/rev_a.c | 21 ------------------- 1 file changed, 21 deletions(-) delete mode 100644 keyboards/rationalist/ratio60_hotswap/rev_a/rev_a.c diff --git a/keyboards/rationalist/ratio60_hotswap/rev_a/rev_a.c b/keyboards/rationalist/ratio60_hotswap/rev_a/rev_a.c deleted file mode 100644 index 2f6825e2ee13..000000000000 --- a/keyboards/rationalist/ratio60_hotswap/rev_a/rev_a.c +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2022 QMK -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "quantum.h" - -// This will be overridden by encoder map in all default keymaps, but serves as a catch-all for user keymaps that may omit the map. -#if defined (ENCODER_ENABLE) && !defined (ENCODER_MAP_ENABLE) -bool encoder_update_kb(uint8_t index, bool clockwise) { - if (!encoder_update_user(index, clockwise)) { - return false; /* Don't process further events if user function exists and returns false */ - } - if (index == 0) { /* First encoder */ - if (clockwise) { - tap_code_delay(KC_VOLU, 10); - } else { - tap_code_delay(KC_VOLD, 10); - } - } - return true; -} -#endif \ No newline at end of file From 218cbca38069b6d4149f049ad59f2e79faffcdfc Mon Sep 17 00:00:00 2001 From: 4pplet Date: Wed, 16 Aug 2023 09:20:54 +0200 Subject: [PATCH 21/23] Update keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c Co-authored-by: Ryan --- keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c b/keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c index 847ff2a2cd85..48d264064a18 100644 --- a/keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c +++ b/keyboards/rationalist/ratio60_hotswap/keymaps/default/keymap.c @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; #if defined(ENCODER_MAP_ENABLE) -const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) } }; From 8f2a83618e9ed8022bbd7cd1ed4b88054de07afb Mon Sep 17 00:00:00 2001 From: 4pplet Date: Wed, 16 Aug 2023 09:21:00 +0200 Subject: [PATCH 22/23] Update keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c Co-authored-by: Ryan --- keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c b/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c index 537fea1a8332..9fd68711a3a6 100644 --- a/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c +++ b/keyboards/rationalist/ratio60_hotswap/keymaps/via/keymap.c @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; #if defined(ENCODER_MAP_ENABLE) -const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, [1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) } }; From 588ae15a9325372c41f17bb6a13875d227321967 Mon Sep 17 00:00:00 2001 From: 4pplet Date: Thu, 5 Oct 2023 08:24:00 +0200 Subject: [PATCH 23/23] Create rules.mk --- keyboards/rationalist/ratio60_hotswap/keymaps/default/rules.mk | 1 + 1 file changed, 1 insertion(+) create mode 100644 keyboards/rationalist/ratio60_hotswap/keymaps/default/rules.mk diff --git a/keyboards/rationalist/ratio60_hotswap/keymaps/default/rules.mk b/keyboards/rationalist/ratio60_hotswap/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/rationalist/ratio60_hotswap/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes