1
0
Fork 0
forked from forks/qmk_firmware

Add Smith and Rune Magnus (#22153)

Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
This commit is contained in:
Álvaro A. Volpato 2023-11-29 04:47:08 -03:00 committed by GitHub
parent c8a28e8e9b
commit 93127df5d4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 668 additions and 0 deletions

View file

@ -0,0 +1,32 @@
/*
Copyright 2023 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 <http://www.gnu.org/licenses/>.
*/
#pragma once
#define RGBLIGHT_LED_MAP { 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 30, 29, 28, 27, 26, 25 }
#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL+5
#define WS2812_PWM_COMPLEMENTARY_OUTPUT
#define WS2812_PWM_DRIVER PWMD1
#define WS2812_PWM_CHANNEL 3
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
#define WS2812_DMA_CHANNEL 6
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE 4096

View file

@ -0,0 +1,22 @@
/* Copyright 2023 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 <http://www.gnu.org/licenses/>.
*/
#pragma once
#define HAL_USE_PWM TRUE
#define HAL_USE_PAL TRUE
#include_next <halconf.h>

View file

@ -0,0 +1,141 @@
{
"keyboard_name": "Magnus M75H",
"manufacturer": "SmithRune",
"url": "",
"maintainer": "Gondolindrim",
"usb": {
"vid": "0x8384",
"pid": "0x1676",
"device_version": "0.0.1"
},
"features": {
"audio": false,
"backlight": false,
"bootmagic": true,
"command": false,
"console": false,
"encoder": false,
"extrakey": true,
"lto": true,
"mousekey": true,
"nkro": true,
"rgblight": true
},
"diode_direction": "COL2ROW",
"ws2812": {
"pin": "B15"
},
"rgblight": {
"led_count": 31,
"animations": {
"alternating": true,
"breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
"rgb_test": true,
"snake": true,
"static_gradient": true,
"twinkle": true
}
}
"matrix_pins": {
"cols": ["A1" , "A2" , "A4" , "C9" , "A8" , "A10", "B8" , "A15", "C10", "C11", "B5" , "B4", "B3" , "D2" , "C12" ],
"rows": ["C15", "A7" , "C4" , "C5" , "C8" , "C3" , "C1" , "C0" , "C2" , "C14" , "A0" ]
},
"processor": "STM32F401",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT": {
"layout": [
{"matrix":[0,0], "x":0, "y":0},
{"matrix":[0,1], "x":1.25, "y":0},
{"matrix":[0,2], "x":2.25, "y":0},
{"matrix":[0,3], "x":3.25, "y":0},
{"matrix":[0,4], "x":4.25, "y":0},
{"matrix":[0,5], "x":5.5, "y":0},
{"matrix":[0,6], "x":6.5, "y":0},
{"matrix":[0,7], "x":7.5, "y":0},
{"matrix":[0,8], "x":8.5, "y":0},
{"matrix":[0,9], "x":9.75, "y":0},
{"matrix":[0,10], "x":10.75, "y":0},
{"matrix":[0,11], "x":11.75, "y":0},
{"matrix":[0,12], "x":12.75, "y":0},
{"matrix":[0,13], "x":14, "y":0},
{"matrix":[1,0], "x":0, "y":1.5},
{"matrix":[1,1], "x":1, "y":1.5},
{"matrix":[1,2], "x":2, "y":1.5},
{"matrix":[1,3], "x":3, "y":1.5},
{"matrix":[1,4], "x":4, "y":1.5},
{"matrix":[1,5], "x":5, "y":1.5},
{"matrix":[1,6], "x":6, "y":1.5},
{"matrix":[6,7], "x":7, "y":1.5},
{"matrix":[6,8], "x":8, "y":1.5},
{"matrix":[6,9], "x":9, "y":1.5},
{"matrix":[6,10], "x":10, "y":1.5},
{"matrix":[6,11], "x":11, "y":1.5},
{"matrix":[6,12], "x":12, "y":1.5},
{"matrix":[6,13], "x":13, "y":1.5},
{"matrix":[6,14], "x":14, "y":1.5},
{"matrix":[7,14], "x":15.25, "y":1.5},
{"matrix":[2,0], "x":0, "y":2.5, "w":1.5},
{"matrix":[2,1], "x":1.5, "y":2.5},
{"matrix":[2,2], "x":2.5, "y":2.5},
{"matrix":[2,3], "x":3.5, "y":2.5},
{"matrix":[2,4], "x":4.5, "y":2.5},
{"matrix":[2,5], "x":5.5, "y":2.5},
{"matrix":[7,6], "x":6.5, "y":2.5},
{"matrix":[7,7], "x":7.5, "y":2.5},
{"matrix":[7,8], "x":8.5, "y":2.5},
{"matrix":[7,9], "x":9.5, "y":2.5},
{"matrix":[7,10], "x":10.5, "y":2.5},
{"matrix":[7,11], "x":11.5, "y":2.5},
{"matrix":[7,12], "x":12.5, "y":2.5},
{"matrix":[7,13], "x":13.5, "y":2.5, "w":1.5},
{"matrix":[8,14], "x":15.25, "y":2.5},
{"matrix":[3,0], "x":0, "y":3.5, "w":1.75},
{"matrix":[3,1], "x":1.75, "y":3.5},
{"matrix":[3,2], "x":2.75, "y":3.5},
{"matrix":[3,3], "x":3.75, "y":3.5},
{"matrix":[3,4], "x":4.75, "y":3.5},
{"matrix":[8,5], "x":5.75, "y":3.5},
{"matrix":[8,6], "x":6.75, "y":3.5},
{"matrix":[8,7], "x":7.75, "y":3.5},
{"matrix":[8,8], "x":8.75, "y":3.5},
{"matrix":[8,9], "x":9.75, "y":3.5},
{"matrix":[8,10], "x":10.75, "y":3.5},
{"matrix":[8,11], "x":11.75, "y":3.5},
{"matrix":[8,13], "x":12.75, "y":3.5, "w":2.25},
{"matrix":[9,13], "x":15.25, "y":3.5},
{"matrix":[4,0], "x":0, "y":4.5, "w":2.25},
{"matrix":[4,2], "x":2.25, "y":4.5},
{"matrix":[4,3], "x":3.25, "y":4.5},
{"matrix":[4,4], "x":4.25, "y":4.5},
{"matrix":[9,5], "x":5.25, "y":4.5},
{"matrix":[9,6], "x":6.25, "y":4.5},
{"matrix":[9,7], "x":7.25, "y":4.5},
{"matrix":[9,8], "x":8.25, "y":4.5},
{"matrix":[9,9], "x":9.25, "y":4.5},
{"matrix":[9,10], "x":10.25, "y":4.5},
{"matrix":[9,11], "x":11.25, "y":4.5},
{"matrix":[9,12], "x":12.25, "y":4.5, "w":1.75},
{"matrix":[9,14], "x":14.25, "y":4.75},
{"matrix":[10,0], "x":0, "y":5.5, "w":1.25},
{"matrix":[10,1], "x":1.25, "y":5.5, "w":1.25},
{"matrix":[10,2], "x":2.5, "y":5.5, "w":1.25},
{"matrix":[5,6], "x":3.75, "y":5.5, "w":6.25},
{"matrix":[5,10], "x":10, "y":5.5, "w":1.25},
{"matrix":[5,11], "x":11.25, "y":5.5, "w":1.25},
{"matrix":[5,12], "x":13.25, "y":5.75},
{"matrix":[5,13], "x":14.25, "y":5.75},
{"matrix":[5,14], "x":15.25, "y":5.75}
]
}
}
}

View file

@ -0,0 +1,35 @@
/* Copyright 2023 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 <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_F13 ,
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_INS,
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN,
KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP ,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT( /* Base */
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View file

@ -0,0 +1,35 @@
/* Copyright 2023 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 <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_F13 ,
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_INS,
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN,
KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP ,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT( /* Base */
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View file

@ -0,0 +1 @@
VIA_ENABLE = yes

View file

@ -0,0 +1,31 @@
/* Copyright 2023 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 <http://www.gnu.org/licenses/>.
*/
#include "quantum.h"
#define CAPS_COLOR_R 0xFF
#define CAPS_COLOR_G 0xFF
#define CAPS_COLOR_B 0xFF
void keyboard_post_init_kb(void) {
rgblight_set_effect_range(0,29);
keyboard_post_init_user();
}
bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if(res) led_state.caps_lock ? rgblight_setrgb_at(CAPS_COLOR_R, CAPS_COLOR_G, CAPS_COLOR_B, 30) : rgblight_setrgb_at(0, 0, 0, 30);
return res;
}

View file

@ -0,0 +1,28 @@
/* Copyright 2023 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 <http://www.gnu.org/licenses/>.
*/
#pragma once
#include_next <mcuconf.h>
#undef STM32_PWM_USE_ADVANCED
#define STM32_PWM_USE_ADVANCED TRUE
#undef STM32_PWM_USE_TIM3
#define STM32_PWM_USE_TIM3 TRUE
#undef STM32_PWM_USE_TIM1
#define STM32_PWM_USE_TIM1 TRUE

View file

@ -0,0 +1 @@
# This file intentionally left blank

View file

@ -0,0 +1,34 @@
/*
Copyright 2023 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 <http://www.gnu.org/licenses/>.
*/
#pragma once
#define BACKLIGHT_PWM_DRIVER PWMD3
#define BACKLIGHT_PWM_CHANNEL 1
#define BACKLIGHT_PAL_MODE 2
#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL+5
#define WS2812_PWM_COMPLEMENTARY_OUTPUT
#define WS2812_PWM_DRIVER PWMD1
#define WS2812_PWM_CHANNEL 3
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
#define WS2812_DMA_CHANNEL 6
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE 4096

View file

@ -0,0 +1,22 @@
/* Copyright 2023 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 <http://www.gnu.org/licenses/>.
*/
#pragma once
#define HAL_USE_PWM TRUE
#define HAL_USE_PAL TRUE
#include_next <halconf.h>

View file

@ -0,0 +1,151 @@
{
"keyboard_name": "Magnus M75S",
"manufacturer": "SmithRune",
"url": "",
"maintainer": "Gondolindrim",
"usb": {
"vid": "0x8384",
"pid": "0x1675",
"device_version": "0.0.1"
},
"features": {
"audio": false,
"backlight": true,
"bootmagic": true,
"command": false,
"console": false,
"encoder": false,
"extrakey": true,
"lto": true,
"mousekey": true,
"nkro": true,
"rgblight": true
},
"diode_direction": "COL2ROW",
"backlight": {
"pin": "B4",
"levels": 20,
"breathing": true
},
"indicators": {
"caps_lock": "A10"
}
"ws2812": {
"pin": "B15"
},
"rgblight": {
"led_count": 30,
"animations": {
"alternating": true,
"breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
"rgb_test": true,
"snake": true,
"static_gradient": true,
"twinkle": true
}
}
"matrix_pins": {
"cols": ["A8" , "C9" , "C8" , "C7" , "C6" , "C0" , "B9" , "C3" , "A15", "C10", "C11", "C12", "D2" , "B3" , "B5" ],
"rows": ["A7" , "C1" , "A6" , "A5" , "A4" , "B8" , "C2" , "A0" , "A1" , "A2" , "A3" ]
},
"processor": "STM32F401",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT": {
"layout": [
{"matrix":[0,0], "x":0, "y":0},
{"matrix":[0,1], "x":1.25, "y":0},
{"matrix":[0,2], "x":2.25, "y":0},
{"matrix":[0,3], "x":3.25, "y":0},
{"matrix":[0,4], "x":4.25, "y":0},
{"matrix":[0,5], "x":5.5, "y":0},
{"matrix":[0,6], "x":6.5, "y":0},
{"matrix":[0,7], "x":7.5, "y":0},
{"matrix":[0,8], "x":8.5, "y":0},
{"matrix":[0,9], "x":9.75, "y":0},
{"matrix":[0,10], "x":10.75, "y":0},
{"matrix":[0,11], "x":11.75, "y":0},
{"matrix":[0,12], "x":12.75, "y":0},
{"matrix":[0,13], "x":14, "y":0},
{"matrix":[1,0], "x":0, "y":1.5},
{"matrix":[1,1], "x":1, "y":1.5},
{"matrix":[1,2], "x":2, "y":1.5},
{"matrix":[1,3], "x":3, "y":1.5},
{"matrix":[1,4], "x":4, "y":1.5},
{"matrix":[1,5], "x":5, "y":1.5},
{"matrix":[1,6], "x":6, "y":1.5},
{"matrix":[6,7], "x":7, "y":1.5},
{"matrix":[6,8], "x":8, "y":1.5},
{"matrix":[6,9], "x":9, "y":1.5},
{"matrix":[6,10], "x":10, "y":1.5},
{"matrix":[6,11], "x":11, "y":1.5},
{"matrix":[6,12], "x":12, "y":1.5},
{"matrix":[6,13], "x":13, "y":1.5},
{"matrix":[6,14], "x":14, "y":1.5},
{"matrix":[7,14], "x":15.25, "y":1.5},
{"matrix":[2,0], "x":0, "y":2.5, "w":1.5},
{"matrix":[2,1], "x":1.5, "y":2.5},
{"matrix":[2,2], "x":2.5, "y":2.5},
{"matrix":[2,3], "x":3.5, "y":2.5},
{"matrix":[2,4], "x":4.5, "y":2.5},
{"matrix":[2,5], "x":5.5, "y":2.5},
{"matrix":[7,6], "x":6.5, "y":2.5},
{"matrix":[7,7], "x":7.5, "y":2.5},
{"matrix":[7,8], "x":8.5, "y":2.5},
{"matrix":[7,9], "x":9.5, "y":2.5},
{"matrix":[7,10], "x":10.5, "y":2.5},
{"matrix":[7,11], "x":11.5, "y":2.5},
{"matrix":[7,12], "x":12.5, "y":2.5},
{"matrix":[7,13], "x":13.5, "y":2.5, "w":1.5},
{"matrix":[8,14], "x":15.25, "y":2.5},
{"matrix":[3,0], "x":0, "y":3.5, "w":1.75},
{"matrix":[3,1], "x":1.75, "y":3.5},
{"matrix":[3,2], "x":2.75, "y":3.5},
{"matrix":[3,3], "x":3.75, "y":3.5},
{"matrix":[3,4], "x":4.75, "y":3.5},
{"matrix":[8,5], "x":5.75, "y":3.5},
{"matrix":[8,6], "x":6.75, "y":3.5},
{"matrix":[8,7], "x":7.75, "y":3.5},
{"matrix":[8,8], "x":8.75, "y":3.5},
{"matrix":[8,9], "x":9.75, "y":3.5},
{"matrix":[8,10], "x":10.75, "y":3.5},
{"matrix":[8,11], "x":11.75, "y":3.5},
{"matrix":[8,12], "x":12.75, "y":3.5},
{"matrix":[8,13], "x":13.75, "y":3.5, "w":1.25},
{"matrix":[9,13], "x":15.25, "y":3.5},
{"matrix":[4,0], "x":0, "y":4.5, "w":1.25},
{"matrix":[4,1], "x":1.25, "y":4.5},
{"matrix":[4,2], "x":2.25, "y":4.5},
{"matrix":[4,3], "x":3.25, "y":4.5},
{"matrix":[4,4], "x":4.25, "y":4.5},
{"matrix":[9,5], "x":5.25, "y":4.5},
{"matrix":[9,6], "x":6.25, "y":4.5},
{"matrix":[9,7], "x":7.25, "y":4.5},
{"matrix":[9,8], "x":8.25, "y":4.5},
{"matrix":[9,9], "x":9.25, "y":4.5},
{"matrix":[9,10], "x":10.25, "y":4.5},
{"matrix":[9,11], "x":11.25, "y":4.5},
{"matrix":[9,12], "x":12.25, "y":4.5, "w":1.75},
{"matrix":[9,14], "x":14.25, "y":4.75},
{"matrix":[10,0], "x":0, "y":5.5, "w":1.25},
{"matrix":[10,1], "x":1.25, "y":5.5, "w":1.25},
{"matrix":[10,2], "x":2.5, "y":5.5, "w":1.25},
{"matrix":[5,6], "x":3.75, "y":5.5, "w":6.25},
{"matrix":[5,10], "x":10, "y":5.5, "w":1.25},
{"matrix":[5,11], "x":11.25, "y":5.5, "w":1.25},
{"matrix":[5,12], "x":13.25, "y":5.75},
{"matrix":[5,13], "x":14.25, "y":5.75},
{"matrix":[5,14], "x":15.25, "y":5.75}
]
}
}
}

View file

@ -0,0 +1,35 @@
/* Copyright 2023 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 <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_F13 ,
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_INS,
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , KC_PGDN,
KC_LSFT, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP ,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT( /* Base */
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View file

@ -0,0 +1,35 @@
/* Copyright 2023 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 <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT( /* Base */
KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_F13 ,
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_BSPC, KC_INS,
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT , KC_PGDN,
KC_LSFT, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP ,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT( /* Base */
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View file

@ -0,0 +1 @@
VIA_ENABLE = yes

View file

@ -0,0 +1,28 @@
/* Copyright 2023 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 <http://www.gnu.org/licenses/>.
*/
#pragma once
#include_next <mcuconf.h>
#undef STM32_PWM_USE_ADVANCED
#define STM32_PWM_USE_ADVANCED TRUE
#undef STM32_PWM_USE_TIM3
#define STM32_PWM_USE_TIM3 TRUE
#undef STM32_PWM_USE_TIM1
#define STM32_PWM_USE_TIM1 TRUE

View file

@ -0,0 +1 @@
# This file intentionally left blank

View file

@ -0,0 +1,35 @@
# Smith and Rune Magnus
![magnus](https://imgur.com/bemM7ZZh.jpg)
## Introduction
This is the QMK Firmware repository for the Magnus, a keyboard designed by [Smith and Rune](https://smithrune.com/) and PCBs designed by [Gondolindrim](http://github.com/Gondolindrim), who is also the firwmare maintainer.
The Magnus keyboard has two PCB versions: a solderable version (m75s) and a hotswap version (m75h). While M75S has support for a myriad of alternative layouts, including a 7U bottom row and ISO, M75H only supports full and split backspace alternatives. Also, while M75S supports in-switch single-color LEDs and RGB LEDs for underglow light, M75H only supports RGB underglow.
As of July 2023, the Magnus groubuy is already finished.
## 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, escape in the default keymap) 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 `QK_BOOT`; in the default layout, that is top left key ('escape') in layer 1.
### How to compile and flash
After checking what PCB you own and setting up your build environment, you can compile the Magnus default keymap by using one of the options below.
make smithrune/magnus/m75s:default
make smithrune/magnus/m75h:default
And use `dfu-util` in the command line or through a GUI like QMK toolbox to upload the firmware to the PCB. To directly flash the PCB after it is put into a DFU state, use:
make smithrune/magnus/m75s:default:flash
make smithrune/magnus/m75h: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).