From af4a806e3f1d338402f2ec828120ebc3ba43b3c8 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 11 May 2024 19:03:16 +1000 Subject: [PATCH 01/22] `qmk find`: Fix typo in filter logging (#23693) --- lib/python/qmk/search.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/python/qmk/search.py b/lib/python/qmk/search.py index 33550a3db27..2afb3033fcc 100644 --- a/lib/python/qmk/search.py +++ b/lib/python/qmk/search.py @@ -222,8 +222,8 @@ def _filter_keymap_targets(target_list: List[Tuple[str, str]], filters: List[str continue valid_keymaps = filter(filter_class.apply, valid_keymaps) - value_str = f", {{fg_cyan}}{value}{{fg_reset}})" if value is not None else "" - cli.log.info(f'Filtering on condition: {{fg_green}}{func_name}{{fg_reset}}({{fg_cyan}}{key}{{fg_reset}}{value_str}...') + value_str = f", {{fg_cyan}}{value}{{fg_reset}}" if value is not None else "" + cli.log.info(f'Filtering on condition: {{fg_green}}{func_name}{{fg_reset}}({{fg_cyan}}{key}{{fg_reset}}{value_str})...') elif equals_match is not None: key = equals_match.group('key') From a8e9d4f2078795f1f51a06c4fb88cff3c475fca2 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sat, 11 May 2024 18:26:11 +0100 Subject: [PATCH 02/22] Add embed to docs capabilities (#23698) --- docs/__capabilities.md | 4 ++++ docs/__capabilities_inc.md | 1 + 2 files changed, 5 insertions(+) create mode 100644 docs/__capabilities_inc.md diff --git a/docs/__capabilities.md b/docs/__capabilities.md index 469da462eb1..71183ed7608 100644 --- a/docs/__capabilities.md +++ b/docs/__capabilities.md @@ -255,3 +255,7 @@ This is some inner content. [1]: https://en.wikipedia.org/wiki/Eclipse_(software) + +## Embed + +[example embed](__capabilities_inc.md ':include') diff --git a/docs/__capabilities_inc.md b/docs/__capabilities_inc.md new file mode 100644 index 00000000000..d2cf010d36f --- /dev/null +++ b/docs/__capabilities_inc.md @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet. From d09ea04fa1b42b362a81218785ff41d3004df081 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=95=E3=82=A3=E3=83=AB=E3=82=BF=E3=83=BC=E3=83=9A?= =?UTF-8?q?=E3=83=BC=E3=83=91=E3=83=BC?= <76888457+filterpaper@users.noreply.github.com> Date: Sun, 12 May 2024 07:33:01 +0800 Subject: [PATCH 03/22] [Doc] Revise squeezing AVR (#23665) * Note AVR's flash space * Include guards for magic functions * Remove mention of silicon shortage * Demote an unavailable controller --- docs/squeezing_avr.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/squeezing_avr.md b/docs/squeezing_avr.md index c3b9e5595e1..3f014cafb7e 100644 --- a/docs/squeezing_avr.md +++ b/docs/squeezing_avr.md @@ -2,7 +2,7 @@ AVR is severely resource-constrained, and as QMK continues to grow, it is approaching a point where support for AVR may need to be moved to legacy status as newer development is unable to fit into those constraints. -However, if you need to reduce the compiled size of your firmware, there are a number of options to do so. +However, if you need to reduce the compiled size of your firmware to fit the controller's limited flash size, there are a number of options to do so. ## `rules.mk` Settings First and foremost is enabling link time optimization. To do so, add this to your rules.mk: @@ -91,15 +91,19 @@ Or if you're not using layers at all, you can outright remove the functionality There are two `__attribute__ ((weak))` placeholder functions available to customize magic keycodes. If you are not using that feature to swap keycodes, such as backslash with backspace, add the following to your `keymap.c` or user space code: ```c +#ifndef MAGIC_ENABLE uint16_t keycode_config(uint16_t keycode) { return keycode; } +#endif ``` Likewise, if you are not using magic keycodes to swap modifiers, such as Control with GUI, add the following to your `keymap.c` or user space code: ```c +#ifndef MAGIC_ENABLE uint8_t mod_config(uint8_t mod) { return mod; } +#endif ``` Both of them will overwrite the placeholder functions with a simple return statement to reduce firmware size. @@ -197,11 +201,7 @@ For RGB Matrix, these need to be explicitly enabled as well. To disable any that # Final Thoughts -If you've done all of this, and your firmware is still too large, then it's time. It's time to consider making the switch to ARM. Unfortunately, right now is the worst possible time for that, due to the silicon shortage, and supply chain issues. Getting an ARM chip is difficult, at best, and significantly overpriced, at worst. - -- Drashna - -That said, there are a number of Pro Micro replacements with ARM controllers: -* [Proton C](https://qmk.fm/proton-c/) (out of stock) +If you've done all of this, and your firmware is still too large, then it is time to consider making the switch to ARM. There are a number of Pro Micro replacements with an ARM controller: * [Bonsai C](https://github.com/customMK/Bonsai-C) (Open Source, DIY/PCBA) * [STeMCell](https://github.com/megamind4089/STeMCell) (Open Source, DIY/PCBA) * [Adafruit KB2040](https://learn.adafruit.com/adafruit-kb2040) @@ -212,6 +212,7 @@ That said, there are a number of Pro Micro replacements with ARM controllers: * [Liatris](https://splitkb.com/products/liatris) * [Imera](https://splitkb.com/products/imera) * [Michi](https://github.com/ci-bus/michi-promicro-rp2040) +* [Proton C](https://qmk.fm/proton-c/) (out of stock) There are other, non-Pro Micro compatible boards out there. The most popular being: * [WeAct Blackpill F411](https://www.aliexpress.com/item/1005001456186625.html) (~$6 USD) From 8c05254a68f291a374eef3ac4174914a196c726a Mon Sep 17 00:00:00 2001 From: Vino Rodrigues <366673+vinorodrigues@users.noreply.github.com> Date: Mon, 13 May 2024 19:33:25 +1000 Subject: [PATCH 04/22] [Bug][Keyboard] Fix encoder resolution issue with Binepad BNK9 (#23707) --- keyboards/binepad/bnk9/config.h | 2 -- keyboards/binepad/bnk9/info.json | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/keyboards/binepad/bnk9/config.h b/keyboards/binepad/bnk9/config.h index c774a0f2b09..1d553e3fea4 100644 --- a/keyboards/binepad/bnk9/config.h +++ b/keyboards/binepad/bnk9/config.h @@ -3,8 +3,6 @@ #pragma once -#define ENCODER_DEFAULT_POS 0x3 // enable 1:1 resolution - // Default PIO0 cases flickering in this board. Setting to PIO1 resolves this issue. #define WS2812_PIO_USE_PIO1 diff --git a/keyboards/binepad/bnk9/info.json b/keyboards/binepad/bnk9/info.json index 1f3b7cb7b0f..89e25f9d063 100644 --- a/keyboards/binepad/bnk9/info.json +++ b/keyboards/binepad/bnk9/info.json @@ -8,7 +8,7 @@ "diode_direction": "COL2ROW", "encoder": { "rotary": [ - {"pin_a": "GP13", "pin_b": "GP14"} + {"pin_a": "GP13", "pin_b": "GP14", "resolution": 2} ] }, "features": { @@ -83,4 +83,4 @@ ] } } -} \ No newline at end of file +} From 6d222b71c6de320097e3dd25ef3f2783da0d638f Mon Sep 17 00:00:00 2001 From: leep-frog <66687468+leep-frog@users.noreply.github.com> Date: Mon, 13 May 2024 13:15:52 -0400 Subject: [PATCH 05/22] Add housekeeping execution to unit tests (#22999) --- tests/housekeeping/config.h | 19 +++++++ tests/housekeeping/test.mk | 18 +++++++ tests/housekeeping/test_housekeeping.cpp | 68 ++++++++++++++++++++++++ tests/test_common/test_fixture.cpp | 4 +- 4 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 tests/housekeeping/config.h create mode 100644 tests/housekeeping/test.mk create mode 100644 tests/housekeeping/test_housekeeping.cpp diff --git a/tests/housekeeping/config.h b/tests/housekeeping/config.h new file mode 100644 index 00000000000..bf1f8cd27fb --- /dev/null +++ b/tests/housekeeping/config.h @@ -0,0 +1,19 @@ +/* Copyright 2024 leep-frog + * + * 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 "test_common.h" diff --git a/tests/housekeeping/test.mk b/tests/housekeeping/test.mk new file mode 100644 index 00000000000..bf46b735ce8 --- /dev/null +++ b/tests/housekeeping/test.mk @@ -0,0 +1,18 @@ +# Copyright 2024 leep-frog +# +# 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 . + +# -------------------------------------------------------------------------------- +# Keep this file, even if it is empty, as a marker that this folder contains tests +# -------------------------------------------------------------------------------- diff --git a/tests/housekeeping/test_housekeeping.cpp b/tests/housekeeping/test_housekeeping.cpp new file mode 100644 index 00000000000..6f1e6a62841 --- /dev/null +++ b/tests/housekeeping/test_housekeeping.cpp @@ -0,0 +1,68 @@ +/* Copyright 2024 leep-frog + * + * 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 "keyboard_report_util.hpp" +#include "keycode.h" +#include "test_common.hpp" +#include "action_tapping.h" +#include "test_keymap_key.hpp" + +using testing::_; + +class HousekeepingMock { + public: + virtual ~HousekeepingMock() {} + + // mock methods + MOCK_METHOD0(housekeeping_task_kb, void(void)); + MOCK_METHOD0(housekeeping_task_user, void(void)); +}; + +class Housekeeping : public TestFixture { + public: + Housekeeping() { + _housekeepingMock.reset(new ::testing::NiceMock()); + } + virtual ~Housekeeping() { + _housekeepingMock.reset(); + } + + static std::unique_ptr _housekeepingMock; +}; + +std::unique_ptr Housekeeping::_housekeepingMock; + +extern "C" { +void housekeeping_task_kb(void) { + if (Housekeeping::_housekeepingMock) { + Housekeeping::_housekeepingMock->housekeeping_task_kb(); + } +} + +void housekeeping_task_user(void) { + if (Housekeeping::_housekeepingMock) { + Housekeeping::_housekeepingMock->housekeeping_task_user(); + } +} +} + +TEST_F(Housekeeping, Works) { + TestDriver driver; + + EXPECT_CALL(*_housekeepingMock, housekeeping_task_kb()).Times(1); + EXPECT_CALL(*_housekeepingMock, housekeeping_task_user()).Times(1); + run_one_scan_loop(); +} diff --git a/tests/test_common/test_fixture.cpp b/tests/test_common/test_fixture.cpp index 72763d0bc08..3cfb2cb4c29 100644 --- a/tests/test_common/test_fixture.cpp +++ b/tests/test_common/test_fixture.cpp @@ -58,7 +58,8 @@ void TestFixture::TearDownTestCase() {} TestFixture::TestFixture() { m_this = this; timer_clear(); - test_logger.info() << "tapping term is " << +GET_TAPPING_TERM(KC_TRANSPARENT, &(keyrecord_t){}) << "ms" << std::endl; + keyrecord_t empty_keyrecord = {0}; + test_logger.info() << "tapping term is " << +GET_TAPPING_TERM(KC_TRANSPARENT, &empty_keyrecord) << "ms" << std::endl; } TestFixture::~TestFixture() { @@ -175,6 +176,7 @@ void TestFixture::idle_for(unsigned time) { test_logger.trace() << +time << " keyboard task " << (time > 1 ? "loops" : "loop") << std::endl; for (unsigned i = 0; i < time; i++) { keyboard_task(); + housekeeping_task(); advance_time(1); } } From fcbbaf448569679323b6533e1d441385e3a0fa7d Mon Sep 17 00:00:00 2001 From: Cipulot <40441626+Cipulot@users.noreply.github.com> Date: Mon, 13 May 2024 20:20:47 +0200 Subject: [PATCH 06/22] Fix for RGB color override and brightness for EC Type K (#23703) Fix for RGB color override and brightness --- keyboards/cipulot/ec_typek/config.h | 2 +- keyboards/cipulot/ec_typek/ec_typek.c | 9 +++++---- keyboards/cipulot/ec_typek/info.json | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/keyboards/cipulot/ec_typek/config.h b/keyboards/cipulot/ec_typek/config.h index a6619c600c8..1fad97e7117 100644 --- a/keyboards/cipulot/ec_typek/config.h +++ b/keyboards/cipulot/ec_typek/config.h @@ -73,7 +73,7 @@ #define WS2812_DMA_CHANNEL 6 #define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM1_UP -#define RGBLIGHT_DEFAULT_VAL 200 +#define RGBLIGHT_DEFAULT_VAL 175 #define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 5) #define NUM_INDICATOR_INDEX 2 diff --git a/keyboards/cipulot/ec_typek/ec_typek.c b/keyboards/cipulot/ec_typek/ec_typek.c index 035c90303ca..3d128d4cdc5 100644 --- a/keyboards/cipulot/ec_typek/ec_typek.c +++ b/keyboards/cipulot/ec_typek/ec_typek.c @@ -35,8 +35,8 @@ void eeconfig_init_kb(void) { eeprom_ec_config.mode_0_actuation_threshold = DEFAULT_MODE_0_ACTUATION_LEVEL; eeprom_ec_config.mode_0_release_threshold = DEFAULT_MODE_0_RELEASE_LEVEL; eeprom_ec_config.mode_1_initial_deadzone_offset = DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET; - eeprom_ec_config.mode_1_actuation_offset = DEFAULT_MODE_1_ACTUATION_OFFSET; - eeprom_ec_config.mode_1_release_offset = DEFAULT_MODE_1_RELEASE_OFFSET; + eeprom_ec_config.mode_1_actuation_offset = DEFAULT_MODE_1_ACTUATION_OFFSET; + eeprom_ec_config.mode_1_release_offset = DEFAULT_MODE_1_RELEASE_OFFSET; for (uint8_t row = 0; row < MATRIX_ROWS; row++) { for (uint8_t col = 0; col < MATRIX_COLS; col++) { @@ -59,8 +59,8 @@ void keyboard_post_init_kb(void) { ec_config.mode_0_actuation_threshold = eeprom_ec_config.mode_0_actuation_threshold; ec_config.mode_0_release_threshold = eeprom_ec_config.mode_0_release_threshold; ec_config.mode_1_initial_deadzone_offset = eeprom_ec_config.mode_1_initial_deadzone_offset; - ec_config.mode_1_actuation_offset = eeprom_ec_config.mode_1_actuation_offset; - ec_config.mode_1_release_offset = eeprom_ec_config.mode_1_release_offset; + ec_config.mode_1_actuation_offset = eeprom_ec_config.mode_1_actuation_offset; + ec_config.mode_1_release_offset = eeprom_ec_config.mode_1_release_offset; ec_config.bottoming_calibration = false; for (uint8_t row = 0; row < MATRIX_ROWS; row++) { for (uint8_t col = 0; col < MATRIX_COLS; col++) { @@ -115,5 +115,6 @@ bool indicators_callback(void) { else sethsv(0, 0, 0, (rgb_led_t *)&led[SCROLL_INDICATOR_INDEX]); + rgblight_set(); return true; } diff --git a/keyboards/cipulot/ec_typek/info.json b/keyboards/cipulot/ec_typek/info.json index e4642ee5553..be8c6d02701 100644 --- a/keyboards/cipulot/ec_typek/info.json +++ b/keyboards/cipulot/ec_typek/info.json @@ -42,7 +42,7 @@ }, "led_count": 69, "led_map": [0, 1, 2, 3, 4, 5, 66, 67, 68, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65], - "max_brightness": 200 + "max_brightness": 175 }, "usb": { "device_version": "0.0.1", From 501f9886664d6f41fab09733f038851cddf699f0 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Wed, 15 May 2024 11:31:14 +1000 Subject: [PATCH 07/22] [CLI] Fixup return code for `qmk userspace-compile`. (#23720) --- lib/python/qmk/cli/userspace/compile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/python/qmk/cli/userspace/compile.py b/lib/python/qmk/cli/userspace/compile.py index 0a42dd5bf5b..fb320a16f0d 100644 --- a/lib/python/qmk/cli/userspace/compile.py +++ b/lib/python/qmk/cli/userspace/compile.py @@ -35,4 +35,4 @@ def userspace_compile(cli): if len(keyboard_keymap_targets) > 0: build_targets.extend(search_keymap_targets(keyboard_keymap_targets)) - mass_compile_targets(list(set(build_targets)), cli.args.clean, cli.args.dry_run, cli.config.userspace_compile.no_temp, cli.config.userspace_compile.parallel, **build_environment(cli.args.env)) + return mass_compile_targets(list(set(build_targets)), cli.args.clean, cli.args.dry_run, cli.config.userspace_compile.no_temp, cli.config.userspace_compile.parallel, **build_environment(cli.args.env)) From eb5172f4b5b1589d83a0a4c63ad40340d68da673 Mon Sep 17 00:00:00 2001 From: Vertex-kb <102476474+Vertex-kb@users.noreply.github.com> Date: Wed, 15 May 2024 12:06:17 +0800 Subject: [PATCH 08/22] [Keyboard] Add cycle7 (#23290) * Add files via upload * Update keyboards/vertex/cycle7/readme.md Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/mcuconf.h Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/halconf.h Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/info.json Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/info.json Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/info.json Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/info.json Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/keymaps/default/keymap.c Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/keymaps/via/keymap.c Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Update keyboards/vertex/cycle7/config.h Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> * Add files via upload * Update info.json * Add files via upload * Update keyboards/vertex/cycle7/keymaps/default/keymap.c Co-authored-by: Duncan Sutherland * Update keyboards/vertex/cycle7/keymaps/via/keymap.c Co-authored-by: Duncan Sutherland * Update keyboards/vertex/cycle7/keymaps/via/keymap.c Co-authored-by: Duncan Sutherland * Update keyboards/vertex/cycle7/keymaps/default/keymap.c Co-authored-by: Duncan Sutherland * Update keyboards/vertex/cycle7/info.json Co-authored-by: Duncan Sutherland * Update keyboards/vertex/cycle7/info.json Co-authored-by: Duncan Sutherland * Update keyboards/vertex/cycle7/info.json Co-authored-by: Duncan Sutherland --------- Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com> Co-authored-by: Duncan Sutherland --- keyboards/vertex/cycle7/config.h | 19 + keyboards/vertex/cycle7/halconf.h | 21 + keyboards/vertex/cycle7/info.json | 739 ++++++++++++++++++ .../vertex/cycle7/keymaps/default/keymap.c | 27 + keyboards/vertex/cycle7/keymaps/via/keymap.c | 27 + keyboards/vertex/cycle7/keymaps/via/rules.mk | 2 + keyboards/vertex/cycle7/mcuconf.h | 22 + keyboards/vertex/cycle7/readme.md | 25 + keyboards/vertex/cycle7/rules.mk | 1 + 9 files changed, 883 insertions(+) create mode 100644 keyboards/vertex/cycle7/config.h create mode 100644 keyboards/vertex/cycle7/halconf.h create mode 100644 keyboards/vertex/cycle7/info.json create mode 100644 keyboards/vertex/cycle7/keymaps/default/keymap.c create mode 100644 keyboards/vertex/cycle7/keymaps/via/keymap.c create mode 100644 keyboards/vertex/cycle7/keymaps/via/rules.mk create mode 100644 keyboards/vertex/cycle7/mcuconf.h create mode 100644 keyboards/vertex/cycle7/readme.md create mode 100644 keyboards/vertex/cycle7/rules.mk diff --git a/keyboards/vertex/cycle7/config.h b/keyboards/vertex/cycle7/config.h new file mode 100644 index 00000000000..4b316ce6304 --- /dev/null +++ b/keyboards/vertex/cycle7/config.h @@ -0,0 +1,19 @@ +/* Copyright 2022 Eason + +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_SPI_DRIVER SPID2 +#define WS2812_SPI_MOSI_PAL_MODE 5 diff --git a/keyboards/vertex/cycle7/halconf.h b/keyboards/vertex/cycle7/halconf.h new file mode 100644 index 00000000000..e6258a974c8 --- /dev/null +++ b/keyboards/vertex/cycle7/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2022 Eason + * + * 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_SPI TRUE + + #include_next diff --git a/keyboards/vertex/cycle7/info.json b/keyboards/vertex/cycle7/info.json new file mode 100644 index 00000000000..d9b2f301684 --- /dev/null +++ b/keyboards/vertex/cycle7/info.json @@ -0,0 +1,739 @@ +{ + "keyboard_name": "Cycle7", + "manufacturer": "vertex", + "maintainer": "Eason", + "usb": { + "vid": "0x9A94", + "pid": "0x9F70", + "device_version": "0.0.1", + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "rgblight": { + "led_count": 1, + "animations": { + "breathing": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "knight": true, + "christmas": true, + "static_gradient": true, + "rgb_test": true, + "alternating": true, + "twinkle": true + } + }, + "ws2812": { + "pin": "B15", + "driver": "spi" + }, + "matrix_pins": { + "rows": [ "A8", "A9", "A10", "B3", "A15"], + "cols": [ "A3", "A2", "A1", "A0", "C15", "C14", "B9", "B8", "B7", "B6", "A7", "A6", "A5", "A4", "B5", "B4"] + }, + "diode_direction": "ROW2COL", + "processor": "STM32F103", + "bootloader": "uf2boot", + "community_layouts": [ + "tkl_nofrow_ansi", + "tkl_nofrow_iso" + ], + "layouts": { + "LAYOUT_all": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [4, 7], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 2, "w": 1.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 15], "x": 16.25, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_ansi_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [4, 7], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 15], "x": 16.25, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + +] +}, + "LAYOUT_tkl_nofrow_ansi": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [3, 15], "x": 16.25, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [3, 15], "x": 16.25, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_iso_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [4, 7], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 15], "x": 16.25, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_ansi_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [4, 7], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 15], "x": 16.25, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_ansi_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [3, 15], "x": 16.25, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_iso_tsangan": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75}, + {"matrix": [3, 15], "x": 16.25, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + ] + }, + "LAYOUT_tkl_nofrow_iso_tsangan_split_bs_rshift": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0}, + {"matrix": [4, 7], "x": 14, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 15], "x": 16.25, "y": 0}, + {"matrix": [2, 14], "x": 17.25, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 14], "x": 15.25, "y": 1}, + {"matrix": [1, 15], "x": 16.25, "y": 1}, + {"matrix": [2, 15], "x": 17.25, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [3, 15], "x": 16.25, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5}, + {"matrix": [4, 1], "x": 1.5, "y": 4}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5}, + {"matrix": [4, 6], "x": 4, "y": 4, "w": 7}, + {"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5}, + {"matrix": [4, 12], "x": 12.5, "y": 4}, + {"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}, + {"matrix": [4, 14], "x": 15.25, "y": 4}, + {"matrix": [4, 15], "x": 16.25, "y": 4}, + {"matrix": [3, 14], "x": 17.25, "y": 4} + ] + } + } +} diff --git a/keyboards/vertex/cycle7/keymaps/default/keymap.c b/keyboards/vertex/cycle7/keymaps/default/keymap.c new file mode 100644 index 00000000000..c5f7e8699b3 --- /dev/null +++ b/keyboards/vertex/cycle7/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2022 vertex + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_1, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_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_LSFT, KC_SLSH, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_MENU, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/vertex/cycle7/keymaps/via/keymap.c b/keyboards/vertex/cycle7/keymaps/via/keymap.c new file mode 100644 index 00000000000..c5f7e8699b3 --- /dev/null +++ b/keyboards/vertex/cycle7/keymaps/via/keymap.c @@ -0,0 +1,27 @@ +/* Copyright 2022 vertex + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_1, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_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_LSFT, KC_SLSH, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_MENU, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT + ) +}; diff --git a/keyboards/vertex/cycle7/keymaps/via/rules.mk b/keyboards/vertex/cycle7/keymaps/via/rules.mk new file mode 100644 index 00000000000..36b7ba9cbc9 --- /dev/null +++ b/keyboards/vertex/cycle7/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/vertex/cycle7/mcuconf.h b/keyboards/vertex/cycle7/mcuconf.h new file mode 100644 index 00000000000..45bdcba1740 --- /dev/null +++ b/keyboards/vertex/cycle7/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2022 Eason + * + * 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_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE diff --git a/keyboards/vertex/cycle7/readme.md b/keyboards/vertex/cycle7/readme.md new file mode 100644 index 00000000000..ad36741dedc --- /dev/null +++ b/keyboards/vertex/cycle7/readme.md @@ -0,0 +1,25 @@ +# Cycle7 + +![Cycle7](https://i.imgur.com/v5d8D7h.png) + +* A customizable hotswap 70% keyboard. + +* Keyboard Maintainer: [EASON](https://github.com/EasonQian1) +* Hardware Supported: Cycle7 PCB +* Hardware Availability: [EASON](https://github.com/EasonQian1) + +Make example for this keyboard (after setting up your build environment): + + make vertex/cycle7:default + +Flashing example for this keyboard: + + make vertex/cycle7: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 ESC in the keyboard then replug +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` diff --git a/keyboards/vertex/cycle7/rules.mk b/keyboards/vertex/cycle7/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/vertex/cycle7/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 340be4bae34d35137b65f3c303f3091ede3c8938 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Fri, 17 May 2024 00:06:19 +0100 Subject: [PATCH 09/22] Resolve home directory in userspace config (#23730) --- lib/python/qmk/userspace.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/python/qmk/userspace.py b/lib/python/qmk/userspace.py index 7e4cb847c80..1e5823b2291 100644 --- a/lib/python/qmk/userspace.py +++ b/lib/python/qmk/userspace.py @@ -12,29 +12,29 @@ from qmk.json_encoders import UserspaceJSONEncoder def qmk_userspace_paths(): - test_dirs = {} + test_dirs = set() # If we're already in a directory with a qmk.json and a keyboards or layouts directory, interpret it as userspace if environ.get('ORIG_CWD') is not None: current_dir = Path(environ['ORIG_CWD']) while len(current_dir.parts) > 1: if (current_dir / 'qmk.json').is_file(): - test_dirs[current_dir] = True + test_dirs.add(current_dir) current_dir = current_dir.parent # If we have a QMK_USERSPACE environment variable, use that if environ.get('QMK_USERSPACE') is not None: - current_dir = Path(environ['QMK_USERSPACE']) + current_dir = Path(environ['QMK_USERSPACE']).expanduser() if current_dir.is_dir(): - test_dirs[current_dir] = True + test_dirs.add(current_dir) # If someone has configured a directory, use that if cli.config.user.overlay_dir is not None: - current_dir = Path(cli.config.user.overlay_dir) + current_dir = Path(cli.config.user.overlay_dir).expanduser().resolve() if current_dir.is_dir(): - test_dirs[current_dir] = True + test_dirs.add(current_dir) - return list(test_dirs.keys()) + return list(test_dirs) def qmk_userspace_validate(path): From 47bc02b2ff84c9a35b8f778a8a1012f737372eea Mon Sep 17 00:00:00 2001 From: Dasky <32983009+daskygit@users.noreply.github.com> Date: Fri, 17 May 2024 22:59:45 +0100 Subject: [PATCH 10/22] Force CPI update using timer when using split pointing. (#23545) --- quantum/split_common/transactions.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/quantum/split_common/transactions.c b/quantum/split_common/transactions.c index 33bc9e9f575..2bebd2757da 100644 --- a/quantum/split_common/transactions.c +++ b/quantum/split_common/transactions.c @@ -710,16 +710,17 @@ static bool pointing_handlers_master(matrix_row_t master_matrix[], matrix_row_t return true; } # endif - static uint32_t last_update = 0; - static uint16_t last_cpi = 0; + static uint32_t last_update = 0; + static uint32_t last_cpi_update = 0; + static uint16_t last_cpi = 0; report_mouse_t temp_state; uint16_t temp_cpi; bool okay = read_if_checksum_mismatch(GET_POINTING_CHECKSUM, GET_POINTING_DATA, &last_update, &temp_state, &split_shmem->pointing.report, sizeof(temp_state)); if (okay) pointing_device_set_shared_report(temp_state); temp_cpi = pointing_device_get_shared_cpi(); - if (temp_cpi && last_cpi != temp_cpi) { + if (temp_cpi) { split_shmem->pointing.cpi = temp_cpi; - okay = transport_write(PUT_POINTING_CPI, &split_shmem->pointing.cpi, sizeof(split_shmem->pointing.cpi)); + okay = send_if_condition(PUT_POINTING_CPI, &last_cpi_update, last_cpi != temp_cpi, &split_shmem->pointing.cpi, sizeof(split_shmem->pointing.cpi)); if (okay) { last_cpi = temp_cpi; } From 8f2085421e60fe1ac7ebc2c9b0fc7047daaaa1b5 Mon Sep 17 00:00:00 2001 From: Danny Date: Sat, 18 May 2024 13:51:02 -0400 Subject: [PATCH 11/22] [Keyboard] Add Irispad (#23724) * Add Irispad * Fix x positions for RGB LEDs * Add encoder/bootmagic settings in info.json and run format-json * Add missing info.json * Fix README formatting --- keyboards/keebio/irispad/info.json | 8 + .../irispad/keymaps/default/keymap.json | 43 +++++ .../keebio/irispad/keymaps/via/keymap.json | 43 +++++ keyboards/keebio/irispad/readme.md | 21 +++ keyboards/keebio/irispad/rev8/config.h | 11 ++ keyboards/keebio/irispad/rev8/info.json | 151 ++++++++++++++++++ keyboards/keebio/irispad/rev8/rules.mk | 1 + 7 files changed, 278 insertions(+) create mode 100644 keyboards/keebio/irispad/info.json create mode 100644 keyboards/keebio/irispad/keymaps/default/keymap.json create mode 100644 keyboards/keebio/irispad/keymaps/via/keymap.json create mode 100644 keyboards/keebio/irispad/readme.md create mode 100644 keyboards/keebio/irispad/rev8/config.h create mode 100644 keyboards/keebio/irispad/rev8/info.json create mode 100644 keyboards/keebio/irispad/rev8/rules.mk diff --git a/keyboards/keebio/irispad/info.json b/keyboards/keebio/irispad/info.json new file mode 100644 index 00000000000..669038aff1f --- /dev/null +++ b/keyboards/keebio/irispad/info.json @@ -0,0 +1,8 @@ +{ + "manufacturer": "Keebio", + "url": "https://keeb.io", + "maintainer": "Keebio", + "usb": { + "vid": "0xCB10" + } +} diff --git a/keyboards/keebio/irispad/keymaps/default/keymap.json b/keyboards/keebio/irispad/keymaps/default/keymap.json new file mode 100644 index 00000000000..fd0dc3bb5ee --- /dev/null +++ b/keyboards/keebio/irispad/keymaps/default/keymap.json @@ -0,0 +1,43 @@ +{ + "config": { "features": {"encoder_map": true, "tri_layer": true} }, + "keyboard": "keebio/irispad", + "keymap": "default", + "layout": "LAYOUT", + "layers": [ + [ + "QK_GESC", "KC_1" , "KC_2" , "KC_3" , "KC_4" , "KC_5" , + "KC_TAB" , "KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T" , + "KC_LCTL", "KC_A" , "KC_S" , "KC_D" , "KC_F" , "KC_G" , + "KC_LSFT", "KC_Z" , "KC_X" , "KC_C" , "KC_V" , "KC_B" , "TL_UPPR", + "KC_LGUI", "TL_LOWR", "KC_ENT" + ], + [ + "KC_TILD", "KC_EXLM", "KC_AT" , "KC_HASH", "KC_DLR" , "KC_PERC", + "KC_GRV" , "_______", "KC_UP" , "_______", "QK_BOOT", "_______", + "KC_DEL" , "KC_LEFT", "KC_DOWN", "KC_RGHT", "_______", "KC_LBRC", + "RGB_MOD", "EE_CLR" , "_______", "_______", "_______", "KC_LCBR", "KC_LPRN", + "_______", "_______", "KC_DEL" + ], + [ + "KC_F6" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5" , + "KC_F12", "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_F11" , + "RGB_MOD", "KC_MPRV", "KC_MNXT", "KC_VOLU", "KC_PGUP", "KC_UNDS", + "KC_MUTE", "KC_MSTP", "KC_MPLY", "KC_VOLD", "KC_PGDN", "KC_MINS", "KC_LPRN", + "_______", "_______", "_______" + ] + ], + "encoders": [ + [ + {"ccw": "KC_PGUP", "cw": "KC_PGDN"}, + {"ccw": "KC_VOLD", "cw": "KC_VOLU"} + ], + [ + {"ccw": "_______", "cw": "_______"}, + {"ccw": "_______", "cw": "_______"} + ], + [ + {"ccw": "_______", "cw": "_______"}, + {"ccw": "_______", "cw": "_______"} + ] + ] +} diff --git a/keyboards/keebio/irispad/keymaps/via/keymap.json b/keyboards/keebio/irispad/keymaps/via/keymap.json new file mode 100644 index 00000000000..97fc085b92e --- /dev/null +++ b/keyboards/keebio/irispad/keymaps/via/keymap.json @@ -0,0 +1,43 @@ +{ + "config": { "features": {"encoder_map": true, "via": true} }, + "keyboard": "keebio/irispad", + "keymap": "via", + "layout": "LAYOUT", + "layers": [ + [ + "QK_GESC", "KC_1" , "KC_2" , "KC_3" , "KC_4" , "KC_5" , + "KC_TAB" , "KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T" , + "KC_LCTL", "KC_A" , "KC_S" , "KC_D" , "KC_F" , "KC_G" , + "KC_LSFT", "KC_Z" , "KC_X" , "KC_C" , "KC_V" , "KC_B" , "TL_UPPR", + "KC_LGUI", "TL_LOWR", "KC_ENT" + ], + [ + "KC_TILD", "KC_EXLM", "KC_AT" , "KC_HASH", "KC_DLR" , "KC_PERC", + "KC_GRV" , "_______", "KC_UP" , "_______", "QK_BOOT", "_______", + "KC_DEL" , "KC_LEFT", "KC_DOWN", "KC_RGHT", "_______", "KC_LBRC", + "RGB_MOD", "EE_CLR" , "_______", "_______", "_______", "KC_LCBR", "KC_LPRN", + "_______", "_______", "KC_DEL" + ], + [ + "KC_F6" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5" , + "KC_F12", "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_F11" , + "RGB_MOD", "KC_MPRV", "KC_MNXT", "KC_VOLU", "KC_PGUP", "KC_UNDS", + "KC_MUTE", "KC_MSTP", "KC_MPLY", "KC_VOLD", "KC_PGDN", "KC_MINS", "KC_LPRN", + "_______", "_______", "_______" + ] + ], + "encoders": [ + [ + {"ccw": "KC_PGUP", "cw": "KC_PGDN"}, + {"ccw": "KC_VOLD", "cw": "KC_VOLU"} + ], + [ + {"ccw": "_______", "cw": "_______"}, + {"ccw": "_______", "cw": "_______"} + ], + [ + {"ccw": "_______", "cw": "_______"}, + {"ccw": "_______", "cw": "_______"} + ] + ] +} diff --git a/keyboards/keebio/irispad/readme.md b/keyboards/keebio/irispad/readme.md new file mode 100644 index 00000000000..28e0334eed8 --- /dev/null +++ b/keyboards/keebio/irispad/readme.md @@ -0,0 +1,21 @@ +# Irispad + +An ergonomic gamepad based off of the Iris and sold by Keebio. [More info at Keebio](https://keeb.io). + +* Keyboard Maintainer: [Bakingpy/nooges](https://github.com/nooges) +* Hardware Supported: RP2040 +* Hardware Availability: [Keebio](https://keeb.io) + +Make example for this keyboard (after setting up your build environment): + + make keebio/irispad/rev8:default + +Example of flashing this keyboard: + + make keebio/irispad/rev8:default:flash + +See [build environment setup](https://docs.qmk.fm/#/newbs_getting_started) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. + +A build guide for this keyboard can be found here: [Iris Build Guide](https://docs.keeb.io/iris-rev6-build-guide) + +Note: The Irispad PCB is a repurposed Iris Rev. 8 PCB from a batch that had all of the diodes flipped, so if you would like to use a regular Iris Rev. 8 PCB, you will need to change `ROW2COL` to `COL2ROW` in `keyboard.json`. diff --git a/keyboards/keebio/irispad/rev8/config.h b/keyboards/keebio/irispad/rev8/config.h new file mode 100644 index 00000000000..c0407f20bbb --- /dev/null +++ b/keyboards/keebio/irispad/rev8/config.h @@ -0,0 +1,11 @@ +// Copyright 2024 Danny Nguyen (danny@keeb.io) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U + +#define I2C_DRIVER I2CD2 +#define I2C1_SDA_PIN GP10 +#define I2C1_SCL_PIN GP11 diff --git a/keyboards/keebio/irispad/rev8/info.json b/keyboards/keebio/irispad/rev8/info.json new file mode 100644 index 00000000000..9845ebc9fd9 --- /dev/null +++ b/keyboards/keebio/irispad/rev8/info.json @@ -0,0 +1,151 @@ +{ + "keyboard_name": "Irispad Rev. 8", + "bootloader": "rp2040", + "diode_direction": "ROW2COL", + "encoder": { + "rotary": [ + {"pin_a": "GP14", "pin_b": "GP15"}, + {"pin_a": "GP26", "pin_b": "GP25"} + ] + }, + "features": { + "bootmagic": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["GP2", "GP3", "GP29", "GP27", "GP6", "GP5"], + "rows": ["GP0", "GP1", "GP7", "GP16", "GP28"] + }, + "processor": "RP2040", + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_sat": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "band_val": true, + "breathing": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "cycle_up_down": true, + "digital_rain": true, + "dual_beacon": true, + "gradient_left_right": true, + "gradient_up_down": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "jellybean_raindrops": true, + "multisplash": true, + "pixel_flow": true, + "pixel_fractal": true, + "pixel_rain": true, + "rainbow_beacon": true, + "rainbow_moving_chevron": true, + "rainbow_pinwheels": true, + "raindrops": true, + "solid_multisplash": true, + "solid_reactive": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_multinexus": true, + "solid_reactive_multiwide": true, + "solid_reactive_nexus": true, + "solid_reactive_simple": true, + "solid_reactive_wide": true, + "solid_splash": true, + "splash": true, + "typing_heatmap": true + }, + "driver": "ws2812", + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 5, "flags": 4}, + {"x": 18, "y": 5, "flags": 2}, + {"matrix": [0, 1], "x": 37, "y": 5, "flags": 4}, + {"matrix": [0, 2], "x": 76, "y": 2, "flags": 4}, + {"x": 91, "y": 1, "flags": 2}, + {"matrix": [0, 3], "x": 110, "y": 0, "flags": 4}, + {"matrix": [0, 4], "x": 146, "y": 5, "flags": 4}, + {"x": 165, "y": 3, "flags": 2}, + {"matrix": [0, 5], "x": 183, "y": 3, "flags": 4}, + {"matrix": [1, 5], "x": 183, "y": 17, "flags": 4}, + {"matrix": [1, 4], "x": 137, "y": 15, "flags": 4}, + {"matrix": [1, 3], "x": 110, "y": 13, "flags": 4}, + {"matrix": [1, 2], "x": 73, "y": 15, "flags": 4}, + {"matrix": [1, 1], "x": 37, "y": 18, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 18, "flags": 4}, + {"matrix": [2, 0], "x": 0, "y": 32, "flags": 4}, + {"matrix": [2, 1], "x": 37, "y": 32, "flags": 4}, + {"matrix": [2, 2], "x": 73, "y": 28, "flags": 4}, + {"matrix": [2, 3], "x": 110, "y": 27, "flags": 4}, + {"matrix": [2, 4], "x": 137, "y": 28, "flags": 4}, + {"matrix": [2, 5], "x": 183, "y": 30, "flags": 4}, + {"matrix": [3, 5], "x": 183, "y": 43, "flags": 4}, + {"matrix": [3, 4], "x": 146, "y": 42, "flags": 4}, + {"matrix": [3, 3], "x": 110, "y": 40, "flags": 4}, + {"x": 91, "y": 50, "flags": 2}, + {"matrix": [3, 2], "x": 73, "y": 42, "flags": 4}, + {"matrix": [3, 1], "x": 37, "y": 45, "flags": 4}, + {"x": 18, "y": 43, "flags": 2}, + {"matrix": [3, 0], "x": 0, "y": 45, "flags": 4}, + {"matrix": [4, 5], "x": 224, "y": 52, "flags": 4}, + {"matrix": [4, 4], "x": 206, "y": 64, "flags": 4}, + {"x": 183, "y": 58, "flags": 2}, + {"matrix": [4, 3], "x": 165, "y": 58, "flags": 4}, + {"matrix": [4, 2], "x": 128, "y": 47, "flags": 4} + ], + "max_brightness": 180, + "sleep": true + }, + "usb": { + "device_version": "8.0.0", + "pid": "0x8356" + }, + "ws2812": { + "driver": "vendor", + "pin": "GP9" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.375}, + {"matrix": [0, 1], "x": 1, "y": 0.375}, + {"matrix": [0, 2], "x": 2, "y": 0.125}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0.125}, + {"matrix": [0, 5], "x": 5, "y": 0.25}, + {"matrix": [1, 0], "x": 0, "y": 1.375}, + {"matrix": [1, 1], "x": 1, "y": 1.375}, + {"matrix": [1, 2], "x": 2, "y": 1.125}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1.125}, + {"matrix": [1, 5], "x": 5, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.375}, + {"matrix": [2, 1], "x": 1, "y": 2.375}, + {"matrix": [2, 2], "x": 2, "y": 2.125}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2.125}, + {"matrix": [2, 5], "x": 5, "y": 2.25}, + {"matrix": [3, 0], "x": 0, "y": 3.375}, + {"matrix": [3, 1], "x": 1, "y": 3.375}, + {"matrix": [3, 2], "x": 2, "y": 3.125}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3.125}, + {"matrix": [3, 5], "x": 5, "y": 3.25}, + {"matrix": [4, 5], "x": 6.15, "y": 3.75}, + {"matrix": [4, 2], "x": 3.5, "y": 4.25}, + {"matrix": [4, 3], "x": 4.5, "y": 4.375}, + {"matrix": [4, 4], "x": 5.6, "y": 4.75} + ] + } + } +} diff --git a/keyboards/keebio/irispad/rev8/rules.mk b/keyboards/keebio/irispad/rev8/rules.mk new file mode 100644 index 00000000000..161ec22b16e --- /dev/null +++ b/keyboards/keebio/irispad/rev8/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = vendor From d0ac04a841a11bd51d3bda73c989724289ddae0f Mon Sep 17 00:00:00 2001 From: c0ldbru Date: Sat, 18 May 2024 13:52:24 -0400 Subject: [PATCH 12/22] [Keyboard] Add h4ckb0ard (#23717) * adds h4ckb0ard * Update keyboards/rot13labs/h4ckb0ard/info.json Co-authored-by: Joel Challis * Update keyboards/rot13labs/h4ckb0ard/info.json Co-authored-by: Joel Challis * Update keyboards/rot13labs/h4ckb0ard/info.json Co-authored-by: Joel Challis * Update info.json updating flags to indicate backlighting * Update info.json reduces max brightness to 100 * Delete keyboards/rot13labs/h4ckb0ard/config.h removes this since its not needed anymore * Update keyboards/rot13labs/h4ckb0ard/info.json Co-authored-by: jack <0x6a73@protonmail.com> * Update keyboards/rot13labs/h4ckb0ard/keymaps/default/keymap.c Co-authored-by: jack <0x6a73@protonmail.com> * Update keyboards/rot13labs/h4ckb0ard/keymaps/default/keymap.c Co-authored-by: jack <0x6a73@protonmail.com> --------- Co-authored-by: c0ldbru Co-authored-by: Joel Challis Co-authored-by: jack <0x6a73@protonmail.com> --- keyboards/rot13labs/h4ckb0ard/info.json | 159 ++++++++++++++++++ .../h4ckb0ard/keymaps/default/keymap.c | 45 +++++ keyboards/rot13labs/h4ckb0ard/readme.md | 19 +++ keyboards/rot13labs/h4ckb0ard/rules.mk | 1 + 4 files changed, 224 insertions(+) create mode 100644 keyboards/rot13labs/h4ckb0ard/info.json create mode 100755 keyboards/rot13labs/h4ckb0ard/keymaps/default/keymap.c create mode 100644 keyboards/rot13labs/h4ckb0ard/readme.md create mode 100644 keyboards/rot13labs/h4ckb0ard/rules.mk diff --git a/keyboards/rot13labs/h4ckb0ard/info.json b/keyboards/rot13labs/h4ckb0ard/info.json new file mode 100644 index 00000000000..0ffe5be40de --- /dev/null +++ b/keyboards/rot13labs/h4ckb0ard/info.json @@ -0,0 +1,159 @@ +{ + "manufacturer": "rot13labs", + "keyboard_name": "H4CKB0ARD", + "maintainer": "c0ldbru", + "bootloader": "usbasploader", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["C0", "C1", "C2", "C3", "C4", "C5", "D0", "D1", "B5", "D7", "D6", "D4"], + "rows": ["B0", "B1", "B2", "B3"] + }, + "processor": "atmega328p", + "usb": { + "pid": "0xBABE", + "vid": "0xBEEF", + "device_version": "13.3.7", + "no_startup_check": true + }, + "ws2812": { + "pin": "B4" + }, + "rgb_matrix": { + "animations": { + "cycle_up_down": true, + "jellybean_raindrops": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "pixel_fractal": true, + "rainbow_moving_chevron": true, + "cycle_pinwheel": true, + "pixel_rain": true, + "dual_beacon": true, + "hue_breathing": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_reactive_cross": true + }, + "driver": "ws2812", + "default": { + "animation": "cycle_up_down" + }, + "layout": [ + {"flags": 4, "matrix": [0, 11], "x": 0, "y": 0}, + {"flags": 4, "matrix": [0, 10], "x": 1, "y": 0}, + {"flags": 4, "matrix": [0, 9], "x": 2, "y": 0}, + {"flags": 4, "matrix": [0, 8], "x": 3, "y": 0}, + {"flags": 4, "matrix": [0, 7], "x": 4, "y": 0}, + {"flags": 4, "matrix": [0, 6], "x": 5, "y": 0}, + {"flags": 4, "matrix": [0, 5], "x": 6, "y": 0}, + {"flags": 4, "matrix": [0, 4], "x": 7, "y": 0}, + {"flags": 4, "matrix": [0, 3], "x": 8, "y": 0}, + {"flags": 4, "matrix": [0, 2], "x": 9, "y": 0}, + {"flags": 4, "matrix": [0, 1], "x": 10, "y": 0}, + {"flags": 4, "matrix": [0, 0], "x": 11, "y": 0}, + + {"flags": 4, "matrix": [1, 0], "x": 0, "y": 1}, + {"flags": 4, "matrix": [1, 1], "x": 1.25, "y": 1}, + {"flags": 4, "matrix": [1, 2], "x": 2.25, "y": 1}, + {"flags": 4, "matrix": [1, 3], "x": 3.25, "y": 1}, + {"flags": 4, "matrix": [1, 4], "x": 4.25, "y": 1}, + {"flags": 4, "matrix": [1, 5], "x": 5.25, "y": 1}, + {"flags": 4, "matrix": [1, 6], "x": 6.25, "y": 1}, + {"flags": 4, "matrix": [1, 7], "x": 7.25, "y": 1}, + {"flags": 4, "matrix": [1, 8], "x": 8.25, "y": 1}, + {"flags": 4, "matrix": [1, 9], "x": 9.25, "y": 1}, + {"flags": 4, "matrix": [1, 11], "x": 10.25, "y": 1}, + + {"flags": 4, "matrix": [2, 11], "x": 0, "y": 2}, + {"flags": 4, "matrix": [2, 10], "x": 1.75, "y": 2}, + {"flags": 4, "matrix": [2, 8], "x": 2.75, "y": 2}, + {"flags": 4, "matrix": [2, 7], "x": 3.75, "y": 2}, + {"flags": 4, "matrix": [2, 6], "x": 4.75, "y": 2}, + {"flags": 4, "matrix": [2, 5], "x": 5.75, "y": 2}, + {"flags": 4, "matrix": [2, 4], "x": 6.75, "y": 2}, + {"flags": 4, "matrix": [2, 3], "x": 7.75, "y": 2}, + {"flags": 4, "matrix": [2, 2], "x": 8.75, "y": 2}, + {"flags": 4, "matrix": [2, 1], "x": 10.5, "y": 2}, + {"flags": 4, "matrix": [2, 0], "x": 11.5, "y": 2}, + + {"flags": 4, "matrix": [3, 0], "x": 0, "y": 3}, + {"flags": 4, "matrix": [3, 1], "x": 1.25, "y": 3}, + {"flags": 4, "matrix": [3, 2], "x": 2.5, "y": 3}, + {"flags": 4, "matrix": [3, 4], "x": 3.5, "y": 3}, + {"flags": 4, "matrix": [3, 6], "x": 5.75, "y": 3}, + {"flags": 4, "matrix": [3, 8], "x": 8.5, "y": 3}, + {"flags": 4, "matrix": [3, 9], "x": 9.5, "y": 3}, + {"flags": 4, "matrix": [3, 10], "x": 10.5, "y": 3}, + {"flags": 4, "matrix": [3, 11], "x": 11.5, "y": 3} + ], + "max_brightness": 100 + + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0, "w": 1.5}, + + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25}, + {"matrix": [1, 1], "x": 1.25, "y": 1}, + {"matrix": [1, 2], "x": 2.25, "y": 1}, + {"matrix": [1, 3], "x": 3.25, "y": 1}, + {"matrix": [1, 4], "x": 4.25, "y": 1}, + {"matrix": [1, 5], "x": 5.25, "y": 1}, + {"matrix": [1, 6], "x": 6.25, "y": 1}, + {"matrix": [1, 7], "x": 7.25, "y": 1}, + {"matrix": [1, 8], "x": 8.25, "y": 1}, + {"matrix": [1, 9], "x": 9.25, "y": 1}, + {"matrix": [1, 11], "x": 10.25, "y": 1, "w": 2.25}, + + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2, "w": 1.75}, + {"matrix": [2, 10], "x": 10.5, "y": 2}, + {"matrix": [2, 11], "x": 11.5, "y": 2}, + + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3, "w": 1.25}, + {"matrix": [3, 2], "x": 2.5, "y": 3}, + {"matrix": [3, 4], "x": 3.5, "y": 3, "w": 2.25}, + {"matrix": [3, 6], "x": 5.75, "y": 3, "w": 2.75}, + {"matrix": [3, 8], "x": 8.5, "y": 3}, + {"matrix": [3, 9], "x": 9.5, "y": 3}, + {"matrix": [3, 10], "x": 10.5, "y": 3}, + {"matrix": [3, 11], "x": 11.5, "y": 3} + ] + } + } +} + diff --git a/keyboards/rot13labs/h4ckb0ard/keymaps/default/keymap.c b/keyboards/rot13labs/h4ckb0ard/keymaps/default/keymap.c new file mode 100755 index 00000000000..ab938a9b3d1 --- /dev/null +++ b/keyboards/rot13labs/h4ckb0ard/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +/* Copyright 2024 rot13labs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_RCTL, KC_UP, DF(1), + KC_LCTL, KC_LGUI, MO(2), KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT), + + /* FN - symbols & audio controls */ + [1] = LAYOUT( + KC_ESC, KC_MINS, KC_EQL, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_LBRC, KC_RBRC, KC_BSLS, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_COMM, KC_DOT, KC_SLSH, KC_RCTL, KC_VOLU, DF(2), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT), + + /* ALT - numbers */ + [2] = LAYOUT( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_RCTL, KC_UP, DF(3), + KC_LCTL, KC_LGUI, _______, MO(3), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT), + + /* SPC - RGB control layer */ + [3] = LAYOUT( + KC_ESC, KC_Q, RGB_M_SW, KC_E, RGB_M_R, KC_T, KC_Y, RGB_SPD, RGB_SPI, RGB_RMOD, RGB_MOD, KC_DEL, + KC_TAB, KC_A, RGB_M_P, KC_D, KC_F, KC_G, KC_H, RGB_SAD, RGB_SAI, RGB_TOG, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, RGB_M_B, KC_N, KC_M, KC_RCTL, RGB_VAI, DF(0), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, _______, RGB_HUD, RGB_VAD, RGB_HUI), +}; \ No newline at end of file diff --git a/keyboards/rot13labs/h4ckb0ard/readme.md b/keyboards/rot13labs/h4ckb0ard/readme.md new file mode 100644 index 00000000000..fdf42fa5b8e --- /dev/null +++ b/keyboards/rot13labs/h4ckb0ard/readme.md @@ -0,0 +1,19 @@ +# h4ckb0ard + +![h4ckb0ard](https://i.imgur.com/U325abR.jpg) + +A 40% keyboard for hackers using the c0ldbru layout, designed to minimize space without requiring users to buy extra keycaps just to use less. + +* Keyboard Maintainer: [c0ldbru](https://github.com/c0ldbru) +* Hardware Supported: h4ckb0ard // atmega328p +* Hardware Availability: [rot13labs](https://rot13labs.com) + +Make example for this keyboard (after setting up your build environment): + + make rot13labs/h4ckb0ard:default + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +You can enter the bootloader to flash on new firmware by holding down the ESC key while plugging the h4ckb0ard in. diff --git a/keyboards/rot13labs/h4ckb0ard/rules.mk b/keyboards/rot13labs/h4ckb0ard/rules.mk new file mode 100644 index 00000000000..7ff128fa692 --- /dev/null +++ b/keyboards/rot13labs/h4ckb0ard/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From dd56bee9e13979a140b2e691bf7ab8a0ec9a066d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=83=95=E3=82=A3=E3=83=AB=E3=82=BF=E3=83=BC=E3=83=9A?= =?UTF-8?q?=E3=83=BC=E3=83=91=E3=83=BC?= <76888457+filterpaper@users.noreply.github.com> Date: Sun, 19 May 2024 12:41:03 +0800 Subject: [PATCH 13/22] [Doc] Reference advance keycodes in combos (#23666) --- docs/feature_combo.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/feature_combo.md b/docs/feature_combo.md index 61f8b2ee197..496e97bd3c1 100644 --- a/docs/feature_combo.md +++ b/docs/feature_combo.md @@ -17,11 +17,12 @@ combo_t key_combos[] = { This will send "Escape" if you hit the A and B keys, and Ctrl+Z when you hit the C and D keys. -## Mod-Tap Support -[Mod-Tap](mod_tap.md) feature is also supported together with combos. You will need to use the full Mod-Tap keycode in the combo definition, e.g.: +## Advanced Keycodes Support +Advanced keycodes, such as [Mod-Tap](mod_tap.md) and [Tap Dance](feature_tap_dance.md) are also supported together with combos. If you use these advanced keycodes in your keymap, you will need to place the full keycode in the combo definition, e.g.: ```c const uint16_t PROGMEM test_combo1[] = {LSFT_T(KC_A), LT(1, KC_B), COMBO_END}; +const uint16_t PROGMEM test_combo2[] = {TD(TD_ESC_CAPS), KC_F1, COMBO_END}; ``` ## Overlapping Combos From 5bb01794ee51f984d5bd904a1234da89a5762149 Mon Sep 17 00:00:00 2001 From: Coby Sher <63015754+CobyPear@users.noreply.github.com> Date: Sat, 18 May 2024 23:51:36 -0500 Subject: [PATCH 14/22] Add sleepy_craft_studios sleepy_keeb (#23659) Co-authored-by: Duncan Sutherland --- .../sleepy_keeb/info.json | 92 +++++++++++++++++++ .../sleepy_keeb/keymaps/default/keymap.c | 31 +++++++ .../sleepy_keeb/keymaps/via/keymap.c | 31 +++++++ .../sleepy_keeb/keymaps/via/rules.mk | 1 + .../sleepy_keeb/readme.md | 27 ++++++ .../sleepy_craft_studios/sleepy_keeb/rules.mk | 1 + 6 files changed, 183 insertions(+) create mode 100644 keyboards/sleepy_craft_studios/sleepy_keeb/info.json create mode 100644 keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/default/keymap.c create mode 100644 keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/via/keymap.c create mode 100644 keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/via/rules.mk create mode 100644 keyboards/sleepy_craft_studios/sleepy_keeb/readme.md create mode 100644 keyboards/sleepy_craft_studios/sleepy_keeb/rules.mk diff --git a/keyboards/sleepy_craft_studios/sleepy_keeb/info.json b/keyboards/sleepy_craft_studios/sleepy_keeb/info.json new file mode 100644 index 00000000000..635a780ed4a --- /dev/null +++ b/keyboards/sleepy_craft_studios/sleepy_keeb/info.json @@ -0,0 +1,92 @@ +{ + "manufacturer": "Sleepy Craft Studios", + "keyboard_name": "sleepy_keeb", + "maintainer": "Sleepy Craft Studios", + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "matrix_pins": { + "cols": ["D7", "E6", "B4", "B5", "F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6"], + "rows": ["D1", "D0", "D4", "C6"] + }, + "rgblight": { + "animations": { + "alternating": true, + "breathing": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "static_gradient": true, + "twinkle": true + }, + "led_count": 17 + }, + "url": "https://sleepycraftstudios.com/downloads/sleepy-keeb", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x7373" + }, + "ws2812": { + "pin": "D2" + }, + "community_layouts": ["planck_mit"], + "layouts": { + "LAYOUT_planck_mit": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1}, + {"matrix": [1, 1], "x": 1, "y": 1}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1}, + {"matrix": [1, 4], "x": 4, "y": 1}, + {"matrix": [1, 5], "x": 5, "y": 1}, + {"matrix": [1, 6], "x": 6, "y": 1}, + {"matrix": [1, 7], "x": 7, "y": 1}, + {"matrix": [1, 8], "x": 8, "y": 1}, + {"matrix": [1, 9], "x": 9, "y": 1}, + {"matrix": [1, 10], "x": 10, "y": 1}, + {"matrix": [1, 11], "x": 11, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2}, + {"matrix": [2, 1], "x": 1, "y": 2}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2}, + {"matrix": [2, 4], "x": 4, "y": 2}, + {"matrix": [2, 5], "x": 5, "y": 2}, + {"matrix": [2, 6], "x": 6, "y": 2}, + {"matrix": [2, 7], "x": 7, "y": 2}, + {"matrix": [2, 8], "x": 8, "y": 2}, + {"matrix": [2, 9], "x": 9, "y": 2}, + {"matrix": [2, 10], "x": 10, "y": 2}, + {"matrix": [2, 11], "x": 11, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3}, + {"matrix": [3, 1], "x": 1, "y": 3}, + {"matrix": [3, 2], "x": 2, "y": 3}, + {"matrix": [3, 3], "x": 3, "y": 3}, + {"matrix": [3, 4], "x": 4, "y": 3}, + {"matrix": [3, 6], "x": 5, "y": 3, "w": 2}, + {"matrix": [3, 7], "x": 7, "y": 3}, + {"matrix": [3, 8], "x": 8, "y": 3}, + {"matrix": [3, 9], "x": 9, "y": 3}, + {"matrix": [3, 10], "x": 10, "y": 3}, + {"matrix": [3, 11], "x": 11, "y": 3} + ] + } + } +} diff --git a/keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/default/keymap.c b/keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/default/keymap.c new file mode 100644 index 00000000000..1082b0afa6b --- /dev/null +++ b/keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/default/keymap.c @@ -0,0 +1,31 @@ +// Copyright 2024 Sleepy Craft Studios +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum keeb_layers { + _BASE, + _RAISE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_planck_mit( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_GRV, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_UP, KC_DOWN, KC_LEFT, KC_RGHT + ), + [_RAISE] = LAYOUT_planck_mit( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, RGB_MOD, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_FN] = LAYOUT_planck_mit( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, RGB_TOG, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), +}; diff --git a/keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/via/keymap.c b/keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/via/keymap.c new file mode 100644 index 00000000000..1082b0afa6b --- /dev/null +++ b/keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/via/keymap.c @@ -0,0 +1,31 @@ +// Copyright 2024 Sleepy Craft Studios +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum keeb_layers { + _BASE, + _RAISE, + _FN +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_planck_mit( + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, + KC_GRV, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_UP, KC_DOWN, KC_LEFT, KC_RGHT + ), + [_RAISE] = LAYOUT_planck_mit( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, RGB_MOD, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), + [_FN] = LAYOUT_planck_mit( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, RGB_TOG, + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY + ), +}; diff --git a/keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/via/rules.mk b/keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/sleepy_craft_studios/sleepy_keeb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/sleepy_craft_studios/sleepy_keeb/readme.md b/keyboards/sleepy_craft_studios/sleepy_keeb/readme.md new file mode 100644 index 00000000000..9e99b9002a7 --- /dev/null +++ b/keyboards/sleepy_craft_studios/sleepy_keeb/readme.md @@ -0,0 +1,27 @@ +# Sleepy Keeb + +![sleepy_keeb](https://i.imgur.com/y3cessF.jpeg) + +The Sleepy Keeb is a hand-wired keyboard based on the 4x12 Planck layout. The Sleepy Keeb integrates hot-swap socket and diode holders into the plate for easier building. + +- Keyboard Maintainer: [Sleepy Craft Studios](https://github.com/sleepy-craft-studios) +- Hardware Supported: Pro Micro development board (and clones/adapations of) +- Hardware Availability: [Sleepy Craft Studios Shop](https://sleepycraftstudios.com/shop) for kits and full builds, [Sleepy Craft Studios Downloads](https://sleepycraftstudios.com/downloads) for CC-BY-SA-NC licensed stl files for 3D printing. + +Make example for this keyboard (after setting up your build environment): + + make sleepy_keeb:default + +Flashing example for this keyboard: + + make sleepy_keeb:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +- **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +- **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +- **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/sleepy_craft_studios/sleepy_keeb/rules.mk b/keyboards/sleepy_craft_studios/sleepy_keeb/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/sleepy_craft_studios/sleepy_keeb/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 2420487e55fb922e93fae846cee1a73244358019 Mon Sep 17 00:00:00 2001 From: blindassassin111 <38090555+blindassassin111@users.noreply.github.com> Date: Sun, 19 May 2024 00:19:32 -0500 Subject: [PATCH 15/22] [Keyboard] Adding TX_Roundup_Pad PCB (#23526) Co-authored-by: jack <0x6a73@protonmail.com> Co-authored-by: Drashna Jaelre --- keyboards/viktus/tx_roundup_pad/info.json | 54 +++++++++++++++++++ .../tx_roundup_pad/keymaps/default/keymap.c | 28 ++++++++++ .../tx_roundup_pad/keymaps/via/keymap.c | 28 ++++++++++ .../tx_roundup_pad/keymaps/via/rules.mk | 1 + keyboards/viktus/tx_roundup_pad/readme.md | 27 ++++++++++ keyboards/viktus/tx_roundup_pad/rules.mk | 1 + 6 files changed, 139 insertions(+) create mode 100644 keyboards/viktus/tx_roundup_pad/info.json create mode 100644 keyboards/viktus/tx_roundup_pad/keymaps/default/keymap.c create mode 100644 keyboards/viktus/tx_roundup_pad/keymaps/via/keymap.c create mode 100644 keyboards/viktus/tx_roundup_pad/keymaps/via/rules.mk create mode 100644 keyboards/viktus/tx_roundup_pad/readme.md create mode 100644 keyboards/viktus/tx_roundup_pad/rules.mk diff --git a/keyboards/viktus/tx_roundup_pad/info.json b/keyboards/viktus/tx_roundup_pad/info.json new file mode 100644 index 00000000000..c4b013bb0ef --- /dev/null +++ b/keyboards/viktus/tx_roundup_pad/info.json @@ -0,0 +1,54 @@ +{ + "manufacturer": "Viktus Design LLC", + "keyboard_name": "TX Roundup Pad", + "maintainer": "BlindAssassin111", + "build": { + "lto": true + }, + "development_board": "promicro", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["F7", "F6", "F5", "F4"], + "rows": ["B5", "B4", "E6", "D7", "C6", "D4"] + }, + "url": "https://viktus.design", + "usb": { + "device_version": "1.0.0", + "pid": "0x5458", + "vid": "0x5644" + }, + "community_layouts": [ "numpad_6x4" ], + "layouts": { + "LAYOUT_numpad_6x4": { + "layout": [ + {"label": "K00", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "K01", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "K02", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "K03", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "K10", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "K11", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "K12", "matrix": [1, 2], "x": 2, "y": 1}, + {"label": "K13", "matrix": [1, 3], "x": 3, "y": 1}, + {"label": "K20", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "K21", "matrix": [2, 1], "x": 1, "y": 2}, + {"label": "K22", "matrix": [2, 2], "x": 2, "y": 2}, + {"label": "K30", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "K31", "matrix": [3, 1], "x": 1, "y": 3}, + {"label": "K32", "matrix": [3, 2], "x": 2, "y": 3}, + {"label": "K23", "matrix": [2, 3], "x": 3, "y": 2, "h": 2}, + {"label": "K40", "matrix": [4, 0], "x": 0, "y": 4}, + {"label": "K41", "matrix": [4, 1], "x": 1, "y": 4}, + {"label": "K42", "matrix": [4, 2], "x": 2, "y": 4}, + {"label": "K51", "matrix": [5, 1], "x": 0, "y": 5, "w": 2}, + {"label": "K52", "matrix": [5, 2], "x": 2, "y": 5}, + {"label": "K53", "matrix": [5, 3], "x": 3, "y": 4, "h": 2} + ] + } + } +} diff --git a/keyboards/viktus/tx_roundup_pad/keymaps/default/keymap.c b/keyboards/viktus/tx_roundup_pad/keymaps/default/keymap.c new file mode 100644 index 00000000000..50d4c092845 --- /dev/null +++ b/keyboards/viktus/tx_roundup_pad/keymaps/default/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2024 Viktus Design LLC + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_numpad_6x4( + KC_F1, KC_F2, KC_F3, KC_F4, + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, + KC_P0, KC_PDOT, KC_PENT + ) +}; diff --git a/keyboards/viktus/tx_roundup_pad/keymaps/via/keymap.c b/keyboards/viktus/tx_roundup_pad/keymaps/via/keymap.c new file mode 100644 index 00000000000..50d4c092845 --- /dev/null +++ b/keyboards/viktus/tx_roundup_pad/keymaps/via/keymap.c @@ -0,0 +1,28 @@ +/* Copyright 2024 Viktus Design LLC + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_numpad_6x4( + KC_F1, KC_F2, KC_F3, KC_F4, + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + KC_P7, KC_P8, KC_P9, + KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, + KC_P0, KC_PDOT, KC_PENT + ) +}; diff --git a/keyboards/viktus/tx_roundup_pad/keymaps/via/rules.mk b/keyboards/viktus/tx_roundup_pad/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/viktus/tx_roundup_pad/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/viktus/tx_roundup_pad/readme.md b/keyboards/viktus/tx_roundup_pad/readme.md new file mode 100644 index 00000000000..ab034ed8c5a --- /dev/null +++ b/keyboards/viktus/tx_roundup_pad/readme.md @@ -0,0 +1,27 @@ +# TX Roundup Pad + +![tx_roundup_pad](https://i.imgur.com/7O9CkPw.jpeg) + +The PCB badge for the April 27, 2024 Texas Roundup meet in Dallas, Tx. + +- Keyboard Maintainer: BlindAssassin111 +- Hardware Supported: TX Roundup Pad Badge PCB +- Hardware Availability: At meetup only + +Make example for this keyboard (after setting up your build environment): + + make viktus/tx_roundup_pad:default + +Flashing example for this keyboard: + + make viktus/tx_roundup_pad:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/viktus/tx_roundup_pad/rules.mk b/keyboards/viktus/tx_roundup_pad/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/viktus/tx_roundup_pad/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 93023511ab0f334bb0394d279b9175d46fe1b3c6 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 19 May 2024 15:23:24 +1000 Subject: [PATCH 16/22] macOS install script: remove `brew upgrade --ignore-pinned` (#23735) --- util/install/macos.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/install/macos.sh b/util/install/macos.sh index 8890c5a3f08..a1b79fe8683 100755 --- a/util/install/macos.sh +++ b/util/install/macos.sh @@ -9,7 +9,7 @@ _qmk_install_prepare() { return 1 fi - brew update && brew upgrade --formulae --ignore-pinned + brew update && brew upgrade --formulae } _qmk_install() { From 2fd56317763e8b3b73f0db7488ef42a70f5b946e Mon Sep 17 00:00:00 2001 From: gskygithub <106651989+gskygithub@users.noreply.github.com> Date: Sun, 19 May 2024 13:25:19 +0800 Subject: [PATCH 17/22] [Keyboard] Add Projectd 75 iso (#21942) Co-authored-by: Ryan Co-authored-by: gksygithub <106651989+gksygithub@users.noreply.github.com> --- keyboards/projectd/75/iso/config.h | 30 ++ keyboards/projectd/75/iso/halconf.h | 23 ++ keyboards/projectd/75/iso/info.json | 287 ++++++++++++++++++ keyboards/projectd/75/iso/iso.c | 206 +++++++++++++ keyboards/projectd/75/iso/iso.h | 27 ++ .../projectd/75/iso/keymaps/default/keymap.c | 46 +++ .../projectd/75/iso/keymaps/via/keymap.c | 46 +++ .../projectd/75/iso/keymaps/via/rules.mk | 1 + keyboards/projectd/75/iso/mcuconf.h | 25 ++ keyboards/projectd/75/iso/readme.md | 25 ++ keyboards/projectd/75/iso/rules.mk | 1 + 11 files changed, 717 insertions(+) create mode 100644 keyboards/projectd/75/iso/config.h create mode 100644 keyboards/projectd/75/iso/halconf.h create mode 100644 keyboards/projectd/75/iso/info.json create mode 100644 keyboards/projectd/75/iso/iso.c create mode 100644 keyboards/projectd/75/iso/iso.h create mode 100644 keyboards/projectd/75/iso/keymaps/default/keymap.c create mode 100644 keyboards/projectd/75/iso/keymaps/via/keymap.c create mode 100644 keyboards/projectd/75/iso/keymaps/via/rules.mk create mode 100644 keyboards/projectd/75/iso/mcuconf.h create mode 100644 keyboards/projectd/75/iso/readme.md create mode 100644 keyboards/projectd/75/iso/rules.mk diff --git a/keyboards/projectd/75/iso/config.h b/keyboards/projectd/75/iso/config.h new file mode 100644 index 00000000000..282e20a8e2b --- /dev/null +++ b/keyboards/projectd/75/iso/config.h @@ -0,0 +1,30 @@ +/* Copyright 2023 GSKY + * + * 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 + +/* External spi flash */ +#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B14 + +/* SPI Config for LED Driver */ +#define SPI_DRIVER SPIDQ +#define SPI_SCK_PIN A5 +#define SPI_MOSI_PIN A7 +#define SPI_MISO_PIN A6 + +#define AW20216S_CS_PIN_1 A15 +#define AW20216S_CS_PIN_2 B15 +#define AW20216S_EN_PIN C13 diff --git a/keyboards/projectd/75/iso/halconf.h b/keyboards/projectd/75/iso/halconf.h new file mode 100644 index 00000000000..64a184eb924 --- /dev/null +++ b/keyboards/projectd/75/iso/halconf.h @@ -0,0 +1,23 @@ +/* Copyright (C) 2023 Westberry Technology (ChangZhou) Corp., Ltd + * + * 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_SPI TRUE +#define SPI_USE_WAIT TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD + +#include_next diff --git a/keyboards/projectd/75/iso/info.json b/keyboards/projectd/75/iso/info.json new file mode 100644 index 00000000000..d8615000316 --- /dev/null +++ b/keyboards/projectd/75/iso/info.json @@ -0,0 +1,287 @@ +{ + "manufacturer": "ProjectD", + "keyboard_name": "ProjectD 75% ISO", + "maintainer": "Gsky", + "bootloader": "wb32-dfu", + "bootmagic": { + "matrix": [1, 3] + }, + "diode_direction": "COL2ROW", + "dynamic_keymap": { + "layer_count": 10 + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"], + "rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10"] + }, + "processor": "WB32FQ95", + "qmk": { + "tap_keycode_delay": 10, + "locking": { + "enabled": true, + "resync": true + } + }, + "rgb_matrix": { + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "rainbow_moving_chevron": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_fractal": true, + "pixel_flow": true, + "pixel_rain": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true + }, + "center_point": [78, 20], + "driver": "aw20216s", + "sleep": true, + "layout": [ + { "flags": 4, "matrix": [1, 3], "x": 0, "y": 0 }, + { "flags": 4, "matrix": [2, 6], "x": 12.5, "y": 0 }, + { "flags": 4, "matrix": [3, 6], "x": 22.5, "y": 0 }, + { "flags": 4, "matrix": [3, 1], "x": 32.5, "y": 0 }, + { "flags": 4, "matrix": [3, 3], "x": 42.5, "y": 0 }, + { "flags": 4, "matrix": [0, 7], "x": 55, "y": 0 }, + { "flags": 4, "matrix": [6, 3], "x": 65, "y": 0 }, + { "flags": 4, "matrix": [7, 1], "x": 75, "y": 0 }, + { "flags": 4, "matrix": [7, 6], "x": 85, "y": 0 }, + { "flags": 4, "matrix": [10, 6], "x": 97.5, "y": 0 }, + { "flags": 4, "matrix": [10, 7], "x": 107.5, "y": 0 }, + { "flags": 4, "matrix": [10, 3], "x": 117.5, "y": 0 }, + { "flags": 4, "matrix": [10, 5], "x": 127.5, "y": 0 }, + { "flags": 4, "matrix": [9, 7], "x": 140, "y": 0 }, + { "flags": 4, "matrix": [6, 5], "x": 155, "y": 0 }, + + { "flags": 4, "matrix": [1, 6], "x": 0, "y": 12.5 }, + { "flags": 4, "matrix": [1, 7], "x": 10, "y": 12.5 }, + { "flags": 4, "matrix": [2, 7], "x": 20, "y": 12.5 }, + { "flags": 4, "matrix": [3, 7], "x": 30, "y": 12.5 }, + { "flags": 4, "matrix": [4, 7], "x": 40, "y": 12.5 }, + { "flags": 4, "matrix": [4, 6], "x": 50, "y": 12.5 }, + { "flags": 4, "matrix": [5, 6], "x": 60, "y": 12.5 }, + { "flags": 4, "matrix": [5, 7], "x": 70, "y": 12.5 }, + { "flags": 4, "matrix": [6, 7], "x": 80, "y": 12.5 }, + { "flags": 4, "matrix": [7, 7], "x": 90, "y": 12.5 }, + { "flags": 4, "matrix": [8, 7], "x": 100, "y": 12.5 }, + { "flags": 4, "matrix": [8, 6], "x": 110, "y": 12.5 }, + { "flags": 4, "matrix": [6, 6], "x": 120, "y": 12.5 }, + { "flags": 4, "matrix": [10, 1], "x": 130, "y": 12.5 }, + { "flags": 4, "matrix": [0, 2], "x": 155, "y": 12.5 }, + + { "flags": 4, "matrix": [1, 1], "x": 0, "y": 22.5 }, + { "flags": 4, "matrix": [1, 0], "x": 15, "y": 22.5 }, + { "flags": 4, "matrix": [2, 0], "x": 25, "y": 22.5 }, + { "flags": 4, "matrix": [3, 0], "x": 35, "y": 22.5 }, + { "flags": 4, "matrix": [4, 0], "x": 45, "y": 22.5 }, + { "flags": 4, "matrix": [4, 1], "x": 55, "y": 22.5 }, + { "flags": 4, "matrix": [5, 1], "x": 65, "y": 22.5 }, + { "flags": 4, "matrix": [5, 0], "x": 75, "y": 22.5 }, + { "flags": 4, "matrix": [6, 0], "x": 85, "y": 22.5 }, + { "flags": 4, "matrix": [7, 0], "x": 95, "y": 22.5 }, + { "flags": 4, "matrix": [8, 0], "x": 105, "y": 22.5 }, + { "flags": 4, "matrix": [8, 1], "x": 115, "y": 22.5 }, + { "flags": 4, "matrix": [6, 1], "x": 125, "y": 22.5 }, + { "flags": 4, "matrix": [1, 5], "x": 155.5, "y": 22.5 }, + + { "flags": 8, "matrix": [2, 1], "x": 0, "y": 32.5 }, + { "flags": 4, "matrix": [1, 2], "x": 17.5, "y": 32.5 }, + { "flags": 4, "matrix": [2, 2], "x": 27.5, "y": 32.5 }, + { "flags": 4, "matrix": [3, 2], "x": 37.5, "y": 32.5 }, + { "flags": 4, "matrix": [4, 2], "x": 47.5, "y": 32.5 }, + { "flags": 4, "matrix": [4, 3], "x": 57.5, "y": 32.5 }, + { "flags": 4, "matrix": [5, 3], "x": 67.5, "y": 32.5 }, + { "flags": 4, "matrix": [5, 2], "x": 77.5, "y": 32.5 }, + { "flags": 4, "matrix": [6, 2], "x": 87.5, "y": 32.5 }, + { "flags": 4, "matrix": [7, 2], "x": 97.5, "y": 32.5 }, + { "flags": 4, "matrix": [8, 2], "x": 107.5, "y": 32.5 }, + { "flags": 4, "matrix": [8, 3], "x": 117.5, "y": 32.5 }, + { "flags": 4, "matrix": [10, 2], "x": 127.5, "y": 32.5 }, + { "flags": 4, "matrix": [10, 4], "x": 137.5, "y": 22.5 }, + { "flags": 4, "matrix": [2, 5], "x": 155.5, "y": 32.5 }, + + { "flags": 4, "matrix": [0, 0], "x": 0, "y": 42.5 }, + { "flags": 4, "matrix": [0, 1], "x": 12.5, "y": 42.5 }, + { "flags": 4, "matrix": [1, 4], "x": 22.5, "y": 42.5 }, + { "flags": 4, "matrix": [2, 4], "x": 32.5, "y": 42.5 }, + { "flags": 4, "matrix": [3, 4], "x": 42.5, "y": 42.5 }, + { "flags": 4, "matrix": [4, 4], "x": 52.5, "y": 42.5 }, + { "flags": 4, "matrix": [4, 5], "x": 62.5, "y": 42.5 }, + { "flags": 4, "matrix": [5, 5], "x": 72.5, "y": 42.5 }, + { "flags": 4, "matrix": [5, 4], "x": 82.5, "y": 42.5 }, + { "flags": 4, "matrix": [6, 4], "x": 92.5, "y": 42.5 }, + { "flags": 4, "matrix": [7, 4], "x": 102.5, "y": 42.5 }, + { "flags": 4, "matrix": [8, 5], "x": 112.5, "y": 42.5 }, + { "flags": 4, "matrix": [9, 1], "x": 122.5, "y": 42.5 }, + { "flags": 4, "matrix": [3, 5], "x": 142.5, "y": 45 }, + { "flags": 4, "matrix": [7, 5], "x": 155, "y": 42.5 }, + + { "flags": 4, "matrix": [0, 6], "x": 0, "y": 52.5 }, + { "flags": 4, "matrix": [9, 0], "x": 12.5, "y": 52.5 }, + { "flags": 4, "matrix": [9, 3], "x": 25, "y": 52.5 }, + { "flags": 4, "x": 61.5, "y": 52.5 }, + { "flags": 4, "x": 62.5, "y": 52.5 }, + { "flags": 4, "matrix": [9, 4], "x": 65, "y": 52.5 }, + { "flags": 4, "x": 67.5, "y": 52.5 }, + { "flags": 4, "x": 68.5, "y": 52.5 }, + { "flags": 4, "matrix": [9, 5], "x": 100, "y": 52.5 }, + { "flags": 4, "matrix": [9, 2], "x": 110, "y": 52.5 }, + { "flags": 4, "matrix": [0, 4], "x": 120, "y": 52.5 }, + { "flags": 4, "matrix": [0, 3], "x": 132.5, "y": 52.5 }, + { "flags": 4, "matrix": [7, 3], "x": 142.5, "y": 52.5 }, + { "flags": 4, "matrix": [0, 5], "x": 152.5, "y": 52.5 } + ] + }, + "url": "", + "usb": { + "device_version": "0.0.2", + "pid": "0x0011", + "vid": "0x3233" + }, + "eeprom": { + "driver": "wear_leveling", + "wear_leveling": { + "driver": "spi_flash", + "backing_size": 4096 + } + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "Esc", "matrix": [1, 3], "x": 0, "y": 0 }, + { "label": "F1", "matrix": [2, 6], "x": 1.25, "y": 0 }, + { "label": "F2", "matrix": [3, 6], "x": 2.25, "y": 0 }, + { "label": "F3", "matrix": [3, 1], "x": 3.25, "y": 0 }, + { "label": "F4", "matrix": [3, 3], "x": 4.25, "y": 0 }, + { "label": "F5", "matrix": [0, 7], "x": 5.5, "y": 0 }, + { "label": "F6", "matrix": [6, 3], "x": 6.5, "y": 0 }, + { "label": "F7", "matrix": [7, 1], "x": 7.5, "y": 0 }, + { "label": "F8", "matrix": [7, 6], "x": 8.5, "y": 0 }, + { "label": "F9", "matrix": [10, 6], "x": 9.75, "y": 0 }, + { "label": "F10", "matrix": [10, 7], "x": 10.75, "y": 0 }, + { "label": "F11", "matrix": [10, 3], "x": 11.75, "y": 0 }, + { "label": "F12", "matrix": [10, 5], "x": 12.75, "y": 0 }, + { "label": "PrintScreen", "matrix": [9, 7], "x": 14, "y": 0 }, + { "label": "Delete", "matrix": [6, 5], "x": 15.5, "y": 0 }, + + { "label": "`", "matrix": [1, 6], "x": 0, "y": 1.25 }, + { "label": "1", "matrix": [1, 7], "x": 1, "y": 1.25 }, + { "label": "2", "matrix": [2, 7], "x": 2, "y": 1.25 }, + { "label": "3", "matrix": [3, 7], "x": 3, "y": 1.25 }, + { "label": "4", "matrix": [4, 7], "x": 4, "y": 1.25 }, + { "label": "5", "matrix": [4, 6], "x": 5, "y": 1.25 }, + { "label": "6", "matrix": [5, 6], "x": 6, "y": 1.25 }, + { "label": "7", "matrix": [5, 7], "x": 7, "y": 1.25 }, + { "label": "8", "matrix": [6, 7], "x": 8, "y": 1.25 }, + { "label": "9", "matrix": [7, 7], "x": 9, "y": 1.25 }, + { "label": "0", "matrix": [8, 7], "x": 10, "y": 1.25 }, + { "label": "-", "matrix": [8, 6], "x": 11, "y": 1.25 }, + { "label": "=", "matrix": [6, 6], "x": 12, "y": 1.25 }, + { "label": "Backspace", "matrix": [10, 1], "w": 2, "x": 13, "y": 1.25 }, + { "label": "Home", "matrix": [0, 2], "x": 15.5, "y": 1.25 }, + + { "label": "Tab", "matrix": [1, 1], "w": 1.5, "x": 0, "y": 2.25 }, + { "label": "Q", "matrix": [1, 0], "x": 1.5, "y": 2.25 }, + { "label": "W", "matrix": [2, 0], "x": 2.5, "y": 2.25 }, + { "label": "E", "matrix": [3, 0], "x": 3.5, "y": 2.25 }, + { "label": "R", "matrix": [4, 0], "x": 4.5, "y": 2.25 }, + { "label": "T", "matrix": [4, 1], "x": 5.5, "y": 2.25 }, + { "label": "Y", "matrix": [5, 1], "x": 6.5, "y": 2.25 }, + { "label": "U", "matrix": [5, 0], "x": 7.5, "y": 2.25 }, + { "label": "I", "matrix": [6, 0], "x": 8.5, "y": 2.25 }, + { "label": "O", "matrix": [7, 0], "x": 9.5, "y": 2.25 }, + { "label": "P", "matrix": [8, 0], "x": 10.5, "y": 2.25 }, + { "label": "[", "matrix": [8, 1], "x": 11.5, "y": 2.25 }, + { "label": "]", "matrix": [6, 1], "x": 12.5, "y": 2.25 }, + { "label": "PGUP", "matrix": [1, 5], "x": 15.5, "y": 2.25 }, + + { "label": "Caps Lock", "matrix": [2, 1], "w": 1.75, "x": 0, "y": 3.25 }, + { "label": "A", "matrix": [1, 2], "x": 1.75, "y": 3.25 }, + { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 3.25 }, + { "label": "D", "matrix": [3, 2], "x": 3.75, "y": 3.25 }, + { "label": "F", "matrix": [4, 2], "x": 4.75, "y": 3.25 }, + { "label": "G", "matrix": [4, 3], "x": 5.75, "y": 3.25 }, + { "label": "H", "matrix": [5, 3], "x": 6.75, "y": 3.25 }, + { "label": "J", "matrix": [5, 2], "x": 7.75, "y": 3.25 }, + { "label": "K", "matrix": [6, 2], "x": 8.75, "y": 3.25 }, + { "label": "L", "matrix": [7, 2], "x": 9.75, "y": 3.25 }, + { "label": ";", "matrix": [8, 2], "x": 10.75, "y": 3.25 }, + { "label": "'", "matrix": [8, 3], "x": 11.75, "y": 3.25 }, + { "label": "|", "matrix": [10, 2], "x": 12.75, "y": 3.25 }, + { "label": "ENTER", "matrix": [10, 4], "w": 1.25, "h": 2, "x": 13.75, "y": 2.25 }, + { "label": "PGDN", "matrix": [2, 5], "x": 15.5, "y": 3.25 }, + + { "label": "L Shift", "matrix": [0, 0], "w": 1.25, "x": 0, "y": 4.25 }, + { "label": "|", "matrix": [0, 1], "x": 1.25, "y": 4.25 }, + { "label": "Z", "matrix": [1, 4], "x": 2.25, "y": 4.25 }, + { "label": "X", "matrix": [2, 4], "x": 3.25, "y": 4.25 }, + { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 4.25 }, + { "label": "V", "matrix": [4, 4], "x": 5.25, "y": 4.25 }, + { "label": "B", "matrix": [4, 5], "x": 6.25, "y": 4.25 }, + { "label": "N", "matrix": [5, 5], "x": 7.25, "y": 4.25 }, + { "label": "M", "matrix": [5, 4], "x": 8.25, "y": 4.25 }, + { "label": ",", "matrix": [6, 4], "x": 9.25, "y": 4.25 }, + { "label": ".", "matrix": [7, 4], "x": 10.25, "y": 4.25 }, + { "label": "/", "matrix": [8, 5], "x": 11.25, "y": 4.25 }, + { "label": "R Shift", "matrix": [9, 1], "w": 1.75, "x": 12.25, "y": 4.25 }, + { "label": "Up", "matrix": [3, 5], "x": 14.25, "y": 4.5 }, + { "label": "End", "matrix": [7, 5], "x": 15.5, "y": 4.25 }, + + { "label": "L Ctrl", "matrix": [0, 6], "w": 1.25, "x": 0, "y": 5.25 }, + { "label": "L Win", "matrix": [9, 0], "w": 1.25, "x": 1.25, "y": 5.25 }, + { "label": "L Alt", "matrix": [9, 3], "w": 1.25, "x": 2.5, "y": 5.25 }, + { "label": "Space", "matrix": [9, 4], "w": 6.25, "x": 3.75, "y": 5.25 }, + { "label": "R Alt", "matrix": [9, 5], "x": 10, "y": 5.25 }, + { "label": "FN", "matrix": [9, 2], "x": 11, "y": 5.25 }, + { "label": "R Ctrl", "matrix": [0, 4], "x": 12, "y": 5.25 }, + { "label": "Left", "matrix": [0, 3], "x": 13.25, "y": 5.5 }, + { "label": "Down", "matrix": [7, 3], "x": 14.25, "y": 5.5 }, + { "label": "Right", "matrix": [0, 5], "x": 15.25, "y": 5.5 } + ] + } + } +} diff --git a/keyboards/projectd/75/iso/iso.c b/keyboards/projectd/75/iso/iso.c new file mode 100644 index 00000000000..59544db359d --- /dev/null +++ b/keyboards/projectd/75/iso/iso.c @@ -0,0 +1,206 @@ +/* Copyright 2023 GSKY + * + * 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 "iso.h" + +#ifdef RGB_MATRIX_ENABLE + +const aw20216s_led_t g_aw20216s_leds[AW20216S_LED_COUNT] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + //{0, CS1_SW4, CS2_SW4, CS3_SW4}, // 0, k00, Esc + + {0, SW1_CS1, SW1_CS2, SW1_CS3}, // Esc + {0, SW2_CS1, SW2_CS2, SW2_CS3}, // F1 + {0, SW3_CS1, SW3_CS2, SW3_CS3}, // F2 + {0, SW4_CS1, SW4_CS2, SW4_CS3}, // F3 + {0, SW5_CS1, SW5_CS2, SW5_CS3}, // F4 + {0, SW6_CS1, SW6_CS2, SW6_CS3}, // F5 + {0, SW7_CS1, SW7_CS2, SW7_CS3}, // F6 + {0, SW8_CS1, SW8_CS2, SW8_CS3}, // F7 + {0, SW9_CS1, SW9_CS2, SW9_CS3}, // F8 + {0, SW10_CS1, SW10_CS2, SW10_CS3}, // F9 + {0, SW11_CS1, SW11_CS2, SW11_CS3}, // F10 + {0, SW12_CS1, SW12_CS2, SW12_CS3}, // F11 + {1, SW1_CS1, SW1_CS2, SW1_CS3}, // F12 + {1, SW1_CS4, SW1_CS5, SW1_CS6}, // Printscreen + {1, SW3_CS4, SW3_CS5, SW3_CS6}, // Delete + + {0, SW1_CS4, SW1_CS5, SW1_CS6}, // ` + {0, SW2_CS4, SW2_CS5, SW2_CS6}, // 1 + {0, SW3_CS4, SW3_CS5, SW3_CS6}, // 2 + {0, SW4_CS4, SW4_CS5, SW4_CS6}, // 3 + {0, SW5_CS4, SW5_CS5, SW5_CS6}, // 4 + {0, SW6_CS4, SW6_CS5, SW6_CS6}, // 5 + {0, SW7_CS4, SW7_CS5, SW7_CS6}, // 6 + {0, SW8_CS4, SW8_CS5, SW8_CS6}, // 7 + {0, SW9_CS4, SW9_CS5, SW9_CS6}, // 8 + {0, SW10_CS4, SW10_CS5, SW10_CS6}, // 9 + {0, SW11_CS4, SW11_CS5, SW11_CS6}, // 0 + {0, SW12_CS4, SW12_CS5, SW12_CS6}, // - + {1, SW5_CS1, SW5_CS2, SW5_CS3}, // = + {1, SW7_CS1, SW7_CS2, SW7_CS3}, // Backspace + {1, SW5_CS4, SW5_CS5, SW5_CS6}, // Home + + {0, SW1_CS7, SW1_CS8, SW1_CS9}, // Tab + {0, SW2_CS7, SW2_CS8, SW2_CS9}, // Q + {0, SW3_CS7, SW3_CS8, SW3_CS9}, // W + {0, SW4_CS7, SW4_CS8, SW4_CS9}, // E + {0, SW5_CS7, SW5_CS8, SW5_CS9}, // R + {0, SW6_CS7, SW6_CS8, SW6_CS9}, // T + {0, SW7_CS7, SW7_CS8, SW7_CS9}, // Y + {0, SW8_CS7, SW8_CS8, SW8_CS9}, // U + {0, SW9_CS7, SW9_CS8, SW9_CS9}, // I + {0, SW10_CS7, SW10_CS8, SW10_CS9}, // O + {0, SW11_CS7, SW11_CS8, SW11_CS9}, // P + {0, SW12_CS7, SW12_CS8, SW12_CS9}, // [ + {1, SW8_CS1, SW8_CS2, SW8_CS3}, // ] + {1, SW4_CS4, SW4_CS5, SW4_CS6}, // PGUP + + {0, SW1_CS10, SW1_CS11, SW1_CS12}, // Caps Lock + {0, SW2_CS10, SW2_CS11, SW2_CS12}, // A + {0, SW3_CS10, SW3_CS11, SW3_CS12}, // S + {0, SW4_CS10, SW4_CS11, SW4_CS12}, // D + {0, SW5_CS10, SW5_CS11, SW5_CS12}, // F + {0, SW6_CS10, SW6_CS11, SW6_CS12}, // G + {0, SW7_CS10, SW7_CS11, SW7_CS12}, // H + {0, SW8_CS10, SW8_CS11, SW8_CS12}, // J + {0, SW9_CS10, SW9_CS11, SW9_CS12}, // K + {0, SW10_CS10, SW10_CS11, SW10_CS12}, // L + {0, SW11_CS10, SW11_CS11, SW11_CS12}, // ; + {0, SW12_CS10, SW12_CS11, SW12_CS12}, // ' + {1, SW9_CS1, SW9_CS2, SW9_CS3}, // || + {1, SW11_CS1, SW11_CS2, SW11_CS3}, // Enter + {1, SW7_CS4, SW7_CS5, SW7_CS6}, // PGDN + + {0, SW1_CS13, SW1_CS14, SW1_CS15}, // L Shift + {0, SW12_CS13, SW12_CS14, SW12_CS15}, // | + {0, SW2_CS13, SW2_CS14, SW2_CS15}, // Z + {0, SW3_CS13, SW3_CS14, SW3_CS15}, // X + {0, SW4_CS13, SW4_CS14, SW4_CS15}, // C + {0, SW5_CS13, SW5_CS14, SW5_CS15}, // V + {0, SW6_CS13, SW6_CS14, SW6_CS15}, // B + {0, SW7_CS13, SW7_CS14, SW7_CS15}, // N + {0, SW8_CS13, SW8_CS14, SW8_CS15}, // M + {0, SW9_CS13, SW9_CS14, SW9_CS15}, // , + {0, SW10_CS13, SW10_CS14, SW10_CS15}, // . + {0, SW11_CS13, SW11_CS14, SW11_CS15}, // "/"" + {1, SW8_CS4, SW8_CS5, SW8_CS6}, // R Shift + {1, SW9_CS4, SW9_CS5, SW9_CS6}, // Up + {1, SW6_CS4, SW6_CS5, SW6_CS6}, // END + + {0, SW1_CS16, SW1_CS17, SW1_CS18}, // L Ctrl + {0, SW2_CS16, SW2_CS17, SW2_CS18}, // L Win + {0, SW3_CS16, SW3_CS17, SW3_CS18}, // L Alt + {0, SW4_CS16, SW4_CS17, SW4_CS18}, // LED1 + {0, SW5_CS16, SW5_CS17, SW5_CS18}, // LED2 + {0, SW6_CS16, SW6_CS17, SW6_CS18}, // Space + {0, SW7_CS16, SW7_CS17, SW7_CS18}, // LED3 + {0, SW8_CS16, SW8_CS17, SW8_CS18}, // LED4 + {0, SW9_CS16, SW9_CS17, SW9_CS18}, // R Alt + {0, SW10_CS16, SW10_CS17, SW10_CS18}, // FN + {0, SW12_CS16, SW12_CS17, SW12_CS18}, // R Ctrl + + {1, SW10_CS4, SW10_CS5, SW10_CS6}, // Left + {1, SW11_CS4, SW11_CS5, SW11_CS6}, // Down + {1, SW5_CS10, SW5_CS11, SW5_CS12}, // Right +}; + +#endif + +#ifdef EEPROM_ENABLE + +#include "spi_master.h" + +void spi_init(void) { + static bool is_initialised = false; + if (!is_initialised) { + is_initialised = true; + + // Try releasing special pins for a short time + gpio_set_pin_input(SPI_SCK_PIN); + gpio_set_pin_input(SPI_MOSI_PIN); + gpio_set_pin_input(SPI_MISO_PIN); + + chThdSleepMilliseconds(10); + + palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST | PAL_WB32_CURRENT_LEVEL3); + palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST); + palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST); + } +} + +#endif +bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) { + if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) { + return false; + } + + if (host_keyboard_led_state().caps_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(44, 255, 255, 255); + } + + return false; +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + if (!process_record_user(keycode, record)) { + return false; + } + switch (keycode) { + + case RGB_R: + if (record->event.pressed) { + rgb_matrix_sethsv(0, 255, 255); + rgb_matrix_mode(1); + } + return false; /* Skip all further processing of this key */ + + case RGB_G: + if (record->event.pressed) { + rgb_matrix_sethsv(85, 255, 255); + rgb_matrix_mode(1); + } + return false; /* Skip all further processing of this key */ + + case RGB_B: + if (record->event.pressed) { + rgb_matrix_sethsv(170, 255, 255); + rgb_matrix_mode(1); + } + return false; /* Skip all further processing of this key */ + + case RGB_W: + if (record->event.pressed) { + rgb_matrix_sethsv(0, 0, 255); + rgb_matrix_mode(1); + } + return false; /* Skip all further processing of this key */ + + case SW_cy: + rgb_matrix_sethsv(0, 255, 255); + rgb_matrix_mode(13); + return false; /* Skip all further processing of this key */ + + + default: + return true; /* Process all other keycodes normally */ + } +}; diff --git a/keyboards/projectd/75/iso/iso.h b/keyboards/projectd/75/iso/iso.h new file mode 100644 index 00000000000..4e65d84ba74 --- /dev/null +++ b/keyboards/projectd/75/iso/iso.h @@ -0,0 +1,27 @@ +/* Copyright 2023 GSKY + * + * 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" + +enum my_keycodes { + RGB_R = QK_KB, + RGB_G, + RGB_B, + RGB_W, + SW_cy, +}; diff --git a/keyboards/projectd/75/iso/keymaps/default/keymap.c b/keyboards/projectd/75/iso/keymaps/default/keymap.c new file mode 100644 index 00000000000..2f6e6cf3105 --- /dev/null +++ b/keyboards/projectd/75/iso/keymaps/default/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2023 GSKY + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[0] = LAYOUT( + QK_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_DEL, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), +[1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_RMOD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, + _______, _______, _______, _______, MO(2), _______, _______, RGB_SPD, RGB_VAD, RGB_SPI), +[2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_R, RGB_G, RGB_B, RGB_W, SW_cy, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/projectd/75/iso/keymaps/via/keymap.c b/keyboards/projectd/75/iso/keymaps/via/keymap.c new file mode 100644 index 00000000000..2f6e6cf3105 --- /dev/null +++ b/keyboards/projectd/75/iso/keymaps/via/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2023 GSKY + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[0] = LAYOUT( + QK_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_DEL, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), +[1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_RMOD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, + _______, _______, _______, _______, MO(2), _______, _______, RGB_SPD, RGB_VAD, RGB_SPI), +[2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RGB_R, RGB_G, RGB_B, RGB_W, SW_cy, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), +}; diff --git a/keyboards/projectd/75/iso/keymaps/via/rules.mk b/keyboards/projectd/75/iso/keymaps/via/rules.mk new file mode 100644 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/projectd/75/iso/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/projectd/75/iso/mcuconf.h b/keyboards/projectd/75/iso/mcuconf.h new file mode 100644 index 00000000000..e4b8d1f9732 --- /dev/null +++ b/keyboards/projectd/75/iso/mcuconf.h @@ -0,0 +1,25 @@ +/* Copyright (C) 2023 Westberry Technology (ChangZhou) Corp., Ltd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef WB32_SPI_USE_QSPI +#define WB32_SPI_USE_QSPI TRUE + +#undef WB32_SPI_USE_SPIM2 +#define WB32_SPI_USE_SPIM2 TRUE diff --git a/keyboards/projectd/75/iso/readme.md b/keyboards/projectd/75/iso/readme.md new file mode 100644 index 00000000000..1b9f7f48975 --- /dev/null +++ b/keyboards/projectd/75/iso/readme.md @@ -0,0 +1,25 @@ +# ProjectD 75% ISO + +![ProjectD 75 ISO](https://imgur.com/pbGXTUd.png) + +A 75% keyboard with the WestBerry Q95 microcontroller integrated into PCB. + +* Keyboard Maintainer: [GSKY](https://github.com/gksygithub) +* Hardware Supported: ProjectD 75% ISO PCB +* Hardware Availability: [GSKY](https://github.com/gskygithub/projectd_75_iso) + +Make example for this keyboard (after setting up your build environment): + + make projectd/75/iso:default + +Flashing example for this keyboard: + + make projectd/75/iso:default:flash + +To reset the board into bootloader mode, do one of the following: + +* Hold the Reset switch mounted under the space key after the USB cable is connected +* Hold the Esc key while connecting the USB cable (also erases persistent settings) +* Fn+Alt+Tab will reset the board to bootloader mode + +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/projectd/75/iso/rules.mk b/keyboards/projectd/75/iso/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/projectd/75/iso/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 3029a23cfa2c1fcaaad841542d09753512db25ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 May 2024 21:01:20 +0100 Subject: [PATCH 18/22] Bump JamesIves/github-pages-deploy-action from 4.6.0 to 4.6.1 (#23752) --- updated-dependencies: - dependency-name: JamesIves/github-pages-deploy-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 3f7fbbe7aff..a00e6616a64 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -37,7 +37,7 @@ jobs: qmk --verbose generate-docs - name: Deploy - uses: JamesIves/github-pages-deploy-action@v4.6.0 + uses: JamesIves/github-pages-deploy-action@v4.6.1 with: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} BASE_BRANCH: master From bf918a8f6ccb4b1c56e7bac2bf632bd5ee264f1f Mon Sep 17 00:00:00 2001 From: VertorWang <1479115496@qq.com> Date: Tue, 21 May 2024 07:48:26 +0800 Subject: [PATCH 19/22] Add moky67 keyboard (#23118) --- keyboards/moky/moky67/config.h | 18 ++ keyboards/moky/moky67/halconf.h | 10 + keyboards/moky/moky67/info.json | 233 ++++++++++++++++++ .../moky/moky67/keymaps/default/keymap.c | 50 ++++ .../moky/moky67/keymaps/default/rules.mk | 1 + keyboards/moky/moky67/keymaps/via/keymap.c | 50 ++++ keyboards/moky/moky67/keymaps/via/rules.mk | 2 + keyboards/moky/moky67/mcuconf.h | 29 +++ keyboards/moky/moky67/readme.md | 26 ++ keyboards/moky/moky67/rules.mk | 1 + 10 files changed, 420 insertions(+) create mode 100644 keyboards/moky/moky67/config.h create mode 100644 keyboards/moky/moky67/halconf.h create mode 100644 keyboards/moky/moky67/info.json create mode 100644 keyboards/moky/moky67/keymaps/default/keymap.c create mode 100644 keyboards/moky/moky67/keymaps/default/rules.mk create mode 100644 keyboards/moky/moky67/keymaps/via/keymap.c create mode 100644 keyboards/moky/moky67/keymaps/via/rules.mk create mode 100644 keyboards/moky/moky67/mcuconf.h create mode 100644 keyboards/moky/moky67/readme.md create mode 100644 keyboards/moky/moky67/rules.mk diff --git a/keyboards/moky/moky67/config.h b/keyboards/moky/moky67/config.h new file mode 100644 index 00000000000..7b247bf9700 --- /dev/null +++ b/keyboards/moky/moky67/config.h @@ -0,0 +1,18 @@ +// Copyright 2023 VertorWang (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* SPI */ +#define SPI_DRIVER SPIDQ +#define SPI_SCK_PIN B3 +#define SPI_MOSI_PIN B5 +#define SPI_MISO_PIN B4 + +/* Flash */ +#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12 + +/* RGB Driver */ +#define WS2812_SPI_DRIVER SPIDM2 +#define WS2812_SPI_MOSI_PAL_MODE 0 +#define WS2812_SPI_SCK_PAL_MODE 0 diff --git a/keyboards/moky/moky67/halconf.h b/keyboards/moky/moky67/halconf.h new file mode 100644 index 00000000000..0a59a1fcb8e --- /dev/null +++ b/keyboards/moky/moky67/halconf.h @@ -0,0 +1,10 @@ +// Copyright 2023 VertorWang (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_SPI TRUE +#define SPI_USE_WAIT TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD + +#include_next diff --git a/keyboards/moky/moky67/info.json b/keyboards/moky/moky67/info.json new file mode 100644 index 00000000000..8737790b69e --- /dev/null +++ b/keyboards/moky/moky67/info.json @@ -0,0 +1,233 @@ +{ + "manufacturer": "moky", + "keyboard_name": "moky67", + "url": "", + "processor": "WB32FQ95", + "bootloader": "wb32-dfu", + "usb": { + "device_version": "1.0.0", + "vid": "0xBB4F", + "pid": "0x0002", + "suspend_wakeup_delay": 1000 + }, + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true, + "encoder": true + }, + "matrix_pins": { + "cols": ["C0", "C1", "C2", "C3", "A6", "B10", "B11", "B12", "B13", "B14", "A10", "C6", "C7", "C8", "C9", "A8", "C4"], + "rows": ["A1", "A2", "A3", "A4", "C13"] + }, + "eeprom": { + "wear_leveling": { + "backing_size": 4096, + "driver": "spi_flash" + } + }, + "encoder": { + "rotary": [ + {"pin_a": "B6", "pin_b": "B7"} + ] + }, + "ws2812": { + "driver": "spi", + "pin": "B15" + }, + "rgb_matrix": { + "driver": "ws2812", + "max_brightness": 100, + "animations": { + "alphas_mods": true, + "gradient_up_down": true, + "gradient_left_right": true, + "breathing": true, + "band_sat": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "band_spiral_sat": true, + "band_spiral_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "cycle_out_in": true, + "cycle_out_in_dual": true, + "rainbow_moving_chevron": true, + "cycle_pinwheel": true, + "cycle_spiral": true, + "dual_beacon": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "jellybean_raindrops": true, + "hue_breathing": true, + "hue_pendulum": true, + "hue_wave": true, + "pixel_fractal": true, + "pixel_flow": true, + "pixel_rain": true, + "typing_heatmap": true, + "digital_rain": true, + "solid_reactive_simple": true, + "solid_reactive": true, + "solid_reactive_wide": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_multicross": true, + "solid_reactive_nexus": true, + "solid_reactive_multinexus": true, + "splash": true, + "multisplash": true, + "solid_splash": true, + "solid_multisplash": true + }, + "layout": [ + {"flags": 4, "matrix": [2, 16], "x": 210 , "y": 32 }, + {"flags": 4, "matrix": [1, 16], "x": 210 , "y": 18 }, + {"flags": 4, "matrix": [0, 13], "x": 183 , "y": 4 }, + {"flags": 4, "matrix": [0, 12], "x": 163 , "y": 4 }, + {"flags": 4, "matrix": [0, 11], "x": 149 , "y": 4 }, + {"flags": 4, "matrix": [0, 10], "x": 136 , "y": 4 }, + {"flags": 4, "matrix": [0, 9], "x": 122 , "y": 4 }, + {"flags": 4, "matrix": [0, 8], "x": 109 , "y": 4 }, + {"flags": 4, "matrix": [0, 7], "x": 95 , "y": 4 }, + {"flags": 4, "matrix": [0, 6], "x": 81 , "y": 4 }, + {"flags": 4, "matrix": [0, 5], "x": 68 , "y": 4 }, + {"flags": 4, "matrix": [0, 4], "x": 54 , "y": 4 }, + {"flags": 4, "matrix": [0, 3], "x": 41 , "y": 4 }, + {"flags": 4, "matrix": [0, 2], "x": 27 , "y": 4 }, + {"flags": 4, "matrix": [0, 1], "x": 14 , "y": 4 }, + {"flags": 4, "matrix": [0, 0], "x": 0 , "y": 4 }, + {"flags": 4, "matrix": [1, 0], "x": 3 , "y": 18 }, + {"flags": 4, "matrix": [1, 1], "x": 20 , "y": 18 }, + {"flags": 4, "matrix": [1, 2], "x": 34 , "y": 18 }, + {"flags": 4, "matrix": [1, 3], "x": 48 , "y": 18 }, + {"flags": 4, "matrix": [1, 4], "x": 61 , "y": 18 }, + {"flags": 4, "matrix": [1, 5], "x": 75 , "y": 18 }, + {"flags": 4, "matrix": [1, 6], "x": 88 , "y": 18 }, + {"flags": 4, "matrix": [1, 7], "x": 102 , "y": 18 }, + {"flags": 4, "matrix": [1, 8], "x": 115 , "y": 18 }, + {"flags": 4, "matrix": [1, 9], "x": 129 , "y": 18 }, + {"flags": 4, "matrix": [1, 10], "x": 143 , "y": 18 }, + {"flags": 4, "matrix": [1, 11], "x": 156 , "y": 18 }, + {"flags": 4, "matrix": [1, 12], "x": 170 , "y": 18 }, + {"flags": 4, "matrix": [1, 13], "x": 187 , "y": 18 }, + {"flags": 4, "matrix": [2, 13], "x": 182 , "y": 32 }, + {"flags": 4, "matrix": [2, 11], "x": 160 , "y": 32 }, + {"flags": 4, "matrix": [2, 10], "x": 146 , "y": 32 }, + {"flags": 4, "matrix": [2, 9], "x": 132 , "y": 32 }, + {"flags": 4, "matrix": [2, 8], "x": 119 , "y": 32 }, + {"flags": 4, "matrix": [2, 7], "x": 105 , "y": 32 }, + {"flags": 4, "matrix": [2, 6], "x": 92 , "y": 32 }, + {"flags": 4, "matrix": [2, 5], "x": 78 , "y": 32 }, + {"flags": 4, "matrix": [2, 4], "x": 64 , "y": 32 }, + {"flags": 4, "matrix": [2, 3], "x": 51 , "y": 32 }, + {"flags": 4, "matrix": [2, 2], "x": 37 , "y": 32 }, + {"flags": 4, "matrix": [2, 1], "x": 24 , "y": 32 }, + {"flags": 4, "matrix": [2, 0], "x": 5 , "y": 32 }, + {"flags": 4, "matrix": [3, 0], "x": 8 , "y": 46 }, + {"flags": 4, "matrix": [3, 1], "x": 31 , "y": 46 }, + {"flags": 4, "matrix": [3, 2], "x": 44 , "y": 46 }, + {"flags": 4, "matrix": [3, 3], "x": 58 , "y": 46 }, + {"flags": 4, "matrix": [3, 4], "x": 71 , "y": 46 }, + {"flags": 4, "matrix": [3, 5], "x": 85 , "y": 46 }, + {"flags": 4, "matrix": [3, 6], "x": 98 , "y": 46 }, + {"flags": 4, "matrix": [3, 7], "x": 112 , "y": 46 }, + {"flags": 4, "matrix": [3, 8], "x": 126 , "y": 46 }, + {"flags": 4, "matrix": [3, 9], "x": 139 , "y": 46 }, + {"flags": 4, "matrix": [3, 10], "x": 153 , "y": 46 }, + {"flags": 4, "matrix": [3, 13], "x": 171 , "y": 46 }, + {"flags": 4, "matrix": [3, 15], "x": 193 , "y": 50 }, + {"flags": 4, "matrix": [4, 16], "x": 207 , "y": 64 }, + {"flags": 4, "matrix": [4, 15], "x": 193 , "y": 64 }, + {"flags": 4, "matrix": [4, 14], "x": 180 , "y": 64 }, + {"flags": 4, "matrix": [4, 13], "x": 163 , "y": 60 }, + {"flags": 4, "matrix": [4, 10], "x": 149 , "y": 60 }, + {"flags": 4, "matrix": [4, 9], "x": 136 , "y": 60 }, + {"flags": 4, "matrix": [4, 6], "x": 87 , "y": 60 }, + {"flags": 4, "matrix": [4, 2], "x": 36 , "y": 60 }, + {"flags": 4, "matrix": [4, 1], "x": 19 , "y": 60 }, + {"flags": 4, "matrix": [4, 0], "x": 2 , "y": 60 }, + {"flags": 4, "matrix": [0, 16], "x": 210 , "y": 4 } + ], + "sleep": true + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 16], "x": 15.5, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 16], "x": 15.5, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [2, 16], "x": 15.5, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 1], "x": 2.25, "y": 3}, + {"matrix": [3, 2], "x": 3.25, "y": 3}, + {"matrix": [3, 3], "x": 4.25, "y": 3}, + {"matrix": [3, 4], "x": 5.25, "y": 3}, + {"matrix": [3, 5], "x": 6.25, "y": 3}, + {"matrix": [3, 6], "x": 7.25, "y": 3}, + {"matrix": [3, 7], "x": 8.25, "y": 3}, + {"matrix": [3, 8], "x": 9.25, "y": 3}, + {"matrix": [3, 9], "x": 10.25, "y": 3}, + {"matrix": [3, 10], "x": 11.25, "y": 3}, + {"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 15], "x": 14.25, "y": 3.25}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 9], "x": 10, "y": 4}, + {"matrix": [4, 10], "x": 11, "y": 4}, + {"matrix": [4, 13], "x": 12, "y": 4}, + {"matrix": [4, 14], "x": 13.25, "y": 4.25}, + {"matrix": [4, 15], "x": 14.25, "y": 4.25}, + {"matrix": [4, 16], "x": 15.25, "y": 4.25} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/moky/moky67/keymaps/default/keymap.c b/keyboards/moky/moky67/keymaps/default/keymap.c new file mode 100644 index 00000000000..aab6493c2e9 --- /dev/null +++ b/keyboards/moky/moky67/keymaps/default/keymap.c @@ -0,0 +1,50 @@ +// Copyright 2023 VertorWang (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( /* Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, _______, + KC_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_SCRL, + 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_DEL, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT( /* Base */ + KC_GRV, KC_MYCM, KC_WHOM, KC_MAIL, KC_CALC, KC_MSEL, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, _______, + _______, TO(0), TO(2), _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, + _______, GU_TOGG, _______, EE_CLR, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI), + + [2] = LAYOUT( /* Base */ + KC_ESC, KC_BRMD, KC_BRMU, KC_F3, _______, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, 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_SCRL, + 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_DEL, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(3), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [3] = LAYOUT( /* FN */ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, _______, + _______, TO(0), TO(2), _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, + _______, _______, _______, EE_CLR, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI), +}; + +// clang-format on + +#ifdef ENCODER_MAP_ENABLE + +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + + [0] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD)}, + [1] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD)}, + [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS)}, + [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS)}, +}; + +#endif diff --git a/keyboards/moky/moky67/keymaps/default/rules.mk b/keyboards/moky/moky67/keymaps/default/rules.mk new file mode 100644 index 00000000000..ee325681483 --- /dev/null +++ b/keyboards/moky/moky67/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/moky/moky67/keymaps/via/keymap.c b/keyboards/moky/moky67/keymaps/via/keymap.c new file mode 100644 index 00000000000..aab6493c2e9 --- /dev/null +++ b/keyboards/moky/moky67/keymaps/via/keymap.c @@ -0,0 +1,50 @@ +// Copyright 2023 VertorWang (@itarze) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( /* Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, _______, + KC_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_SCRL, + 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_DEL, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [1] = LAYOUT( /* Base */ + KC_GRV, KC_MYCM, KC_WHOM, KC_MAIL, KC_CALC, KC_MSEL, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, _______, + _______, TO(0), TO(2), _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, + _______, GU_TOGG, _______, EE_CLR, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI), + + [2] = LAYOUT( /* Base */ + KC_ESC, KC_BRMD, KC_BRMU, KC_F3, _______, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, 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_SCRL, + 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_DEL, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(3), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + + [3] = LAYOUT( /* FN */ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, _______, _______, + QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, _______, + _______, TO(0), TO(2), _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, + _______, _______, _______, EE_CLR, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI), +}; + +// clang-format on + +#ifdef ENCODER_MAP_ENABLE + +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + + [0] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD)}, + [1] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD)}, + [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS)}, + [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS)}, +}; + +#endif diff --git a/keyboards/moky/moky67/keymaps/via/rules.mk b/keyboards/moky/moky67/keymaps/via/rules.mk new file mode 100644 index 00000000000..715838ecc5d --- /dev/null +++ b/keyboards/moky/moky67/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +ENCODER_MAP_ENABLE = yes +VIA_ENABLE = yes diff --git a/keyboards/moky/moky67/mcuconf.h b/keyboards/moky/moky67/mcuconf.h new file mode 100644 index 00000000000..2b674fffd3d --- /dev/null +++ b/keyboards/moky/moky67/mcuconf.h @@ -0,0 +1,29 @@ +/* Copyright (C) 2023 Westberry Technology Corp., Ltd + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef WB32_GPT_TIM1_IRQ_PRIORITY +#define WB32_GPT_TIM1_IRQ_PRIORITY 3 + +#undef WB32_SPI_USE_QSPI +#define WB32_SPI_USE_QSPI TRUE + +#undef WB32_SPI_USE_SPIM2 +#define WB32_SPI_USE_SPIM2 TRUE + diff --git a/keyboards/moky/moky67/readme.md b/keyboards/moky/moky67/readme.md new file mode 100644 index 00000000000..15b3513d1d7 --- /dev/null +++ b/keyboards/moky/moky67/readme.md @@ -0,0 +1,26 @@ +# moky67 +![moky/moky67](https://i.imgur.com/9k4QiqR.png) + +An in-switch RGB LED keyboard with RGB underglow. + +* Keyboard Maintainer: [Vertor](https://github.com/VertorWang) +* Hardware Supported: moky67 +* Hardware Availability: Private GB + +Make example for this keyboard (after setting up your build environment): + + make moky/moky67:default + +Flashing example for this keyboard: + + make moky/moky67:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/moky/moky67/rules.mk b/keyboards/moky/moky67/rules.mk new file mode 100644 index 00000000000..7ff128fa692 --- /dev/null +++ b/keyboards/moky/moky67/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file From a8de554d22ace15b70e3b20da162b1c571267b95 Mon Sep 17 00:00:00 2001 From: eason <98533237+EasonQian1@users.noreply.github.com> Date: Tue, 21 May 2024 08:16:55 +0800 Subject: [PATCH 20/22] Add Meow65 (#23427) --- keyboards/eason/meow65/config.h | 6 + keyboards/eason/meow65/halconf.h | 8 + keyboards/eason/meow65/info.json | 265 ++++++++++++++++++ .../eason/meow65/keymaps/default/keymap.c | 15 + keyboards/eason/meow65/keymaps/via/keymap.c | 15 + keyboards/eason/meow65/keymaps/via/rules.mk | 2 + keyboards/eason/meow65/mcuconf.h | 9 + keyboards/eason/meow65/readme.md | 27 ++ keyboards/eason/meow65/rules.mk | 1 + 9 files changed, 348 insertions(+) create mode 100644 keyboards/eason/meow65/config.h create mode 100644 keyboards/eason/meow65/halconf.h create mode 100644 keyboards/eason/meow65/info.json create mode 100644 keyboards/eason/meow65/keymaps/default/keymap.c create mode 100644 keyboards/eason/meow65/keymaps/via/keymap.c create mode 100644 keyboards/eason/meow65/keymaps/via/rules.mk create mode 100644 keyboards/eason/meow65/mcuconf.h create mode 100644 keyboards/eason/meow65/readme.md create mode 100644 keyboards/eason/meow65/rules.mk diff --git a/keyboards/eason/meow65/config.h b/keyboards/eason/meow65/config.h new file mode 100644 index 00000000000..ea83fd49fa4 --- /dev/null +++ b/keyboards/eason/meow65/config.h @@ -0,0 +1,6 @@ +// Copyright 2022 Eason +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define WS2812_SPI_DRIVER SPID2 diff --git a/keyboards/eason/meow65/halconf.h b/keyboards/eason/meow65/halconf.h new file mode 100644 index 00000000000..7dda577da1b --- /dev/null +++ b/keyboards/eason/meow65/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2022 Eason +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_SPI TRUE + +#include_next diff --git a/keyboards/eason/meow65/info.json b/keyboards/eason/meow65/info.json new file mode 100644 index 00000000000..340a7410407 --- /dev/null +++ b/keyboards/eason/meow65/info.json @@ -0,0 +1,265 @@ +{ + "keyboard_name": "Meow65", + "manufacturer": "Eason", + "url": "", + "maintainer": "Eason", + "usb": { + "vid": "0x68F4", + "pid": "0x70A0", + "device_version": "0.0.1", + "force_nkro": true + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, + "rgblight": { + "led_count": 2, + "animations": { + "breathing": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "snake": true, + "knight": true, + "christmas": true, + "static_gradient": true, + "rgb_test": true, + "alternating": true, + "twinkle": true + } + }, + "ws2812": { + "pin": "B15", + "driver": "spi" + }, + "indicators": { + "caps_lock": "C13" + }, + "matrix_pins": { + "rows": [ "A15", "B3", "B4", "B5", "B6"], + "cols": ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "B0", "B1", "B10", "B11", "B12", "B13", "B14", "A8"] + }, + "diode_direction": "ROW2COL", + "processor": "STM32F103", + "bootloader": "uf2boot", + "layouts":{ + "LAYOUT_all": { + "layout":[ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 13], "x": 13.75, "y": 2, "w": 1.25}, + {"matrix": [2, 14], "x": 15, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_ansi": { + "layout":[ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5}, + {"matrix": [1, 14], "x": 15, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25}, + {"matrix": [2, 14], "x": 15, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + }, + "LAYOUT_iso": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0}, + {"matrix": [0, 1], "x": 1, "y": 0}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0}, + {"matrix": [0, 4], "x": 4, "y": 0}, + {"matrix": [0, 5], "x": 5, "y": 0}, + {"matrix": [0, 6], "x": 6, "y": 0}, + {"matrix": [0, 7], "x": 7, "y": 0}, + {"matrix": [0, 8], "x": 8, "y": 0}, + {"matrix": [0, 9], "x": 9, "y": 0}, + {"matrix": [0, 10], "x": 10, "y": 0}, + {"matrix": [0, 11], "x": 11, "y": 0}, + {"matrix": [0, 12], "x": 12, "y": 0}, + {"matrix": [0, 13], "x": 13, "y": 0, "w": 2}, + {"matrix": [0, 14], "x": 15, "y": 0}, + {"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5}, + {"matrix": [1, 1], "x": 1.5, "y": 1}, + {"matrix": [1, 2], "x": 2.5, "y": 1}, + {"matrix": [1, 3], "x": 3.5, "y": 1}, + {"matrix": [1, 4], "x": 4.5, "y": 1}, + {"matrix": [1, 5], "x": 5.5, "y": 1}, + {"matrix": [1, 6], "x": 6.5, "y": 1}, + {"matrix": [1, 7], "x": 7.5, "y": 1}, + {"matrix": [1, 8], "x": 8.5, "y": 1}, + {"matrix": [1, 9], "x": 9.5, "y": 1}, + {"matrix": [1, 10], "x": 10.5, "y": 1}, + {"matrix": [1, 11], "x": 11.5, "y": 1}, + {"matrix": [1, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2}, + {"matrix": [1, 14], "x": 15, "y": 1}, + {"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75}, + {"matrix": [2, 1], "x": 1.75, "y": 2}, + {"matrix": [2, 2], "x": 2.75, "y": 2}, + {"matrix": [2, 3], "x": 3.75, "y": 2}, + {"matrix": [2, 4], "x": 4.75, "y": 2}, + {"matrix": [2, 5], "x": 5.75, "y": 2}, + {"matrix": [2, 6], "x": 6.75, "y": 2}, + {"matrix": [2, 7], "x": 7.75, "y": 2}, + {"matrix": [2, 8], "x": 8.75, "y": 2}, + {"matrix": [2, 9], "x": 9.75, "y": 2}, + {"matrix": [2, 10], "x": 10.75, "y": 2}, + {"matrix": [2, 11], "x": 11.75, "y": 2}, + {"matrix": [2, 12], "x": 12.75, "y": 2}, + {"matrix": [2, 14], "x": 15, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25}, + {"matrix": [3, 1], "x": 1.25, "y": 3}, + {"matrix": [3, 2], "x": 2.25, "y": 3}, + {"matrix": [3, 3], "x": 3.25, "y": 3}, + {"matrix": [3, 4], "x": 4.25, "y": 3}, + {"matrix": [3, 5], "x": 5.25, "y": 3}, + {"matrix": [3, 6], "x": 6.25, "y": 3}, + {"matrix": [3, 7], "x": 7.25, "y": 3}, + {"matrix": [3, 8], "x": 8.25, "y": 3}, + {"matrix": [3, 9], "x": 9.25, "y": 3}, + {"matrix": [3, 10], "x": 10.25, "y": 3}, + {"matrix": [3, 11], "x": 11.25, "y": 3}, + {"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75}, + {"matrix": [3, 13], "x": 14, "y": 3}, + {"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25}, + {"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25}, + {"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25}, + {"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25}, + {"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25}, + {"matrix": [4, 12], "x": 13, "y": 4}, + {"matrix": [4, 13], "x": 14, "y": 4}, + {"matrix": [4, 14], "x": 15, "y": 4} + ] + } + } +} diff --git a/keyboards/eason/meow65/keymaps/default/keymap.c b/keyboards/eason/meow65/keymaps/default/keymap.c new file mode 100644 index 00000000000..f70a94c0d96 --- /dev/null +++ b/keyboards/eason/meow65/keymaps/default/keymap.c @@ -0,0 +1,15 @@ +// Copyright 2022 Eason +// SPDX-License-Identifier: GPL-2.0-or-later + + #include QMK_KEYBOARD_H + + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + 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_LSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT + ) + }; diff --git a/keyboards/eason/meow65/keymaps/via/keymap.c b/keyboards/eason/meow65/keymaps/via/keymap.c new file mode 100644 index 00000000000..61c6323ea04 --- /dev/null +++ b/keyboards/eason/meow65/keymaps/via/keymap.c @@ -0,0 +1,15 @@ +// Copyright 2022 Eason +// SPDX-License-Identifier: GPL-2.0-or-later + + #include QMK_KEYBOARD_H + + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN, + 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_LSFT, KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT + ) + }; diff --git a/keyboards/eason/meow65/keymaps/via/rules.mk b/keyboards/eason/meow65/keymaps/via/rules.mk new file mode 100644 index 00000000000..36b7ba9cbc9 --- /dev/null +++ b/keyboards/eason/meow65/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/eason/meow65/mcuconf.h b/keyboards/eason/meow65/mcuconf.h new file mode 100644 index 00000000000..bac8fc07c5f --- /dev/null +++ b/keyboards/eason/meow65/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2022 Eason +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE diff --git a/keyboards/eason/meow65/readme.md b/keyboards/eason/meow65/readme.md new file mode 100644 index 00000000000..5c72d73c6e0 --- /dev/null +++ b/keyboards/eason/meow65/readme.md @@ -0,0 +1,27 @@ +# Meow65 + +![meow65](https://i.imgur.com/i5tM4nY.jpg) + +A customizable hotswap 65% keyboard. + +* Keyboard Maintainer: [EASON](https://github.com/EasonQian1) +* Hardware Supported: Meow65 PCB +* Hardware Availability: [EASON](https://github.com/EasonQian1) + +Make example for this keyboard (after setting up your build environment): + + make eason/meow65:default + +Flashing example for this keyboard: + + make eason/meow65: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 Esc in the keyboard then replug +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` diff --git a/keyboards/eason/meow65/rules.mk b/keyboards/eason/meow65/rules.mk new file mode 100644 index 00000000000..6e7633bfe01 --- /dev/null +++ b/keyboards/eason/meow65/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank From 3d0f4fa6927a8b600f1f5fc63f1f2349dc1c79af Mon Sep 17 00:00:00 2001 From: Dasky <32983009+daskygit@users.noreply.github.com> Date: Wed, 22 May 2024 00:04:18 +0100 Subject: [PATCH 21/22] Fix font artefact on Reverb keyboard. (#23761) --- .../dasky/reverb/graphics/robotomono20.qff.c | 465 ++++++------------ .../dasky/reverb/graphics/robotomono20.qff.h | 6 +- 2 files changed, 157 insertions(+), 314 deletions(-) diff --git a/keyboards/dasky/reverb/graphics/robotomono20.qff.c b/keyboards/dasky/reverb/graphics/robotomono20.qff.c index a232ffadfbb..8874c1b016c 100644 --- a/keyboards/dasky/reverb/graphics/robotomono20.qff.c +++ b/keyboards/dasky/reverb/graphics/robotomono20.qff.c @@ -1,320 +1,163 @@ -// Copyright 2023 QMK -- generated source code only, font retains original copyright +// Copyright 2024 QMK -- generated source code only, font retains original copyright // SPDX-License-Identifier: GPL-2.0-or-later -// This file was auto-generated by `qmk painter-convert-font-image -i robotomono20.png -f mono4` +// This file was auto-generated by `qmk painter-convert-font-image -i robotomono20.png -f mono2` #include -const uint32_t font_robotomono20_length = 4904; +const uint32_t font_robotomono20_length = 2396; // clang-format off -const uint8_t font_robotomono20[4904] = { - 0x00, 0xFF, 0x14, 0x00, 0x00, 0x51, 0x46, 0x46, 0x01, 0x28, 0x13, 0x00, 0x00, 0xD7, 0xEC, 0xFF, - 0xFF, 0x16, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0xFF, 0x01, 0xFE, 0x1D, 0x01, 0x00, 0x0C, 0x00, - 0x00, 0x8C, 0x00, 0x00, 0x0C, 0x0E, 0x00, 0xCC, 0x12, 0x00, 0xCC, 0x1F, 0x00, 0x8C, 0x2F, 0x00, - 0x0C, 0x3D, 0x00, 0xCC, 0x49, 0x00, 0x4C, 0x4F, 0x00, 0x4C, 0x62, 0x00, 0x0C, 0x76, 0x00, 0x4C, - 0x7F, 0x00, 0xCC, 0x89, 0x00, 0x0C, 0x8F, 0x00, 0xCC, 0x91, 0x00, 0x4C, 0x95, 0x00, 0x0C, 0xA4, - 0x00, 0xCC, 0xB0, 0x00, 0x8C, 0xBE, 0x00, 0x4C, 0xCB, 0x00, 0x4C, 0xD8, 0x00, 0x8C, 0xE4, 0x00, - 0x4C, 0xF2, 0x00, 0x8C, 0xFF, 0x00, 0x0C, 0x0D, 0x01, 0xCC, 0x19, 0x01, 0x0C, 0x26, 0x01, 0x8C, - 0x2C, 0x01, 0x0C, 0x35, 0x01, 0xCC, 0x3C, 0x01, 0x8C, 0x42, 0x01, 0x8C, 0x4A, 0x01, 0x8C, 0x56, - 0x01, 0x4C, 0x63, 0x01, 0xCC, 0x70, 0x01, 0x4C, 0x7D, 0x01, 0x4C, 0x8B, 0x01, 0x8C, 0x97, 0x01, - 0x0C, 0xA6, 0x01, 0x4C, 0xB4, 0x01, 0xCC, 0xC1, 0x01, 0x4C, 0xCE, 0x01, 0x0C, 0xDD, 0x01, 0x0C, - 0xEC, 0x01, 0x8C, 0xF8, 0x01, 0x4C, 0x08, 0x02, 0xCC, 0x14, 0x02, 0x8C, 0x21, 0x02, 0x8C, 0x2E, - 0x02, 0x8C, 0x3B, 0x02, 0x8C, 0x49, 0x02, 0x0C, 0x56, 0x02, 0x4C, 0x63, 0x02, 0x4C, 0x72, 0x02, - 0x4C, 0x7F, 0x02, 0x4C, 0x8C, 0x02, 0x8C, 0x99, 0x02, 0xCC, 0xA6, 0x02, 0xCC, 0xB4, 0x02, 0x0C, - 0xC2, 0x02, 0x4C, 0xD6, 0x02, 0x0C, 0xE7, 0x02, 0x4C, 0xFB, 0x02, 0x0C, 0x03, 0x03, 0xCC, 0x05, - 0x03, 0x4C, 0x09, 0x03, 0x4C, 0x13, 0x03, 0x4C, 0x21, 0x03, 0xCC, 0x2B, 0x03, 0x0C, 0x39, 0x03, - 0x0C, 0x43, 0x03, 0x0C, 0x52, 0x03, 0x8C, 0x5E, 0x03, 0x0C, 0x6C, 0x03, 0x4C, 0x7A, 0x03, 0xCC, - 0x89, 0x03, 0x4C, 0x97, 0x03, 0x8C, 0xA6, 0x03, 0x0C, 0xB0, 0x03, 0x8C, 0xB9, 0x03, 0x4C, 0xC3, - 0x03, 0xCC, 0xCF, 0x03, 0x0C, 0xDD, 0x03, 0x4C, 0xE6, 0x03, 0x0C, 0xF0, 0x03, 0x4C, 0xFD, 0x03, - 0x4C, 0x07, 0x04, 0x4C, 0x11, 0x04, 0xCC, 0x1A, 0x04, 0xCC, 0x24, 0x04, 0x8C, 0x32, 0x04, 0x8C, - 0x3C, 0x04, 0xCC, 0x4F, 0x04, 0x4C, 0x62, 0x04, 0xCC, 0x75, 0x04, 0x04, 0xFB, 0xE8, 0x11, 0x00, - 0x42, 0x00, 0x07, 0x00, 0x80, 0x04, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, - 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, - 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x14, 0x08, 0x00, - 0x80, 0x2C, 0x02, 0x00, 0x80, 0x3C, 0x10, 0x00, 0x06, 0x00, 0x8D, 0x80, 0xC3, 0x01, 0x80, 0xC3, - 0x01, 0x80, 0xC3, 0x01, 0x80, 0xC2, 0x01, 0x40, 0x82, 0x2E, 0x00, 0x07, 0x00, 0x02, 0x04, 0x80, - 0x00, 0x02, 0x0D, 0x80, 0x00, 0x02, 0x0D, 0x80, 0x00, 0x02, 0x0A, 0x97, 0x00, 0x0A, 0x0B, 0xF8, - 0xFF, 0xBF, 0x50, 0x57, 0x17, 0x40, 0x43, 0x03, 0x80, 0x82, 0x02, 0xD4, 0xD6, 0x16, 0xFD, 0xFF, - 0x2F, 0xC0, 0xD1, 0x01, 0x02, 0xD0, 0x83, 0x00, 0xE0, 0xA0, 0x00, 0x02, 0xA0, 0x10, 0x00, 0x81, - 0x00, 0x24, 0x02, 0x00, 0x80, 0x34, 0x02, 0x00, 0x95, 0x78, 0x00, 0x80, 0xFF, 0x07, 0xD0, 0x56, - 0x0F, 0xE0, 0x00, 0x1E, 0xF0, 0x00, 0x2D, 0xE0, 0x01, 0x00, 0xD0, 0x07, 0x00, 0x40, 0xBF, 0x02, - 0x00, 0x95, 0xF4, 0x07, 0x00, 0x40, 0x1F, 0x10, 0x00, 0x2D, 0x74, 0x00, 0x2D, 0xB0, 0x00, 0x2D, - 0xE0, 0x96, 0x0F, 0x80, 0xFF, 0x06, 0x00, 0x38, 0x02, 0x00, 0x80, 0x38, 0x0A, 0x00, 0x06, 0x00, - 0x80, 0x50, 0x02, 0x00, 0x90, 0xFC, 0x03, 0x00, 0x0D, 0x0B, 0x01, 0x0A, 0x4A, 0x07, 0x0E, 0x8A, - 0x02, 0x6D, 0xD7, 0x00, 0xA4, 0xB1, 0x02, 0x00, 0x80, 0x34, 0x02, 0x00, 0x80, 0x1C, 0x02, 0x00, - 0x90, 0x8E, 0x2F, 0x00, 0xD7, 0x75, 0x80, 0xA2, 0xB0, 0xC0, 0xA1, 0xA0, 0x00, 0xE0, 0x70, 0x00, - 0x80, 0x2F, 0x0F, 0x00, 0x07, 0x00, 0xAD, 0x15, 0x00, 0x80, 0xFF, 0x00, 0xD0, 0xD2, 0x02, 0xE0, - 0xC1, 0x02, 0xE0, 0xC1, 0x02, 0xD0, 0xE2, 0x01, 0xC0, 0x7F, 0x00, 0x80, 0x0F, 0x00, 0xE0, 0x2E, - 0x24, 0xB4, 0x78, 0x74, 0x3C, 0xF0, 0x39, 0x3C, 0xD0, 0x2F, 0x38, 0x40, 0x0F, 0xF4, 0xE5, 0x2F, - 0xD0, 0xBF, 0x7D, 0x00, 0x04, 0x0D, 0x00, 0x07, 0x00, 0x80, 0x1D, 0x02, 0x00, 0x80, 0x1D, 0x02, - 0x00, 0x80, 0x1D, 0x02, 0x00, 0x80, 0x1D, 0x02, 0x00, 0x80, 0x08, 0x2E, 0x00, 0x04, 0x00, 0x86, - 0x40, 0x01, 0x00, 0xE0, 0x01, 0x00, 0x74, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x1D, 0x02, - 0x00, 0x80, 0x0E, 0x02, 0x00, 0x95, 0x0B, 0x00, 0x40, 0x0B, 0x00, 0x40, 0x07, 0x00, 0x40, 0x07, - 0x00, 0x80, 0x07, 0x00, 0x40, 0x07, 0x00, 0x40, 0x07, 0x00, 0x40, 0x0B, 0x02, 0x00, 0x80, 0x0B, - 0x02, 0x00, 0x80, 0x0E, 0x02, 0x00, 0x80, 0x1D, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0xB0, - 0x02, 0x00, 0x81, 0xD0, 0x01, 0x02, 0x00, 0x80, 0x01, 0x03, 0x00, 0x84, 0x80, 0x01, 0x00, 0x40, - 0x07, 0x02, 0x00, 0x80, 0x0E, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x78, 0x02, 0x00, 0x80, - 0xB4, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xE0, 0x02, 0x00, 0x8C, 0xE0, 0x01, 0x00, 0xE0, - 0x01, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x02, 0x00, 0x80, 0xE0, 0x02, 0x00, 0x80, - 0xB0, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0x1D, 0x02, 0x00, 0x85, - 0x0B, 0x00, 0x80, 0x02, 0x00, 0x40, 0x02, 0x00, 0x07, 0x00, 0x80, 0x10, 0x02, 0x00, 0x80, 0x38, - 0x02, 0x00, 0x8C, 0x34, 0x00, 0x10, 0x34, 0x10, 0xF4, 0x7A, 0x2E, 0x90, 0xFF, 0x1A, 0x00, 0xBC, - 0x02, 0x00, 0x87, 0xDB, 0x01, 0x80, 0x87, 0x03, 0x80, 0x42, 0x07, 0x1E, 0x00, 0x10, 0x00, 0x80, - 0x28, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x8C, 0x3C, 0x00, 0xA8, 0xBE, - 0x2A, 0xFC, 0xFF, 0x3F, 0x50, 0x7D, 0x05, 0x00, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, - 0x3C, 0x02, 0x00, 0x80, 0x28, 0x13, 0x00, 0x2E, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, - 0x00, 0x80, 0x1E, 0x02, 0x00, 0x83, 0x0F, 0x00, 0x40, 0x07, 0x07, 0x00, 0x1E, 0x00, 0x85, 0xF0, - 0xFF, 0x0B, 0x90, 0xAA, 0x06, 0x1E, 0x00, 0x2B, 0x00, 0x80, 0x24, 0x02, 0x00, 0x80, 0xBC, 0x02, - 0x00, 0x80, 0x7C, 0x10, 0x00, 0x08, 0x00, 0x80, 0x04, 0x02, 0x00, 0x8E, 0x0B, 0x00, 0x40, 0x07, - 0x00, 0x80, 0x03, 0x00, 0xC0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0xA0, 0x02, 0x00, 0x80, 0x74, 0x02, - 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x1D, 0x02, 0x00, 0x80, 0x0E, 0x02, - 0x00, 0x8B, 0x0B, 0x00, 0x40, 0x03, 0x00, 0xC0, 0x02, 0x00, 0xD0, 0x01, 0x00, 0x40, 0x0B, 0x00, - 0x07, 0x00, 0xAD, 0x55, 0x00, 0x80, 0xFF, 0x02, 0xE0, 0x42, 0x0B, 0xB0, 0x00, 0x1E, 0x74, 0x00, - 0x1D, 0x78, 0x00, 0x2E, 0x78, 0xD0, 0x2F, 0x78, 0xB8, 0x2D, 0x78, 0x1E, 0x2D, 0xF8, 0x07, 0x2D, - 0xB8, 0x00, 0x2D, 0x74, 0x00, 0x1D, 0xB0, 0x00, 0x0E, 0xE0, 0x96, 0x0B, 0x40, 0xFF, 0x02, 0x00, - 0x14, 0x0D, 0x00, 0x0A, 0x00, 0x89, 0xB4, 0x00, 0x90, 0xBF, 0x00, 0xF0, 0xB6, 0x00, 0x10, 0xB4, - 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, - 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, - 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x10, 0x00, 0x07, 0x00, 0x98, 0x15, 0x00, 0xD0, - 0xFF, 0x01, 0xB4, 0xD1, 0x07, 0x3C, 0x40, 0x0B, 0x2C, 0x00, 0x0B, 0x00, 0x40, 0x0B, 0x00, 0x80, - 0x07, 0x00, 0xD0, 0x02, 0x00, 0xB4, 0x02, 0x00, 0x80, 0x3D, 0x02, 0x00, 0x8D, 0x0F, 0x00, 0xC0, - 0x07, 0x00, 0xE0, 0x01, 0x00, 0xB8, 0x55, 0x15, 0xFC, 0xFF, 0x1F, 0x0F, 0x00, 0x07, 0x00, 0x9C, - 0x15, 0x00, 0xD0, 0xFF, 0x01, 0xB4, 0xD1, 0x07, 0x38, 0x40, 0x0B, 0x14, 0x00, 0x0B, 0x00, 0x40, - 0x0B, 0x00, 0xD0, 0x03, 0x40, 0xFF, 0x01, 0x00, 0xE9, 0x02, 0x00, 0x40, 0x0B, 0x02, 0x00, 0x8E, - 0x0F, 0x28, 0x00, 0x0F, 0x3C, 0x40, 0x0B, 0xF4, 0xD5, 0x07, 0xD0, 0xBF, 0x01, 0x00, 0x04, 0x0D, - 0x00, 0x07, 0x00, 0xAB, 0x40, 0x01, 0x00, 0xD0, 0x03, 0x00, 0xF0, 0x03, 0x00, 0xF8, 0x03, 0x00, - 0x9D, 0x03, 0x00, 0x8B, 0x03, 0x80, 0x83, 0x03, 0xD0, 0x81, 0x03, 0xB0, 0x80, 0x03, 0x78, 0x80, - 0x03, 0xBC, 0xEA, 0x2B, 0xA9, 0xEA, 0x2B, 0x00, 0x80, 0x03, 0x00, 0x80, 0x03, 0x00, 0x80, 0x03, - 0x0F, 0x00, 0x06, 0x00, 0x97, 0x40, 0x55, 0x05, 0xC0, 0xFF, 0x1F, 0xC0, 0xAA, 0x1A, 0xD0, 0x01, - 0x00, 0xD0, 0x01, 0x00, 0xD0, 0x51, 0x00, 0xE0, 0xFF, 0x07, 0xE0, 0x96, 0x0F, 0x02, 0x00, 0x80, - 0x1E, 0x02, 0x00, 0x80, 0x2D, 0x02, 0x00, 0x8E, 0x2C, 0x60, 0x00, 0x2C, 0xF0, 0x00, 0x1E, 0xD0, - 0x97, 0x0F, 0x40, 0xFF, 0x02, 0x00, 0x10, 0x0D, 0x00, 0x07, 0x00, 0x80, 0x40, 0x02, 0x00, 0x88, - 0xF9, 0x01, 0x80, 0x6F, 0x00, 0xD0, 0x02, 0x00, 0xF0, 0x02, 0x00, 0x9F, 0xB4, 0x14, 0x00, 0xB4, - 0xFF, 0x02, 0xF8, 0x96, 0x0B, 0xB8, 0x00, 0x0F, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x1D, 0x74, 0x00, - 0x1E, 0xF0, 0x00, 0x0F, 0xD0, 0x96, 0x07, 0x40, 0xFF, 0x01, 0x00, 0x14, 0x0D, 0x00, 0x06, 0x00, - 0x88, 0x54, 0x55, 0x05, 0xFC, 0xFF, 0x2F, 0x54, 0x55, 0x1E, 0x02, 0x00, 0x8E, 0x0E, 0x00, 0x40, - 0x07, 0x00, 0x80, 0x03, 0x00, 0xC0, 0x02, 0x00, 0xE0, 0x01, 0x00, 0xB0, 0x02, 0x00, 0x80, 0x78, - 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x1D, 0x02, 0x00, 0x86, 0x0F, 0x00, 0x40, 0x07, 0x00, - 0xC0, 0x03, 0x10, 0x00, 0x07, 0x00, 0xAD, 0x54, 0x00, 0x80, 0xFF, 0x07, 0xD0, 0x46, 0x0F, 0xE0, - 0x00, 0x1E, 0xF0, 0x00, 0x1D, 0xE0, 0x00, 0x1E, 0xD0, 0x46, 0x0B, 0x40, 0xFF, 0x02, 0xD0, 0x9B, - 0x0B, 0xF0, 0x00, 0x1E, 0xB4, 0x00, 0x2C, 0xB4, 0x00, 0x2C, 0xF0, 0x00, 0x2D, 0xE0, 0x96, 0x0F, - 0x40, 0xFF, 0x02, 0x00, 0x10, 0x0D, 0x00, 0x07, 0x00, 0x9F, 0x15, 0x00, 0x80, 0xFF, 0x02, 0xE0, - 0x92, 0x07, 0xB4, 0x00, 0x0F, 0x74, 0x00, 0x1E, 0x78, 0x00, 0x1D, 0x74, 0x00, 0x1D, 0xB4, 0x00, - 0x1E, 0xE0, 0x96, 0x1F, 0x80, 0xBF, 0x1E, 0x00, 0x04, 0x0E, 0x02, 0x00, 0x88, 0x0B, 0x00, 0xD0, - 0x03, 0x40, 0xFA, 0x01, 0x80, 0x2F, 0x10, 0x00, 0x10, 0x00, 0x80, 0x60, 0x02, 0x00, 0x80, 0xF8, - 0x02, 0x00, 0x80, 0xF4, 0x14, 0x00, 0x80, 0x60, 0x02, 0x00, 0x80, 0xF8, 0x02, 0x00, 0x80, 0xF4, - 0x10, 0x00, 0x10, 0x00, 0x80, 0x60, 0x02, 0x00, 0x80, 0xF8, 0x02, 0x00, 0x80, 0xF8, 0x17, 0x00, - 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, - 0x80, 0x2C, 0x07, 0x00, 0x14, 0x00, 0x95, 0x04, 0x00, 0x90, 0x0F, 0x00, 0xF9, 0x06, 0xD0, 0x2F, - 0x00, 0xF4, 0x01, 0x00, 0xE0, 0x0B, 0x00, 0x40, 0xBE, 0x01, 0x00, 0xE0, 0x0F, 0x02, 0x00, 0x80, - 0x09, 0x15, 0x00, 0x15, 0x00, 0x88, 0x50, 0x55, 0x05, 0xF4, 0xFF, 0x1F, 0x50, 0x55, 0x05, 0x06, - 0x00, 0x85, 0xF4, 0xFF, 0x1F, 0x50, 0x55, 0x15, 0x18, 0x00, 0x12, 0x00, 0x80, 0x14, 0x02, 0x00, - 0x84, 0xF4, 0x02, 0x00, 0x90, 0x6F, 0x02, 0x00, 0x8E, 0xF8, 0x07, 0x00, 0x40, 0x1F, 0x00, 0xE4, - 0x0B, 0x40, 0xBF, 0x01, 0xF4, 0x07, 0x00, 0x64, 0x17, 0x00, 0x07, 0x00, 0x8A, 0x55, 0x00, 0x80, - 0xFF, 0x07, 0xE0, 0x96, 0x0F, 0xB0, 0x00, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x88, 0x0F, - 0x00, 0x80, 0x0B, 0x00, 0xD0, 0x02, 0x00, 0xB4, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x2C, - 0x08, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x10, 0x00, 0x07, 0x00, 0x89, 0x10, 0x00, 0x40, - 0xFE, 0x06, 0xD0, 0x02, 0x0E, 0x70, 0x10, 0x02, 0x28, 0x97, 0xFD, 0x31, 0x1C, 0x8B, 0x71, 0x4C, - 0x83, 0x61, 0x4D, 0xC2, 0x61, 0x8D, 0xC2, 0x70, 0x8D, 0xC2, 0x30, 0x4D, 0xFB, 0x29, 0x1C, 0x5A, - 0x0B, 0x38, 0x02, 0x00, 0x85, 0xE0, 0x55, 0x01, 0x80, 0xFF, 0x01, 0x0F, 0x00, 0x07, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x7D, 0x02, 0x00, 0x80, 0xBE, 0x02, 0x00, 0x80, - 0xEE, 0x02, 0x00, 0x9C, 0xDB, 0x01, 0x40, 0xC7, 0x02, 0x80, 0x83, 0x03, 0xC0, 0x42, 0x07, 0xD0, - 0x56, 0x0B, 0xE0, 0xFF, 0x0F, 0xB0, 0x55, 0x1E, 0x74, 0x00, 0x2C, 0x38, 0x00, 0x3C, 0x2C, 0x00, - 0x78, 0x0F, 0x00, 0x06, 0x00, 0xAC, 0x50, 0x15, 0x00, 0xF4, 0xFF, 0x02, 0xB4, 0x95, 0x0F, 0xB4, - 0x00, 0x1E, 0xB4, 0x00, 0x2D, 0xB4, 0x00, 0x1E, 0xB4, 0x90, 0x0B, 0xF4, 0xFF, 0x02, 0xB4, 0x95, - 0x0F, 0xB4, 0x00, 0x2D, 0xB4, 0x00, 0x3C, 0xB4, 0x00, 0x3C, 0xB4, 0x00, 0x2E, 0xB4, 0xAA, 0x0F, - 0xF4, 0xFF, 0x01, 0x0F, 0x00, 0x07, 0x00, 0x8E, 0x54, 0x00, 0x80, 0xFF, 0x07, 0xE0, 0x42, 0x0F, - 0xB4, 0x00, 0x2D, 0x78, 0x00, 0x2C, 0x38, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, - 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x90, 0x38, 0x00, 0x14, 0x78, 0x00, 0x2C, - 0xB0, 0x00, 0x1E, 0xD0, 0x96, 0x0B, 0x40, 0xFF, 0x02, 0x00, 0x10, 0x0D, 0x00, 0x06, 0x00, 0xAB, - 0x50, 0x05, 0x00, 0xF4, 0xBF, 0x01, 0xB4, 0xE5, 0x07, 0x74, 0x00, 0x0F, 0x74, 0x00, 0x2D, 0x74, - 0x00, 0x3C, 0x74, 0x00, 0x38, 0x74, 0x00, 0x38, 0x74, 0x00, 0x38, 0x74, 0x00, 0x38, 0x74, 0x00, - 0x2C, 0x74, 0x00, 0x1D, 0x74, 0x40, 0x0F, 0xB4, 0xE9, 0x03, 0xF4, 0x6F, 0x10, 0x00, 0x06, 0x00, - 0x89, 0x50, 0x55, 0x05, 0xF4, 0xFF, 0x1F, 0xB4, 0x55, 0x05, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, - 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x86, 0xF4, 0xFF, 0x0B, 0xB4, 0x55, 0x05, - 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x85, - 0xB4, 0xAA, 0x1A, 0xF4, 0xFF, 0x2F, 0x0F, 0x00, 0x06, 0x00, 0x89, 0x50, 0x55, 0x05, 0xF0, 0xFF, - 0x2F, 0xB0, 0x55, 0x15, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, - 0xB0, 0x02, 0x00, 0x86, 0xF0, 0xAA, 0x06, 0xF0, 0xAA, 0x06, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, - 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x11, - 0x00, 0x07, 0x00, 0x8E, 0x54, 0x00, 0x80, 0xFF, 0x06, 0xE0, 0x46, 0x0F, 0xB4, 0x00, 0x2D, 0x78, - 0x00, 0x2C, 0x3C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x96, 0x2C, 0xE0, - 0x3F, 0x3C, 0x50, 0x3D, 0x38, 0x00, 0x3C, 0x78, 0x00, 0x3C, 0xF0, 0x00, 0x3C, 0xD0, 0x57, 0x2E, - 0x40, 0xFF, 0x06, 0x00, 0x10, 0x0D, 0x00, 0x06, 0x00, 0xAC, 0x10, 0x00, 0x04, 0x38, 0x00, 0x2C, - 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x78, 0x00, 0x2D, 0xF8, - 0xFF, 0x2F, 0x78, 0x55, 0x2D, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, - 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x0F, 0x00, 0x06, 0x00, 0x8A, 0x50, 0x55, 0x05, 0xF4, - 0xFF, 0x1F, 0x50, 0x7D, 0x05, 0x00, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, - 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, - 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x87, 0x3C, 0x00, 0xA4, 0xBE, 0x1A, 0xF4, - 0xFF, 0x1F, 0x0F, 0x00, 0x08, 0x00, 0x80, 0x04, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, - 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, - 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x8E, 0x1E, - 0x3C, 0x00, 0x0E, 0x78, 0x40, 0x0B, 0xF0, 0xE6, 0x07, 0x90, 0xBF, 0x01, 0x00, 0x04, 0x0D, 0x00, - 0x06, 0x00, 0xAC, 0x10, 0x00, 0x14, 0xB4, 0x00, 0x2D, 0xB4, 0x40, 0x0F, 0xB4, 0xC0, 0x03, 0xB4, - 0xF0, 0x01, 0xB4, 0x78, 0x00, 0xB4, 0x2D, 0x00, 0xB4, 0x2F, 0x00, 0xF4, 0x7B, 0x00, 0xF4, 0xF5, - 0x00, 0xB4, 0xE0, 0x02, 0xB4, 0xC0, 0x07, 0xB4, 0x40, 0x0F, 0xB4, 0x00, 0x2E, 0xB4, 0x00, 0x7C, - 0x0F, 0x00, 0x06, 0x00, 0x80, 0x10, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, - 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, - 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, - 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x85, 0xF0, 0xAA, 0x1A, 0xF0, 0xFF, 0x2F, 0x0F, - 0x00, 0x06, 0x00, 0xAC, 0x10, 0x00, 0x04, 0xF8, 0x00, 0x2E, 0xF8, 0x01, 0x2F, 0xF8, 0x42, 0x2F, - 0xB8, 0x83, 0x2E, 0x78, 0xC7, 0x2D, 0x78, 0xEB, 0x2C, 0x38, 0xBE, 0x2C, 0x78, 0x7D, 0x2C, 0x78, - 0x3C, 0x2C, 0x78, 0x28, 0x2C, 0x78, 0x00, 0x2C, 0x78, 0x00, 0x2C, 0x78, 0x00, 0x2C, 0x78, 0x00, - 0x2C, 0x0F, 0x00, 0x06, 0x00, 0x97, 0x10, 0x00, 0x04, 0xB8, 0x00, 0x2D, 0xF8, 0x00, 0x2D, 0xF8, - 0x02, 0x2D, 0xF8, 0x07, 0x2D, 0x78, 0x0B, 0x2D, 0x78, 0x1E, 0x2D, 0x78, 0x2C, 0x2D, 0x02, 0x78, - 0x92, 0x2D, 0x78, 0xB0, 0x2D, 0x78, 0xE0, 0x2E, 0x78, 0xC0, 0x2F, 0x78, 0x80, 0x2F, 0x78, 0x00, - 0x2F, 0x78, 0x00, 0x2D, 0x0F, 0x00, 0x07, 0x00, 0x98, 0x15, 0x00, 0x80, 0xFF, 0x02, 0xE0, 0x96, - 0x0B, 0xB4, 0x00, 0x1E, 0x78, 0x00, 0x2D, 0x38, 0x00, 0x2C, 0x3C, 0x00, 0x3C, 0x2C, 0x00, 0x3C, - 0x2C, 0x00, 0x02, 0x3C, 0x92, 0x00, 0x3C, 0x38, 0x00, 0x2C, 0x78, 0x00, 0x2D, 0xB0, 0x00, 0x0E, - 0xD0, 0xD7, 0x07, 0x40, 0xFF, 0x01, 0x00, 0x14, 0x0D, 0x00, 0x06, 0x00, 0x9E, 0x50, 0x15, 0x00, - 0xF0, 0xFF, 0x07, 0xB0, 0x55, 0x1F, 0xB0, 0x00, 0x3C, 0xB0, 0x00, 0x38, 0xB0, 0x00, 0x38, 0xB0, - 0x00, 0x3C, 0xB0, 0x55, 0x1F, 0xF0, 0xFF, 0x07, 0xB0, 0x55, 0x00, 0xB0, 0x02, 0x00, 0x80, 0xB0, - 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x11, 0x00, 0x07, 0x00, - 0xAE, 0x55, 0x00, 0x80, 0xFF, 0x02, 0xE0, 0x96, 0x0B, 0xB4, 0x00, 0x1E, 0x38, 0x00, 0x2C, 0x3C, - 0x00, 0x3C, 0x2C, 0x00, 0x38, 0x2C, 0x00, 0x38, 0x2C, 0x00, 0x38, 0x2C, 0x00, 0x38, 0x3C, 0x00, - 0x3C, 0x78, 0x00, 0x2D, 0xB4, 0x00, 0x1E, 0xE0, 0x96, 0x0B, 0x40, 0xFF, 0x07, 0x00, 0x44, 0x2F, - 0x02, 0x00, 0x80, 0x38, 0x09, 0x00, 0x06, 0x00, 0xAC, 0x50, 0x15, 0x00, 0xF4, 0xFF, 0x02, 0xB4, - 0x95, 0x0F, 0xB4, 0x00, 0x2D, 0xB4, 0x00, 0x2C, 0xB4, 0x00, 0x2C, 0xB4, 0x00, 0x1E, 0xB4, 0x95, - 0x0B, 0xF4, 0xFF, 0x02, 0xB4, 0xE5, 0x01, 0xB4, 0xC0, 0x03, 0xB4, 0x40, 0x07, 0xB4, 0x00, 0x0F, - 0xB4, 0x00, 0x1E, 0xB4, 0x00, 0x3C, 0x0F, 0x00, 0x07, 0x00, 0x8E, 0x54, 0x00, 0x80, 0xFF, 0x07, - 0xE0, 0x46, 0x1F, 0xB4, 0x00, 0x2D, 0x74, 0x00, 0x2C, 0xB4, 0x02, 0x00, 0x8B, 0xE0, 0x07, 0x00, - 0x80, 0xBF, 0x01, 0x00, 0xF4, 0x0B, 0x00, 0x40, 0x1F, 0x02, 0x00, 0x8E, 0x3C, 0x38, 0x00, 0x3C, - 0xB4, 0x00, 0x3D, 0xE0, 0x96, 0x1F, 0x40, 0xFF, 0x06, 0x00, 0x10, 0x0D, 0x00, 0x06, 0x00, 0x8A, - 0x54, 0x55, 0x15, 0xFD, 0xFF, 0x7F, 0x54, 0x7D, 0x15, 0x00, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, - 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, - 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x02, - 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x3C, 0x10, 0x00, 0x06, 0x00, 0xAE, 0x10, 0x00, 0x04, 0x38, - 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, - 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2D, 0x78, 0x00, 0x2D, - 0xB4, 0x00, 0x1E, 0xE0, 0x96, 0x0B, 0x40, 0xFF, 0x01, 0x00, 0x14, 0x0D, 0x00, 0x06, 0x00, 0xA2, - 0x04, 0x00, 0x10, 0x3C, 0x00, 0x3C, 0x38, 0x00, 0x2D, 0x74, 0x00, 0x1D, 0xB0, 0x00, 0x0E, 0xE0, - 0x00, 0x0B, 0xE0, 0x41, 0x07, 0xD0, 0x82, 0x03, 0xC0, 0xC3, 0x02, 0x80, 0xD7, 0x01, 0x40, 0xE7, - 0x01, 0x00, 0xFB, 0x02, 0x00, 0x80, 0xBE, 0x02, 0x00, 0x80, 0x7D, 0x02, 0x00, 0x80, 0x3C, 0x10, - 0x00, 0x06, 0x00, 0x80, 0x04, 0x02, 0x10, 0x8A, 0x2D, 0x38, 0x74, 0x2C, 0x7C, 0x74, 0x2C, 0x7C, - 0x74, 0x28, 0xBD, 0x02, 0x38, 0x80, 0xAD, 0x02, 0x38, 0x99, 0xDA, 0x38, 0x34, 0xDB, 0x2C, 0x74, - 0xC7, 0x2D, 0xB4, 0xC7, 0x1E, 0xB0, 0x83, 0x1E, 0xF0, 0x83, 0x1F, 0xF0, 0x42, 0x0F, 0xE0, 0x42, - 0x0F, 0xE0, 0x01, 0x0F, 0x0F, 0x00, 0x06, 0x00, 0x93, 0x14, 0x00, 0x14, 0x78, 0x00, 0x3D, 0xF0, - 0x00, 0x1E, 0xD0, 0x42, 0x0B, 0xC0, 0xC3, 0x03, 0x40, 0xDB, 0x02, 0x00, 0xFE, 0x02, 0x00, 0x80, - 0x7C, 0x02, 0x00, 0x80, 0xBD, 0x02, 0x00, 0x90, 0xEF, 0x01, 0x40, 0xD7, 0x02, 0xC0, 0x83, 0x07, - 0xE0, 0x01, 0x0F, 0xB4, 0x00, 0x2E, 0x7C, 0x00, 0x3C, 0x0F, 0x00, 0x06, 0x00, 0x96, 0x04, 0x00, - 0x14, 0x3C, 0x00, 0x2D, 0x78, 0x00, 0x1E, 0xF0, 0x00, 0x0F, 0xE0, 0x81, 0x07, 0xC0, 0xC2, 0x03, - 0x80, 0xD7, 0x01, 0x00, 0xFB, 0x02, 0x00, 0x80, 0x7E, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, - 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, 0x2C, 0x02, 0x00, 0x80, - 0x2C, 0x10, 0x00, 0x06, 0x00, 0x93, 0x54, 0x55, 0x05, 0xF8, 0xFF, 0x1F, 0x54, 0x55, 0x0F, 0x00, - 0x80, 0x07, 0x00, 0xD0, 0x02, 0x00, 0xE0, 0x01, 0x00, 0xB4, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, - 0x8B, 0x1E, 0x00, 0x40, 0x0B, 0x00, 0xC0, 0x03, 0x00, 0xE0, 0x01, 0x00, 0xB4, 0x02, 0x00, 0x85, - 0xB8, 0xAA, 0x1A, 0xFC, 0xFF, 0x2F, 0x0F, 0x00, 0x81, 0x00, 0x55, 0x02, 0x00, 0x80, 0xFF, 0x02, - 0x00, 0x80, 0x5F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, - 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, - 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, - 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, - 0x00, 0x80, 0x5F, 0x02, 0x00, 0x80, 0xFF, 0x07, 0x00, 0x06, 0x00, 0x80, 0x40, 0x02, 0x00, 0x8A, - 0xD0, 0x01, 0x00, 0xC0, 0x02, 0x00, 0x80, 0x03, 0x00, 0x40, 0x07, 0x02, 0x00, 0x80, 0x0B, 0x02, - 0x00, 0x80, 0x0E, 0x02, 0x00, 0x80, 0x1D, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0x74, 0x02, - 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xE0, 0x02, 0x00, 0x87, 0xD0, 0x01, 0x00, 0xC0, 0x02, 0x00, - 0x40, 0x07, 0x02, 0x00, 0x80, 0x0B, 0x02, 0x00, 0x80, 0x05, 0x09, 0x00, 0x81, 0x00, 0x55, 0x02, - 0x00, 0x80, 0xBF, 0x02, 0x00, 0x80, 0xB5, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, - 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, - 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, - 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, - 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB5, 0x02, 0x00, 0x80, 0xBF, 0x07, 0x00, 0x0A, 0x00, 0x80, - 0x3C, 0x02, 0x00, 0x80, 0x7D, 0x02, 0x00, 0x80, 0xBE, 0x02, 0x00, 0x8D, 0xEB, 0x00, 0x80, 0xC3, - 0x02, 0xC0, 0x82, 0x03, 0xD0, 0x41, 0x07, 0x50, 0x00, 0x05, 0x21, 0x00, 0x33, 0x00, 0x85, 0xF4, - 0xFF, 0x1F, 0x54, 0x55, 0x15, 0x09, 0x00, 0x07, 0x00, 0x80, 0x15, 0x02, 0x00, 0x80, 0x3C, 0x02, - 0x00, 0x80, 0xB4, 0x34, 0x00, 0x12, 0x00, 0xA2, 0x40, 0xAA, 0x01, 0xD0, 0xEB, 0x07, 0xF0, 0x40, - 0x0F, 0x50, 0x00, 0x0E, 0x00, 0x55, 0x0E, 0xD0, 0xFF, 0x0F, 0xF0, 0x01, 0x0E, 0x74, 0x00, 0x0E, - 0x74, 0x00, 0x0F, 0xF0, 0xE6, 0x1F, 0xD0, 0xBF, 0x1E, 0x00, 0x04, 0x0D, 0x00, 0x06, 0x00, 0x80, - 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0xA2, - 0xB4, 0xA9, 0x01, 0xF4, 0xEF, 0x07, 0xF4, 0x41, 0x0F, 0xB4, 0x00, 0x1E, 0xB4, 0x00, 0x2D, 0xB4, - 0x00, 0x2D, 0xB4, 0x00, 0x2D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1E, 0xF4, 0x96, 0x0B, 0x74, 0xFE, - 0x02, 0x00, 0x10, 0x0D, 0x00, 0x13, 0x00, 0x8B, 0xA9, 0x01, 0xD0, 0xEB, 0x07, 0xF0, 0x01, 0x0F, - 0xB4, 0x00, 0x1D, 0x78, 0x02, 0x00, 0x80, 0x78, 0x02, 0x00, 0x80, 0x78, 0x02, 0x00, 0x8D, 0x74, - 0x00, 0x04, 0xF0, 0x00, 0x1D, 0xD0, 0x96, 0x0B, 0x40, 0xFF, 0x02, 0x00, 0x10, 0x0D, 0x00, 0x08, - 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0xA3, 0x1E, 0x40, - 0x6A, 0x1E, 0xD0, 0xEF, 0x1F, 0xF0, 0x41, 0x1F, 0xB4, 0x00, 0x1E, 0x78, 0x00, 0x1E, 0x78, 0x00, - 0x1E, 0x78, 0x00, 0x1E, 0x74, 0x00, 0x1E, 0xF0, 0x00, 0x1E, 0xE0, 0x96, 0x1F, 0x80, 0xBF, 0x1E, - 0x00, 0x04, 0x0D, 0x00, 0x13, 0x00, 0x94, 0xA9, 0x01, 0xC0, 0xEB, 0x07, 0xE0, 0x01, 0x0F, 0xB4, - 0x00, 0x1D, 0x78, 0x55, 0x2D, 0xF8, 0xFF, 0x2F, 0x78, 0x55, 0x05, 0x78, 0x02, 0x00, 0x8A, 0xF0, - 0x00, 0x04, 0xD0, 0x57, 0x1F, 0x40, 0xFF, 0x06, 0x00, 0x10, 0x0D, 0x00, 0x04, 0x00, 0x89, 0x40, - 0x15, 0x00, 0xF4, 0x3F, 0x00, 0x7C, 0x10, 0x00, 0x1D, 0x02, 0x00, 0x89, 0x1E, 0x00, 0xA4, 0xAE, - 0x0A, 0xA4, 0xBF, 0x1A, 0x00, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, - 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, - 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x10, 0x00, 0x12, 0x00, 0xAC, 0x40, 0x6A, 0x09, 0xD0, 0xEF, - 0x1E, 0xF0, 0x41, 0x1F, 0xB4, 0x00, 0x1E, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x1E, - 0x74, 0x00, 0x1E, 0xF0, 0x00, 0x1E, 0xE0, 0x96, 0x1F, 0x80, 0xBF, 0x1E, 0x00, 0x04, 0x1E, 0x10, - 0x00, 0x0F, 0xF0, 0xD6, 0x07, 0x80, 0xFF, 0x01, 0x03, 0x00, 0x06, 0x00, 0x80, 0xB4, 0x02, 0x00, - 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0xA0, 0xB4, 0xA8, 0x01, - 0xB4, 0xEF, 0x0B, 0xF4, 0x01, 0x0F, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, - 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0x0F, 0x00, - 0x07, 0x00, 0x80, 0x10, 0x02, 0x00, 0x80, 0x78, 0x02, 0x00, 0x80, 0x64, 0x04, 0x00, 0x84, 0xA0, - 0x6A, 0x00, 0xF0, 0x7F, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, - 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x87, 0x74, - 0x00, 0xA0, 0xBA, 0x1A, 0xF0, 0xFF, 0x2F, 0x0F, 0x00, 0x07, 0x00, 0x80, 0x40, 0x02, 0x00, 0x83, - 0xE0, 0x01, 0x00, 0x90, 0x04, 0x00, 0xAF, 0x80, 0xAA, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0xE0, 0x01, - 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x01, 0x00, - 0xE0, 0x01, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x01, 0x00, 0xE0, 0x00, 0x50, 0xB9, - 0x00, 0xF0, 0x2F, 0x00, 0x40, 0x01, 0x00, 0x06, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, - 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0xA0, 0xB4, 0x00, 0x0A, 0xB4, 0x80, 0x07, - 0xB4, 0xE0, 0x01, 0xB4, 0x78, 0x00, 0xB4, 0x1E, 0x00, 0xF4, 0x2F, 0x00, 0xF4, 0x79, 0x00, 0xB4, - 0xF0, 0x01, 0xB4, 0xD0, 0x03, 0xB4, 0x40, 0x0B, 0xB4, 0x00, 0x2E, 0x0F, 0x00, 0x06, 0x00, 0x84, - 0xF0, 0x7F, 0x00, 0xA0, 0x7A, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, - 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, - 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x80, 0x74, 0x02, 0x00, 0x87, - 0x74, 0x00, 0xA0, 0xBA, 0x1A, 0xF0, 0xFF, 0x2F, 0x0F, 0x00, 0x12, 0x00, 0xA0, 0x58, 0x4A, 0x0A, - 0xFC, 0xFF, 0x2E, 0x2C, 0x3C, 0x38, 0x2C, 0x3C, 0x38, 0x2C, 0x3C, 0x38, 0x2C, 0x3C, 0x38, 0x2C, - 0x3C, 0x38, 0x2C, 0x3C, 0x38, 0x2C, 0x3C, 0x38, 0x2C, 0x3C, 0x38, 0x2C, 0x3C, 0x38, 0x0F, 0x00, - 0x12, 0x00, 0xA0, 0x64, 0xA8, 0x01, 0xB4, 0xEF, 0x0B, 0xF4, 0x01, 0x0F, 0xB4, 0x00, 0x1D, 0xB4, - 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, - 0x1D, 0xB4, 0x00, 0x1D, 0x0F, 0x00, 0x13, 0x00, 0xA1, 0xAA, 0x00, 0xD0, 0xEB, 0x07, 0xF0, 0x41, - 0x0F, 0x74, 0x00, 0x1D, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x38, 0x00, 0x2C, 0x78, 0x00, 0x2D, - 0xB4, 0x00, 0x1E, 0xE0, 0x96, 0x0B, 0x80, 0xFF, 0x02, 0x00, 0x14, 0x0D, 0x00, 0x12, 0x00, 0xA4, - 0x64, 0xA9, 0x01, 0xB4, 0xFB, 0x07, 0xF4, 0x41, 0x0F, 0xB4, 0x00, 0x1E, 0xB4, 0x00, 0x2D, 0xB4, - 0x00, 0x2D, 0xB4, 0x00, 0x2D, 0xB4, 0x00, 0x1D, 0xB4, 0x00, 0x0F, 0xF4, 0x96, 0x0B, 0xB4, 0xFE, - 0x02, 0xB4, 0x10, 0x00, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x80, 0xB4, 0x05, 0x00, 0x12, - 0x00, 0xA3, 0x40, 0x6A, 0x09, 0xD0, 0xEB, 0x1F, 0xF0, 0x01, 0x1F, 0xB4, 0x00, 0x1E, 0x78, 0x00, - 0x1E, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x1E, 0x74, 0x00, 0x1E, 0xF0, 0x00, 0x1E, 0xE0, 0x96, 0x1F, - 0x80, 0xBF, 0x1E, 0x00, 0x04, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, 0x80, 0x1E, 0x02, 0x00, - 0x80, 0x1E, 0x03, 0x00, 0x12, 0x00, 0x9F, 0x40, 0x92, 0x1A, 0x80, 0xF7, 0x1F, 0x80, 0x1F, 0x00, - 0x80, 0x07, 0x00, 0x80, 0x03, 0x00, 0x80, 0x03, 0x00, 0x80, 0x03, 0x00, 0x80, 0x03, 0x00, 0x80, - 0x03, 0x00, 0x80, 0x03, 0x00, 0x80, 0x03, 0x10, 0x00, 0x13, 0x00, 0xA1, 0xA9, 0x01, 0xD0, 0xEB, - 0x0B, 0xE0, 0x01, 0x1E, 0xF0, 0x00, 0x19, 0xE0, 0x06, 0x00, 0x80, 0xBF, 0x01, 0x00, 0xA4, 0x0F, - 0x10, 0x00, 0x1E, 0xB4, 0x00, 0x1D, 0xE0, 0x56, 0x0F, 0x80, 0xFF, 0x06, 0x00, 0x10, 0x0D, 0x00, - 0x0D, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x89, 0x0F, 0x00, 0xA4, 0xAF, 0x0A, 0xA8, 0xAF, 0x0A, 0x00, - 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, - 0x0F, 0x02, 0x00, 0x80, 0x0F, 0x02, 0x00, 0x80, 0x0E, 0x02, 0x00, 0x86, 0x6D, 0x09, 0x00, 0xF8, - 0x1F, 0x00, 0x40, 0x0D, 0x00, 0x12, 0x00, 0xA2, 0x60, 0x00, 0x19, 0xB4, 0x00, 0x1E, 0xB4, 0x00, - 0x1E, 0xB4, 0x00, 0x1E, 0xB4, 0x00, 0x1E, 0xB4, 0x00, 0x1E, 0xB4, 0x00, 0x1E, 0xB4, 0x00, 0x1E, - 0xF0, 0x00, 0x1E, 0xE0, 0x96, 0x1F, 0x80, 0xBF, 0x1D, 0x00, 0x04, 0x0D, 0x00, 0x12, 0x00, 0x96, - 0x28, 0x00, 0x18, 0x78, 0x00, 0x2D, 0xB4, 0x00, 0x0E, 0xE0, 0x00, 0x0B, 0xD0, 0x41, 0x07, 0xC0, - 0x82, 0x03, 0x80, 0xC3, 0x02, 0x00, 0xDB, 0x02, 0x00, 0x80, 0xBE, 0x02, 0x00, 0x80, 0x7D, 0x02, - 0x00, 0x80, 0x3C, 0x10, 0x00, 0x12, 0x00, 0xA0, 0x09, 0x14, 0x60, 0x1D, 0x38, 0x70, 0x1C, 0x3C, - 0x74, 0x2C, 0x7D, 0x38, 0x28, 0xAA, 0x28, 0x34, 0xDA, 0x2C, 0x74, 0xD7, 0x1D, 0xB0, 0xC3, 0x0E, - 0xE0, 0x82, 0x0F, 0xE0, 0x42, 0x0B, 0xD0, 0x41, 0x07, 0x0F, 0x00, 0x12, 0x00, 0x8D, 0x64, 0x00, - 0x19, 0xF0, 0x00, 0x1F, 0xD0, 0x82, 0x07, 0x80, 0xD7, 0x02, 0x00, 0xFE, 0x02, 0x00, 0x80, 0x7C, - 0x02, 0x00, 0x8D, 0xBE, 0x00, 0x40, 0xEB, 0x01, 0xC0, 0x83, 0x07, 0xE0, 0x01, 0x0F, 0xB8, 0x00, - 0x2D, 0x0F, 0x00, 0x12, 0x00, 0x99, 0x18, 0x00, 0x24, 0x3C, 0x00, 0x2C, 0xB4, 0x00, 0x1E, 0xF0, - 0x00, 0x0F, 0xD0, 0x41, 0x0B, 0xC0, 0x83, 0x03, 0x80, 0xC7, 0x02, 0x00, 0xEB, 0x01, 0x00, 0xBE, - 0x02, 0x00, 0x80, 0x7D, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x1D, 0x02, 0x00, 0x88, 0x0F, - 0x00, 0x90, 0x07, 0x00, 0xF4, 0x02, 0x00, 0x10, 0x02, 0x00, 0x12, 0x00, 0x8D, 0xA4, 0xAA, 0x0A, - 0xF4, 0xFF, 0x1F, 0x00, 0x80, 0x0B, 0x00, 0xD0, 0x02, 0x00, 0xF4, 0x02, 0x00, 0x80, 0x7C, 0x02, - 0x00, 0x8D, 0x1E, 0x00, 0x80, 0x0B, 0x00, 0xD0, 0x02, 0x00, 0xF4, 0x56, 0x15, 0xF4, 0xFF, 0x2F, - 0x0F, 0x00, 0x05, 0x00, 0x85, 0x05, 0x00, 0xC0, 0x07, 0x00, 0xE0, 0x02, 0x00, 0x80, 0xB0, 0x02, - 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB4, 0x02, - 0x00, 0x86, 0x78, 0x00, 0x80, 0x1F, 0x00, 0x80, 0x1F, 0x02, 0x00, 0x80, 0x78, 0x02, 0x00, 0x80, - 0xB4, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, 0xB0, 0x02, 0x00, 0x80, - 0xF0, 0x02, 0x00, 0x84, 0xE0, 0x01, 0x00, 0x80, 0x07, 0x02, 0x00, 0x80, 0x05, 0x03, 0x00, 0x0A, - 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, - 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, - 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, - 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x02, - 0x00, 0x80, 0x28, 0x02, 0x00, 0x80, 0x28, 0x04, 0x00, 0x03, 0x00, 0x84, 0x40, 0x01, 0x00, 0x40, - 0x0B, 0x02, 0x00, 0x80, 0x2D, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, - 0x38, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0xB4, 0x02, 0x00, 0x86, - 0xD0, 0x0B, 0x00, 0xD0, 0x0B, 0x00, 0xB4, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0x38, 0x02, - 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0x38, 0x02, 0x00, 0x80, 0x3C, 0x02, 0x00, 0x86, 0x1D, 0x00, - 0x40, 0x0B, 0x00, 0x40, 0x01, 0x04, 0x00, 0x1B, 0x00, 0x8B, 0xA0, 0x06, 0x10, 0xBC, 0x1F, 0x70, - 0x0D, 0xB8, 0x3E, 0x05, 0xD0, 0x1F, 0x1B, 0x00, +const uint8_t font_robotomono20[2396] = { + 0x00, 0xFF, 0x14, 0x00, 0x00, 0x51, 0x46, 0x46, 0x01, 0x5C, 0x09, 0x00, 0x00, 0xA3, 0xF6, 0xFF, + 0xFF, 0x16, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFE, 0x1D, 0x01, 0x00, 0x05, 0x00, + 0x00, 0x85, 0x00, 0x00, 0x06, 0x04, 0x00, 0x4D, 0x06, 0x00, 0x0B, 0x0D, 0x00, 0x4F, 0x14, 0x00, + 0x4D, 0x1C, 0x00, 0x43, 0x23, 0x00, 0xC7, 0x24, 0x00, 0x07, 0x2A, 0x00, 0x89, 0x2F, 0x00, 0x4B, + 0x33, 0x00, 0x04, 0x38, 0x00, 0xC6, 0x39, 0x00, 0x85, 0x3B, 0x00, 0x48, 0x3D, 0x00, 0xCB, 0x42, + 0x00, 0xCB, 0x48, 0x00, 0xCB, 0x4E, 0x00, 0x0B, 0x55, 0x00, 0x0B, 0x5B, 0x00, 0x0B, 0x61, 0x00, + 0x0B, 0x67, 0x00, 0x0B, 0x6D, 0x00, 0x0B, 0x73, 0x00, 0x0B, 0x79, 0x00, 0x05, 0x7F, 0x00, 0xC4, + 0x81, 0x00, 0x8A, 0x84, 0x00, 0xCB, 0x88, 0x00, 0x4A, 0x8C, 0x00, 0x49, 0x90, 0x00, 0xD2, 0x95, + 0x00, 0x0D, 0xA1, 0x00, 0x0C, 0xA8, 0x00, 0xCD, 0xAE, 0x00, 0x0D, 0xB6, 0x00, 0xCB, 0xBC, 0x00, + 0x0B, 0xC3, 0x00, 0x0E, 0xC9, 0x00, 0x8E, 0xD0, 0x00, 0x05, 0xD8, 0x00, 0x8B, 0xDB, 0x00, 0x4D, + 0xE1, 0x00, 0x8B, 0xE8, 0x00, 0xD1, 0xEE, 0x00, 0x8E, 0xF7, 0x00, 0x0E, 0xFF, 0x00, 0xCD, 0x06, + 0x01, 0x8E, 0x0D, 0x01, 0xCC, 0x15, 0x01, 0x8C, 0x1C, 0x01, 0x0C, 0x23, 0x01, 0x8D, 0x29, 0x01, + 0x8D, 0x30, 0x01, 0x92, 0x37, 0x01, 0xCD, 0x40, 0x01, 0xCC, 0x47, 0x01, 0x4C, 0x4E, 0x01, 0x06, + 0x55, 0x01, 0x89, 0x59, 0x01, 0x45, 0x5F, 0x01, 0x08, 0x63, 0x01, 0x09, 0x66, 0x01, 0xC6, 0x67, + 0x01, 0x8B, 0x69, 0x01, 0xCB, 0x6E, 0x01, 0x4A, 0x75, 0x01, 0x0B, 0x7A, 0x01, 0x8B, 0x80, 0x01, + 0x87, 0x85, 0x01, 0x0B, 0x8A, 0x01, 0x8B, 0x90, 0x01, 0x45, 0x97, 0x01, 0xC5, 0x9A, 0x01, 0x8B, + 0x9E, 0x01, 0x45, 0xA5, 0x01, 0xD2, 0xA8, 0x01, 0x4B, 0xB0, 0x01, 0x8B, 0xB5, 0x01, 0x8B, 0xBA, + 0x01, 0xCB, 0xC0, 0x01, 0x47, 0xC7, 0x01, 0x0A, 0xCB, 0x01, 0xC7, 0xCF, 0x01, 0x4B, 0xD4, 0x01, + 0x8A, 0xD9, 0x01, 0x4F, 0xDE, 0x01, 0x0A, 0xE5, 0x01, 0x0A, 0xEA, 0x01, 0x0A, 0xF0, 0x01, 0x07, + 0xF5, 0x01, 0xC5, 0xFA, 0x01, 0x87, 0xFE, 0x01, 0x0E, 0x04, 0x02, 0x04, 0xFB, 0x1C, 0x08, 0x00, + 0x0E, 0x00, 0x02, 0x00, 0x88, 0xC6, 0x08, 0x21, 0x84, 0x10, 0x42, 0x00, 0x60, 0x04, 0x03, 0x00, + 0x85, 0x00, 0x60, 0x59, 0x96, 0x25, 0x01, 0x0B, 0x00, 0x05, 0x00, 0x95, 0x30, 0x03, 0x22, 0x40, + 0x04, 0xFF, 0x83, 0x19, 0x30, 0x03, 0x22, 0x40, 0x04, 0xFF, 0x83, 0x19, 0x30, 0x03, 0x66, 0x40, + 0x04, 0x88, 0x09, 0x00, 0x02, 0x00, 0x97, 0x03, 0x18, 0xE0, 0xC1, 0x1F, 0x86, 0x11, 0x8C, 0x41, + 0x1C, 0xC0, 0x03, 0x78, 0x00, 0x07, 0x30, 0x83, 0x19, 0x8C, 0x3F, 0xF8, 0x00, 0x01, 0x08, 0x05, + 0x00, 0x05, 0x00, 0x9A, 0x80, 0x03, 0x60, 0x02, 0x10, 0x23, 0x88, 0x19, 0xC4, 0x04, 0x26, 0x01, + 0xDE, 0x00, 0xA0, 0x03, 0x68, 0x02, 0x16, 0x03, 0x89, 0x41, 0xC4, 0x20, 0x26, 0x00, 0x0E, 0x0A, + 0x00, 0x05, 0x00, 0x96, 0x78, 0x80, 0x1F, 0x18, 0x03, 0x63, 0x60, 0x0C, 0xF8, 0x00, 0x07, 0xF0, + 0x01, 0x67, 0x62, 0x5C, 0x0C, 0x8F, 0xC1, 0xE1, 0x3F, 0xF8, 0x0C, 0x08, 0x00, 0x82, 0x80, 0x24, + 0x09, 0x06, 0x00, 0x93, 0x00, 0x10, 0x0C, 0x82, 0x41, 0x30, 0x18, 0x04, 0x83, 0xC1, 0x60, 0x30, + 0x10, 0x18, 0x0C, 0x04, 0x06, 0x02, 0x03, 0x01, 0x80, 0x00, 0x02, 0x80, 0x8E, 0xC0, 0x40, 0x60, + 0x30, 0x18, 0x08, 0x04, 0x06, 0x81, 0x60, 0x30, 0x18, 0x04, 0x83, 0x20, 0x02, 0x00, 0x03, 0x00, + 0x89, 0x80, 0x00, 0x41, 0x92, 0x3F, 0x1C, 0x3C, 0xC8, 0x10, 0x01, 0x0C, 0x00, 0x07, 0x00, 0x8D, + 0x30, 0x80, 0x01, 0x0C, 0x60, 0xF0, 0xBF, 0xFF, 0xC0, 0x00, 0x06, 0x30, 0x80, 0x01, 0x0A, 0x00, + 0x07, 0x00, 0x83, 0x60, 0x66, 0x22, 0x00, 0x07, 0x00, 0x81, 0xF0, 0x01, 0x08, 0x00, 0x09, 0x00, + 0x81, 0x60, 0x04, 0x03, 0x00, 0x03, 0x00, 0x02, 0x40, 0x82, 0x60, 0x20, 0x30, 0x02, 0x10, 0x81, + 0x18, 0x08, 0x02, 0x0C, 0x83, 0x04, 0x06, 0x02, 0x03, 0x04, 0x00, 0x04, 0x00, 0x92, 0xF0, 0xC1, + 0x1F, 0x86, 0x19, 0xCC, 0x60, 0x06, 0x33, 0x98, 0xC1, 0x0C, 0x66, 0x30, 0x83, 0x31, 0x8C, 0x3F, + 0xF8, 0x08, 0x00, 0x04, 0x00, 0x02, 0x80, 0x90, 0x07, 0x3E, 0x80, 0x01, 0x0C, 0x60, 0x00, 0x03, + 0x18, 0xC0, 0x00, 0x06, 0x30, 0x80, 0x01, 0x0C, 0x60, 0x08, 0x00, 0x04, 0x00, 0x93, 0xF0, 0xC1, + 0x1F, 0x83, 0x19, 0x0C, 0x60, 0x00, 0x01, 0x0C, 0x30, 0xC0, 0x00, 0x03, 0x0C, 0x30, 0xC0, 0x01, + 0xFE, 0x07, 0x07, 0x00, 0x04, 0x00, 0x92, 0xF0, 0xC1, 0x1F, 0x83, 0x19, 0x0C, 0x60, 0x80, 0x81, + 0x07, 0x78, 0x00, 0x06, 0x30, 0x83, 0x19, 0x8C, 0x3F, 0xF8, 0x08, 0x00, 0x05, 0x00, 0x92, 0x03, + 0x1C, 0xF0, 0x80, 0x06, 0x36, 0x98, 0x61, 0x0C, 0x63, 0x0C, 0xE3, 0x7F, 0xC0, 0x00, 0x06, 0x30, + 0x80, 0x01, 0x07, 0x00, 0x04, 0x00, 0x92, 0xF0, 0x87, 0x3F, 0x06, 0x30, 0x80, 0x01, 0xFC, 0xE0, + 0x0F, 0xC0, 0x00, 0x06, 0x20, 0x82, 0x31, 0x8C, 0x3F, 0xF0, 0x08, 0x00, 0x04, 0x00, 0x92, 0xC0, + 0x01, 0x0F, 0x0C, 0x30, 0x80, 0x01, 0xF4, 0xF0, 0x8F, 0xC3, 0x0C, 0x66, 0x30, 0x82, 0x31, 0x0C, + 0x3F, 0xF0, 0x08, 0x00, 0x04, 0x00, 0x92, 0xFC, 0x07, 0x30, 0x80, 0x01, 0x04, 0x30, 0x80, 0x00, + 0x06, 0x10, 0xC0, 0x00, 0x06, 0x18, 0xC0, 0x00, 0x03, 0x18, 0x08, 0x00, 0x04, 0x00, 0x92, 0xF0, + 0xC1, 0x1F, 0x86, 0x19, 0x8C, 0x60, 0x8C, 0xC1, 0x07, 0x7F, 0x08, 0x66, 0x30, 0x83, 0x19, 0x8C, + 0x3F, 0xF8, 0x08, 0x00, 0x04, 0x00, 0x92, 0xF0, 0xC0, 0x1F, 0xC3, 0x18, 0xCC, 0x60, 0x06, 0x33, + 0x18, 0xFF, 0xF0, 0x06, 0x30, 0xC0, 0x00, 0x07, 0x1F, 0x38, 0x08, 0x00, 0x04, 0x00, 0x80, 0x31, + 0x04, 0x00, 0x81, 0x30, 0x04, 0x03, 0x00, 0x03, 0x00, 0x80, 0x66, 0x03, 0x00, 0x83, 0x60, 0x66, + 0x26, 0x00, 0x08, 0x00, 0x81, 0x10, 0x70, 0x02, 0x78, 0x86, 0x60, 0x80, 0x07, 0x78, 0x00, 0x07, + 0x10, 0x09, 0x00, 0x0B, 0x00, 0x82, 0xFE, 0xE3, 0x0F, 0x02, 0x00, 0x82, 0xE0, 0x3F, 0xFE, 0x0C, + 0x00, 0x07, 0x00, 0x86, 0x20, 0x80, 0x07, 0x78, 0x80, 0x07, 0x38, 0x03, 0x78, 0x80, 0x20, 0x0A, + 0x00, 0x03, 0x00, 0x85, 0xC0, 0xE3, 0xCF, 0xB0, 0x60, 0x40, 0x03, 0xC0, 0x80, 0x80, 0x02, 0x01, + 0x02, 0x00, 0x81, 0x08, 0x10, 0x06, 0x00, 0x07, 0x00, 0xA7, 0xE0, 0x03, 0xE0, 0x38, 0xC0, 0x80, + 0x81, 0x01, 0x0C, 0xC3, 0x23, 0x84, 0x89, 0x11, 0x23, 0x64, 0x84, 0x90, 0x11, 0x42, 0x66, 0x08, + 0x99, 0x31, 0x66, 0xC6, 0x08, 0xB1, 0x33, 0x84, 0x79, 0x30, 0x00, 0x80, 0x01, 0x00, 0x1C, 0x02, + 0xC0, 0x0F, 0x03, 0x00, 0x05, 0x00, 0x96, 0x60, 0x00, 0x0E, 0xC0, 0x01, 0x6C, 0x80, 0x0D, 0x10, + 0x01, 0x63, 0x60, 0x0C, 0x06, 0xC3, 0x7F, 0xF8, 0x8F, 0x01, 0x33, 0x60, 0x03, 0x18, 0x08, 0x00, + 0x04, 0x00, 0x95, 0xC0, 0x1F, 0xFC, 0xC3, 0x60, 0x0C, 0xC6, 0x60, 0x0C, 0xC3, 0x1F, 0xFC, 0xC3, + 0x60, 0x0C, 0xC6, 0x60, 0x0C, 0xC6, 0x3F, 0xFC, 0x01, 0x07, 0x00, 0x05, 0x00, 0x8F, 0xF0, 0x80, + 0x7F, 0x18, 0x0C, 0x03, 0x33, 0x60, 0x06, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x60, 0xC0, 0x02, 0x18, + 0x84, 0x83, 0xC1, 0x3F, 0xF0, 0x01, 0x08, 0x00, 0x05, 0x00, 0x95, 0x7E, 0xC0, 0x3F, 0x18, 0x0E, + 0x83, 0x61, 0x60, 0x0C, 0x8C, 0x81, 0x31, 0x30, 0x06, 0xC6, 0xC0, 0x18, 0x0C, 0xC3, 0xE1, 0x1F, + 0xFC, 0x09, 0x00, 0x04, 0x00, 0x93, 0xF8, 0xCF, 0x3F, 0x06, 0x30, 0x80, 0x01, 0x0C, 0xE0, 0x1F, + 0x7F, 0x18, 0xC0, 0x00, 0x06, 0x30, 0x80, 0x7F, 0xFC, 0x07, 0x07, 0x00, 0x04, 0x00, 0x92, 0xF8, + 0xC7, 0x3F, 0x06, 0x30, 0x80, 0x01, 0x0C, 0xE0, 0x1F, 0x7F, 0x18, 0xC0, 0x00, 0x06, 0x30, 0x80, + 0x01, 0x0C, 0x08, 0x00, 0x05, 0x00, 0x98, 0xC0, 0x07, 0xF8, 0x07, 0x83, 0xC3, 0xC0, 0x18, 0x00, + 0x06, 0x80, 0xE1, 0x63, 0xF8, 0x18, 0x30, 0x06, 0x0C, 0x03, 0xC3, 0xC1, 0xE0, 0x1F, 0xE0, 0x03, + 0x09, 0x00, 0x05, 0x00, 0x98, 0x30, 0x60, 0x0C, 0x18, 0x03, 0xC6, 0x80, 0x31, 0x60, 0x0C, 0x18, + 0xFF, 0xC7, 0xFF, 0x31, 0x60, 0x0C, 0x18, 0x03, 0xC6, 0x80, 0x31, 0x60, 0x0C, 0x18, 0x09, 0x00, + 0x02, 0x00, 0x88, 0xC6, 0x18, 0x63, 0x8C, 0x31, 0xC6, 0x18, 0x63, 0x0C, 0x03, 0x00, 0x05, 0x00, + 0x91, 0x06, 0x30, 0x80, 0x01, 0x0C, 0x60, 0x00, 0x03, 0x18, 0xC0, 0x00, 0x06, 0x10, 0xC1, 0x18, + 0xC6, 0x3F, 0x78, 0x08, 0x00, 0x05, 0x00, 0x8E, 0x06, 0xC7, 0x60, 0x18, 0x06, 0x63, 0x60, 0x06, + 0x6C, 0x80, 0x0F, 0xF0, 0x03, 0x66, 0xC0, 0x02, 0x18, 0x83, 0x06, 0xC3, 0x61, 0x30, 0x02, 0x0C, + 0x08, 0x00, 0x04, 0x00, 0x93, 0x18, 0xC0, 0x00, 0x06, 0x30, 0x80, 0x01, 0x0C, 0x60, 0x00, 0x03, + 0x18, 0xC0, 0x00, 0x06, 0x30, 0x80, 0x7F, 0xFC, 0x03, 0x07, 0x00, 0x06, 0x00, 0x9D, 0x60, 0x00, + 0xC7, 0x01, 0x8E, 0x03, 0x1E, 0x0F, 0x3C, 0x1A, 0x68, 0x34, 0xD8, 0xC8, 0xB0, 0x91, 0x31, 0x63, + 0x66, 0xC6, 0x6C, 0x8C, 0xD1, 0x18, 0xE3, 0x30, 0xC6, 0x61, 0x0C, 0xC3, 0x0B, 0x00, 0x05, 0x00, + 0x98, 0x30, 0x60, 0x1C, 0x18, 0x07, 0xC6, 0x83, 0xF1, 0x61, 0x6C, 0x18, 0x33, 0xC6, 0x9C, 0x31, + 0x66, 0x0C, 0x1B, 0xC3, 0xC7, 0xE0, 0x31, 0x70, 0x0C, 0x1C, 0x09, 0x00, 0x05, 0x00, 0x93, 0x80, + 0x07, 0xF8, 0x07, 0x83, 0xC3, 0xC0, 0x18, 0x30, 0x06, 0x88, 0x01, 0x66, 0x80, 0x19, 0x20, 0x06, + 0x0C, 0x03, 0xC3, 0x02, 0xE0, 0x82, 0x1F, 0xE0, 0x01, 0x09, 0x00, 0x05, 0x00, 0x95, 0xFE, 0xC0, + 0x7F, 0x18, 0x0C, 0x03, 0x63, 0x60, 0x0C, 0x8C, 0xC1, 0xF0, 0x0F, 0x3E, 0xC0, 0x00, 0x18, 0x00, + 0x03, 0x60, 0x00, 0x0C, 0x09, 0x00, 0x05, 0x00, 0x9B, 0xC0, 0x07, 0xF8, 0x07, 0x83, 0xC1, 0xC0, + 0x18, 0x30, 0x06, 0x88, 0x01, 0x62, 0x80, 0x19, 0x20, 0x06, 0x0C, 0x03, 0xC3, 0x60, 0xE0, 0x1F, + 0xF0, 0x07, 0x80, 0x03, 0xC0, 0x06, 0x00, 0x04, 0x00, 0x93, 0xC0, 0x1F, 0xFC, 0xC3, 0x60, 0x0C, + 0xC6, 0x60, 0x0C, 0xC6, 0x70, 0xFC, 0xC3, 0x1F, 0x8C, 0xC1, 0x30, 0x0C, 0xC6, 0x60, 0x02, 0x0C, + 0x07, 0x00, 0x05, 0x00, 0x94, 0x0F, 0xFC, 0xE3, 0x70, 0x06, 0x66, 0x00, 0x1C, 0x80, 0x0F, 0xE0, + 0x03, 0x70, 0x00, 0x66, 0x60, 0x06, 0xC6, 0x3F, 0xF0, 0x01, 0x07, 0x00, 0x04, 0x00, 0x94, 0xF0, + 0x7F, 0xFE, 0x07, 0x06, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, + 0x60, 0x00, 0x06, 0x60, 0x08, 0x00, 0x05, 0x00, 0x96, 0x03, 0x66, 0xC0, 0x0C, 0x98, 0x01, 0x33, + 0x60, 0x06, 0xCC, 0x80, 0x19, 0x30, 0x03, 0x66, 0xC0, 0x08, 0x18, 0x83, 0xC1, 0x1F, 0xF0, 0x01, + 0x08, 0x00, 0x04, 0x00, 0x96, 0x80, 0x01, 0x66, 0xC0, 0x0C, 0x18, 0x83, 0x61, 0x30, 0x0C, 0x03, + 0x63, 0x60, 0x0C, 0xCC, 0x00, 0x1B, 0x60, 0x03, 0x38, 0x00, 0x07, 0x60, 0x09, 0x00, 0x06, 0x00, + 0x9B, 0x80, 0xC1, 0x60, 0x06, 0x83, 0x19, 0x0E, 0x66, 0x78, 0x08, 0xE3, 0x31, 0x8C, 0xC4, 0x30, + 0x33, 0xC3, 0xCC, 0x04, 0x12, 0x1A, 0x78, 0x68, 0xE0, 0xE1, 0x81, 0x83, 0x03, 0x02, 0x0C, 0x02, + 0x30, 0x0C, 0x00, 0x05, 0x00, 0x96, 0x03, 0xC7, 0x60, 0x18, 0x06, 0xC6, 0x80, 0x0D, 0xF0, 0x00, + 0x1C, 0x80, 0x03, 0x78, 0x80, 0x1B, 0x30, 0x06, 0xC3, 0x60, 0x30, 0x06, 0x0E, 0x08, 0x00, 0x04, + 0x00, 0x94, 0x70, 0xE0, 0x06, 0xC6, 0x30, 0x0C, 0x83, 0x19, 0x98, 0x01, 0x0F, 0xF0, 0x00, 0x06, + 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x60, 0x08, 0x00, 0x04, 0x00, 0x95, 0xE0, 0x7F, 0xFE, 0x07, + 0x30, 0x80, 0x01, 0x18, 0xC0, 0x00, 0x06, 0x70, 0x00, 0x03, 0x18, 0xC0, 0x00, 0x0C, 0xE0, 0x7F, + 0xFE, 0x07, 0x07, 0x00, 0x8E, 0x80, 0xE7, 0x18, 0x86, 0x61, 0x18, 0x86, 0x61, 0x18, 0x86, 0x61, + 0x18, 0x86, 0xE1, 0x78, 0x02, 0x00, 0x03, 0x00, 0x91, 0x10, 0x60, 0xC0, 0x00, 0x01, 0x06, 0x08, + 0x30, 0x60, 0x80, 0x00, 0x03, 0x04, 0x18, 0x30, 0x40, 0x80, 0x01, 0x04, 0x00, 0x8D, 0xE0, 0x39, + 0xC6, 0x18, 0x63, 0x8C, 0x31, 0xC6, 0x18, 0x63, 0x8C, 0xB9, 0x07, 0x00, 0x03, 0x00, 0x02, 0x18, + 0x84, 0x38, 0x2C, 0x64, 0x66, 0x46, 0x0C, 0x00, 0x13, 0x00, 0x81, 0xFE, 0x03, 0x04, 0x00, 0x83, + 0x00, 0x60, 0x30, 0x08, 0x0D, 0x00, 0x08, 0x00, 0x8F, 0xE0, 0x83, 0x3B, 0x86, 0x01, 0x08, 0x7E, + 0x38, 0x63, 0x10, 0x83, 0x18, 0x86, 0x3F, 0x78, 0x03, 0x07, 0x00, 0x02, 0x00, 0x94, 0x80, 0x01, + 0x0C, 0x60, 0x00, 0x03, 0xD8, 0xC3, 0x3F, 0x0E, 0x33, 0x98, 0xC1, 0x0C, 0x66, 0x30, 0x83, 0x39, + 0xCC, 0x3F, 0xF6, 0x08, 0x00, 0x07, 0x00, 0x8D, 0x80, 0x0F, 0x7F, 0x0C, 0x1B, 0x6C, 0x80, 0x01, + 0x06, 0x18, 0xC4, 0x30, 0x7F, 0xF8, 0x07, 0x00, 0x03, 0x00, 0x94, 0xC0, 0x00, 0x06, 0x30, 0x80, + 0xE1, 0x8D, 0x7F, 0x0E, 0x33, 0x98, 0xC1, 0x0C, 0x66, 0x30, 0x83, 0x31, 0x8C, 0x7F, 0x78, 0x03, + 0x07, 0x00, 0x08, 0x00, 0x8E, 0xC0, 0x83, 0x3F, 0x04, 0x31, 0x98, 0xFF, 0x0C, 0x60, 0x00, 0x03, + 0x30, 0x84, 0x3F, 0xF0, 0x08, 0x00, 0x02, 0x00, 0x8C, 0x1C, 0xCF, 0x60, 0xF8, 0x18, 0x0C, 0x06, + 0x83, 0xC1, 0x60, 0x30, 0x18, 0x0C, 0x05, 0x00, 0x08, 0x00, 0x94, 0xE0, 0x8D, 0x7F, 0x0E, 0x33, + 0x98, 0xC1, 0x0C, 0x66, 0x30, 0x83, 0x31, 0x8C, 0x7F, 0x78, 0x03, 0x18, 0x61, 0xF8, 0x83, 0x0F, + 0x02, 0x00, 0x02, 0x00, 0x95, 0x80, 0x01, 0x0C, 0x60, 0x00, 0x03, 0xD8, 0xC3, 0x3F, 0x0E, 0x31, + 0x98, 0xC1, 0x0C, 0x66, 0x30, 0x83, 0x19, 0xCC, 0x60, 0x06, 0x03, 0x07, 0x00, 0x8A, 0x00, 0x10, + 0x02, 0x00, 0x21, 0x84, 0x10, 0x42, 0x08, 0x21, 0x04, 0x03, 0x00, 0x8D, 0x00, 0x30, 0x06, 0x00, + 0x63, 0x8C, 0x31, 0xC6, 0x18, 0x63, 0x8C, 0x31, 0x77, 0x00, 0x02, 0x00, 0x95, 0x80, 0x01, 0x0C, + 0x60, 0x00, 0x03, 0x18, 0xC6, 0x18, 0x66, 0xB0, 0x83, 0x0F, 0x7C, 0x60, 0x06, 0x63, 0x18, 0xC3, + 0x30, 0x06, 0x03, 0x07, 0x00, 0x8A, 0x00, 0x10, 0x42, 0x08, 0x21, 0x84, 0x10, 0x42, 0x08, 0x21, + 0x04, 0x03, 0x00, 0x0D, 0x00, 0x98, 0x60, 0x8F, 0x87, 0xFF, 0x3F, 0x8E, 0xC3, 0x18, 0x0C, 0x63, + 0x30, 0x8C, 0xC1, 0x30, 0x06, 0xC3, 0x18, 0x0C, 0x63, 0x30, 0x8C, 0xC1, 0x30, 0x06, 0xC3, 0x0C, + 0x00, 0x08, 0x00, 0x8F, 0xD8, 0xC3, 0x3F, 0x0E, 0x31, 0x98, 0xC1, 0x0C, 0x66, 0x30, 0x83, 0x19, + 0xCC, 0x60, 0x06, 0x03, 0x07, 0x00, 0x08, 0x00, 0x8E, 0xC0, 0x83, 0x3F, 0x0C, 0x33, 0x98, 0x81, + 0x0C, 0x64, 0x20, 0x83, 0x31, 0x8C, 0x3B, 0xF0, 0x08, 0x00, 0x08, 0x00, 0x93, 0xD8, 0xC3, 0x3F, + 0x0E, 0x33, 0x98, 0xC1, 0x0C, 0x66, 0x30, 0x83, 0x19, 0xCC, 0x3B, 0xF6, 0x30, 0x80, 0x01, 0x0C, + 0x60, 0x03, 0x00, 0x08, 0x00, 0x94, 0xE0, 0x8D, 0x7F, 0x0E, 0x33, 0x98, 0xC1, 0x0C, 0x66, 0x30, + 0x83, 0x39, 0x8C, 0x7B, 0x78, 0x03, 0x18, 0xC0, 0x00, 0x06, 0x30, 0x02, 0x00, 0x05, 0x00, 0x89, + 0xD8, 0x7C, 0x0E, 0x83, 0xC1, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x05, 0x00, 0x07, 0x00, 0x8D, 0x80, + 0x07, 0x7F, 0x86, 0x19, 0xC0, 0x01, 0x3E, 0xC0, 0x01, 0x66, 0x18, 0x7F, 0x78, 0x07, 0x00, 0x02, + 0x00, 0x8C, 0x80, 0xC1, 0x60, 0xFC, 0x18, 0x0C, 0x06, 0x83, 0xC1, 0x60, 0x30, 0x78, 0x38, 0x05, + 0x00, 0x08, 0x00, 0x8F, 0x18, 0xCC, 0x60, 0x06, 0x33, 0x98, 0xC1, 0x0C, 0x66, 0x30, 0x83, 0x11, + 0x8E, 0x7F, 0x78, 0x03, 0x07, 0x00, 0x07, 0x00, 0x8D, 0x30, 0x98, 0x61, 0x86, 0x10, 0xC3, 0x0C, + 0x13, 0x68, 0xE0, 0x81, 0x03, 0x0C, 0x30, 0x07, 0x00, 0x0B, 0x00, 0x91, 0x08, 0x82, 0x8C, 0x63, + 0xC6, 0x31, 0xA3, 0x18, 0xD9, 0x84, 0x6D, 0xC3, 0xA2, 0xC1, 0x71, 0xE0, 0x38, 0x30, 0x02, 0x18, + 0x80, 0x0C, 0x0A, 0x00, 0x07, 0x00, 0x8E, 0x60, 0x98, 0x31, 0xCC, 0xE0, 0x81, 0x07, 0x0C, 0x78, + 0xE0, 0xC1, 0x8C, 0x71, 0x86, 0x01, 0x06, 0x00, 0x07, 0x00, 0x92, 0x30, 0x98, 0x61, 0x86, 0x18, + 0xC3, 0x0C, 0x13, 0x68, 0xE0, 0x81, 0x03, 0x0C, 0x30, 0x40, 0x80, 0x81, 0x03, 0x06, 0x02, 0x00, + 0x07, 0x00, 0x8E, 0xE0, 0x9F, 0x7F, 0xC0, 0x80, 0x01, 0x06, 0x0C, 0x18, 0x70, 0xC0, 0x80, 0x03, + 0xFE, 0x01, 0x06, 0x00, 0x88, 0x00, 0x10, 0x0C, 0x83, 0xC1, 0x60, 0x10, 0x08, 0x86, 0x02, 0xC1, + 0x84, 0x40, 0x20, 0x30, 0x18, 0x0C, 0x02, 0x06, 0x81, 0x02, 0x00, 0x02, 0x00, 0x8B, 0x42, 0x08, + 0x21, 0x84, 0x10, 0x42, 0x08, 0x21, 0x84, 0x10, 0x02, 0x00, 0x80, 0x80, 0x02, 0x81, 0x83, 0xC1, + 0x60, 0x30, 0x18, 0x03, 0x0C, 0x87, 0xC7, 0x60, 0x30, 0x18, 0x0C, 0x06, 0xC3, 0x30, 0x02, 0x00, + 0x10, 0x00, 0x86, 0x0E, 0xC2, 0xCF, 0x18, 0x1F, 0x00, 0x02, 0x10, 0x00, }; // clang-format on diff --git a/keyboards/dasky/reverb/graphics/robotomono20.qff.h b/keyboards/dasky/reverb/graphics/robotomono20.qff.h index 63b82834042..f60641a9582 100644 --- a/keyboards/dasky/reverb/graphics/robotomono20.qff.h +++ b/keyboards/dasky/reverb/graphics/robotomono20.qff.h @@ -1,11 +1,11 @@ -// Copyright 2023 QMK -- generated source code only, font retains original copyright +// Copyright 2024 QMK -- generated source code only, font retains original copyright // SPDX-License-Identifier: GPL-2.0-or-later -// This file was auto-generated by `qmk painter-convert-font-image -i robotomono20.png -f mono4` +// This file was auto-generated by `qmk painter-convert-font-image -i robotomono20.png -f mono2` #pragma once #include extern const uint32_t font_robotomono20_length; -extern const uint8_t font_robotomono20[4904]; +extern const uint8_t font_robotomono20[2396]; From 7620c64b99dc5bec480bfaa2708cb3fae709e2b3 Mon Sep 17 00:00:00 2001 From: Jerome Berclaz Date: Tue, 21 May 2024 19:49:49 -0700 Subject: [PATCH 22/22] Added MATRIX_HAS_GHOST definition for IBM Model H controller (#23744) --- keyboards/ibm/model_m/modelh/info.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/ibm/model_m/modelh/info.json b/keyboards/ibm/model_m/modelh/info.json index 6d55d5c6bdd..897d9be2f44 100644 --- a/keyboards/ibm/model_m/modelh/info.json +++ b/keyboards/ibm/model_m/modelh/info.json @@ -20,7 +20,8 @@ }, "matrix_pins": { "cols": ["A10", "A9", "A8", "B15", "B14", "B13", "B12", "B11", "B10", "B1", "B0", "A7", "A6", "A5", "A4", "A3"], - "rows": ["B6", "B5", "B4", "A15", "B3", "A0", "A2", "A1"] + "rows": ["B6", "B5", "B4", "A15", "B3", "A0", "A2", "A1"], + "ghost": true }, "processor": "STM32F103", "url": "modelh.club",