summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQMK Bot <hello@qmk.fm>2023-11-29 07:47:35 +0000
committerQMK Bot <hello@qmk.fm>2023-11-29 07:47:35 +0000
commitcfbbb503a430a4f11c764cfab44737c4856afe0d (patch)
tree7c5493b44ffbd7592c3deb3ff77d656955a2f2fb
parent8d308d56e3f0fbf924de83a6890d7532d9c40914 (diff)
parent93127df5d41681e7d7d42d87d1b93ccff4d670c5 (diff)
Merge remote-tracking branch 'origin/master' into develop
-rw-r--r--keyboards/smithrune/magnus/m75h/config.h32
-rw-r--r--keyboards/smithrune/magnus/m75h/halconf.h22
-rw-r--r--keyboards/smithrune/magnus/m75h/info.json141
-rw-r--r--keyboards/smithrune/magnus/m75h/keymaps/default/keymap.c35
-rw-r--r--keyboards/smithrune/magnus/m75h/keymaps/via/keymap.c35
-rw-r--r--keyboards/smithrune/magnus/m75h/keymaps/via/rules.mk1
-rw-r--r--keyboards/smithrune/magnus/m75h/m75h.c31
-rw-r--r--keyboards/smithrune/magnus/m75h/mcuconf.h28
-rw-r--r--keyboards/smithrune/magnus/m75h/rules.mk1
-rw-r--r--keyboards/smithrune/magnus/m75s/config.h34
-rw-r--r--keyboards/smithrune/magnus/m75s/halconf.h22
-rw-r--r--keyboards/smithrune/magnus/m75s/info.json151
-rw-r--r--keyboards/smithrune/magnus/m75s/keymaps/default/keymap.c35
-rw-r--r--keyboards/smithrune/magnus/m75s/keymaps/via/keymap.c35
-rw-r--r--keyboards/smithrune/magnus/m75s/keymaps/via/rules.mk1
-rw-r--r--keyboards/smithrune/magnus/m75s/mcuconf.h28
-rw-r--r--keyboards/smithrune/magnus/m75s/rules.mk1
-rw-r--r--keyboards/smithrune/magnus/readme.md35
18 files changed, 668 insertions, 0 deletions
diff --git a/keyboards/smithrune/magnus/m75h/config.h b/keyboards/smithrune/magnus/m75h/config.h
new file mode 100644
index 0000000000..310d7b1981
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75h/config.h
@@ -0,0 +1,32 @@
1/*
2Copyright 2023 Gondolindrim
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#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 }
21
22#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL+5
23
24#define WS2812_PWM_COMPLEMENTARY_OUTPUT
25#define WS2812_PWM_DRIVER PWMD1
26#define WS2812_PWM_CHANNEL 3
27#define WS2812_PWM_PAL_MODE 1
28#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
29#define WS2812_DMA_CHANNEL 6
30
31#define WEAR_LEVELING_LOGICAL_SIZE 2048
32#define WEAR_LEVELING_BACKING_SIZE 4096
diff --git a/keyboards/smithrune/magnus/m75h/halconf.h b/keyboards/smithrune/magnus/m75h/halconf.h
new file mode 100644
index 0000000000..77c188bd65
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75h/halconf.h
@@ -0,0 +1,22 @@
1/* Copyright 2023 Gondolindrim
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#define HAL_USE_PWM TRUE
20#define HAL_USE_PAL TRUE
21
22#include_next <halconf.h>
diff --git a/keyboards/smithrune/magnus/m75h/info.json b/keyboards/smithrune/magnus/m75h/info.json
new file mode 100644
index 0000000000..10214ee523
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75h/info.json
@@ -0,0 +1,141 @@
1{
2 "keyboard_name": "Magnus M75H",
3 "manufacturer": "SmithRune",
4 "url": "",
5 "maintainer": "Gondolindrim",
6 "usb": {
7 "vid": "0x8384",
8 "pid": "0x1676",
9 "device_version": "0.0.1"
10 },
11 "features": {
12 "audio": false,
13 "backlight": false,
14 "bootmagic": true,
15 "command": false,
16 "console": false,
17 "encoder": false,
18 "extrakey": true,
19 "lto": true,
20 "mousekey": true,
21 "nkro": true,
22 "rgblight": true
23 },
24 "diode_direction": "COL2ROW",
25 "ws2812": {
26 "pin": "B15"
27 },
28 "rgblight": {
29 "led_count": 31,
30 "animations": {
31 "alternating": true,
32 "breathing": true,
33 "christmas": true,
34 "knight": true,
35 "rainbow_mood": true,
36 "rainbow_swirl": true,
37 "rgb_test": true,
38 "snake": true,
39 "static_gradient": true,
40 "twinkle": true
41 }
42 }
43 "matrix_pins": {
44 "cols": ["A1" , "A2" , "A4" , "C9" , "A8" , "A10", "B8" , "A15", "C10", "C11", "B5" , "B4", "B3" , "D2" , "C12" ],
45 "rows": ["C15", "A7" , "C4" , "C5" , "C8" , "C3" , "C1" , "C0" , "C2" , "C14" , "A0" ]
46 },
47 "processor": "STM32F401",
48 "bootloader": "stm32-dfu",
49 "layouts": {
50 "LAYOUT": {
51 "layout": [
52 {"matrix":[0,0], "x":0, "y":0},
53 {"matrix":[0,1], "x":1.25, "y":0},
54 {"matrix":[0,2], "x":2.25, "y":0},
55 {"matrix":[0,3], "x":3.25, "y":0},
56 {"matrix":[0,4], "x":4.25, "y":0},
57 {"matrix":[0,5], "x":5.5, "y":0},
58 {"matrix":[0,6], "x":6.5, "y":0},
59 {"matrix":[0,7], "x":7.5, "y":0},
60 {"matrix":[0,8], "x":8.5, "y":0},
61 {"matrix":[0,9], "x":9.75, "y":0},
62 {"matrix":[0,10], "x":10.75, "y":0},
63 {"matrix":[0,11], "x":11.75, "y":0},
64 {"matrix":[0,12], "x":12.75, "y":0},
65 {"matrix":[0,13], "x":14, "y":0},
66
67 {"matrix":[1,0], "x":0, "y":1.5},
68 {"matrix":[1,1], "x":1, "y":1.5},
69 {"matrix":[1,2], "x":2, "y":1.5},
70 {"matrix":[1,3], "x":3, "y":1.5},
71 {"matrix":[1,4], "x":4, "y":1.5},
72 {"matrix":[1,5], "x":5, "y":1.5},
73 {"matrix":[1,6], "x":6, "y":1.5},
74 {"matrix":[6,7], "x":7, "y":1.5},
75 {"matrix":[6,8], "x":8, "y":1.5},
76 {"matrix":[6,9], "x":9, "y":1.5},
77 {"matrix":[6,10], "x":10, "y":1.5},
78 {"matrix":[6,11], "x":11, "y":1.5},
79 {"matrix":[6,12], "x":12, "y":1.5},
80 {"matrix":[6,13], "x":13, "y":1.5},
81 {"matrix":[6,14], "x":14, "y":1.5},
82 {"matrix":[7,14], "x":15.25, "y":1.5},
83
84 {"matrix":[2,0], "x":0, "y":2.5, "w":1.5},
85 {"matrix":[2,1], "x":1.5, "y":2.5},
86 {"matrix":[2,2], "x":2.5, "y":2.5},
87 {"matrix":[2,3], "x":3.5, "y":2.5},
88 {"matrix":[2,4], "x":4.5, "y":2.5},
89 {"matrix":[2,5], "x":5.5, "y":2.5},
90 {"matrix":[7,6], "x":6.5, "y":2.5},
91 {"matrix":[7,7], "x":7.5, "y":2.5},
92 {"matrix":[7,8], "x":8.5, "y":2.5},
93 {"matrix":[7,9], "x":9.5, "y":2.5},
94 {"matrix":[7,10], "x":10.5, "y":2.5},
95 {"matrix":[7,11], "x":11.5, "y":2.5},
96 {"matrix":[7,12], "x":12.5, "y":2.5},
97 {"matrix":[7,13], "x":13.5, "y":2.5, "w":1.5},
98 {"matrix":[8,14], "x":15.25, "y":2.5},
99
100 {"matrix":[3,0], "x":0, "y":3.5, "w":1.75},
101 {"matrix":[3,1], "x":1.75, "y":3.5},
102 {"matrix":[3,2], "x":2.75, "y":3.5},
103 {"matrix":[3,3], "x":3.75, "y":3.5},
104 {"matrix":[3,4], "x":4.75, "y":3.5},
105 {"matrix":[8,5], "x":5.75, "y":3.5},
106 {"matrix":[8,6], "x":6.75, "y":3.5},
107 {"matrix":[8,7], "x":7.75, "y":3.5},
108 {"matrix":[8,8], "x":8.75, "y":3.5},
109 {"matrix":[8,9], "x":9.75, "y":3.5},
110 {"matrix":[8,10], "x":10.75, "y":3.5},
111 {"matrix":[8,11], "x":11.75, "y":3.5},
112 {"matrix":[8,13], "x":12.75, "y":3.5, "w":2.25},
113 {"matrix":[9,13], "x":15.25, "y":3.5},
114
115 {"matrix":[4,0], "x":0, "y":4.5, "w":2.25},
116 {"matrix":[4,2], "x":2.25, "y":4.5},
117 {"matrix":[4,3], "x":3.25, "y":4.5},
118 {"matrix":[4,4], "x":4.25, "y":4.5},
119 {"matrix":[9,5], "x":5.25, "y":4.5},
120 {"matrix":[9,6], "x":6.25, "y":4.5},
121 {"matrix":[9,7], "x":7.25, "y":4.5},
122 {"matrix":[9,8], "x":8.25, "y":4.5},
123 {"matrix":[9,9], "x":9.25, "y":4.5},
124 {"matrix":[9,10], "x":10.25, "y":4.5},
125 {"matrix":[9,11], "x":11.25, "y":4.5},
126 {"matrix":[9,12], "x":12.25, "y":4.5, "w":1.75},
127 {"matrix":[9,14], "x":14.25, "y":4.75},
128
129 {"matrix":[10,0], "x":0, "y":5.5, "w":1.25},
130 {"matrix":[10,1], "x":1.25, "y":5.5, "w":1.25},
131 {"matrix":[10,2], "x":2.5, "y":5.5, "w":1.25},
132 {"matrix":[5,6], "x":3.75, "y":5.5, "w":6.25},
133 {"matrix":[5,10], "x":10, "y":5.5, "w":1.25},
134 {"matrix":[5,11], "x":11.25, "y":5.5, "w":1.25},
135 {"matrix":[5,12], "x":13.25, "y":5.75},
136 {"matrix":[5,13], "x":14.25, "y":5.75},
137 {"matrix":[5,14], "x":15.25, "y":5.75}
138 ]
139 }
140 }
141}
diff --git a/keyboards/smithrune/magnus/m75h/keymaps/default/keymap.c b/keyboards/smithrune/magnus/m75h/keymaps/default/keymap.c
new file mode 100644
index 0000000000..3dc786a62c
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75h/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2023 Gondolindrim
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19[0] = LAYOUT( /* Base */
20 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 ,
21 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,
22 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,
23 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,
24 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 ,
25 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
26),
27[1] = LAYOUT( /* Base */
28 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,
29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
34)
35};
diff --git a/keyboards/smithrune/magnus/m75h/keymaps/via/keymap.c b/keyboards/smithrune/magnus/m75h/keymaps/via/keymap.c
new file mode 100644
index 0000000000..3dc786a62c
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75h/keymaps/via/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2023 Gondolindrim
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19[0] = LAYOUT( /* Base */
20 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 ,
21 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,
22 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,
23 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,
24 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 ,
25 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
26),
27[1] = LAYOUT( /* Base */
28 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,
29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
34)
35};
diff --git a/keyboards/smithrune/magnus/m75h/keymaps/via/rules.mk b/keyboards/smithrune/magnus/m75h/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75h/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes
diff --git a/keyboards/smithrune/magnus/m75h/m75h.c b/keyboards/smithrune/magnus/m75h/m75h.c
new file mode 100644
index 0000000000..940f5b61cf
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75h/m75h.c
@@ -0,0 +1,31 @@
1/* Copyright 2023 Gondolindrim
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "quantum.h"
18#define CAPS_COLOR_R 0xFF
19#define CAPS_COLOR_G 0xFF
20#define CAPS_COLOR_B 0xFF
21
22void keyboard_post_init_kb(void) {
23 rgblight_set_effect_range(0,29);
24 keyboard_post_init_user();
25}
26
27bool led_update_kb(led_t led_state) {
28 bool res = led_update_user(led_state);
29 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);
30 return res;
31}
diff --git a/keyboards/smithrune/magnus/m75h/mcuconf.h b/keyboards/smithrune/magnus/m75h/mcuconf.h
new file mode 100644
index 0000000000..8f4541a8c3
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75h/mcuconf.h
@@ -0,0 +1,28 @@
1/* Copyright 2023 Gondolindrim
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include_next <mcuconf.h>
20
21#undef STM32_PWM_USE_ADVANCED
22#define STM32_PWM_USE_ADVANCED TRUE
23
24#undef STM32_PWM_USE_TIM3
25#define STM32_PWM_USE_TIM3 TRUE
26
27#undef STM32_PWM_USE_TIM1
28#define STM32_PWM_USE_TIM1 TRUE
diff --git a/keyboards/smithrune/magnus/m75h/rules.mk b/keyboards/smithrune/magnus/m75h/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75h/rules.mk
@@ -0,0 +1 @@
# This file intentionally left blank
diff --git a/keyboards/smithrune/magnus/m75s/config.h b/keyboards/smithrune/magnus/m75s/config.h
new file mode 100644
index 0000000000..61f5f8e0a5
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75s/config.h
@@ -0,0 +1,34 @@
1/*
2Copyright 2023 Gondolindrim
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#define BACKLIGHT_PWM_DRIVER PWMD3
21#define BACKLIGHT_PWM_CHANNEL 1
22#define BACKLIGHT_PAL_MODE 2
23
24#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL+5
25
26#define WS2812_PWM_COMPLEMENTARY_OUTPUT
27#define WS2812_PWM_DRIVER PWMD1
28#define WS2812_PWM_CHANNEL 3
29#define WS2812_PWM_PAL_MODE 1
30#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
31#define WS2812_DMA_CHANNEL 6
32
33#define WEAR_LEVELING_LOGICAL_SIZE 2048
34#define WEAR_LEVELING_BACKING_SIZE 4096
diff --git a/keyboards/smithrune/magnus/m75s/halconf.h b/keyboards/smithrune/magnus/m75s/halconf.h
new file mode 100644
index 0000000000..77c188bd65
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75s/halconf.h
@@ -0,0 +1,22 @@
1/* Copyright 2023 Gondolindrim
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#define HAL_USE_PWM TRUE
20#define HAL_USE_PAL TRUE
21
22#include_next <halconf.h>
diff --git a/keyboards/smithrune/magnus/m75s/info.json b/keyboards/smithrune/magnus/m75s/info.json
new file mode 100644
index 0000000000..da2f4e3eff
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75s/info.json
@@ -0,0 +1,151 @@
1{
2 "keyboard_name": "Magnus M75S",
3 "manufacturer": "SmithRune",
4 "url": "",
5 "maintainer": "Gondolindrim",
6 "usb": {
7 "vid": "0x8384",
8 "pid": "0x1675",
9 "device_version": "0.0.1"
10 },
11 "features": {
12 "audio": false,
13 "backlight": true,
14 "bootmagic": true,
15 "command": false,
16 "console": false,
17 "encoder": false,
18 "extrakey": true,
19 "lto": true,
20 "mousekey": true,
21 "nkro": true,
22 "rgblight": true
23 },
24 "diode_direction": "COL2ROW",
25 "backlight": {
26 "pin": "B4",
27 "levels": 20,
28 "breathing": true
29 },
30 "indicators": {
31 "caps_lock": "A10"
32 }
33 "ws2812": {
34 "pin": "B15"
35 },
36 "rgblight": {
37 "led_count": 30,
38 "animations": {
39 "alternating": true,
40 "breathing": true,
41 "christmas": true,
42 "knight": true,
43 "rainbow_mood": true,
44 "rainbow_swirl": true,
45 "rgb_test": true,
46 "snake": true,
47 "static_gradient": true,
48 "twinkle": true
49 }
50 }
51 "matrix_pins": {
52 "cols": ["A8" , "C9" , "C8" , "C7" , "C6" , "C0" , "B9" , "C3" , "A15", "C10", "C11", "C12", "D2" , "B3" , "B5" ],
53 "rows": ["A7" , "C1" , "A6" , "A5" , "A4" , "B8" , "C2" , "A0" , "A1" , "A2" , "A3" ]
54 },
55 "processor": "STM32F401",
56 "bootloader": "stm32-dfu",
57 "layouts": {
58 "LAYOUT": {
59 "layout": [
60 {"matrix":[0,0], "x":0, "y":0},
61 {"matrix":[0,1], "x":1.25, "y":0},
62 {"matrix":[0,2], "x":2.25, "y":0},
63 {"matrix":[0,3], "x":3.25, "y":0},
64 {"matrix":[0,4], "x":4.25, "y":0},
65 {"matrix":[0,5], "x":5.5, "y":0},
66 {"matrix":[0,6], "x":6.5, "y":0},
67 {"matrix":[0,7], "x":7.5, "y":0},
68 {"matrix":[0,8], "x":8.5, "y":0},
69 {"matrix":[0,9], "x":9.75, "y":0},
70 {"matrix":[0,10], "x":10.75, "y":0},
71 {"matrix":[0,11], "x":11.75, "y":0},
72 {"matrix":[0,12], "x":12.75, "y":0},
73 {"matrix":[0,13], "x":14, "y":0},
74
75 {"matrix":[1,0], "x":0, "y":1.5},
76 {"matrix":[1,1], "x":1, "y":1.5},
77 {"matrix":[1,2], "x":2, "y":1.5},
78 {"matrix":[1,3], "x":3, "y":1.5},
79 {"matrix":[1,4], "x":4, "y":1.5},
80 {"matrix":[1,5], "x":5, "y":1.5},
81 {"matrix":[1,6], "x":6, "y":1.5},
82 {"matrix":[6,7], "x":7, "y":1.5},
83 {"matrix":[6,8], "x":8, "y":1.5},
84 {"matrix":[6,9], "x":9, "y":1.5},
85 {"matrix":[6,10], "x":10, "y":1.5},
86 {"matrix":[6,11], "x":11, "y":1.5},
87 {"matrix":[6,12], "x":12, "y":1.5},
88 {"matrix":[6,13], "x":13, "y":1.5},
89 {"matrix":[6,14], "x":14, "y":1.5},
90 {"matrix":[7,14], "x":15.25, "y":1.5},
91
92 {"matrix":[2,0], "x":0, "y":2.5, "w":1.5},
93 {"matrix":[2,1], "x":1.5, "y":2.5},
94 {"matrix":[2,2], "x":2.5, "y":2.5},
95 {"matrix":[2,3], "x":3.5, "y":2.5},
96 {"matrix":[2,4], "x":4.5, "y":2.5},
97 {"matrix":[2,5], "x":5.5, "y":2.5},
98 {"matrix":[7,6], "x":6.5, "y":2.5},
99 {"matrix":[7,7], "x":7.5, "y":2.5},
100 {"matrix":[7,8], "x":8.5, "y":2.5},
101 {"matrix":[7,9], "x":9.5, "y":2.5},
102 {"matrix":[7,10], "x":10.5, "y":2.5},
103 {"matrix":[7,11], "x":11.5, "y":2.5},
104 {"matrix":[7,12], "x":12.5, "y":2.5},
105 {"matrix":[7,13], "x":13.5, "y":2.5, "w":1.5},
106 {"matrix":[8,14], "x":15.25, "y":2.5},
107
108 {"matrix":[3,0], "x":0, "y":3.5, "w":1.75},
109 {"matrix":[3,1], "x":1.75, "y":3.5},
110 {"matrix":[3,2], "x":2.75, "y":3.5},
111 {"matrix":[3,3], "x":3.75, "y":3.5},
112 {"matrix":[3,4], "x":4.75, "y":3.5},
113 {"matrix":[8,5], "x":5.75, "y":3.5},
114 {"matrix":[8,6], "x":6.75, "y":3.5},
115 {"matrix":[8,7], "x":7.75, "y":3.5},
116 {"matrix":[8,8], "x":8.75, "y":3.5},
117 {"matrix":[8,9], "x":9.75, "y":3.5},
118 {"matrix":[8,10], "x":10.75, "y":3.5},
119 {"matrix":[8,11], "x":11.75, "y":3.5},
120 {"matrix":[8,12], "x":12.75, "y":3.5},
121 {"matrix":[8,13], "x":13.75, "y":3.5, "w":1.25},
122 {"matrix":[9,13], "x":15.25, "y":3.5},
123
124 {"matrix":[4,0], "x":0, "y":4.5, "w":1.25},
125 {"matrix":[4,1], "x":1.25, "y":4.5},
126 {"matrix":[4,2], "x":2.25, "y":4.5},
127 {"matrix":[4,3], "x":3.25, "y":4.5},
128 {"matrix":[4,4], "x":4.25, "y":4.5},
129 {"matrix":[9,5], "x":5.25, "y":4.5},
130 {"matrix":[9,6], "x":6.25, "y":4.5},
131 {"matrix":[9,7], "x":7.25, "y":4.5},
132 {"matrix":[9,8], "x":8.25, "y":4.5},
133 {"matrix":[9,9], "x":9.25, "y":4.5},
134 {"matrix":[9,10], "x":10.25, "y":4.5},
135 {"matrix":[9,11], "x":11.25, "y":4.5},
136 {"matrix":[9,12], "x":12.25, "y":4.5, "w":1.75},
137 {"matrix":[9,14], "x":14.25, "y":4.75},
138
139 {"matrix":[10,0], "x":0, "y":5.5, "w":1.25},
140 {"matrix":[10,1], "x":1.25, "y":5.5, "w":1.25},
141 {"matrix":[10,2], "x":2.5, "y":5.5, "w":1.25},
142 {"matrix":[5,6], "x":3.75, "y":5.5, "w":6.25},
143 {"matrix":[5,10], "x":10, "y":5.5, "w":1.25},
144 {"matrix":[5,11], "x":11.25, "y":5.5, "w":1.25},
145 {"matrix":[5,12], "x":13.25, "y":5.75},
146 {"matrix":[5,13], "x":14.25, "y":5.75},
147 {"matrix":[5,14], "x":15.25, "y":5.75}
148 ]
149 }
150 }
151}
diff --git a/keyboards/smithrune/magnus/m75s/keymaps/default/keymap.c b/keyboards/smithrune/magnus/m75s/keymaps/default/keymap.c
new file mode 100644
index 0000000000..b53b524916
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75s/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2023 Gondolindrim
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19[0] = LAYOUT( /* Base */
20 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 ,
21 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,
22 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,
23 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,
24 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 ,
25 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT
26),
27[1] = LAYOUT( /* Base */
28 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,
29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
34)
35};
diff --git a/keyboards/smithrune/magnus/m75s/keymaps/via/keymap.c b/keyboards/smithrune/magnus/m75s/keymaps/via/keymap.c
new file mode 100644
index 0000000000..cd89ff79e3
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75s/keymaps/via/keymap.c
@@ -0,0 +1,35 @@
1/* Copyright 2023 Gondolindrim
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19[0] = LAYOUT( /* Base */
20 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 ,
21 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,
22 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,
23 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,
24 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 ,
25 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
26),
27[1] = LAYOUT( /* Base */
28 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,
29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
34)
35};
diff --git a/keyboards/smithrune/magnus/m75s/keymaps/via/rules.mk b/keyboards/smithrune/magnus/m75s/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75s/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes
diff --git a/keyboards/smithrune/magnus/m75s/mcuconf.h b/keyboards/smithrune/magnus/m75s/mcuconf.h
new file mode 100644
index 0000000000..8f4541a8c3
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75s/mcuconf.h
@@ -0,0 +1,28 @@
1/* Copyright 2023 Gondolindrim
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include_next <mcuconf.h>
20
21#undef STM32_PWM_USE_ADVANCED
22#define STM32_PWM_USE_ADVANCED TRUE
23
24#undef STM32_PWM_USE_TIM3
25#define STM32_PWM_USE_TIM3 TRUE
26
27#undef STM32_PWM_USE_TIM1
28#define STM32_PWM_USE_TIM1 TRUE
diff --git a/keyboards/smithrune/magnus/m75s/rules.mk b/keyboards/smithrune/magnus/m75s/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/smithrune/magnus/m75s/rules.mk
@@ -0,0 +1 @@
# This file intentionally left blank
diff --git a/keyboards/smithrune/magnus/readme.md b/keyboards/smithrune/magnus/readme.md
new file mode 100644
index 0000000000..f8fa005bf3
--- /dev/null
+++ b/keyboards/smithrune/magnus/readme.md
@@ -0,0 +1,35 @@
1# Smith and Rune Magnus
2
3![magnus](https://imgur.com/bemM7ZZh.jpg)
4
5## Introduction
6
7This 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.
8
9The 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.
10
11As of July 2023, the Magnus groubuy is already finished.
12
13## How to flash
14
15### Enter bootloader
16
17The DFU state in the bootloader can be accessed in 3 ways:
18
19* **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;
20* **Physical reset button**: press the button on the front of the PCB, next to caps lock, for at least five seconds;
21* **Keycode in layout**: Press the key mapped to `QK_BOOT`; in the default layout, that is top left key ('escape') in layer 1.
22
23### How to compile and flash
24
25After 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.
26
27 make smithrune/magnus/m75s:default
28 make smithrune/magnus/m75h:default
29
30And 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:
31
32 make smithrune/magnus/m75s:default:flash
33 make smithrune/magnus/m75h:default:flash
34
35See 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).