diff --git a/keyboards/alas/alas.c b/keyboards/alas/alas.c new file mode 100755 index 0000000000..2932aedb03 --- /dev/null +++ b/keyboards/alas/alas.c @@ -0,0 +1,21 @@ +/* Copyright 2023 Yiancar-Designs + * + * 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 "alas.h" + +void led_init_ports(void) { + // Set our LED pins as open drain outputs + palSetLineMode(LED_CAPS_LOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN); +} diff --git a/keyboards/alas/alas.h b/keyboards/alas/alas.h new file mode 100644 index 0000000000..47314c8ce8 --- /dev/null +++ b/keyboards/alas/alas.h @@ -0,0 +1,132 @@ +/* Copyright 2023 Yiancar-Designs + * + * 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 XXX KC_NO + +#include "quantum.h" + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2C, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D } \ +} + +#define LAYOUT_60_ansi( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \ + { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX }, \ + { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D } \ +} + +#define LAYOUT_60_ansi_split_bs_rshift( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2C, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \ + { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D } \ +} + +#define LAYOUT_60_ansi_tsangan( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ + K40, K41, K42, K46, K4B, K4C, K4D \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \ + { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX }, \ + { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, XXX, K4B, K4C, K4D } \ +} + +#define LAYOUT_60_iso( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K1D, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX }, \ + { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D } \ +} + +#define LAYOUT_60_iso_split_bs_rshift( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2C, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K1D, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K46, K4A, K4B, K4C, K4D \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, K4B, K4C, K4D } \ +} + +#define LAYOUT_60_iso_tsangan( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K1D, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \ + K40, K41, K42, K46, K4B, K4C, K4D \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX }, \ + { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, XXX, K4B, K4C, K4D } \ +} + +#define LAYOUT_60_tsangan_hhkb( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2C, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K46, K4B, K4C, K4D \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \ + { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, XXX, K4B, K4C, K4D } \ +} diff --git a/keyboards/alas/config.h b/keyboards/alas/config.h new file mode 100755 index 0000000000..95a8e7bcdb --- /dev/null +++ b/keyboards/alas/config.h @@ -0,0 +1,31 @@ +/* +Copyright 2023 Yiancar-Designs + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published byß +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define MATRIX_ROW_PINS { A2, B9, B8, B5, B4 } +#define MATRIX_COL_PINS { A1, B1, B0, A7, A6, A5, A4, A3, B2, B10, B11, B12, B13, B14 } + +/* COL2ROW, ROW2COL*/ +#define DIODE_DIRECTION COL2ROW + +/* Ensure we jump to bootloader if the RESET keycode was pressed */ +#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE + +/* Indicator LEDs */ +#define LED_CAPS_LOCK_PIN B6 +#define LED_PIN_ON_STATE 0 diff --git a/keyboards/alas/info.json b/keyboards/alas/info.json new file mode 100755 index 0000000000..aa87efaae3 --- /dev/null +++ b/keyboards/alas/info.json @@ -0,0 +1,39 @@ +{ + "keyboard_name": "Alas", + "manufacturer": "Yiancar-Designs", + "url": "https://yiancar-designs.com", + "maintainer": "Yiancar-Designs", + "usb": { + "vid": "0x8968", + "pid": "0x414C", + "device_version": "0.0.1" + }, + "processor": "STM32F072", + "bootloader": "stm32-dfu", + "layouts": { + "LAYOUT_all": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] + }, + "LAYOUT_60_ansi": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] + }, + "LAYOUT_60_ansi_split_bs_rshift": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] + }, + "LAYOUT_60_ansi_tsangan": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] + }, + "LAYOUT_60_iso": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] + }, + "LAYOUT_60_iso_split_bs_rshift": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":1.25}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"x":10, "y":4, "w":1.25}, {"x":11.25, "y":4, "w":1.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}] + }, + "LAYOUT_60_iso_tsangan": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0, "w":2}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":2.75}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] + }, + "LAYOUT_60_tsangan_hhkb": { + "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":0, "y":1, "w":1.5}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":4.5, "y":1}, {"x":5.5, "y":1}, {"x":6.5, "y":1}, {"x":7.5, "y":1}, {"x":8.5, "y":1}, {"x":9.5, "y":1}, {"x":10.5, "y":1}, {"x":11.5, "y":1}, {"x":12.5, "y":1}, {"x":13.5, "y":1, "w":1.5}, {"x":0, "y":2, "w":1.75}, {"x":1.75, "y":2}, {"x":2.75, "y":2}, {"x":3.75, "y":2}, {"x":4.75, "y":2}, {"x":5.75, "y":2}, {"x":6.75, "y":2}, {"x":7.75, "y":2}, {"x":8.75, "y":2}, {"x":9.75, "y":2}, {"x":10.75, "y":2}, {"x":11.75, "y":2}, {"x":12.75, "y":2, "w":2.25}, {"x":0, "y":3, "w":2.25}, {"x":2.25, "y":3}, {"x":3.25, "y":3}, {"x":4.25, "y":3}, {"x":5.25, "y":3}, {"x":6.25, "y":3}, {"x":7.25, "y":3}, {"x":8.25, "y":3}, {"x":9.25, "y":3}, {"x":10.25, "y":3}, {"x":11.25, "y":3}, {"x":12.25, "y":3, "w":1.75}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"x":11, "y":4, "w":1.5}, {"x":12.5, "y":4}, {"x":13.5, "y":4, "w":1.5}] + } + } +} diff --git a/keyboards/alas/keymaps/default/keymap.c b/keyboards/alas/keymaps/default/keymap.c new file mode 100644 index 0000000000..66d8614837 --- /dev/null +++ b/keyboards/alas/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +/* Copyright 2023 Yiancar-Designs + * + * 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( /* Base */ + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL), + +[1] = LAYOUT_all( /* FN */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/alas/keymaps/via/keymap.c b/keyboards/alas/keymaps/via/keymap.c new file mode 100644 index 0000000000..3f84154ca4 --- /dev/null +++ b/keyboards/alas/keymaps/via/keymap.c @@ -0,0 +1,46 @@ +/* Copyright 2023 Yiancar-Designs + * + * 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( /* Base */ + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL), + +[1] = LAYOUT_all( /* FN */ + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS, + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[2] = LAYOUT_all( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +[3] = LAYOUT_all( /* Empty for dynamic keymaps */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/alas/keymaps/via/rules.mk b/keyboards/alas/keymaps/via/rules.mk new file mode 100755 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/alas/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/alas/readme.md b/keyboards/alas/readme.md new file mode 100755 index 0000000000..35d891464e --- /dev/null +++ b/keyboards/alas/readme.md @@ -0,0 +1,39 @@ +# Alas + +This is a standard 60% layout PCB. It supports VIA. + +* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) +* Hardware Supported: A 60% keyboard with STM32F072CB +* Hardware Availability: https://geekhack.org/index.php?topic=119025.0 + +![Layer 0](https://i.imgur.com/LL5mZXAh.png) +![Layer 1](https://i.imgur.com/RJDVmtyh.png) + +## Instructions + +### Build + +Make example for this keyboard (after setting up your build environment): + + make alas:default + +Flashing example for this keyboard: + + make alas: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). + +### Reset + +- Unplug +- Hold Escape +- Plug In +- Unplug +- Release Escape + +### Flash + +- Unplug +- Hold Escape +- Plug In +- Flash using QMK Toolbox or CLI (`make alas::flash`) diff --git a/keyboards/alas/rules.mk b/keyboards/alas/rules.mk new file mode 100755 index 0000000000..4b25596ba2 --- /dev/null +++ b/keyboards/alas/rules.mk @@ -0,0 +1,22 @@ +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + +# Do not put the microcontroller into power saving mode +# when we get USB suspend event. We want it to keep updating +# backlight effects. +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output + +LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_ansi_tsangan 60_iso 60_iso_split_bs_rshift 60_iso_tsangan 60_tsangan_hhkb diff --git a/keyboards/binepad/bnr1/info.json b/keyboards/binepad/bnr1/info.json index 5a4e15a26a..42067200cd 100755 --- a/keyboards/binepad/bnr1/info.json +++ b/keyboards/binepad/bnr1/info.json @@ -13,9 +13,7 @@ }, "url": "http://binepad.com", "usb": { - "vid": "0x4249", - "pid": "0x4231", - "device_version": "1.0.0" + "vid": "0x4249" }, "community_layouts": ["ortho_1x1"], "layouts": { diff --git a/keyboards/binepad/bnr1/keymaps/default/rules.mk b/keyboards/binepad/bnr1/keymaps/default/rules.mk index 7f80bd39c6..1148b627d9 100644 --- a/keyboards/binepad/bnr1/keymaps/default/rules.mk +++ b/keyboards/binepad/bnr1/keymaps/default/rules.mk @@ -1,6 +1,4 @@ # Copyright 2022 Binepad (@binpad) # SPDX-License-Identifier: GPL-2.0-or-later -LTO_ENABLE = yes - ENCODER_MAP_ENABLE = yes diff --git a/keyboards/binepad/bnr1/keymaps/via/rules.mk b/keyboards/binepad/bnr1/keymaps/via/rules.mk index 746edfaa56..254ffa32e8 100644 --- a/keyboards/binepad/bnr1/keymaps/via/rules.mk +++ b/keyboards/binepad/bnr1/keymaps/via/rules.mk @@ -1,7 +1,6 @@ # Copyright 2022 Binepad (@binpad) # SPDX-License-Identifier: GPL-2.0-or-later -LTO_ENABLE = yes VIA_ENABLE = yes ENCODER_MAP_ENABLE = yes diff --git a/keyboards/binepad/bnr1/readme.md b/keyboards/binepad/bnr1/readme.md index 5a8afe2be9..7acc09127b 100755 --- a/keyboards/binepad/bnr1/readme.md +++ b/keyboards/binepad/bnr1/readme.md @@ -3,13 +3,19 @@ The BNR1 is a multifunction knob, which can be rotated, pressed, and rotated while pressed. * Keyboard Maintainer: [Binpad](https://github.com/binepad) -* Hardware Supported: **BNR1** & **BNR1 R2** *("V1" ft. ATMega32u4 MCU)* +* Hardware Supported: + * **BNR1** & **BNR1 R2** *("V1" ft. ATMega32u4 MCU)* + * **BNR1 V2** *("V2" ft. STM32F103 MCU)* * Hardware Availability: [Binepad.com](https://www.binepad.com/bnr1) Make example for this keyboard (after setting up your build environment): make binepad/bnr1/v1:default + ..or.. + + make binepad/bnr1/v2: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). diff --git a/keyboards/binepad/bnr1/rules.mk b/keyboards/binepad/bnr1/rules.mk index b1b1126ff4..9719de29b8 100755 --- a/keyboards/binepad/bnr1/rules.mk +++ b/keyboards/binepad/bnr1/rules.mk @@ -1,3 +1,3 @@ -# This file intentionally left blank +# This file is mostly left blank -DEFAULT_FOLDER = binepad/bnr1/v1 +DEFAULT_FOLDER = binepad/bnr1/v2 diff --git a/keyboards/binepad/bnr1/v1/info.json b/keyboards/binepad/bnr1/v1/info.json index 44edbf87d3..1797755549 100644 --- a/keyboards/binepad/bnr1/v1/info.json +++ b/keyboards/binepad/bnr1/v1/info.json @@ -2,13 +2,21 @@ "bootloader": "atmel-dfu", "processor": "atmega32u4", "diode_direction": "COL2ROW", + "usb": { + "pid": "0x4231", + "device_version": "1.0.0" + }, "matrix_pins": { "cols": ["B0"], "rows": ["E6"] }, "encoder": { + "enabled": true, "rotary": [ - { "pin_a": "D6", "pin_b": "D7" } + { + "pin_a": "D6", + "pin_b": "D7" + } ] } } diff --git a/keyboards/binepad/bnr1/v1/rules.mk b/keyboards/binepad/bnr1/v1/rules.mk index 6e7633bfe0..ac022b38ca 100644 --- a/keyboards/binepad/bnr1/v1/rules.mk +++ b/keyboards/binepad/bnr1/v1/rules.mk @@ -1 +1,3 @@ -# This file intentionally left blank +# This file is mostly left blank + +LTO_ENABLE = yes diff --git a/keyboards/binepad/bnr1/v2/config.h b/keyboards/binepad/bnr1/v2/config.h new file mode 100644 index 0000000000..7fbf1cfab1 --- /dev/null +++ b/keyboards/binepad/bnr1/v2/config.h @@ -0,0 +1,9 @@ +// Copyright 2022 BINEPAD (@binepad) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "config_common.h" + +#define WEAR_LEVELING_LOGICAL_SIZE 1024 +#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2) diff --git a/keyboards/binepad/bnr1/v2/info.json b/keyboards/binepad/bnr1/v2/info.json new file mode 100755 index 0000000000..03cee81b99 --- /dev/null +++ b/keyboards/binepad/bnr1/v2/info.json @@ -0,0 +1,22 @@ +{ + "bootloader": "stm32duino", + "processor": "STM32F103", + "diode_direction": "COL2ROW", + "usb": { + "pid": "0x4241", + "device_version": "2.0.0" + }, + "matrix_pins": { + "cols": ["A15"], + "rows": ["A8"] + }, + "encoder": { + "enabled": true, + "rotary": [ + { + "pin_a": "B3", + "pin_b": "B4" + } + ] + } +} diff --git a/keyboards/binepad/bnr1/v2/rules.mk b/keyboards/binepad/bnr1/v2/rules.mk new file mode 100755 index 0000000000..a9a826d49f --- /dev/null +++ b/keyboards/binepad/bnr1/v2/rules.mk @@ -0,0 +1,7 @@ +# This file only contains EFL/WL settings and enables F103 low-power mode + +EEPROM_DRIVER = wear_leveling +WEAR_LEVELING_DRIVER = embedded_flash + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/cannonkeys/typeb/config.h b/keyboards/cannonkeys/typeb/config.h new file mode 100644 index 0000000000..582695dac6 --- /dev/null +++ b/keyboards/cannonkeys/typeb/config.h @@ -0,0 +1,24 @@ +/* +Copyright 2015 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U + +#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 + diff --git a/keyboards/cannonkeys/typeb/info.json b/keyboards/cannonkeys/typeb/info.json new file mode 100644 index 0000000000..d09eb90026 --- /dev/null +++ b/keyboards/cannonkeys/typeb/info.json @@ -0,0 +1,97 @@ +{ + "keyboard_name": "Type-B", + "maintainer": "awkannan", + "manufacturer": "CannonKeys", + "processor": "RP2040", + "bootloader": "rp2040", + "usb": { + "vid": "0xCA04", + "pid": "0x001B", + "device_version": "0.0.1" + }, + "url": "https://cannonkeys.com", + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["GP3", "GP2", "GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP21", "GP20", "GP19", "GP18"], + "rows": ["GP4", "GP5", "GP13", "GP14", "GP10"] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "indicators": { + "caps_lock": "GP12", + "on_state": 0 + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "matrix": [0, 0], "x": 0.0, "y": 0.0 }, + { "matrix": [0, 1], "x": 1.0, "y": 0.0 }, + { "matrix": [0, 2], "x": 2.0, "y": 0.0 }, + { "matrix": [0, 3], "x": 3.0, "y": 0.0 }, + { "matrix": [0, 4], "x": 4.0, "y": 0.0 }, + { "matrix": [0, 5], "x": 5.0, "y": 0.0 }, + { "matrix": [0, 6], "x": 6.0, "y": 0.0 }, + { "matrix": [0, 7], "x": 7.0, "y": 0.0 }, + { "matrix": [0, 8], "x": 8.0, "y": 0.0 }, + { "matrix": [0, 9], "x": 9.0, "y": 0.0 }, + { "matrix": [0, 10], "x": 10.0, "y": 0.0 }, + { "matrix": [0, 11], "x": 11.0, "y": 0.0 }, + { "matrix": [0, 12], "x": 12.0, "y": 0.0 }, + { "matrix": [0, 13], "x": 13.0, "y": 0.0 }, + { "matrix": [2, 12], "x": 14.0, "y": 0.0 }, + { "matrix": [1, 0], "w": 1.5, "x": 0.0, "y": 1.0 }, + { "matrix": [1, 1], "x": 1.5, "y": 1.0 }, + { "matrix": [1, 2], "x": 2.5, "y": 1.0 }, + { "matrix": [1, 3], "x": 3.5, "y": 1.0 }, + { "matrix": [1, 4], "x": 4.5, "y": 1.0 }, + { "matrix": [1, 5], "x": 5.5, "y": 1.0 }, + { "matrix": [1, 6], "x": 6.5, "y": 1.0 }, + { "matrix": [1, 7], "x": 7.5, "y": 1.0 }, + { "matrix": [1, 8], "x": 8.5, "y": 1.0 }, + { "matrix": [1, 9], "x": 9.5, "y": 1.0 }, + { "matrix": [1, 10], "x": 10.5, "y": 1.0 }, + { "matrix": [1, 11], "x": 11.5, "y": 1.0 }, + { "matrix": [1, 12], "x": 12.5, "y": 1.0 }, + { "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1.0 }, + { "matrix": [2, 0], "w": 1.75, "x": 0.0, "y": 2.0 }, + { "matrix": [2, 1], "x": 1.75, "y": 2.0 }, + { "matrix": [2, 2], "x": 2.75, "y": 2.0 }, + { "matrix": [2, 3], "x": 3.75, "y": 2.0 }, + { "matrix": [2, 4], "x": 4.75, "y": 2.0 }, + { "matrix": [2, 5], "x": 5.75, "y": 2.0 }, + { "matrix": [2, 6], "x": 6.75, "y": 2.0 }, + { "matrix": [2, 7], "x": 7.75, "y": 2.0 }, + { "matrix": [2, 8], "x": 8.75, "y": 2.0 }, + { "matrix": [2, 9], "x": 9.75, "y": 2.0 }, + { "matrix": [2, 10], "x": 10.75, "y": 2.0 }, + { "matrix": [2, 11], "x": 11.75, "y": 2.0 }, + { "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2.0 }, + { "matrix": [3, 0], "w": 1.25, "x": 0.0, "y": 3.0 }, + { "matrix": [3, 1], "x": 1.25, "y": 3.0 }, + { "matrix": [3, 2], "x": 2.25, "y": 3.0 }, + { "matrix": [3, 3], "x": 3.25, "y": 3.0 }, + { "matrix": [3, 4], "x": 4.25, "y": 3.0 }, + { "matrix": [3, 5], "x": 5.25, "y": 3.0 }, + { "matrix": [3, 6], "x": 6.25, "y": 3.0 }, + { "matrix": [3, 7], "x": 7.25, "y": 3.0 }, + { "matrix": [3, 8], "x": 8.25, "y": 3.0 }, + { "matrix": [3, 9], "x": 9.25, "y": 3.0 }, + { "matrix": [3, 10], "x": 10.25, "y": 3.0 }, + { "matrix": [3, 11], "x": 11.25, "y": 3.0 }, + { "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3.0 }, + { "matrix": [3, 13], "x": 14.0, "y": 3.0 }, + { "matrix": [4, 1], "x": 1.5, "y": 4.0 }, + { "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4.0 }, + { "matrix": [4, 6], "w": 6, "x": 4.0, "y": 4.0 }, + { "matrix": [4, 10], "w": 1.5, "x": 10.0, "y": 4.0 }, + { "matrix": [4, 11], "x": 11.5, "y": 4.0 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/cannonkeys/typeb/keymaps/default/keymap.c b/keyboards/cannonkeys/typeb/keymaps/default/keymap.c new file mode 100644 index 0000000000..208596d9ba --- /dev/null +++ b/keyboards/cannonkeys/typeb/keymaps/default/keymap.c @@ -0,0 +1,45 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum { + _BASE = 0, + _FN1 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1), + KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL + ), + + [_FN1] = 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_DEL, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, QK_BOOT + ) +}; diff --git a/keyboards/cannonkeys/typeb/keymaps/via/keymap.c b/keyboards/cannonkeys/typeb/keymaps/via/keymap.c new file mode 100644 index 0000000000..43980201b9 --- /dev/null +++ b/keyboards/cannonkeys/typeb/keymaps/via/keymap.c @@ -0,0 +1,61 @@ +/* +Copyright 2012,2013 Jun Wako + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H + + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum { + _BASE = 0, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1), + KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL + ), + + [_FN1] = 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_DEL, _______, + _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, QK_BOOT + ), + [_FN2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______ + ), + [_FN3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______ + ) +}; diff --git a/keyboards/cannonkeys/typeb/keymaps/via/rules.mk b/keyboards/cannonkeys/typeb/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/cannonkeys/typeb/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/cannonkeys/typeb/readme.md b/keyboards/cannonkeys/typeb/readme.md new file mode 100644 index 0000000000..e0fb872f38 --- /dev/null +++ b/keyboards/cannonkeys/typeb/readme.md @@ -0,0 +1,26 @@ +# Type-B + +Type-B Keyboard by bababaul + +* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan) +* Hardware Supported: RP2040 +* Hardware Availability: [CannonKeys](https://cannonkeys.com) + + +Make example for this keyboard (after setting up your build environment): + + make cannonkeys/typeb:default + +Flashing example for this keyboard: + + make cannonkeys/typeb:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Toggle the switch on the back of the PCB to "Recovery" and briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/cannonkeys/typeb/rules.mk b/keyboards/cannonkeys/typeb/rules.mk new file mode 100644 index 0000000000..59f8593f18 --- /dev/null +++ b/keyboards/cannonkeys/typeb/rules.mk @@ -0,0 +1,2 @@ +EEPROM_DRIVER = wear_leveling +WEAR_LEVELING_DRIVER = rp2040_flash diff --git a/keyboards/cxt_studio/config.h b/keyboards/cxt_studio/config.h new file mode 100644 index 0000000000..82a60de39b --- /dev/null +++ b/keyboards/cxt_studio/config.h @@ -0,0 +1,48 @@ +// Copyright 2023 Colin Kinloch (@ColinKinloch) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define RGB_MATRIX_LED_COUNT 12 +#define RGB_DI_PIN F7 + +#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_TYPING_HEATMAP + +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS + +#define ENABLE_RGB_MATRIX_TYPING_HEATMAP +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE + +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +#define ENABLE_RGB_MATRIX_SPLASH +#define ENABLE_RGB_MATRIX_MULTISPLASH +#define ENABLE_RGB_MATRIX_SOLID_SPLASH +#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH + +#define RGB_MATRIX_TYPING_HEATMAP_SPREAD 9 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT diff --git a/keyboards/cxt_studio/cxt_studio.c b/keyboards/cxt_studio/cxt_studio.c new file mode 100644 index 0000000000..2e7622ff91 --- /dev/null +++ b/keyboards/cxt_studio/cxt_studio.c @@ -0,0 +1,55 @@ +// Copyright 2023 Colin Kinloch (@ColinKinloch) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +static uint8_t anim = 0; + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + switch (index) { + case 0: { + if (clockwise) { + tap_code_delay(KC_VOLU, 10); + } else { + tap_code_delay(KC_VOLD, 10); + } + } + break; + case 1: { + if (clockwise) { + rgblight_increase_hue(); + } else { + rgblight_decrease_hue(); + } + } + break; + case 2: { + if (clockwise) { + rgblight_increase_val(); + } else { + rgblight_decrease_val(); + } + } + break; + case 3: { + if (clockwise) { + anim++; + } else { + anim--; + } + if (anim >= RGB_MATRIX_EFFECT_MAX) { + anim = 0; + } else if (anim < 0) { + anim = RGB_MATRIX_EFFECT_MAX - 1; + } + rgblight_mode(anim); + } + break; + } + return true; +} +#endif diff --git a/keyboards/cxt_studio/info.json b/keyboards/cxt_studio/info.json new file mode 100644 index 0000000000..35e8031819 --- /dev/null +++ b/keyboards/cxt_studio/info.json @@ -0,0 +1,76 @@ +{ + "manufacturer": "CXT", + "keyboard_name": "cxt_studio", + "maintainer": "ColinKinloch", + "bootloader": "atmel-dfu", + "diode_direction": "ROW2COL", + "features": { + "bootmagic": true, + "command": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "encoder": true, + "rgb_matrix": true + }, + "matrix_pins": { + "cols": ["D4", "D7", "B4", "B5"], + "rows": ["C7", "C6", "D6", "F4"] + }, + "encoder": { + "rotary": [ + { "pin_a": "D5", "pin_b": "D3" }, + { "pin_a": "B2", "pin_b": "B3" }, + { "pin_a": "F5", "pin_b": "F6" }, + { "pin_a": "E6", "pin_b": "F0" } + ] + }, + "processor": "atmega32u4", + "rgb_matrix": { + "driver": "WS2812", + "layout": [ + { "flags": 4, "matrix": [0, 3], "x": 3, "y": 0 }, + { "flags": 4, "matrix": [0, 2], "x": 2, "y": 0 }, + { "flags": 4, "matrix": [0, 1], "x": 1, "y": 0 }, + { "flags": 4, "matrix": [0, 0], "x": 0, "y": 0 }, + { "flags": 4, "matrix": [1, 0], "x": 0, "y": 1 }, + { "flags": 4, "matrix": [1, 1], "x": 1, "y": 1 }, + { "flags": 4, "matrix": [1, 2], "x": 2, "y": 1 }, + { "flags": 4, "matrix": [1, 3], "x": 3, "y": 1 }, + { "flags": 4, "matrix": [2, 3], "x": 3, "y": 2 }, + { "flags": 4, "matrix": [2, 2], "x": 2, "y": 2 }, + { "flags": 4, "matrix": [2, 1], "x": 1, "y": 2 }, + { "flags": 4, "matrix": [2, 0], "x": 0, "y": 2 } + ] + }, + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "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": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "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 } + ] + } + } +} diff --git a/keyboards/cxt_studio/keymaps/default/keymap.json b/keyboards/cxt_studio/keymaps/default/keymap.json new file mode 100644 index 0000000000..77b4cabc92 --- /dev/null +++ b/keyboards/cxt_studio/keymaps/default/keymap.json @@ -0,0 +1,13 @@ +{ + "keyboard": "cxt_studio", + "keymap": "default", + "layout": "LAYOUT", + "layers": [ + [ + "KC_ESC", "KC_F11", "KC_NO", "KC_MSTP", + "KC_NO", "KC_NO", "KC_MRWD", "KC_MFFD", + "KC_NO", "KC_MPLY", "KC_MPLY", "KC_MNXT", + "KC_MUTE", "KC_NO", "KC_NO", "RGB_TOG" + ] + ] +} diff --git a/keyboards/cxt_studio/readme.md b/keyboards/cxt_studio/readme.md new file mode 100644 index 0000000000..6397a3fdfd --- /dev/null +++ b/keyboards/cxt_studio/readme.md @@ -0,0 +1,27 @@ +# cxt_studio + +![cxt_studio](https://i.imgur.com/AMCTioSh.jpeg) + +3x4 ortho rgb lighting 4 knobs. + +* Keyboard Maintainer: [Colin Kinloch](https://github.com/ColinKinloch) +* Hardware Supported: CXT-Studio +* Hardware Availability: AliExpress. I think the manufacturer is on Taobao. + +Make example for this keyboard (after setting up your build environment): + + make cxt_studio:default + +Flashing example for this keyboard: + + make cxt_studio: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/cxt_studio/rules.mk b/keyboards/cxt_studio/rules.mk new file mode 100644 index 0000000000..6e7633bfe0 --- /dev/null +++ b/keyboards/cxt_studio/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/doio/kb38/config.h b/keyboards/doio/kb38/config.h new file mode 100644 index 0000000000..ba8eb14a11 --- /dev/null +++ b/keyboards/doio/kb38/config.h @@ -0,0 +1,39 @@ +// Copyright 2022 Katrina (@Daggette10) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once +#include "config_common.h" + +#define RGB_DI_PIN F6 +#define RGB_MATRIX_LED_COUNT 44 + +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 +#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR +#define ENABLE_RGB_MATRIX_ALPHAS_MODS +#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +#define ENABLE_RGB_MATRIX_BREATHING +#define ENABLE_RGB_MATRIX_CYCLE_ALL +#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS + +#define ENCODERS_PAD_A { C7, F7, D6 } +#define ENCODERS_PAD_B { C6, E6, D7 } +#define ENCODER_RESOLUTIONS { 4, 4, 2 } + + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT diff --git a/keyboards/doio/kb38/info.json b/keyboards/doio/kb38/info.json new file mode 100644 index 0000000000..9d75ada43e --- /dev/null +++ b/keyboards/doio/kb38/info.json @@ -0,0 +1,135 @@ +{ + "manufacturer": "Doio", + "keyboard_name": "doio/kb38", + "maintainer": "PepperKats", + "url": "https://www.keebmonkey.com/products/megalodon-doio-triple-knob-38-keyboard-with-oled-screen", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true, + "rgblight": false + }, + "matrix_pins": { + "cols": ["F5", "F4", "F1", "F0", "B7", "B6", "B5", "B4"], + "rows": ["D5", "D4", "D3", "D2", "B3", "B2"] + }, + "processor": "atmega32u4", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "rgb_matrix": { + "driver": "WS2812", + "layout": [ + {"flags": 4, "matrix": [0, 0], "x":0, "y":0}, + {"flags": 4, "matrix": [0, 1], "x":62.2, "y":0}, + {"flags": 4, "matrix": [0, 2], "x":99.6, "y":0}, + {"flags": 4, "matrix": [0, 3], "x":124.4, "y":0}, + {"flags": 4, "matrix": [0, 4], "x":149.3, "y":0}, + {"flags": 4, "matrix": [0, 5], "x":174.2, "y":0}, + {"flags": 4, "matrix": [0, 6], "x":199.1, "y":0}, + {"flags": 4, "matrix": [0, 7], "x":224, "y":0}, + + {"flags": 4, "matrix": [1, 0], "x":0, "y":12.8}, + {"flags": 4, "matrix": [1, 1], "x":24.9, "y":12.8}, + {"flags": 4, "matrix": [1, 2], "x":49.8, "y":12.8}, + {"flags": 4, "matrix": [1, 3], "x":74.6, "y":12.8}, + {"flags": 4, "matrix": [1, 4], "x":99.6, "y":12.8}, + {"flags": 4, "matrix": [1, 5], "x":124.4, "y":12.8}, + {"flags": 4, "matrix": [1, 6], "x":149.3, "y":12.8}, + + {"flags": 4, "matrix": [2, 0], "x":0, "y":25.6}, + {"flags": 4, "matrix": [2, 1], "x":24.9, "y":25.6}, + {"flags": 4, "matrix": [2, 2], "x":49.8, "y":25.6}, + {"flags": 4, "matrix": [2, 3], "x":74.6, "y":32}, + {"flags": 4, "matrix": [2, 4], "x":90, "y":25.6}, + {"flags": 4, "matrix": [2, 5], "x":124.4, "y":25.6}, + {"flags": 4, "matrix": [2, 6], "x":149.3, "y":25.6}, + + {"flags": 4, "matrix": [3, 0], "x":0, "y":38.4}, + {"flags": 4, "matrix": [3, 1], "x":24.9, "y":38.4}, + {"flags": 4, "matrix": [3, 2], "x":49.8, "y":38.4}, + {"flags": 4, "matrix": [3, 3], "x":99.6, "y":38.4}, + {"flags": 4, "matrix": [3, 4], "x":124.4, "y":38.4}, + {"flags": 4, "matrix": [3, 5], "x":149.3, "y":38.4}, + + {"flags": 4, "matrix": [4, 0], "x":0, "y":51.2}, + {"flags": 4, "matrix": [4, 1], "x":24.9, "y":51.2}, + {"flags": 4, "matrix": [4, 2], "x":49.8, "y":51.2}, + {"flags": 4, "matrix": [4, 3], "x":74.6, "y":57.6}, + {"flags": 4, "matrix": [4, 5], "x":124.4, "y":51.2}, + + {"flags": 4, "matrix": [5, 0], "x":12.5, "y":64}, + {"flags": 4, "matrix": [5, 1], "x":49.8, "y":64}, + {"flags": 4, "matrix": [5, 2], "x":99.6, "y":64}, + {"flags": 4, "matrix": [5, 3], "x":124.4, "y":64}, + {"flags": 4, "matrix": [5, 4], "x":149.3, "y":64}, + + {"flags": 2, "x":224, "y":64}, + {"flags": 2, "x":74.6, "y":64}, + {"flags": 2, "x":0, "y":64}, + {"flags": 2, "x":0, "y":0}, + {"flags": 2, "x":74.6, "y":0}, + {"flags": 2, "x":224, "y":0} + ] + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0], "label":"ESC", "x":0, "y":0}, + {"matrix": [0, 1], "label":"BSPC", "x":1, "y":0}, + {"matrix": [0, 2], "label":"RGB BACK", "x":2, "y":0}, + {"matrix": [0, 3], "label":"RGB OFF", "x":3, "y":0}, + {"matrix": [0, 4], "label":"RGB FORW", "x":4, "y":0}, + {"matrix": [0, 5], "label":"MAKE", "x":5, "y":0}, + {"matrix": [0, 6], "label":"REBOOT", "x":6, "y":0}, + {"matrix": [0, 7], "label":"BOOTLOAD", "x":7, "y":0}, + + {"matrix": [1, 0], "label":"NUMLOCK", "x":0, "y":1}, + {"matrix": [1, 1], "label":"PSLS", "x":1, "y":1}, + {"matrix": [1, 2], "label":"PAST", "x":2, "y":1}, + {"matrix": [1, 3], "label":"PMNS", "x":3, "y":1}, + {"matrix": [1, 4], "label":"PAUS", "x":3, "y":1}, + {"matrix": [1, 5], "label":"SCRL", "x":3, "y":1}, + {"matrix": [1, 6], "label":"PSCR", "x":3, "y":1}, + + {"matrix": [2, 0], "label":"7", "x":0, "y":2}, + {"matrix": [2, 1], "label":"8", "x":1, "y":2}, + {"matrix": [2, 2], "label":"9", "x":2, "y":2}, + {"matrix": [2, 3], "label":"PPLS", "x":3, "y":2}, + {"matrix": [2, 4], "label":"INS", "x":3, "y":2}, + {"matrix": [2, 5], "label":"HOME", "x":3, "y":2}, + {"matrix": [2, 6], "label":"PGUP", "x":3, "y":2}, + + {"matrix": [3, 0], "label":"4", "x":0, "y":3}, + {"matrix": [3, 1], "label":"5", "x":1, "y":3}, + {"matrix": [3, 2], "label":"6", "x":2, "y":3}, + {"matrix": [3, 3], "label":"END", "x":3, "y":3}, + {"matrix": [3, 4], "label":"DEL", "x":3, "y":3}, + {"matrix": [3, 5], "label":"PGDN", "x":3, "y":3}, + + {"matrix": [4, 0], "label":"1", "x":0, "y":4}, + {"matrix": [4, 1], "label":"2", "x":1, "y":4}, + {"matrix": [4, 2], "label":"3", "x":2, "y":4}, + {"matrix": [4, 3], "label":"PENT", "x":3, "y":4}, + {"matrix": [4, 5], "label":"UP", "x":3, "y":4}, + + {"matrix": [5, 0], "label":"0", "x":0, "y":5}, + {"matrix": [5, 1], "label":"PDOT", "x":1, "y":5}, + {"matrix": [5, 2], "label":"LEFT", "x":2, "y":5}, + {"matrix": [5, 3], "label":"DOWN", "x":3, "y":5}, + {"matrix": [5, 4], "label":"RIGHT", "x":4, "y":5}, + {"matrix": [5, 5], "label":"KNOB_L", "x":3, "y":5}, + {"matrix": [5, 6], "label":"KNOB_R", "x":3, "y":5}, + {"matrix": [5, 7], "label":"KNOB_D", "x":3, "y":5} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/doio/kb38/kb38.c b/keyboards/doio/kb38/kb38.c new file mode 100644 index 0000000000..55a88a068b --- /dev/null +++ b/keyboards/doio/kb38/kb38.c @@ -0,0 +1,69 @@ +/* Copyright 2021 Katrina (@PepperKats) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +//Display +#ifdef OLED_ENABLE +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + + oled_write_P(qmk_logo, false); +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { return false; } + render_logo(); + return true; +} +#endif + +//Knobs +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } + + if (index == 0) { + // Page Up/Down + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + } else if (index == 1) { + // Mouse Wheel Up/Down + if (clockwise) { + tap_code(KC_MS_WH_DOWN); + } else { + tap_code(KC_MS_WH_UP); + } + } else if (index == 2) { + // Volume Up/Down + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} +#endif \ No newline at end of file diff --git a/keyboards/doio/kb38/keymaps/default/keymap.c b/keyboards/doio/kb38/keymaps/default/keymap.c new file mode 100644 index 0000000000..2496fef083 --- /dev/null +++ b/keyboards/doio/kb38/keymaps/default/keymap.c @@ -0,0 +1,61 @@ +/* Copyright 2021 Katrina (@PepperKats) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +enum layers { + _QWERTY, + _LAYERTWO +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* ┌───┐ ┌───────┐┌───┬───┬───┐┌───┬───┬───┐ + * │ESC│ │KC_BSPC││F1 │F2 │F3 ││F4 │F5 │F6 │ + * └───┘ └───────┘└───┴───┴───┘└───┴───┴───┘ + * ┌───┬───┬───┬───┐┌───┬───┬───┐ + * │NUM│ / │ * │ - ││PAS│SCR│PSC│ + * ├───┼───┼───┼───┤├───┼───┼───│ + * │ 7 │ 8 │ 9 │ ││INS│HOM│PGU│ + * ├───┼───┼───│ + │├───┼───┼───│ + * │ 4 │ 5 │ 6 │ ││END│DEL│PGD│ + * ├───┼───┼───┼───┤└───┼───┼───┘ + * │ 1 │ 2 │ 3 │ E │ │UP │ + * ├───┼───┼───│ N │┌───┼───┼───┐┌───┬───┬───┐ + * │ 0 │DEL│ T ││LFT│DWN│RHT││ O │ O │ O │ + * └───┴───┴───┴───┘└───┴───┴───┘└───┴───┴───┘ + */ + [_QWERTY] = LAYOUT( + MO(1), KC_BSPC, RGB_RMOD, RGB_TOG, RGB_MOD, KC_F1, KC_F2, KC_F3, + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_PAUS, KC_SCRL, KC_PSCR, + KC_P7, KC_P8, KC_P9, KC_PPLS, KC_INS, KC_HOME, KC_PGUP, + KC_P4, KC_P5, KC_P6, KC_END, KC_DEL, KC_PGDN, + KC_P1, KC_P2, KC_P3, KC_PENT, KC_UP, + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_END, KC_B + ), + [_LAYERTWO] = LAYOUT( + _______, KC_BSPC, RGB_RMOD, RGB_TOG, RGB_MOD, KC_A, QK_REBOOT, QK_BOOTLOADER, + KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, KC_PAUS, KC_SCRL, KC_PSCR, + KC_P7, KC_P8, KC_P9, KC_PPLS, KC_INS, KC_HOME, KC_PGUP, + KC_P4, KC_P5, KC_P6, KC_END, KC_DEL, KC_PGDN, + KC_P1, KC_P2, KC_P3, KC_PENT, KC_UP, + KC_P0, KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_END, KC_B + ) +}; + +/*NOTE FOR PERSON MODIFYING KEYMAP +The large knob press is mapped as KC_B, despite it not having one. +I'm not quite sure why, but the only reason it can't be clicked is because the potentiometer is different. +If you were to replace it with one that can be clicked, it would work. I shorted it and it does work.*/ \ No newline at end of file diff --git a/keyboards/doio/kb38/readme.md b/keyboards/doio/kb38/readme.md new file mode 100644 index 0000000000..fef8a33f8f --- /dev/null +++ b/keyboards/doio/kb38/readme.md @@ -0,0 +1,24 @@ +# doio/kb38 + +QMK for Megalodon DOIO Triple Knob 38% with OLED Screen. + +* Keyboard Maintainer: [Katrina](https://github.com/PepperKats) +* Hardware Supported: Megalodon DOIO Triple Knob 38% +* Hardware Availability: https://www.keebmonkey.com/products/megalodon-doio-triple-knob-38-keyboard-with-oled-screen + +Make example for this keyboard (after setting up your build environment): + + make doio/kb38:default + +Flashing example for this keyboard: + + make doio/kb38: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: + +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/doio/kb38/rgb_matrix_kb.inc b/keyboards/doio/kb38/rgb_matrix_kb.inc new file mode 100644 index 0000000000..6e672c889d --- /dev/null +++ b/keyboards/doio/kb38/rgb_matrix_kb.inc @@ -0,0 +1,27 @@ +RGB_MATRIX_EFFECT(trans) +#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS + +static bool trans(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + for (int i = 0; i < 8; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0xFF); + } + for (int i = 8; i < 15; i++) { + rgb_matrix_set_color(i, 0xFF, 0x00, 0x92); + } + for (int i = 15; i < 28; i++) { + rgb_matrix_set_color(i, 0xFF, 0xFF, 0xFF); + } + for (int i = 28; i < 33; i++) { + rgb_matrix_set_color(i, 0xFF, 0x00, 0x92); + } + for (int i = 33; i < 38; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0xFF); + } + for (int i = 38; i < 44; i++) { + rgb_matrix_set_color(i, 0x00, 0x00, 0xFF); + } + return rgb_matrix_check_finished_leds(led_max); +} + +#endif \ No newline at end of file diff --git a/keyboards/doio/kb38/rules.mk b/keyboards/doio/kb38/rules.mk new file mode 100644 index 0000000000..a5f1063634 --- /dev/null +++ b/keyboards/doio/kb38/rules.mk @@ -0,0 +1,3 @@ +OLED_ENABLE = yes +ENCODER_ENABLE = yes +RGB_MATRIX_CUSTOM_KB = yes \ No newline at end of file diff --git a/keyboards/eason/greatsword80/config.h b/keyboards/eason/greatsword80/config.h new file mode 100644 index 0000000000..73347f77df --- /dev/null +++ b/keyboards/eason/greatsword80/config.h @@ -0,0 +1,26 @@ +/* Copyright 2023 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 MATRIX_ROW_PINS { D0, D1, D2, D3, D5, D4 } +#define MATRIX_COL_PINS { D6, D7, B4, B5, B6, C6, C7, E2, F7, F6, F5, F4, B0, B1, B2, B3 } + + +#define DIODE_DIRECTION COL2ROW + +#define LED_CAPS_LOCK_PIN F0 +#define LED_PIN_ON_STATE 0 diff --git a/keyboards/eason/greatsword80/info.json b/keyboards/eason/greatsword80/info.json new file mode 100644 index 0000000000..69e4bc7ef2 --- /dev/null +++ b/keyboards/eason/greatsword80/info.json @@ -0,0 +1,112 @@ +{ + "keyboard_name": "GREATSWORD80", + "manufacturer": "Eason", + "url": "https://github.com/EasonQian1", + "maintainer": "Eason", + "usb": { + "vid": "0x980E", + "pid": "0x998F", + "device_version": "0.0.1" + }, + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "layouts": { + "LAYOUT": { + "layout": [ + {"label": "K00 (D0,D6)", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "K01 (D0,D7)", "matrix": [0, 1], "x": 1.25, "y": 0}, + {"label": "K02 (D0,B4)", "matrix": [0, 2], "x": 2.25, "y": 0}, + {"label": "K03 (D0,B5)", "matrix": [0, 3], "x": 3.25, "y": 0}, + {"label": "K04 (D0,B6)", "matrix": [0, 4], "x": 4.25, "y": 0}, + {"label": "K05 (D0,C6)", "matrix": [0, 5], "x": 5.5, "y": 0}, + {"label": "K06 (D0,C7)", "matrix": [0, 6], "x": 6.5, "y": 0}, + {"label": "K07 (D0,E2)", "matrix": [0, 7], "x": 7.5, "y": 0}, + {"label": "K08 (D0,F7)", "matrix": [0, 8], "x": 8.5, "y": 0}, + {"label": "K09 (D0,F6)", "matrix": [0, 9], "x": 9.75, "y": 0}, + {"label": "K0A (D0,F5)", "matrix": [0, 10], "x": 10.75, "y": 0}, + {"label": "K0B (D0,F4)", "matrix": [0, 11], "x": 11.75, "y": 0}, + {"label": "K0C (D0,B0)", "matrix": [0, 12], "x": 12.75, "y": 0}, + {"label": "K0D (D0,B1)", "matrix": [0, 13], "x": 14, "y": 0}, + {"label": "K0E (D0,B2)", "matrix": [0, 14], "x": 15.5, "y": 0}, + {"label": "K0F (D0,B3)", "matrix": [0, 15], "x": 16.5, "y": 0}, + {"label": "K5A (D4,F5)", "matrix": [5, 10], "x": 17.5, "y": 0}, + + {"label": "K10 (D1,D6)", "matrix": [1, 0], "x": 0, "y": 1.25}, + {"label": "K11 (D1,D7)", "matrix": [1, 1], "x": 1, "y": 1.25}, + {"label": "K12 (D1,B4)", "matrix": [1, 2], "x": 2, "y": 1.25}, + {"label": "K13 (D1,B5)", "matrix": [1, 3], "x": 3, "y": 1.25}, + {"label": "K14 (D1,B6)", "matrix": [1, 4], "x": 4, "y": 1.25}, + {"label": "K15 (D1,C6)", "matrix": [1, 5], "x": 5, "y": 1.25}, + {"label": "K16 (D1,C7)", "matrix": [1, 6], "x": 6, "y": 1.25}, + {"label": "K17 (D1,E2)", "matrix": [1, 7], "x": 7, "y": 1.25}, + {"label": "K18 (D1,F7)", "matrix": [1, 8], "x": 8, "y": 1.25}, + {"label": "K19 (D1,F6)", "matrix": [1, 9], "x": 9, "y": 1.25}, + {"label": "K1A (D1,F5)", "matrix": [1, 10], "x": 10, "y": 1.25}, + {"label": "K1B (D1,F4)", "matrix": [1, 11], "x": 11, "y": 1.25}, + {"label": "K1C (D1,B0)", "matrix": [1, 12], "x": 12, "y": 1.25}, + {"label": "K1D (D1,B1)", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2}, + {"label": "K1E (D1,B2)", "matrix": [1, 14], "x": 15.5, "y": 1.25}, + {"label": "K1F (D1,B3)", "matrix": [1, 15], "x": 16.5, "y": 1.25}, + {"label": "K5B (D4,F4)", "matrix": [5, 11], "x": 17.5, "y": 1.25}, + + {"label": "K20 (D2,D6)", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5}, + {"label": "K21 (D2,D7)", "matrix": [2, 1], "x": 1.5, "y": 2.25}, + {"label": "K22 (D2,B4)", "matrix": [2, 2], "x": 2.5, "y": 2.25}, + {"label": "K23 (D2,B5)", "matrix": [2, 3], "x": 3.5, "y": 2.25}, + {"label": "K24 (D2,B6)", "matrix": [2, 4], "x": 4.5, "y": 2.25}, + {"label": "K25 (D2,C6)", "matrix": [2, 5], "x": 5.5, "y": 2.25}, + {"label": "K26 (D2,C7)", "matrix": [2, 6], "x": 6.5, "y": 2.25}, + {"label": "K27 (D2,E2)", "matrix": [2, 7], "x": 7.5, "y": 2.25}, + {"label": "K28 (D2,F7)", "matrix": [2, 8], "x": 8.5, "y": 2.25}, + {"label": "K29 (D2,F6)", "matrix": [2, 9], "x": 9.5, "y": 2.25}, + {"label": "K2A (D2,F5)", "matrix": [2, 10], "x": 10.5, "y": 2.25}, + {"label": "K2B (D2,F4)", "matrix": [2, 11], "x": 11.5, "y": 2.25}, + {"label": "K2C (D2,B0)", "matrix": [2, 12], "x": 12.5, "y": 2.25}, + {"label": "K2D (D2,B1)", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5}, + {"label": "K2E (D2,B2)", "matrix": [2, 14], "x": 15.5, "y": 2.25}, + {"label": "K2F (D2,B3)", "matrix": [2, 15], "x": 16.5, "y": 2.25}, + {"label": "K5C (D4,B0)", "matrix": [5, 12], "x": 17.5, "y": 2.25}, + + {"label": "K30 (D3,D6)", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75}, + {"label": "K31 (D3,D7)", "matrix": [3, 1], "x": 1.75, "y": 3.25}, + {"label": "K32 (D3,B4)", "matrix": [3, 2], "x": 2.75, "y": 3.25}, + {"label": "K33 (D3,B5)", "matrix": [3, 3], "x": 3.75, "y": 3.25}, + {"label": "K34 (D3,B6)", "matrix": [3, 4], "x": 4.75, "y": 3.25}, + {"label": "K35 (D3,C6)", "matrix": [3, 5], "x": 5.75, "y": 3.25}, + {"label": "K36 (D3,C7)", "matrix": [3, 6], "x": 6.75, "y": 3.25}, + {"label": "K37 (D3,E2)", "matrix": [3, 7], "x": 7.75, "y": 3.25}, + {"label": "K38 (D3,F7)", "matrix": [3, 8], "x": 8.75, "y": 3.25}, + {"label": "K39 (D3,F6)", "matrix": [3, 9], "x": 9.75, "y": 3.25}, + {"label": "K3A (D3,F5)", "matrix": [3, 10], "x": 10.75, "y": 3.25}, + {"label": "K3B (D3,F4)", "matrix": [3, 11], "x": 11.75, "y": 3.25}, + {"label": "K3C (D3,B0)", "matrix": [3, 12], "x": 12.75, "y": 3.25, "w": 2.25}, + + {"label": "K40 (D5,D6)", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25}, + {"label": "K41 (D5,D7)", "matrix": [4, 1], "x": 1.25, "y": 4.25}, + {"label": "K42 (D5,B4)", "matrix": [4, 2], "x": 2.25, "y": 4.25}, + {"label": "K43 (D5,B5)", "matrix": [4, 3], "x": 3.25, "y": 4.25}, + {"label": "K44 (D5,B6)", "matrix": [4, 4], "x": 4.25, "y": 4.25}, + {"label": "K45 (D5,C6)", "matrix": [4, 5], "x": 5.25, "y": 4.25}, + {"label": "K46 (D5,C7)", "matrix": [4, 6], "x": 6.25, "y": 4.25}, + {"label": "K47 (D5,E2)", "matrix": [4, 7], "x": 7.25, "y": 4.25}, + {"label": "K48 (D5,F7)", "matrix": [4, 8], "x": 8.25, "y": 4.25}, + {"label": "K49 (D5,F6)", "matrix": [4, 9], "x": 9.25, "y": 4.25}, + {"label": "K4A (D5,F5)", "matrix": [4, 10], "x": 10.25, "y": 4.25}, + {"label": "K4B (D5,F4)", "matrix": [4, 11], "x": 11.25, "y": 4.25}, + {"label": "K4C (D5,B0)", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75}, + {"label": "K4E (D5,B2)", "matrix": [4, 14], "x": 16.5, "y": 4.25}, + + {"label": "K50 (D4,D6)", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5}, + {"label": "K51 (D4,D7)", "matrix": [5, 1], "x": 1.5, "y": 5.25}, + {"label": "K52 (D4,B4)", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5}, + {"label": "K56 (D4,C7)", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 7}, + {"label": "K57 (D4,E2)", "matrix": [5, 7], "x": 11, "y": 5.25, "w": 1.5}, + {"label": "K58 (D4,F7)", "matrix": [5, 8], "x": 12.5, "y": 5.25}, + {"label": "K59 (D4,F6)", "matrix": [5, 9], "x": 13.5, "y": 5.25, "w": 1.5}, + {"label": "K5D (D4,B1)", "matrix": [5, 13], "x": 15.5, "y": 5.25}, + {"label": "K5E (D4,B2)", "matrix": [5, 14], "x": 16.5, "y": 5.25}, + {"label": "K5F (D4,B3)", "matrix": [5, 15], "x": 17.5, "y": 5.25} + ] + } + } +} diff --git a/keyboards/eason/greatsword80/keymaps/default/keymap.c b/keyboards/eason/greatsword80/keymaps/default/keymap.c new file mode 100644 index 0000000000..b44194c707 --- /dev/null +++ b/keyboards/eason/greatsword80/keymaps/default/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2023 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 . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MO(1), KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/eason/greatsword80/keymaps/via/keymap.c b/keyboards/eason/greatsword80/keymaps/via/keymap.c new file mode 100644 index 0000000000..d1b6f2412b --- /dev/null +++ b/keyboards/eason/greatsword80/keymaps/via/keymap.c @@ -0,0 +1,56 @@ +/* Copyright 2023 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 . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MO(1), KC_PSCR, KC_SCRL, KC_PAUS, + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [2] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + [3] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + +}; diff --git a/keyboards/eason/greatsword80/keymaps/via/rules.mk b/keyboards/eason/greatsword80/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/eason/greatsword80/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/eason/greatsword80/readme.md b/keyboards/eason/greatsword80/readme.md new file mode 100644 index 0000000000..baebf15493 --- /dev/null +++ b/keyboards/eason/greatsword80/readme.md @@ -0,0 +1,22 @@ +# GREATSWORD80 +A customizable soldering 80% keyboard. + +* Keyboard Maintainer: [eason](https://github.com/EasonQian1) +* Hardware Supported: greatsword80 +* Hardware Availability: [eason](https://github.com/EasonQian1) + +Make example for this keyboard (after setting up your build environment): + + make eason/greatsword80:default + +Flashing example for this keyboard: + + make eason/greatsword80: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/greatsword80/rules.mk b/keyboards/eason/greatsword80/rules.mk new file mode 100644 index 0000000000..2542628fd4 --- /dev/null +++ b/keyboards/eason/greatsword80/rules.mk @@ -0,0 +1,12 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output diff --git a/keyboards/igloo/info.json b/keyboards/igloo/info.json new file mode 100644 index 0000000000..9ff5a23b0f --- /dev/null +++ b/keyboards/igloo/info.json @@ -0,0 +1,119 @@ +{ + "manufacturer": "Dong Jae Shin", + "keyboard_name": "Igloo", + "maintainer": "Dong Jae Shin", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["F7", "F6", "F5", "F4", "F1", "F0", + "B0", "B1", "B2", "B4", "B5", "B6", + "C6", "C7", "D5", "D6", "D4"], + "rows": ["B7", "D0", "D1", "D2", "D3"] + }, + "processor": "atmega32u4", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0xBEAD" + }, + "layouts": { + "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], "w": 2, "x": 13, "y": 0 }, + { "matrix": [0, 14], "x": 15.25, "y": 0 }, + { "matrix": [0, 15], "x": 16.25, "y": 0 }, + { "matrix": [0, 16], "x": 17.25, "y": 0 }, + + { "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1.5, "y": 1 }, + { "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "matrix": [1, 3], "x": 3.5, "y": 1 }, + { "matrix": [1, 4], "x": 4.5, "y": 1 }, + { "matrix": [1, 5], "x": 5.5, "y": 1 }, + { "matrix": [1, 6], "x": 6.5, "y": 1 }, + { "matrix": [1, 7], "x": 7.5, "y": 1 }, + { "matrix": [1, 8], "x": 8.5, "y": 1 }, + { "matrix": [1, 9], "x": 9.5, "y": 1 }, + { "matrix": [1, 10], "x": 10.5, "y": 1 }, + { "matrix": [1, 11], "x": 11.5, "y": 1 }, + { "matrix": [1, 12], "x": 12.5, "y": 1 }, + { "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 }, + { "matrix": [1, 14], "x": 15.25, "y": 1 }, + { "matrix": [1, 15], "x": 16.25, "y": 1 }, + { "matrix": [1, 16], "x": 17.25, "y": 1 }, + + { "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1.75, "y": 2 }, + { "matrix": [2, 2], "x": 2.75, "y": 2 }, + { "matrix": [2, 3], "x": 3.75, "y": 2 }, + { "matrix": [2, 4], "x": 4.75, "y": 2 }, + { "matrix": [2, 5], "x": 5.75, "y": 2 }, + { "matrix": [2, 6], "x": 6.75, "y": 2 }, + { "matrix": [2, 7], "x": 7.75, "y": 2 }, + { "matrix": [2, 8], "x": 8.75, "y": 2 }, + { "matrix": [2, 9], "x": 9.75, "y": 2 }, + { "matrix": [2, 10], "x": 10.75, "y": 2 }, + { "matrix": [2, 11], "x": 11.75, "y": 2 }, + { "matrix": [2, 12], "w": 2.25, "x": 12.75, "y": 2 }, + { "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "matrix": [2, 14], "x": 12.75, "y": 2 }, + { "matrix": [2, 15], "x": 13, "y": 0 }, + + + { "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "matrix": [3, 2], "x": 2.25, "y": 3 }, + { "matrix": [3, 3], "x": 3.25, "y": 3 }, + { "matrix": [3, 4], "x": 4.25, "y": 3 }, + { "matrix": [3, 5], "x": 5.25, "y": 3 }, + { "matrix": [3, 6], "x": 6.25, "y": 3 }, + { "matrix": [3, 7], "x": 7.25, "y": 3 }, + { "matrix": [3, 8], "x": 8.25, "y": 3 }, + { "matrix": [3, 9], "x": 9.25, "y": 3 }, + { "matrix": [3, 10], "x": 10.25, "y": 3 }, + { "matrix": [3, 11], "x": 11.25, "y": 3 }, + { "matrix": [3, 12], "x": 12.25, "y": 3 }, + { "matrix": [3, 14], "x": 13.25, "y": 3 }, + { "matrix": [3, 15], "x": 16.25, "y": 3 }, + + { "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 }, + { "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 }, + { "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 }, + { "matrix": [4, 3], "x": 6.25, "y": 4 }, + { "matrix": [4, 4], "w": 2.25, "x": 4, "y": 4 }, + { "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 }, + { "matrix": [4, 6], "w": 2.25, "x": 7.25, "y": 4 }, + { "matrix": [4, 9], "w": 1.25, "x": 10, "y": 4 }, + { "matrix": [4, 10], "w": 1.25, "x": 11.25, "y": 4 }, + { "matrix": [4, 11], "w": 1.25, "x": 12.5, "y": 4 }, + { "matrix": [4, 12], "w": 1.25, "x": 13.75, "y": 4 }, + { "matrix": [4, 13], "w": 1.25, "x": 15, "y": 4 }, + { "matrix": [4, 14], "x": 15.25, "y": 4 }, + { "matrix": [4, 15], "x": 16.25, "y": 4 }, + { "matrix": [4, 16], "x": 17.25, "y": 4 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/igloo/keymaps/default/keymap.c b/keyboards/igloo/keymaps/default/keymap.c new file mode 100644 index 0000000000..ec59b5ad0b --- /dev/null +++ b/keyboards/igloo/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* +Copyright 2023 Dong Jae Shin + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_tkl_nofrow_ansi( + // 0, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_NONUS_HASH, KC_BSPC, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LAYER1] = LAYOUT_tkl_nofrow_ansi( + // 0, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/igloo/keymaps/via/keymap.c b/keyboards/igloo/keymaps/via/keymap.c new file mode 100644 index 0000000000..ec59b5ad0b --- /dev/null +++ b/keyboards/igloo/keymaps/via/keymap.c @@ -0,0 +1,42 @@ +/* +Copyright 2023 Dong Jae Shin + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ +#include QMK_KEYBOARD_H +enum layers { + _LAYER0, + _LAYER1, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_LAYER0] = LAYOUT_tkl_nofrow_ansi( + // 0, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_ENT, KC_NONUS_HASH, KC_BSPC, + KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP, + KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [_LAYER1] = LAYOUT_tkl_nofrow_ansi( + // 0, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; diff --git a/keyboards/igloo/keymaps/via/rules.mk b/keyboards/igloo/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/igloo/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/igloo/readme.md b/keyboards/igloo/readme.md new file mode 100644 index 0000000000..c5e16c13a9 --- /dev/null +++ b/keyboards/igloo/readme.md @@ -0,0 +1,18 @@ +# Igloo + +* Keyboard Maintainer: [Chris Shin](https://github.com/djok0127) +* Hardware Supported: Igloo PCB + +Make example for this keyboard (after setting up your build environment): + + make igloo:default + +Flashing example for this keyboard: + + make igloo: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 + +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead diff --git a/keyboards/igloo/rules.mk b/keyboards/igloo/rules.mk new file mode 100644 index 0000000000..6e7633bfe0 --- /dev/null +++ b/keyboards/igloo/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/kamigakushi/info.json b/keyboards/kamigakushi/info.json index fc8de7bdca..9358b0a79a 100644 --- a/keyboards/kamigakushi/info.json +++ b/keyboards/kamigakushi/info.json @@ -112,8 +112,8 @@ { "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 }, { "matrix": [4, 1], "x": 1.5, "y": 4 }, { "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 }, - { "matrix": [4, 3], "w": 7, "x": 4, "y": 4 }, - { "matrix": [4, 10], "w": 1.5, "x": 11, "y": 4 }, + { "matrix": [4, 7], "w": 7, "x": 4, "y": 4 }, + { "matrix": [4, 11], "w": 1.5, "x": 11, "y": 4 }, { "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/keychron/q2/ansi/info.json b/keyboards/keychron/q2/ansi/info.json index d125560dde..054786185a 100644 --- a/keyboards/keychron/q2/ansi/info.json +++ b/keyboards/keychron/q2/ansi/info.json @@ -8,7 +8,7 @@ "pid": "0x0110", "device_version": "1.0.0" }, - "processor": "STM32L433", + "processor": "STM32L432", "bootloader": "stm32-dfu", "layouts": { "LAYOUT_ansi_67": { diff --git a/keyboards/keychron/q2/ansi_encoder/info.json b/keyboards/keychron/q2/ansi_encoder/info.json index 01d326a983..f3eddd9ecb 100644 --- a/keyboards/keychron/q2/ansi_encoder/info.json +++ b/keyboards/keychron/q2/ansi_encoder/info.json @@ -8,7 +8,7 @@ "pid": "0x0111", "device_version": "1.0.0" }, - "processor": "STM32L433", + "processor": "STM32L432", "bootloader": "stm32-dfu", "layouts": { "LAYOUT_ansi_67": { diff --git a/keyboards/keychron/q2/iso/info.json b/keyboards/keychron/q2/iso/info.json index d7b4764028..e295fcef18 100644 --- a/keyboards/keychron/q2/iso/info.json +++ b/keyboards/keychron/q2/iso/info.json @@ -8,7 +8,7 @@ "pid": "0x0112", "device_version": "1.0.0" }, - "processor": "STM32L433", + "processor": "STM32L432", "bootloader": "stm32-dfu", "layouts": { "LAYOUT_iso_68": { diff --git a/keyboards/keychron/q2/iso_encoder/info.json b/keyboards/keychron/q2/iso_encoder/info.json index e6fe1a5b49..36184a8807 100644 --- a/keyboards/keychron/q2/iso_encoder/info.json +++ b/keyboards/keychron/q2/iso_encoder/info.json @@ -8,7 +8,7 @@ "pid": "0x0113", "device_version": "1.0.0" }, - "processor": "STM32L433", + "processor": "STM32L432", "bootloader": "stm32-dfu", "layouts": { "LAYOUT_iso_68": { diff --git a/keyboards/keychron/q2/jis/config.h b/keyboards/keychron/q2/jis/config.h new file mode 100644 index 0000000000..2d83933f9a --- /dev/null +++ b/keyboards/keychron/q2/jis/config.h @@ -0,0 +1,27 @@ +/* Copyright 2023 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* RGB Matrix Configuration */ +#define DRIVER_1_LED_TOTAL 35 +#define DRIVER_2_LED_TOTAL 36 +#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) + +#define CKLED2001_CURRENT_TUNE { 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D } + +/* Enable caps-lock LED */ +#define CAPS_LOCK_LED_INDEX 30 diff --git a/keyboards/keychron/q2/jis/info.json b/keyboards/keychron/q2/jis/info.json new file mode 100644 index 0000000000..d41bf49cb2 --- /dev/null +++ b/keyboards/keychron/q2/jis/info.json @@ -0,0 +1,94 @@ +{ + "keyboard_name": "Keychron Q2", + "manufacturer": "Keychron", + "url": "https://github.com/Keychron", + "maintainer": "lalalademaxiya1", + "usb": { + "vid": "0x3434", + "pid": "0x0114", + "device_version": "1.0.0" + }, + "processor": "STM32L432", + "bootloader": "stm32-dfu", + "layouts": { + "LAYOUT_jis_71": { + "layout": [ + {"matrix":[0, 0], "x":0, "y":0.25}, + {"matrix":[0, 1], "x":1, "y":0.25}, + {"matrix":[0, 2], "x":2, "y":0.25}, + {"matrix":[0, 3], "x":3, "y":0.25}, + {"matrix":[0, 4], "x":4, "y":0.25}, + {"matrix":[0, 5], "x":5, "y":0.25}, + {"matrix":[0, 6], "x":6, "y":0.25}, + {"matrix":[0, 7], "x":7, "y":0.25}, + {"matrix":[0, 8], "x":8, "y":0.25}, + {"matrix":[0, 9], "x":9, "y":0.25}, + {"matrix":[0,10], "x":10, "y":0.25}, + {"matrix":[0,11], "x":11, "y":0.25}, + {"matrix":[0,12], "x":12, "y":0.25}, + {"matrix":[0,13], "x":13, "y":0.25}, + {"matrix":[3, 1], "x":14, "y":0.25}, + {"matrix":[0,14], "x":15.25, "y":0}, + + {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5}, + {"matrix":[1, 1], "x":1.5, "y":1.25}, + {"matrix":[1, 2], "x":2.5, "y":1.25}, + {"matrix":[1, 3], "x":3.5, "y":1.25}, + {"matrix":[1, 4], "x":4.5, "y":1.25}, + {"matrix":[1, 5], "x":5.5, "y":1.25}, + {"matrix":[1, 6], "x":6.5, "y":1.25}, + {"matrix":[1, 7], "x":7.5, "y":1.25}, + {"matrix":[1, 8], "x":8.5, "y":1.25}, + {"matrix":[1, 9], "x":9.5, "y":1.25}, + {"matrix":[1,10], "x":10.5, "y":1.25}, + {"matrix":[1,11], "x":11.5, "y":1.25}, + {"matrix":[1,12], "x":12.5, "y":1.25}, + {"matrix":[1,14], "x":15.25, "y":1.25}, + + {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75}, + {"matrix":[2, 1], "x":1.75, "y":2.25}, + {"matrix":[2, 2], "x":2.75, "y":2.25}, + {"matrix":[2, 3], "x":3.75, "y":2.25}, + {"matrix":[2, 4], "x":4.75, "y":2.25}, + {"matrix":[2, 5], "x":5.75, "y":2.25}, + {"matrix":[2, 6], "x":6.75, "y":2.25}, + {"matrix":[2, 7], "x":7.75, "y":2.25}, + {"matrix":[2, 8], "x":8.75, "y":2.25}, + {"matrix":[2, 9], "x":9.75, "y":2.25}, + {"matrix":[2,10], "x":10.75, "y":2.25}, + {"matrix":[2,11], "x":11.75, "y":2.25}, + {"matrix":[2,13], "x":12.75, "y":2.25}, + {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2}, + {"matrix":[2,14], "x":15.25, "y":2.25}, + + {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25}, + {"matrix":[3, 2], "x":2.25, "y":3.25}, + {"matrix":[3, 3], "x":3.25, "y":3.25}, + {"matrix":[3, 4], "x":4.25, "y":3.25}, + {"matrix":[3, 5], "x":5.25, "y":3.25}, + {"matrix":[3, 6], "x":6.25, "y":3.25}, + {"matrix":[3, 7], "x":7.25, "y":3.25}, + {"matrix":[3, 8], "x":8.25, "y":3.25}, + {"matrix":[3, 9], "x":9.25, "y":3.25}, + {"matrix":[3,10], "x":10.25, "y":3.25}, + {"matrix":[3,11], "x":11.25, "y":3.25}, + {"matrix":[3,12], "x":12.25, "y":3.25}, + {"matrix":[3,13], "x":13.25, "y":3.25}, + {"matrix":[3,14], "x":14.25, "y":3.25}, + + {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25}, + {"matrix":[4, 1], "x":1.25, "y":4.25}, + {"matrix":[4, 2], "x":2.25, "y":4.25, "w":1.25}, + {"matrix":[4, 3], "x":3.5, "y":4.25}, + {"matrix":[4, 6], "x":4.5, "y":4.25, "w":4.5}, + {"matrix":[4, 9], "x":9, "y":4.25, "w":1.25}, + {"matrix":[4,10], "x":10.25, "y":4.25}, + {"matrix":[4,11], "x":11.25, "y":4.25}, + {"matrix":[4,12], "x":12.25, "y":4.25}, + {"matrix":[4,13], "x":13.25, "y":4.25}, + {"matrix":[2,12], "x":14.25, "y":4.25}, + {"matrix":[4,14], "x":15.25, "y":4.25} + ] + } + } +} diff --git a/keyboards/keychron/q2/jis/jis.c b/keyboards/keychron/q2/jis/jis.c new file mode 100644 index 0000000000..31ed1edc58 --- /dev/null +++ b/keyboards/keychron/q2/jis/jis.c @@ -0,0 +1,134 @@ +/* Copyright 2023 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +#ifdef RGB_MATRIX_ENABLE + +const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {0, C_1, A_1, B_1}, + {0, C_2, A_2, B_2}, + {0, C_3, A_3, B_3}, + {0, C_4, A_4, B_4}, + {0, C_5, A_5, B_5}, + {0, C_6, A_6, B_6}, + {0, C_7, A_7, B_7}, + {0, C_8, A_8, B_8}, + {0, C_9, A_9, B_9}, + {0, C_10, A_10, B_10}, + {0, C_11, A_11, B_11}, + {0, C_12, A_12, B_12}, + {0, C_13, A_13, B_13}, + {0, C_14, A_14, B_14}, + {0, C_15, A_15, B_15}, + {0, C_16, A_16, B_16}, + + {0, F_1, D_1, E_1}, + {0, F_2, D_2, E_2}, + {0, F_3, D_3, E_3}, + {0, F_4, D_4, E_4}, + {0, F_5, D_5, E_5}, + {0, F_6, D_6, E_6}, + {0, F_7, D_7, E_7}, + {0, F_8, D_8, E_8}, + {0, F_9, D_9, E_9}, + {0, F_10, D_10, E_10}, + {0, F_11, D_11, E_11}, + {0, F_12, D_12, E_12}, + {0, F_13, D_13, E_13}, + {0, F_16, D_16, E_16}, + + {0, I_1, G_1, H_1}, + {0, I_2, G_2, H_2}, + {0, I_3, G_3, H_3}, + {0, I_4, G_4, H_4}, + {0, I_5, G_5, H_5}, + {1, I_6, G_6, H_6}, + {1, I_7, G_7, H_7}, + {1, I_8, G_8, H_8}, + {1, I_9, G_9, H_9}, + {1, I_10, G_10, H_10}, + {1, I_11, G_11, H_11}, + {1, I_12, G_12, H_12}, + {1, I_14, G_14, H_14}, + {0, F_14, D_14, E_14}, + {1, I_16, G_16, H_16}, + + {1, C_1, A_1, B_1}, + {1, C_3, A_3, B_3}, + {1, C_4, A_4, B_4}, + {1, C_5, A_5, B_5}, + {1, C_6, A_6, B_6}, + {1, C_7, A_7, B_7}, + {1, C_8, A_8, B_8}, + {1, C_9, A_9, B_9}, + {1, C_10, A_10, B_10}, + {1, C_11, A_11, B_11}, + {1, C_12, A_12, B_12}, + {1, C_13, A_13, B_13}, + {1, C_14, A_14, B_14}, + {1, C_15, A_15, B_15}, + + {1, F_1, D_1, E_1}, + {1, F_2, D_2, E_2}, + {1, F_3, D_3, E_3}, + {1, F_4, D_4, E_4}, + {1, F_7, D_7, E_7}, + {1, F_10, D_10, E_10}, + {1, F_11, D_11, E_11}, + {1, F_12, D_12, E_12}, + {1, F_13, D_13, E_13}, + {1, F_14, D_14, E_14}, + {1, F_15, D_15, E_15}, + {1, F_16, D_16, E_16} +}; + +#define __ NO_LED + +led_config_t g_led_config = { + { + // Key Matrix to LED Index + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15 }, + { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 43, 29 }, + { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 69, 42, 44 }, + { 45, 14, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58 }, + { 59, 60, 61, 62, __, __, 63, __, __, 64, 65, 66, 67, 68, 70 } + }, + { + // LED Index to Physical Position + {0,4}, {15,4}, {29,4}, {44,4}, {59,4}, {73,4}, {88,4}, {103,4}, {117,4}, {132,4}, {146,4}, {161,4}, {176,4}, {190,4}, {205,4}, {224,0}, + {4,19}, {22,19}, {37,19}, {51,19}, {66,19}, {81,19}, {95,19}, {110,19}, {125,19}, {139,19}, {154,19}, {168,19}, {183,19}, {224,19}, + {6,34}, {26,34}, {40,34}, {55,34}, {70,34}, {84,34}, {99,34}, {114,34}, {128,34}, {143,34}, {158,34}, {172,34}, {187,34}, {207,29}, {224,34}, + {9,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {150,49}, {165,49}, {179,49}, {194,49}, {209,49}, + {2,64}, {18,64}, {35,64}, {51,64}, {92,64}, {134,64}, {150,64}, {165,64}, {179,64}, {194,64}, {209,64}, {223,64}, + }, + { + // RGB LED Index to Flag + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1 + } +}; + +#endif // RGB_MATRIX_ENABLE diff --git a/keyboards/keychron/q2/jis/keymaps/default/keymap.c b/keyboards/keychron/q2/jis/keymaps/default/keymap.c new file mode 100644 index 0000000000..e11a31cda5 --- /dev/null +++ b/keyboards/keychron/q2/jis/keymaps/default/keymap.c @@ -0,0 +1,67 @@ +/* Copyright 2023 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// clang-format off + +enum layers{ + MAC_BASE, + WIN_BASE, + _FN1, + _FN2, + _FN3 +}; + +#define KC_TASK LGUI(KC_TAB) +#define KC_FLXP LGUI(KC_E) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_jis_71( + 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_INT3, KC_BSPC, KC_INS, + 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_DEL, + 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_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, + KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT), + + [WIN_BASE] = LAYOUT_jis_71( + 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_INT3, KC_BSPC, KC_INS, + 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_DEL, + 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_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, + KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT), + + [_FN1] = LAYOUT_jis_71( + KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_FN2] = LAYOUT_jis_71( + KC_GRV, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_FN3] = LAYOUT_jis_71( + KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/keychron/q2/jis/keymaps/keychron/keymap.c b/keyboards/keychron/q2/jis/keymaps/keychron/keymap.c new file mode 100644 index 0000000000..930f461466 --- /dev/null +++ b/keyboards/keychron/q2/jis/keymaps/keychron/keymap.c @@ -0,0 +1,74 @@ +/* Copyright 2023 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "keychron_common.h" + +// clang-format off + +enum layers{ + MAC_BASE, + WIN_BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_jis_71( + 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_INT3, KC_BSPC, KC_INS, + 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_DEL, + 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_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, + KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT), + + [WIN_BASE] = LAYOUT_jis_71( + 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_INT3, KC_BSPC, KC_INS, + 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_DEL, + 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_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, + KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT), + + [_FN1] = LAYOUT_jis_71( + KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_FN2] = LAYOUT_jis_71( + KC_GRV, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_FN3] = LAYOUT_jis_71( + KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) +}; + +// clang-format on + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (!process_record_keychron(keycode, record)) { + return false; + } + return true; +} diff --git a/keyboards/keychron/q2/jis/keymaps/keychron/rules.mk b/keyboards/keychron/q2/jis/keymaps/keychron/rules.mk new file mode 100644 index 0000000000..495e8907b4 --- /dev/null +++ b/keyboards/keychron/q2/jis/keymaps/keychron/rules.mk @@ -0,0 +1,4 @@ +VIA_ENABLE = yes + +VPATH += keyboards/keychron/common +SRC += keychron_common.c diff --git a/keyboards/keychron/q2/jis/keymaps/via/keymap.c b/keyboards/keychron/q2/jis/keymaps/via/keymap.c new file mode 100644 index 0000000000..e11a31cda5 --- /dev/null +++ b/keyboards/keychron/q2/jis/keymaps/via/keymap.c @@ -0,0 +1,67 @@ +/* Copyright 2023 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// clang-format off + +enum layers{ + MAC_BASE, + WIN_BASE, + _FN1, + _FN2, + _FN3 +}; + +#define KC_TASK LGUI(KC_TAB) +#define KC_FLXP LGUI(KC_E) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_jis_71( + 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_INT3, KC_BSPC, KC_INS, + 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_DEL, + 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_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, + KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT), + + [WIN_BASE] = LAYOUT_jis_71( + 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_INT3, KC_BSPC, KC_INS, + 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_DEL, + 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_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, + KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT), + + [_FN1] = LAYOUT_jis_71( + KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_FN2] = LAYOUT_jis_71( + KC_GRV, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_FN3] = LAYOUT_jis_71( + KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) +}; diff --git a/keyboards/keychron/q2/jis/keymaps/via/rules.mk b/keyboards/keychron/q2/jis/keymaps/via/rules.mk new file mode 100644 index 0000000000..1e5b99807c --- /dev/null +++ b/keyboards/keychron/q2/jis/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/keychron/q2/jis/rules.mk b/keyboards/keychron/q2/jis/rules.mk new file mode 100644 index 0000000000..345807d824 --- /dev/null +++ b/keyboards/keychron/q2/jis/rules.mk @@ -0,0 +1,21 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = yes # Enable USB N-key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +DIP_SWITCH_ENABLE = yes +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = CKLED2001 +EEPROM_DRIVER = wear_leveling +WEAR_LEVELING_DRIVER = embedded_flash + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE + diff --git a/keyboards/keychron/q2/jis_encoder/config.h b/keyboards/keychron/q2/jis_encoder/config.h new file mode 100644 index 0000000000..e0ca950bc3 --- /dev/null +++ b/keyboards/keychron/q2/jis_encoder/config.h @@ -0,0 +1,33 @@ +/* Copyright 2023 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +/* RGB Matrix Configuration */ +#define DRIVER_1_LED_TOTAL 35 +#define DRIVER_2_LED_TOTAL 36 +#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) + +#define CKLED2001_CURRENT_TUNE { 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D, 0xC0, 0xC0, 0x5D } + +/* Encoder Configuration */ +#define ENCODERS_PAD_A { A10 } +#define ENCODERS_PAD_B { B5 } +#define ENCODER_RESOLUTION 4 +#define ENCODER_DEFAULT_POS 0x3 + +/* Enable caps-lock LED */ +#define CAPS_LOCK_LED_INDEX 30 diff --git a/keyboards/keychron/q2/jis_encoder/info.json b/keyboards/keychron/q2/jis_encoder/info.json new file mode 100644 index 0000000000..a0b5852b15 --- /dev/null +++ b/keyboards/keychron/q2/jis_encoder/info.json @@ -0,0 +1,94 @@ +{ + "keyboard_name": "Keychron Q2", + "manufacturer": "Keychron", + "url": "https://github.com/Keychron", + "maintainer": "lalalademaxiya1", + "usb": { + "vid": "0x3434", + "pid": "0x0115", + "device_version": "1.0.0" + }, + "processor": "STM32L432", + "bootloader": "stm32-dfu", + "layouts": { + "LAYOUT_jis_71": { + "layout": [ + {"matrix":[0, 0], "x":0, "y":0.25}, + {"matrix":[0, 1], "x":1, "y":0.25}, + {"matrix":[0, 2], "x":2, "y":0.25}, + {"matrix":[0, 3], "x":3, "y":0.25}, + {"matrix":[0, 4], "x":4, "y":0.25}, + {"matrix":[0, 5], "x":5, "y":0.25}, + {"matrix":[0, 6], "x":6, "y":0.25}, + {"matrix":[0, 7], "x":7, "y":0.25}, + {"matrix":[0, 8], "x":8, "y":0.25}, + {"matrix":[0, 9], "x":9, "y":0.25}, + {"matrix":[0,10], "x":10, "y":0.25}, + {"matrix":[0,11], "x":11, "y":0.25}, + {"matrix":[0,12], "x":12, "y":0.25}, + {"matrix":[0,13], "x":13, "y":0.25}, + {"matrix":[3, 1], "x":14, "y":0.25}, + {"matrix":[0,14], "x":15.25, "y":0}, + + {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5}, + {"matrix":[1, 1], "x":1.5, "y":1.25}, + {"matrix":[1, 2], "x":2.5, "y":1.25}, + {"matrix":[1, 3], "x":3.5, "y":1.25}, + {"matrix":[1, 4], "x":4.5, "y":1.25}, + {"matrix":[1, 5], "x":5.5, "y":1.25}, + {"matrix":[1, 6], "x":6.5, "y":1.25}, + {"matrix":[1, 7], "x":7.5, "y":1.25}, + {"matrix":[1, 8], "x":8.5, "y":1.25}, + {"matrix":[1, 9], "x":9.5, "y":1.25}, + {"matrix":[1,10], "x":10.5, "y":1.25}, + {"matrix":[1,11], "x":11.5, "y":1.25}, + {"matrix":[1,12], "x":12.5, "y":1.25}, + {"matrix":[1,14], "x":15.25, "y":1.25}, + + {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75}, + {"matrix":[2, 1], "x":1.75, "y":2.25}, + {"matrix":[2, 2], "x":2.75, "y":2.25}, + {"matrix":[2, 3], "x":3.75, "y":2.25}, + {"matrix":[2, 4], "x":4.75, "y":2.25}, + {"matrix":[2, 5], "x":5.75, "y":2.25}, + {"matrix":[2, 6], "x":6.75, "y":2.25}, + {"matrix":[2, 7], "x":7.75, "y":2.25}, + {"matrix":[2, 8], "x":8.75, "y":2.25}, + {"matrix":[2, 9], "x":9.75, "y":2.25}, + {"matrix":[2,10], "x":10.75, "y":2.25}, + {"matrix":[2,11], "x":11.75, "y":2.25}, + {"matrix":[2,13], "x":12.75, "y":2.25}, + {"matrix":[1,13], "x":13.75, "y":1.25, "w":1.25, "h":2}, + {"matrix":[2,14], "x":15.25, "y":2.25}, + + {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25}, + {"matrix":[3, 2], "x":2.25, "y":3.25}, + {"matrix":[3, 3], "x":3.25, "y":3.25}, + {"matrix":[3, 4], "x":4.25, "y":3.25}, + {"matrix":[3, 5], "x":5.25, "y":3.25}, + {"matrix":[3, 6], "x":6.25, "y":3.25}, + {"matrix":[3, 7], "x":7.25, "y":3.25}, + {"matrix":[3, 8], "x":8.25, "y":3.25}, + {"matrix":[3, 9], "x":9.25, "y":3.25}, + {"matrix":[3,10], "x":10.25, "y":3.25}, + {"matrix":[3,11], "x":11.25, "y":3.25}, + {"matrix":[3,12], "x":12.25, "y":3.25}, + {"matrix":[3,13], "x":13.25, "y":3.25}, + {"matrix":[3,14], "x":14.25, "y":3.25}, + + {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25}, + {"matrix":[4, 1], "x":1.25, "y":4.25}, + {"matrix":[4, 2], "x":2.25, "y":4.25, "w":1.25}, + {"matrix":[4, 3], "x":3.5, "y":4.25}, + {"matrix":[4, 6], "x":4.5, "y":4.25, "w":4.5}, + {"matrix":[4, 9], "x":9, "y":4.25, "w":1.25}, + {"matrix":[4,10], "x":10.25, "y":4.25}, + {"matrix":[4,11], "x":11.25, "y":4.25}, + {"matrix":[4,12], "x":12.25, "y":4.25}, + {"matrix":[4,13], "x":13.25, "y":4.25}, + {"matrix":[2,12], "x":14.25, "y":4.25}, + {"matrix":[4,14], "x":15.25, "y":4.25} + ] + } + } +} diff --git a/keyboards/keychron/q2/jis_encoder/jis_encoder.c b/keyboards/keychron/q2/jis_encoder/jis_encoder.c new file mode 100644 index 0000000000..de20255e0b --- /dev/null +++ b/keyboards/keychron/q2/jis_encoder/jis_encoder.c @@ -0,0 +1,134 @@ +/* Copyright 2023 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "quantum.h" + +#ifdef RGB_MATRIX_ENABLE + +const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = { +/* Refer to IS31 manual for these locations + * driver + * | R location + * | | G location + * | | | B location + * | | | | */ + {0, C_1, A_1, B_1}, + {0, C_2, A_2, B_2}, + {0, C_3, A_3, B_3}, + {0, C_4, A_4, B_4}, + {0, C_5, A_5, B_5}, + {0, C_6, A_6, B_6}, + {0, C_7, A_7, B_7}, + {0, C_8, A_8, B_8}, + {0, C_9, A_9, B_9}, + {0, C_10, A_10, B_10}, + {0, C_11, A_11, B_11}, + {0, C_12, A_12, B_12}, + {0, C_13, A_13, B_13}, + {0, C_14, A_14, B_14}, + {0, C_15, A_15, B_15}, + {0, C_16, A_16, B_16}, + + {0, F_1, D_1, E_1}, + {0, F_2, D_2, E_2}, + {0, F_3, D_3, E_3}, + {0, F_4, D_4, E_4}, + {0, F_5, D_5, E_5}, + {0, F_6, D_6, E_6}, + {0, F_7, D_7, E_7}, + {0, F_8, D_8, E_8}, + {0, F_9, D_9, E_9}, + {0, F_10, D_10, E_10}, + {0, F_11, D_11, E_11}, + {0, F_12, D_12, E_12}, + {0, F_13, D_13, E_13}, + {0, F_16, D_16, E_16}, + + {0, I_1, G_1, H_1}, + {0, I_2, G_2, H_2}, + {0, I_3, G_3, H_3}, + {0, I_4, G_4, H_4}, + {0, I_5, G_5, H_5}, + {1, I_6, G_6, H_6}, + {1, I_7, G_7, H_7}, + {1, I_8, G_8, H_8}, + {1, I_9, G_9, H_9}, + {1, I_10, G_10, H_10}, + {1, I_11, G_11, H_11}, + {1, I_12, G_12, H_12}, + {1, I_14, G_14, H_14}, + {0, F_14, D_14, E_14}, + {1, I_16, G_16, H_16}, + + {1, C_1, A_1, B_1}, + {1, C_3, A_3, B_3}, + {1, C_4, A_4, B_4}, + {1, C_5, A_5, B_5}, + {1, C_6, A_6, B_6}, + {1, C_7, A_7, B_7}, + {1, C_8, A_8, B_8}, + {1, C_9, A_9, B_9}, + {1, C_10, A_10, B_10}, + {1, C_11, A_11, B_11}, + {1, C_12, A_12, B_12}, + {1, C_13, A_13, B_13}, + {1, C_14, A_14, B_14}, + {1, C_15, A_15, B_15}, + + {1, F_1, D_1, E_1}, + {1, F_2, D_2, E_2}, + {1, F_3, D_3, E_3}, + {1, F_4, D_4, E_4}, + {1, F_7, D_7, E_7}, + {1, F_10, D_10, E_10}, + {1, F_11, D_11, E_11}, + {1, F_12, D_12, E_12}, + {1, F_13, D_13, E_13}, + {1, F_14, D_14, E_14}, + {1, F_15, D_15, E_15}, + {1, F_16, D_16, E_16} +}; + +#define __ NO_LED + +led_config_t g_led_config = { + { + // Key Matrix to LED Index + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15 }, + { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 43, 29 }, + { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 69, 42, 44 }, + { 45, 14, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58 }, + { 59, 60, 61, 62, __, __, 63, __, __, 64, 65, 66, 67, 68, 70 }, + }, + { + // LED Index to Physical Position + {0,4}, {15,4}, {29,4}, {44,4}, {59,4}, {73,4}, {88,4}, {103,4}, {117,4}, {132,4}, {146,4}, {161,4}, {176,4}, {190,4}, {205,4}, {224,0}, + {4,19}, {22,19}, {37,19}, {51,19}, {66,19}, {81,19}, {95,19}, {110,19}, {125,19}, {139,19}, {154,19}, {168,19}, {183,19}, {224,19}, + {6,34}, {26,34}, {40,34}, {55,34}, {70,34}, {84,34}, {99,34}, {114,34}, {128,34}, {143,34}, {158,34}, {172,34}, {187,34}, {207,29}, {224,34}, + {9,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {150,49}, {165,49}, {179,49}, {194,49}, {209,49}, + {2,64}, {18,64}, {35,64}, {51,64}, {92,64}, {134,64}, {150,64}, {165,64}, {179,64}, {194,64}, {209,64}, {223,64}, + }, + { + // RGB LED Index to Flag + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, + 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, + 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, + } +}; + +#endif // RGB_MATRIX_ENABLE diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/default/keymap.c b/keyboards/keychron/q2/jis_encoder/keymaps/default/keymap.c new file mode 100644 index 0000000000..e513ceba0d --- /dev/null +++ b/keyboards/keychron/q2/jis_encoder/keymaps/default/keymap.c @@ -0,0 +1,77 @@ +/* Copyright 2023 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// clang-format off + +enum layers{ + MAC_BASE, + WIN_BASE, + _FN1, + _FN2, + _FN3 +}; + +#define KC_TASK LGUI(KC_TAB) +#define KC_FLXP LGUI(KC_E) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_jis_71( + 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_INT3, KC_BSPC, KC_MUTE, + 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_DEL, + 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_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, + KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT), + + [WIN_BASE] = LAYOUT_jis_71( + 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_INT3, KC_BSPC, KC_MUTE, + 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_DEL, + 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_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, + KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT), + + [_FN1] = LAYOUT_jis_71( + KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_FN2] = LAYOUT_jis_71( + KC_GRV, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_FN3] = LAYOUT_jis_71( + KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, + [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, + [_FN3] = { ENCODER_CCW_CW(_______, _______)} +}; +#endif // ENCODER_MAP_ENABLE diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/default/rules.mk b/keyboards/keychron/q2/jis_encoder/keymaps/default/rules.mk new file mode 100644 index 0000000000..ee32568148 --- /dev/null +++ b/keyboards/keychron/q2/jis_encoder/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/keychron/keymap.c b/keyboards/keychron/q2/jis_encoder/keymaps/keychron/keymap.c new file mode 100644 index 0000000000..5a52f4ff15 --- /dev/null +++ b/keyboards/keychron/q2/jis_encoder/keymaps/keychron/keymap.c @@ -0,0 +1,84 @@ +/* Copyright 2023 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "keychron_common.h" + +// clang-format off + +enum layers{ + MAC_BASE, + WIN_BASE, + _FN1, + _FN2, + _FN3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_jis_71( + 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_INT3, KC_BSPC, KC_MUTE, + 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_DEL, + 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_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, + KC_LCTL, KC_LOPTN, KC_LCMMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT), + + [WIN_BASE] = LAYOUT_jis_71( + 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_INT3, KC_BSPC, KC_MUTE, + 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_DEL, + 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_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, + KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT), + + [_FN1] = LAYOUT_jis_71( + KC_GRV, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_FN2] = LAYOUT_jis_71( + KC_GRV, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_FN3] = LAYOUT_jis_71( + KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) +}; + +// clang-format on + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, + [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, + [_FN3] = { ENCODER_CCW_CW(_______, _______)} +}; +#endif // ENCODER_MAP_ENABLE + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (!process_record_keychron(keycode, record)) { + return false; + } + return true; +} diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/keychron/rules.mk b/keyboards/keychron/q2/jis_encoder/keymaps/keychron/rules.mk new file mode 100644 index 0000000000..9cf1a9b56c --- /dev/null +++ b/keyboards/keychron/q2/jis_encoder/keymaps/keychron/rules.mk @@ -0,0 +1,5 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes + +VPATH += keyboards/keychron/common +SRC += keychron_common.c diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/via/keymap.c b/keyboards/keychron/q2/jis_encoder/keymaps/via/keymap.c new file mode 100644 index 0000000000..e513ceba0d --- /dev/null +++ b/keyboards/keychron/q2/jis_encoder/keymaps/via/keymap.c @@ -0,0 +1,77 @@ +/* Copyright 2023 @ Keychron (https://www.keychron.com) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// clang-format off + +enum layers{ + MAC_BASE, + WIN_BASE, + _FN1, + _FN2, + _FN3 +}; + +#define KC_TASK LGUI(KC_TAB) +#define KC_FLXP LGUI(KC_E) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [MAC_BASE] = LAYOUT_jis_71( + 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_INT3, KC_BSPC, KC_MUTE, + 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_DEL, + 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_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, + KC_LCTL, KC_LOPT, KC_LCMD, KC_LNG2, KC_SPC, KC_LNG1, KC_RCMD, MO(_FN1), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT), + + [WIN_BASE] = LAYOUT_jis_71( + 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_INT3, KC_BSPC, KC_MUTE, + 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_DEL, + 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_HOME, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT, KC_UP, + KC_LCTL, KC_LWIN, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_RALT, MO(_FN2), MO(_FN3), KC_LEFT, KC_DOWN, KC_RGHT), + + [_FN1] = LAYOUT_jis_71( + KC_GRV, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_FN2] = LAYOUT_jis_71( + KC_GRV, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_TOG, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), + + [_FN3] = LAYOUT_jis_71( + KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, + RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [_FN1] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, + [_FN2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, + [_FN3] = { ENCODER_CCW_CW(_______, _______)} +}; +#endif // ENCODER_MAP_ENABLE diff --git a/keyboards/keychron/q2/jis_encoder/keymaps/via/rules.mk b/keyboards/keychron/q2/jis_encoder/keymaps/via/rules.mk new file mode 100644 index 0000000000..f1adcab005 --- /dev/null +++ b/keyboards/keychron/q2/jis_encoder/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/keychron/q2/jis_encoder/rules.mk b/keyboards/keychron/q2/jis_encoder/rules.mk new file mode 100644 index 0000000000..5240004b8c --- /dev/null +++ b/keyboards/keychron/q2/jis_encoder/rules.mk @@ -0,0 +1,22 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = yes # Enable USB N-key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +ENCODER_ENABLE = yes # Enable Encoder +DIP_SWITCH_ENABLE = yes +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = CKLED2001 +EEPROM_DRIVER = wear_leveling +WEAR_LEVELING_DRIVER = embedded_flash + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE + diff --git a/keyboards/keychron/q2/q2.c b/keyboards/keychron/q2/q2.c index 7a8edd8016..13b2238d17 100644 --- a/keyboards/keychron/q2/q2.c +++ b/keyboards/keychron/q2/q2.c @@ -1,4 +1,4 @@ -/* Copyright 2021 @ Keychron (https://www.keychron.com) +/* Copyright 2023 @ Keychron (https://www.keychron.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,3 +35,45 @@ bool dip_switch_update_kb(uint8_t index, bool active) { } #endif // DIP_SWITCH_ENABLE + +#if defined(RGB_MATRIX_ENABLE) && defined(CAPS_LOCK_LED_INDEX) + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + if (!process_record_user(keycode, record)) { return false; } + switch (keycode) { + case RGB_TOG: + if (record->event.pressed) { + switch (rgb_matrix_get_flags()) { + case LED_FLAG_ALL: { + rgb_matrix_set_flags(LED_FLAG_NONE); + rgb_matrix_set_color_all(0, 0, 0); + } break; + default: { + rgb_matrix_set_flags(LED_FLAG_ALL); + } break; + } + } + if (!rgb_matrix_is_enabled()) { + rgb_matrix_set_flags(LED_FLAG_ALL); + rgb_matrix_enable(); + } + return false; + } + return true; +} + +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; } + // RGB_MATRIX_INDICATOR_SET_COLOR(index, red, green, blue); + + if (host_keyboard_led_state().caps_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(CAPS_LOCK_LED_INDEX, 255, 255, 255); + } else { + if (!rgb_matrix_get_flags()) { + RGB_MATRIX_INDICATOR_SET_COLOR(CAPS_LOCK_LED_INDEX, 0, 0, 0); + } + } + return true; +} + +#endif // CAPS_LOCK_LED_INDEX diff --git a/keyboards/keychron/q2/readme.md b/keyboards/keychron/q2/readme.md index 7488df99f1..60144a1079 100644 --- a/keyboards/keychron/q2/readme.md +++ b/keyboards/keychron/q2/readme.md @@ -8,11 +8,11 @@ A customizable 65% keyboard. Make example for this keyboard (after setting up your build environment): - make keychron/q2/ansi:default + make keychron/q2/ansi:default Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid)) - make keychron/q2/ansi:default:flash + make keychron/q2/ansi:default:flash **Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard. diff --git a/keyboards/keychron/v10/ansi_encoder/info.json b/keyboards/keychron/v10/ansi_encoder/info.json index 5f08fa0072..9507fe6d32 100644 --- a/keyboards/keychron/v10/ansi_encoder/info.json +++ b/keyboards/keychron/v10/ansi_encoder/info.json @@ -5,7 +5,7 @@ "maintainer": "lalalademaxiya1", "usb": { "vid": "0x3434", - "pid": "0x01A1", + "pid": "0x03A1", "device_version": "1.0.0" }, "processor": "STM32L432", diff --git a/keyboards/linworks/fave84h/config.h b/keyboards/linworks/fave84h/config.h index f540eeed1e..516f30e96f 100644 --- a/keyboards/linworks/fave84h/config.h +++ b/keyboards/linworks/fave84h/config.h @@ -14,45 +14,20 @@ 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 - -/* key matrix size */ -#define MATRIX_ROWS 6 -#define MATRIX_COLS 17 - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * -*/ - -// Checked with Eagle Schematic -#define MATRIX_ROW_PINS { B1, B2, B3, D3, D1, D0 } -#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, B0, B7, E6} - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - /* Define RGB */ -#define RGBLED_NUM 86 -#define RGB_MATRIX_LED_COUNT 86 -#define RGB_DI_PIN D2 - #ifdef RGB_MATRIX_ENABLE +#define RGB_MATRIX_LED_COUNT 126 +#define RGB_DI_PIN D2 + #define RGB_DISABLE_WHEN_USB_SUSPENDED #define RGB_MATRIX_KEYPRESSES #define RGB_MATRIX_FRAMEBUFFER_EFFECTS #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120 -#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_ALL +#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT #define ENABLE_RGB_MATRIX_ALPHAS_MODS #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN @@ -107,4 +82,8 @@ along with this program. If not, see . #define ENABLE_RGB_MATRIX_SOLID_SPLASH #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#define EECONFIG_KB_DATA_SIZE 4 + +#define CAPS_INDICATOR_INDEX 12 + #endif diff --git a/keyboards/linworks/fave84h/fave84h.c b/keyboards/linworks/fave84h/fave84h.c deleted file mode 100644 index 4a17096df6..0000000000 --- a/keyboards/linworks/fave84h/fave84h.c +++ /dev/null @@ -1,44 +0,0 @@ -/* -Copyright 2020 -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 "fave84h.h" - -#ifdef RGB_MATRIX_ENABLE -led_config_t g_led_config = { - { - // Key Matrix to LED Index - { 47, NO_LED, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62 }, - { 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30 }, - { 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, - { 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, NO_LED, 0, NO_LED, NO_LED, NO_LED }, - { 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, NO_LED, 84, NO_LED, NO_LED, 85, NO_LED }, - { 72, 71, 70, NO_LED, NO_LED, 69, NO_LED, NO_LED, NO_LED, NO_LED, 68, NO_LED, 67, 66, 65, 64, 63 }, - }, { - // LED Index to Physical Position - { 0, 0 }, { 28, 0 }, { 42, 0 }, { 57, 0 }, { 71, 0 }, { 92, 0 }, { 106, 0 }, { 120, 0 }, { 134, 0 }, { 156, 0 }, { 170, 0 }, { 184, 0 }, { 198, 0 }, { 216, 0 }, { 230, 0 }, { 244, 0 }, - { 0, 15 }, { 14, 15 }, { 28, 15 }, { 42, 15 }, { 57, 15 }, { 71, 15 }, { 85, 15 }, { 99, 15 }, { 113, 15 }, { 127, 15 }, { 141, 15 }, { 156, 15 }, { 170, 15 }, { 191, 17 }, { 216, 15 }, { 230, 15 }, { 244, 15 }, - { 4, 27 }, { 21, 27 }, { 35, 27 }, { 50, 27 }, { 64, 27 }, { 78, 27 }, { 92, 27 }, { 106, 27 }, { 120, 27 }, { 134, 27 }, { 149, 27 }, { 163, 27 }, { 177, 27 }, { 194, 27 }, { 216, 27 }, { 230, 27 }, { 244, 27 }, - { 10, 40 }, { 25, 40 }, { 39, 40 }, { 53, 40 }, { 67, 40 }, { 81, 40 }, { 95, 40 }, { 110, 40 }, { 124, 40 }, { 138, 40 }, { 152, 40 }, { 166, 40 }, { 189, 40 }, - { 9, 52 }, { 32, 52 }, { 46, 52 }, { 60, 52 }, { 74, 52 }, { 88, 52 }, { 103, 52 }, { 117, 52 }, { 131, 52 }, { 145, 52 }, { 159, 52 }, { 186, 52 }, { 230, 52 }, - { 4, 64 }, { 21, 64 }, { 39, 64 }, { 99, 64 }, { 159, 64 }, { 177, 64 }, { 194, 64 }, { 216, 64 }, { 230, 64 }, { 244, 64 } - }, { - // LED Index to Flag - 1, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, - 9, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, - 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, - 1, 1, 1, 4, 1, 1, 1, 1, 1, 1 - } -}; -#endif diff --git a/keyboards/linworks/fave84h/fave84h.h b/keyboards/linworks/fave84h/fave84h.h deleted file mode 100644 index 1d97f97236..0000000000 --- a/keyboards/linworks/fave84h/fave84h.h +++ /dev/null @@ -1,69 +0,0 @@ -/* -Copyright 2020 -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" - -#define ___ KC_NO - -/* - * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ - * │00 │ │02 │03 │04 │05 │ │06 │07 │08 │09 │ │0A │0B │0C │0D │ │0E │0F │0G │ - * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ - * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───────┐ - * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │3C │ │1E │1F │1G │ │1D │ 2u Backspace - * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ └───────┘ - * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ │2E │2F │2G │ - * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ - * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │ - * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ - * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4C │ │4F │ - * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───┐ - * │50 │51 │52 │55 │5A │5C │5D │ │5E │5F │5G │ - * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘ - */ - -/* FAve 84H Keymap Definitions */ -#define LAYOUT_tkl_ansi_tsangan_split_bs( \ - K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K3C, K1E, K1F, K1G, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ - K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4C, K4F, \ - K50, K51, K52, K55, K5A, K5C, K5D, K5E, K5F, K5G \ -) { \ - { K00, ___, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, ___, ___, ___ }, \ - { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, ___, K4C, ___, ___, K4F, ___ }, \ - { K50, K51, K52, ___, ___, K55, ___, ___, ___, ___, K5A, ___, K5C, K5D, K5E, K5F, K5G } \ -} - -#define LAYOUT_tkl_ansi_tsangan( \ - K00, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ - K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4C, K4F, \ - K50, K51, K52, K55, K5A, K5C, K5D, K5E, K5F, K5G \ -) { \ - { K00, ___, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \ - { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, ___, ___, ___ }, \ - { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, ___, K4C, ___, ___, K4F, ___ }, \ - { K50, K51, K52, ___, ___, K55, ___, ___, ___, ___, K5A, ___, K5C, K5D, K5E, K5F, K5G } \ -} diff --git a/keyboards/linworks/fave84h/info.json b/keyboards/linworks/fave84h/info.json index 38af8fb3eb..e401639add 100644 --- a/keyboards/linworks/fave84h/info.json +++ b/keyboards/linworks/fave84h/info.json @@ -1,12 +1,160 @@ { - "keyboard_name": "FAve 84H", "manufacturer": "Lx3", - "url": "", + "keyboard_name": "FAve 84H", "maintainer": "ToastyStoemp", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true, + "rgblight": false + }, + "matrix_pins": { + "cols": ["F0", "F1", "F4", "F5", "F6", "F7", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4", "B0", "B7", "E6"], + "rows": ["B1", "B2", "B3", "D3", "D1", "D0"] + }, + "processor": "atmega32u4", + "rgb_matrix": { + "driver": "WS2812", + "layout": [ + { "flags": 1, "matrix": [3, 13], "x": 190, "y": 40 }, + { "flags": 4, "matrix": [3, 11], "x": 167, "y": 40 }, + { "flags": 4, "matrix": [3, 10], "x": 153, "y": 40 }, + { "flags": 4, "matrix": [3, 9], "x": 139, "y": 40 }, + { "flags": 4, "matrix": [3, 8], "x": 125, "y": 40 }, + { "flags": 4, "matrix": [3, 7], "x": 111, "y": 40 }, + { "flags": 4, "matrix": [3, 6], "x": 97, "y": 40 }, + { "flags": 4, "matrix": [3, 5], "x": 83, "y": 40 }, + { "flags": 4, "matrix": [3, 4], "x": 69, "y": 40 }, + { "flags": 4, "matrix": [3, 3], "x": 55, "y": 40 }, + { "flags": 4, "matrix": [3, 2], "x": 41, "y": 40 }, + { "flags": 4, "matrix": [3, 1], "x": 27, "y": 40 }, + { "flags": 1, "matrix": [3, 0], "x": 0, "y": 41 }, + { "flags": 1, "matrix": [2, 0], "x": 6, "y": 27 }, + { "flags": 4, "matrix": [2, 1], "x": 23, "y": 27 }, + { "flags": 4, "matrix": [2, 2], "x": 37, "y": 27 }, + { "flags": 4, "matrix": [2, 3], "x": 51, "y": 27 }, + { "flags": 4, "matrix": [2, 4], "x": 65, "y": 27 }, + { "flags": 4, "matrix": [2, 5], "x": 79, "y": 27 }, + { "flags": 4, "matrix": [2, 6], "x": 93, "y": 27 }, + { "flags": 4, "matrix": [2, 7], "x": 107, "y": 27 }, + { "flags": 4, "matrix": [2, 8], "x": 121, "y": 27 }, + { "flags": 4, "matrix": [2, 9], "x": 135, "y": 27 }, + { "flags": 4, "matrix": [2, 10], "x": 149, "y": 27 }, + { "flags": 4, "matrix": [2, 11], "x": 163, "y": 27 }, + { "flags": 4, "matrix": [2, 12], "x": 177, "y": 27 }, + { "flags": 1, "matrix": [2, 13], "x": 195, "y": 27 }, + { "flags": 1, "matrix": [2, 14], "x": 216, "y": 27 }, + { "flags": 1, "matrix": [2, 15], "x": 230, "y": 27 }, + { "flags": 1, "matrix": [2, 16], "x": 244, "y": 27 }, + { "flags": 1, "matrix": [1, 16], "x": 244, "y": 15 }, + { "flags": 1, "matrix": [1, 15], "x": 230, "y": 15 }, + { "flags": 1, "matrix": [1, 14], "x": 216, "y": 15 }, + { "flags": 1, "matrix": [1, 13], "x": 191, "y": 17 }, + { "flags": 4, "matrix": [1, 12], "x": 170, "y": 15 }, + { "flags": 4, "matrix": [1, 11], "x": 156, "y": 15 }, + { "flags": 4, "matrix": [1, 10], "x": 142, "y": 15 }, + { "flags": 4, "matrix": [1, 9], "x": 128, "y": 15 }, + { "flags": 4, "matrix": [1, 8], "x": 114, "y": 15 }, + { "flags": 4, "matrix": [1, 7], "x": 100, "y": 15 }, + { "flags": 4, "matrix": [1, 6], "x": 86, "y": 15 }, + { "flags": 4, "matrix": [1, 5], "x": 72, "y": 15 }, + { "flags": 4, "matrix": [1, 4], "x": 58, "y": 15 }, + { "flags": 4, "matrix": [1, 3], "x": 44, "y": 15 }, + { "flags": 4, "matrix": [1, 2], "x": 30, "y": 15 }, + { "flags": 4, "matrix": [1, 1], "x": 16, "y": 15 }, + { "flags": 1, "matrix": [1, 0], "x": 2, "y": 15 }, + { "flags": 1, "matrix": [0, 0], "x": 2, "y": 0 }, + { "flags": 1, "matrix": [0, 2], "x": 30, "y": 0 }, + { "flags": 1, "matrix": [0, 3], "x": 44, "y": 0 }, + { "flags": 1, "matrix": [0, 4], "x": 58, "y": 0 }, + { "flags": 1, "matrix": [0, 5], "x": 72, "y": 0 }, + { "flags": 1, "matrix": [0, 6], "x": 93, "y": 0 }, + { "flags": 1, "matrix": [0, 7], "x": 107, "y": 0 }, + { "flags": 1, "matrix": [0, 8], "x": 121, "y": 0 }, + { "flags": 1, "matrix": [0, 9], "x": 135, "y": 0 }, + { "flags": 1, "matrix": [0, 10], "x": 156, "y": 0 }, + { "flags": 1, "matrix": [0, 11], "x": 170, "y": 0 }, + { "flags": 1, "matrix": [0, 12], "x": 184, "y": 0 }, + { "flags": 1, "matrix": [0, 13], "x": 198, "y": 0 }, + { "flags": 1, "matrix": [0, 14], "x": 216, "y": 0 }, + { "flags": 1, "matrix": [0, 15], "x": 230, "y": 0 }, + { "flags": 1, "matrix": [0, 16], "x": 244, "y": 0 }, + { "flags": 1, "matrix": [5, 16], "x": 244, "y": 64 }, + { "flags": 1, "matrix": [5, 15], "x": 230, "y": 64 }, + { "flags": 1, "matrix": [5, 14], "x": 216, "y": 64 }, + { "flags": 1, "matrix": [5, 13], "x": 195, "y": 64 }, + { "flags": 1, "matrix": [5, 12], "x": 177, "y": 64 }, + { "flags": 1, "matrix": [5, 10], "x": 160, "y": 64 }, + { "flags": 1, "matrix": [5, 5], "x": 100, "y": 64 }, + { "flags": 1, "matrix": [5, 2], "x": 41, "y": 64 }, + { "flags": 1, "matrix": [5, 1], "x": 23, "y": 64 }, + { "flags": 1, "matrix": [5, 0], "x": 6, "y": 64 }, + { "flags": 1, "matrix": [4, 0], "x": 11, "y": 52 }, + { "flags": 4, "matrix": [4, 1], "x": 34, "y": 52 }, + { "flags": 4, "matrix": [4, 2], "x": 48, "y": 52 }, + { "flags": 4, "matrix": [4, 3], "x": 62, "y": 52 }, + { "flags": 4, "matrix": [4, 4], "x": 76, "y": 52 }, + { "flags": 4, "matrix": [4, 5], "x": 90, "y": 52 }, + { "flags": 4, "matrix": [4, 6], "x": 104, "y": 52 }, + { "flags": 4, "matrix": [4, 7], "x": 118, "y": 52 }, + { "flags": 4, "matrix": [4, 8], "x": 132, "y": 52 }, + { "flags": 4, "matrix": [4, 9], "x": 146, "y": 52 }, + { "flags": 4, "matrix": [4, 10], "x": 160, "y": 52 }, + { "flags": 1, "matrix": [4, 12], "x": 186, "y": 52 }, + { "flags": 1, "matrix": [4, 15], "x": 230, "y": 52 }, + { "flags": 2, "x": 242, "y": 55 }, + { "flags": 2, "x": 227, "y": 55 }, + { "flags": 2, "x": 212, "y": 55 }, + { "flags": 2, "x": 198, "y": 55 }, + { "flags": 2, "x": 183, "y": 55 }, + { "flags": 2, "x": 168, "y": 55 }, + { "flags": 2, "x": 153, "y": 55 }, + { "flags": 2, "x": 138, "y": 55 }, + { "flags": 2, "x": 123, "y": 55 }, + { "flags": 2, "x": 108, "y": 55 }, + { "flags": 2, "x": 93, "y": 55 }, + { "flags": 2, "x": 78, "y": 55 }, + { "flags": 2, "x": 67, "y": 55 }, + { "flags": 2, "x": 49, "y": 55 }, + { "flags": 2, "x": 34, "y": 55 }, + { "flags": 2, "x": 17, "y": 55 }, + { "flags": 2, "x": 6, "y": 55 }, + { "flags": 2, "x": 6, "y": 43 }, + { "flags": 2, "x": 6, "y": 30 }, + { "flags": 2, "x": 6, "y": 18 }, + { "flags": 2, "x": 6, "y": 3 }, + { "flags": 2, "x": 20, "y": 3 }, + { "flags": 2, "x": 35, "y": 3 }, + { "flags": 2, "x": 50, "y": 3 }, + { "flags": 2, "x": 65, "y": 3 }, + { "flags": 2, "x": 80, "y": 3 }, + { "flags": 2, "x": 94, "y": 3 }, + { "flags": 2, "x": 109, "y": 3 }, + { "flags": 2, "x": 124, "y": 3 }, + { "flags": 2, "x": 139, "y": 3 }, + { "flags": 2, "x": 153, "y": 3 }, + { "flags": 2, "x": 168, "y": 3 }, + { "flags": 2, "x": 183, "y": 3 }, + { "flags": 2, "x": 198, "y": 3 }, + { "flags": 2, "x": 212, "y": 3 }, + { "flags": 2, "x": 227, "y": 3 }, + { "flags": 2, "x": 242, "y": 3 }, + { "flags": 2, "x": 242, "y": 18 }, + { "flags": 2, "x": 242, "y": 31 }, + { "flags": 2, "x": 242, "y": 43 } + ] + }, + "url": "", "usb": { - "vid": "0x4C58", + "device_version": "1.0.0", "pid": "0x0004", - "device_version": "0.0.1" + "vid": "0x4C58" }, "processor": "atmega32u4", "bootloader": "atmel-dfu", @@ -16,194 +164,194 @@ "layouts": { "LAYOUT_tkl_ansi_tsangan_split_bs": { "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":2, "y":0}, - {"label":"F2", "x":3, "y":0}, - {"label":"F3", "x":4, "y":0}, - {"label":"F4", "x":5, "y":0}, - {"label":"F5", "x":6.5, "y":0}, - {"label":"F6", "x":7.5, "y":0}, - {"label":"F7", "x":8.5, "y":0}, - {"label":"F8", "x":9.5, "y":0}, - {"label":"F9", "x":11, "y":0}, - {"label":"F10", "x":12, "y":0}, - {"label":"F11", "x":13, "y":0}, - {"label":"F12", "x":14, "y":0}, - {"label":"PrtSc", "x":15.25, "y":0}, - {"label":"Scroll Lock", "x":16.25, "y":0}, - {"label":"Pause", "x":17.25, "y":0}, + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6.5, "y": 0 }, + { "matrix": [0, 7], "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "x": 9.5, "y": 0 }, + { "matrix": [0, 10], "x": 11, "y": 0 }, + { "matrix": [0, 11], "x": 12, "y": 0 }, + { "matrix": [0, 12], "x": 13, "y": 0 }, + { "matrix": [0, 13], "x": 14, "y": 0 }, + { "matrix": [0, 14], "x": 15.25, "y": 0 }, + { "matrix": [0, 15], "x": 16.25, "y": 0 }, + { "matrix": [0, 16], "x": 17.25, "y": 0 }, + + { "matrix": [1, 0], "x": 0, "y": 1.25 }, + { "matrix": [1, 1], "x": 1, "y": 1.25 }, + { "matrix": [1, 2], "x": 2, "y": 1.25 }, + { "matrix": [1, 3], "x": 3, "y": 1.25 }, + { "matrix": [1, 4], "x": 4, "y": 1.25 }, + { "matrix": [1, 5], "x": 5, "y": 1.25 }, + { "matrix": [1, 6], "x": 6, "y": 1.25 }, + { "matrix": [1, 7], "x": 7, "y": 1.25 }, + { "matrix": [1, 8], "x": 8, "y": 1.25 }, + { "matrix": [1, 9], "x": 9, "y": 1.25 }, + { "matrix": [1, 10], "x": 10, "y": 1.25 }, + { "matrix": [1, 11], "x": 11, "y": 1.25 }, + { "matrix": [1, 12], "x": 12, "y": 1.25 }, + { "matrix": [1, 13], "x": 13, "y": 1.25 }, + { "matrix": [3, 12], "x": 14, "y": 1.25 }, + { "matrix": [1, 14], "x": 15.25, "y": 1.25 }, + { "matrix": [1, 15], "x": 16.25, "y": 1.25 }, + { "matrix": [1, 16], "x": 17.25, "y": 1.25 }, - {"label":"`~", "x":0, "y":1.25}, - {"label":"1!", "x":1, "y":1.25}, - {"label":"2@", "x":2, "y":1.25}, - {"label":"3#", "x":3, "y":1.25}, - {"label":"4$", "x":4, "y":1.25}, - {"label":"5%", "x":5, "y":1.25}, - {"label":"6^", "x":6, "y":1.25}, - {"label":"7&", "x":7, "y":1.25}, - {"label":"8*", "x":8, "y":1.25}, - {"label":"9(", "x":9, "y":1.25}, - {"label":"0)", "x":10, "y":1.25}, - {"label":"-_", "x":11, "y":1.25}, - {"label":"=+", "x":12, "y":1.25}, - {"label":"Backspace", "x":13, "y":1.25}, - {"label":"Delete", "x":14, "y":1.25}, - {"label":"Insert", "x":15.25, "y":1.25}, - {"label":"Home", "x":16.25, "y":1.25}, - {"label":"PgUp", "x":17.25, "y":1.25}, + { "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.25 }, + { "matrix": [2, 1], "x": 1.5, "y": 2.25 }, + { "matrix": [2, 2], "x": 2.5, "y": 2.25 }, + { "matrix": [2, 3], "x": 3.5, "y": 2.25 }, + { "matrix": [2, 4], "x": 4.5, "y": 2.25 }, + { "matrix": [2, 5], "x": 5.5, "y": 2.25 }, + { "matrix": [2, 6], "x": 6.5, "y": 2.25 }, + { "matrix": [2, 7], "x": 7.5, "y": 2.25 }, + { "matrix": [2, 8], "x": 8.5, "y": 2.25 }, + { "matrix": [2, 9], "x": 9.5, "y": 2.25 }, + { "matrix": [2, 10], "x": 10.5, "y": 2.25 }, + { "matrix": [2, 11], "x": 11.5, "y": 2.25 }, + { "matrix": [2, 12], "x": 12.5, "y": 2.25 }, + { "matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 2.25 }, + { "matrix": [2, 14], "x": 15.25, "y": 2.25 }, + { "matrix": [2, 15], "x": 16.25, "y": 2.25 }, + { "matrix": [2, 16], "x": 17.25, "y": 2.25 }, - {"label":"Tab", "x":0, "y":2.25, "w":1.5}, - {"label":"Q", "x":1.5, "y":2.25}, - {"label":"W", "x":2.5, "y":2.25}, - {"label":"E", "x":3.5, "y":2.25}, - {"label":"R", "x":4.5, "y":2.25}, - {"label":"T", "x":5.5, "y":2.25}, - {"label":"Y", "x":6.5, "y":2.25}, - {"label":"U", "x":7.5, "y":2.25}, - {"label":"I", "x":8.5, "y":2.25}, - {"label":"O", "x":9.5, "y":2.25}, - {"label":"P", "x":10.5, "y":2.25}, - {"label":"[{", "x":11.5, "y":2.25}, - {"label":"]}", "x":12.5, "y":2.25}, - {"label":"\\|", "x":13.5, "y":2.25, "w":1.5}, - {"label":"Delete", "x":15.25, "y":2.25}, - {"label":"End", "x":16.25, "y":2.25}, - {"label":"PgDn", "x":17.25, "y":2.25}, + { "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.25 }, + { "matrix": [3, 1], "x": 1.75, "y": 3.25 }, + { "matrix": [3, 2], "x": 2.75, "y": 3.25 }, + { "matrix": [3, 3], "x": 3.75, "y": 3.25 }, + { "matrix": [3, 4], "x": 4.75, "y": 3.25 }, + { "matrix": [3, 5], "x": 5.75, "y": 3.25 }, + { "matrix": [3, 6], "x": 6.75, "y": 3.25 }, + { "matrix": [3, 7], "x": 7.75, "y": 3.25 }, + { "matrix": [3, 8], "x": 8.75, "y": 3.25 }, + { "matrix": [3, 9], "x": 9.75, "y": 3.25 }, + { "matrix": [3, 10], "x": 10.75, "y": 3.25 }, + { "matrix": [3, 11], "x": 11.75, "y": 3.25 }, + { "matrix": [3, 13], "w": 2.25, "x": 12.75, "y": 3.25 }, - {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, - {"label":"A", "x":1.75, "y":3.25}, - {"label":"S", "x":2.75, "y":3.25}, - {"label":"D", "x":3.75, "y":3.25}, - {"label":"F", "x":4.75, "y":3.25}, - {"label":"G", "x":5.75, "y":3.25}, - {"label":"H", "x":6.75, "y":3.25}, - {"label":"J", "x":7.75, "y":3.25}, - {"label":"K", "x":8.75, "y":3.25}, - {"label":"L", "x":9.75, "y":3.25}, - {"label":";:", "x":10.75, "y":3.25}, - {"label":"'\"", "x":11.75, "y":3.25}, - {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, + { "matrix": [4, 0], "w": 2.25, "x": 0, "y": 4.25 }, + { "matrix": [4, 1], "x": 2.25, "y": 4.25 }, + { "matrix": [4, 2], "x": 3.25, "y": 4.25 }, + { "matrix": [4, 3], "x": 4.25, "y": 4.25 }, + { "matrix": [4, 4], "x": 5.25, "y": 4.25 }, + { "matrix": [4, 5], "x": 6.25, "y": 4.25 }, + { "matrix": [4, 6], "x": 7.25, "y": 4.25 }, + { "matrix": [4, 7], "x": 8.25, "y": 4.25 }, + { "matrix": [4, 8], "x": 9.25, "y": 4.25 }, + { "matrix": [4, 9], "x": 10.25, "y": 4.25 }, + { "matrix": [4, 10], "x": 11.25, "y": 4.25 }, + { "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.25 }, + { "matrix": [4, 15], "x": 16.25, "y": 4.25 }, - {"label":"Shift", "x":0, "y":4.25, "w":2.25}, - {"label":"Z", "x":2.25, "y":4.25}, - {"label":"X", "x":3.25, "y":4.25}, - {"label":"C", "x":4.25, "y":4.25}, - {"label":"V", "x":5.25, "y":4.25}, - {"label":"B", "x":6.25, "y":4.25}, - {"label":"N", "x":7.25, "y":4.25}, - {"label":"M", "x":8.25, "y":4.25}, - {"label":",<", "x":9.25, "y":4.25}, - {"label":".>", "x":10.25, "y":4.25}, - {"label":"/?", "x":11.25, "y":4.25}, - {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, - {"label":"\u2191", "x":16.25, "y":4.25}, - - {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, - {"label":"Win", "x":1.5, "y":5.25}, - {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, - {"label":"Space", "x":4, "y":5.25, "w":7}, - {"label":"Alt", "x":11, "y":5.25, "w":1.5}, - {"label":"Fn", "x":12.5, "y":5.25}, - {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, - {"label":"\u2190", "x":15.25, "y":5.25}, - {"label":"\u2193", "x":16.25, "y":5.25}, - {"label":"\u2192", "x":17.25, "y":5.25} + { "matrix": [5, 0], "w": 1.5, "x": 0, "y": 5.25 }, + { "matrix": [5, 1], "x": 1.5, "y": 5.25 }, + { "matrix": [5, 2], "w": 1.5, "x": 2.5, "y": 5.25 }, + { "matrix": [5, 5], "w": 7, "x": 4, "y": 5.25 }, + { "matrix": [5, 10], "w": 1.5, "x": 11, "y": 5.25 }, + { "matrix": [5, 12], "x": 12.5, "y": 5.25 }, + { "matrix": [5, 13], "w": 1.5, "x": 13.5, "y": 5.25 }, + { "matrix": [5, 14], "x": 15.25, "y": 5.25 }, + { "matrix": [5, 15], "x": 16.25, "y": 5.25 }, + { "matrix": [5, 16], "x": 17.25, "y": 5.25 } ] }, "LAYOUT_tkl_ansi_tsangan": { "layout": [ - {"label":"Esc", "x":0, "y":0}, - {"label":"F1", "x":2, "y":0}, - {"label":"F2", "x":3, "y":0}, - {"label":"F3", "x":4, "y":0}, - {"label":"F4", "x":5, "y":0}, - {"label":"F5", "x":6.5, "y":0}, - {"label":"F6", "x":7.5, "y":0}, - {"label":"F7", "x":8.5, "y":0}, - {"label":"F8", "x":9.5, "y":0}, - {"label":"F9", "x":11, "y":0}, - {"label":"F10", "x":12, "y":0}, - {"label":"F11", "x":13, "y":0}, - {"label":"F12", "x":14, "y":0}, - {"label":"PrtSc", "x":15.25, "y":0}, - {"label":"Scroll Lock", "x":16.25, "y":0}, - {"label":"Pause", "x":17.25, "y":0}, + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0 }, + { "matrix": [0, 5], "x": 5, "y": 0 }, + { "matrix": [0, 6], "x": 6.5, "y": 0 }, + { "matrix": [0, 7], "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "x": 9.5, "y": 0 }, + { "matrix": [0, 10], "x": 11, "y": 0 }, + { "matrix": [0, 11], "x": 12, "y": 0 }, + { "matrix": [0, 12], "x": 13, "y": 0 }, + { "matrix": [0, 13], "x": 14, "y": 0 }, + { "matrix": [0, 14], "x": 15.25, "y": 0 }, + { "matrix": [0, 15], "x": 16.25, "y": 0 }, + { "matrix": [0, 16], "x": 17.25, "y": 0 }, + + { "matrix": [1, 0], "x": 0, "y": 1.25 }, + { "matrix": [1, 1], "x": 1, "y": 1.25 }, + { "matrix": [1, 2], "x": 2, "y": 1.25 }, + { "matrix": [1, 3], "x": 3, "y": 1.25 }, + { "matrix": [1, 4], "x": 4, "y": 1.25 }, + { "matrix": [1, 5], "x": 5, "y": 1.25 }, + { "matrix": [1, 6], "x": 6, "y": 1.25 }, + { "matrix": [1, 7], "x": 7, "y": 1.25 }, + { "matrix": [1, 8], "x": 8, "y": 1.25 }, + { "matrix": [1, 9], "x": 9, "y": 1.25 }, + { "matrix": [1, 10], "x": 10, "y": 1.25 }, + { "matrix": [1, 11], "x": 11, "y": 1.25 }, + { "matrix": [1, 12], "x": 12, "y": 1.25 }, + { "matrix": [1, 13], "w":2, "x": 13, "y": 1.25 }, + { "matrix": [1, 14], "x": 15.25, "y": 1.25 }, + { "matrix": [1, 15], "x": 16.25, "y": 1.25 }, + { "matrix": [1, 16], "x": 17.25, "y": 1.25 }, - {"label":"`~", "x":0, "y":1.25}, - {"label":"1!", "x":1, "y":1.25}, - {"label":"2@", "x":2, "y":1.25}, - {"label":"3#", "x":3, "y":1.25}, - {"label":"4$", "x":4, "y":1.25}, - {"label":"5%", "x":5, "y":1.25}, - {"label":"6^", "x":6, "y":1.25}, - {"label":"7&", "x":7, "y":1.25}, - {"label":"8*", "x":8, "y":1.25}, - {"label":"9(", "x":9, "y":1.25}, - {"label":"0)", "x":10, "y":1.25}, - {"label":"-_", "x":11, "y":1.25}, - {"label":"=+", "x":12, "y":1.25}, - {"label":"Backspace", "x":13, "y":1.25, "w":2}, - {"label":"Insert", "x":15.25, "y":1.25}, - {"label":"Home", "x":16.25, "y":1.25}, - {"label":"PgUp", "x":17.25, "y":1.25}, + { "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.25 }, + { "matrix": [2, 1], "x": 1.5, "y": 2.25 }, + { "matrix": [2, 2], "x": 2.5, "y": 2.25 }, + { "matrix": [2, 3], "x": 3.5, "y": 2.25 }, + { "matrix": [2, 4], "x": 4.5, "y": 2.25 }, + { "matrix": [2, 5], "x": 5.5, "y": 2.25 }, + { "matrix": [2, 6], "x": 6.5, "y": 2.25 }, + { "matrix": [2, 7], "x": 7.5, "y": 2.25 }, + { "matrix": [2, 8], "x": 8.5, "y": 2.25 }, + { "matrix": [2, 9], "x": 9.5, "y": 2.25 }, + { "matrix": [2, 10], "x": 10.5, "y": 2.25 }, + { "matrix": [2, 11], "x": 11.5, "y": 2.25 }, + { "matrix": [2, 12], "x": 12.5, "y": 2.25 }, + { "matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 2.25 }, + { "matrix": [2, 14], "x": 15.25, "y": 2.25 }, + { "matrix": [2, 15], "x": 16.25, "y": 2.25 }, + { "matrix": [2, 16], "x": 17.25, "y": 2.25 }, - {"label":"Tab", "x":0, "y":2.25, "w":1.5}, - {"label":"Q", "x":1.5, "y":2.25}, - {"label":"W", "x":2.5, "y":2.25}, - {"label":"E", "x":3.5, "y":2.25}, - {"label":"R", "x":4.5, "y":2.25}, - {"label":"T", "x":5.5, "y":2.25}, - {"label":"Y", "x":6.5, "y":2.25}, - {"label":"U", "x":7.5, "y":2.25}, - {"label":"I", "x":8.5, "y":2.25}, - {"label":"O", "x":9.5, "y":2.25}, - {"label":"P", "x":10.5, "y":2.25}, - {"label":"[{", "x":11.5, "y":2.25}, - {"label":"]}", "x":12.5, "y":2.25}, - {"label":"\\|", "x":13.5, "y":2.25, "w":1.5}, - {"label":"Delete", "x":15.25, "y":2.25}, - {"label":"End", "x":16.25, "y":2.25}, - {"label":"PgDn", "x":17.25, "y":2.25}, + { "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.25 }, + { "matrix": [3, 1], "x": 1.75, "y": 3.25 }, + { "matrix": [3, 2], "x": 2.75, "y": 3.25 }, + { "matrix": [3, 3], "x": 3.75, "y": 3.25 }, + { "matrix": [3, 4], "x": 4.75, "y": 3.25 }, + { "matrix": [3, 5], "x": 5.75, "y": 3.25 }, + { "matrix": [3, 6], "x": 6.75, "y": 3.25 }, + { "matrix": [3, 7], "x": 7.75, "y": 3.25 }, + { "matrix": [3, 8], "x": 8.75, "y": 3.25 }, + { "matrix": [3, 9], "x": 9.75, "y": 3.25 }, + { "matrix": [3, 10], "x": 10.75, "y": 3.25 }, + { "matrix": [3, 11], "x": 11.75, "y": 3.25 }, + { "matrix": [3, 13], "w": 2.25, "x": 12.75, "y": 3.25 }, - {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, - {"label":"A", "x":1.75, "y":3.25}, - {"label":"S", "x":2.75, "y":3.25}, - {"label":"D", "x":3.75, "y":3.25}, - {"label":"F", "x":4.75, "y":3.25}, - {"label":"G", "x":5.75, "y":3.25}, - {"label":"H", "x":6.75, "y":3.25}, - {"label":"J", "x":7.75, "y":3.25}, - {"label":"K", "x":8.75, "y":3.25}, - {"label":"L", "x":9.75, "y":3.25}, - {"label":";:", "x":10.75, "y":3.25}, - {"label":"'\"", "x":11.75, "y":3.25}, - {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, - - {"label":"Shift", "x":0, "y":4.25, "w":2.25}, - {"label":"Z", "x":2.25, "y":4.25}, - {"label":"X", "x":3.25, "y":4.25}, - {"label":"C", "x":4.25, "y":4.25}, - {"label":"V", "x":5.25, "y":4.25}, - {"label":"B", "x":6.25, "y":4.25}, - {"label":"N", "x":7.25, "y":4.25}, - {"label":"M", "x":8.25, "y":4.25}, - {"label":",<", "x":9.25, "y":4.25}, - {"label":".>", "x":10.25, "y":4.25}, - {"label":"/?", "x":11.25, "y":4.25}, - {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, - {"label":"\u2191", "x":16.25, "y":4.25}, - - {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, - {"label":"Win", "x":1.5, "y":5.25}, - {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, - {"label":"Space", "x":4, "y":5.25, "w":7}, - {"label":"Alt", "x":11, "y":5.25, "w":1.5}, - {"label":"Fn", "x":12.5, "y":5.25}, - {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, - {"label":"\u2190", "x":15.25, "y":5.25}, - {"label":"\u2193", "x":16.25, "y":5.25}, - {"label":"\u2192", "x":17.25, "y":5.25} + { "matrix": [4, 0], "w": 2.25, "x": 0, "y": 4.25 }, + { "matrix": [4, 1], "x": 2.25, "y": 4.25 }, + { "matrix": [4, 2], "x": 3.25, "y": 4.25 }, + { "matrix": [4, 3], "x": 4.25, "y": 4.25 }, + { "matrix": [4, 4], "x": 5.25, "y": 4.25 }, + { "matrix": [4, 5], "x": 6.25, "y": 4.25 }, + { "matrix": [4, 6], "x": 7.25, "y": 4.25 }, + { "matrix": [4, 7], "x": 8.25, "y": 4.25 }, + { "matrix": [4, 8], "x": 9.25, "y": 4.25 }, + { "matrix": [4, 9], "x": 10.25, "y": 4.25 }, + { "matrix": [4, 10], "x": 11.25, "y": 4.25 }, + { "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.25 }, + { "matrix": [4, 15], "x": 16.25, "y": 4.25 }, + + { "matrix": [5, 0], "w": 1.5, "x": 0, "y": 5.25 }, + { "matrix": [5, 1], "x": 1.5, "y": 5.25 }, + { "matrix": [5, 2], "w": 1.5, "x": 2.5, "y": 5.25 }, + { "matrix": [5, 5], "w": 7, "x": 4, "y": 5.25 }, + { "matrix": [5, 10], "w": 1.5, "x": 11, "y": 5.25 }, + { "matrix": [5, 12], "x": 12.5, "y": 5.25 }, + { "matrix": [5, 13], "w": 1.5, "x": 13.5, "y": 5.25 }, + { "matrix": [5, 14], "x": 15.25, "y": 5.25 }, + { "matrix": [5, 15], "x": 16.25, "y": 5.25 }, + { "matrix": [5, 16], "x": 17.25, "y": 5.25 } ] } } -} +} \ No newline at end of file diff --git a/keyboards/linworks/fave84h/keymaps/default/keymap.c b/keyboards/linworks/fave84h/keymaps/default/keymap.c index 596261c96b..64e5dc07d3 100644 --- a/keyboards/linworks/fave84h/keymaps/default/keymap.c +++ b/keyboards/linworks/fave84h/keymaps/default/keymap.c @@ -37,8 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EE_CLR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT - ), - + ) }; bool rgb_matrix_indicators_user(void) { diff --git a/keyboards/linworks/fave84h/keymaps/via/keymap.c b/keyboards/linworks/fave84h/keymaps/via/keymap.c index 0cc5a93d13..bfc3c69b8a 100644 --- a/keyboards/linworks/fave84h/keymaps/via/keymap.c +++ b/keyboards/linworks/fave84h/keymaps/via/keymap.c @@ -57,14 +57,135 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - + ) }; -bool rgb_matrix_indicators_user(void) { - led_t host_leds = host_keyboard_led_state(); - if (host_leds.caps_lock) { - rgb_matrix_set_color(12, 254, 189, 41); // set caps lock led color first number is index, R G B - } - return false; +// Single Indicator memory layout +typedef struct _indicator_config_t { + uint8_t h; + uint8_t s; + uint8_t v; + bool enabled; +} indicator_config; + +// Board memory layout +typedef struct _fave_config_t { + indicator_config caps; +} fave_config; + +fave_config fave; + +void eeconfig_init_user(void) { + // Default values + fave.caps.h = 0; + fave.caps.s = 0; + fave.caps.v = RGB_MATRIX_MAXIMUM_BRIGHTNESS; + fave.caps.enabled = true; + + // Write default value to EEPROM now + eeconfig_update_kb_datablock(&fave); +} + +enum via_fave { + id_caps_indicator_enabled = 1, + id_caps_indicator_brightness = 2, + id_caps_indicator_color = 3 +}; + +//On Keyboard startup +void keyboard_post_init_user(void) { + //Read our custom menu variables from memory + eeconfig_read_kb_datablock(&fave); +} + +bool rgb_matrix_indicators_user(void) { + if (fave.caps.enabled) { + // The rgb_matrix_set_color function needs an RGB code to work, so first the indicator color is cast to an HSV value and then translated to RGB + HSV hsv_caps_indicator_color = {fave.caps.h, fave.caps.s, fave.caps.v}; + RGB rgb_caps_indicator_color = hsv_to_rgb(hsv_caps_indicator_color); + if (host_keyboard_led_state().caps_lock) + rgb_matrix_set_color(CAPS_INDICATOR_INDEX, rgb_caps_indicator_color.r, rgb_caps_indicator_color.g, rgb_caps_indicator_color.b); + } + + return true; +} + +void fave_config_set_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_caps_indicator_enabled: { + fave.caps.enabled = value_data[0]; + break; + } + case id_caps_indicator_brightness: { + fave.caps.v = value_data[0]; + break; + } + case id_caps_indicator_color: { + fave.caps.h = value_data[0]; + fave.caps.s = value_data[1]; + break; + } + } +} + +void fave_config_get_value(uint8_t *data) { + // data = [ value_id, value_data ] + uint8_t *value_id = &(data[0]); + uint8_t *value_data = &(data[1]); + + switch (*value_id) { + case id_caps_indicator_enabled: { + value_data[0] = fave.caps.enabled; + break; + } + case id_caps_indicator_brightness: { + value_data[0] = fave.caps.v; + break; + } + case id_caps_indicator_color: { + value_data[0] = fave.caps.h; + value_data[1] = fave.caps.s; + break; + } + } +} + +void fave_config_save(void) { + eeconfig_update_kb_datablock(&fave); +} + +void via_custom_value_command_kb(uint8_t *data, uint8_t length) { + // data = [ command_id, channel_id, value_id, value_data ] + uint8_t *command_id = &(data[0]); + uint8_t *channel_id = &(data[1]); + uint8_t *value_id_and_data = &(data[2]); + + if (*channel_id == id_custom_channel) { + switch (*command_id) { + case id_custom_set_value: { + fave_config_set_value(value_id_and_data); + break; + } + case id_custom_get_value: { + fave_config_get_value(value_id_and_data); + break; + } + case id_custom_save: { + fave_config_save(); + break; + } + default: { + // Unhandled message. + *command_id = id_unhandled; + break; + } + } + return; + } + + *command_id = id_unhandled; } diff --git a/keyboards/linworks/fave84h/rules.mk b/keyboards/linworks/fave84h/rules.mk index 87ea6a36c2..3437a35bdf 100644 --- a/keyboards/linworks/fave84h/rules.mk +++ b/keyboards/linworks/fave84h/rules.mk @@ -1,17 +1,2 @@ # Processor frequency F_CPU = 8000000 - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = no # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = yes # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output -RGB_MATRIX_ENABLE = yes -RGB_MATRIX_DRIVER = WS2812 diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/config.h b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/config.h new file mode 100644 index 0000000000..c147d5e67f --- /dev/null +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/config.h @@ -0,0 +1,75 @@ +/* Copyright 2023 Florent Linguenheld (@FLinguenheld) + * + * 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 + +/* Flash */ +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // Timeout window in ms in which the double tap can occur. + +/* OLED */ +#undef OLED_FONT_H +#define OLED_FONT_H "./oled/glcdfont.c" + +#define OLED_TIMEOUT 25000 +#define OLED_BRIGHTNESS 60 // Protect my eyesss +#define SPLIT_LAYER_STATE_ENABLE +#define SPLIT_MODS_ENABLE +#define SPLIT_OLED_ENABLE + +/* Auto shift ♥ */ +#define AUTO_SHIFT_TIMEOUT 115 + +/* Redefine CTRL + space (See space cadet shift) */ +#define LCPO_KEYS KC_LCTL, KC_TRNS, KC_SPC + +/* Unicode */ +// #define UNICODE_SELECTED_MODES UC_LNX +#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX + +/* leader */ +#define LEADER_PER_KEY_TIMING +#define LEADER_TIMEOUT 280 +#define LEADER_NO_TIMEOUT + +/* Mouse */ +#define MK_3_SPEED +#define MK_MOMENTARY_ACCEL + +#define MK_C_OFFSET_0 1 +#define MK_C_INTERVAL_0 12 + +#define MK_C_OFFSET_1 4 +#define MK_C_INTERVAL_1 18 + +#define MK_C_OFFSET_UNMOD 13 +#define MK_C_INTERVAL_UNMOD 15 + +#define MK_C_OFFSET_2 25 +#define MK_C_INTERVAL_2 10 + + +#define MK_W_OFFSET_0 1 +#define MK_W_INTERVAL_0 160 + +#define MK_W_OFFSET_1 2 +#define MK_W_INTERVAL_1 120 + +#define MK_W_OFFSET_UNMOD 4 +#define MK_W_INTERVAL_UNMOD 70 + +#define MK_W_OFFSET_2 10 +#define MK_W_INTERVAL_2 30 diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c new file mode 100644 index 0000000000..d6bd3818b4 --- /dev/null +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/auto_shift.c @@ -0,0 +1,199 @@ +// Copyright 2023 Florent Linguenheld (@FLinguenheld) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H +#include "keycodes.h" + +/* Only for basis letters + Exceptions like Tab or Enter */ +bool get_auto_shifted_key(uint16_t keycode, keyrecord_t *record) { + + switch (keycode) { + + case KC_TAB: + case KC_ENT: + + // -- + case KC_A: + case KC_B: + case KC_C: + case KC_D: + case KC_E: + case KC_F: + case KC_G: + case KC_H: + case KC_I: + case KC_J: + case KC_K: + case KC_L: + case KC_M: + case KC_N: + case KC_O: + case KC_P: + case KC_Q: + case KC_R: + case KC_S: + case KC_T: + case KC_U: + case KC_V: + case KC_W: + case KC_X: + case KC_Y: + case KC_Z: + + return true; + } + + return get_custom_auto_shifted_key(keycode, record); +} + + +/* Custom auto shift + I use this instead of tap dance because double tap is horrible + Add here the letter or the custom enum, then add in press_user and press_release the actions */ +bool get_custom_auto_shifted_key(uint16_t keycode, keyrecord_t *record) { + switch(keycode) { + + case KC_BSPC: + case KC_LABK: // Easy indent with vim + case KC_RABK: + + /* French */ + case CS_E_ACUTE: + + case CS_A_GRAVE: + case CS_E_GRAVE: + case CS_I_GRAVE: + case CS_O_GRAVE: + case CS_U_GRAVE: + + case CS_A_CIRCUMFLEX: + case CS_E_CIRCUMFLEX: + case CS_I_CIRCUMFLEX: + case CS_O_CIRCUMFLEX: + case CS_U_CIRCUMFLEX: + + case CS_A_DIAERESIS: + case CS_E_DIAERESIS: + case CS_I_DIAERESIS: + case CS_O_DIAERESIS: + case CS_U_DIAERESIS: + case CS_Y_DIAERESIS: + + case CS_C_CEDILLA: + case CS_AE: + case CS_OE: + + return true; + + default: + return false; + } +} + +void autoshift_press_user(uint16_t keycode, bool shifted, keyrecord_t *record) { + switch(keycode) { + + case KC_BSPC: + register_code16((!shifted) ? KC_BSPC : KC_DEL); + break; + + case KC_LABK: + if (shifted) { send_unicode_string("<<"); } + else { send_unicode_string("<"); } break; + + case KC_RABK: + if (shifted) { send_unicode_string(">>"); } + else { send_unicode_string(">"); } break; + + /* French + Release is not necessary with 'send_unicode_string()' */ + case CS_E_ACUTE: + if (shifted) { send_unicode_string("É"); } + else { send_unicode_string("é"); } break; + + case CS_A_GRAVE: + if (shifted) { send_unicode_string("À"); } + else { send_unicode_string("à"); } break; + case CS_E_GRAVE: + if (shifted) { send_unicode_string("È"); } + else { send_unicode_string("è"); } break; + case CS_I_GRAVE: + if (shifted) { send_unicode_string("Ì"); } + else { send_unicode_string("ì"); } break; + case CS_O_GRAVE: + if (shifted) { send_unicode_string("Ò"); } + else { send_unicode_string("ò"); } break; + case CS_U_GRAVE: + if (shifted) { send_unicode_string("Ù"); } + else { send_unicode_string("ù"); } break; + + case CS_A_CIRCUMFLEX: + if (shifted) { send_unicode_string("Â"); } + else { send_unicode_string("â"); } break; + case CS_E_CIRCUMFLEX: + if (shifted) { send_unicode_string("Ê"); } + else { send_unicode_string("ê"); } break; + case CS_I_CIRCUMFLEX: + if (shifted) { send_unicode_string("Î"); } + else { send_unicode_string("î"); } break; + case CS_O_CIRCUMFLEX: + if (shifted) { send_unicode_string("Ô"); } + else { send_unicode_string("ô"); } break; + case CS_U_CIRCUMFLEX: + if (shifted) { send_unicode_string("Û"); } + else { send_unicode_string("û"); } break; + + case CS_A_DIAERESIS: + if (shifted) { send_unicode_string("Ä"); } + else { send_unicode_string("ä"); } break; + case CS_E_DIAERESIS: + if (shifted) { send_unicode_string("Ë"); } + else { send_unicode_string("ë"); } break; + case CS_I_DIAERESIS: + if (shifted) { send_unicode_string("Ï"); } + else { send_unicode_string("ï"); } break; + case CS_O_DIAERESIS: + if (shifted) { send_unicode_string("Ö"); } + else { send_unicode_string("ö"); } break; + case CS_U_DIAERESIS: + if (shifted) { send_unicode_string("Ü"); } + else { send_unicode_string("ü"); } break; + case CS_Y_DIAERESIS: + if (shifted) { send_unicode_string("Ÿ"); } + else { send_unicode_string("ÿ"); } break; + + case CS_C_CEDILLA: + if (shifted) { send_unicode_string("Ç"); } + else { send_unicode_string("ç"); } break; + case CS_AE: + if (shifted) { send_unicode_string("Æ"); } + else { send_unicode_string("æ"); } break; + case CS_OE: + if (shifted) { send_unicode_string("Œ"); } + else { send_unicode_string("œ"); } break; + + + default: + if (shifted) { + add_weak_mods(MOD_BIT(KC_LSFT)); + } + /* & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift */ + register_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode); + } +} + +void autoshift_release_user(uint16_t keycode, bool shifted, keyrecord_t *record) { + switch(keycode) { + + case KC_BSPC: + unregister_code16((!shifted) ? KC_BSPC : KC_DEL); + break; + + default: + /* & 0xFF gets the Tap key for Tap Holds, required when using Retro Shift + The IS_RETRO check isn't really necessary here, always using + keycode & 0xFF would be fine. */ + unregister_code16((IS_RETRO(keycode)) ? keycode & 0xFF : keycode); + } +} diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/combo.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/combo.c new file mode 100644 index 0000000000..e5b897dc62 --- /dev/null +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/combo.c @@ -0,0 +1,275 @@ +// Copyright 2023 Florent Linguenheld (@FLinguenheld) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H +#include "keycodes.h" + +/* How to : + - Add an entry in the enum + - Create a new sequence of keys + - Link the enum to this sequence in the key_combos table + + For macros : + - Same steps + - And add the macro in the process_combo_event() function +*/ + +enum combos { + LEADER, + BOOTLOADER, + + LAYER_ADJUST, + LAYER_FN, + LAYER_LEFT_HAND, + + /* French */ + E_ACUTE, + C_CEDILLA, + E_A, + E_O, + + A_GRAVE, + E_GRAVE, + I_GRAVE, + O_GRAVE, + U_GRAVE, + + A_CIRCUMFLEX, + E_CIRCUMFLEX, + I_CIRCUMFLEX, + O_CIRCUMFLEX, + U_CIRCUMFLEX, + + A_DIAERESIS, + E_DIAERESIS, + I_DIAERESIS, + O_DIAERESIS, + U_DIAERESIS, + Y_DIAERESIS, + + /* -- */ + AMPERSAND, + AT_SIGN, + BACKSLASH, + CIRCUMFLEX, + COLON, + DOLLAR, + EQUAL, + EXCLAMATION_MARK, + GRAVE, + HASH, + MINUS, + PERCENT, + PIPE, + PLUS, + QUESTION_MARK, + QUOTE, + QUOTE_DOUBLE, + SEMICOLON, + SLASH, + STAR, + TILDE, + UNDERSCORE, + + ANGLE_BRACKET_LEFT, + ANGLE_BRACKET_RIGHT, + + BRACKET_LEFT, + BRACKET_RIGHT, + CURLY_BRACKET_LEFT, + CURLY_BRACKET_RIGHT, + PARENTHESIS_LEFT, + PARENTHESIS_RIGHT, + + /* -- */ + ALT_SHIFT, + CONTROL_SHIFT, + CONTROL_ALT, + CONTROL_SHIFT_ALT, + RIGHT_ALT, + + /* One hand special */ + CONTROL_RIGHT, + CONTROL_SHIFT_RIGHT, + + // DEL_LEFT, + SHIFT_LEFT, + ALTGR_LEFT, + CONTROL_SHIFT_LEFT, + + /* Just to replace the define in config.h */ + COMBO_LENGTH, +}; +uint16_t COMBO_LEN = COMBO_LENGTH; + + +/* Sequences fo keys */ +const uint16_t PROGMEM combo_leader[] = {LT(_MOUSE, KC_COMM), LT(_ARROWS, KC_DOT), COMBO_END}; +const uint16_t PROGMEM combo_bootloader[] = {KC_K, KC_TAB, KC_Z, KC_BSPC, KC_V, KC_J, COMBO_END}; + +const uint16_t PROGMEM combo_adjust[] = {KC_LCPO, LT(_NUMERIC, KC_ENT), COMBO_END}; +const uint16_t PROGMEM combo_fn[] = {LT(_NUMERIC, KC_ENT), KC_N, COMBO_END}; +const uint16_t PROGMEM combo_left_hand[] = {KC_LCPO, GUI_T(KC_ESC), COMBO_END}; + +/* -- */ +// const uint16_t PROGMEM combo_enter_shifted[] = {LT(_NUMERIC, KC_ENT), KC_S, COMBO_END}; +const uint16_t PROGMEM combo_control_shift[] = {KC_LCPO, KC_S, COMBO_END}; +const uint16_t PROGMEM combo_control_alt[] = {KC_LCPO, KC_LALT, COMBO_END}; +const uint16_t PROGMEM combo_control_shift_alt[] = {KC_LCPO, KC_S, KC_A, COMBO_END}; +const uint16_t PROGMEM combo_right_alt[] = {KC_LAPO, KC_G, COMBO_END}; +const uint16_t PROGMEM combo_alt_shift[] = {KC_LALT, KC_S, COMBO_END}; + +/* -- */ +const uint16_t PROGMEM combo_e_acute[] = {KC_LCPO, KC_E, COMBO_END}; +const uint16_t PROGMEM combo_c_cedilla[] = {KC_LCPO, KC_I, COMBO_END}; +const uint16_t PROGMEM combo_ea[] = {KC_LCPO, KC_A, COMBO_END}; +const uint16_t PROGMEM combo_eo[] = {KC_LCPO, KC_O, COMBO_END}; + +const uint16_t PROGMEM combo_a_grave[] = {LT(_MOUSE, KC_COMM), KC_A, COMBO_END}; +const uint16_t PROGMEM combo_e_grave[] = {LT(_MOUSE, KC_COMM), KC_E, COMBO_END}; +const uint16_t PROGMEM combo_i_grave[] = {LT(_MOUSE, KC_COMM), KC_I, COMBO_END}; +const uint16_t PROGMEM combo_o_grave[] = {LT(_MOUSE, KC_COMM), KC_O, COMBO_END}; +const uint16_t PROGMEM combo_u_grave[] = {LT(_MOUSE, KC_COMM), KC_U, COMBO_END}; + +const uint16_t PROGMEM combo_a_circumflex[] = {KC_C, KC_A, COMBO_END}; +const uint16_t PROGMEM combo_e_circumflex[] = {KC_C, KC_E, COMBO_END}; +const uint16_t PROGMEM combo_i_circumflex[] = {KC_C, KC_I, COMBO_END}; +const uint16_t PROGMEM combo_o_circumflex[] = {KC_C, KC_O, COMBO_END}; +const uint16_t PROGMEM combo_u_circumflex[] = {KC_C, KC_U, COMBO_END}; + +const uint16_t PROGMEM combo_a_diaeresis[] = {KC_T, KC_A, COMBO_END}; +const uint16_t PROGMEM combo_e_diaeresis[] = {KC_T, KC_E, COMBO_END}; +const uint16_t PROGMEM combo_i_diaeresis[] = {KC_T, KC_I, COMBO_END}; +const uint16_t PROGMEM combo_o_diaeresis[] = {KC_T, KC_O, COMBO_END}; +const uint16_t PROGMEM combo_u_diaeresis[] = {KC_T, KC_U, COMBO_END}; +const uint16_t PROGMEM combo_y_diaeresis[] = {KC_T, KC_Y, COMBO_END}; + +/* -- */ +const uint16_t PROGMEM combo_ampersand[] = {KC_I, KC_E, COMBO_END}; +const uint16_t PROGMEM combo_at_sign[] = {KC_Q, KC_Y, COMBO_END}; +const uint16_t PROGMEM combo_backslash[] = {KC_D, KC_R, COMBO_END}; +const uint16_t PROGMEM combo_circumflex[] = {KC_T, KC_D, COMBO_END}; +const uint16_t PROGMEM combo_colon[] = {KC_C, KC_G, COMBO_END}; +const uint16_t PROGMEM combo_dollar[] = {KC_D, KC_L, COMBO_END}; +const uint16_t PROGMEM combo_equal[] = {KC_T, KC_H, COMBO_END}; +const uint16_t PROGMEM combo_exclamation_mark[] = {KC_O, KC_W, COMBO_END}; +const uint16_t PROGMEM combo_grave[] = {KC_T, KC_G, COMBO_END}; +const uint16_t PROGMEM combo_hash[] = {KC_I, KC_O, COMBO_END}; +const uint16_t PROGMEM combo_minus[] = {KC_T, KC_R, COMBO_END}; +const uint16_t PROGMEM combo_percent[] = {KC_O, KC_U, COMBO_END}; +const uint16_t PROGMEM combo_pipe[] = {KC_E, KC_U, COMBO_END}; +const uint16_t PROGMEM combo_plus[] = {KC_T, KC_L, COMBO_END}; +const uint16_t PROGMEM combo_question_mark[] = {KC_B, KC_O, COMBO_END}; +const uint16_t PROGMEM combo_quote[] = {KC_T, KC_N, COMBO_END}; +const uint16_t PROGMEM combo_quote_double[] = {KC_A, KC_U, COMBO_END}; +const uint16_t PROGMEM combo_semicolon[] = {KC_G, KC_H, COMBO_END}; +const uint16_t PROGMEM combo_slash[] = {KC_S, KC_L, COMBO_END}; +const uint16_t PROGMEM combo_star[] = {KC_S, KC_T, COMBO_END}; +const uint16_t PROGMEM combo_tilde[] = {KC_I, KC_U, COMBO_END}; +const uint16_t PROGMEM combo_underscore[] = {KC_S, KC_R, COMBO_END}; + +const uint16_t PROGMEM combo_angle_bracket_left[] = {KC_C, KC_S, COMBO_END}; +const uint16_t PROGMEM combo_angle_bracket_right[] = {KC_S, KC_H, COMBO_END}; + +const uint16_t PROGMEM combo_bracket_left[] = {KC_Q, KC_U, COMBO_END}; +const uint16_t PROGMEM combo_bracket_right[] = {KC_E, KC_Y, COMBO_END}; +const uint16_t PROGMEM combo_curly_bracket_left[] = {KC_X, KC_E, COMBO_END}; +const uint16_t PROGMEM combo_curly_bracket_right[] = {KC_I, KC_Q, COMBO_END}; +const uint16_t PROGMEM combo_parenthesis_left[] = {KC_X, KC_U, COMBO_END}; +const uint16_t PROGMEM combo_parenthesis_right[] = {KC_I, KC_Y, COMBO_END}; + +/* One hand special */ +const uint16_t PROGMEM combo_control_right[] = {LT(_NUMERIC, KC_ENT), KC_R, COMBO_END}; +const uint16_t PROGMEM combo_control_shift_right[] = {LT(_NUMERIC, KC_ENT), KC_S, COMBO_END}; + +const uint16_t PROGMEM combo_shift_left[] = {KC_LCPO, KC_LALT, COMBO_END}; +// const uint16_t PROGMEM combo_altgr_left[] = {LT(_MOUSE, KC_COMM), KC_LALT, COMBO_END}; +// const uint16_t PROGMEM combo_del_left[] = {GUI_T(KC_ESC), KC_K, COMBO_END}; +const uint16_t PROGMEM combo_control_shift_left[] = {LT(_MOUSE, KC_COMM), KC_LALT, COMBO_END}; + + +/* Sequences fo keys */ +combo_t key_combos[] = { + [LEADER] = COMBO(combo_leader, KC_LEAD), + [BOOTLOADER] = COMBO(combo_bootloader, QK_BOOTLOADER), + + [LAYER_ADJUST] = COMBO(combo_adjust, OSL(_ADJUST)), + [LAYER_FN] = COMBO(combo_fn, OSL(_FN)), + [LAYER_LEFT_HAND] = COMBO(combo_left_hand, OSL(_LEFT_HAND)), + + /* -- */ + // [ENTER_SHIFTED] = COMBO(combo_enter_shifted, S(KC_ENT)), + [ALT_SHIFT] = COMBO(combo_alt_shift, A(S(XXXXXXX))), + [CONTROL_SHIFT] = COMBO(combo_control_shift, C(S(XXXXXXX))), + [CONTROL_ALT] = COMBO(combo_control_alt, C(A(XXXXXXX))), + [CONTROL_SHIFT_ALT] = COMBO(combo_control_shift_alt, C(S(A(XXXXXXX)))), + [RIGHT_ALT] = COMBO(combo_right_alt, KC_RALT), + + /* French */ + [E_ACUTE] = COMBO(combo_e_acute, CS_E_ACUTE), + [C_CEDILLA] = COMBO(combo_c_cedilla, CS_C_CEDILLA), + [E_A] = COMBO(combo_ea, CS_AE), + [E_O] = COMBO(combo_eo, CS_OE), + + [A_GRAVE] = COMBO(combo_a_grave, CS_A_GRAVE), + [E_GRAVE] = COMBO(combo_e_grave, CS_E_GRAVE), + [I_GRAVE] = COMBO(combo_i_grave, CS_I_GRAVE), + [O_GRAVE] = COMBO(combo_o_grave, CS_O_GRAVE), + [U_GRAVE] = COMBO(combo_u_grave, CS_U_GRAVE), + + [A_CIRCUMFLEX] = COMBO(combo_a_circumflex, CS_A_CIRCUMFLEX), + [E_CIRCUMFLEX] = COMBO(combo_e_circumflex, CS_E_CIRCUMFLEX), + [I_CIRCUMFLEX] = COMBO(combo_i_circumflex, CS_I_CIRCUMFLEX), + [O_CIRCUMFLEX] = COMBO(combo_o_circumflex, CS_O_CIRCUMFLEX), + [U_CIRCUMFLEX] = COMBO(combo_u_circumflex, CS_U_CIRCUMFLEX), + + [A_DIAERESIS] = COMBO(combo_a_diaeresis, CS_A_DIAERESIS), + [E_DIAERESIS] = COMBO(combo_e_diaeresis, CS_E_DIAERESIS), + [I_DIAERESIS] = COMBO(combo_i_diaeresis, CS_I_DIAERESIS), + [O_DIAERESIS] = COMBO(combo_o_diaeresis, CS_O_DIAERESIS), + [U_DIAERESIS] = COMBO(combo_u_diaeresis, CS_U_DIAERESIS), + [Y_DIAERESIS] = COMBO(combo_y_diaeresis, CS_Y_DIAERESIS), + + /* -- */ + [AMPERSAND] = COMBO(combo_ampersand, KC_AMPR), + [AT_SIGN] = COMBO(combo_at_sign, KC_AT), + [BACKSLASH] = COMBO(combo_backslash, KC_BSLS), + [CIRCUMFLEX] = COMBO(combo_circumflex, KC_CIRC), + [COLON] = COMBO(combo_colon, KC_COLON), + [DOLLAR] = COMBO(combo_dollar, KC_DLR), + [EQUAL] = COMBO(combo_equal, KC_EQL), + [EXCLAMATION_MARK] = COMBO(combo_exclamation_mark, KC_EXCLAIM), + [GRAVE] = COMBO(combo_grave, KC_GRV), + [HASH] = COMBO(combo_hash, KC_HASH), + [MINUS] = COMBO(combo_minus, KC_MINS), + [PERCENT] = COMBO(combo_percent, KC_PERC), + [PIPE] = COMBO(combo_pipe, KC_PIPE), + [PLUS] = COMBO(combo_plus, KC_PLUS), + [QUESTION_MARK] = COMBO(combo_question_mark, KC_QUESTION), + [QUOTE] = COMBO(combo_quote, KC_QUOTE), + [QUOTE_DOUBLE] = COMBO(combo_quote_double, KC_DOUBLE_QUOTE), + [SEMICOLON] = COMBO(combo_semicolon, KC_SEMICOLON), + [SLASH] = COMBO(combo_slash, KC_SLSH), + [STAR] = COMBO(combo_star, KC_ASTR), + [TILDE] = COMBO(combo_tilde, KC_TILD), + [UNDERSCORE] = COMBO(combo_underscore, KC_UNDS), + + [ANGLE_BRACKET_LEFT] = COMBO(combo_angle_bracket_left, KC_LABK), + [ANGLE_BRACKET_RIGHT] = COMBO(combo_angle_bracket_right, KC_RABK), + + [BRACKET_LEFT] = COMBO(combo_bracket_left, KC_LEFT_BRACKET), + [BRACKET_RIGHT] = COMBO(combo_bracket_right, KC_RIGHT_BRACKET), + [CURLY_BRACKET_LEFT] = COMBO(combo_curly_bracket_left, KC_LEFT_CURLY_BRACE), + [CURLY_BRACKET_RIGHT] = COMBO(combo_curly_bracket_right, KC_RIGHT_CURLY_BRACE), + [PARENTHESIS_LEFT] = COMBO(combo_parenthesis_left, KC_LEFT_PAREN), + [PARENTHESIS_RIGHT] COMBO(combo_parenthesis_right, KC_RIGHT_PAREN), + + /* One hand special */ + [CONTROL_RIGHT] = COMBO(combo_control_right, KC_RCTL), + [CONTROL_SHIFT_RIGHT] = COMBO(combo_control_shift_right, C(S(XXXXXXX))), + + [SHIFT_LEFT] = COMBO(combo_shift_left, KC_LSFT), + // [ALTGR_LEFT] = COMBO(combo_altgr_left, KC_ALGR), + [CONTROL_SHIFT_LEFT] = COMBO(combo_control_shift_left, C(S(XXXXXXX))), + // [DEL_LEFT] = COMBO(combo_del_left, KC_BSPC), +}; diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/leader.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/leader.c new file mode 100644 index 0000000000..7cfd30af6d --- /dev/null +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/features/leader.c @@ -0,0 +1,268 @@ +// Copyright 2023 Florent Linguenheld (@FLinguenheld) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +LEADER_EXTERNS(); + +void matrix_scan_user(void) { + LEADER_DICTIONARY() { + leading = false; + leader_end(); + + // SEQ_ONE_KEY(KC_F) { + // // Anything you can do in a macro. + // SEND_STRING("QMK is awesome."); } + + + SEQ_TWO_KEYS(KC_M, KC_S) { + SEND_STRING("f@linguenheld.fr"); } + SEQ_TWO_KEYS(KC_M, KC_L) { + SEND_STRING("florent@linguenheld.fr"); } + SEQ_TWO_KEYS(KC_F, KC_L) { + SEND_STRING("FLinguenheld"); } + + SEQ_THREE_KEYS(KC_T, KC_E, KC_S) { + SEND_STRING("test01234"); } + SEQ_THREE_KEYS(KC_A, KC_D, KC_M) { + SEND_STRING("admin01234"); } + + SEQ_ONE_KEY(KC_C) { + SEND_STRING(" | xclip -r -selection clipboard"); } + + /* Degree */ + SEQ_THREE_KEYS(KC_D, KC_E, KC_G) { + send_unicode_string("°"); } + + /* Copyright / Register */ + SEQ_THREE_KEYS(KC_C, KC_O, KC_P) { + send_unicode_string("©"); } + SEQ_THREE_KEYS(KC_R, KC_E, KC_G) { + send_unicode_string("®"); } + + /* Diameter */ + SEQ_THREE_KEYS(KC_D, KC_I, KC_A) { + send_unicode_string("ø"); } + SEQ_FOUR_KEYS(KC_D, KC_I, KC_A, KC_M) { + send_unicode_string("Ø"); } + + /* Currency */ + SEQ_THREE_KEYS(KC_E, KC_U, KC_R) { + send_unicode_string("€"); } + SEQ_THREE_KEYS(KC_P, KC_O, KC_U) { + send_unicode_string("£"); } + SEQ_THREE_KEYS(KC_Y, KC_E, KC_N) { + send_unicode_string("¥"); } + SEQ_THREE_KEYS(KC_C, KC_E, KC_N) { + send_unicode_string("¢"); } + + /* Fractions */ + SEQ_THREE_KEYS(KC_F, KC_C, KC_T) { + send_unicode_string("¼"); } + SEQ_THREE_KEYS(KC_F, KC_C, KC_G) { + send_unicode_string("½"); } + SEQ_THREE_KEYS(KC_F, KC_H, KC_T) { + send_unicode_string("¾"); } + + /* Maths */ + SEQ_THREE_KEYS(KC_M, KC_U, KC_L) { + send_unicode_string("×"); } + SEQ_THREE_KEYS(KC_D, KC_I, KC_V) { + send_unicode_string("÷"); } + SEQ_TWO_KEYS(KC_P, KC_M) { + send_unicode_string("±"); } + SEQ_THREE_KEYS(KC_I, KC_N, KC_E) { + send_unicode_string("≠"); } + SEQ_THREE_KEYS(KC_A, KC_L, KC_M) { + send_unicode_string("≈"); } + SEQ_THREE_KEYS(KC_S, KC_Q, KC_U) { + send_unicode_string("√"); } + SEQ_THREE_KEYS(KC_I, KC_N, KC_F) { + send_unicode_string("∞"); } + SEQ_TWO_KEYS(KC_LABK, KC_LABK) { + send_unicode_string("≤"); } + SEQ_TWO_KEYS(KC_RABK, KC_RABK) { + send_unicode_string("≥"); } + + /* Greek */ + SEQ_TWO_KEYS(KC_P, KC_I) { + send_unicode_string("π"); } + SEQ_THREE_KEYS(KC_P, KC_I, KC_I) { + send_unicode_string("Π"); } + + SEQ_THREE_KEYS(KC_O, KC_M, KC_E) { + send_unicode_string("ω"); } + SEQ_FOUR_KEYS(KC_O, KC_M, KC_E, KC_G) { + send_unicode_string("Ω"); } + + /* Icons */ + SEQ_THREE_KEYS(KC_F, KC_L, KC_A) { + send_unicode_string("⚡"); } + SEQ_THREE_KEYS(KC_S, KC_T, KC_A) { + send_unicode_string("⭐"); } + SEQ_THREE_KEYS(KC_S, KC_P, KC_A) { + send_unicode_string("✨"); } + SEQ_THREE_KEYS(KC_P, KC_O, KC_P) { + send_unicode_string("🎉"); } + SEQ_THREE_KEYS(KC_R, KC_E, KC_C) { + send_unicode_string("♻️"); } + SEQ_THREE_KEYS(KC_L, KC_O, KC_V) { + send_unicode_string("❤️"); } + SEQ_THREE_KEYS(KC_F, KC_I, KC_R) { + send_unicode_string("🔥"); } + SEQ_THREE_KEYS(KC_B, KC_O, KC_M) { + send_unicode_string("💣"); } + SEQ_FOUR_KEYS(KC_B, KC_O, KC_U, KC_M) { + send_unicode_string("💥"); } + SEQ_THREE_KEYS(KC_R, KC_O, KC_C) { + send_unicode_string("🚀"); } + SEQ_THREE_KEYS(KC_T, KC_E, KC_L) { + send_unicode_string("🔭"); } + SEQ_THREE_KEYS(KC_M, KC_A, KC_G) { + send_unicode_string("🔎"); } + SEQ_THREE_KEYS(KC_W, KC_A, KC_R) { + send_unicode_string("⚠️"); } + + SEQ_THREE_KEYS(KC_B, KC_U, KC_L) { + send_unicode_string("💡"); } + SEQ_FOUR_KEYS(KC_I, KC_N, KC_F, KC_O) { + send_unicode_string("ℹ️"); } + SEQ_THREE_KEYS(KC_G, KC_E, KC_A) { + send_unicode_string("⚙️"); } + SEQ_THREE_KEYS(KC_L, KC_I, KC_N) { + send_unicode_string("🔗"); } + SEQ_THREE_KEYS(KC_P, KC_I, KC_N) { + send_unicode_string("📌"); } + SEQ_FOUR_KEYS(KC_F, KC_L, KC_A, KC_G) { + send_unicode_string("🚩"); } + SEQ_THREE_KEYS(KC_B, KC_A, KC_L) { + send_unicode_string("🎈"); } + SEQ_THREE_KEYS(KC_G, KC_I, KC_F) { + send_unicode_string("🎁"); } + + SEQ_THREE_KEYS(KC_P, KC_E, KC_N) { + send_unicode_string("✏️"); } + SEQ_THREE_KEYS(KC_K, KC_E, KC_Y) { + send_unicode_string("🔑"); } + SEQ_THREE_KEYS(KC_B, KC_O, KC_X) { + send_unicode_string("🧰"); } + + SEQ_TWO_KEYS(KC_O, KC_K) { + send_unicode_string("👌"); } + SEQ_THREE_KEYS(KC_O, KC_W, KC_D) { + send_unicode_string("⛔"); } + + SEQ_ONE_KEY(KC_V) { + send_unicode_string("✓"); } + SEQ_TWO_KEYS(KC_V, KC_B) { + send_unicode_string("☑"); } + SEQ_TWO_KEYS(KC_V, KC_G) { + send_unicode_string("✅"); } + + SEQ_ONE_KEY(KC_X) { + send_unicode_string("✗"); } + SEQ_TWO_KEYS(KC_X, KC_B) { + send_unicode_string("☒"); } + SEQ_TWO_KEYS(KC_X, KC_G) { + send_unicode_string("❎"); } + SEQ_TWO_KEYS(KC_X, KC_R) { + send_unicode_string("❌"); } + + SEQ_ONE_KEY(KC_QUESTION) { + send_unicode_string("❔"); } + SEQ_ONE_KEY(KC_EXCLAIM) { + send_unicode_string("❕"); } + SEQ_TWO_KEYS(KC_QUESTION, KC_QUESTION) { + send_unicode_string("❓"); } + SEQ_TWO_KEYS(KC_EXCLAIM, KC_EXCLAIM) { + send_unicode_string("❗"); } + + SEQ_THREE_KEYS(KC_C, KC_O, KC_F) { + send_unicode_string("☕"); } + SEQ_THREE_KEYS(KC_U, KC_M, KC_B) { + send_unicode_string("☔"); } + + SEQ_THREE_KEYS(KC_L, KC_O, KC_L) { + send_unicode_string("😀"); } + SEQ_THREE_KEYS(KC_M, KC_D, KC_R) { + send_unicode_string("🤣"); } + SEQ_THREE_KEYS(KC_K, KC_I, KC_S) { + send_unicode_string("😙"); } + SEQ_THREE_KEYS(KC_A, KC_N, KC_G) { + send_unicode_string("😇"); } + SEQ_THREE_KEYS(KC_G, KC_L, KC_A) { + send_unicode_string("😎"); } + SEQ_THREE_KEYS(KC_A, KC_N, KC_G) { + send_unicode_string("🤬"); } + SEQ_THREE_KEYS(KC_F, KC_E, KC_A) { + send_unicode_string("😱"); } + SEQ_THREE_KEYS(KC_N, KC_E, KC_U) { + send_unicode_string("😐"); } + SEQ_THREE_KEYS(KC_T, KC_H, KC_I) { + send_unicode_string("🤔"); } + SEQ_THREE_KEYS(KC_Z, KC_I, KC_P) { + send_unicode_string("🤐"); } + SEQ_THREE_KEYS(KC_S, KC_U, KC_R) { + send_unicode_string("😯"); } + SEQ_THREE_KEYS(KC_R, KC_O, KC_L) { + send_unicode_string("🙄"); } + SEQ_THREE_KEYS(KC_M, KC_O, KC_O) { + send_unicode_string("🌝"); } + SEQ_THREE_KEYS(KC_H, KC_U, KC_G) { + send_unicode_string("🫂"); } + + SEQ_THREE_KEYS(KC_H, KC_E, KC_N) { + send_unicode_string("🐔"); } + SEQ_THREE_KEYS(KC_R, KC_O, KC_O) { + send_unicode_string("🐓"); } + SEQ_THREE_KEYS(KC_D, KC_U, KC_C) { + send_unicode_string("🦆"); } + SEQ_THREE_KEYS(KC_P, KC_E, KC_A) { + send_unicode_string("🦚"); } + SEQ_THREE_KEYS(KC_B, KC_I, KC_R) { + send_unicode_string("🐦"); } + + /* Subscript / superscript */ + SEQ_THREE_KEYS(KC_U, KC_P, KC_F) { + send_unicode_string("⁰"); } + SEQ_THREE_KEYS(KC_D, KC_N, KC_F) { + send_unicode_string("₀"); } + SEQ_THREE_KEYS(KC_U, KC_P, KC_C) { + send_unicode_string("¹"); } + SEQ_THREE_KEYS(KC_D, KC_N, KC_C) { + send_unicode_string("₁"); } + SEQ_THREE_KEYS(KC_U, KC_P, KC_G) { + send_unicode_string("²"); } + SEQ_THREE_KEYS(KC_D, KC_N, KC_G) { + send_unicode_string("₂"); } + SEQ_THREE_KEYS(KC_U, KC_P, KC_H) { + send_unicode_string("³"); } + SEQ_THREE_KEYS(KC_D, KC_N, KC_H) { + send_unicode_string("₃"); } + SEQ_THREE_KEYS(KC_U, KC_P, KC_T) { + send_unicode_string("⁴"); } + SEQ_THREE_KEYS(KC_D, KC_N, KC_T) { + send_unicode_string("₄"); } + SEQ_THREE_KEYS(KC_U, KC_P, KC_S) { + send_unicode_string("⁵"); } + SEQ_THREE_KEYS(KC_D, KC_N, KC_S) { + send_unicode_string("₅"); } + SEQ_THREE_KEYS(KC_U, KC_P, KC_R) { + send_unicode_string("⁶"); } + SEQ_THREE_KEYS(KC_D, KC_N, KC_R) { + send_unicode_string("₆"); } + SEQ_THREE_KEYS(KC_U, KC_P, KC_P) { + send_unicode_string("⁷"); } + SEQ_THREE_KEYS(KC_D, KC_N, KC_P) { + send_unicode_string("₇"); } + SEQ_THREE_KEYS(KC_U, KC_P, KC_D) { + send_unicode_string("⁸"); } + SEQ_THREE_KEYS(KC_D, KC_N, KC_D) { + send_unicode_string("₈"); } + SEQ_THREE_KEYS(KC_U, KC_P, KC_L) { + send_unicode_string("⁹"); } + SEQ_THREE_KEYS(KC_D, KC_N, KC_L) { + send_unicode_string("₉"); } + + }; +} diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keycodes.h b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keycodes.h new file mode 100644 index 0000000000..b90b28fda4 --- /dev/null +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keycodes.h @@ -0,0 +1,44 @@ +// Copyright 2023 Florent Linguenheld (@FLinguenheld) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +enum layers { + _BASE, + _NUMERIC, + _ARROWS, + _MOUSE, + _ADJUST, + _FN, + _LEFT_HAND, +}; + +enum custom_keys { + UNICODE = SAFE_RANGE, // Shortcut to write unicodes, see numeric layer + + /* See auto-shift */ + CS_E_ACUTE, + + CS_A_GRAVE, + CS_E_GRAVE, + CS_I_GRAVE, + CS_O_GRAVE, + CS_U_GRAVE, + + CS_C_CEDILLA, + CS_AE, + CS_OE, + + CS_A_CIRCUMFLEX, + CS_E_CIRCUMFLEX, + CS_I_CIRCUMFLEX, + CS_O_CIRCUMFLEX, + CS_U_CIRCUMFLEX, + + CS_A_DIAERESIS, + CS_E_DIAERESIS, + CS_I_DIAERESIS, + CS_O_DIAERESIS, + CS_U_DIAERESIS, + CS_Y_DIAERESIS, +}; diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keymap.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keymap.c new file mode 100644 index 0000000000..50fb7909f3 --- /dev/null +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/keymap.c @@ -0,0 +1,133 @@ +/* Copyright 2023 Florent Linguenheld (@FLinguenheld) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H +#include "keycodes.h" + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + + /* Macros */ + switch (keycode) { + + case UNICODE: + if (record->event.pressed) { + register_code(KC_LCTL); + register_code(KC_LSFT); + tap_code16(KC_U); + } else { + unregister_code(KC_LCTL); + unregister_code(KC_LSFT); + } + break; + } + + return true; +} + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_BASE] = LAYOUT( + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + GUI_T(KC_ESC) , KC_B , KC_O , KC_W , KC_BSPC , KC_J , KC_P , KC_D , KC_L , KC_F , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + KC_A , KC_I , KC_E , KC_U , KC_TAB , KC_V , KC_T , KC_S , KC_R , KC_N , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + KC_LALT , KC_X , KC_Q , KC_Y , KC_K , KC_Z , KC_C , KC_G , KC_H , KC_M , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + // |-------------------------+-------------------------| |-------------------------+-------------------------| + LT(_MOUSE, KC_COMM) , KC_LCPO , LT(_NUMERIC, KC_ENT) , LT(_ARROWS, KC_DOT) + // |-------------------------+----/* Space ctl */------| |-------------------------+-------------------------| + ), + + [_NUMERIC] = LAYOUT( + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + _______ , XXXXXXX , XXXXXXX , XXXXXXX , _______ , XXXXXXX , KC_7 , KC_8 , KC_9 , KC_DOT , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ , XXXXXXX , KC_4 , KC_5 , KC_6 , KC_0 , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_1 , KC_2 , KC_3 , KC_COMM , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + // |-------------------------+-------------------------| |-------------------------+-------------------------| + XXXXXXX , UNICODE , XXXXXXX , XXXXXXX + // |-------------------------+-------------------------| |-------------------------+-------------------------| + ), + + [_MOUSE] = LAYOUT( + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + KC_MS_WH_LEFT , KC_MS_WH_UP , KC_MS_WH_DOWN , KC_MS_WH_RIGHT, _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + KC_MS_LEFT , KC_MS_UP , KC_MS_DOWN , KC_MS_RIGHT , _______ , XXXXXXX , KC_MS_ACCEL0 , KC_MS_ACCEL1 , KC_MS_ACCEL2 , XXXXXXX , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + KC_MS_BTN1 , XXXXXXX , KC_MS_BTN3 , KC_MS_BTN2 , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + // |-------------------------+-------------------------| |-------------------------+-------------------------| + XXXXXXX , _______ , KC_MS_BTN1 , KC_MS_BTN2 + // |-------------------------+-------------------------| |-------------------------+-------------------------| + ), + + [_ARROWS] = LAYOUT( + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + _______ , XXXXXXX , XXXXXXX , XXXXXXX , _______ , XXXXXXX , KC_HOME , KC_PAGE_DOWN , KC_PAGE_UP , KC_END , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ , XXXXXXX , KC_LEFT , KC_DOWN , KC_UP , KC_RIGHT , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , C(KC_D) , C(KC_U) , XXXXXXX , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + // |-------------------------+-------------------------| |-------------------------+-------------------------| + XXXXXXX , _______ , XXXXXXX , XXXXXXX + // |-------------------------+-------------------------| |-------------------------+-------------------------| + ), + + [_ADJUST] = LAYOUT( + //|---------------+---------------+---------------+---------------+------------------| |---------------+---------------+---------------+---------------+-----------------| + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_PRINT_SCREEN , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_AUDIO_VOL_UP , + //|---------------+---------------+---------------+---------------+------------------| |---------------+---------------+---------------+---------------+-----------------| + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX ,S(KC_PRINT_SCREEN), XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX ,KC_AUDIO_VOL_DOWN, + //|---------------+---------------+---------------+---------------+------------------| |---------------+---------------+---------------+---------------+-----------------| + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_AUDIO_MUTE , + //|---------------+---------------+---------------+---------------+------------------| |---------------+---------------+---------------+---------------+-----------------| + // |-------------------------+-------------------------| |-------------------------+-------------------------| + XXXXXXX , _______ , XXXXXXX , XXXXXXX + // |-------------------------+-------------------------| |-------------------------+-------------------------| + ), + + [_FN] = LAYOUT( + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + _______ , XXXXXXX , XXXXXXX , XXXXXXX , _______ , XXXXXXX , KC_F7 , KC_F8 , KC_F9 , KC_F10 , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ , XXXXXXX , KC_F4 , KC_F5 , KC_F6 , KC_F11 , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , KC_F1 , KC_F2 , KC_F3 , KC_F12 , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + // |-------------------------+-------------------------| |-------------------------+-------------------------| + XXXXXXX , _______ , XXXXXXX , XXXXXXX + // |-------------------------+-------------------------| |-------------------------+-------------------------| + ), + + [_LEFT_HAND] = LAYOUT( + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + _______ , XXXXXXX , XXXXXXX , XXXXXXX , _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + XXXXXXX , C(KC_X) , C(KC_C) , C(KC_V) , _______ , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + _______ , XXXXXXX , XXXXXXX , C(KC_Z) , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , + //|---------------+---------------+---------------+---------------+---------------| |---------------+---------------+---------------+---------------+---------------| + // |-------------------------+-------------------------| |-------------------------+-------------------------| + XXXXXXX , _______ , XXXXXXX , XXXXXXX + // |-------------------------+-------------------------| |-------------------------+-------------------------| + ), +}; diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/glcdfont.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/glcdfont.c new file mode 100644 index 0000000000..ad4448993f --- /dev/null +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/glcdfont.c @@ -0,0 +1,232 @@ +// Copyright 2023 Florent Linguenheld (@FLinguenheld) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "progmem.h" + +/* Online editor: https://joric.github.io/qle/ */ +static const unsigned char PROGMEM font[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6, + 0xE6, 0xE6, 0xE6, 0xFE, 0xFE, 0xE6, + 0xE6, 0xE6, 0x06, 0x06, 0xE6, 0xE6, + 0xE6, 0xFE, 0xFE, 0x06, 0x06, 0xFE, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFC, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3F, 0x7F, 0x70, 0x60, 0x67, 0x67, + 0x67, 0x67, 0x67, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x60, 0x60, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x60, 0x60, 0x67, + 0x67, 0x67, 0x67, 0x67, 0x7F, 0x3F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6, + 0xE6, 0xE6, 0x06, 0x0E, 0xFE, 0xFE, + 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0xFE, + 0xFE, 0xFE, 0xE6, 0xE6, 0xE6, 0x06, + 0x06, 0xE6, 0xE6, 0xE6, 0xFE, 0xFC, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFC, 0xFE, 0x0E, 0x06, 0x66, 0x66, + 0x66, 0x66, 0xE6, 0xFE, 0xFE, 0x06, + 0x06, 0x66, 0x66, 0x66, 0xE6, 0xE6, + 0xFE, 0xFE, 0xE6, 0xE6, 0xE6, 0x06, + 0x06, 0xE6, 0xE6, 0xE6, 0xFE, 0xFC, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3F, 0x7F, 0x60, 0x60, 0x7C, 0x7C, + 0x7C, 0x7C, 0x60, 0x60, 0x7F, 0x7F, + 0x60, 0x60, 0x67, 0x67, 0x67, 0x67, + 0x67, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, + 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3F, 0x7F, 0x67, 0x66, 0x66, 0x66, + 0x66, 0x60, 0x70, 0x7F, 0x7F, 0x60, + 0x60, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, + 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6, + 0xE6, 0x06, 0x0E, 0xFE, 0xFE, 0x0E, + 0x06, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, + 0xFE, 0xFE, 0x06, 0x06, 0x66, 0x66, + 0x66, 0x66, 0x06, 0x0E, 0xFE, 0xFC, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFC, 0xFE, 0x0E, 0x06, 0xE6, 0xE6, + 0xE6, 0xE6, 0xE6, 0xFE, 0xFE, 0x06, + 0x06, 0xCE, 0x9E, 0x9E, 0xCE, 0x06, + 0x06, 0xFE, 0xFE, 0x06, 0x06, 0xE6, + 0xE6, 0xE6, 0x0E, 0x1E, 0xFE, 0xFC, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3F, 0x7F, 0x60, 0x60, 0x7C, 0x7C, + 0x7C, 0x60, 0x60, 0x7F, 0x7F, 0x70, + 0x60, 0x67, 0x67, 0x64, 0x60, 0x70, + 0x7F, 0x7F, 0x60, 0x60, 0x7E, 0x7E, + 0x78, 0x70, 0x62, 0x67, 0x7F, 0x3F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3F, 0x7F, 0x70, 0x60, 0x67, 0x67, + 0x67, 0x67, 0x67, 0x7F, 0x7F, 0x60, + 0x60, 0x7F, 0x7F, 0x7F, 0x7F, 0x60, + 0x60, 0x7F, 0x7F, 0x60, 0x60, 0x67, + 0x67, 0x67, 0x70, 0x78, 0x7F, 0x3F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/oled.c b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/oled.c new file mode 100644 index 0000000000..5b177acc7c --- /dev/null +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/oled/oled.c @@ -0,0 +1,457 @@ +// Copyright 2023 Florent Linguenheld (@FLinguenheld) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H +#include "keycodes.h" + +/* Leader state */ +static bool is_leader_active = false; +void leader_start(void) { + is_leader_active = true; +} +void leader_end(void) { + is_leader_active = false; +} + + +void oled_display(void) { + + /* Layers */ + switch (get_highest_layer(layer_state)) { + + case _BASE: ; + if (is_keyboard_master()) { + static const char PROGMEM qmk_logo_master[] = { + // 'raven', 32x128px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x8f, 0x5f, 0x31, 0x79, 0x33, 0x7f, + 0x3b, 0x71, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x4c, 0x02, 0x01, 0x95, 0xff, 0xb5, 0x05, 0x02, 0x4c, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7e, 0x01, 0x01, 0x01, 0x7e, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, + 0xf0, 0xf8, 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0xfc, 0x7c, 0x7c, 0xf8, 0xf0, 0xe0, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xcf, 0xef, 0xe7, 0xf3, 0xfb, 0xf9, + 0xfd, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0x0f, 0x0e, 0x1a, 0x23, 0x43, 0x3f, 0x03, 0x00, + 0x00, 0x0c, 0x1e, 0x1f, 0x3f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x80, 0x40, 0xe0, 0xbf, 0x33, + 0x30, 0x60, 0x20, 0x21, 0xff, 0x20, 0x60, 0x20, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0xf8, + 0xfc, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x7c, 0xfc, 0xfc, 0xf8, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x30, + 0x20, 0x30, 0x20, 0x32, 0x20, 0x32, 0x20, 0x30, 0x20, 0x1c, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(qmk_logo_master, sizeof(qmk_logo_master)); + + } else { + static const char PROGMEM qmk_logo_slave[] = { + // 'birds', 32x128px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0xc0, 0xe0, 0xd0, 0x88, 0x84, 0x04, 0x04, 0xc4, 0xc4, 0x08, 0x08, 0x10, 0x60, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf8, 0x46, 0x81, 0x02, 0x02, 0x06, 0x04, 0x04, 0x04, 0x74, 0x84, 0x06, 0x03, 0x81, + 0x42, 0x24, 0x18, 0x10, 0xa0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x06, 0x08, 0x11, 0x12, 0x24, 0x24, 0x48, 0xc8, 0x48, 0x48, 0xc9, 0x49, 0x4a, + 0x4a, 0x26, 0x25, 0x25, 0x14, 0x14, 0x14, 0x1d, 0x15, 0x2e, 0x54, 0x60, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x05, 0x02, 0x03, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x40, 0x20, 0x10, 0x08, 0x08, 0x08, 0x08, 0x88, 0xc8, 0x08, 0x30, 0xc0, 0xc0, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x18, 0x04, 0x03, + 0x00, 0x00, 0x00, 0x80, 0x80, 0x70, 0x18, 0x00, 0x00, 0x00, 0x80, 0x70, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x70, 0x50, 0x48, 0x48, 0x24, 0x24, 0x12, 0x0a, 0x05, 0x09, 0x13, 0x12, 0x22, 0x22, + 0xe1, 0x21, 0x21, 0x20, 0xe0, 0x20, 0x20, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x07, 0x04, 0x00, 0x04, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(qmk_logo_slave, sizeof(qmk_logo_slave)); + } + break; + + case _NUMERIC: ; + static const char PROGMEM qmk_numeric[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x03, 0x07, 0x0f, 0x1e, + 0x3c, 0x78, 0xf0, 0xe0, 0xc0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x03, 0x87, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0e, 0x1c, 0x38, 0x70, 0xe0, + 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, + 0xc7, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xfc, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x0e, 0x1e, 0x3e, 0x77, 0xe7, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, 0xf0, 0xf0, + 0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xff, 0xff, + 0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, + 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + oled_write_raw_P(qmk_numeric, sizeof(qmk_numeric)); + break; + + case _MOUSE: ; + static const char PROGMEM qmk_mouse[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x3e, 0x3c, 0x78, 0xf0, 0xe0, 0xc0, + 0xc0, 0xe0, 0xf0, 0x78, 0x3c, 0x3e, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, + 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x81, 0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xc1, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x7f, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, + 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x7f, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, + 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, + 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x81, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, + 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, + 0xc1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, + 0xc1, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + oled_write_raw_P(qmk_mouse, sizeof(qmk_mouse)); + break; + + case _ARROWS: ; + static const char PROGMEM qmk_arrows[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, + 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x3e, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3e, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, + 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0x7c, 0x3c, 0x1c, 0x0c, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x1e, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xde, 0x9e, 0x1e, 0x1e, 0x1e, + 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x0f, 0x0e, 0x0c, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, + 0x30, 0x70, 0xf0, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x78, 0x79, 0x7b, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0x78, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x30, 0x38, 0x3c, 0x3e, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, + 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x7c, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0xff, 0xff, + 0xff, 0xff, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0x7c, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, + 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + oled_write_raw_P(qmk_arrows, sizeof(qmk_arrows)); + break; + + case _ADJUST: ; + static const char PROGMEM qmk_adjust[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xf8, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0xf8, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x0f, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xff, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xe1, 0xe1, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, + 0xe1, 0xe1, 0xe1, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, + 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xf0, 0xf0, + 0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, + 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + oled_write_raw_P(qmk_adjust, sizeof(qmk_adjust)); + break; + + case _FN: ; + static const char PROGMEM qmk_fn[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, + 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xf8, 0xe0, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0xfe, + 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x07, 0x1f, 0x7f, 0xfe, 0xf8, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + + oled_write_raw_P(qmk_fn, sizeof(qmk_fn)); + break; + + case _LEFT_HAND: ; + static const char PROGMEM qmk_left_hand[] = { + // 'layers_left_hand', 32x128px + 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe1, 0xf1, 0xf1, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x1f, 0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0x87, 0x87, 0x87, 0x87, 0x87, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, + 0x71, 0x71, 0x71, 0x70, 0x70, 0xf0, 0xf0, 0xf0, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x3c, 0xfc, 0xf8, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xe3, 0xe3, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0xe3, 0xe3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0f, 0x1e, 0x3c, 0x78, 0xf0, 0xe0, 0xc0, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x1f, 0x1f, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x1e, 0xfc, 0xf8, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0x78, 0x3f, 0x1f, 0x0f + }; + + oled_write_raw_P(qmk_left_hand, sizeof(qmk_left_hand)); + break; + } + + /* Leader */ + if (is_leader_active) { + + static const char PROGMEM qmk_leader[] = { + 0x00, 0x00, 0xf8, 0xf8, 0x78, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x78, 0xf8, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, + 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x18, 0x18, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x87, 0x87, 0x87, 0x87, 0x87, + 0x87, 0x87, 0x87, 0x87, 0x87, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xc3, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x00, 0x0e, 0x0e, + 0x0e, 0x0e, 0x0e, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x70, 0x70, + 0x70, 0x70, 0x70, 0x7f, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf8, 0xf8, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc6, 0xc6, 0xc6, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, + 0xe1, 0xe1, 0xe1, 0xe1, 0xc1, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x38, 0x38, 0x38, + 0x78, 0xf8, 0xf8, 0xbf, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00 + }; + + oled_write_raw_P(qmk_leader, sizeof(qmk_leader)); + } + + /* Modifier keys */ + if (get_mods()) { + + if (get_mods() & MOD_MASK_CTRL) { + + oled_write_char(0x01, false); + oled_write_char(0x02, false); + oled_write_char(0x03, false); + oled_write_char(0x04, false); + oled_write_char(0x05, false); + + oled_write_char(0x21, false); + oled_write_char(0x22, false); + oled_write_char(0x23, false); + oled_write_char(0x24, false); + oled_write_char(0x25, false); + } + if (get_mods() & MOD_BIT(KC_LALT)) { + + oled_write_char(0x41, false); + oled_write_char(0x42, false); + oled_write_char(0x43, false); + oled_write_char(0x44, false); + oled_write_char(0x45, false); + + oled_write_char(0x61, false); + oled_write_char(0x62, false); + oled_write_char(0x63, false); + oled_write_char(0x64, false); + oled_write_char(0x65, false); + } + if (get_mods() & MOD_BIT(KC_RALT)) { + + oled_write_char(0x81, false); + oled_write_char(0x82, false); + oled_write_char(0x83, false); + oled_write_char(0x84, false); + oled_write_char(0x85, false); + + oled_write_char(0xA1, false); + oled_write_char(0xA2, false); + oled_write_char(0xA3, false); + oled_write_char(0xA4, false); + oled_write_char(0xA5, false); + } + if (get_mods() & MOD_MASK_SHIFT) { + + oled_write_char(0x4B, false); + oled_write_char(0x4C, false); + oled_write_char(0x4D, false); + oled_write_char(0x4E, false); + oled_write_char(0x4F, false); + + oled_write_char(0x6B, false); + oled_write_char(0x6C, false); + oled_write_char(0x6D, false); + oled_write_char(0x6E, false); + oled_write_char(0x6F, false); + } + if (get_mods() & MOD_MASK_GUI) { + + oled_write_char(0x8B, false); + oled_write_char(0x8C, false); + oled_write_char(0x8D, false); + oled_write_char(0x8E, false); + oled_write_char(0x8F, false); + + oled_write_char(0xAB, false); + oled_write_char(0xAC, false); + oled_write_char(0xAD, false); + oled_write_char(0xAE, false); + oled_write_char(0xAF, false); + } + } +}; + +bool oled_task_user(void) { + oled_display(); + return false; +} diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/readme.md b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/readme.md new file mode 100644 index 0000000000..3873ca45cf --- /dev/null +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/readme.md @@ -0,0 +1,130 @@ +### Custom aurora sweep keymap + + +This keymap is inspired by [optimot](https://bepo.fr/) which is a French layout. +Nonetheless all French characters are sent in unicode, so it works with the standard US ANSI layout. + +It uses the *best* qmk features : +- combos ♥ +- auto shift +- leader + +I tried to optimise key positions for neovim and i3wm while limit digrams. +The oled screens are used to display the current layout, the modifier keys and the leader key. + +![oledmodifiers](https://i.imgur.com/on95jx0.png) +![oledmouse](https://i.imgur.com/PwkR6P2.png) + +#### Install + +Clone this repo in the folder : + + ~/qmk_firmware/keyboards/splitkb/aurora/sweep/keymaps/ + +#### Compile and flash + +Navigate into the keymap folder and launch this command for both sides : + + qmk compile && qmk flash + +and : + + Click twice on the flash button and use nautilus for instance to clic on the keyboard. + Don't forget to flash with the double tap bootloader define before soldering. + +#### Links + +[qmk](https://docs.qmk.fm/#/) +[ferris sweep](https://github.com/davidphilipbarr/Sweep) +[splitkb](https://splitkb.com) + +#### Layouts + +![base](https://i.imgur.com/E3hRkxW.png) +![numeric](https://i.imgur.com/GeC0reE.png) +![mouse](https://i.imgur.com/QhsWVrE.png) +![arrows](https://i.imgur.com/4sAfGAt.png) +![adjust](https://i.imgur.com/hcoN2P8.png) +![fn](https://i.imgur.com/dVunqFF.png) +![left hand](https://i.imgur.com/fk5YJj6.png) +![combo](https://i.imgur.com/aZ8TpuY.png) +![combo2](https://i.imgur.com/QayRuFA.png) +![combo3](https://i.imgur.com/YpnbMeh.png) + +#### French + +| - | | +|------------------|------------------------| +| space + e | é | +| space + i | ç | +| space + a | æ | +| space + o | œ | +| comma + a | à | +| comma + e | è | +| comma + i | ì | +| comma + o | ò | +| comma + u | ù | +| enter + a | â | +| enter + e | ê | +| enter + i | î | +| enter + o | ô | +| enter + u | û | +| dot + a | ä | +| dot + e | ë | +| dot + i | ï | +| dot + o | ö | +| dot + u | ü | +| dot + y | ÿ | + + +#### Leader + +| - | | +|--------------------|------------------------| +| M + S | mail short | +| M + L | mail long | +| D + E + G | ° | +| C + O + P | © | +| R + E + G | ® | +| D + I + A | ø | +| D + I + A + M | Ø | +| E + U + R | € | +| P + O + U | £ | +| Y + E + N | ¥ | +| C + E + N | ¢ | +| P + I | π | +| P + I + I | Π | +| O + M + E | ω | +| O + M + E + G | Ω | +| U + P + F | ⁰ | +| D + N + F | ₀ | + +| - | | +|--------------------|------------------------| +| M + U + L | × | +| D + I + V | ÷ | +| P + M | ± | +| I + N + E | ≠ | +| A + L + M | ≈ | +| S + Q + U | √ | +| I + N + F | ∞ | +| < + < | ≤ | +| > + > | ≥ | +| F + S + T | ¼ | +| F + S + G | ½ | +| F + H + T | ¾ | + +| - | | +|--------------------|------------------------| +| F + L + A | ⚡ | +| S + P + A | ✨ | +| O + W + D | ⛔ | +| C + O + F | ☕ | +| U + M + B | ☔ | +| Y + E + S | ✅ | +| N + O | ❎ | +| C + R + O | ❌ | +| ? | ❔ | +| ! | ❕ | +| ? + ? | ❓ | +| ! + ! | ❗ | diff --git a/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/rules.mk b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/rules.mk new file mode 100644 index 0000000000..d854cbb16b --- /dev/null +++ b/keyboards/splitkb/aurora/sweep/keymaps/flinguenheld/rules.mk @@ -0,0 +1,22 @@ +LTO_ENABLE = yes +CONVERT_TO = elite_pi + +SRC += features/auto_shift.c +SRC += features/combo.c +SRC += features/leader.c +SRC += oled/oled.c + +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 + +MOUSEKEY_ENABLE = yes +AUTO_SHIFT_ENABLE = yes +AUTO_SHIFT_MODIFIERS = no +COMBO_ENABLE = yes +LEADER_ENABLE = yes + +# Recommended for space cadet shift +COMMAND_ENABLE = no + +UNICODE_ENABLE = yes +SEND_STRING_ENABLE = yes diff --git a/keyboards/vertex/arc60h/arc60h.c b/keyboards/vertex/arc60h/arc60h.c new file mode 100644 index 0000000000..2ef6bb3ff4 --- /dev/null +++ b/keyboards/vertex/arc60h/arc60h.c @@ -0,0 +1,18 @@ +/* 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 "arc60h.h" diff --git a/keyboards/vertex/arc60h/arc60h.h b/keyboards/vertex/arc60h/arc60h.h new file mode 100644 index 0000000000..d82886a20f --- /dev/null +++ b/keyboards/vertex/arc60h/arc60h.h @@ -0,0 +1,36 @@ +/* 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 . + */ + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + + +#define LAYOUT_all( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1E, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \ + K40, K41, K43, K46, K4B, K4C, K4E \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, ___, K1E }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, ___, K2D, ___ }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E }, \ + { K40, K41, ___, K43, ___, ___, K46, ___, ___, ___, ___, K4B, K4C, ___, K4E } \ +} diff --git a/keyboards/vertex/arc60h/config.h b/keyboards/vertex/arc60h/config.h new file mode 100644 index 0000000000..1795f9b2ee --- /dev/null +++ b/keyboards/vertex/arc60h/config.h @@ -0,0 +1,59 @@ +/* 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 . +*/ + +#pragma once + +#define MATRIX_COL_PINS { B9, B8, B7, B6, B5, B4, B3, B11, A15, A10, A9, B14, B13, B12, A5 } +#define MATRIX_ROW_PINS { B10, B1, B0, A7, A6 } +#define DIODE_DIRECTION COL2ROW + +#define LED_CAPS_LOCK_PIN C13 +#define LED_PIN_ON_STATE 0 + +#define RGBLIGHT_EFFECT_BREATHING +#define RGBLIGHT_EFFECT_RAINBOW_MOOD +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLIGHT_EFFECT_SNAKE +#define RGBLIGHT_EFFECT_KNIGHT +#define RGBLIGHT_EFFECT_CHRISTMAS +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RGB_TEST +#define RGBLIGHT_EFFECT_ALTERNATING +#define RGBLIGHT_EFFECT_TWINKLE +#define RGB_DI_PIN B15 +#define RGBLED_NUM 9 +#define WS2812_SPI SPID2 +#define WS2812_SPI_MOSI_PAL_MODE 5 + + + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ +#define FORCE_NKRO + + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT diff --git a/keyboards/vertex/arc60h/halconf.h b/keyboards/vertex/arc60h/halconf.h new file mode 100644 index 0000000000..79481e04e4 --- /dev/null +++ b/keyboards/vertex/arc60h/halconf.h @@ -0,0 +1,25 @@ +/* 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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/bt66tech/bt66tech60/halconf.h -r platforms/chibios/common/configs/halconf.h` + */ + +#pragma once +#define HAL_USE_SPI TRUE + +#include_next diff --git a/keyboards/vertex/arc60h/info.json b/keyboards/vertex/arc60h/info.json new file mode 100644 index 0000000000..9cd38dd907 --- /dev/null +++ b/keyboards/vertex/arc60h/info.json @@ -0,0 +1,82 @@ +{ + "keyboard_name": "ARC60H", + "manufacturer": "vertex", + "url": "", + "maintainer": "EasonQian1, Vertex-kb", + "usb": { + "vid": "0x7374", + "pid": "0x9770", + "device_version": "0.0.1" + }, + "processor": "STM32F103", + "bootloader": "stm32duino", + "layouts": { + "LAYOUT_all": { + "layout": [ + {"x": 0, "y": 0 }, + {"x": 1, "y": 0 }, + {"x": 2, "y": 0 }, + {"x": 3, "y": 0 }, + {"x": 4, "y": 0 }, + {"x": 5, "y": 0 }, + {"x": 6, "y": 0 }, + {"x": 7, "y": 0 }, + {"x": 8, "y": 0 }, + {"x": 9, "y": 0 }, + {"x": 10, "y": 0 }, + {"x": 11, "y": 0 }, + {"x": 12, "y": 0 }, + {"x": 13, "y": 0 }, + {"x": 14, "y": 0 }, + {"x": 0, "y": 1, "w": 1.5 }, + {"x": 1.5, "y": 1 }, + {"x": 2.5, "y": 1 }, + {"x": 3.5, "y": 1 }, + {"x": 4.5, "y": 1 }, + {"x": 5.5, "y": 1 }, + {"x": 6.5, "y": 1 }, + {"x": 7.5, "y": 1 }, + {"x": 8.5, "y": 1 }, + {"x": 9.5, "y": 1 }, + {"x": 10.5, "y": 1 }, + {"x": 11.5, "y": 1 }, + {"x": 12.5, "y": 1 }, + {"x": 13.5, "y": 1, "w": 1.5 }, + {"x": 0, "y": 2, "w": 1.75 }, + {"x": 1.75, "y": 2 }, + {"x": 2.75, "y": 2 }, + {"x": 3.75, "y": 2 }, + {"x": 4.75, "y": 2 }, + {"x": 5.75, "y": 2 }, + {"x": 6.75, "y": 2 }, + {"x": 7.75, "y": 2 }, + {"x": 8.75, "y": 2 }, + {"x": 9.75, "y": 2 }, + {"x": 10.75, "y": 2 }, + {"x": 11.75, "y": 2 }, + {"x": 12.75, "y": 2, "w": 2.25 }, + {"x": 0, "y": 3, "w": 1.25 }, + {"x": 1.25, "y": 3 }, + {"x": 2.25, "y": 3 }, + {"x": 3.25, "y": 3 }, + {"x": 4.25, "y": 3 }, + {"x": 5.25, "y": 3 }, + {"x": 6.25, "y": 3 }, + {"x": 7.25, "y": 3 }, + {"x": 8.25, "y": 3 }, + {"x": 9.25, "y": 3 }, + {"x": 10.25, "y": 3 }, + {"x": 11.25, "y": 3 }, + {"x": 12.25, "y": 3, "w": 1.75 }, + {"x": 14, "y": 3 }, + {"x": 0, "y": 4, "w": 1.5 }, + {"x": 1.5, "y": 4, "w": 1 }, + {"x": 2.5, "y": 4, "w": 1.5 }, + {"x": 4, "y": 4, "w": 7 }, + {"x": 11, "y": 4, "w": 1.5 }, + {"x": 12.5, "y": 4, "w": 1 }, + {"x": 13.5, "y": 4, "w": 1.5 } + ] + } + } +} diff --git a/keyboards/vertex/arc60h/keymaps/default/keymap.c b/keyboards/vertex/arc60h/keymaps/default/keymap.c new file mode 100644 index 0000000000..3a8bf9d24e --- /dev/null +++ b/keyboards/vertex/arc60h/keymaps/default/keymap.c @@ -0,0 +1,36 @@ +/* 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_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_1, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL + ), + + [1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + +}; diff --git a/keyboards/vertex/arc60h/keymaps/via/keymap.c b/keyboards/vertex/arc60h/keymaps/via/keymap.c new file mode 100644 index 0000000000..2cbef4bce2 --- /dev/null +++ b/keyboards/vertex/arc60h/keymaps/via/keymap.c @@ -0,0 +1,51 @@ +/* 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_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_1, KC_BSPC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, MO(1), KC_RCTL + ), + + [1] = LAYOUT_all( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, RGB_TOG, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT_all( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/vertex/arc60h/keymaps/via/rules.mk b/keyboards/vertex/arc60h/keymaps/via/rules.mk new file mode 100644 index 0000000000..36b7ba9cbc --- /dev/null +++ b/keyboards/vertex/arc60h/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes diff --git a/keyboards/vertex/arc60h/mcuconf.h b/keyboards/vertex/arc60h/mcuconf.h new file mode 100644 index 0000000000..5d05bd2505 --- /dev/null +++ b/keyboards/vertex/arc60h/mcuconf.h @@ -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 . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/bt66tech/bt66tech60/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h` + */ + +#pragma once + +#include_next + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE diff --git a/keyboards/vertex/arc60h/readme.md b/keyboards/vertex/arc60h/readme.md new file mode 100644 index 0000000000..72f9cddbc9 --- /dev/null +++ b/keyboards/vertex/arc60h/readme.md @@ -0,0 +1,22 @@ +# arc60h + +* A customizable hotswap 60% keyboard. + +* Keyboard Maintainer: [EASON](https://github.com/EasonQian1) +* Hardware Supported: arc60h +* Hardware Availability: [vertex-kb](https://github.com/Vertex-kb) + +Make example for this keyboard (after setting up your build environment): + + make vertex/arc60h:default + +Flashing example for this keyboard: + + make vertex/arc60h: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 Enter 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/arc60h/rules.mk b/keyboards/vertex/arc60h/rules.mk new file mode 100644 index 0000000000..94b0fb2aa9 --- /dev/null +++ b/keyboards/vertex/arc60h/rules.mk @@ -0,0 +1,17 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = yes # Console for debug +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SLEEP_LED_ENABLE = yes +WS2812_DRIVER = spi + +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/xiudi/xd75/keymaps/buzzlighter1/config.h b/keyboards/xiudi/xd75/keymaps/buzzlighter1/config.h deleted file mode 100644 index 84f050577c..0000000000 --- a/keyboards/xiudi/xd75/keymaps/buzzlighter1/config.h +++ /dev/null @@ -1,5 +0,0 @@ - -#pragma once - -#define FORCE_NKRO -#define RGBLIGHT_SLEEP diff --git a/keyboards/xiudi/xd75/keymaps/buzzlighter1/keymap.c b/keyboards/xiudi/xd75/keymaps/buzzlighter1/keymap.c index f2d483fff4..6dcdcdef18 100644 --- a/keyboards/xiudi/xd75/keymaps/buzzlighter1/keymap.c +++ b/keyboards/xiudi/xd75/keymaps/buzzlighter1/keymap.c @@ -1,113 +1,66 @@ #include QMK_KEYBOARD_H - -// Layer shorthand #define _QW 0 #define _FN 1 -// Defines the keycodes used by our macros in process_record_user -enum custom_keycodes { - QMKBEST = SAFE_RANGE, - QMKURL -}; - -#define FN_CAPS LT(_FN, KC_CAPS) - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* QWERTY * .--------------------------------------------------------------------------------------------------------------------------------------. - * | GESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Del | BACKSP | + * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Del | BACKSP | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | Mute | + * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | HOME | CAPS | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------| - * | FN(CPS)| A | S | D | F | G | H | J | K | L | ; | ' | Vol- | Vol+ | ENTER | + * | TT(FN) | A | S | D | F | G | H | J | K | L | ; | ' | \ | END | ENTER | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------| - * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | Home | PGUP | UP | PGDWN | + * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | Vol+ | PGUP | UP | PGDWN | * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------| - * | LCTRL | Del | ENTER | LALT | SPACE | End | LEFT | DOWN | RIGHT | + * | LCTRL | WIN | MUTE | LALT | SPACE | Vol- | LEFT | DOWN | RIGHT | * '--------------------------------------------------------------------------------------------------------------------------------------' */ [_QW] = LAYOUT_ortho_5x15( /* QWERTY */ - QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL, 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_MUTE, - FN_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_VOLD, KC_VOLU, KC_ENT, - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_HOME, KC_PGUP, KC_UP, KC_PGDN, - KC_LCTL, KC_MPRV, KC_MNXT, KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_END, KC_LEFT, KC_DOWN, KC_RGHT + 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_DEL, 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_HOME, KC_CAPS, + TT(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_END, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_VOLU, KC_PGUP, KC_UP, KC_PGDN, + KC_LCTL, KC_LGUI, KC_MUTE, KC_LALT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_LEFT, KC_DOWN, KC_RGHT ), /* FUNCTION * .--------------------------------------------------------------------------------------------------------------------------------------. - * | XXXXXXX| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | _______| _______| + * | GRV | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | _______| _______| * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | _______| P7 | P8 | P9 | + | P* | XXXXXXX| PR SCR | SCR LK | PAUSE | XXXXXXX| BL_DOWN| BL_UP | RGB HD | RGB HI | + * | _______| P7 | P8 | P9 | + | P* | XXXXXXX| XXXXXXX| NKRON | NKROFF | XXXXXXX| BL_DEC | BL_INC | RGB HD | RGB HI | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | _______| P4 | P5 | P6 | NumLk | CALC | XXXXXXX| POWER | XXXXXXX| QK_BOOT| XXXXXXX| BL_BRTG| BL_STEP| RGB SD | RGB SI | + * | _______| P4 | P5 | P6 | NumLk | CALC | RESET | BOOTLDR| CLEAREE| XXXXXXX| XXXXXXX| BL_BRTG| BL_STEP| RGB SD | RGB SI | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| - * | _______| P1 | P2 | P3 | - | P/ | XXXXXXX| OS | PLAY | PREV | NXT | BL_OFF | BL_ON | RGB VD | RGB VI | + * | _______| P1 | P2 | P3 | - | P/ | XXXXXXX| XXXXXXX| PREV | NXT | PLAY | BL_OFF | BL_ON | RGB VD | RGB VI | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| * | _______| P0 | P. | PENT | SPACE | BL_TOGG| RGB TG | RGB RMD| RGB MD | * '--------------------------------------------------------------------------------------------------------------------------------------' */ [_FN] = LAYOUT_ortho_5x15( /* FUNCTION */ - XXXXXXX, 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_P7, KC_P8, KC_P9, KC_PPLS, KC_PAST, XXXXXXX, KC_SCRL, KC_PAUS, XXXXXXX, XXXXXXX, BL_DOWN, BL_UP, RGB_HUD, RGB_HUI, - _______, KC_P4, KC_P5, KC_P6, KC_NUM, KC_CALC, XXXXXXX, KC_PWR, XXXXXXX, QK_BOOT, XXXXXXX, BL_BRTG, BL_STEP, RGB_SAD, RGB_SAI, - _______, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_PSLS, XXXXXXX, KC_LWIN, KC_MPLY, KC_MPRV, KC_MNXT, BL_OFF, BL_ON, RGB_VAD, RGB_VAI, + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, + _______, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_PAST, XXXXXXX, XXXXXXX, NK_ON, NK_OFF, XXXXXXX, BL_DEC, BL_INC, RGB_HUD, RGB_HUI, + _______, KC_P4, KC_P5, KC_P6, KC_LNUM, KC_CALC, QK_RBT, QK_BOOT, EE_CLR, XXXXXXX, XXXXXXX, BL_BRTG, BL_STEP, RGB_SAD, RGB_SAI, + _______, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_PSLS, XXXXXXX, XXXXXXX, KC_MPRV, KC_MNXT, KC_MPLY, BL_OFF, BL_ON, RGB_VAD, RGB_VAI, _______, KC_P0, KC_PDOT, KC_PENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, BL_TOGG, RGB_TOG, RGB_RMOD,RGB_MOD ) }; -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case QMKBEST: - if (record->event.pressed) { - // when keycode QMKBEST is pressed - SEND_STRING("QMK is the best thing ever!"); - } else { - // when keycode QMKBEST is released - } - break; - case QMKURL: - if (record->event.pressed) { - // when keycode QMKURL is pressed - SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER)); - } else { - // when keycode QMKURL is released - } - break; - } - return true; -} - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -void led_set_user(uint8_t usb_led) { - if (usb_led & (1< + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H -#include "muse.h" + +#ifdef AUDIO_ENABLE +# include "muse.h" +#endif enum planck_layers { _QWERTY, @@ -120,39 +139,33 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; #ifdef AUDIO_ENABLE -float plover_song[][2] = SONG(PLOVER_SOUND); -float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); + float plover_song[][2] = SONG(PLOVER_SOUND); + float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND); -float caps_song_on[][2] = SONG(NUM_LOCK_ON_SOUND); -float caps_song_off[][2] = SONG(SCROLL_LOCK_ON_SOUND); + float caps_song_on[][2] = SONG(NUM_LOCK_ON_SOUND); + float caps_song_off[][2] = SONG(SCROLL_LOCK_ON_SOUND); -// Custom songs for DPAD layer status -float dpad_song_on[][2] = { - HD_NOTE(_A4), HD_NOTE(_A4), HD_NOTE(_A4), - QD_NOTE(_F4), QD_NOTE(_C5), HD_NOTE(_A4), - QD_NOTE(_F4), QD_NOTE(_C5), WD_NOTE(_A4) -}; + // Custom songs for DPAD layer status + float dpad_song_on[][2] = { + HD_NOTE(_A4), HD_NOTE(_A4), HD_NOTE(_A4), + QD_NOTE(_F4), QD_NOTE(_C5), HD_NOTE(_A4), + QD_NOTE(_F4), QD_NOTE(_C5), WD_NOTE(_A4) + }; -float dpad_song_off[][2] = { - ED_NOTE(_C6), ED_NOTE(_C6), - ED_NOTE(_C6), ED_NOTE(_C6), - W__NOTE(_REST), QD_NOTE(_GS5), - QD_NOTE(_AS5), Q__NOTE(_C6), - Q__NOTE(_AS5), Q__NOTE(_C6) -}; + float dpad_song_off[][2] = { + ED_NOTE(_C6), ED_NOTE(_C6), + ED_NOTE(_C6), ED_NOTE(_C6), + W__NOTE(_REST), QD_NOTE(_GS5), + QD_NOTE(_AS5), Q__NOTE(_C6), + Q__NOTE(_AS5), Q__NOTE(_C6) + }; #endif -#ifndef BACKLIGHT_ENABLE layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); -} - -#else - -layer_state_t layer_state_set_user(layer_state_t state) { - // LED control, lighting up when Fn layer is activated state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); - switch (get_highest_layer(state)) { +# ifdef BACKLIGHT_ENABLE + // LED control, lighting up when Fn layer is activated + switch (get_highest_layer(state)) { case _QWERTY: backlight_set(0); break; @@ -162,112 +175,111 @@ layer_state_t layer_state_set_user(layer_state_t state) { case _DPAD: backlight_set(3); break; - } + } +# endif + return state; } -#endif - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { - case QWERTY: - if (record->event.pressed) { - print("mode just switched to qwerty and this is a huge string\n"); - set_single_persistent_default_layer(_QWERTY); - } - return false; - break; - case COLEMAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_COLEMAK); - } - return false; - break; - case DVORAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_DVORAK); - } - return false; - break; - case BACKLIT: - if (record->event.pressed) { - register_code(KC_RSFT); -#ifdef BACKLIGHT_ENABLE + case QWERTY: + if (record->event.pressed) { + print("mode just switched to qwerty and this is a huge string\n"); + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_DVORAK); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); +# ifdef BACKLIGHT_ENABLE backlight_step(); -#endif -#ifdef KEYBOARD_planck_rev5 +# endif +# ifdef KEYBOARD_planck_rev5 writePinLow(E6); -#endif - } else { - unregister_code(KC_RSFT); -#ifdef KEYBOARD_planck_rev5 +# endif + } else { + unregister_code(KC_RSFT); +# ifdef KEYBOARD_planck_rev5 writePinHigh(E6); -#endif - } - return false; - break; - case PLOVER: - if (record->event.pressed) { -#ifdef AUDIO_ENABLE +# endif + } + return false; + break; + case PLOVER: + if (record->event.pressed) { +# ifdef AUDIO_ENABLE stop_all_notes(); PLAY_SONG(plover_song); -#endif - layer_off(_RAISE); - layer_off(_LOWER); - layer_off(_ADJUST); - layer_on(_PLOVER); - if (!eeconfig_is_enabled()) { - eeconfig_init(); - } - keymap_config.raw = eeconfig_read_keymap(); - keymap_config.nkro = 1; - eeconfig_update_keymap(keymap_config.raw); +# endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); } - return false; - break; - case EXT_PLV: - if (record->event.pressed) { -#ifdef AUDIO_ENABLE + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { +# ifdef AUDIO_ENABLE PLAY_SONG(plover_gb_song); -#endif - layer_off(_PLOVER); - } - return false; - break; +# endif + layer_off(_PLOVER); + } + return false; + break; - // Play audio upon switching Caps Lock and custom layers - - case KC_CAPS: - if (record->event.pressed) { -#ifdef AUDIO_ENABLE + // Play audio upon switching Caps Lock and custom layers + case KC_CAPS: + if (record->event.pressed) { +# ifdef AUDIO_ENABLE if (host_keyboard_led_state().caps_lock) { PLAY_SONG(caps_song_off); } else { PLAY_SONG(caps_song_on); } -#endif - } - return true; +# endif + } + return true; - case DP_ON: - if (record->event.pressed) { - } else { // only actived upon key release -#ifdef AUDIO_ENABLE + case DP_ON: + if (record->event.pressed) { + } else { // only actived upon key release +# ifdef AUDIO_ENABLE PLAY_SONG(dpad_song_on); -#endif +# endif - layer_off(_FN1); - layer_on(_DPAD); - } + layer_off(_FN1); + layer_on(_DPAD); + } - case DP_OFF: - if (record->event.pressed) { -#ifdef AUDIO_ENABLE + case DP_OFF: + if (record->event.pressed) { +# ifdef AUDIO_ENABLE PLAY_SONG(dpad_song_off); -#endif +# endif - layer_off(_DPAD); - } + layer_off(_DPAD); + } } return true; } @@ -305,28 +317,28 @@ bool encoder_update_user(uint8_t index, bool clockwise) { bool dip_switch_update_user(uint8_t index, bool active) { switch (index) { - case 0: - if (active) { -#ifdef AUDIO_ENABLE + case 0: + if (active) { +# ifdef AUDIO_ENABLE PLAY_SONG(plover_song); -#endif - layer_on(_ADJUST); - } else { -#ifdef AUDIO_ENABLE +# endif + layer_on(_ADJUST); + } else { +# ifdef AUDIO_ENABLE PLAY_SONG(plover_gb_song); -#endif - layer_off(_ADJUST); - } - break; - case 1: - if (active) { - muse_mode = true; - } else { - muse_mode = false; -#ifdef AUDIO_ENABLE +# endif + layer_off(_ADJUST); + } + break; + case 1: + if (active) { + muse_mode = true; + } else { + muse_mode = false; +# ifdef AUDIO_ENABLE stop_all_notes(); -#endif - } +# endif + } } return true; } @@ -349,10 +361,19 @@ void matrix_scan_user(void) { bool music_mask_user(uint16_t keycode) { switch (keycode) { - case RAISE: - case LOWER: - return false; - default: - return true; + case RAISE: + case LOWER: + return false; + default: + return true; } } + +#ifdef RGBLIGHT_ENABLE + void keyboard_post_init_user(void) { + rgblight_enable_noeeprom(); // Enables RGB, without saving settings + // Vibrant cyan + rgblight_sethsv_noeeprom(HSV_SPRINGGREEN); + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + } +#endif diff --git a/layouts/community/ortho_4x12/junonum/rules.mk b/layouts/community/ortho_4x12/junonum/rules.mk index 72e6214d23..ecb8d8aa1a 100644 --- a/layouts/community/ortho_4x12/junonum/rules.mk +++ b/layouts/community/ortho_4x12/junonum/rules.mk @@ -1,13 +1,15 @@ -SRC += muse.c +ifeq ($(strip $(AUDIO_ENABLE)), yes) + SRC += muse.c +endif ifeq ($(strip $(KEYBOARD)),$(filter $(strip $(KEYBOARD)), planck/rev2 planck/rev3 planck/rev4 planck/rev5)) - BACKLIGHT_ENABLE = yes + BACKLIGHT_ENABLE = yes else - BACKLIGHT_ENABLE = no + BACKLIGHT_ENABLE = no endif ifeq ($(strip $(KEYBOARD)), vitamins_included/rev1) - NKRO_ENABLE = no + NKRO_ENABLE = no endif MIDI_ENABLE=no