From bd8e257f842e40f01041706a217be2cf85ae7f92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20A=2E=20Volpato?= Date: Fri, 28 Jan 2022 21:19:11 -0300 Subject: [PATCH] [Keyboard] Adds Elongate Revision Delta PCB support (#15498) Co-authored-by: Drashna Jaelre Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> Co-authored-by: Ryan --- keyboards/acheron/elongate/beta/beta.c | 17 ++++ keyboards/acheron/elongate/beta/beta.h | 44 ++++++++++ .../acheron/elongate/{ => beta}/config.h | 4 + .../acheron/elongate/{ => beta}/info.json | 0 .../{ => beta}/keymaps/default/keymap.c | 0 .../{ => beta}/keymaps/default/readme.md | 0 .../elongate/{ => beta}/keymaps/via/config.h | 0 .../elongate/{ => beta}/keymaps/via/keymap.c | 0 .../elongate/{ => beta}/keymaps/via/rules.mk | 0 keyboards/acheron/elongate/beta/readme.md | 43 ++++++++++ .../acheron/elongate/{ => beta}/rules.mk | 0 keyboards/acheron/elongate/delta/chconf.h | 25 ++++++ keyboards/acheron/elongate/delta/config.h | 81 +++++++++++++++++++ keyboards/acheron/elongate/delta/delta.c | 78 ++++++++++++++++++ keyboards/acheron/elongate/delta/delta.h | 34 ++++++++ keyboards/acheron/elongate/delta/halconf.h | 23 ++++++ .../elongate/delta/keymaps/default/keymap.c | 44 ++++++++++ .../elongate/delta/keymaps/via/keymap.c | 44 ++++++++++ .../elongate/delta/keymaps/via/rules.mk | 1 + keyboards/acheron/elongate/delta/mcuconf.h | 25 ++++++ keyboards/acheron/elongate/delta/readme.md | 43 ++++++++++ keyboards/acheron/elongate/delta/rules.mk | 20 +++++ keyboards/acheron/elongate/elongate.c | 14 +--- keyboards/acheron/elongate/elongate.h | 31 ++----- keyboards/acheron/elongate/readme.md | 25 ------ 25 files changed, 533 insertions(+), 63 deletions(-) create mode 100644 keyboards/acheron/elongate/beta/beta.c create mode 100644 keyboards/acheron/elongate/beta/beta.h rename keyboards/acheron/elongate/{ => beta}/config.h (98%) rename keyboards/acheron/elongate/{ => beta}/info.json (100%) rename keyboards/acheron/elongate/{ => beta}/keymaps/default/keymap.c (100%) rename keyboards/acheron/elongate/{ => beta}/keymaps/default/readme.md (100%) rename keyboards/acheron/elongate/{ => beta}/keymaps/via/config.h (100%) rename keyboards/acheron/elongate/{ => beta}/keymaps/via/keymap.c (100%) rename keyboards/acheron/elongate/{ => beta}/keymaps/via/rules.mk (100%) create mode 100755 keyboards/acheron/elongate/beta/readme.md rename keyboards/acheron/elongate/{ => beta}/rules.mk (100%) create mode 100755 keyboards/acheron/elongate/delta/chconf.h create mode 100755 keyboards/acheron/elongate/delta/config.h create mode 100755 keyboards/acheron/elongate/delta/delta.c create mode 100755 keyboards/acheron/elongate/delta/delta.h create mode 100755 keyboards/acheron/elongate/delta/halconf.h create mode 100755 keyboards/acheron/elongate/delta/keymaps/default/keymap.c create mode 100755 keyboards/acheron/elongate/delta/keymaps/via/keymap.c create mode 100755 keyboards/acheron/elongate/delta/keymaps/via/rules.mk create mode 100755 keyboards/acheron/elongate/delta/mcuconf.h create mode 100755 keyboards/acheron/elongate/delta/readme.md create mode 100755 keyboards/acheron/elongate/delta/rules.mk delete mode 100644 keyboards/acheron/elongate/readme.md diff --git a/keyboards/acheron/elongate/beta/beta.c b/keyboards/acheron/elongate/beta/beta.c new file mode 100644 index 00000000000..ffa13d4fe19 --- /dev/null +++ b/keyboards/acheron/elongate/beta/beta.c @@ -0,0 +1,17 @@ +/* Copyright 2020 Gondolindrim + * + * 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 "beta.h" diff --git a/keyboards/acheron/elongate/beta/beta.h b/keyboards/acheron/elongate/beta/beta.h new file mode 100644 index 00000000000..6ff32b4f757 --- /dev/null +++ b/keyboards/acheron/elongate/beta/beta.h @@ -0,0 +1,44 @@ +/* Copyright 2020 Gondolindrim + * + * 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" + +/* This is a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the Keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +#define KNO KC_NO + +#define LAYOUT( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K49, K41, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1B, K1C, K4A, K42, \ + K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K4B, K44, \ + K30, K31, K32, K34, K37, K3A, K3B, K3C, K3D, K4C, K47 \ +)\ +{\ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KNO, K1B, K1C }, \ + { K20, KNO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \ + { K30, K31, K32, KNO, K34, KNO, KNO, K37, KNO, K3A, K3B, K3C, K3D }, \ + { KNO, K41, K42, KNO, K44, KNO, KNO, K47, KNO, K49, K4A, K4B, K4C } \ +} diff --git a/keyboards/acheron/elongate/config.h b/keyboards/acheron/elongate/beta/config.h similarity index 98% rename from keyboards/acheron/elongate/config.h rename to keyboards/acheron/elongate/beta/config.h index 434e62cd865..c02cf089797 100644 --- a/keyboards/acheron/elongate/config.h +++ b/keyboards/acheron/elongate/beta/config.h @@ -144,3 +144,7 @@ along with this program. If not, see . /* Bootmagic Lite key configuration */ // #define BOOTMAGIC_LITE_ROW 0 // #define BOOTMAGIC_LITE_COLUMN 0 + +#define LED_NUM_LOCK_PIN D2 +#define LED_CAPS_LOCK_PIN D1 +#define LED_SCROLL_LOCK_PIN D0 diff --git a/keyboards/acheron/elongate/info.json b/keyboards/acheron/elongate/beta/info.json similarity index 100% rename from keyboards/acheron/elongate/info.json rename to keyboards/acheron/elongate/beta/info.json diff --git a/keyboards/acheron/elongate/keymaps/default/keymap.c b/keyboards/acheron/elongate/beta/keymaps/default/keymap.c similarity index 100% rename from keyboards/acheron/elongate/keymaps/default/keymap.c rename to keyboards/acheron/elongate/beta/keymaps/default/keymap.c diff --git a/keyboards/acheron/elongate/keymaps/default/readme.md b/keyboards/acheron/elongate/beta/keymaps/default/readme.md similarity index 100% rename from keyboards/acheron/elongate/keymaps/default/readme.md rename to keyboards/acheron/elongate/beta/keymaps/default/readme.md diff --git a/keyboards/acheron/elongate/keymaps/via/config.h b/keyboards/acheron/elongate/beta/keymaps/via/config.h similarity index 100% rename from keyboards/acheron/elongate/keymaps/via/config.h rename to keyboards/acheron/elongate/beta/keymaps/via/config.h diff --git a/keyboards/acheron/elongate/keymaps/via/keymap.c b/keyboards/acheron/elongate/beta/keymaps/via/keymap.c similarity index 100% rename from keyboards/acheron/elongate/keymaps/via/keymap.c rename to keyboards/acheron/elongate/beta/keymaps/via/keymap.c diff --git a/keyboards/acheron/elongate/keymaps/via/rules.mk b/keyboards/acheron/elongate/beta/keymaps/via/rules.mk similarity index 100% rename from keyboards/acheron/elongate/keymaps/via/rules.mk rename to keyboards/acheron/elongate/beta/keymaps/via/rules.mk diff --git a/keyboards/acheron/elongate/beta/readme.md b/keyboards/acheron/elongate/beta/readme.md new file mode 100755 index 00000000000..8a8949fdfe4 --- /dev/null +++ b/keyboards/acheron/elongate/beta/readme.md @@ -0,0 +1,43 @@ +# Acheron Elongate rev. Beta QMK firmware repository + +![](https://i.imgur.com/G9LESkUh.jpg) + +* Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim) +* Hardware Supported: [open-source PCB](https://github.com/AcheronProject/Elongate) powered by STM32F072 microcontroller +* Hardware Availability: the revision beta of Elongate was never publicly sold. + +## Introduction + +This is the QMK firmware repository for the Elongate PCB revision Beta and pre-revision Beta versions, which was the initial revision PCB for this keyboard; hence it was never sold publicly. + +The Elongate PCB is an Open-Hardware-guideline-compliant PCB which files can be found at [this repository](https://github.com/AcheronProject/Elongate). Its designer and maintainer is [Gondolindrim](https://github.com/Gondolindrim). + +## How to flash + +### Enter bootloader + +The DFU state in the bootloader can be accessed 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**: press the button on the front of the PCB. +* **Keycode in layout**: Press the key mapped to `RESET` if it is available. + +## Compile firmware + +You can build the default layout firwmare for Elongate after setting up your build environment by using: + + make acheron/elongate/beta:default + +After entering DFU state in your PCB, you can download the binary file generated through `dfu-util` or a GUI like QMK Toolbox. + +To directly flash the PCB after it is put into a DFU state, use + + make acheron/elongate/beta: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). + +## PCB Documentation + +See the [AcheronDocs](https://acheronproject.com/pcbs/elongate/) page for the ElongatePCB full documentation. You can also check the KiCad PCB files at the [Elongate GitHub repository](https://github.com/AcheronProject/Elongate). + +Before using the files for personal or commercial use, please read the [Acheron Open-Hardware License V1.4](https://acheronproject.com/AOHL14/) under which the Elongate PCB is published. diff --git a/keyboards/acheron/elongate/rules.mk b/keyboards/acheron/elongate/beta/rules.mk similarity index 100% rename from keyboards/acheron/elongate/rules.mk rename to keyboards/acheron/elongate/beta/rules.mk diff --git a/keyboards/acheron/elongate/delta/chconf.h b/keyboards/acheron/elongate/delta/chconf.h new file mode 100755 index 00000000000..cbbae31079f --- /dev/null +++ b/keyboards/acheron/elongate/delta/chconf.h @@ -0,0 +1,25 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define CH_CFG_ST_FREQUENCY 10000 + +#define CH_CFG_OPTIMIZE_SPEED FALSE + +#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE + +#include_next diff --git a/keyboards/acheron/elongate/delta/config.h b/keyboards/acheron/elongate/delta/config.h new file mode 100755 index 00000000000..957a6e39cd1 --- /dev/null +++ b/keyboards/acheron/elongate/delta/config.h @@ -0,0 +1,81 @@ +/* +Copyright 2020 Gondolindrim + +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 "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0x4150 //AP for AcheronProject +#define PRODUCT_ID 0x454D // EL+1 for Elongate revision Delta +#define DEVICE_VER 0x0002 +#define MANUFACTURER Acheron Project +#define PRODUCT Elongate + +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +#define MATRIX_COL_PINS { A10, A9, A8, B14, B12, B11, B10, B2, B1, A7, A5, B9, B8, B7, B6 } +#define MATRIX_ROW_PINS { B3, A15, B0, B4, B5 } + +#define DIODE_DIRECTION COL2ROW + +#define BACKLIGHT_PIN A6 +#define BACKLIGHT_PWM_DRIVER PWMD3 +#define BACKLIGHT_PWM_CHANNEL 1 +#define BACKLIGHT_PAL_MODE 1 +#define BACKLIGHT_BREATHING +#define BACKLIGHT_LEVELS 20 +#define BACKLIGHT_DEFAULT_LEVEL 10 +#define BREATHING_PERIOD 3 + +#define RGB_DI_PIN B15 +#define RGBLED_NUM 16 +#define RGBLIGHT_LIMIT_VAL 200 +#define RGBLIGHT_SLEEP +#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 RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 5) + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +// Elongate has six indicator LEDs. These def's are the indicator pin defs. The LEDs are distributed in two clusters: one next to the numpad and another between spacebars; LEDs are numbered top-to-bottom. + +#define LED1_PIN A2 +#define LED2_PIN A1 +#define LED3_PIN A0 +#define LED4_PIN A4 +#define LED5_PIN A3 +#define LED6_PIN F1 diff --git a/keyboards/acheron/elongate/delta/delta.c b/keyboards/acheron/elongate/delta/delta.c new file mode 100755 index 00000000000..520dde4e242 --- /dev/null +++ b/keyboards/acheron/elongate/delta/delta.c @@ -0,0 +1,78 @@ +/* Copyright 2021 Gondolindrim + * + * 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 "delta.h" + +#define LED_PIN_ON_STATE 1 +// Inits all indicator LEDs as push-pull outputs +void led_init_ports(void) { + palSetLineMode(LED1_PIN, PAL_MODE_OUTPUT_PUSHPULL); + palSetLineMode(LED2_PIN, PAL_MODE_OUTPUT_PUSHPULL); + palSetLineMode(LED3_PIN, PAL_MODE_OUTPUT_PUSHPULL); + palSetLineMode(LED4_PIN, PAL_MODE_OUTPUT_PUSHPULL); + palSetLineMode(LED5_PIN, PAL_MODE_OUTPUT_PUSHPULL); + palSetLineMode(LED6_PIN, PAL_MODE_OUTPUT_PUSHPULL); +} + +// This function updates LEDs 1, 2 and 3 according to num, caps and scroll lock states +bool led_update_kb(led_t led_state) { + bool res = led_update_user(led_state); + if(res) { + writePin(LED1_PIN, !led_state.num_lock); + writePin(LED2_PIN, !led_state.caps_lock); + writePin(LED3_PIN, !led_state.scroll_lock); + } + return res; +} + +// Turns off all bottom LEDs +void turn_off_bottom_leds(void){ + writePin(LED4_PIN, 1); + writePin(LED5_PIN, 1); + writePin(LED6_PIN, 1); +} + +/* +Here the bottom LEDs get updated. The idea being that LED4 is lit when the default layer is active, LED5 when layer 1 is active and LED6 when layer 2. +Before updating, however, all bottom LEDs are turned off. +*/ +layer_state_t layer_state_set_kb(layer_state_t state) { + turn_off_bottom_leds(); + switch (get_highest_layer(state)) { +// The base layer, or layer zero, will be handled by the default case. + case 1: + writePin(LED4_PIN, 1); + writePin(LED5_PIN, 0); + writePin(LED6_PIN, 1); + break; + case 2: + writePin(LED4_PIN, 1); + writePin(LED5_PIN, 1); + writePin(LED6_PIN, 0); + break; + default: + writePin(LED4_PIN, 0); + writePin(LED5_PIN, 1); + writePin(LED6_PIN, 1); + break; + } + return state; +} + +// Since the keyboard starts at layer 0, the init function starts LED4 as lit up. +void keyboard_post_init_kb(void){ + writePin(LED4_PIN, 0); +} diff --git a/keyboards/acheron/elongate/delta/delta.h b/keyboards/acheron/elongate/delta/delta.h new file mode 100755 index 00000000000..119521215fb --- /dev/null +++ b/keyboards/acheron/elongate/delta/delta.h @@ -0,0 +1,34 @@ +/* Copyright 2021 Gondolindrim + * + * 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, K1B, K1C, K1D, K1E, \ + K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K4B, K4C, K4D, K4E, \ + K30, K31, K32, K34, K37, K39, K3A, K3B, K3C, K3D, K3E \ +) { \ + { 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, ___, K1B, K1C, K1D, K1E }, \ + { K20, ___, K22, K23, K24, K25, K26, K27, K28, K29, K2A, ___, ___, ___, ___ }, \ + { K30, K31, K32, ___, K34, ___, ___, K37, ___, K39, K3A, K3B, K3C, K3D, K3E }, \ + { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, K4B, K4C, K4D, K4E } \ +} diff --git a/keyboards/acheron/elongate/delta/halconf.h b/keyboards/acheron/elongate/delta/halconf.h new file mode 100755 index 00000000000..2a91ab97378 --- /dev/null +++ b/keyboards/acheron/elongate/delta/halconf.h @@ -0,0 +1,23 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#define HAL_USE_PWM TRUE + +#define HAL_USE_SPI TRUE + +#include_next diff --git a/keyboards/acheron/elongate/delta/keymaps/default/keymap.c b/keyboards/acheron/elongate/delta/keymaps/default/keymap.c new file mode 100755 index 00000000000..a701d9ed9bd --- /dev/null +++ b/keyboards/acheron/elongate/delta/keymaps/default/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2020 Gondolindrim + * + * 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 +#define SPC_L2 LT(2, KC_SPACE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_all( /* Base */ + KC_ESC , KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_KP_7, KC_KP_8, KC_KP_9, + KC_TAB , KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENTER, KC_KP_4, KC_KP_5, KC_KP_6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, MO(1) , KC_UP, KC_KP_1, KC_KP_2, KC_KP_3, + KC_LCTL, KC_LWIN, KC_LALT, SPC_L2, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_KP_0, KC_DOT +), +[1] = LAYOUT_all( /* Base */ + KC_F1, KC_F2, KC_F2, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, KC_MINS, KC_EQL, KC_NLCK, KC_SLCK, KC_CAPS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SCLN, KC_QUOT, KC_SLSH, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_HOME, KC_PGDN, KC_END , KC_TRNS, KC_TRNS +), +[2] = LAYOUT_all( /* Base */ + RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +), +[3] = LAYOUT_all( /* Base */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +) +}; diff --git a/keyboards/acheron/elongate/delta/keymaps/via/keymap.c b/keyboards/acheron/elongate/delta/keymaps/via/keymap.c new file mode 100755 index 00000000000..a701d9ed9bd --- /dev/null +++ b/keyboards/acheron/elongate/delta/keymaps/via/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2020 Gondolindrim + * + * 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 +#define SPC_L2 LT(2, KC_SPACE) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT_all( /* Base */ + KC_ESC , KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_KP_7, KC_KP_8, KC_KP_9, + KC_TAB , KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENTER, KC_KP_4, KC_KP_5, KC_KP_6, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, MO(1) , KC_UP, KC_KP_1, KC_KP_2, KC_KP_3, + KC_LCTL, KC_LWIN, KC_LALT, SPC_L2, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_KP_0, KC_DOT +), +[1] = LAYOUT_all( /* Base */ + KC_F1, KC_F2, KC_F2, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_LBRC, KC_RBRC, KC_MINS, KC_EQL, KC_NLCK, KC_SLCK, KC_CAPS, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SCLN, KC_QUOT, KC_SLSH, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_HOME, KC_PGDN, KC_END , KC_TRNS, KC_TRNS +), +[2] = LAYOUT_all( /* Base */ + RESET , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_M_T, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +), +[3] = LAYOUT_all( /* Base */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +) +}; diff --git a/keyboards/acheron/elongate/delta/keymaps/via/rules.mk b/keyboards/acheron/elongate/delta/keymaps/via/rules.mk new file mode 100755 index 00000000000..1e5b99807cb --- /dev/null +++ b/keyboards/acheron/elongate/delta/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/acheron/elongate/delta/mcuconf.h b/keyboards/acheron/elongate/delta/mcuconf.h new file mode 100755 index 00000000000..d712a1e5a7b --- /dev/null +++ b/keyboards/acheron/elongate/delta/mcuconf.h @@ -0,0 +1,25 @@ +/* Copyright 2020 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include_next + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE + +#undef STM32_SPI_USE_SPI2 +#define STM32_SPI_USE_SPI2 TRUE diff --git a/keyboards/acheron/elongate/delta/readme.md b/keyboards/acheron/elongate/delta/readme.md new file mode 100755 index 00000000000..055b02ee04d --- /dev/null +++ b/keyboards/acheron/elongate/delta/readme.md @@ -0,0 +1,43 @@ +# Acheron Elongate rev. Delta QMK firmware repository + +![](https://i.imgur.com/G9LESkUh.jpg) + +* Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim) +* Hardware Supported: [open-source PCB](https://github.com/AcheronProject/Elongate) powered by STM32F072 microcontroller +* Hardware Availability: as of december 2021, the group buy for Elongate is already over and extras sales are pending. + +## Introduction + +This is the QMK firmware repository for the Elongate PCB revision Delta, which was the revision publicly sold at the group buy. Revisions Alpha and Beta were sold in private group buys and never ran publicly. + +The Elongate PCB is an Open-Hardware-guideline-compliant PCB which files can be found at [this repository](https://github.com/AcheronProject/Elongate). Its designer and maintainer is [Gondolindrim](https://github.com/Gondolindrim). + +## How to flash + +### Enter bootloader + +The DFU state in the bootloader can be accessed 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**: press the button on the front of the PCB, next to caps lock, for at least five seconds +* **Keycode in layout**: Press the key mapped to `RESET` if it is available (escape key at layer 2 in the default firmware) + +## Compile firmware + +You can build the default layout firwmare for Elongate after setting up your build environment by using: + + make acheron/elongate/delta:default + +After entering DFU state in your PCB, you can download the binary file generated through `dfu-util` or a GUI like QMK Toolbox. + +To directly flash the PCB after it is put into a DFU state, use + + make acheron/elongate/delta: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). + +## PCB Documentation + +See the [AcheronDocs](https://acheronproject.com/pcbs/elongate/) page for the ElongatePCB full documentation. You can also check the KiCad PCB files at the [Elongate GitHub repository](https://github.com/AcheronProject/Elongate). + +Before using the files for personal or commercial use, please read the [Acheron Open-Hardware License V1.4](https://acheronproject.com/AOHL14/) under which the Elongate PCB is published. diff --git a/keyboards/acheron/elongate/delta/rules.mk b/keyboards/acheron/elongate/delta/rules.mk new file mode 100755 index 00000000000..20a0bab85e9 --- /dev/null +++ b/keyboards/acheron/elongate/delta/rules.mk @@ -0,0 +1,20 @@ +# MCU name +MCU = STM32F072 + +# Bootloader selection +BOOTLOADER = stm32-dfu + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = yes # Enable N-Key Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/acheron/elongate/elongate.c b/keyboards/acheron/elongate/elongate.c index 31c47203607..9bf0d893a97 100644 --- a/keyboards/acheron/elongate/elongate.c +++ b/keyboards/acheron/elongate/elongate.c @@ -1,4 +1,4 @@ -/* Copyright 2020 Gondolindrim +/* Copyright 2021 Gondolindrim * * 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 @@ -9,18 +9,6 @@ * 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 "elongate.h" -bool led_update_kb(led_t led_state) { - bool res = led_update_user(led_state); - if(res) { - writePin(D2, led_state.num_lock); - writePin(D1, led_state.caps_lock); - writePin(D0, led_state.scroll_lock); - } - return res; -} diff --git a/keyboards/acheron/elongate/elongate.h b/keyboards/acheron/elongate/elongate.h index 6ff32b4f757..2e588716430 100644 --- a/keyboards/acheron/elongate/elongate.h +++ b/keyboards/acheron/elongate/elongate.h @@ -1,4 +1,4 @@ -/* Copyright 2020 Gondolindrim +/* Copyright 2020-2022 Gondolindrim * * 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 @@ -18,27 +18,8 @@ #include "quantum.h" -/* This is a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the Keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. - */ - -#define KNO KC_NO - -#define LAYOUT( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K49, K41, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1B, K1C, K4A, K42, \ - K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K4B, K44, \ - K30, K31, K32, K34, K37, K3A, K3B, K3C, K3D, K4C, K47 \ -)\ -{\ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KNO, K1B, K1C }, \ - { K20, KNO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \ - { K30, K31, K32, KNO, K34, KNO, KNO, K37, KNO, K3A, K3B, K3C, K3D }, \ - { KNO, K41, K42, KNO, K44, KNO, KNO, K47, KNO, K49, K4A, K4B, K4C } \ -} +#if defined(KEYBOARD_acheron_elongate_beta) + #include "beta.h" +#elif defined(KEYBOARD_acheron_elongate_delta) + #include "delta.h" +#endif diff --git a/keyboards/acheron/elongate/readme.md b/keyboards/acheron/elongate/readme.md deleted file mode 100644 index 83c0eeada12..00000000000 --- a/keyboards/acheron/elongate/readme.md +++ /dev/null @@ -1,25 +0,0 @@ -# Acheron Aχξρων 45-S-ATMEGA-MX-TH-WI (codename "Elongate") QMK firmware - -

- -

- -## Introduction - -This is the QMK firmware repository for the ElongatePCN, compatible with revisions Beta and pre-Beta. - -The ElongatePCB is an Open-Hardware guidelines compliant PCB which files can be found at [this link](https://github.com/Gondolindrim/AElongate). Its designer and maintainer is [Gondolindrim](https://github.com/Gondolindrim). - -## PCB Documentation - -See the [AcheronDocs](https://gondolindrim.github.io/AcheronDocs/elongate/introduction.html) page for the ElongatePCB full documentation. You can also check the KiCad PCB files at the [Elongate GitHub repository](https://github.com/Gondolindrim/Elongate). - -Before using the files for personal or commercial use, please read the [Acheron Open-Hardware License V1.2](https://gondolindrim.github.io/AcheronDocs/license/license.html) under which the Austin PCB is published. - -## How to compile - -After setting up your build environment, you can compile the Austin default keymap by using: - - make acheron/elongate: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).