dcc47ea31b3f4ef097a2fc677bdbb9b2560d905a

Author
James Gzowski <flexyjerkov@gmail.com>
Committer
GitHub <noreply@github.com>
Date

Message

Add Proteus67 keyboard (#22439)

Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>

Diff

This diff is truncated to protect this page.

  1diff --git a/keyboards/proteus67/config.h b/keyboards/proteus67/config.h
  2new file mode 100644
  3index 0000000000000000000000000000000000000000..66faa7a2981c18b6e51301eceb643d0ebed0014f
  4--- /dev/null
  5+++ b/keyboards/proteus67/config.h
  6@@ -0,0 +1,7 @@
  7+// Copyright 2023 QMK
  8+// SPDX-License-Identifier: GPL-2.0-or-later
  9+#pragma once
 10+
 11+#define RGBLIGHT_MAX_LAYERS 3
 12+#define ENCODER_MAP_KEY_DELAY 10
 13+#define ENCODER_DEFAULT_POS 0x3
 14diff --git a/keyboards/proteus67/info.json b/keyboards/proteus67/info.json
 15new file mode 100644
 16index 0000000000000000000000000000000000000000..0ab7117ef27d8e52ebf0ddadf60ba164410a1985
 17--- /dev/null
 18+++ b/keyboards/proteus67/info.json
 19@@ -0,0 +1,129 @@
 20+{
 21+    "manufacturer": "gzowski",
 22+    "keyboard_name": "Proteus67",
 23+    "maintainer": "gzowski",
 24+    "development_board": "elite_pi",
 25+    "diode_direction": "COL2ROW",
 26+    "encoder": {
 27+        "rotary": [
 28+            {"pin_a": "GP21", "pin_b": "GP9"}
 29+        ]
 30+    },
 31+    "features": {
 32+        "encoder": true,
 33+        "bootmagic": true,
 34+        "extrakey": true,
 35+        "mousekey": true,
 36+        "nkro": true,
 37+        "rgblight": true
 38+    },
 39+    "matrix_pins": {
 40+        "cols": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP23", "GP20", "GP22", "GP26", "GP27", "GP28", "GP29"],
 41+        "rows": ["GP12", "GP13", "GP14", "GP15", "GP16"]
 42+    },
 43+    "rgblight": {
 44+        "animations": {
 45+            "alternating": true,
 46+            "breathing": true,
 47+            "christmas": true,
 48+            "knight": true,
 49+            "rainbow_mood": true,
 50+            "rainbow_swirl": true,
 51+            "rgb_test": false,
 52+            "snake": true,
 53+            "static_gradient": true,
 54+            "twinkle": true
 55+        },
 56+        "brightness_steps": 5,
 57+        "led_count": 21,
 58+        "saturation_steps": 5,
 59+        "sleep": true,
 60+        "layers": {
 61+            "enabled": true,
 62+            "override_rgb": false
 63+        }
 64+    },
 65+    "url": "https://github.com/gzowski",
 66+    "usb": {
 67+        "device_version": "1.0.0",
 68+        "pid": "0x6F64",
 69+        "vid": "0x7072"
 70+    },
 71+    "ws2812": {
 72+        "pin": "GP0",
 73+        "driver": "vendor"
 74+    },
 75+    "layouts": {
 76+        "LAYOUT_ortho_5x14": {
 77+            "layout": [
 78+                {"matrix": [0, 0], "x": 0, "y": 0},
 79+                {"matrix": [0, 1], "x": 1, "y": 0},
 80+                {"matrix": [0, 2], "x": 2, "y": 0},
 81+                {"matrix": [0, 3], "x": 3, "y": 0},
 82+                {"matrix": [0, 4], "x": 4, "y": 0},
 83+                {"matrix": [0, 5], "x": 5, "y": 0},
 84+                {"matrix": [0, 6], "x": 6, "y": 0},
 85+                {"matrix": [0, 7], "x": 7, "y": 0},
 86+                {"matrix": [0, 8], "x": 8, "y": 0},
 87+                {"matrix": [0, 9], "x": 9, "y": 0},
 88+                {"matrix": [0, 10], "x": 10, "y": 0},
 89+                {"matrix": [0, 11], "x": 11, "y": 0},
 90+                {"matrix": [0, 12], "x": 12, "y": 0},
 91+                {"matrix": [0, 13], "x": 13, "y": 0},
 92+                {"matrix": [1, 0], "x": 0, "y": 1},
 93+                {"matrix": [1, 1], "x": 1, "y": 1},
 94+                {"matrix": [1, 2], "x": 2, "y": 1},
 95+                {"matrix": [1, 3], "x": 3, "y": 1},
 96+                {"matrix": [1, 4], "x": 4, "y": 1},
 97+                {"matrix": [1, 5], "x": 5, "y": 1},
 98+                {"matrix": [1, 6], "x": 6, "y": 1},
 99+                {"matrix": [1, 7], "x": 7, "y": 1},
100+                {"matrix": [1, 8], "x": 8, "y": 1},
101+                {"matrix": [1, 9], "x": 9, "y": 1},
102+                {"matrix": [1, 10], "x": 10, "y": 1},
103+                {"matrix": [1, 11], "x": 11, "y": 1},
104+                {"matrix": [1, 12], "x": 12, "y": 1},
105+                {"matrix": [1, 13], "x": 13, "y": 1},
106+                {"matrix": [2, 0], "x": 0, "y": 2},
107+                {"matrix": [2, 1], "x": 1, "y": 2},
108+                {"matrix": [2, 2], "x": 2, "y": 2},
109+                {"matrix": [2, 3], "x": 3, "y": 2},
110+                {"matrix": [2, 4], "x": 4, "y": 2},
111+                {"matrix": [2, 5], "x": 5, "y": 2},
112+                {"matrix": [2, 6], "x": 6, "y": 2},
113+                {"matrix": [2, 7], "x": 7, "y": 2},
114+                {"matrix": [2, 8], "x": 8, "y": 2},
115+                {"matrix": [2, 9], "x": 9, "y": 2},
116+                {"matrix": [2, 10], "x": 10, "y": 2},
117+                {"matrix": [2, 11], "x": 11, "y": 2},
118+                {"matrix": [2, 12], "x": 12, "y": 2},
119diff --git a/keyboards/proteus67/keymaps/colemak/keymap.c b/keyboards/proteus67/keymaps/colemak/keymap.c
120new file mode 100644
121index 0000000000000000000000000000000000000000..df572f0bc0151ba7e588405c544a04a25f940fd0
122--- /dev/null
123+++ b/keyboards/proteus67/keymaps/colemak/keymap.c
124@@ -0,0 +1,42 @@
125+// Copyright 2023 James Gzowski
126+// SPDX-License-Identifier: GPL-2.0-or-later
127+#include QMK_KEYBOARD_H
128+
129+enum custom_layer {
130+    _LAYERA,
131+    _LAYERB,
132+    _LAYERC,
133+};
134+
135+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
136+    [_LAYERA] = LAYOUT_ortho_5x14(
137+        KC_ESC , KC_1  ,KC_2   ,KC_3   , KC_4  , KC_5  , KC_PSCR  , 			KC_EQL  , KC_6   , KC_7    , KC_8    , KC_9   , KC_0   , KC_GRV ,
138+        KC_TAB , KC_Q  ,KC_W   ,KC_F   , KC_P  , KC_G  , KC_END  , 			KC_HOME  , KC_J   , KC_L    , KC_U    , KC_Y   , KC_SCLN ,KC_MINUS,
139+        KC_LCTL, KC_A  ,KC_R   ,KC_S   , KC_T  , KC_D  , KC_PGDN  , 			KC_PGUP  , KC_H   , KC_N    , KC_E    , KC_I   , KC_O   ,KC_QUOT ,
140+        KC_LSFT, KC_Z  ,KC_X   ,KC_C   , KC_V  , KC_B  , KC_LBRC, 			KC_RBRC, KC_K   , KC_M    , KC_COMM , KC_DOT , KC_SLSH, KC_RSFT,
141+             KC_NO  , MO(_LAYERB) ,KC_LGUI,KC_LALT,       KC_SPC ,		KC_MUTE,            KC_ENT ,		KC_BSPC , MO(_LAYERC) , KC_INS , KC_DEL
142+),
143+    [_LAYERB] = LAYOUT_ortho_5x14(
144+        RGB_TOG , RGB_HUD  ,RGB_HUI   ,RGB_SAD   , RGB_SAI  , RGB_VAD  , RGB_VAI  ,                       RGB_M_P  , RGB_M_B   , RGB_M_R    , RGB_M_SW    , RGB_M_K   , RGB_M_TW   , RGB_M_G ,
145+        KC_TRNS , KC_TRNS, KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS  ,              KC_TRNS  , KC_TRNS , KC_BTN1    , KC_MS_U    , KC_BTN2   , KC_TRNS   ,KC_TRNS,
146+        KC_TRNS, KC_TRNS  ,KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS  ,              KC_TRNS  , KC_TRNS , KC_MS_L    , KC_MS_D , KC_MS_R , KC_SCLN,KC_QUOT ,
147+        KC_TRNS, KC_TRNS  ,KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS ,               KC_TRNS  , KC_TRNS , KC_TRNS    , KC_TRNS , KC_TRNS , KC_NUBS, KC_TRNS,
148+             KC_TRNS  , KC_TRNS ,KC_TRNS,KC_TRNS,  KC_TRNS ,                       RGB_RMOD,      KC_TRNS  , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
149+),
150+    [_LAYERC] = LAYOUT_ortho_5x14(
151+        KC_TRNS , KC_F1  ,KC_F2   ,KC_F3   , KC_F4  , KC_F5  , KC_TRNS  ,                       KC_TRNS  , KC_F6   , KC_F7    , KC_F8    , KC_F9   , KC_F10   , KC_GRV ,
152+        KC_TRNS , KC_TRNS, KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS  ,              KC_TRNS  , KC_TRNS , KC_TRNS    , KC_TRNS, KC_TRNS   , KC_TRNS   ,KC_TRNS,
153+        KC_TRNS, KC_TRNS  ,KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS  ,              KC_TRNS  , KC_TRNS , KC_LEFT    , KC_DOWN , KC_UP , KC_RIGHT,KC_QUOT ,
154+        KC_TRNS, KC_TRNS  ,KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS ,               KC_TRNS  , KC_TRNS , KC_TRNS    , KC_TRNS , KC_TRNS , KC_NUBS, KC_TRNS,
155+             KC_TRNS  , KC_TRNS ,KC_TRNS,KC_TRNS,  KC_TRNS ,                       RGB_MOD,      KC_TRNS  , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
156+)
157+};
158+
159+#if defined(ENCODER_MAP_ENABLE)
160+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
161+    [_LAYERA] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
162+    [_LAYERB] =  { ENCODER_CCW_CW(RGB_HUD, RGB_HUI)},
163+    [_LAYERC] =  { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
164+};
165+#endif
166+
167diff --git a/keyboards/proteus67/keymaps/colemak/rules.mk b/keyboards/proteus67/keymaps/colemak/rules.mk
168new file mode 100644
169index 0000000000000000000000000000000000000000..f1adcab005e805a6e95f33b3d46bb01778ccaa7d
170--- /dev/null
171+++ b/keyboards/proteus67/keymaps/colemak/rules.mk
172@@ -0,0 +1,2 @@
173+VIA_ENABLE = yes
174+ENCODER_MAP_ENABLE = yes
175diff --git a/keyboards/proteus67/keymaps/default/keymap.c b/keyboards/proteus67/keymaps/default/keymap.c
176new file mode 100644
177index 0000000000000000000000000000000000000000..bef2a5d1c5b642bb80d31c544b892877d0f840d3
178--- /dev/null
179+++ b/keyboards/proteus67/keymaps/default/keymap.c
180@@ -0,0 +1,41 @@
181+// Copyright 2023 James Gzowski
182+// SPDX-License-Identifier: GPL-2.0-or-later
183+#include QMK_KEYBOARD_H
184+
185+enum custom_layer {
186+    _LAYERA,
187+    _LAYERB,
188+    _LAYERC,
189+};
190+
191+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
192+    [_LAYERA] = LAYOUT_ortho_5x14(
193+        KC_ESC , KC_1  ,KC_2   ,KC_3   , KC_4  , KC_5  , KC_MINUS  , 			KC_EQL  , KC_6   , KC_7    , KC_8    , KC_9   , KC_0   , KC_GRV ,
194+        KC_TAB , KC_Q  ,KC_W   ,KC_E   , KC_R  , KC_T  , KC_END  , 			KC_HOME  , KC_Y   , KC_U    , KC_I    , KC_O   , KC_P   ,KC_MINUS,
195+        KC_LCTL, KC_A  ,KC_S   ,KC_D   , KC_F  , KC_G  , KC_PGDN  , 			KC_PGUP  , KC_H   , KC_J    , KC_K    , KC_L   , KC_SCLN,KC_QUOT ,
196+        KC_LSFT, KC_Z  ,KC_X   ,KC_C   , KC_V  , KC_B  , KC_LBRC, 			KC_RBRC, KC_N   , KC_M    , KC_COMM , KC_DOT , KC_SLSH, KC_RSFT,
197+             KC_NO  , MO(_LAYERB) ,KC_LGUI,KC_LALT,       KC_SPC ,		KC_MUTE,            KC_ENT ,		KC_BSPC , MO(_LAYERC) , KC_INS , KC_DEL
198+),
199+    [_LAYERB] = LAYOUT_ortho_5x14(
200+        RGB_TOG , RGB_HUI  ,RGB_HUD   ,RGB_SAI   , RGB_SAD  , RGB_VAI  , RGB_VAD  ,                       RGB_M_P  , RGB_M_B   , RGB_M_R    , RGB_M_SW    , RGB_M_K   , RGB_M_X   , RGB_M_G ,
201+        KC_TRNS , KC_TRNS, KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS  ,              KC_TRNS  , KC_TRNS , KC_BTN1    , KC_MS_U    , KC_BTN2   , KC_TRNS   ,KC_TRNS,
202+        KC_TRNS, KC_TRNS  ,KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS  ,              KC_TRNS  , KC_TRNS , KC_MS_L    , KC_MS_D , KC_MS_R , KC_SCLN,KC_QUOT ,
203+        KC_TRNS, KC_TRNS  ,KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS ,               KC_TRNS  , KC_TRNS , KC_TRNS    , KC_TRNS , KC_TRNS , KC_NUBS, KC_TRNS,
204+             KC_TRNS  , KC_TRNS ,KC_TRNS,KC_TRNS,  KC_TRNS ,                       RGB_RMOD,      KC_TRNS  , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
205+),
206+    [_LAYERC] = LAYOUT_ortho_5x14(
207+        KC_TRNS , KC_F1  ,KC_F2   ,KC_F3   , KC_F4  , KC_F5  , KC_TRNS  ,                       KC_TRNS  , KC_F6   , KC_F7    , KC_F8    , KC_F9   , KC_F10   , KC_GRV ,
208+        KC_TRNS , KC_TRNS, KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS  ,              KC_TRNS  , KC_TRNS , KC_TRNS    , KC_UP    , KC_TRNS   , KC_TRNS   ,KC_TRNS,
209+        KC_TRNS, KC_TRNS  ,KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS  ,              KC_TRNS  , KC_TRNS , KC_LEFT    , KC_DOWN , KC_RIGHT , KC_SCLN,KC_QUOT ,
210+        KC_TRNS, KC_TRNS  ,KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS ,               KC_TRNS  , KC_TRNS , KC_TRNS    , KC_TRNS , KC_TRNS , KC_NUBS, KC_TRNS,
211+             KC_TRNS  , KC_TRNS ,KC_TRNS,KC_TRNS,  KC_TRNS ,                       RGB_MOD,      KC_TRNS  , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
212+)
213+};
214+
215+#if defined(ENCODER_MAP_ENABLE)
216+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
217+    [_LAYERA] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
218+    [_LAYERB] =  { ENCODER_CCW_CW(RGB_HUD, RGB_HUI)},
219+    [_LAYERC] =  { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
220+};
221+#endif
222diff --git a/keyboards/proteus67/keymaps/default/rules.mk b/keyboards/proteus67/keymaps/default/rules.mk
223new file mode 100644
224index 0000000000000000000000000000000000000000..ee325681483fbd804de1e14be33c47719c65bc71
225--- /dev/null
226+++ b/keyboards/proteus67/keymaps/default/rules.mk
227@@ -0,0 +1 @@
228+ENCODER_MAP_ENABLE = yes
229diff --git a/keyboards/proteus67/keymaps/via/keymap.c b/keyboards/proteus67/keymaps/via/keymap.c
230new file mode 100644
231index 0000000000000000000000000000000000000000..c79ac61e9e623cf60daf0a98678d9607e84bfdf4
232--- /dev/null
233+++ b/keyboards/proteus67/keymaps/via/keymap.c
234@@ -0,0 +1,41 @@
235+// Copyright 2023 James Gzowski
236+// SPDX-License-Identifier: GPL-2.0-or-later
237+#include QMK_KEYBOARD_H
238+
239+enum custom_layer {
240+    _LAYERA,
241+    _LAYERB,
242+    _LAYERC,
243+};
244+
245+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
246+    [_LAYERA] = LAYOUT_ortho_5x14(
247+        KC_ESC , KC_1  ,KC_2   ,KC_3   , KC_4  , KC_5  , KC_MINUS  , 			KC_EQL  , KC_6   , KC_7    , KC_8    , KC_9   , KC_0   , KC_GRV ,
248+        KC_TAB , KC_Q  ,KC_W   ,KC_E   , KC_R  , KC_T  , KC_END  , 			KC_HOME  , KC_Y   , KC_U    , KC_I    , KC_O   , KC_P   ,KC_MINUS,
249+        KC_LCTL, KC_A  ,KC_S   ,KC_D   , KC_F  , KC_G  , KC_PGDN  , 			KC_PGUP  , KC_H   , KC_J    , KC_K    , KC_L   , KC_SCLN,KC_QUOT ,
250+        KC_LSFT, KC_Z  ,KC_X   ,KC_C   , KC_V  , KC_B  , KC_LBRC, 			KC_RBRC, KC_N   , KC_M    , KC_COMM , KC_DOT , KC_SLSH, KC_RSFT,
251+             KC_NO  , MO(_LAYERB) ,KC_LGUI,KC_LALT,       KC_SPC ,		KC_MUTE,            KC_ENT ,		KC_BSPC , MO(_LAYERC) , KC_INS , KC_DEL
252+),
253+    [_LAYERB] = LAYOUT_ortho_5x14(
254+        RGB_TOG , RGB_HUD  ,RGB_HUI   ,RGB_SAD   , RGB_SAI  , RGB_VAD  , RGB_VAI  ,                       RGB_M_P  , RGB_M_B   , RGB_M_R    , RGB_M_SW    , RGB_M_K   , RGB_M_TW   , RGB_M_G ,
255+        KC_TRNS , KC_TRNS, KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS  ,              KC_TRNS  , KC_TRNS , KC_BTN1    , KC_MS_U    , KC_BTN2   , KC_TRNS   ,KC_TRNS,
256+        KC_TRNS, KC_TRNS  ,KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS  ,              KC_TRNS  , KC_TRNS , KC_MS_L    , KC_MS_D , KC_MS_R , KC_SCLN,KC_QUOT ,
257+        KC_TRNS, KC_TRNS  ,KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS ,               KC_TRNS  , KC_TRNS , KC_TRNS    , KC_TRNS , KC_TRNS , KC_NUBS, KC_TRNS,
258+             KC_TRNS  , KC_TRNS ,KC_TRNS,KC_TRNS,  KC_TRNS ,                       RGB_RMOD,      KC_TRNS  , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
259+),
260+    [_LAYERC] = LAYOUT_ortho_5x14(
261+        KC_TRNS , KC_F1  ,KC_F2   ,KC_F3   , KC_F4  , KC_F5  , KC_TRNS  ,                       KC_TRNS  , KC_F6   , KC_F7    , KC_F8    , KC_F9   , KC_F10   , KC_GRV ,
262+        KC_TRNS , KC_TRNS, KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS  ,              KC_TRNS  , KC_TRNS , KC_TRNS    , KC_UP    , KC_TRNS   , KC_TRNS   ,KC_TRNS,
263+        KC_TRNS, KC_TRNS  ,KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS  ,              KC_TRNS  , KC_TRNS , KC_LEFT    , KC_DOWN , KC_RIGHT , KC_SCLN,KC_QUOT ,
264+        KC_TRNS, KC_TRNS  ,KC_TRNS   ,KC_TRNS   , KC_TRNS  , KC_TRNS  , KC_TRNS ,               KC_TRNS  , KC_TRNS , KC_TRNS    , KC_TRNS , KC_TRNS , KC_NUBS, KC_TRNS,
265+             KC_TRNS  , KC_TRNS ,KC_TRNS,KC_TRNS,  KC_TRNS ,                       RGB_MOD,      KC_TRNS  , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
266+)
267+};
268+
269+#if defined(ENCODER_MAP_ENABLE)
270+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
271+    [_LAYERA] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
272+    [_LAYERB] =  { ENCODER_CCW_CW(RGB_HUD, RGB_HUI)},
273+    [_LAYERC] =  { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
274+};
275+#endif
276diff --git a/keyboards/proteus67/keymaps/via/rules.mk b/keyboards/proteus67/keymaps/via/rules.mk
277new file mode 100644
278index 0000000000000000000000000000000000000000..f1adcab005e805a6e95f33b3d46bb01778ccaa7d
279--- /dev/null
280+++ b/keyboards/proteus67/keymaps/via/rules.mk
281@@ -0,0 +1,2 @@
282+VIA_ENABLE = yes
283+ENCODER_MAP_ENABLE = yes
284diff --git a/keyboards/proteus67/proteus67.c b/keyboards/proteus67/proteus67.c
285new file mode 100644
286index 0000000000000000000000000000000000000000..4073ac87d3e6cf88054c0b0dd2a0fd2c6c2446a1
287--- /dev/null
288+++ b/keyboards/proteus67/proteus67.c
289@@ -0,0 +1,42 @@
290+// Copyright 2023 James Gzowski
291+// SPDX-License-Identifier: GPL-2.0-or-later
292+#include QMK_KEYBOARD_H
293+
294+enum custom_layer {
295+    _LAYERA,
296+    _LAYERB,
297+    _LAYERC,
298+};
299+
300+// MO(_LAYERB)
301+const rgblight_segment_t PROGMEM backlight_layer_layerb[] = RGBLIGHT_LAYER_SEGMENTS(
302+    {0, 4, HSV_GOLD}
303+);
304+// MO(_LAYERC)
305+const rgblight_segment_t PROGMEM backlight_layer_layerc[] = RGBLIGHT_LAYER_SEGMENTS(
306+    {0, 4, HSV_CYAN}
307+);
308+const rgblight_segment_t PROGMEM backlight_layer_layera[] = RGBLIGHT_LAYER_SEGMENTS(
309+    {0, 4, HSV_BLACK}
310+);
311+const rgblight_segment_t* const PROGMEM set_backlight_mode[] = RGBLIGHT_LAYERS_LIST(
312+    backlight_layer_layerb,
313+    backlight_layer_layerc,
314+    backlight_layer_layera
315+);
316+
317+layer_state_t layer_state_set_kb(layer_state_t state) {
318+    rgblight_set_layer_state(0, layer_state_cmp(state, _LAYERB));
319+    rgblight_set_layer_state(1, layer_state_cmp(state, _LAYERC));
320+    rgblight_set_layer_state(2, layer_state_cmp(state, _LAYERA));
321+
322+    return layer_state_set_user(state);
323+}
324+
325+void keyboard_post_init_kb(void) {
326+    rgblight_set_effect_range(4, 17);
327+    rgblight_sethsv_range(HSV_BLACK, 0, 4);
328+    rgblight_layers = set_backlight_mode;
329+
330+    keyboard_post_init_user();
331+}
332diff --git a/keyboards/proteus67/readme.md b/keyboards/proteus67/readme.md
333new file mode 100644
334index 0000000000000000000000000000000000000000..b1422b8042176e7e5e993d3e53b7be45eb128ef5
335--- /dev/null
336+++ b/keyboards/proteus67/readme.md
337@@ -0,0 +1,25 @@
338+# proteus67
339+
340+![proteus67](https://i.imgur.com/mYhl7Jah.png)
341+
342+67 key ortholinear layout with rotary encoder.
343+
344+* Keyboard Maintainer: [James Gzowski](https://github.com/gzowski)
345+* Hardware Supported: Elite-Pi or equivilent RP2040 controller with additional I/O along bottom.
346+* Build Guide: [Proteus67](https://github.com/gzowski/Proteus67)
347+
348+Make example for this keyboard (after setting up your build environment):
349+	
350+    make proteus67:default
351+
352+Flashing example for this keyboard:
353+
354+    make proteus67:default:flash
355+
356diff --git a/keyboards/proteus67/rules.mk b/keyboards/proteus67/rules.mk
357new file mode 100644
358index 0000000000000000000000000000000000000000..6e7633bfe015beed407755e5b0bf5bfed8f67eae
359--- /dev/null
360+++ b/keyboards/proteus67/rules.mk
361@@ -0,0 +1 @@
362+# This file intentionally left blank