Skip to content

Commit bd14f6d

Browse files
committed
Very rough start for stana -> custom layout macro, take the keymap from sofle and flash it.
1 parent 8958b58 commit bd14f6d

File tree

5 files changed

+313
-42
lines changed

5 files changed

+313
-42
lines changed

keyboards/stana/info.json

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"manufacturer": "Josef Adamcik",
3-
"keyboard_name": "stana",
4-
"maintainer": "Josef Adamcik",
2+
"manufacturer": "josefadamcik",
3+
"keyboard_name": "Stana",
4+
"maintainer": "josefadamcik",
55
"bootloader": "rp2040",
66
"diode_direction": "COL2ROW",
77
"features": {
@@ -13,36 +13,28 @@
1313
"nkro": true
1414
},
1515
"matrix_pins": {
16-
"cols": ["C2", "C2", "C2", "C2"],
17-
"rows": ["D1", "D1", "D1", "D1"]
16+
"cols": ["GP29", "GP28", "GP27", "GP26", "GP15", "GP14", "GP8", "GP7", "GP6", "GP5", "GP4", "GP3"],
17+
"rows": ["GP13", "GP12", "GP11", "GP10", "GP9"]
1818
},
1919
"processor": "RP2040",
2020
"url": "",
2121
"usb": {
22-
"device_version": "1.0.0",
22+
"device_version": "0.1.0",
2323
"pid": "0x0000",
2424
"vid": "0xFEED"
2525
},
26+
"layout_aliases": {
27+
"LAYOUT_stana": "LAYOUT"
28+
},
2629
"layouts": {
27-
"LAYOUT_ortho_4x4": {
30+
"LAYOUT": {
2831
"layout": [
29-
{ "matrix": [0, 0], "x": 0, "y": 0 },
30-
{ "matrix": [0, 1], "x": 1, "y": 0 },
31-
{ "matrix": [0, 2], "x": 2, "y": 0 },
32-
{ "matrix": [0, 3], "x": 3, "y": 0 },
33-
{ "matrix": [1, 0], "x": 0, "y": 1 },
34-
{ "matrix": [1, 1], "x": 1, "y": 1 },
35-
{ "matrix": [1, 2], "x": 2, "y": 1 },
36-
{ "matrix": [1, 3], "x": 3, "y": 1 },
37-
{ "matrix": [2, 0], "x": 0, "y": 2 },
38-
{ "matrix": [2, 1], "x": 1, "y": 2 },
39-
{ "matrix": [2, 2], "x": 2, "y": 2 },
40-
{ "matrix": [2, 3], "x": 3, "y": 2 },
41-
{ "matrix": [3, 0], "x": 0, "y": 3 },
42-
{ "matrix": [3, 1], "x": 1, "y": 3 },
43-
{ "matrix": [3, 2], "x": 2, "y": 3 },
44-
{ "matrix": [3, 3], "x": 3, "y": 3 }
32+
{"x":0, "y":0.5}, {"x":1, "y":0.375}, {"x":2, "y":0.125}, {"x":3, "y":0}, {"x":4, "y":0.125}, {"x":5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.5},
33+
{"x":0, "y":1.5}, {"x":1, "y":1.375}, {"x":2, "y":1.125}, {"x":3, "y":1}, {"x":4, "y":1.125}, {"x":5, "y":1.25}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.5},
34+
{"x":0, "y":2.5}, {"x":1, "y":2.375}, {"x":2, "y":2.125}, {"x":3, "y":2}, {"x":4, "y":2.125}, {"x":5, "y":2.25}, {"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.5},
35+
{"x":0, "y":3.5}, {"x":1, "y":3.375}, {"x":2, "y":3.125}, {"x":3, "y":3}, {"x":4, "y":3.125}, {"x":5, "y":3.25}, {"x":6, "y":2.75}, {"x":9.5, "y":2.75}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.5},
36+
{"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4.15}, {"x":4.5, "y":4.25}, {"x":6, "y":4.25, "h":1.5}, {"x":9.5, "y":4.25, "h":1.5}, {"x":11, "y":4.25}, {"x":12, "y":4.15}, {"x":13, "y":4.125}, {"x":14, "y":4.375}
4537
]
4638
}
4739
}
48-
}
40+
}

keyboards/stana/keymaps/default/keymap.c

Lines changed: 269 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,274 @@
33

44
#include QMK_KEYBOARD_H
55

6+
enum sofle_layers {
7+
/* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */
8+
_QWERTY,
9+
_COLEMAK,
10+
_LOWER,
11+
_RAISE,
12+
_ADJUST,
13+
};
14+
15+
enum custom_keycodes {
16+
KC_QWERTY = SAFE_RANGE,
17+
KC_COLEMAK,
18+
KC_PRVWD,
19+
KC_NXTWD,
20+
KC_LSTRT,
21+
KC_LEND,
22+
KC_DLINE
23+
};
24+
625
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
7-
/*
8-
* ┌───┬───┬───┬───┐
9-
* │ 7 │ 8 │ 9 │ / │
10-
* ├───┼───┼───┼───┤
11-
* │ 4 │ 5 │ 6 │ * │
12-
* ├───┼───┼───┼───┤
13-
* │ 1 │ 2 │ 3 │ - │
14-
* ├───┼───┼───┼───┤
15-
* │ 0 │ . │Ent│ + │
16-
* └───┴───┴───┴───┘
17-
*/
18-
[0] = LAYOUT_ortho_4x4(
19-
KC_P7, KC_P8, KC_P9, KC_PSLS,
20-
KC_P4, KC_P5, KC_P6, KC_PAST,
21-
KC_P1, KC_P2, KC_P3, KC_PMNS,
22-
KC_P0, KC_PDOT, KC_PENT, KC_PPLS
23-
)
26+
/*
27+
* QWERTY
28+
* ,-----------------------------------------. ,-----------------------------------------.
29+
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
30+
* |------+------+------+------+------+------| |------+------+------+------+------+------|
31+
* | ESC | Q | W | E | R | T | | Y | U | I | O | P | Bspc |
32+
* |------+------+------+------+------+------| |------+------+------+------+------+------|
33+
* | Tab | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
34+
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
35+
* |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
36+
* `-----------------------------------------/ / \ \-----------------------------------------'
37+
* | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
38+
* | | | | |/ / \ \ | | | | |
39+
* `----------------------------------' '------''---------------------------'
40+
*/
41+
42+
[_QWERTY] = LAYOUT(
43+
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV,
44+
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
45+
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
46+
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
47+
KC_LGUI,KC_LALT,KC_LCTL, MO(_LOWER), KC_ENT, KC_SPC, MO(_RAISE), KC_RCTL, KC_RALT, KC_RGUI
48+
),
49+
/*
50+
* COLEMAK
51+
* ,-----------------------------------------. ,-----------------------------------------.
52+
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
53+
* |------+------+------+------+------+------| |------+------+------+------+------+------|
54+
* | ESC | Q | W | F | P | G | | J | L | U | Y | ; | Bspc |
55+
* |------+------+------+------+------+------| |------+------+------+------+------+------|
56+
* | TAB | A | R | S | T | D |-------. ,-------| H | N | E | I | O | ' |
57+
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
58+
* |LShift| Z | X | C | V | B |-------| |-------| K | M | , | . | / |RShift|
59+
* `-----------------------------------------/ / \ \-----------------------------------------'
60+
* | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
61+
* | | | | |/ / \ \ | | | | |
62+
* `----------------------------------' '------''---------------------------'
63+
*/
64+
65+
[_COLEMAK] = LAYOUT(
66+
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV,
67+
KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
68+
KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
69+
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
70+
KC_LGUI,KC_LALT,KC_LCTL,MO(_LOWER), KC_ENT, KC_SPC, MO(_RAISE), KC_RCTL, KC_RALT, KC_RGUI
71+
),
72+
/* LOWER
73+
* ,-----------------------------------------. ,-----------------------------------------.
74+
* | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
75+
* |------+------+------+------+------+------| |------+------+------+------+------+------|
76+
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 |
77+
* |------+------+------+------+------+------| |------+------+------+------+------+------|
78+
* | Tab | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | | |
79+
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
80+
* | Shift| = | - | + | { | } |-------| |-------| [ | ] | ; | : | \ | Shift|
81+
* `-----------------------------------------/ / \ \-----------------------------------------'
82+
* | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
83+
* | | | | |/ / \ \ | | | | |
84+
* `----------------------------------' '------''---------------------------'
85+
*/
86+
[_LOWER] = LAYOUT(
87+
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
88+
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12,
89+
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE,
90+
_______, KC_EQL, KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, _______,
91+
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
92+
),
93+
/* RAISE
94+
* ,----------------------------------------. ,-----------------------------------------.
95+
* | | | | | | | | | | | | | |
96+
* |------+------+------+------+------+------| |------+------+------+------+------+------|
97+
* | Esc | Ins | Pscr | Menu | | | | | PWrd | Up | NWrd | DLine| Bspc |
98+
* |------+------+------+------+------+------| |------+------+------+------+------+------|
99+
* | Tab | LAt | LCtl |LShift| | Caps |-------. ,-------| | Left | Down | Rigth| Del | Bspc |
100+
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
101+
* |Shift | Undo | Cut | Copy | Paste| |-------| |-------| | LStr | | LEnd | | Shift|
102+
* `-----------------------------------------/ / \ \-----------------------------------------'
103+
* | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
104+
* | | | | |/ / \ \ | | | | |
105+
* `----------------------------------' '------''---------------------------'
106+
*/
107+
[_RAISE] = LAYOUT(
108+
_______, _______ , _______ , _______ , _______ , _______, _______, _______ , _______, _______ , _______ ,_______,
109+
_______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, XXXXXXX, KC_PGUP, KC_PRVWD, KC_UP, KC_NXTWD,KC_DLINE, KC_BSPC,
110+
_______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_BSPC,
111+
_______,KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, XXXXXXX, XXXXXXX, KC_LSTRT, XXXXXXX, KC_LEND, XXXXXXX, _______,
112+
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
113+
),
114+
/* ADJUST
115+
* ,-----------------------------------------. ,-----------------------------------------.
116+
* | | | | | | | | | | | | | |
117+
* |------+------+------+------+------+------| |------+------+------+------+------+------|
118+
* | QK_BOOT| |QWERTY|COLEMAK| | | | | | | | | |
119+
* |------+------+------+------+------+------| |------+------+------+------+------+------|
120+
* | | |MACWIN| | | |-------. ,-------| | VOLDO| MUTE | VOLUP| | |
121+
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
122+
* | | | | | | |-------| |-------| | PREV | PLAY | NEXT | | |
123+
* `-----------------------------------------/ / \ \-----------------------------------------'
124+
* | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
125+
* | | | | |/ / \ \ | | | | |
126+
* `----------------------------------' '------''---------------------------'
127+
*/
128+
[_ADJUST] = LAYOUT(
129+
XXXXXXX , XXXXXXX, XXXXXXX , XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
130+
QK_BOOT , XXXXXXX,KC_QWERTY,KC_COLEMAK,CG_TOGG,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
131+
XXXXXXX , XXXXXXX,CG_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX,
132+
XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
133+
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
134+
)
24135
};
136+
137+
138+
layer_state_t layer_state_set_user(layer_state_t state) {
139+
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
140+
}
141+
142+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
143+
switch (keycode) {
144+
case KC_QWERTY:
145+
if (record->event.pressed) {
146+
set_single_persistent_default_layer(_QWERTY);
147+
}
148+
return false;
149+
case KC_COLEMAK:
150+
if (record->event.pressed) {
151+
set_single_persistent_default_layer(_COLEMAK);
152+
}
153+
return false;
154+
case KC_PRVWD:
155+
if (record->event.pressed) {
156+
if (keymap_config.swap_lctl_lgui) {
157+
register_mods(mod_config(MOD_LALT));
158+
register_code(KC_LEFT);
159+
} else {
160+
register_mods(mod_config(MOD_LCTL));
161+
register_code(KC_LEFT);
162+
}
163+
} else {
164+
if (keymap_config.swap_lctl_lgui) {
165+
unregister_mods(mod_config(MOD_LALT));
166+
unregister_code(KC_LEFT);
167+
} else {
168+
unregister_mods(mod_config(MOD_LCTL));
169+
unregister_code(KC_LEFT);
170+
}
171+
}
172+
break;
173+
case KC_NXTWD:
174+
if (record->event.pressed) {
175+
if (keymap_config.swap_lctl_lgui) {
176+
register_mods(mod_config(MOD_LALT));
177+
register_code(KC_RIGHT);
178+
} else {
179+
register_mods(mod_config(MOD_LCTL));
180+
register_code(KC_RIGHT);
181+
}
182+
} else {
183+
if (keymap_config.swap_lctl_lgui) {
184+
unregister_mods(mod_config(MOD_LALT));
185+
unregister_code(KC_RIGHT);
186+
} else {
187+
unregister_mods(mod_config(MOD_LCTL));
188+
unregister_code(KC_RIGHT);
189+
}
190+
}
191+
break;
192+
case KC_LSTRT:
193+
if (record->event.pressed) {
194+
if (keymap_config.swap_lctl_lgui) {
195+
//CMD-arrow on Mac, but we have CTL and GUI swapped
196+
register_mods(mod_config(MOD_LCTL));
197+
register_code(KC_LEFT);
198+
} else {
199+
register_code(KC_HOME);
200+
}
201+
} else {
202+
if (keymap_config.swap_lctl_lgui) {
203+
unregister_mods(mod_config(MOD_LCTL));
204+
unregister_code(KC_LEFT);
205+
} else {
206+
unregister_code(KC_HOME);
207+
}
208+
}
209+
break;
210+
case KC_LEND:
211+
if (record->event.pressed) {
212+
if (keymap_config.swap_lctl_lgui) {
213+
//CMD-arrow on Mac, but we have CTL and GUI swapped
214+
register_mods(mod_config(MOD_LCTL));
215+
register_code(KC_RIGHT);
216+
} else {
217+
register_code(KC_END);
218+
}
219+
} else {
220+
if (keymap_config.swap_lctl_lgui) {
221+
unregister_mods(mod_config(MOD_LCTL));
222+
unregister_code(KC_RIGHT);
223+
} else {
224+
unregister_code(KC_END);
225+
}
226+
}
227+
break;
228+
case KC_DLINE:
229+
if (record->event.pressed) {
230+
register_mods(mod_config(MOD_LCTL));
231+
register_code(KC_BSPC);
232+
} else {
233+
unregister_mods(mod_config(MOD_LCTL));
234+
unregister_code(KC_BSPC);
235+
}
236+
break;
237+
case KC_COPY:
238+
if (record->event.pressed) {
239+
register_mods(mod_config(MOD_LCTL));
240+
register_code(KC_C);
241+
} else {
242+
unregister_mods(mod_config(MOD_LCTL));
243+
unregister_code(KC_C);
244+
}
245+
return false;
246+
case KC_PASTE:
247+
if (record->event.pressed) {
248+
register_mods(mod_config(MOD_LCTL));
249+
register_code(KC_V);
250+
} else {
251+
unregister_mods(mod_config(MOD_LCTL));
252+
unregister_code(KC_V);
253+
}
254+
return false;
255+
case KC_CUT:
256+
if (record->event.pressed) {
257+
register_mods(mod_config(MOD_LCTL));
258+
register_code(KC_X);
259+
} else {
260+
unregister_mods(mod_config(MOD_LCTL));
261+
unregister_code(KC_X);
262+
}
263+
return false;
264+
break;
265+
case KC_UNDO:
266+
if (record->event.pressed) {
267+
register_mods(mod_config(MOD_LCTL));
268+
register_code(KC_Z);
269+
} else {
270+
unregister_mods(mod_config(MOD_LCTL));
271+
unregister_code(KC_Z);
272+
}
273+
return false;
274+
}
275+
return true;
276+
}

keyboards/stana/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
*A short description of the keyboard/project*
66

7-
* Keyboard Maintainer: [Josef Adamcik](https://github.com/Josef Adamcik)
7+
* Keyboard Maintainer: [Josef Adamcik](https://github.com/josefadamcik)
88
* Hardware Supported: *The PCBs, controllers supported*
99
* Hardware Availability: *Links to where you can find this hardware*
1010

keyboards/stana/stana.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#include "stana.h"

0 commit comments

Comments
 (0)