aboutsummaryrefslogtreecommitdiff
path: root/keyboards
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/boardsource/4x12/keymaps/via/keymap.c36
-rw-r--r--keyboards/boardsource/4x12/keymaps/via/readme.md5
-rw-r--r--keyboards/boardsource/4x12/keymaps/via/rules.mk1
-rw-r--r--keyboards/converter/adb_usb/adb_usb.h2
-rw-r--r--keyboards/ergodox_ez/keymaps/nathanvercaemert/config.h3
-rw-r--r--keyboards/ergodox_ez/keymaps/nathanvercaemert/keymap.c123
-rw-r--r--keyboards/ergodox_ez/keymaps/nathanvercaemert/readme.md7
-rw-r--r--keyboards/ergodox_ez/keymaps/nathanvercaemert/rules.mk3
-rw-r--r--keyboards/handwired/swiftrax/pandamic/config.h52
-rw-r--r--keyboards/handwired/swiftrax/pandamic/info.json12
-rw-r--r--keyboards/handwired/swiftrax/pandamic/keymaps/default/keymap.c49
-rw-r--r--keyboards/handwired/swiftrax/pandamic/keymaps/via/keymap.c46
-rw-r--r--keyboards/handwired/swiftrax/pandamic/keymaps/via/rules.mk1
-rw-r--r--keyboards/handwired/swiftrax/pandamic/pandamic.c16
-rw-r--r--keyboards/handwired/swiftrax/pandamic/pandamic.h40
-rw-r--r--keyboards/handwired/swiftrax/pandamic/readme.md13
-rw-r--r--keyboards/handwired/swiftrax/pandamic/rules.mk23
-rw-r--r--keyboards/jj40/config.h4
-rwxr-xr-xkeyboards/kbdfans/maja_soldered/config.h44
-rw-r--r--keyboards/kbdfans/maja_soldered/info.json81
-rwxr-xr-xkeyboards/kbdfans/maja_soldered/keymaps/default/keymap.c43
-rwxr-xr-xkeyboards/kbdfans/maja_soldered/keymaps/via/keymap.c43
-rwxr-xr-xkeyboards/kbdfans/maja_soldered/keymaps/via/rules.mk2
-rwxr-xr-xkeyboards/kbdfans/maja_soldered/maja_soldered.c29
-rwxr-xr-xkeyboards/kbdfans/maja_soldered/maja_soldered.h19
-rwxr-xr-xkeyboards/kbdfans/maja_soldered/readme.md14
-rwxr-xr-xkeyboards/kbdfans/maja_soldered/rules.mk22
-rw-r--r--keyboards/lazydesigners/bolt/via/keymap.c43
-rw-r--r--keyboards/lazydesigners/bolt/via/rules.mk2
-rw-r--r--keyboards/maartenwut/solheim68/config.h143
-rw-r--r--keyboards/maartenwut/solheim68/info.json397
-rw-r--r--keyboards/maartenwut/solheim68/keymaps/default/keymap.c31
-rw-r--r--keyboards/maartenwut/solheim68/keymaps/default/readme.md1
-rw-r--r--keyboards/maartenwut/solheim68/readme.md17
-rw-r--r--keyboards/maartenwut/solheim68/rules.mk22
-rw-r--r--keyboards/maartenwut/solheim68/solheim68.c16
-rw-r--r--keyboards/maartenwut/solheim68/solheim68.h102
-rw-r--r--keyboards/marksard/leftover30/config.h138
-rw-r--r--keyboards/marksard/leftover30/info.json198
-rw-r--r--keyboards/marksard/leftover30/keymaps/default/config.h24
-rw-r--r--keyboards/marksard/leftover30/keymaps/default/keymap.c162
-rw-r--r--keyboards/marksard/leftover30/keymaps/default/readme.md1
-rw-r--r--keyboards/marksard/leftover30/keymaps/default/rules.mk1
-rw-r--r--keyboards/marksard/leftover30/leftover30.c37
-rw-r--r--keyboards/marksard/leftover30/leftover30.h45
-rw-r--r--keyboards/marksard/leftover30/readme.md17
-rw-r--r--keyboards/marksard/leftover30/rules.mk22
-rw-r--r--keyboards/marksard/rhymestone/common/glcdfont.c233
-rw-r--r--keyboards/marksard/rhymestone/common/oled_helper.c87
-rw-r--r--keyboards/marksard/rhymestone/common/oled_helper.h32
-rw-r--r--keyboards/marksard/rhymestone/info.json213
-rw-r--r--keyboards/marksard/rhymestone/keymaps/default/config.h27
-rw-r--r--keyboards/marksard/rhymestone/keymaps/default/keymap.c226
-rw-r--r--keyboards/marksard/rhymestone/keymaps/default/rules.mk9
-rw-r--r--keyboards/marksard/rhymestone/keymaps/switch_tester/keymap.c76
-rw-r--r--keyboards/marksard/rhymestone/keymaps/switch_tester/readme.md3
-rw-r--r--keyboards/marksard/rhymestone/keymaps/switch_tester/rules.mk7
-rw-r--r--keyboards/marksard/rhymestone/readme.md18
-rw-r--r--keyboards/marksard/rhymestone/rev1/config.h152
-rw-r--r--keyboards/marksard/rhymestone/rev1/rev1.c108
-rw-r--r--keyboards/marksard/rhymestone/rev1/rev1.h89
-rw-r--r--keyboards/marksard/rhymestone/rev1/rules.mk0
-rw-r--r--keyboards/marksard/rhymestone/rules.mk27
-rw-r--r--keyboards/planck/keymaps/gitdrik/config.h56
-rw-r--r--keyboards/planck/keymaps/gitdrik/keymap.c231
-rw-r--r--keyboards/planck/keymaps/gitdrik/readme.md1
-rw-r--r--keyboards/planck/keymaps/gitdrik/rules.mk3
-rw-r--r--keyboards/plume/plume65/config.h137
-rw-r--r--keyboards/plume/plume65/info.json376
-rw-r--r--keyboards/plume/plume65/keymaps/default/keymap.c33
-rw-r--r--keyboards/plume/plume65/keymaps/default/readme.md1
-rw-r--r--keyboards/plume/plume65/keymaps/via/keymap.c45
-rw-r--r--keyboards/plume/plume65/keymaps/via/rules.mk1
-rw-r--r--keyboards/plume/plume65/plume65.c16
-rw-r--r--keyboards/plume/plume65/plume65.h103
-rw-r--r--keyboards/plume/plume65/readme.md16
-rw-r--r--keyboards/plume/plume65/rules.mk22
-rw-r--r--keyboards/redox_w/keymaps/danielo515/keymap.c65
78 files changed, 4506 insertions, 59 deletions
diff --git a/keyboards/boardsource/4x12/keymaps/via/keymap.c b/keyboards/boardsource/4x12/keymaps/via/keymap.c
new file mode 100644
index 000000000..d9a0c47a6
--- /dev/null
+++ b/keyboards/boardsource/4x12/keymaps/via/keymap.c
@@ -0,0 +1,36 @@
1#include QMK_KEYBOARD_H
2
3enum layers {
4 _MAIN,
5 _RAISE,
6 _LOWER,
7};
8
9// Readability keycodes
10#define LOWER MO(_LOWER)
11#define RAISE MO(_RAISE)
12
13const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
14
15 [_MAIN] = LAYOUT_ortho_4x12(
16 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
17 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
18 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
19 KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
20 ),
21
22 [_RAISE] = LAYOUT_ortho_4x12(
23 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
24 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
25 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
26 RESET, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
27 ),
28
29 [_LOWER] = LAYOUT_ortho_4x12(
30 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
31 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
32 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
33 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
34 )
35
36};
diff --git a/keyboards/boardsource/4x12/keymaps/via/readme.md b/keyboards/boardsource/4x12/keymaps/via/readme.md
new file mode 100644
index 000000000..534633d45
--- /dev/null
+++ b/keyboards/boardsource/4x12/keymaps/via/readme.md
@@ -0,0 +1,5 @@
1# The via keymap for boardsource 4x12 ortholinear keybaoard
2
3This folder contains the [VIA](https://caniusevia.com/) configuration for the boardsource 4x12 ortholinear keybaoard
4
5Maintained by: [gwillad](https://github.com/gwillad)
diff --git a/keyboards/boardsource/4x12/keymaps/via/rules.mk b/keyboards/boardsource/4x12/keymaps/via/rules.mk
new file mode 100644
index 000000000..036bd6d1c
--- /dev/null
+++ b/keyboards/boardsource/4x12/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/converter/adb_usb/adb_usb.h b/keyboards/converter/adb_usb/adb_usb.h
index 8691adcc6..3db303b03 100644
--- a/keyboards/converter/adb_usb/adb_usb.h
+++ b/keyboards/converter/adb_usb/adb_usb.h
@@ -56,7 +56,7 @@ Ported to QMK by Peter Roe <pete@13bit.me>
56 { K38, K39, K3A, K3B, K3C, K3D, K3E, KC_NO, }, \ 56 { K38, K39, K3A, K3B, K3C, K3D, K3E, KC_NO, }, \
57 { KC_NO, K41, KC_NO, K43, KC_NO, K45, KC_NO, K47 }, \ 57 { KC_NO, K41, KC_NO, K43, KC_NO, K45, KC_NO, K47 }, \
58 { KC_NO, KC_NO, KC_NO, K4B, K4C, KC_NO, K4E, KC_NO, }, \ 58 { KC_NO, KC_NO, KC_NO, K4B, K4C, KC_NO, K4E, KC_NO, }, \
59 { KC_NO, KC_NO, K52, K53, K54, K55, K56, K57 }, \ 59 { KC_NO, K51, K52, K53, K54, K55, K56, K57 }, \
60 { K58, K59, KC_NO, K5B, K5C, KC_NO, KC_NO, KC_NO, }, \ 60 { K58, K59, KC_NO, K5B, K5C, KC_NO, KC_NO, KC_NO, }, \
61 { K60, K61, K62, K63, K64, K65, KC_NO, K67 }, \ 61 { K60, K61, K62, K63, K64, K65, KC_NO, K67 }, \
62 { KC_NO, K69, KC_NO, K6B, KC_NO, K6D, KC_NO, K6F }, \ 62 { KC_NO, K69, KC_NO, K6B, KC_NO, K6D, KC_NO, K6F }, \
diff --git a/keyboards/ergodox_ez/keymaps/nathanvercaemert/config.h b/keyboards/ergodox_ez/keymaps/nathanvercaemert/config.h
index 6d69b0011..06c50e0a9 100644
--- a/keyboards/ergodox_ez/keymaps/nathanvercaemert/config.h
+++ b/keyboards/ergodox_ez/keymaps/nathanvercaemert/config.h
@@ -18,6 +18,9 @@
18#undef MOUSEKEY_WHEEL_INTERVAL 18#undef MOUSEKEY_WHEEL_INTERVAL
19#define MOUSEKEY_WHEEL_INTERVAL 50 19#define MOUSEKEY_WHEEL_INTERVAL 50
20 20
21#undef MK_COMBINED
22#define MK_COMBINED
23
21// /* Temporarily defining a tapping term that is ridiculous to see if i can tell if lt is working. */ 24// /* Temporarily defining a tapping term that is ridiculous to see if i can tell if lt is working. */
22// #undef TAPPING_TERM 25// #undef TAPPING_TERM
23// #define TAPPING_TERM 499 26// #define TAPPING_TERM 499
diff --git a/keyboards/ergodox_ez/keymaps/nathanvercaemert/keymap.c b/keyboards/ergodox_ez/keymaps/nathanvercaemert/keymap.c
index c2960cfa1..e06d0b769 100644
--- a/keyboards/ergodox_ez/keymaps/nathanvercaemert/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/nathanvercaemert/keymap.c
@@ -28,13 +28,17 @@
28 28
29enum custom_keycodes { 29enum custom_keycodes {
30 RGB_SLD = EZ_SAFE_RANGE, 30 RGB_SLD = EZ_SAFE_RANGE,
31 MS_WH_UP,
32 MS_WH_DOWN,
33 MS_WH_RIGHT,
34 MS_WH_LEFT,
31}; 35};
32 36
33// tapdance keycodes 37// tapdance keycodes
34enum td_keycodes { 38enum td_keycodes {
35 CTRL_TO12, 39 CTRL_TO12,
36 SHIFT_TO13, 40 SHIFT_TO13,
37 ALT_TO11 41 ALT_TO11,
38}; 42};
39 43
40// define a type containing as many tapdance states as you need 44// define a type containing as many tapdance states as you need
@@ -59,6 +63,7 @@ void altto11_reset (qk_tap_dance_state_t *state, void *user_data);
59void shiftto13_finished (qk_tap_dance_state_t *state, void *user_data); 63void shiftto13_finished (qk_tap_dance_state_t *state, void *user_data);
60void shiftto13_reset (qk_tap_dance_state_t *state, void *user_data); 64void shiftto13_reset (qk_tap_dance_state_t *state, void *user_data);
61 65
66
62const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 67const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
63 [0] = LAYOUT_ergodox_pretty( 68 [0] = LAYOUT_ergodox_pretty(
64 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 69 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
@@ -162,9 +167,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
162 ), 167 ),
163 [10] = LAYOUT_ergodox_pretty( 168 [10] = LAYOUT_ergodox_pretty(
164 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, 169 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
165 KC_TRANSPARENT, KC_NO, KC_LGUI, KC_MS_BTN2, KC_NO, KC_NO, KC_TRANSPARENT, MT(MOD_RCTL, KC_A), KC_NO, KC_NO, KC_MS_UP, KC_NO, KC_NO, KC_TRANSPARENT, 170 KC_TRANSPARENT, KC_NO, KC_LGUI, KC_MS_BTN2, KC_ACL2, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_MS_UP, KC_NO, KC_NO, KC_TRANSPARENT,
166 KC_TRANSPARENT, TD(SHIFT_TO13), TD(CTRL_TO12), TD(ALT_TO11), KC_MS_BTN1, KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_NO, KC_TRANSPARENT, 171 KC_TRANSPARENT, TD(SHIFT_TO13), TD(CTRL_TO12), TD(ALT_TO11), KC_MS_BTN1, KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_NO, KC_TRANSPARENT,
167 KC_TRANSPARENT, KC_NO, MT(MOD_LGUI | MOD_LCTL,KC_NO), KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, 172 KC_TRANSPARENT, KC_NO, MT(MOD_LGUI | MOD_LCTL,KC_NO), KC_ACL0, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
168 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, 173 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
169 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, 174 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
170 KC_TRANSPARENT, KC_TRANSPARENT, 175 KC_TRANSPARENT, KC_TRANSPARENT,
@@ -182,9 +187,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
182 ), 187 ),
183 [12] = LAYOUT_ergodox_pretty( 188 [12] = LAYOUT_ergodox_pretty(
184 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, 189 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
185 KC_TRANSPARENT, KC_NO, KC_LGUI, KC_HYPR, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_MS_WH_UP, KC_NO, KC_NO, KC_TRANSPARENT, 190 KC_TRANSPARENT, KC_NO, KC_LGUI, KC_HYPR, KC_ACL2, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_MS_WH_UP, KC_NO, KC_NO, KC_TRANSPARENT,
186 KC_TRANSPARENT, KC_LSHIFT, KC_LCTRL, KC_LALT, KC_NO, KC_NO, KC_NO, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, KC_NO, KC_TRANSPARENT, 191 KC_TRANSPARENT, KC_LSHIFT, KC_LCTRL, KC_LALT, KC_NO, KC_NO, KC_NO, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, KC_NO, KC_TRANSPARENT,
187 KC_TRANSPARENT, KC_NO, MT(MOD_LGUI | MOD_LCTL,KC_NO), KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, 192 KC_TRANSPARENT, KC_NO, MT(MOD_LGUI | MOD_LCTL,KC_NO), MO(14), KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
188 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, 193 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
189 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, 194 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
190 KC_TRANSPARENT, KC_TRANSPARENT, 195 KC_TRANSPARENT, KC_TRANSPARENT,
@@ -200,16 +205,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
200 KC_TRANSPARENT, KC_TRANSPARENT, 205 KC_TRANSPARENT, KC_TRANSPARENT,
201 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, TO(0) 206 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, TO(0)
202 ), 207 ),
208 [14] = LAYOUT_ergodox_pretty(
209 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
210 KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, MS_WH_UP, KC_NO, KC_NO, KC_TRANSPARENT,
211 KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MS_WH_LEFT, MS_WH_DOWN, MS_WH_RIGHT, KC_NO, KC_TRANSPARENT,
212 KC_TRANSPARENT, KC_NO, KC_NO, KC_TRANSPARENT, KC_NO, KC_NO, KC_TRANSPARENT, KC_TRANSPARENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRANSPARENT,
213 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
214 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT,
215 KC_TRANSPARENT, KC_TRANSPARENT,
216 KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT
217 ),
203}; 218};
204 219
205
206/* Commenting out for debug purposes */
207// bool process_record_user(uint16_t keycode, keyrecord_t *record) {
208// switch (keycode) {
209// }
210// return true;
211// }
212
213uint32_t layer_state_set_user(uint32_t state) { 220uint32_t layer_state_set_user(uint32_t state) {
214 uint8_t layer = biton32(state); 221 uint8_t layer = biton32(state);
215 ergodox_board_led_off(); 222 ergodox_board_led_off();
@@ -252,11 +259,31 @@ uint32_t layer_state_set_user(uint32_t state) {
252// determine the tapdance state to return 259// determine the tapdance state to return
253int cur_dance (qk_tap_dance_state_t *state) { 260int cur_dance (qk_tap_dance_state_t *state) {
254 if (state->count == 1) { 261 if (state->count == 1) {
255 if (state->interrupted || !state->pressed) { return SINGLE_TAP; } 262 if (state->interrupted && state->pressed && state->interrupting_keycode == KC_MS_BTN1) {return SINGLE_HOLD;}
263 if (state->interrupted && state->pressed && state->interrupting_keycode == 22273) {return SINGLE_HOLD;}
264 if (state->interrupted && state->pressed && state->interrupting_keycode == 22272) {return SINGLE_HOLD;}
265 if (state->interrupted && state->pressed && state->interrupting_keycode == KC_TAB) {return SINGLE_HOLD;}
266 else if (state->interrupted || !state->pressed) {
267 // if (state->interrupted) {
268 // print("interrupted\n");
269 // uprintf("Shift: %u\n", KC_LSHIFT);
270 // uprintf("Control: %u\n", KC_LCTRL);
271 // uprintf("%u\n",state->interrupting_keycode);
272 // }
273 return SINGLE_TAP;
274 }
256 else { return SINGLE_HOLD; } 275 else { return SINGLE_HOLD; }
257 } 276 }
258 else { return 2; } // any number higher than the maximum state value you return above 277 else { return 2; } // any number higher than the maximum state value you return above
259} 278}
279// /* Backup in case previous code is hard to piece together. */
280// int cur_dance (qk_tap_dance_state_t *state) {
281// if (state->count == 1) {
282// if (state->interrupted || !state->pressed) { return SINGLE_TAP; }
283// else { return SINGLE_HOLD; }
284// }
285// else { return 2; } // any number higher than the maximum state value you return above
286// }
260 287
261void ctrlto12_finished (qk_tap_dance_state_t *state, void *user_data) { 288void ctrlto12_finished (qk_tap_dance_state_t *state, void *user_data) {
262 td_state = cur_dance(state); 289 td_state = cur_dance(state);
@@ -265,7 +292,14 @@ void ctrlto12_finished (qk_tap_dance_state_t *state, void *user_data) {
265 layer_on(12); 292 layer_on(12);
266 break; 293 break;
267 case SINGLE_HOLD: 294 case SINGLE_HOLD:
295 if (state->interrupted && (state->interrupting_keycode == 22273 || state->interrupting_keycode == 43)) {
296 register_mods(MOD_BIT(KC_LCTRL));
297 break;
298 }
268 register_mods(MOD_BIT(KC_LCTRL)); // for a layer-tap key, use `layer_on(_MY_LAYER)` here 299 register_mods(MOD_BIT(KC_LCTRL)); // for a layer-tap key, use `layer_on(_MY_LAYER)` here
300 if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
301 register_code16(LCTL(KC_MS_BTN1));
302 }
269 break; 303 break;
270 } 304 }
271} 305}
@@ -275,7 +309,14 @@ void ctrlto12_reset (qk_tap_dance_state_t *state, void *user_data) {
275 case SINGLE_TAP: 309 case SINGLE_TAP:
276 break; 310 break;
277 case SINGLE_HOLD: 311 case SINGLE_HOLD:
312 if (state->interrupted && (state->interrupting_keycode == 22273 || state->interrupting_keycode == 43) ) {
313 unregister_mods(MOD_BIT(KC_LCTRL));
314 break;
315 }
278 unregister_mods(MOD_BIT(KC_LCTRL)); // for a layer-tap key, use `layer_off(_MY_LAYER)` here 316 unregister_mods(MOD_BIT(KC_LCTRL)); // for a layer-tap key, use `layer_off(_MY_LAYER)` here
317 if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
318 unregister_code16(LCTL(KC_MS_BTN1));
319 }
279 break; 320 break;
280 } 321 }
281} 322}
@@ -287,7 +328,14 @@ void shiftto13_finished (qk_tap_dance_state_t *state, void *user_data) {
287 layer_on(13); 328 layer_on(13);
288 break; 329 break;
289 case SINGLE_HOLD: 330 case SINGLE_HOLD:
331 if (state->interrupted && (state->interrupting_keycode == 22272 || state->interrupting_keycode == 43) ) {
332 register_mods(MOD_BIT(KC_LSHIFT));
333 break;
334 }
290 register_mods(MOD_BIT(KC_LSHIFT)); // for a layer-tap key, use `layer_on(_MY_LAYER)` here 335 register_mods(MOD_BIT(KC_LSHIFT)); // for a layer-tap key, use `layer_on(_MY_LAYER)` here
336 if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
337 register_code16(LSFT(KC_MS_BTN1));
338 }
291 break; 339 break;
292 } 340 }
293} 341}
@@ -297,7 +345,14 @@ void shiftto13_reset (qk_tap_dance_state_t *state, void *user_data) {
297 case SINGLE_TAP: 345 case SINGLE_TAP:
298 break; 346 break;
299 case SINGLE_HOLD: 347 case SINGLE_HOLD:
348 if (state->interrupted && (state->interrupting_keycode == 22272 || state->interrupting_keycode == 43) ) {
349 unregister_mods(MOD_BIT(KC_LSHIFT));
350 break;
351 }
300 unregister_mods(MOD_BIT(KC_LSHIFT)); // for a layer-tap key, use `layer_off(_MY_LAYER)` here 352 unregister_mods(MOD_BIT(KC_LSHIFT)); // for a layer-tap key, use `layer_off(_MY_LAYER)` here
353 if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
354 unregister_code16(LSFT(KC_MS_BTN1));
355 }
301 break; 356 break;
302 } 357 }
303} 358}
@@ -310,6 +365,9 @@ void altto11_finished (qk_tap_dance_state_t *state, void *user_data) {
310 break; 365 break;
311 case SINGLE_HOLD: 366 case SINGLE_HOLD:
312 register_mods(MOD_BIT(KC_LALT)); // for a layer-tap key, use `layer_on(_MY_LAYER)` here 367 register_mods(MOD_BIT(KC_LALT)); // for a layer-tap key, use `layer_on(_MY_LAYER)` here
368 if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
369 register_code16(LALT(KC_MS_BTN1));
370 }
313 break; 371 break;
314 } 372 }
315} 373}
@@ -320,6 +378,9 @@ void altto11_reset (qk_tap_dance_state_t *state, void *user_data) {
320 break; 378 break;
321 case SINGLE_HOLD: 379 case SINGLE_HOLD:
322 unregister_mods(MOD_BIT(KC_LALT)); // for a layer-tap key, use `layer_off(_MY_LAYER)` here 380 unregister_mods(MOD_BIT(KC_LALT)); // for a layer-tap key, use `layer_off(_MY_LAYER)` here
381 if (state->interrupted && state->interrupting_keycode == KC_MS_BTN1) {
382 unregister_code16(LALT(KC_MS_BTN1));
383 }
323 break; 384 break;
324 } 385 }
325} 386}
@@ -328,7 +389,7 @@ void altto11_reset (qk_tap_dance_state_t *state, void *user_data) {
328qk_tap_dance_action_t tap_dance_actions[] = { 389qk_tap_dance_action_t tap_dance_actions[] = {
329 [CTRL_TO12] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctrlto12_finished, ctrlto12_reset), 390 [CTRL_TO12] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctrlto12_finished, ctrlto12_reset),
330 [SHIFT_TO13] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, shiftto13_finished, shiftto13_reset), 391 [SHIFT_TO13] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, shiftto13_finished, shiftto13_reset),
331 [ALT_TO11] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altto11_finished, altto11_reset) 392 [ALT_TO11] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, altto11_finished, altto11_reset),
332}; 393};
333 394
334/* Debugging functions */ 395/* Debugging functions */
@@ -342,10 +403,32 @@ void keyboard_post_init_user(void) {
342} 403}
343 404
344bool process_record_user(uint16_t keycode, keyrecord_t *record) { 405bool process_record_user(uint16_t keycode, keyrecord_t *record) {
345 // If console is enabled, it will print the matrix position and status of each key pressed 406 // If console is enabled, it will print the matrix position and status of each key pressed
346// #ifdef CONSOLE_ENABLE 407 // #ifdef CONSOLE_ENABLE
347// uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed); 408 // uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
348// #endif 409 // #endif
349 return true; 410 switch (keycode) {
411 case MS_WH_DOWN:
412 if (record->event.pressed) {
413 SEND_STRING(SS_TAP(X_MS_WH_DOWN));
414 }
415 break;
416 case MS_WH_UP:
417 if (record->event.pressed) {
418 SEND_STRING(SS_TAP(X_MS_WH_UP));
419 }
420 break;
421 case MS_WH_LEFT:
422 if (record->event.pressed) {
423 SEND_STRING(SS_TAP(X_MS_WH_LEFT));
424 }
425 break;
426 case MS_WH_RIGHT:
427 if (record->event.pressed) {
428 SEND_STRING(SS_TAP(X_MS_WH_RIGHT));
429 }
430 break;
431 }
432 return true;
350} 433}
351 434
diff --git a/keyboards/ergodox_ez/keymaps/nathanvercaemert/readme.md b/keyboards/ergodox_ez/keymaps/nathanvercaemert/readme.md
index 5570d9881..ff3c8d142 100644
--- a/keyboards/ergodox_ez/keymaps/nathanvercaemert/readme.md
+++ b/keyboards/ergodox_ez/keymaps/nathanvercaemert/readme.md
@@ -1,7 +1,6 @@
1# The nathanvercaemert ErgoDox EZ configuration 1# The nathanvercaemert ErgoDox EZ configuration
2 2
3Centered around the home row and the use of mouse keys, this configuration focuses 3Centered around the home row and the use of mouse keys, this configuration focuses on minimal finger movement. No key is more than one unit away from the home row.
4on minimal finger movement. No key is more than one unit away from a finger on the home row.
5 4
6## Layers 5## Layers
7 6
@@ -20,7 +19,9 @@ on minimal finger movement. No key is more than one unit away from a finger on t
20 navigation layers. 19 navigation layers.
21* Navigation Layers 20* Navigation Layers
22 * From the Mouse Layer, taps to the left home row navigate to scroll keys, arrow keys, and page keys. 21 * From the Mouse Layer, taps to the left home row navigate to scroll keys, arrow keys, and page keys.
22* Notes on Acceleration
23 * Designated as "Slow" and "Fast" on the mouse layers (movement and scroll,) these keys can be held to allow for slow/precise or fast/efficient control.
23 24
24Here is the image of my keymap: 25Here is the image of my keymap:
25 26
26![Default](https://i.imgur.com/kXywQIq.png) \ No newline at end of file 27![Imgur Image](https://i.imgur.com/x6VgH9Z.png) \ No newline at end of file
diff --git a/keyboards/ergodox_ez/keymaps/nathanvercaemert/rules.mk b/keyboards/ergodox_ez/keymaps/nathanvercaemert/rules.mk
index 31c3fe3c7..0dadd4371 100644
--- a/keyboards/ergodox_ez/keymaps/nathanvercaemert/rules.mk
+++ b/keyboards/ergodox_ez/keymaps/nathanvercaemert/rules.mk
@@ -5,6 +5,5 @@ COMMAND_ENABLE = no
5RGBLIGHT_ENABLE = no 5RGBLIGHT_ENABLE = no
6TAP_DANCE_ENABLE=yes 6TAP_DANCE_ENABLE=yes
7 7
8 8# Debugging
9#Beginning debugging process for LT() and permissive hold
10CONSOLE_ENABLE = yes 9CONSOLE_ENABLE = yes
diff --git a/keyboards/handwired/swiftrax/pandamic/config.h b/keyboards/handwired/swiftrax/pandamic/config.h
new file mode 100644
index 000000000..0916bbf1c
--- /dev/null
+++ b/keyboards/handwired/swiftrax/pandamic/config.h
@@ -0,0 +1,52 @@
1/*
2Copyright 2020 Swiftrax <swiftrax@gmail.com>
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#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0x04D8
24#define PRODUCT_ID 0xEB0E
25#define DEVICE_VER 0x0001
26#define MANUFACTURER Swiftrax
27#define PRODUCT Pandamic
28
29/* key matrix size */
30#define MATRIX_ROWS 10
31#define MATRIX_COLS 10
32
33// ROWS: Top to bottom, COLS: Left to right
34
35#define MATRIX_ROW_PINS { D1, D2, B5, B7, D3, D5, D6, D4, D7, B4 }
36#define MATRIX_COL_PINS { B6, C6, C7, F7, F6, F5, F4, F1, F0, D0 }
37
38#define ENCODERS_PAD_A { E6 }
39#define ENCODERS_PAD_B { B0 }
40
41
42/* COL2ROW or ROW2COL */
43#define DIODE_DIRECTION ROW2COL
44
45/* define if matrix has ghost */
46//#define MATRIX_HAS_GHOST
47
48/* Set 0 if debouncing isn't needed */
49#define DEBOUNCE 5
50
51/*EEPROM for via*/
52#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/handwired/swiftrax/pandamic/info.json b/keyboards/handwired/swiftrax/pandamic/info.json
new file mode 100644
index 000000000..4446a041d
--- /dev/null
+++ b/keyboards/handwired/swiftrax/pandamic/info.json
@@ -0,0 +1,12 @@
1{
2 "keyboard_name": "Pandamic",
3 "url": "https://github.com/swiftrax",
4 "maintainer": "swiftrax",
5 "width": 20.75,
6 "height": 5.25,
7 "layouts": {
8 "LAYOUT": {
9 "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4.25, "y":0}, {"x":5.25, "y":0}, {"x":6.25, "y":0}, {"x":7.25, "y":0}, {"x":8.25, "y":0}, {"x":9.25, "y":0}, {"x":10.25, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"x":17.25, "y":0}, {"x":18.25, "y":0}, {"x":19.75, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1, "h":2}, {"x":4.25, "y":1, "w":1.5}, {"x":5.75, "y":1}, {"x":6.75, "y":1}, {"x":7.75, "y":1}, {"x":8.75, "y":1}, {"x":9.75, "y":1}, {"x":10.75, "y":1}, {"x":11.75, "y":1}, {"x":12.75, "y":1}, {"x":13.75, "y":1}, {"x":14.75, "y":1}, {"x":15.75, "y":1}, {"x":16.75, "y":1}, {"x":17.75, "y":1, "w":1.5}, {"x":19.75, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":4.25, "y":2, "w":1.75}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2}, {"x":16, "y":2}, {"x":17, "y":2, "w":2.25}, {"x":19.75, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3, "h":2}, {"x":4.25, "y":3, "w":1.25}, {"x":5.5, "y":3}, {"x":6.5, "y":3}, {"x":7.5, "y":3}, {"x":8.5, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}, {"x":12.5, "y":3}, {"x":13.5, "y":3}, {"x":14.5, "y":3}, {"x":15.5, "y":3}, {"x":16.5, "y":3, "w":1.75}, {"x":18.5, "y":3.25}, {"x":19.75, "y":3}, {"x":0, "y":4, "w":2}, {"x":2, "y":4}, {"x":4.25, "y":4, "w":1.25}, {"x":5.5, "y":4, "w":1.25}, {"x":6.75, "y":4, "w":1.25}, {"x":8, "y":4, "w":6.25}, {"x":14.25, "y":4}, {"x":15.25, "y":4}, {"x":16.25, "y":4}, {"x":17.5, "y":4.25}, {"x":18.5, "y":4.25}, {"x":19.5, "y":4.25}]
10 }
11 }
12}
diff --git a/keyboards/handwired/swiftrax/pandamic/keymaps/default/keymap.c b/keyboards/handwired/swiftrax/pandamic/keymaps/default/keymap.c
new file mode 100644
index 000000000..11e770921
--- /dev/null
+++ b/keyboards/handwired/swiftrax/pandamic/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
1/* Copyright 2020 swiftrax
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
18// Each layer gets a name for readability, which is then used in the keymap matrix below.
19// The underscores don't mean anything - you can have a layer called STUFF or any other name.
20// Layer names don't all need to be of the same length, obviously, and you can also skip them
21// entirely and just use numbers.
22enum _layer {
23 _MA,
24 _FN
25};
26
27const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
28
29[_MA] = LAYOUT(
30 KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC, 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_DEL, KC_MUTE,
31 KC_P7, KC_P8, KC_P9, KC_PPLS, 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_DEL,
32 KC_P4, KC_P5, KC_P6, 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_END,
33 KC_P1, KC_P2, KC_P3, KC_PENT, KC_LSFT, MO(_FN), 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_HOME,
34 KC_P0, KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ),
35[_FN] = LAYOUT(
36 _______, _______, _______, _______, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
37 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______,
38 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
39 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
40 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
41};
42
43void encoder_update_user(uint8_t index, bool clockwise) {
44 if (clockwise) {
45 tap_code(KC_VOLU);
46 } else {
47 tap_code(KC_VOLD);
48 }
49} \ No newline at end of file
diff --git a/keyboards/handwired/swiftrax/pandamic/keymaps/via/keymap.c b/keyboards/handwired/swiftrax/pandamic/keymaps/via/keymap.c
new file mode 100644
index 000000000..38e455bec
--- /dev/null
+++ b/keyboards/handwired/swiftrax/pandamic/keymaps/via/keymap.c
@@ -0,0 +1,46 @@
1/* Copyright 2020 swiftrax
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
20[0] = LAYOUT(
21 KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC, 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_DEL, KC_MUTE,
22 KC_P7, KC_P8, KC_P9, KC_PPLS, 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_DEL,
23 KC_P4, KC_P5, KC_P6, 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_END,
24 KC_P1, KC_P2, KC_P3, KC_PENT, KC_LSFT, MO(1), 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_HOME,
25 KC_P0, KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ),
26[1] = LAYOUT(
27 _______, _______, _______, _______, KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
28 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______,
29 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
30 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
31 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
32[2] = LAYOUT(
33 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
34 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
35 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
36 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
37 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
38};
39
40void encoder_update_user(uint8_t index, bool clockwise) {
41 if (clockwise) {
42 tap_code(KC_VOLU);
43 } else {
44 tap_code(KC_VOLD);
45 }
46} \ No newline at end of file
diff --git a/keyboards/handwired/swiftrax/pandamic/keymaps/via/rules.mk b/keyboards/handwired/swiftrax/pandamic/keymaps/via/rules.mk
new file mode 100644
index 000000000..036bd6d1c
--- /dev/null
+++ b/keyboards/handwired/swiftrax/pandamic/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/handwired/swiftrax/pandamic/pandamic.c b/keyboards/handwired/swiftrax/pandamic/pandamic.c
new file mode 100644
index 000000000..c718a3373
--- /dev/null
+++ b/keyboards/handwired/swiftrax/pandamic/pandamic.c
@@ -0,0 +1,16 @@
1/* Copyright 2020 swiftrax
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 "pandamic.h"
diff --git a/keyboards/handwired/swiftrax/pandamic/pandamic.h b/keyboards/handwired/swiftrax/pandamic/pandamic.h
new file mode 100644
index 000000000..9fbb78427
--- /dev/null
+++ b/keyboards/handwired/swiftrax/pandamic/pandamic.h
@@ -0,0 +1,40 @@
1/* Copyright 2020 swiftrax
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#pragma once
17
18#include "quantum.h"
19
20// readability
21#define XXX KC_NO
22
23#define LAYOUT( \
24 K000, K100, K001, K101, K002, K102, K003, K103, K004, K104, K005, K105, K006, K106, K007, K107, K008, K108, K009, K109,\
25 K200, K300, K201, K301, K202, K302, K203, K303, K204, K304, K205, K305, K206, K306, K207, K307, K208, K308, K309,\
26 K400, K500, K401, K402, K502, K403, K503, K404, K504, K405, K505, K406, K506, K407, K507, K508, K509,\
27 K600, K700, K601, K701, K602, K702, K603, K703, K604, K704, K605, K705, K606, K706, K607, K707, K608, K609, K709,\
28 K800, K801, K802, K902, K803, K805, K807, K907, K808, K908, K809, K909 \
29) { \
30 {K000, K001, K002, K003, K004, K005, K006, K007, K008, K009},\
31 {K100, K101, K102, K103, K104, K105, K106, K107, K108, K109},\
32 {K200, K201, K202, K203, K204, K205, K206, K207, K208, XXX},\
33 {K300, K301, K302, K303, K304, K305, K306, K307, K308, K309},\
34 {K400, K401, K402, K403, K404, K405, K406, K407, XXX, XXX},\
35 {K500, XXX, K502, K503, K504, K505, K506, K507, K508, K509},\
36 {K600, K601, K602, K603, K604, K605, K606, K607, K608, K609},\
37 {K700, K701, K702, K703, K704, K705, K706, K707, XXX, K709},\
38 {K800, K801, K802, K803, XXX, K805, XXX, K807, K808, K809},\
39 { XXX, XXX, K902, XXX, XXX, XXX, XXX, K907, K908, K909} \
40}
diff --git a/keyboards/handwired/swiftrax/pandamic/readme.md b/keyboards/handwired/swiftrax/pandamic/readme.md
new file mode 100644
index 000000000..227c2ebe1
--- /dev/null
+++ b/keyboards/handwired/swiftrax/pandamic/readme.md
@@ -0,0 +1,13 @@
1# Pandamic
2
3A southpaw 65% mechanical keyboard with rotary encoder support
4
5* Keyboard Maintainer: [Swiftrax](https://github.com/swiftrax)
6* Hardware Supported: Pandamic
7* Hardware Availability: [GitHub.com](https://github.com/swiftrax/Pandamic)
8
9Make example for this keyboard (after setting up your build environment):
10
11 make handwired/swiftrax/pandamic:default
12
13See 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).
diff --git a/keyboards/handwired/swiftrax/pandamic/rules.mk b/keyboards/handwired/swiftrax/pandamic/rules.mk
new file mode 100644
index 000000000..f83e0a1fd
--- /dev/null
+++ b/keyboards/handwired/swiftrax/pandamic/rules.mk
@@ -0,0 +1,23 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
11MOUSEKEY_ENABLE = no # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
18NKRO_ENABLE = no # USB Nkey Rollover
19BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
20RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output
23ENCODER_ENABLE = yes # Rotary Encoder
diff --git a/keyboards/jj40/config.h b/keyboards/jj40/config.h
index 9a1eadb78..0d168f2c0 100644
--- a/keyboards/jj40/config.h
+++ b/keyboards/jj40/config.h
@@ -16,8 +16,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
16 16
17#include "config_common.h" 17#include "config_common.h"
18 18
19#define VENDOR_ID 0x20A0 19#define VENDOR_ID 0x4B50 // "KP"
20#define PRODUCT_ID 0x422D 20#define PRODUCT_ID 0x0040
21#define DEVICE_VER 0x0200 21#define DEVICE_VER 0x0200
22#define MANUFACTURER KPrepublic 22#define MANUFACTURER KPrepublic
23#define PRODUCT JJ40 23#define PRODUCT JJ40
diff --git a/keyboards/kbdfans/maja_soldered/config.h b/keyboards/kbdfans/maja_soldered/config.h
new file mode 100755
index 000000000..bc284893d
--- /dev/null
+++ b/keyboards/kbdfans/maja_soldered/config.h
@@ -0,0 +1,44 @@
1/* Copyright 2020 dztech kbdfans
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#pragma once
17
18#include "config_common.h"
19
20#define VENDOR_ID 0x4B42
21#define PRODUCT_ID 0x6069
22#define DEVICE_VER 0x0001
23#define MANUFACTURER KBDFANS
24#define PRODUCT MAJA_SOLDERED
25
26#define MATRIX_ROWS 5
27#define MATRIX_COLS 15
28#define MATRIX_ROW_PINS { F0, B6, D6, B4, D7 }
29#define MATRIX_COL_PINS { C6, C7, F7, F6, F5, F4, F1, B0, B1, B2, B3, B7, D2, D3, D5 }
30#define DIODE_DIRECTION COL2ROW
31
32#define DEBOUNCE 3
33
34/* number of backlight levels */
35#define BACKLIGHT_PIN B5
36#ifdef BACKLIGHT_PIN
37#define BACKLIGHT_LEVELS 3
38#endif
39
40/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
41#define LOCKING_SUPPORT_ENABLE
42
43/* Locking resynchronize hack */
44#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/kbdfans/maja_soldered/info.json b/keyboards/kbdfans/maja_soldered/info.json
new file mode 100644
index 000000000..b583282a9
--- /dev/null
+++ b/keyboards/kbdfans/maja_soldered/info.json
@@ -0,0 +1,81 @@
1{
2 "keyboard_name": "MAJA_SOLDERED",
3 "url": "",
4 "maintainer": "DZTECH",
5 "width": 18.75,
6 "height": 5.5,
7 "layouts": {
8 "LAYOUT": {
9 "layout": [
10 {"x": 0.75, "y": 0.25},
11 {"x": 1.75, "y": 0.25},
12 {"x": 2.75, "y": 0},
13 {"x": 3.75, "y": 0.25},
14 {"x": 4.75, "y": 0.25},
15 {"x": 5.75, "y": 0.25},
16 {"x": 6.75, "y": 0.25},
17 {"x": 8.75, "y": 0.25},
18 {"x": 9.75, "y": 0.25},
19 {"x": 10.75, "y": 0.25},
20 {"x": 11.75, "y": 0.25},
21 {"x": 12.75, "y": 0},
22 {"x": 13.75, "y": 0.25},
23 {"x": 14.75, "y": 0.25},
24 {"x": 15.75, "y": 0.25},
25 {"x": 17.75, "y": 0.25},
26 {"x": 0.5, "y": 1.25, "w": 1.5},
27 {"x": 2, "y": 1.25},
28 {"x": 3, "y": 1.25},
29 {"x": 4, "y": 1.25},
30 {"x": 5, "y": 1.25},
31 {"x": 6, "y": 1.25},
32 {"x": 8.5, "y": 1.25},
33 {"x": 9.5, "y": 1.25},
34 {"x": 10.5, "y": 1.25},
35 {"x": 11.5, "y": 1.25},
36 {"x": 12.5, "y": 1.25},
37 {"x": 13.5, "y": 1.25},
38 {"x": 14.5, "y": 1.25},
39 {"x": 15.5, "y": 1.25, "w": 1.5},
40 {"x": 17.75, "y": 1.25},
41 {"x": 0.25, "y": 2.25, "w": 1.75},
42 {"x": 2, "y": 2.25},
43 {"x": 3, "y": 2.25},
44 {"x": 4, "y": 2.25},
45 {"x": 5, "y": 2.25},
46 {"x": 6, "y": 2.25},
47 {"x": 9, "y": 2.25},
48 {"x": 10, "y": 2.25},
49 {"x": 11, "y": 2.25},
50 {"x": 12, "y": 2.25},
51 {"x": 13, "y": 2.25},
52 {"x": 14, "y": 2.25},
53 {"x": 15, "y": 2.25, "w": 2.25},
54 {"x": 17.75, "y": 2.25},
55 {"x": 0, "y": 3.25, "w": 2.25},
56 {"x": 2.25, "y": 3.25},
57 {"x": 3.25, "y": 3.25},
58 {"x": 4.25, "y": 3.25},
59 {"x": 5.25, "y": 3.25},
60 {"x": 6.25, "y": 3.25},
61 {"x": 8.25, "y": 3.25},
62 {"x": 9.25, "y": 3.25},
63 {"x": 10.25, "y": 3.25},
64 {"x": 11.25, "y": 3.25},
65 {"x": 12.25, "y": 3.25},
66 {"x": 13.25, "y": 3.25},
67 {"x": 14.25, "y": 3.25, "w": 2.25},
68 {"x": 16.75, "y": 3.5},
69 {"x": 0, "y": 4.25, "w": 1.5},
70 {"x": 3, "y": 4.25, "w": 1.5},
71 {"x": 4.5, "y": 4.25, "w": 2},
72 {"x": 6.5, "y": 4.25, "w": 1.25},
73 {"x": 8.25, "y": 4.25, "w": 2.75},
74 {"x": 11, "y": 4.25, "w": 1.5},
75 {"x": 15.75, "y": 4.5},
76 {"x": 16.75, "y": 4.5},
77 {"x": 17.75, "y": 4.5}
78 ]
79 }
80 }
81}
diff --git a/keyboards/kbdfans/maja_soldered/keymaps/default/keymap.c b/keyboards/kbdfans/maja_soldered/keymaps/default/keymap.c
new file mode 100755
index 000000000..a86004ef7
--- /dev/null
+++ b/keyboards/kbdfans/maja_soldered/keymaps/default/keymap.c
@@ -0,0 +1,43 @@
1/* Copyright 2020 dztech kbdfans
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_GESC, 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_DEL, KC_HOME,
21 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_BSLASH, KC_PGUP,
22 CTL_T(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,
23 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(1), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
24 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
25 [1] = LAYOUT( /* FN */
26 KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET,KC_TRNS,KC_HOME,
27 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI,RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP,
28 CTL_T(KC_CAPS),RGB_SPI, RGB_SPD, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, KC_PGDN,
29 KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
31 [2] = LAYOUT( /* FN */
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, KC_TRNS,KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
34 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
35 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
37 [3] = LAYOUT( /* FN */
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,
39 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
40 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
41 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
42 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
43 };
diff --git a/keyboards/kbdfans/maja_soldered/keymaps/via/keymap.c b/keyboards/kbdfans/maja_soldered/keymaps/via/keymap.c
new file mode 100755
index 000000000..cf64bec4c
--- /dev/null
+++ b/keyboards/kbdfans/maja_soldered/keymaps/via/keymap.c
@@ -0,0 +1,43 @@
1/* Copyright 2020 dztech kbdfans
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_GESC, 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_DEL, KC_HOME,
21 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_BSLASH, KC_PGUP,
22 CTL_T(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,
23 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(1), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
24 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
25 [1] = LAYOUT( /* FN */
26 KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RESET,KC_TRNS,KC_HOME,
27 KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI,RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP,
28 CTL_T(KC_CAPS),RGB_SPI, RGB_SPD, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, KC_PGDN,
29 KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
31 [2] = LAYOUT(
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, KC_TRNS,KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
34 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
35 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
37 [3] = LAYOUT(
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,
39 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
40 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
41 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
42 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
43 };
diff --git a/keyboards/kbdfans/maja_soldered/keymaps/via/rules.mk b/keyboards/kbdfans/maja_soldered/keymaps/via/rules.mk
new file mode 100755
index 000000000..36b7ba9cb
--- /dev/null
+++ b/keyboards/kbdfans/maja_soldered/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
1VIA_ENABLE = yes
2LTO_ENABLE = yes
diff --git a/keyboards/kbdfans/maja_soldered/maja_soldered.c b/keyboards/kbdfans/maja_soldered/maja_soldered.c
new file mode 100755
index 000000000..1f0f48c4c
--- /dev/null
+++ b/keyboards/kbdfans/maja_soldered/maja_soldered.c
@@ -0,0 +1,29 @@
1/* Copyright 2020 dztech kbdfans
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 "maja_soldered.h"
17
18void matrix_init_kb(void) {
19 setPinOutput(D4);
20 matrix_init_user();
21}
22
23bool led_update_kb(led_t led_state) {
24 bool res = led_update_user(led_state);
25 if(res) {
26 writePin(D4, !led_state.caps_lock);
27 }
28 return res;
29}
diff --git a/keyboards/kbdfans/maja_soldered/maja_soldered.h b/keyboards/kbdfans/maja_soldered/maja_soldered.h
new file mode 100755
index 000000000..4834c2b74
--- /dev/null
+++ b/keyboards/kbdfans/maja_soldered/maja_soldered.h
@@ -0,0 +1,19 @@
1#pragma once
2
3#include "quantum.h"
4
5#define XXX KC_NO
6
7#define LAYOUT( \
8 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K3E, K0E, \
9 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
10 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
11 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
12 K40, K42, K43, K45, K47, K49, K4C, K4D, K4E \
13) { \
14 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
15 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
16 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D, K2E }, \
17 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
18 { K40, XXX, K42, K43, XXX, K45, XXX, K47, XXX, K49, XXX, XXX, K4C, K4D, K4E } \
19}
diff --git a/keyboards/kbdfans/maja_soldered/readme.md b/keyboards/kbdfans/maja_soldered/readme.md
new file mode 100755
index 000000000..f19c1d740
--- /dev/null
+++ b/keyboards/kbdfans/maja_soldered/readme.md
@@ -0,0 +1,14 @@
1# MAJA_SOLDERED
2
3![MAJA_SOLDERED](https://i.ibb.co/4Kq0wfp/20200816100310.png)
4![MAJA_SOLDERED](https://i.ibb.co/3vJM805/20200816100345.png)
5
6* Keyboard Maintainer: [DZTECH](https://github.com/moyi4681)
7* Hardware Supported: MAJA_SOLDERED
8* Hardware Availability: [KBDFans](https://kbdfans.cn/)
9
10Make example for this keyboard (after setting up your build environment):
11
12 make kbdfans/maja_soldered:default
13
14See 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).
diff --git a/keyboards/kbdfans/maja_soldered/rules.mk b/keyboards/kbdfans/maja_soldered/rules.mk
new file mode 100755
index 000000000..6cd4d9260
--- /dev/null
+++ b/keyboards/kbdfans/maja_soldered/rules.mk
@@ -0,0 +1,22 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
18NKRO_ENABLE = yes # USB Nkey Rollover
19BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
20BLUETOOTH_ENABLE = no # Enable Bluetooth
21AUDIO_ENABLE = no # Audio output
22NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
diff --git a/keyboards/lazydesigners/bolt/via/keymap.c b/keyboards/lazydesigners/bolt/via/keymap.c
new file mode 100644
index 000000000..a977f9c38
--- /dev/null
+++ b/keyboards/lazydesigners/bolt/via/keymap.c
@@ -0,0 +1,43 @@
1/* Copyright 2020 LAZYDESIGNERS
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(
20 KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
21 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
22 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, MO(2),
23 KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
24 ),
25 [1] = LAYOUT(
26 RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
27 KC_INS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
28 KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
29 KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO
30 ),
31 [2] = LAYOUT(
32 RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
33 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
34 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
35 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
36 ),
37 [3] = LAYOUT(
38 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
39 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
40 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
41 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
42 ),
43};
diff --git a/keyboards/lazydesigners/bolt/via/rules.mk b/keyboards/lazydesigners/bolt/via/rules.mk
new file mode 100644
index 000000000..36b7ba9cb
--- /dev/null
+++ b/keyboards/lazydesigners/bolt/via/rules.mk
@@ -0,0 +1,2 @@
1VIA_ENABLE = yes
2LTO_ENABLE = yes
diff --git a/keyboards/maartenwut/solheim68/config.h b/keyboards/maartenwut/solheim68/config.h
new file mode 100644
index 000000000..cb2070e87
--- /dev/null
+++ b/keyboards/maartenwut/solheim68/config.h
@@ -0,0 +1,143 @@
1/* Copyright 2020 Dekkers
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 "config_common.h"
20
21/* USB Device descriptor parameter */
22#define VENDOR_ID 0x4705
23#define PRODUCT_ID 0x7BFF
24#define DEVICE_VER 0x0001
25#define MANUFACTURER Maartenwut
26#define PRODUCT Solheim68
27
28/* key matrix size */
29#define MATRIX_ROWS 5
30#define MATRIX_COLS 16
31
32/*
33 * Keyboard Matrix Assignments
34 *
35 * Change this to how you wired your keyboard
36 * COLS: AVR pins used for columns, left to right
37 * ROWS: AVR pins used for rows, top to bottom
38 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
39 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
40 *
41*/
42#define MATRIX_ROW_PINS {E6,B0,B1,B2,B3}
43#define MATRIX_COL_PINS {F0,F1,F4,F5,F6,F7,C7,C6,B6,B5,B4,D7,D6,D4,D5,D3}
44#define UNUSED_PINS {B7,D0,D1,D2}
45
46/* COL2ROW, ROW2COL*/
47#define DIODE_DIRECTION COL2ROW
48
49/*
50 * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
51 */
52// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
53
54// #define BACKLIGHT_PIN B7
55// #define BACKLIGHT_BREATHING
56// #define BACKLIGHT_LEVELS 3
57
58// #define RGB_DI_PIN E2
59// #ifdef RGB_DI_PIN
60// #define RGBLED_NUM 16
61// #define RGBLIGHT_HUE_STEP 8
62// #define RGBLIGHT_SAT_STEP 8
63// #define RGBLIGHT_VAL_STEP 8
64// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
65// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
66// /*== all animations enable ==*/
67// #define RGBLIGHT_ANIMATIONS
68// /*== or choose animations ==*/
69// #define RGBLIGHT_EFFECT_BREATHING
70// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
71// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
72// #define RGBLIGHT_EFFECT_SNAKE
73// #define RGBLIGHT_EFFECT_KNIGHT
74// #define RGBLIGHT_EFFECT_CHRISTMAS
75// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
76// #define RGBLIGHT_EFFECT_RGB_TEST
77// #define RGBLIGHT_EFFECT_ALTERNATING
78// /*== customize breathing effect ==*/
79// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
80// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
81// /*==== use exp() and sin() ====*/
82// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
83// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
84// #endif
85
86/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
87#define DEBOUNCE 5
88
89/* define if matrix has ghost (lacks anti-ghosting diodes) */
90//#define MATRIX_HAS_GHOST
91
92/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
93#define LOCKING_SUPPORT_ENABLE
94/* Locking resynchronize hack */
95#define LOCKING_RESYNC_ENABLE
96
97/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
98 * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
99 */
100// #define GRAVE_ESC_CTRL_OVERRIDE
101
102/*
103 * Force NKRO
104 *
105 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
106 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
107 * makefile for this to work.)
108 *
109 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
110 * until the next keyboard reset.
111 *
112 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
113 * fully operational during normal computer usage.
114 *
115 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
116 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
117 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
118 * power-up.
119 *
120 */
121//#define FORCE_NKRO
122
123/*
124 * Feature disable options
125 * These options are also useful to firmware size reduction.
126 */
127
128/* disable debug print */
129//#define NO_DEBUG
130
131/* disable print */
132//#define NO_PRINT
133
134/* disable action features */
135//#define NO_ACTION_LAYER
136//#define NO_ACTION_TAPPING
137//#define NO_ACTION_ONESHOT
138//#define NO_ACTION_MACRO
139//#define NO_ACTION_FUNCTION
140
141/* Bootmagic Lite key configuration */
142// #define BOOTMAGIC_LITE_ROW 0
143// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/maartenwut/solheim68/info.json b/keyboards/maartenwut/solheim68/info.json
new file mode 100644
index 000000000..14a4a36f5
--- /dev/null
+++ b/keyboards/maartenwut/solheim68/info.json
@@ -0,0 +1,397 @@
1{
2 "keyboard_name": "Solheim68",
3 "url": "https://github.com/Maartenwut/solheim68",
4 "maintainer": "maartenwut",
5 "width": 17.25,
6 "height": 5,
7 "layouts": {
8 "LAYOUT_all": {
9 "layout": [
10 {"x":0, "y":0},
11 {"x":1, "y":0},
12 {"x":2, "y":0},
13 {"x":3, "y":0},
14 {"x":4, "y":0},
15 {"x":5, "y":0},
16 {"x":6, "y":0},
17 {"x":7, "y":0},
18 {"x":8, "y":0},
19 {"x":9, "y":0},
20 {"x":10, "y":0},
21 {"x":11, "y":0},
22 {"x":12, "y":0},
23 {"x":13, "y":0},
24 {"x":14, "y":0},
25 {"x":15.25, "y":0},
26 {"x":16.25, "y":0},
27
28 {"x":0, "y":1, "w":1.5},
29 {"x":1.5, "y":1},
30 {"x":2.5, "y":1},
31 {"x":3.5, "y":1},
32 {"x":4.5, "y":1},
33 {"x":5.5, "y":1},
34 {"x":6.5, "y":1},
35 {"x":7.5, "y":1},
36 {"x":8.5, "y":1},
37 {"x":9.5, "y":1},
38 {"x":10.5, "y":1},
39 {"x":11.5, "y":1},
40 {"x":12.5, "y":1},
41 {"x":13.5, "y":1, "w":1.5},
42 {"x":15.25, "y":1},
43 {"x":16.25, "y":1},
44
45 {"x":0, "y":2, "w":1.75},
46 {"x":1.75, "y":2},
47 {"x":2.75, "y":2},
48 {"x":3.75, "y":2},
49 {"x":4.75, "y":2},
50 {"x":5.75, "y":2},
51 {"x":6.75, "y":2},
52 {"x":7.75, "y":2},
53 {"x":8.75, "y":2},
54 {"x":9.75, "y":2},
55 {"x":10.75, "y":2},
56 {"x":11.75, "y":2},
57 {"x":12.75, "y":2},
58 {"x":13.75, "y":2, "w":1.25},
59
60 {"x":0, "y":3, "w":1.25},
61 {"x":1.25, "y":3},
62 {"x":2.25, "y":3},
63 {"x":3.25, "y":3},
64 {"x":4.25, "y":3},
65 {"x":5.25, "y":3},
66 {"x":6.25, "y":3},
67 {"x":7.25, "y":3},
68 {"x":8.25, "y":3},
69 {"x":9.25, "y":3},
70 {"x":10.25, "y":3},
71 {"x":11.25, "y":3},
72 {"x":12.25, "y":3, "w":1.75},
73 {"x":14, "y":3},
74 {"x":15.25, "y":3},
75
76 {"x":0, "y":4, "w":1.25},
77 {"x":1.25, "y":4, "w":1.25},
78 {"x":2.5, "y":4, "w":1.25},
79 {"x":3.75, "y":4, "w":6.25},
80 {"x":10, "y":4, "w":1.25},
81 {"x":11.25, "y":4, "w":1.25},
82 {"x":12.5, "y":4, "w":1.25},
83 {"x":14.25, "y":4},
84 {"x":15.25, "y":4},
85 {"x":16.25, "y":4}
86 ]
87 },
88 "LAYOUT_68_ansi": {
89 "layout": [
90 {"x":0, "y":0},
91 {"x":1, "y":0},
92 {"x":2, "y":0},
93 {"x":3, "y":0},
94 {"x":4, "y":0},
95 {"x":5, "y":0},
96 {"x":6, "y":0},
97 {"x":7, "y":0},
98 {"x":8, "y":0},
99 {"x":9, "y":0},
100 {"x":10, "y":0},
101 {"x":11, "y":0},
102 {"x":12, "y":0},
103 {"x":13, "y":0, "w":2},
104 {"x":15.25, "y":0},
105 {"x":16.25, "y":0},
106
107 {"x":0, "y":1, "w":1.5},
108 {"x":1.5, "y":1},
109 {"x":2.5, "y":1},
110 {"x":3.5, "y":1},
111 {"x":4.5, "y":1},
112 {"x":5.5, "y":1},
113 {"x":6.5, "y":1},
114 {"x":7.5, "y":1},
115 {"x":8.5, "y":1},
116 {"x":9.5, "y":1},
117 {"x":10.5, "y":1},
118 {"x":11.5, "y":1},
119 {"x":12.5, "y":1},
120 {"x":13.5, "y":1, "w":1.5},
121 {"x":15.25, "y":1},
122 {"x":16.25, "y":1},
123
124 {"x":0, "y":2, "w":1.75},
125 {"x":1.75, "y":2},
126 {"x":2.75, "y":2},
127 {"x":3.75, "y":2},
128 {"x":4.75, "y":2},
129 {"x":5.75, "y":2},
130 {"x":6.75, "y":2},
131 {"x":7.75, "y":2},
132 {"x":8.75, "y":2},
133 {"x":9.75, "y":2},
134 {"x":10.75, "y":2},
135 {"x":11.75, "y":2},
136 {"x":12.75, "y":2, "w":2.25},
137
138 {"x":0, "y":3, "w":2.25},
139 {"x":2.25, "y":3},
140 {"x":3.25, "y":3},
141 {"x":4.25, "y":3},
142 {"x":5.25, "y":3},
143 {"x":6.25, "y":3},
144 {"x":7.25, "y":3},
145 {"x":8.25, "y":3},
146 {"x":9.25, "y":3},
147 {"x":10.25, "y":3},
148 {"x":11.25, "y":3},
149 {"x":12.25, "y":3, "w":2.75},
150 {"x":15.25, "y":3},
151
152 {"x":0, "y":4, "w":1.25},
153 {"x":1.25, "y":4, "w":1.25},
154 {"x":2.5, "y":4, "w":1.25},
155 {"x":3.75, "y":4, "w":6.25},
156 {"x":10, "y":4, "w":1.25},
157 {"x":11.25, "y":4, "w":1.25},
158 {"x":12.5, "y":4, "w":1.25},
159 {"x":14.25, "y":4},
160 {"x":15.25, "y":4},
161 {"x":16.25, "y":4}
162 ]
163 },
164 "LAYOUT_68_iso": {
165 "layout": [
166 {"x":0, "y":0},
167 {"x":1, "y":0},
168 {"x":2, "y":0},
169 {"x":3, "y":0},
170 {"x":4, "y":0},
171 {"x":5, "y":0},
172 {"x":6, "y":0},
173 {"x":7, "y":0},
174 {"x":8, "y":0},
175 {"x":9, "y":0},
176 {"x":10, "y":0},
177 {"x":11, "y":0},
178 {"x":12, "y":0},
179 {"x":13, "y":0, "w":2},
180 {"x":15.25, "y":0},
181 {"x":16.25, "y":0},
182
183 {"x":0, "y":1, "w":1.5},
184 {"x":1.5, "y":1},
185 {"x":2.5, "y":1},
186 {"x":3.5, "y":1},
187 {"x":4.5, "y":1},
188 {"x":5.5, "y":1},
189 {"x":6.5, "y":1},
190 {"x":7.5, "y":1},
191 {"x":8.5, "y":1},
192 {"x":9.5, "y":1},
193 {"x":10.5, "y":1},
194 {"x":11.5, "y":1},
195 {"x":12.5, "y":1},
196 {"x":15.25, "y":1},
197 {"x":16.25, "y":1},
198
199 {"x":0, "y":2, "w":1.75},
200 {"x":1.75, "y":2},
201 {"x":2.75, "y":2},
202 {"x":3.75, "y":2},
203 {"x":4.75, "y":2},
204 {"x":5.75, "y":2},
205 {"x":6.75, "y":2},
206 {"x":7.75, "y":2},
207 {"x":8.75, "y":2},
208 {"x":9.75, "y":2},
209 {"x":10.75, "y":2},
210 {"x":11.75, "y":2},
211 {"x":12.75, "y":2},
212 {"x":13.75, "y":1, "w":1.25, "h":2},
213
214 {"x":0, "y":3, "w":1.25},
215 {"x":1.25, "y":3},
216 {"x":2.25, "y":3},
217 {"x":3.25, "y":3},
218 {"x":4.25, "y":3},
219 {"x":5.25, "y":3},
220 {"x":6.25, "y":3},
221 {"x":7.25, "y":3},
222 {"x":8.25, "y":3},
223 {"x":9.25, "y":3},
224 {"x":10.25, "y":3},
225 {"x":11.25, "y":3},
226 {"x":12.25, "y":3, "w":2.75},
227 {"x":15.25, "y":3},
228
229 {"x":0, "y":4, "w":1.25},
230 {"x":1.25, "y":4, "w":1.25},
231 {"x":2.5, "y":4, "w":1.25},
232 {"x":3.75, "y":4, "w":6.25},
233 {"x":10, "y":4, "w":1.25},
234 {"x":11.25, "y":4, "w":1.25},
235 {"x":12.5, "y":4, "w":1.25},
236 {"x":14.25, "y":4},
237 {"x":15.25, "y":4},
238 {"x":16.25, "y":4}
239 ]
240 },
241 "LAYOUT_68_ansi_split_rshift": {
242 "layout": [
243 {"x":0, "y":0},
244 {"x":1, "y":0},
245 {"x":2, "y":0},
246 {"x":3, "y":0},
247 {"x":4, "y":0},
248 {"x":5, "y":0},
249 {"x":6, "y":0},
250 {"x":7, "y":0},
251 {"x":8, "y":0},
252 {"x":9, "y":0},
253 {"x":10, "y":0},
254 {"x":11, "y":0},
255 {"x":12, "y":0},
256 {"x":13, "y":0, "w":2},
257 {"x":15.25, "y":0},
258 {"x":16.25, "y":0},
259
260 {"x":0, "y":1, "w":1.5},
261 {"x":1.5, "y":1},
262 {"x":2.5, "y":1},
263 {"x":3.5, "y":1},
264 {"x":4.5, "y":1},
265 {"x":5.5, "y":1},
266 {"x":6.5, "y":1},
267 {"x":7.5, "y":1},
268 {"x":8.5, "y":1},
269 {"x":9.5, "y":1},
270 {"x":10.5, "y":1},
271 {"x":11.5, "y":1},
272 {"x":12.5, "y":1},
273 {"x":13.5, "y":1, "w":1.5},
274 {"x":15.25, "y":1},
275 {"x":16.25, "y":1},
276
277 {"x":0, "y":2, "w":1.75},
278 {"x":1.75, "y":2},
279 {"x":2.75, "y":2},
280 {"x":3.75, "y":2},
281 {"x":4.75, "y":2},
282 {"x":5.75, "y":2},
283 {"x":6.75, "y":2},
284 {"x":7.75, "y":2},
285 {"x":8.75, "y":2},
286 {"x":9.75, "y":2},
287 {"x":10.75, "y":2},
288 {"x":11.75, "y":2},
289 {"x":12.75, "y":2, "w":2.25},
290
291 {"x":0, "y":3, "w":2.25},
292 {"x":2.25, "y":3},
293 {"x":3.25, "y":3},
294 {"x":4.25, "y":3},
295 {"x":5.25, "y":3},
296 {"x":6.25, "y":3},
297 {"x":7.25, "y":3},
298 {"x":8.25, "y":3},
299 {"x":9.25, "y":3},
300 {"x":10.25, "y":3},
301 {"x":11.25, "y":3},
302 {"x":12.25, "y":3, "w":1.75},
303 {"x":14, "y":3},
304 {"x":15.25, "y":3},
305
306 {"x":0, "y":4, "w":1.25},
307 {"x":1.25, "y":4, "w":1.25},
308 {"x":2.5, "y":4, "w":1.25},
309 {"x":3.75, "y":4, "w":6.25},
310 {"x":10, "y":4, "w":1.25},
311 {"x":11.25, "y":4, "w":1.25},
312 {"x":12.5, "y":4, "w":1.25},
313 {"x":14.25, "y":4},
314 {"x":15.25, "y":4},
315 {"x":16.25, "y":4}
316 ]
317 },
318 "LAYOUT_68_iso_split_rshift": {
319 "layout": [
320 {"x":0, "y":0},
321 {"x":1, "y":0},
322 {"x":2, "y":0},
323 {"x":3, "y":0},
324 {"x":4, "y":0},
325 {"x":5, "y":0},
326 {"x":6, "y":0},
327 {"x":7, "y":0},
328 {"x":8, "y":0},
329 {"x":9, "y":0},
330 {"x":10, "y":0},
331 {"x":11, "y":0},
332 {"x":12, "y":0},
333 {"x":13, "y":0, "w":2},
334 {"x":15.25, "y":0},
335 {"x":16.25, "y":0},
336
337 {"x":0, "y":1, "w":1.5},
338 {"x":1.5, "y":1},
339 {"x":2.5, "y":1},
340 {"x":3.5, "y":1},
341 {"x":4.5, "y":1},
342 {"x":5.5, "y":1},
343 {"x":6.5, "y":1},
344 {"x":7.5, "y":1},
345 {"x":8.5, "y":1},
346 {"x":9.5, "y":1},
347 {"x":10.5, "y":1},
348 {"x":11.5, "y":1},
349 {"x":12.5, "y":1},
350 {"x":15.25, "y":1},
351 {"x":16.25, "y":1},
352
353 {"x":0, "y":2, "w":1.75},
354 {"x":1.75, "y":2},
355 {"x":2.75, "y":2},
356 {"x":3.75, "y":2},
357 {"x":4.75, "y":2},
358 {"x":5.75, "y":2},
359 {"x":6.75, "y":2},
360 {"x":7.75, "y":2},
361 {"x":8.75, "y":2},
362 {"x":9.75, "y":2},
363 {"x":10.75, "y":2},
364 {"x":11.75, "y":2},
365 {"x":12.75, "y":2},
366 {"x":13.75, "y":1, "w":1.25, "h":2},
367
368 {"x":0, "y":3, "w":1.25},
369 {"x":1.25, "y":3},
370 {"x":2.25, "y":3},
371 {"x":3.25, "y":3},
372 {"x":4.25, "y":3},
373 {"x":5.25, "y":3},
374 {"x":6.25, "y":3},
375 {"x":7.25, "y":3},
376 {"x":8.25, "y":3},
377 {"x":9.25, "y":3},
378 {"x":10.25, "y":3},
379 {"x":11.25, "y":3},
380 {"x":12.25, "y":3, "w":1.75},
381 {"x":14, "y":3},
382 {"x":15.25, "y":3},
383
384 {"x":0, "y":4, "w":1.25},
385 {"x":1.25, "y":4, "w":1.25},
386 {"x":2.5, "y":4, "w":1.25},
387 {"x":3.75, "y":4, "w":6.25},
388 {"x":10, "y":4, "w":1.25},
389 {"x":11.25, "y":4, "w":1.25},
390 {"x":12.5, "y":4, "w":1.25},
391 {"x":14.25, "y":4},
392 {"x":15.25, "y":4},
393 {"x":16.25, "y":4}
394 ]
395 }
396 }
397} \ No newline at end of file
diff --git a/keyboards/maartenwut/solheim68/keymaps/default/keymap.c b/keyboards/maartenwut/solheim68/keymaps/default/keymap.c
new file mode 100644
index 000000000..728e8019a
--- /dev/null
+++ b/keyboards/maartenwut/solheim68/keymaps/default/keymap.c
@@ -0,0 +1,31 @@
1/* Copyright 2020 Dekkers
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_all(
20 KC_GESC, 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_BSLS, KC_BSPC, KC_MPLY, KC_HOME,
21 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_DEL, KC_END,
22 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_BSLS, KC_ENT,
23 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, MO(1), KC_UP,
24 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
25 [1] = LAYOUT_all(
26 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_PSCR, KC_PGUP,
27 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN,
28 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
29 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______,
30 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
31};
diff --git a/keyboards/maartenwut/solheim68/keymaps/default/readme.md b/keyboards/maartenwut/solheim68/keymaps/default/readme.md
new file mode 100644
index 000000000..6e9745403
--- /dev/null
+++ b/keyboards/maartenwut/solheim68/keymaps/default/readme.md
@@ -0,0 +1 @@
This is the default keymap for the Solheim68. \ No newline at end of file
diff --git a/keyboards/maartenwut/solheim68/readme.md b/keyboards/maartenwut/solheim68/readme.md
new file mode 100644
index 000000000..1cf0ee946
--- /dev/null
+++ b/keyboards/maartenwut/solheim68/readme.md
@@ -0,0 +1,17 @@
1# Solheim68
2
3A replacement PCB for the VA68M (v2) with Mini-USB.
4
5* Keyboard Maintainer: [Maartenwut](https://github.com/Maartenwut)
6* Hardware Supported: Solheim68 PCB
7* Hardware Availability: [Open source on GitHub](https://github.com/Maartenwut/solheim68)
8
9Make example for this keyboard (after setting up your build environment):
10
11 make maartenwut/solheim68:default
12
13Flashing example for this keyboard:
14
15 make maartenwut/solheim68:default:flash
16
17See 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).
diff --git a/keyboards/maartenwut/solheim68/rules.mk b/keyboards/maartenwut/solheim68/rules.mk
new file mode 100644
index 000000000..a90eef1fc
--- /dev/null
+++ b/keyboards/maartenwut/solheim68/rules.mk
@@ -0,0 +1,22 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
11MOUSEKEY_ENABLE = no # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
18NKRO_ENABLE = no # USB Nkey Rollover
19BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
20RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/maartenwut/solheim68/solheim68.c b/keyboards/maartenwut/solheim68/solheim68.c
new file mode 100644
index 000000000..27f90f4e8
--- /dev/null
+++ b/keyboards/maartenwut/solheim68/solheim68.c
@@ -0,0 +1,16 @@
1/* Copyright 2020 Dekkers
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 "solheim68.h"
diff --git a/keyboards/maartenwut/solheim68/solheim68.h b/keyboards/maartenwut/solheim68/solheim68.h
new file mode 100644
index 000000000..2f6339bd1
--- /dev/null
+++ b/keyboards/maartenwut/solheim68/solheim68.h
@@ -0,0 +1,102 @@
1/* Copyright 2020 Dekkers
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#pragma once
17
18#include "quantum.h"
19#define XXX KC_NO
20
21/* This a shortcut to help you visually see your layout.
22 *
23 * The first section contains all of the arguments representing the physical
24 * layout of the board and position of the keys.
25 *
26 * The second converts the arguments into a two-dimensional array which
27 * represents the switch matrix.
28 */
29#define LAYOUT_all( \
30 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k2e, k0d, k0e, k0f, \
31 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, \
32 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
33 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
34 k40, k41, k42, k46, k4a, k4b, k4c, k4d, k4e, k4f \
35) \
36{ \
37 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f }, \
38 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f }, \
39 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, XXX }, \
40 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, XXX }, \
41 { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e, k4f } \
42}
43
44#define LAYOUT_68_ansi( \
45 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, \
46 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, \
47 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
48 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3e, \
49 k40, k41, k42, k46, k4a, k4b, k4c, k4d, k4e, k4f \
50) \
51{ \
52 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f }, \
53 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f }, \
54 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX, XXX }, \
55 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX, k3e, XXX }, \
56 { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e, k4f } \
57}
58
59#define LAYOUT_68_iso( \
60 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, \
61 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, k1f, \
62 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
63 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3e, \
64 k40, k41, k42, k46, k4a, k4b, k4c, k4d, k4e, k4f \
65) \
66{ \
67 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f }, \
68 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, k1e, k1f }, \
69 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX, XXX }, \
70 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, XXX, k3e, XXX }, \
71 { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e, k4f } \
72}
73
74#define LAYOUT_68_ansi_split_rshift( \
75 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, \
76 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, \
77 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
78 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
79 k40, k41, k42, k46, k4a, k4b, k4c, k4d, k4e, k4f \
80) \
81{ \
82 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f }, \
83 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f }, \
84 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, XXX, XXX }, \
85 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, XXX }, \
86 { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e, k4f } \
87}
88
89#define LAYOUT_68_iso_split_rshift( \
90 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f, \
91 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, k1f, \
92 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, \
93 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
94 k40, k41, k42, k46, k4a, k4b, k4c, k4d, k4e, k4f \
95) \
96{ \
97 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, k0f }, \
98 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, k1e, k1f }, \
99 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, XXX, XXX }, \
100 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, XXX }, \
101 { k40, k41, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e, k4f } \
102}
diff --git a/keyboards/marksard/leftover30/config.h b/keyboards/marksard/leftover30/config.h
new file mode 100644
index 000000000..42c6c6287
--- /dev/null
+++ b/keyboards/marksard/leftover30/config.h
@@ -0,0 +1,138 @@
1/*
2Copyright 2020 marksard
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#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0xFEED
24#define PRODUCT_ID 0xDFA8
25#define DEVICE_VER 0x0001
26#define MANUFACTURER marksard
27#define PRODUCT leftover30
28
29/* Encoder */
30#define ENCODERS_PAD_A { F4 }
31#define ENCODERS_PAD_B { F5 }
32// #define ENCODER_DIRECTION_FLIP
33
34/* key matrix size */
35#define MATRIX_ROWS 8
36#define MATRIX_COLS 5
37
38/*
39 * Keyboard Matrix Assignments
40 *
41 * Change this to how you wired your keyboard
42 * COLS: AVR pins used for columns, left to right
43 * ROWS: AVR pins used for rows, top to bottom
44 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
45 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
46 *
47 */
48#define MATRIX_ROW_PINS { B6, B2, F7, F6, B3, B1, D4, D0 }
49#define MATRIX_COL_PINS { B5, B4, E6, D7, C6 }
50#define UNUSED_PINS
51
52/* COL2ROW, ROW2COL*/
53#define DIODE_DIRECTION COL2ROW
54
55#define RGB_DI_PIN D3
56#ifdef RGB_DI_PIN
57 #define RGBLED_NUM 6
58 #define RGBLIGHT_HUE_STEP 8
59 #define RGBLIGHT_SAT_STEP 8
60 #define RGBLIGHT_VAL_STEP 8
61 #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
62 #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
63/*== all animations enable ==*/
64 #define RGBLIGHT_ANIMATIONS
65/*== or choose animations ==*/
66// #define RGBLIGHT_EFFECT_BREATHING
67// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
68// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
69// #define RGBLIGHT_EFFECT_SNAKE
70// #define RGBLIGHT_EFFECT_KNIGHT
71// #define RGBLIGHT_EFFECT_CHRISTMAS
72// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
73// #define RGBLIGHT_EFFECT_RGB_TEST
74// #define RGBLIGHT_EFFECT_ALTERNATING
75/*== customize breathing effect ==*/
76 /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
77 #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
78 /*==== use exp() and sin() ====*/
79 #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
80 #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
81#endif
82
83/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
84#define DEBOUNCE 5
85
86/* define if matrix has ghost (lacks anti-ghosting diodes) */
87//#define MATRIX_HAS_GHOST
88
89/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
90#define LOCKING_SUPPORT_ENABLE
91/* Locking resynchronize hack */
92#define LOCKING_RESYNC_ENABLE
93
94/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
95 * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
96 */
97// #define GRAVE_ESC_CTRL_OVERRIDE
98
99/*
100 * Force NKRO
101 *
102 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
103 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
104 * makefile for this to work.)
105 *
106 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
107 * until the next keyboard reset.
108 *
109 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
110 * fully operational during normal computer usage.
111 *
112 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
113 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
114 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
115 * power-up.
116 *
117 */
118//#define FORCE_NKRO
119
120/*
121 * Feature disable options
122 * These options are also useful to firmware size reduction.
123 */
124
125/* disable debug print */
126//#define NO_DEBUG
127
128/* disable print */
129//#define NO_PRINT
130
131/* disable action features */
132//#define NO_ACTION_LAYER
133//#define NO_ACTION_TAPPING
134//#define NO_ACTION_ONESHOT
135
136/* disable these deprecated features by default */
137#define NO_ACTION_MACRO
138#define NO_ACTION_FUNCTION
diff --git a/keyboards/marksard/leftover30/info.json b/keyboards/marksard/leftover30/info.json
new file mode 100644
index 000000000..700d08d9d
--- /dev/null
+++ b/keyboards/marksard/leftover30/info.json
@@ -0,0 +1,198 @@
1{
2 "keyboard_name": "Leftover30",
3 "url": "https://github.com/marksard/Keyboards",
4 "maintainer": "marksard",
5 "width": 11.5,
6 "height": 4,
7 "layouts": {
8 "LAYOUT": {
9 "layout": [
10 {
11 "label": "Q",
12 "x": 0.5,
13 "y": 0
14 },
15 {
16 "label": "W",
17 "x": 1.5,
18 "y": 0
19 },
20 {
21 "label": "E",
22 "x": 2.5,
23 "y": 0
24 },
25 {
26 "label": "R",
27 "x": 3.5,
28 "y": 0
29 },
30 {
31 "label": "T",
32 "x": 4.5,
33 "y": 0
34 },
35 {
36 "label": "Y",
37 "x": 5.5,
38 "y": 0
39 },
40 {
41 "label": "U",
42 "x": 6.5,
43 "y": 0
44 },
45 {
46 "label": "I",
47 "x": 7.5,
48 "y": 0
49 },
50 {
51 "label": "O",
52 "x": 8.5,
53 "y": 0
54 },
55 {
56 "label": "P",
57 "x": 9.5,
58 "y": 0
59 },
60 {
61 "label": "BS",
62 "x": 10.5,
63 "y": 0
64 },
65 {
66 "label": "A",
67 "x": 0.75,
68 "y": 1
69 },
70 {
71 "label": "S",
72 "x": 1.75,
73 "y": 1
74 },
75 {
76 "label": "D",
77 "x": 2.75,
78 "y": 1
79 },
80 {
81 "label": "F",
82 "x": 3.75,
83 "y": 1
84 },
85 {
86 "label": "G",
87 "x": 4.75,
88 "y": 1
89 },
90 {
91 "label": "H",
92 "x": 5.75,
93 "y": 1
94 },
95 {
96 "label": "J",
97 "x": 6.75,
98 "y": 1
99 },
100 {
101 "label": "K",
102 "x": 7.75,
103 "y": 1
104 },
105 {
106 "label": "L",
107 "x": 8.75,
108 "y": 1
109 },
110 {
111 "label": "Enter",
112 "x": 9.75,
113 "y": 1,
114 "w": 1.75
115 },
116 {
117 "label": "Z",
118 "x": 1.25,
119 "y": 2
120 },
121 {
122 "label": "X",
123 "x": 2.25,
124 "y": 2
125 },
126 {
127 "label": "C",
128 "x": 3.25,
129 "y": 2
130 },
131 {
132 "label": "V",
133 "x": 4.25,
134 "y": 2
135 },
136 {
137 "label": "B",
138 "x": 5.25,
139 "y": 2
140 },
141 {
142 "label": "N",
143 "x": 6.25,
144 "y": 2
145 },
146 {
147 "label": "M",
148 "x": 7.25,
149 "y": 2
150 },
151 {
152 "label": "<",
153 "x": 8.25,
154 "y": 2
155 },
156 {
157 "label": ">",
158 "x": 9.25,
159 "y": 2
160 },
161 {
162 "label": "?",
163 "x": 10.25,
164 "y": 2,
165 "w": 1.25
166 },
167 {
168 "label": "",
169 "x": 0,
170 "y": 3
171 },
172 {
173 "label": "Alt",
174 "x": 1.5,
175 "y": 3,
176 "w": 1.25
177 },
178 {
179 "label": "",
180 "x": 2.75,
181 "y": 3,
182 "w": 6.25
183 },
184 {
185 "label": "Fn1",
186 "x": 9,
187 "y": 3
188 },
189 {
190 "label": "Ctrl",
191 "x": 10,
192 "y": 3,
193 "w": 1.5
194 }
195 ]
196 }
197 }
198}
diff --git a/keyboards/marksard/leftover30/keymaps/default/config.h b/keyboards/marksard/leftover30/keymaps/default/config.h
new file mode 100644
index 000000000..8bffbbb3b
--- /dev/null
+++ b/keyboards/marksard/leftover30/keymaps/default/config.h
@@ -0,0 +1,24 @@
1/* Copyright 2020 marksard
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// place overrides here
20#define TAPPING_TERM 200
21#define IGNORE_MOD_TAP_INTERRUPT
22
23#define TAPPING_LAYER_TERM 150 // Custom LT Tapping term
24#define TAPPING_TERM_PER_KEY
diff --git a/keyboards/marksard/leftover30/keymaps/default/keymap.c b/keyboards/marksard/leftover30/keymaps/default/keymap.c
new file mode 100644
index 000000000..60751cd1c
--- /dev/null
+++ b/keyboards/marksard/leftover30/keymaps/default/keymap.c
@@ -0,0 +1,162 @@
1/* Copyright 2020 marksard
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
18enum layer_number {
19 _BASE,
20 _LOWER,
21 _RAISE,
22 _ADJUST,
23};
24
25enum custom_keycodes {
26 RGBRST = SAFE_RANGE,
27 LOWER,
28 RAISE,
29 KANJI,
30};
31
32// #define KC_ESAD LT(_ADJUST, KC_ESC)
33// #define KC_BSLO LT(_LOWER, KC_BSPC)
34#define KC_LOWR MO(_LOWER)
35#define KC_SPRA LT(_RAISE, KC_SPC)
36#define KC_AJST MO(_ADJUST)
37
38#define KC_Q_AL LALT_T(KC_Q)
39#define KC_A_CT LCTL_T(KC_A)
40#define KC_Z_SF LSFT_T(KC_Z)
41#define KC_X_AL LALT_T(KC_X)
42#define KC_ENSF RSFT_T(KC_ENT)
43#define KC_SLSF RSFT_T(KC_SLSH)
44
45#define KC_F1AL LALT_T(KC_F1)
46#define KC_F6CT LCTL_T(KC_F6)
47#define KC_11SF LSFT_T(KC_F11)
48#define KC_12AL LALT_T(KC_F12)
49#define KC_QUSF RCTL_T(KC_QUOT)
50#define KC_ROSF RSFT_T(KC_RO)
51
52const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
53 [_BASE] = LAYOUT_all(
54 //,-----------------------------------------------------------------------------------------------------------.
55 KC_Q_AL, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
56 //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
57 KC_A_CT, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENSF,
58 //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
59 KC_Z_SF, KC_X_AL, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSF,
60 //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
61 KC_LCTL, KC_LGUI, KC_SPRA, KC_LOWR, KC_RCTL
62 //`-----------------------------------------------------------------------------------------------------------'
63 ),
64
65 [_LOWER] = LAYOUT_all(
66 //,-----------------------------------------------------------------------------------------------------------.
67 KC_F1AL, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_JYEN, KC_LBRC, KC_RBRC, KC_BSLS,
68 //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
69 KC_F6CT, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUSF,
70 //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
71 KC_11SF, KC_12AL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_GRV, KC_RO, KC_SLSH, KC_ROSF,
72 //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
73 _______, _______, KC_AJST, _______, _______
74 //`-----------------------------------------------------------------------------------------------------------'
75 ),
76
77 [_RAISE] = LAYOUT_all(
78 //,-----------------------------------------------------------------------------------------------------------.
79 KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
80 //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
81 KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______,
82 //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
83 KC_LSFT, XXXXXXX, KC_ESC, KC_TAB, KANJI, KC_DEL, KC_COMM, KC_DOT, KC_BSLS, KC_ROSF,
84 //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
85 _______, _______, _______, KC_AJST, _______
86 //`-----------------------------------------------------------------------------------------------------------'
87 ),
88
89 [_ADJUST] = LAYOUT_all(
90 //,-----------------------------------------------------------------------------------------------------------.
91 RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, KC_PSCR,
92 //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
93 RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_NLCK,
94 //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
95 RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, KC_CAPS,
96 //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
97 _______, _______, _______, _______, KC_CAPS
98 //`-----------------------------------------------------------------------------------------------------------'
99 )
100};
101
102uint16_t get_tapping_term(uint16_t keycode) {
103 switch (keycode) {
104 case KC_SPRA:
105 return TAPPING_LAYER_TERM;
106 default:
107 return TAPPING_TERM;
108 }
109}
110
111bool process_record_user(uint16_t keycode, keyrecord_t *record) {
112
113 bool result = false;
114 switch (keycode) {
115 case KANJI:
116 if (record->event.pressed) {
117 register_code16(keymap_config.swap_lalt_lgui ? A(KC_GRV) : KC_LANG2);
118 } else {
119 unregister_code16(keymap_config.swap_lalt_lgui ? A(KC_GRV) : KC_LANG2);
120 }
121 break;
122#ifdef RGBLIGHT_ENABLE
123 case RGBRST:
124 if (record->event.pressed) {
125 eeconfig_update_rgblight_default();
126 rgblight_enable();
127 }
128 break;
129#endif
130 default:
131 result = true;
132 break;
133 }
134
135 return result;
136}
137
138void encoder_update_user(uint8_t index, bool clockwise) {
139 if (index == 0) {
140 if (IS_LAYER_ON(_ADJUST)) {
141 if (clockwise) {
142 rgblight_increase_hue_noeeprom();
143 } else {
144 rgblight_decrease_hue_noeeprom();
145 }
146 } else if (IS_LAYER_ON(_LOWER)) {
147 tap_code16((clockwise == true) ? LCTL(KC_Y) : LCTL(KC_Z));
148 } else if (IS_LAYER_ON(_RAISE)) {
149 tap_code16((clockwise == true) ? S(KC_DOWN) : S(KC_UP));
150 } else {
151 tap_code((clockwise == true) ? KC_WH_D : KC_WH_U);
152 }
153
154 }
155}
156
157// for exsample customize of LED inducator
158// bool led_update_user(led_t led_state) {
159// writePin(D2, IS_LAYER_ON(_LOWER));
160// writePin(D1, IS_LAYER_ON(_RAISE));
161// return false;
162// }
diff --git a/keyboards/marksard/leftover30/keymaps/default/readme.md b/keyboards/marksard/leftover30/keymaps/default/readme.md
new file mode 100644
index 000000000..05dcdc3d1
--- /dev/null
+++ b/keyboards/marksard/leftover30/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for leftover30
diff --git a/keyboards/marksard/leftover30/keymaps/default/rules.mk b/keyboards/marksard/leftover30/keymaps/default/rules.mk
new file mode 100644
index 000000000..5af1ba853
--- /dev/null
+++ b/keyboards/marksard/leftover30/keymaps/default/rules.mk
@@ -0,0 +1 @@
ENCODER_ENABLE = yes
diff --git a/keyboards/marksard/leftover30/leftover30.c b/keyboards/marksard/leftover30/leftover30.c
new file mode 100644
index 000000000..df8152144
--- /dev/null
+++ b/keyboards/marksard/leftover30/leftover30.c
@@ -0,0 +1,37 @@
1/* Copyright 2020 marksard
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 "leftover30.h"
18
19// Optional override functions below.
20// You can leave any or all of these undefined.
21// These are only required if you want to perform custom actions.
22
23void keyboard_pre_init_user(void) {
24 /* Set CAPSLOCK indicator pin as output */
25 setPinOutput(D1);
26 /* Set NUMLOCK indicator pin as output */
27 setPinOutput(D2);
28}
29
30bool led_update_kb(led_t led_state) {
31 bool res = led_update_user(led_state);
32 if(res) {
33 writePin(D2, led_state.num_lock);
34 writePin(D1, led_state.caps_lock);
35 }
36 return res;
37}
diff --git a/keyboards/marksard/leftover30/leftover30.h b/keyboards/marksard/leftover30/leftover30.h
new file mode 100644
index 000000000..901b9b570
--- /dev/null
+++ b/keyboards/marksard/leftover30/leftover30.h
@@ -0,0 +1,45 @@
1/* Copyright 2020 marksard
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 "quantum.h"
20
21/* This is a shortcut to help you visually see your layout.
22 *
23 * The first section contains all of the arguments representing the physical
24 * layout of the board and position of the keys.
25 *
26 * The second converts the arguments into a two-dimensional array which
27 * represents the switch matrix.
28 */
29#define LAYOUT_all( \
30 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a,\
31 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19,\
32 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29,\
33 k30, k31, k32, k33, k34\
34) \
35{ \
36 { k09, k08, k07, k06, k05 }, \
37 { k19, k18, k17, k16, k15 }, \
38 { k29, k28, k27, k26, k25 }, \
39 { k0a, k34, k33, k32, k31 }, \
40\
41 { k04, k03, k02, k01, k00 }, \
42 { k14, k13, k12, k11, k10 }, \
43 { k24, k23, k22, k21, k20 }, \
44 { KC_NO, KC_NO, KC_NO, KC_NO, k30 } \
45}
diff --git a/keyboards/marksard/leftover30/readme.md b/keyboards/marksard/leftover30/readme.md
new file mode 100644
index 000000000..6fefb057f
--- /dev/null
+++ b/keyboards/marksard/leftover30/readme.md
@@ -0,0 +1,17 @@
1# leftover30
2
3![leftover30](https://raw.githubusercontent.com/marksard/Keyboards/master/_image/_leftover30.jpg)
4
5A 30% mini keyboard.
6
7* Keyboard Maintainer: [marksard](https://github.com/marksard)
8* Hardware Supported: LEFTOVER30 PCB (with Pro Micro)
9* Hardware Availability: [Mark's Garage](https://marksard.booth.pm/)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make marksard/leftover30:default
14
15See 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).
16
17[Build guide](https://github.com/marksard/Keyboards/blob/master/leftover30/documents/leftover30_buildguide.md)
diff --git a/keyboards/marksard/leftover30/rules.mk b/keyboards/marksard/leftover30/rules.mk
new file mode 100644
index 000000000..dd52fe113
--- /dev/null
+++ b/keyboards/marksard/leftover30/rules.mk
@@ -0,0 +1,22 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = caterina
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
18NKRO_ENABLE = no # USB Nkey Rollover
19BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
20RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/marksard/rhymestone/common/glcdfont.c b/keyboards/marksard/rhymestone/common/glcdfont.c
new file mode 100644
index 000000000..d9438aa5a
--- /dev/null
+++ b/keyboards/marksard/rhymestone/common/glcdfont.c
@@ -0,0 +1,233 @@
1// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
2// See gfxfont.h for newer custom bitmap font info.
3
4#include "progmem.h"
5
6// Standard ASCII 5x7 font
7
8static const unsigned char font[] PROGMEM = {
9 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
10 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
11 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
12 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
13 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
14 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
15 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
16 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
17 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
18 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
19 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
20 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
21 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
22 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
23 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
24 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
25 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
26 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
27 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
28 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
29 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
30 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
31 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
32 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
33 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
34 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
35 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
36 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
37 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
38 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
39 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
40 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
41 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
42 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
43 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
44 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
45 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
46 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
47 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
48 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
49 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
50 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
51 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
52 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
53 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
54 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
55 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
56 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
57 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
58 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
59 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
60 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
61 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
62 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
63 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
64 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
65 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
66 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
67 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
68 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
69 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
70 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
71 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
72 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
73 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
74 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
75 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
76 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
77 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
78 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
79 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
80 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
81 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
82 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
83 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
84 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
85 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
86 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
87 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
88 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
89 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
90 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
91 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
92 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
93 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
94 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
95 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
96 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
97 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
98 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
99 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
100 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
101 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
102 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
103 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
104 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
105 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
106 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
107 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
108 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
109 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
110 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
111 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
112 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
113 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
114 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
115 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
116 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
117 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
118 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
119 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
120 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
121 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00,
122 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00,
123 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
124 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
125 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
126 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
127 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
128 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
129 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
130 0x4C, 0x10, 0x10, 0x10, 0x7C, 0x00,
131 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
132 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
133 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
134 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
135 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
136 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
137 0x00, 0x00, 0xD8, 0xDE, 0xDE, 0xDE,
138 0x1E, 0x1E, 0x1E, 0x1E, 0xFE, 0xFE,
139 0xFE, 0xFE, 0x00, 0xF0, 0xFF, 0xFF,
140 0xFF, 0xE3, 0xE0, 0xE0, 0xE0, 0xE0,
141 0xE0, 0xE0, 0x00, 0x80, 0xE0, 0xE0,
142 0xE0, 0x00, 0x00, 0x00, 0x00, 0xE0,
143 0xE0, 0xE0, 0xE0, 0x00, 0xE0, 0xE0,
144 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
145 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
146 0xE0, 0xE0, 0xE0, 0x00, 0xC0, 0xE0,
147 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
148 0xE0, 0xE0, 0xE0, 0x00, 0x80, 0xE0,
149 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
150 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0xFC,
151 0xFC, 0xFC, 0xFC, 0xE0, 0xE0, 0x80,
152 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
153 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00,
154 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
155 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x80,
156 0x00, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0,
157 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00,
158 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
159 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
160 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
161 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
162 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
163 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
164 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
165 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
167 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
169 0x80, 0xFE, 0xFF, 0xFF, 0x7F, 0x0F,
170 0x0E, 0x0E, 0xCE, 0xFF, 0xFF, 0xFF,
171 0x7F, 0x80, 0xFE, 0xFF, 0xFF, 0x3F,
172 0x01, 0x01, 0x01, 0x81, 0xFF, 0xFF,
173 0xFF, 0x3F, 0xE0, 0xFF, 0xFF, 0xFF,
174 0x8F, 0x80, 0x80, 0x80, 0xF8, 0xFF,
175 0xFF, 0x7F, 0xC1, 0xFE, 0xFF, 0xFF,
176 0x1F, 0x01, 0x01, 0xE1, 0xFF, 0xFF,
177 0xFF, 0x0F, 0x01, 0x01, 0xF1, 0xFF,
178 0xFF, 0xFF, 0x07, 0xFC, 0xFF, 0xFF,
179 0xFF, 0x9D, 0x9D, 0x9D, 0x9D, 0x9F,
180 0x9F, 0x9F, 0x1F, 0x80, 0x9F, 0x9F,
181 0x9F, 0x9F, 0x9D, 0x9D, 0xDD, 0xFD,
182 0xFD, 0xFD, 0x39, 0xC0, 0xFF, 0xFF,
183 0xFF, 0x9F, 0x81, 0x01, 0xF1, 0xFF,
184 0xFF, 0xFF, 0x87, 0x81, 0x81, 0x81,
185 0xF9, 0xFF, 0xFF, 0xFF, 0x03, 0xFC,
186 0xFF, 0xFF, 0x3F, 0x01, 0x01, 0x01,
187 0x01, 0xFF, 0xFF, 0xFF, 0x7F, 0xC0,
188 0xFF, 0xFF, 0xFF, 0x9F, 0x9D, 0x9D,
189 0x9D, 0x9D, 0x9F, 0x9F, 0x1F, 0x00,
190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
191 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
192 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
193 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
194 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
197 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
199 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
200 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
201 0x07, 0x07, 0x07, 0x07, 0x00, 0x00,
202 0x00, 0x00, 0x07, 0x07, 0x07, 0x07,
203 0x00, 0x07, 0x07, 0x07, 0x07, 0x00,
204 0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
205 0x07, 0x60, 0x73, 0x77, 0x77, 0x77,
206 0x77, 0x77, 0x77, 0x7F, 0x7F, 0x7F,
207 0x1F, 0x00, 0x07, 0x07, 0x07, 0x07,
208 0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
209 0x03, 0x00, 0x00, 0x00, 0x07, 0x07,
210 0x07, 0x01, 0x00, 0x07, 0x07, 0x07,
211 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
212 0x07, 0x00, 0x00, 0x07, 0x07, 0x07,
213 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
214 0x07, 0x03, 0x00, 0x03, 0x07, 0x07,
215 0x07, 0x07, 0x07, 0x00, 0x03, 0x07,
216 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
217 0x07, 0x07, 0x03, 0x00, 0x07, 0x07,
218 0x07, 0x07, 0x00, 0x00, 0x00, 0x00,
219 0x07, 0x07, 0x07, 0x07, 0x00, 0x03,
220 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
221 0x07, 0x07, 0x07, 0x07, 0x00, 0x00,
222 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
225 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
226 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
227 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
228 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
229 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
230 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
231 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
232 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
233};
diff --git a/keyboards/marksard/rhymestone/common/oled_helper.c b/keyboards/marksard/rhymestone/common/oled_helper.c
new file mode 100644
index 000000000..537650025
--- /dev/null
+++ b/keyboards/marksard/rhymestone/common/oled_helper.c
@@ -0,0 +1,87 @@
1#ifdef OLED_DRIVER_ENABLE
2#include QMK_KEYBOARD_H
3#include <stdio.h>
4#include <string.h>
5
6void render_logo(void) {
7
8 static const char PROGMEM logo_buf[]={
9 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
10 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
11 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,
12 0};
13
14 oled_write_P(logo_buf, false);
15}
16
17void render_lock_status(void) {
18
19 // Host Keyboard LED Status
20 led_t led_state = host_keyboard_led_state();
21
22 oled_write_P(PSTR("Lock:"), false);
23 if (led_state.num_lock) {
24 oled_write_P(PSTR("Num "), false);
25 }
26 if (led_state.caps_lock) {
27 oled_write_P(PSTR("Caps "), false);
28 }
29 if (led_state.scroll_lock) {
30 oled_write_P(PSTR("Scrl"), false);
31 }
32
33 oled_write_P(PSTR("\n"), false);
34}
35
36static char keylog_buf[24] = "Key state ready.\n";
37const char code_to_name[60] = {
38 ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
39 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
40 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
41 '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
42 'R', 'E', 'B', 'T', ' ', '-', ' ', '@', ' ', ' ',
43 ' ', ';', ':', ' ', ',', '.', '/', ' ', ' ', ' '};
44
45void update_key_status(uint16_t keycode, keyrecord_t *record) {
46
47 if (!record->event.pressed) return;
48
49 char name = (keycode < 60) ? code_to_name[keycode] : ' ';
50 snprintf(keylog_buf, sizeof(keylog_buf) - 1, "Key:%dx%d %2x %c\n",
51 record->event.key.row, record->event.key.col,
52 (uint16_t)keycode, name);
53}
54
55void render_key_status(void) {
56
57 oled_write(keylog_buf, false);
58}
59
60#ifdef RGBLIGHT_ENABLE
61extern rgblight_config_t rgblight_config;
62
63static char led_buf[24] = "LED state ready.\n";
64rgblight_config_t rgblight_config_bak;
65void update_led_status(void) {
66
67 if (rgblight_config_bak.enable != rgblight_config.enable ||
68 rgblight_config_bak.mode != rgblight_config.mode ||
69 rgblight_config_bak.hue != rgblight_config.hue ||
70 rgblight_config_bak.sat != rgblight_config.sat ||
71 rgblight_config_bak.val != rgblight_config.val
72 ) {
73 snprintf(led_buf, sizeof(led_buf) - 1, "LED%c:%2d hsv:%2d %2d %2d\n",
74 rgblight_config.enable ? '*' : '.', (uint8_t)rgblight_config.mode,
75 (uint8_t)(rgblight_config.hue / RGBLIGHT_HUE_STEP),
76 (uint8_t)(rgblight_config.sat / RGBLIGHT_SAT_STEP),
77 (uint8_t)(rgblight_config.val / RGBLIGHT_VAL_STEP));
78 rgblight_config_bak = rgblight_config;
79 }
80}
81
82void render_led_status(void) {
83
84 oled_write(led_buf, false);
85}
86#endif
87#endif
diff --git a/keyboards/marksard/rhymestone/common/oled_helper.h b/keyboards/marksard/rhymestone/common/oled_helper.h
new file mode 100644
index 000000000..02f7b94fa
--- /dev/null
+++ b/keyboards/marksard/rhymestone/common/oled_helper.h
@@ -0,0 +1,32 @@
1#ifdef OLED_DRIVER_ENABLE
2
3void render_logo(void);
4void render_lock_status(void);
5void update_key_status(uint16_t keycode, keyrecord_t *record);
6void render_key_status(void);
7
8#define RENDER_LOGO() render_logo()
9#define RENDER_LOCK_STATUS() render_lock_status()
10#define UPDATE_KEY_STATUS(a, b) update_key_status(a, b)
11#define RENDER_KEY_STATUS() render_key_status()
12
13#ifdef RGBLIGHT_ENABLE
14 void update_led_status(void);
15 void render_led_status(void);
16 #define UPDATE_LED_STATUS() update_led_status()
17 #define RENDER_LED_STATUS() render_led_status()
18#else
19 #define UPDATE_LED_STATUS()
20 #define RENDER_LED_STATUS()
21#endif
22
23#else
24
25#define RENDER_LOGO()
26#define RENDER_LOCK_STATUS()
27#define UPDATE_KEY_STATUS(a, b)
28#define RENDER_KEY_STATUS()
29#define UPDATE_LED_STATUS()
30#define RENDER_LED_STATUS()
31
32#endif
diff --git a/keyboards/marksard/rhymestone/info.json b/keyboards/marksard/rhymestone/info.json
new file mode 100644
index 000000000..2c1ba9b37
--- /dev/null
+++ b/keyboards/marksard/rhymestone/info.json
@@ -0,0 +1,213 @@
1{
2 "keyboard_name": "Rhymestone",
3 "url": "https://github.com/marksard/Keyboards",
4 "maintainer": "marksard",
5 "width": 11,
6 "height": 4,
7 "layouts": {
8 "LAYOUT_ortho_4x10": {
9 "layout": [
10 {
11 "label": "Q",
12 "x": 0,
13 "y": 0
14 },
15 {
16 "label": "W",
17 "x": 1,
18 "y": 0
19 },
20 {
21 "label": "E",
22 "x": 2,
23 "y": 0
24 },
25 {
26 "label": "R",
27 "x": 3,
28 "y": 0
29 },
30 {
31 "label": "T",
32 "x": 4,
33 "y": 0
34 },
35 {
36 "label": "Y",
37 "x": 6,
38 "y": 0
39 },
40 {
41 "label": "U",
42 "x": 7,
43 "y": 0
44 },
45 {
46 "label": "I",
47 "x": 8,
48 "y": 0
49 },
50 {
51 "label": "O",
52 "x": 9,
53 "y": 0
54 },
55 {
56 "label": "P",
57 "x": 10,
58 "y": 0
59 },
60 {
61 "label": "A",
62 "x": 0,
63 "y": 1
64 },
65 {
66 "label": "S",
67 "x": 1,
68 "y": 1
69 },
70 {
71 "label": "D",
72 "x": 2,
73 "y": 1
74 },
75 {
76 "label": "F",
77 "x": 3,
78 "y": 1
79 },
80 {
81 "label": "G",
82 "x": 4,
83 "y": 1
84 },
85 {
86 "label": "H",
87 "x": 6,
88 "y": 1
89 },
90 {
91 "label": "J",
92 "x": 7,
93 "y": 1
94 },
95 {
96 "label": "K",
97 "x": 8,
98 "y": 1
99 },
100 {
101 "label": "L",
102 "x": 9,
103 "y": 1
104 },
105 {
106 "label": "Enter",
107 "x": 10,
108 "y": 1
109 },
110 {
111 "label": "Z",
112 "x": 0,
113 "y": 2
114 },
115 {
116 "label": "X",
117 "x": 1,
118 "y": 2
119 },
120 {
121 "label": "C",
122 "x": 2,
123 "y": 2
124 },
125 {
126 "label": "V",
127 "x": 3,
128 "y": 2
129 },
130 {
131 "label": "B",
132 "x": 4,
133 "y": 2
134 },
135 {
136 "label": "N",
137 "x": 6,
138 "y": 2
139 },
140 {
141 "label": "M",
142 "x": 7,
143 "y": 2
144 },
145 {
146 "label": ",",
147 "x": 8,
148 "y": 2
149 },
150 {
151 "label": ".",
152 "x": 9,
153 "y": 2
154 },
155 {
156 "label": "/",
157 "x": 10,
158 "y": 2
159 },
160 {
161 "label": "Ctrl",
162 "x": 0,
163 "y": 3
164 },
165 {
166 "label": "Win",
167 "x": 1,
168 "y": 3
169 },
170 {
171 "label": "Alt",
172 "x": 2,
173 "y": 3
174 },
175 {
176 "label": "Lower",
177 "x": 3,
178 "y": 3
179 },
180 {
181 "label": "backspace",
182 "x": 4,
183 "y": 3
184 },
185 {
186 "label": "space",
187 "x": 6,
188 "y": 3
189 },
190 {
191 "label": "Upper",
192 "x": 7,
193 "y": 3
194 },
195 {
196 "label": "Alt",
197 "x": 8,
198 "y": 3
199 },
200 {
201 "label": "App",
202 "x": 9,
203 "y": 3
204 },
205 {
206 "label": "Ctrl",
207 "x": 10,
208 "y": 3
209 }
210 ]
211 }
212 }
213}
diff --git a/keyboards/marksard/rhymestone/keymaps/default/config.h b/keyboards/marksard/rhymestone/keymaps/default/config.h
new file mode 100644
index 000000000..95f2d039b
--- /dev/null
+++ b/keyboards/marksard/rhymestone/keymaps/default/config.h
@@ -0,0 +1,27 @@
1/* Copyright 2020 marksard
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// place overrides here
20
21// If you use the HashTwenty(alpha), please enable USE_HASHTWENTY
22// #define USE_HASHTWENTY
23
24// If you plug in the USB on the right side, please enable MASTER_RIGHT
25// #define MASTER_RIGHT
26
27#define OLED_FONT_H "keyboards/rhymestone/common/glcdfont.c"
diff --git a/keyboards/marksard/rhymestone/keymaps/default/keymap.c b/keyboards/marksard/rhymestone/keymaps/default/keymap.c
new file mode 100644
index 000000000..2d695f76b
--- /dev/null
+++ b/keyboards/marksard/rhymestone/keymaps/default/keymap.c
@@ -0,0 +1,226 @@
1/* Copyright 2020 marksard
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#include "./common/oled_helper.h"
18
19enum layer_number {
20 _BASE,
21 _LOWER,
22 _RAISE,
23 _ADJUST,
24};
25
26enum custom_keycodes {
27 LOWER = SAFE_RANGE,
28 RAISE,
29 ADJUST,
30 KANJI,
31 RGBRST
32};
33
34// Base layer mod tap
35#define KC_Z_SF LSFT_T(KC_Z)
36#define KC_SLSF RSFT_T(KC_SLSH)
37
38// Lower layer mod tap
39#define KC_11SF LSFT_T(KC_F11)
40#define KC_GRSF RSFT_T(KC_GRV)
41
42const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
43 [_BASE] = LAYOUT_ortho_4x10(
44 //,---------------------------------------------------------------------------------------------------.
45 KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
46 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
47 KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
48 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
49 KC_Z_SF, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSF,
50 //`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
51 KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_SPC, RAISE, KC_RGUI, KC_APP, KC_RCTL
52 //,---------------------------------------------------------------------------------------------------.
53 ),
54
55 [_LOWER] = LAYOUT_ortho_4x10(
56 //,---------------------------------------------------------------------------------------------------.
57 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
58 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
59 KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT,
60 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
61 KC_11SF, KC_F12, KC_ESC, KC_TAB, KANJI, KC_DEL, XXXXXXX, XXXXXXX, KC_RO, KC_GRSF,
62 //`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
63 _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, _______
64 //,---------------------------------------------------------------------------------------------------.
65 ),
66
67 [_RAISE] = LAYOUT_ortho_4x10(
68 //,---------------------------------------------------------------------------------------------------.
69 KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
70 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
71 KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_RSFT,
72 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
73 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_RO, KC_COMM, KC_DOT, KC_SLSF,
74 //`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
75 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
76 //,---------------------------------------------------------------------------------------------------.
77 ),
78
79 [_ADJUST] = LAYOUT_ortho_4x10(
80 //,---------------------------------------------------------------------------------------------------.
81 RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_PSCR,
82 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
83 RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_NLCK,
84 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
85 RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX,
86 //`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
87 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
88 //,---------------------------------------------------------------------------------------------------.
89 )
90};
91
92#define L_BASE _BASE
93#define L_LOWER (1<<_LOWER)
94#define L_RAISE (1<<_RAISE)
95#define L_ADJUST (1<<_ADJUST)
96#define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER)
97
98#ifdef OLED_DRIVER_ENABLE
99#include <stdio.h>
100#include <string.h>
101
102typedef struct {
103 uint8_t state;
104 char name[8];
105}LAYER_DISPLAY_NAME;
106
107#define LAYER_DISPLAY_MAX 5
108const LAYER_DISPLAY_NAME layer_display_name[LAYER_DISPLAY_MAX] = {
109 {L_BASE, "Base"},
110 {L_BASE + 1, "Base"},
111 {L_LOWER, "Lower"},
112 {L_RAISE, "Raise"},
113 {L_ADJUST_TRI, "Adjust"}
114};
115
116static inline const char* get_leyer_status(void) {
117
118 for (uint8_t i = 0; i < LAYER_DISPLAY_MAX; ++i) {
119 if (layer_state == 0 && layer_display_name[i].state == default_layer_state) {
120
121 return layer_display_name[i].name;
122 } else if (layer_state != 0 && layer_display_name[i].state == layer_state) {
123
124 return layer_display_name[i].name;
125 }
126 }
127
128 return "?";
129}
130
131static char layer_status_buf[24] = "Layer state ready.\n";
132static inline void update_keymap_status(void) {
133
134 snprintf(layer_status_buf, sizeof(layer_status_buf) - 1, "OS:%s Layer:%s\n",
135 keymap_config.swap_lalt_lgui? "win" : "mac", get_leyer_status());
136}
137
138static inline void render_keymap_status(void) {
139
140 oled_write(layer_status_buf, false);
141}
142
143#define UPDATE_KEYMAP_STATUS() update_keymap_status()
144
145static inline void render_status(void) {
146
147 UPDATE_LED_STATUS();
148 RENDER_LED_STATUS();
149 render_keymap_status();
150 RENDER_LOCK_STATUS();
151 RENDER_KEY_STATUS();
152}
153
154oled_rotation_t oled_init_user(oled_rotation_t rotation) {
155
156 if (is_keyboard_master())
157 return OLED_ROTATION_180; // flips the display 180 degrees if offhand
158 return rotation;
159}
160
161void oled_task_user(void) {
162
163 if (is_keyboard_master()) {
164 render_status();
165 } else {
166 render_logo();
167 }
168}
169
170#else
171
172#define UPDATE_KEYMAP_STATUS()
173
174#endif
175
176bool process_record_user(uint16_t keycode, keyrecord_t *record) {
177
178 UPDATE_KEY_STATUS(keycode, record);
179
180 bool result = false;
181 switch (keycode) {
182 case LOWER:
183 if (record->event.pressed) {
184 layer_on(_LOWER);
185 } else {
186 layer_off(_LOWER);
187 }
188
189 update_tri_layer(_LOWER, _RAISE, _ADJUST);
190 break;
191 case RAISE:
192 if (record->event.pressed) {
193 layer_on(_RAISE);
194 } else {
195 layer_off(_RAISE);
196 }
197
198 update_tri_layer(_LOWER, _RAISE, _ADJUST);
199 break;
200 case KANJI:
201 if (record->event.pressed) {
202 if (keymap_config.swap_lalt_lgui == false) {
203 register_code(KC_LANG2);
204 } else {
205 register_code16(A(KC_GRV));
206 }
207 } else {
208 unregister_code(KC_LANG2);
209 }
210 break;
211 #ifdef RGBLIGHT_ENABLE
212 case RGBRST:
213 if (record->event.pressed) {
214 eeconfig_update_rgblight_default();
215 rgblight_enable();
216 }
217 break;
218 #endif
219 default:
220 result = true;
221 break;
222 }
223
224 UPDATE_KEYMAP_STATUS();
225 return result;
226}
diff --git a/keyboards/marksard/rhymestone/keymaps/default/rules.mk b/keyboards/marksard/rhymestone/keymaps/default/rules.mk
new file mode 100644
index 000000000..c86cab8cc
--- /dev/null
+++ b/keyboards/marksard/rhymestone/keymaps/default/rules.mk
@@ -0,0 +1,9 @@
1MOUSEKEY_ENABLE = yes # Mouse keys
2TAP_DANCE_ENABLE = no
3
4RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
5OLED_DRIVER_ENABLE = no
6LTO_ENABLE = yes
7
8# If you want to change the display of OLED, you need to change here
9SRC += ./common/oled_helper.c \
diff --git a/keyboards/marksard/rhymestone/keymaps/switch_tester/keymap.c b/keyboards/marksard/rhymestone/keymaps/switch_tester/keymap.c
new file mode 100644
index 000000000..1d4e78af8
--- /dev/null
+++ b/keyboards/marksard/rhymestone/keymaps/switch_tester/keymap.c
@@ -0,0 +1,76 @@
1/* Copyright 2020 marksard
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
18enum layer_number {
19 _BASE,
20 _ADJUST,
21};
22
23enum custom_keycodes {
24 LOWER = SAFE_RANGE,
25 ADJUST,
26 RGBRST
27};
28
29// Layer Mode aliases
30#define KC_LTAD LT(_ADJUST, KC_NO)
31
32const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33 [_BASE] = LAYOUT_ortho_4x10(
34 //,---------------------------------------------------------------------------------------------------.
35 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
36 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
37 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
38 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
39 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
40 //`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
41 KC_LTAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
42 //,---------------------------------------------------------------------------------------------------.
43 ),
44
45 [_ADJUST] = LAYOUT_ortho_4x10(
46 //,---------------------------------------------------------------------------------------------------.
47 RESET, RGBRST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
48 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
49 RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
50 //|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
51 RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
52 //`---------+---------+---------+---------+---------+---------+---------+---------+---------+---------'
53 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
54 //,---------------------------------------------------------------------------------------------------.
55 )
56};
57
58bool process_record_user(uint16_t keycode, keyrecord_t *record) {
59
60 bool result = false;
61 switch (keycode) {
62 #ifdef RGBLIGHT_ENABLE
63 case RGBRST:
64 if (record->event.pressed) {
65 eeconfig_update_rgblight_default();
66 rgblight_enable();
67 }
68 break;
69 #endif
70 default:
71 result = true;
72 break;
73 }
74
75 return result;
76}
diff --git a/keyboards/marksard/rhymestone/keymaps/switch_tester/readme.md b/keyboards/marksard/rhymestone/keymaps/switch_tester/readme.md
new file mode 100644
index 000000000..f85906a83
--- /dev/null
+++ b/keyboards/marksard/rhymestone/keymaps/switch_tester/readme.md
@@ -0,0 +1,3 @@
1# The switch tester keymap for Rhymestone
2
3This keymap is Switch Tester and RGB_MATRIX Light demo.
diff --git a/keyboards/marksard/rhymestone/keymaps/switch_tester/rules.mk b/keyboards/marksard/rhymestone/keymaps/switch_tester/rules.mk
new file mode 100644
index 000000000..78824da30
--- /dev/null
+++ b/keyboards/marksard/rhymestone/keymaps/switch_tester/rules.mk
@@ -0,0 +1,7 @@
1MOUSEKEY_ENABLE = no # Mouse keys
2TAP_DANCE_ENABLE = no
3
4RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
5OLED_DRIVER_ENABLE = no
6LTO_ENABLE = yes
7RGB_MATRIX_ENABLE = WS2812
diff --git a/keyboards/marksard/rhymestone/readme.md b/keyboards/marksard/rhymestone/readme.md
new file mode 100644
index 000000000..721e8beb3
--- /dev/null
+++ b/keyboards/marksard/rhymestone/readme.md
@@ -0,0 +1,18 @@
1# Rhymestone
2
3![Rhymestone](https://github.com/marksard/Keyboards/blob/7950099e0679a6626dc9f77a70b8c6616d7030cf/_image/_rhymestone.jpg)
4
5This is 40 keys split Ortholinear keyboard.
6
7* Keyboard Maintainer: [marksard](https://github.com/marksard)
8* Hardware Supported: Rhymestone PCB (with Pro Micro)
9* Hardware Availability: [marksard keyboards](https://github.com/marksard/Keyboards/blob/master/rhymestone/)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make marksard/rhymestone:default
14
15See 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).
16
17[Build guide](https://github.com/marksard/Keyboards/blob/master/rhymestone/documents/rhymestone_buildguide.md)
18[Firmware](https://github.com/marksard/qmk_firmware/tree/my_customize/keyboards/rhymestone)
diff --git a/keyboards/marksard/rhymestone/rev1/config.h b/keyboards/marksard/rhymestone/rev1/config.h
new file mode 100644
index 000000000..9a1bf0a1d
--- /dev/null
+++ b/keyboards/marksard/rhymestone/rev1/config.h
@@ -0,0 +1,152 @@
1/*
2Copyright 2020 marksard
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#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0xFEED
24#define PRODUCT_ID 0xDFA1
25#define DEVICE_VER 0x0020
26#define MANUFACTURER marksard
27#define PRODUCT Rhymestone
28
29/* key matrix size */
30#define MATRIX_ROWS 8
31#define MATRIX_COLS 5
32
33/*
34 * Keyboard Matrix Assignments
35 *
36 * Change this to how you wired your keyboard
37 * COLS: AVR pins used for columns, left to right
38 * ROWS: AVR pins used for rows, top to bottom
39 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
40 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
41 *
42 */
43#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
44#define MATRIX_COL_PINS { D4, C6, D7, E6, B4 }
45#define UNUSED_PINS
46
47/* COL2ROW, ROW2COL*/
48#define DIODE_DIRECTION COL2ROW
49
50/*
51 * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
52 */
53#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6
54
55// #define BACKLIGHT_PIN B7
56// #define BACKLIGHT_BREATHING
57// #define BACKLIGHT_LEVELS 3
58
59#define RGB_DI_PIN D3
60
61#ifdef RGBLIGHT_ENABLE
62// #ifdef RGB_DI_PIN
63 #define RGBLED_NUM 40
64 #define RGBLED_SPLIT {20, 20}
65 #define RGBLIGHT_HUE_STEP 8
66 #define RGBLIGHT_SAT_STEP 8
67 #define RGBLIGHT_VAL_STEP 8
68 #define RGBLIGHT_LIMIT_VAL 150 /* The maximum brightness level */
69 #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
70/*== all animations enable ==*/
71// #define RGBLIGHT_ANIMATIONS
72/*== or choose animations ==*/
73// #define RGBLIGHT_EFFECT_BREATHING
74 #define RGBLIGHT_EFFECT_RAINBOW_MOOD
75 #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
76// #define RGBLIGHT_EFFECT_SNAKE
77 #define RGBLIGHT_EFFECT_KNIGHT
78// #define RGBLIGHT_EFFECT_CHRISTMAS
79 #define RGBLIGHT_EFFECT_STATIC_GRADIENT
80// #define RGBLIGHT_EFFECT_RGB_TEST
81// #define RGBLIGHT_EFFECT_ALTERNATING
82/*== customize breathing effect ==*/
83 /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
84 #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
85 /*==== use exp() and sin() ====*/
86 #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
87 #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
88#endif
89
90#ifdef RGB_MATRIX_ENABLE
91 #define RGBLED_NUM 40 // Number of LEDs
92 #define DRIVER_LED_TOTAL RGBLED_NUM
93 #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
94 // #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
95 // #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
96 #define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
97 // #define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
98 // #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
99 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
100 #define RGB_MATRIX_HUE_STEP 8
101 #define RGB_MATRIX_SAT_STEP 8
102 #define RGB_MATRIX_VAL_STEP 8
103 #define RGB_MATRIX_SPD_STEP 10
104
105// #define DISABLE_RGB_MATRIX_ALPHAS_MODS
106// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
107// #define DISABLE_RGB_MATRIX_BREATHING
108// #define DISABLE_RGB_MATRIX_BAND_SAT
109// #define DISABLE_RGB_MATRIX_BAND_VAL
110// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
111// #define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
112// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
113// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
114// #define DISABLE_RGB_MATRIX_CYCLE_ALL
115// #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
116// #define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
117// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
118// #define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
119// #define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
120// #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
121// #define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
122// #define DISABLE_RGB_MATRIX_DUAL_BEACON
123// #define DISABLE_RGB_MATRIX_RAINBOW_BEACON
124// #define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
125// #define DISABLE_RGB_MATRIX_RAINDROPS
126// #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
127
128 #define RGB_MATRIX_FRAMEBUFFER_EFFECTS
129// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP
130// #define DISABLE_RGB_MATRIX_DIGITAL_RAIN
131
132// #define RGB_MATRIX_KEYPRESSES // reacts to keypresses
133
134// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
135// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE
136// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
137// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
138// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
139// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
140// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
141// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
142
143// #define DISABLE_RGB_MATRIX_SPLASH
144// #define DISABLE_RGB_MATRIX_MULTISPLASH
145// #define DISABLE_RGB_MATRIX_SOLID_SPLASH
146// #define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
147
148 #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_TYPING_HEATMAP
149#endif
150
151/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
152#define DEBOUNCE 5
diff --git a/keyboards/marksard/rhymestone/rev1/rev1.c b/keyboards/marksard/rhymestone/rev1/rev1.c
new file mode 100644
index 000000000..a4dadd55c
--- /dev/null
+++ b/keyboards/marksard/rhymestone/rev1/rev1.c
@@ -0,0 +1,108 @@
1/* Copyright 2020 marksard
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 "rev1.h"
18
19// Optional override functions below.
20// You can leave any or all of these undefined.
21// These are only required if you want to perform custom actions.
22
23#ifdef RGB_MATRIX_ENABLE
24led_config_t g_led_config = { {
25 { 10, 11, 12, 13, 0 },
26 { 9, 18, 19, 14, 1 },
27 { 8, 17, 16, 15, 2 },
28 { 7, 6, 5, 4, 3 },
29 { 30, 31, 32, 33, 20 },
30 { 29, 38, 39, 34, 21 },
31 { 28, 37, 36, 35, 22 },
32 { 27, 26, 25, 24, 23 }
33}, {
34 { 100, 0 }, { 100, 21 }, { 100, 43 }, { 100, 64 },
35 { 75, 64 }, { 50, 64 }, { 25, 64 }, { 0, 64 },
36 { 0, 43 }, { 0, 21 }, { 0, 0 },
37 { 25, 0 }, { 50, 0 }, { 75, 0 },
38 { 75, 21 }, { 75, 43 },
39 { 50, 43 }, { 25, 43 },
40 { 25, 21 }, { 50, 21 },
41 { 125, 0 }, { 125, 21 }, { 125, 43 }, { 125, 64 },
42 { 150, 64 }, { 175, 64 }, { 200, 64 }, { 225, 64 },
43 { 225, 43 }, { 225, 21 }, { 225, 0 },
44 { 200, 0 }, { 175, 0 }, { 150, 0 },
45 { 150, 21 }, { 150, 43 },
46 { 175, 43 }, { 200, 43 },
47 { 200, 21 }, { 150, 21 }
48}, {
49 4, 4, 4, 1,
50 1, 1, 1, 1,
51 4, 4, 4, 4,
52 4, 4, 4, 4,
53 4, 4, 4, 4,
54 4, 4, 4, 1,
55 1, 1, 1, 1,
56 4, 4, 4, 4,
57 4, 4, 4, 4,
58 4, 4, 4, 4
59} };
60#endif
61
62__attribute__((weak))
63void matrix_init_user(void) {}
64
65void matrix_init_kb(void) {
66
67#ifdef RGB_MATRIX_ENABLE
68 // if (!is_keyboard_master()) {
69 // g_led_config = (led_config_t){ {
70 // { 30, 31, 32, 33, 20 },
71 // { 29, 38, 39, 34, 21 },
72 // { 28, 37, 36, 35, 22 },
73 // { 27, 26, 25, 24, 23 },
74 // { 10, 11, 12, 13, 0 },
75 // { 9, 18, 19, 14, 1 },
76 // { 8, 17, 16, 15, 2 },
77 // { 7, 6, 5, 4, 3 }
78 // }, {
79 // { 125, 0 }, { 125, 21 }, { 125, 43 }, { 125, 64 },
80 // { 150, 64 }, { 175, 64 }, { 200, 64 }, { 225, 64 },
81 // { 225, 43 }, { 225, 21 }, { 225, 0 },
82 // { 200, 0 }, { 175, 0 }, { 150, 0 },
83 // { 150, 21 }, { 150, 43 },
84 // { 175, 43 }, { 200, 43 },
85 // { 200, 21 }, { 150, 21 },
86 // { 100, 0 }, { 100, 21 }, { 100, 43 }, { 100, 64 },
87 // { 75, 64 }, { 50, 64 }, { 25, 64 }, { 0, 64 },
88 // { 0, 43 }, { 0, 21 }, { 0, 0 },
89 // { 25, 0 }, { 50, 0 }, { 75, 0 },
90 // { 75, 21 }, { 75, 43 },
91 // { 50, 43 }, { 25, 43 },
92 // { 25, 21 }, { 50, 21 }
93 // }, {
94 // 4, 4, 4, 1,
95 // 1, 1, 1, 1,
96 // 4, 4, 4, 4,
97 // 4, 4, 4, 4,
98 // 4, 4, 4, 4,
99 // 4, 4, 4, 1,
100 // 1, 1, 1, 1,
101 // 4, 4, 4, 4,
102 // 4, 4, 4, 4,
103 // 4, 4, 4, 4
104 // } };
105 // }
106#endif
107 matrix_init_user();
108}
diff --git a/keyboards/marksard/rhymestone/rev1/rev1.h b/keyboards/marksard/rhymestone/rev1/rev1.h
new file mode 100644
index 000000000..855e288df
--- /dev/null
+++ b/keyboards/marksard/rhymestone/rev1/rev1.h
@@ -0,0 +1,89 @@
1/* Copyright 2020 marksard
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 "quantum.h"
20
21/* This is a shortcut to help you visually see your layout.
22 *
23 * The first section contains all of the arguments representing the physical
24 * layout of the board and position of the keys.
25 *
26 * The second converts the arguments into a two-dimensional array which
27 * represents the switch matrix.
28 */
29
30#ifndef FLIP_HALF
31// Standard Keymap
32// (TRRS jack on the left half is to the right, TRRS jack on the right half is to the left)
33#define LAYOUT_ortho_4x10( \
34 L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
35 L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
36 L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
37 L30, L31, L32, L33, L34, R30, R31, R32, R33, R34 \
38 ) \
39 { \
40 { L00, L01, L02, L03, L04 }, \
41 { L10, L11, L12, L13, L14 }, \
42 { L20, L21, L22, L23, L24 }, \
43 { L30, L31, L32, L33, L34 }, \
44 { R04, R03, R02, R01, R00 }, \
45 { R14, R13, R12, R11, R10 }, \
46 { R24, R23, R22, R21, R20 }, \
47 { R34, R33, R32, R31, R30 }, \
48 }
49#else
50// Keymap with right side flipped
51// (TRRS jack on both halves are to the right)
52#define LAYOUT_ortho_4x10( \
53 L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
54 L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
55 L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
56 L30, L31, L32, L33, L34, R30, R31, R32, R33, R34 \
57 ) \
58 { \
59 { L04, L03, L02, L01, L00 }, \
60 { L14, L13, L12, L11, L10 }, \
61 { L24, L23, L22, L21, L20 }, \
62 { L34, L33, L32, L31, L30 }, \
63 { R04, R03, R02, R01, R00 }, \
64 { R14, R13, R12, R11, R10 }, \
65 { R24, R23, R22, R21, R20 }, \
66 { R34, R33, R32, R31, R30 }, \
67 }
68#endif
69
70#ifdef USE_HASHTWENTY // The HashTwenty is Alpha version of The Rhymestone
71#undef LAYOUT_ortho_4x10
72// HashTwenty layout
73#define LAYOUT_ortho_4x10( \
74 L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
75 L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
76 L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
77 L30, L31, L32, L33, L34, R30, R31, R32, R33, R34 \
78 ) \
79 { \
80 { L04, L03, L02, L01, L00 }, \
81 { L14, L13, L12, L11, L10 }, \
82 { L24, L23, L22, L21, L20 }, \
83 { L34, L33, L32, L31, L30 }, \
84 { R00, R01, R02, R03, R04 }, \
85 { R10, R11, R12, R13, R14 }, \
86 { R20, R21, R22, R23, R24 }, \
87 { R30, R31, R32, R33, R34 }, \
88 }
89#endif
diff --git a/keyboards/marksard/rhymestone/rev1/rules.mk b/keyboards/marksard/rhymestone/rev1/rules.mk
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/keyboards/marksard/rhymestone/rev1/rules.mk
diff --git a/keyboards/marksard/rhymestone/rules.mk b/keyboards/marksard/rhymestone/rules.mk
new file mode 100644
index 000000000..1f58665ef
--- /dev/null
+++ b/keyboards/marksard/rhymestone/rules.mk
@@ -0,0 +1,27 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = caterina
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
11MOUSEKEY_ENABLE = no # Mouse keys
12EXTRAKEY_ENABLE = no # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
18NKRO_ENABLE = yes # USB Nkey Rollover
19BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
20RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output
23SPLIT_KEYBOARD = yes
24
25DEFAULT_FOLDER = marksard/rhymestone/rev1
26
27LAYOUTS = ortho_4x10
diff --git a/keyboards/planck/keymaps/gitdrik/config.h b/keyboards/planck/keymaps/gitdrik/config.h
new file mode 100644
index 000000000..0acf06dc5
--- /dev/null
+++ b/keyboards/planck/keymaps/gitdrik/config.h
@@ -0,0 +1,56 @@
1/* Original code probably copyright 2015-2017 Jack Humbert
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/* Passed along from planck default to Finnish SFS 5966 by gitdrik, 2020. */
18
19#pragma once
20
21#ifdef AUDIO_ENABLE
22 #define STARTUP_SONG SONG(PLANCK_SOUND)
23 // #define STARTUP_SONG SONG(NO_SOUND)
24
25 #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
26 SONG(COLEMAK_SOUND), \
27 SONG(DVORAK_SOUND) \
28 }
29#endif
30
31/*
32 * MIDI options
33 */
34
35/* Prevent use of disabled MIDI features in the keymap */
36//#define MIDI_ENABLE_STRICT 1
37
38/* enable basic MIDI features:
39 - MIDI notes can be sent when in Music mode is on
40*/
41
42#define MIDI_BASIC
43
44/* enable advanced MIDI features:
45 - MIDI notes can be added to the keymap
46 - Octave shift and transpose
47 - Virtual sustain, portamento, and modulation wheel
48 - etc.
49*/
50//#define MIDI_ADVANCED
51
52/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
53//#define MIDI_TONE_KEYCODE_OCTAVES 2
54
55// Most tactile encoders have detents every 4 stages
56#define ENCODER_RESOLUTION 4
diff --git a/keyboards/planck/keymaps/gitdrik/keymap.c b/keyboards/planck/keymaps/gitdrik/keymap.c
new file mode 100644
index 000000000..bdaef2076
--- /dev/null
+++ b/keyboards/planck/keymaps/gitdrik/keymap.c
@@ -0,0 +1,231 @@
1/* Copyright 2015-2017 Jack Humbert
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/* Modified from planck default to Finnish SFS 5966 by gitdrik, 2020. */
18
19#include QMK_KEYBOARD_H
20#include "muse.h"
21
22enum planck_layers {
23 _BASE,
24 _LEFT,
25 _RIGHT,
26 _LEFTER,
27 _RIGHTER
28};
29
30#define LEFT TT(_LEFT)
31#define RIGHT MO(_RIGHT)
32#define LEFTER MO(_LEFTER)
33#define RIGHTER MO(_RIGHTER)
34
35const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
36
37/* Base
38 * ,-----------------------------------------------------------------------------------.
39 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Å |
40 * |------+------+------+------+------+------+------+------+------+------+------+------|
41 * | Esc | A | S | D | F | G | H | J | K | L | Ö | Ä |
42 * |------+------+------+------+------+------+------+------+------+------+------+------|
43 * | Ctrl | Shift| X | C | V | B | N | M | , | . | Shift| Enter|
44 * |------+------+------+------+------+------+------+------+------+------+------+------|
45 * | Z | GUI | Alt |Left2 | Left |BkSpc | Spc |Right |Rghter| < | - | / |
46 * `-----------------------------------------------------------------------------------'
47 */
48[_BASE] = LAYOUT_planck_grid(
49 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
50 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
51 KC_LCTL, KC_LSFT, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, KC_ENT ,
52 KC_Z, KC_LGUI, KC_LALT, LEFTER, LEFT, KC_BSPC, KC_SPC, RIGHT, RIGHTER, KC_NUBS, KC_SLSH, LSFT(KC_7)
53),
54
55/* Left
56 * ,-----------------------------------------------------------------------------------.
57 * | Tab | F10 | F9 | F8 | F7 | { | } | 7 | 8 | 9 | ^ | = |
58 * |------+------+------+------+------+------+------+------+------+------+------+------|
59 * | Esc | F11 | F6 | F5 | F4 | ( | ) | 4 | 5 | 6 | + | * |
60 * |------+------+------+------+------+------+------+------+------+------+------+------|
61 * | RCtrl| Shift| F3 | F2 | F1 | [ | ] | 1 | 2 | 3 | Shift| Enter|
62 * |------+------+------+------+------+------+------+------+------+------+------+------|
63 * | F12 | GUI | Alt |Lefter| Left |BkSpc | Spc |Right | 0 | , | - | / |
64 * `-----------------------------------------------------------------------------------'
65 */
66[_LEFT] = LAYOUT_planck_grid(
67 KC_TRNS, KC_F10, KC_F9, KC_F8, KC_F7, RALT(KC_7), RALT(KC_0), KC_7, KC_8, KC_9, LSFT(KC_RBRC), LSFT(KC_0),
68 KC_TRNS, KC_F11, KC_F6, KC_F5, KC_F4, LSFT(KC_8), LSFT(KC_9), KC_4, KC_5, KC_6, KC_PPLS, KC_PAST,
69 KC_RCTL, KC_TRNS, KC_F3, KC_F2, KC_F1, RALT(KC_8), RALT(KC_9), KC_1, KC_2, KC_3, KC_TRNS, KC_TRNS,
70 KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_COMM, KC_PMNS, KC_PSLS
71),
72
73/* Right
74 * ,-----------------------------------------------------------------------------------.
75 * | Tab | ◌̄ | ◌̈ | ◌́ | ◌̀ | ◌̃ | ◌̆ | Home | Up | End | Ins | PgUp |
76 * |------+------+------+------+------+------+------+------+------+------+------+------|
77 * | Esc | @ | $ | ° | & | # | % | Left | Down | Right| Del | PgDn |
78 * |------+------+------+------+------+------+------+------+------+------+------+------|
79 * | RCtrl| Shift| ” | « | » | ‚ „ | ‰ |PlayPs| << | >> | Shift| Enter|
80 * |------+------+------+------+------+------+------+------+------+------+------+------|
81 * | “ | GUI | Alt |Lefter| |BkSpc | Spc |Right |Rghter| Vol- | Vol+ | Mute |
82 * `-----------------------------------------------------------------------------------'
83 */
84 [_RIGHT] = LAYOUT_planck_grid(
85 KC_TRNS, RALT(LSFT(KC_RBRC)), KC_RBRC, KC_EQL , LSFT(KC_EQL), RALT(KC_RBRC), RALT(KC_NUHS), KC_HOME, KC_UP, KC_END , KC_INS , KC_PGUP,
86 KC_TRNS, RALT(KC_2), RALT(KC_4), RALT(LSFT(KC_0)), LSFT(KC_6), LSFT(KC_3), LSFT(KC_5), KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_PGDN,
87 KC_RCTRL, KC_TRNS, RALT(LSFT(KC_2)), RALT(LSFT(KC_4)), RALT(LSFT(KC_3)), RALT(KC_6), RALT(KC_5), KC_MPLY, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
88 RALT(LSFT(KC_5)), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE
89),
90
91/* Lefter
92 * ,-----------------------------------------------------------------------------------.
93 * | Tab | § ½ | " | € | | þ Þ | ¡ | ! | ı | œ Œ | ◌̛ ◌̉ | ◌̋ ◌̊ |
94 * |------+------+------+------+------+------+------+------+------+------+------+------|
95 * | Esc | ə Ə | ß ẞ | ð Ð | ' | | | | ĸ | ◌̵ | ø Ø | æ Æ |
96 * |------+------+------+------+------+------+------+------+------+------+------+------|
97 * | Ctrl | Shift| × · | ◌̧ ◌̨ | | \ | ŋ Ŋ | µ — | ’ ‘ | ◌̣ ◌̇ | Shift| Enter|
98 * |------+------+------+------+------+------+------+------+------+------+------+------|
99 * | ʒ Ʒ | GUI | Alt |Lefter| | BkSpc| NbSp | |Rghter| | | – ◌̦ | ? |
100 * `-----------------------------------------------------------------------------------'
101 */
102 [_LEFTER] = LAYOUT_planck_grid(
103 KC_TRNS, KC_GRV, LSFT(KC_2), RALT(KC_E), RALT(KC_R), RALT(KC_T), RALT(LSFT(KC_1)), LSFT(KC_1), RALT(KC_I), RALT(KC_O), RALT(KC_P), RALT(KC_LBRC),
104 KC_TRNS, RALT(KC_A),RALT(KC_S), RALT(KC_D), KC_NUHS, RALT(KC_G), RALT(KC_H), RALT(KC_J), RALT(KC_K), RALT(KC_L), RALT(KC_SCLN), RALT(KC_QUOT),
105 KC_TRNS, KC_TRNS, RALT(KC_X), RALT(KC_EQL), RALT(KC_V), RALT(KC_MINS), RALT(KC_N), RALT(KC_M), RALT(KC_COMM), RALT(KC_DOT), KC_TRNS, KC_TRNS,
106 RALT(KC_Z),KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RALT(KC_BSPC), RALT(KC_SPC), KC_TRNS, KC_TRNS, RALT(KC_NUBS), RALT(KC_SLSH), LSFT(KC_MINS)
107),
108
109/* Righter
110 * ,-----------------------------------------------------------------------------------.
111 * | | Reset| Debug| | | | |WheLft| MUp |WheRgt| MBt2 | WheUp|
112 * |------+------+------+------+------+------+------+------+------+------+------+------|
113 * | | MBt4 | MBt3 | MBt2 | MBt1 | | | MLeft| MDown|MRight| MBt1 | WheDn|
114 * |------+------+------+------+------+------+------+------+------+------+------+------|
115 * | | |MUSmod|Mus on|Musoff| | | MBt1 | MBt2 | MBt3 | | |
116 * |------+------+------+------+------+------+------+------+------+------+------+------|
117 * | | | | | | | | |Rghter|Light-|Light+| |
118 * `-----------------------------------------------------------------------------------'
119 */
120 [_RIGHTER] = LAYOUT_planck_grid(
121 KC_TRNS, RESET, DEBUG, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_L, KC_MS_U, KC_WH_R, KC_BTN2, KC_WH_U,
122 KC_TRNS, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1, KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, KC_WH_D,
123 KC_TRNS, KC_TRNS, MU_MOD, MU_ON, MU_OFF, KC_NO, KC_NO, KC_BTN1, KC_BTN2, KC_BTN3, KC_TRNS, KC_TRNS,
124 KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_BRID, KC_BRIU, KC_NO
125),
126
127};
128
129#ifdef AUDIO_ENABLE
130 float plover_song[][2] = SONG(PLOVER_SOUND);
131 float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
132#endif
133
134bool muse_mode = false;
135uint8_t last_muse_note = 0;
136uint16_t muse_counter = 0;
137uint8_t muse_offset = 70;
138uint16_t muse_tempo = 50;
139
140void encoder_update(bool clockwise) {
141 if (muse_mode) {
142 if (IS_LAYER_ON(_RIGHT)) {
143 if (clockwise) {
144 muse_offset++;
145 } else {
146 muse_offset--;
147 }
148 } else {
149 if (clockwise) {
150 muse_tempo+=1;
151 } else {
152 muse_tempo-=1;
153 }
154 }
155 } else {
156 if (clockwise) {
157 #ifdef MOUSEKEY_ENABLE
158 tap_code(KC_MS_WH_DOWN);
159 #else
160 tap_code(KC_PGDN);
161 #endif
162 } else {
163 #ifdef MOUSEKEY_ENABLE
164 tap_code(KC_MS_WH_UP);
165 #else
166 tap_code(KC_PGUP);
167 #endif
168 }
169 }
170}
171
172void dip_switch_update_user(uint8_t index, bool active) {
173 switch (index) {
174 case 0: {
175#ifdef AUDIO_ENABLE
176 static bool play_sound = false;
177#endif
178 if (active) {
179#ifdef AUDIO_ENABLE
180 if (play_sound) { PLAY_SONG(plover_song); }
181#endif
182 layer_on(_LEFTER);
183 } else {
184#ifdef AUDIO_ENABLE
185 if (play_sound) { PLAY_SONG(plover_gb_song); }
186#endif
187 layer_off(_LEFTER);
188 }
189#ifdef AUDIO_ENABLE
190 play_sound = true;
191#endif
192 break;
193 }
194 case 1:
195 if (active) {
196 muse_mode = true;
197 } else {
198 muse_mode = false;
199 }
200 }
201}
202
203void matrix_scan_user(void) {
204#ifdef AUDIO_ENABLE
205 if (muse_mode) {
206 if (muse_counter == 0) {
207 uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
208 if (muse_note != last_muse_note) {
209 stop_note(compute_freq_for_midi_note(last_muse_note));
210 play_note(compute_freq_for_midi_note(muse_note), 0xF);
211 last_muse_note = muse_note;
212 }
213 }
214 muse_counter = (muse_counter + 1) % muse_tempo;
215 } else {
216 if (muse_counter) {
217 stop_all_notes();
218 muse_counter = 0;
219 }
220 }
221#endif
222}
223
224bool music_mask_user(uint16_t keycode) {
225 switch (keycode) {
226 case _LEFTER:
227 return false;
228 default:
229 return true;
230 }
231}
diff --git a/keyboards/planck/keymaps/gitdrik/readme.md b/keyboards/planck/keymaps/gitdrik/readme.md
new file mode 100644
index 000000000..f06456518
--- /dev/null
+++ b/keyboards/planck/keymaps/gitdrik/readme.md
@@ -0,0 +1 @@
# Finnish SFS 5966 layout by gitdrik 2020.
diff --git a/keyboards/planck/keymaps/gitdrik/rules.mk b/keyboards/planck/keymaps/gitdrik/rules.mk
new file mode 100644
index 000000000..67528de9c
--- /dev/null
+++ b/keyboards/planck/keymaps/gitdrik/rules.mk
@@ -0,0 +1,3 @@
1SRC += muse.c
2MOUSEKEY_ENABLE = yes
3AUDIO_ENABLE = yes
diff --git a/keyboards/plume/plume65/config.h b/keyboards/plume/plume65/config.h
new file mode 100644
index 000000000..2cd05e180
--- /dev/null
+++ b/keyboards/plume/plume65/config.h
@@ -0,0 +1,137 @@
1/* Copyright 2020 Dekkers
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 "config_common.h"
20
21/* USB Device descriptor parameter */
22#define VENDOR_ID 0x5D66
23#define PRODUCT_ID 0x22CF
24#define DEVICE_VER 0x0001
25#define MANUFACTURER Plume Keyboards LLC
26#define PRODUCT Plume65
27
28/* key matrix size */
29#define MATRIX_ROWS 5
30#define MATRIX_COLS 15
31
32/*
33 * Keyboard Matrix Assignments
34 *
35 * Change this to how you wired your keyboard
36 * COLS: AVR pins used for columns, left to right
37 * ROWS: AVR pins used for rows, top to bottom
38 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
39 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
40 *
41*/
42#define MATRIX_ROW_PINS { D2, D5, E6, D0, D1 }
43#define MATRIX_COL_PINS { B7, F7, C7, C6, B6, F0, B5, F1, B4, F4, D7, F5, D6, F6, D4 }
44#define UNUSED_PINS { }
45
46/* COL2ROW, ROW2COL*/
47#define DIODE_DIRECTION COL2ROW
48
49 #define RGB_DI_PIN B0
50// #ifdef RGB_DI_PIN
51 #define RGBLED_NUM 10
52// #define RGBLIGHT_HUE_STEP 8
53// #define RGBLIGHT_SAT_STEP 8
54// #define RGBLIGHT_VAL_STEP 8
55// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
56// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
57// /*== all animations enable ==*/
58 #define RGBLIGHT_ANIMATIONS
59// /*== or choose animations ==*/
60// #define RGBLIGHT_EFFECT_BREATHING
61// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
62// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
63// #define RGBLIGHT_EFFECT_SNAKE
64// #define RGBLIGHT_EFFECT_KNIGHT
65// #define RGBLIGHT_EFFECT_CHRISTMAS
66// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
67// #define RGBLIGHT_EFFECT_RGB_TEST
68// #define RGBLIGHT_EFFECT_ALTERNATING
69// /*== customize breathing effect ==*/
70// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
71// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
72// /*==== use exp() and sin() ====*/
73// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
74// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
75// #endif
76
77/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
78#define DEBOUNCE 5
79
80/* define if matrix has ghost (lacks anti-ghosting diodes) */
81//#define MATRIX_HAS_GHOST
82
83/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
84#define LOCKING_SUPPORT_ENABLE
85/* Locking resynchronize hack */
86#define LOCKING_RESYNC_ENABLE
87
88/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
89 * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
90 */
91// #define GRAVE_ESC_CTRL_OVERRIDE
92
93/*
94 * Force NKRO
95 *
96 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
97 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
98 * makefile for this to work.)
99 *
100 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
101 * until the next keyboard reset.
102 *
103 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
104 * fully operational during normal computer usage.
105 *
106 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
107 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
108 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
109 * power-up.
110 *
111 */
112//#define FORCE_NKRO
113
114/*
115 * Feature disable options
116 * These options are also useful to firmware size reduction.
117 */
118
119/* disable debug print */
120//#define NO_DEBUG
121
122/* disable print */
123//#define NO_PRINT
124
125/* disable action features */
126//#define NO_ACTION_LAYER
127//#define NO_ACTION_TAPPING
128//#define NO_ACTION_ONESHOT
129//#define NO_ACTION_MACRO
130//#define NO_ACTION_FUNCTION
131
132/* Bootmagic Lite key configuration */
133// #define BOOTMAGIC_LITE_ROW 0
134// #define BOOTMAGIC_LITE_COLUMN 0
135
136#define QMK_ESC_OUTPUT B7 // usually COL
137#define QMK_ESC_INPUT D2 // usually ROW
diff --git a/keyboards/plume/plume65/info.json b/keyboards/plume/plume65/info.json
new file mode 100644
index 000000000..941d911f3
--- /dev/null
+++ b/keyboards/plume/plume65/info.json
@@ -0,0 +1,376 @@
1{
2 "keyboard_name": "Plume65",
3 "url": "",
4 "maintainer": "maartenwut",
5 "width": 16,
6 "height": 5,
7 "layouts": {
8 "LAYOUT_iso": {
9 "layout": [
10 {"x":0, "y":0},
11 {"x":1, "y":0},
12 {"x":2, "y":0},
13 {"x":3, "y":0},
14 {"x":4, "y":0},
15 {"x":5, "y":0},
16 {"x":6, "y":0},
17 {"x":7, "y":0},
18 {"x":8, "y":0},
19 {"x":9, "y":0},
20 {"x":10, "y":0},
21 {"x":11, "y":0},
22 {"x":12, "y":0},
23 {"x":13, "y":0, "w":2},
24
25 {"x":0, "y":1, "w":1.5},
26 {"x":1.5, "y":1},
27 {"x":2.5, "y":1},
28 {"x":3.5, "y":1},
29 {"x":4.5, "y":1},
30 {"x":5.5, "y":1},
31 {"x":6.5, "y":1},
32 {"x":7.5, "y":1},
33 {"x":8.5, "y":1},
34 {"x":9.5, "y":1},
35 {"x":10.5, "y":1},
36 {"x":11.5, "y":1},
37 {"x":12.5, "y":1},
38 {"x":15, "y":1},
39
40 {"x":0, "y":2, "w":1.75},
41 {"x":1.75, "y":2},
42 {"x":2.75, "y":2},
43 {"x":3.75, "y":2},
44 {"x":4.75, "y":2},
45 {"x":5.75, "y":2},
46 {"x":6.75, "y":2},
47 {"x":7.75, "y":2},
48 {"x":8.75, "y":2},
49 {"x":9.75, "y":2},
50 {"x":10.75, "y":2},
51 {"x":11.75, "y":2},
52 {"x":12.75, "y":2},
53 {"x":13.75, "y":1, "w":1.25, "h":2},
54 {"x":15, "y":2},
55
56 {"x":0, "y":3, "w":1.25},
57 {"x":1.25, "y":3},
58 {"x":2.25, "y":3},
59 {"x":3.25, "y":3},
60 {"x":4.25, "y":3},
61 {"x":5.25, "y":3},
62 {"x":6.25, "y":3},
63 {"x":7.25, "y":3},
64 {"x":8.25, "y":3},
65 {"x":9.25, "y":3},
66 {"x":10.25, "y":3},
67 {"x":11.25, "y":3},
68 {"x":12.25, "y":3, "w":1.75},
69 {"x":14, "y":3},
70 {"x":15, "y":3},
71
72 {"x":0, "y":4, "w":1.5},
73 {"x":2.5, "y":4, "w":1.5},
74 {"x":4, "y":4, "w":7},
75 {"x":11, "y":4, "w":1.5},
76 {"x":13, "y":4},
77 {"x":14, "y":4},
78 {"x":15, "y":4}
79 ]
80 },
81 "LAYOUT_ansi": {
82 "layout": [
83 {"x":0, "y":0},
84 {"x":1, "y":0},
85 {"x":2, "y":0},
86 {"x":3, "y":0},
87 {"x":4, "y":0},
88 {"x":5, "y":0},
89 {"x":6, "y":0},
90 {"x":7, "y":0},
91 {"x":8, "y":0},
92 {"x":9, "y":0},
93 {"x":10, "y":0},
94 {"x":11, "y":0},
95 {"x":12, "y":0},
96 {"x":13, "y":0, "w":2},
97
98 {"x":0, "y":1, "w":1.5},
99 {"x":1.5, "y":1},
100 {"x":2.5, "y":1},
101 {"x":3.5, "y":1},
102 {"x":4.5, "y":1},
103 {"x":5.5, "y":1},
104 {"x":6.5, "y":1},
105 {"x":7.5, "y":1},
106 {"x":8.5, "y":1},
107 {"x":9.5, "y":1},
108 {"x":10.5, "y":1},
109 {"x":11.5, "y":1},
110 {"x":12.5, "y":1},
111 {"x":13.5, "y":1, "w":1.5},
112 {"x":15, "y":1},
113
114 {"x":0, "y":2, "w":1.75},
115 {"x":1.75, "y":2},
116 {"x":2.75, "y":2},
117 {"x":3.75, "y":2},
118 {"x":4.75, "y":2},
119 {"x":5.75, "y":2},
120 {"x":6.75, "y":2},
121 {"x":7.75, "y":2},
122 {"x":8.75, "y":2},
123 {"x":9.75, "y":2},
124 {"x":10.75, "y":2},
125 {"x":11.75, "y":2},
126 {"x":12.75, "y":2, "w":2.25},
127 {"x":15, "y":2},
128
129 {"x":0, "y":3, "w":2.25},
130 {"x":2.25, "y":3},
131 {"x":3.25, "y":3},
132 {"x":4.25, "y":3},
133 {"x":5.25, "y":3},
134 {"x":6.25, "y":3},
135 {"x":7.25, "y":3},
136 {"x":8.25, "y":3},
137 {"x":9.25, "y":3},
138 {"x":10.25, "y":3},
139 {"x":11.25, "y":3},
140 {"x":12.25, "y":3, "w":1.75},
141 {"x":14, "y":3},
142 {"x":15, "y":3},
143
144 {"x":0, "y":4, "w":1.5},
145 {"x":2.5, "y":4, "w":1.5},
146 {"x":4, "y":4, "w":7},
147 {"x":11, "y":4, "w":1.5},
148 {"x":13, "y":4},
149 {"x":14, "y":4},
150 {"x":15, "y":4}
151 ]
152 },
153 "LAYOUT_iso_split_bs": {
154 "layout": [
155 {"x":0, "y":0},
156 {"x":1, "y":0},
157 {"x":2, "y":0},
158 {"x":3, "y":0},
159 {"x":4, "y":0},
160 {"x":5, "y":0},
161 {"x":6, "y":0},
162 {"x":7, "y":0},
163 {"x":8, "y":0},
164 {"x":9, "y":0},
165 {"x":10, "y":0},
166 {"x":11, "y":0},
167 {"x":12, "y":0},
168 {"x":13, "y":0},
169 {"x":14, "y":0},
170
171 {"x":0, "y":1, "w":1.5},
172 {"x":1.5, "y":1},
173 {"x":2.5, "y":1},
174 {"x":3.5, "y":1},
175 {"x":4.5, "y":1},
176 {"x":5.5, "y":1},
177 {"x":6.5, "y":1},
178 {"x":7.5, "y":1},
179 {"x":8.5, "y":1},
180 {"x":9.5, "y":1},
181 {"x":10.5, "y":1},
182 {"x":11.5, "y":1},
183 {"x":12.5, "y":1},
184 {"x":15, "y":1},
185
186 {"x":0, "y":2, "w":1.75},
187 {"x":1.75, "y":2},
188 {"x":2.75, "y":2},
189 {"x":3.75, "y":2},
190 {"x":4.75, "y":2},
191 {"x":5.75, "y":2},
192 {"x":6.75, "y":2},
193 {"x":7.75, "y":2},
194 {"x":8.75, "y":2},
195 {"x":9.75, "y":2},
196 {"x":10.75, "y":2},
197 {"x":11.75, "y":2},
198 {"x":12.75, "y":2},
199 {"x":13.75, "y":1, "w":1.25, "h":2},
200 {"x":15, "y":2},
201
202 {"x":0, "y":3, "w":1.25},
203 {"x":1.25, "y":3},
204 {"x":2.25, "y":3},
205 {"x":3.25, "y":3},
206 {"x":4.25, "y":3},
207 {"x":5.25, "y":3},
208 {"x":6.25, "y":3},
209 {"x":7.25, "y":3},
210 {"x":8.25, "y":3},
211 {"x":9.25, "y":3},
212 {"x":10.25, "y":3},
213 {"x":11.25, "y":3},
214 {"x":12.25, "y":3, "w":1.75},
215 {"x":14, "y":3},
216 {"x":15, "y":3},
217
218 {"x":0, "y":4, "w":1.5},
219 {"x":2.5, "y":4, "w":1.5},
220 {"x":4, "y":4, "w":7},
221 {"x":11, "y":4, "w":1.5},
222 {"x":13, "y":4},
223 {"x":14, "y":4},
224 {"x":15, "y":4}
225 ]
226 },
227 "LAYOUT_ansi_split_bs": {
228 "layout": [
229 {"x":0, "y":0},
230 {"x":1, "y":0},
231 {"x":2, "y":0},
232 {"x":3, "y":0},
233 {"x":4, "y":0},
234 {"x":5, "y":0},
235 {"x":6, "y":0},
236 {"x":7, "y":0},
237 {"x":8, "y":0},
238 {"x":9, "y":0},
239 {"x":10, "y":0},
240 {"x":11, "y":0},
241 {"x":12, "y":0},
242 {"x":13, "y":0},
243 {"x":14, "y":0},
244
245 {"x":0, "y":1, "w":1.5},
246 {"x":1.5, "y":1},
247 {"x":2.5, "y":1},
248 {"x":3.5, "y":1},
249 {"x":4.5, "y":1},
250 {"x":5.5, "y":1},
251 {"x":6.5, "y":1},
252 {"x":7.5, "y":1},
253 {"x":8.5, "y":1},
254 {"x":9.5, "y":1},
255 {"x":10.5, "y":1},
256 {"x":11.5, "y":1},
257 {"x":12.5, "y":1},
258 {"x":13.5, "y":1, "w":1.5},
259 {"x":15, "y":1},
260
261 {"x":0, "y":2, "w":1.75},
262 {"x":1.75, "y":2},
263 {"x":2.75, "y":2},
264 {"x":3.75, "y":2},
265 {"x":4.75, "y":2},
266 {"x":5.75, "y":2},
267 {"x":6.75, "y":2},
268 {"x":7.75, "y":2},
269 {"x":8.75, "y":2},
270 {"x":9.75, "y":2},
271 {"x":10.75, "y":2},
272 {"x":11.75, "y":2},
273 {"x":12.75, "y":2, "w":2.25},
274 {"x":15, "y":2},
275
276 {"x":0, "y":3, "w":2.25},
277 {"x":2.25, "y":3},
278 {"x":3.25, "y":3},
279 {"x":4.25, "y":3},
280 {"x":5.25, "y":3},
281 {"x":6.25, "y":3},
282 {"x":7.25, "y":3},
283 {"x":8.25, "y":3},
284 {"x":9.25, "y":3},
285 {"x":10.25, "y":3},
286 {"x":11.25, "y":3},
287 {"x":12.25, "y":3, "w":1.75},
288 {"x":14, "y":3},
289 {"x":15, "y":3},
290
291 {"x":0, "y":4, "w":1.5},
292 {"x":2.5, "y":4, "w":1.5},
293 {"x":4, "y":4, "w":7},
294 {"x":11, "y":4, "w":1.5},
295 {"x":13, "y":4},
296 {"x":14, "y":4},
297 {"x":15, "y":4}
298 ]
299 },
300 "LAYOUT_all": {
301 "layout": [
302 {"x":0, "y":0},
303 {"x":1, "y":0},
304 {"x":2, "y":0},
305 {"x":3, "y":0},
306 {"x":4, "y":0},
307 {"x":5, "y":0},
308 {"x":6, "y":0},
309 {"x":7, "y":0},
310 {"x":8, "y":0},
311 {"x":9, "y":0},
312 {"x":10, "y":0},
313 {"x":11, "y":0},
314 {"x":12, "y":0},
315 {"x":13, "y":0},
316 {"x":14, "y":0},
317
318 {"x":0, "y":1, "w":1.5},
319 {"x":1.5, "y":1},
320 {"x":2.5, "y":1},
321 {"x":3.5, "y":1},
322 {"x":4.5, "y":1},
323 {"x":5.5, "y":1},
324 {"x":6.5, "y":1},
325 {"x":7.5, "y":1},
326 {"x":8.5, "y":1},
327 {"x":9.5, "y":1},
328 {"x":10.5, "y":1},
329 {"x":11.5, "y":1},
330 {"x":12.5, "y":1},
331 {"x":13.5, "y":1, "w":1.5},
332 {"x":15, "y":1},
333
334 {"x":0, "y":2, "w":1.75},
335 {"x":1.75, "y":2},
336 {"x":2.75, "y":2},
337 {"x":3.75, "y":2},
338 {"x":4.75, "y":2},
339 {"x":5.75, "y":2},
340 {"x":6.75, "y":2},
341 {"x":7.75, "y":2},
342 {"x":8.75, "y":2},
343 {"x":9.75, "y":2},
344 {"x":10.75, "y":2},
345 {"x":11.75, "y":2},
346 {"x":12.75, "y":2},
347 {"x":13.75, "y":2, "w":1.25},
348 {"x":15, "y":2},
349
350 {"x":0, "y":3, "w":1.25},
351 {"x":1.25, "y":3},
352 {"x":2.25, "y":3},
353 {"x":3.25, "y":3},
354 {"x":4.25, "y":3},
355 {"x":5.25, "y":3},
356 {"x":6.25, "y":3},
357 {"x":7.25, "y":3},
358 {"x":8.25, "y":3},
359 {"x":9.25, "y":3},
360 {"x":10.25, "y":3},
361 {"x":11.25, "y":3},
362 {"x":12.25, "y":3, "w":1.75},
363 {"x":14, "y":3},
364 {"x":15, "y":3},
365
366 {"x":0, "y":4, "w":1.5},
367 {"x":2.5, "y":4, "w":1.5},
368 {"x":4, "y":4, "w":7},
369 {"x":11, "y":4, "w":1.5},
370 {"x":13, "y":4},
371 {"x":14, "y":4},
372 {"x":15, "y":4}
373 ]
374 }
375 }
376}
diff --git a/keyboards/plume/plume65/keymaps/default/keymap.c b/keyboards/plume/plume65/keymaps/default/keymap.c
new file mode 100644
index 000000000..343c3b4f7
--- /dev/null
+++ b/keyboards/plume/plume65/keymaps/default/keymap.c
@@ -0,0 +1,33 @@
1/* Copyright 2020 Dekkers
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
20[0] = LAYOUT_ansi(
21 KC_ESC, 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,
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_DEL,
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_PGUP,
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, KC_PGDN,
25 KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
26[1] = LAYOUT_ansi(
27 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
28 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
29 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
30 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
31 _______, _______, _______, _______, _______, _______, _______)
32
33};
diff --git a/keyboards/plume/plume65/keymaps/default/readme.md b/keyboards/plume/plume65/keymaps/default/readme.md
new file mode 100644
index 000000000..33c50283a
--- /dev/null
+++ b/keyboards/plume/plume65/keymaps/default/readme.md
@@ -0,0 +1 @@
This is the default keymap for the Plume65.
diff --git a/keyboards/plume/plume65/keymaps/via/keymap.c b/keyboards/plume/plume65/keymaps/via/keymap.c
new file mode 100644
index 000000000..ed8e921c7
--- /dev/null
+++ b/keyboards/plume/plume65/keymaps/via/keymap.c
@@ -0,0 +1,45 @@
1/* Copyright 2020 Dekkers
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
20[0] = LAYOUT_all(
21 KC_ESC, 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_BSLS, KC_BSPC,
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_DEL,
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_BSLS, KC_ENT, KC_PGUP,
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, KC_PGDN,
25 KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
26[1] = LAYOUT_all(
27 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
28 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
29 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
30 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
31 _______, _______, _______, _______, _______, _______, _______),
32[2] = LAYOUT_all(
33 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
34 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
35 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
36 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
37 _______, _______, _______, _______, _______, _______, _______),
38[3] = LAYOUT_all(
39 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
40 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
41 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
42 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
43 _______, _______, _______, _______, _______, _______, _______),
44
45};
diff --git a/keyboards/plume/plume65/keymaps/via/rules.mk b/keyboards/plume/plume65/keymaps/via/rules.mk
new file mode 100644
index 000000000..1e5b99807
--- /dev/null
+++ b/keyboards/plume/plume65/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes
diff --git a/keyboards/plume/plume65/plume65.c b/keyboards/plume/plume65/plume65.c
new file mode 100644
index 000000000..d59f2289e
--- /dev/null
+++ b/keyboards/plume/plume65/plume65.c
@@ -0,0 +1,16 @@
1/* Copyright 2020 Dekkers
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 "plume65.h"
diff --git a/keyboards/plume/plume65/plume65.h b/keyboards/plume/plume65/plume65.h
new file mode 100644
index 000000000..fa169a8bc
--- /dev/null
+++ b/keyboards/plume/plume65/plume65.h
@@ -0,0 +1,103 @@
1/* Copyright 2020 Dekkers
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#pragma once
17
18#include "quantum.h"
19#define XXX KC_NO
20
21/* This a shortcut to help you visually see your layout.
22 *
23 * The first section contains all of the arguments representing the physical
24 * layout of the board and position of the keys.
25 *
26 * The second converts the arguments into a two-dimensional array which
27 * represents the switch matrix.
28 */
29
30#define LAYOUT_ansi( \
31 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
32 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \
33 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, k2e, \
34 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
35 k40, k42, k46, k4b, k4c, k4d, k4e \
36) \
37{ \
38 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, XXX }, \
39 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \
40 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, k2e }, \
41 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
42 { k40, XXX, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4b, k4c, k4d, k4e } \
43}
44
45#define LAYOUT_ansi_split_bs( \
46 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, k0d, \
47 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \
48 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, k2e, \
49 k30, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
50 k40, k42, k46, k4b, k4c, k4d, k4e \
51) \
52{ \
53 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
54 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \
55 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, XXX, k2d, k2e }, \
56 { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
57 { k40, XXX, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4b, k4c, k4d, k4e } \
58}
59
60#define LAYOUT_iso( \
61 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
62 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
63 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, \
64 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
65 k40, k42, k46, k4b, k4c, k4d, k4e \
66) \
67{ \
68 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, XXX }, \
69 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, k1e }, \
70 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e }, \
71 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
72 { k40, XXX, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4b, k4c, k4d, k4e } \
73}
74
75#define LAYOUT_iso_split_bs( \
76 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, k0d, \
77 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1e, \
78 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, \
79 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
80 k40, k42, k46, k4b, k4c, k4d, k4e \
81) \
82{ \
83 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
84 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, XXX, k1e }, \
85 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e }, \
86 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
87 { k40, XXX, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4b, k4c, k4d, k4e } \
88}
89
90#define LAYOUT_all( \
91 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0e, k0d, \
92 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, \
93 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, \
94 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, \
95 k40, k42, k46, k4b, k4c, k4d, k4e \
96) \
97{ \
98 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e }, \
99 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e }, \
100 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e }, \
101 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e }, \
102 { k40, XXX, k42, XXX, XXX, XXX, k46, XXX, XXX, XXX, XXX, k4b, k4c, k4d, k4e } \
103}
diff --git a/keyboards/plume/plume65/readme.md b/keyboards/plume/plume65/readme.md
new file mode 100644
index 000000000..828477eaf
--- /dev/null
+++ b/keyboards/plume/plume65/readme.md
@@ -0,0 +1,16 @@
1# Plume65
2
3## Support
4* Keyboard Maintainer: [maartenwut](https://github.com/maartenwut)
5* Hardware Supported: Plume65
6* Hardware Availability: N/A
7
8Make example for this keyboard (after setting up your build environment):
9
10 make plume/plume65:default
11
12Flashing example for this keyboard:
13
14 make plume/plume65:default:flash
15
16See 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).
diff --git a/keyboards/plume/plume65/rules.mk b/keyboards/plume/plume65/rules.mk
new file mode 100644
index 000000000..dded09bb8
--- /dev/null
+++ b/keyboards/plume/plume65/rules.mk
@@ -0,0 +1,22 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = qmk-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
11MOUSEKEY_ENABLE = no # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
18NKRO_ENABLE = no # USB Nkey Rollover
19BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
20RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/redox_w/keymaps/danielo515/keymap.c b/keyboards/redox_w/keymaps/danielo515/keymap.c
index 2b37a4be3..c174c7cf3 100644
--- a/keyboards/redox_w/keymaps/danielo515/keymap.c
+++ b/keyboards/redox_w/keymaps/danielo515/keymap.c
@@ -22,56 +22,59 @@
22# define GUI OSM(MOD_LGUI) 22# define GUI OSM(MOD_LGUI)
23# define ENT_SYM LT(_SYMB, KC_ENT) 23# define ENT_SYM LT(_SYMB, KC_ENT)
24# define __S LT(_S,KC_S) 24# define __S LT(_S,KC_S)
25# define OSX_BACK LGUI(KC_GRV)
26// Which key do you use to enter a layer
27# define ENTRY _______
25 28
26 29
27const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 30const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
28 31
29 [_QWERTY] = LAYOUT( 32 [_QWERTY] = LAYOUT(
30 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ 33 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
31 KC_NAGR ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_DQUO , 34 KC_EQL ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 , KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_DQUO ,
32 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 35 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
33 KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,TD_PASTE, ALT_TAB ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,SFT_MINS, 36 KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,TD_PASTE, KC_INS ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,CMD_MINS,
34 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 37 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
35 SHIFT ,KC_A ,__S ,FN_D ,FN_F ,KC_G ,COPY_CUT, KC_UNDS ,HYPR_H ,ALT_J ,CTL_K ,KC_L ,TD_CLN ,CMD_QUOT, 38 KC_PIPE ,KC_A ,__S ,FN_D ,FN_F ,KC_G ,COPY_CUT, KC_UNDS ,HYPR_H ,ALT_J ,CTL_K ,KC_L ,TD_CLN ,SFT_QUOT,
36 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 39 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
37 KC_BSLS ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_DEL ,KC_PGDN , ALT_TAB ,AD_ESC ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_ASTR , 40 KC_BSLS ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_DEL ,KC_PLUS , ALT_TAB ,AD_ESC ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_ASTR ,
38 //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ 41 //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
39 CTL ,ALT ,KC_LEFT ,KC_RIGHT, GUI , SHIFT ,KC_BSPC , KC_LEAD ,NAV_SPC , ENT_SYM, KC_LBRC ,KC_RBRC ,KC_DOWN ,KC_UP 42 CTL ,ALT ,KC_LEFT ,KC_RIGHT, GUI , SHIFT ,KC_BSPC , KC_LEAD ,NAV_SPC , ENT_SYM, KC_LBRC ,KC_RBRC ,KC_DOWN ,KC_UP
40 //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ 43 //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
41 ), 44 ),
42 45
43 [_SYMB] = LAYOUT( 46 [_SYMB] = LAYOUT(
44 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ 47 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
45 _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 , 48 _______ ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F12 ,
46 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 49 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
47 _______ ,KC_EXLM ,KC_DLR ,KC_LCBR ,KC_RCBR ,KC_PIPE ,_______ , _______ ,KC_PSLS ,KC_P7 ,KC_P8 ,KC_P9 ,KC_PERC ,KC_PMNS , 50 _______ ,KC_EXLM ,KC_DLR ,KC_LCBR ,KC_RCBR ,KC_PIPE ,_______ , _______ ,KC_PSLS ,KC_P7 ,KC_P8 ,KC_P9 ,KC_PERC ,KC_BSPC ,
48 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 51 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
49 _______ ,KC_AT ,KC_DLR , KC_LPRN, KC_RPRN,KC_GRV ,_______ , _______ ,KC_PAST ,KC_P4 ,KC_P5 ,KC_P6 ,KC_PPLS ,KC_BSPC , 52 _______ ,KC_AT ,KC_DLR , KC_LPRN, KC_RPRN,KC_GRV ,_______ , _______ ,KC_PENT ,KC_P4 ,KC_P5 ,KC_P6 ,KC_PPLS ,KC_PMNS ,
50 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 53 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
51 _______ ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,_______ ,_______ , _______ ,_______ ,KC_COLN ,KC_P1 ,KC_P2 ,KC_P3 ,KC_PENT ,XXXXXXX , 54 _______ ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,_______ ,_______ , _______ ,_______ ,KC_COLN ,KC_P1 ,KC_P2 ,KC_P3 ,KC_PSLS ,XXXXXXX ,
52 //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ 55 //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
53 _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , KC_P0 , KC_P0 ,KC_PDOT ,KC_PENT ,XXXXXXX 56 _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , ENTRY , KC_P0 ,KC_PDOT ,KC_PAST ,XXXXXXX
54 //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ 57 //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
55 ), 58 ),
56 59
57 [_NAV] = LAYOUT( 60 [_NAV] = LAYOUT(
58 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ 61 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
59 _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ , 62 _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
60 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 63 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
61 XXXXXXX ,XXXXXXX ,KC_MS_U ,XXXXXXX ,KC_WH_U ,XXXXXXX ,_______ , _______ ,XXXXXXX,SFT_LEFT,SFT_RIGHT,XXXXXXX ,XXXXXXX ,XXXXXXX , 64 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ , _______ ,SFT_LEFT_END,SFT_LEFT,SFT_RIGHT,SFT_RIGHT_END ,XXXXXXX ,KC_F12 ,
62 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 65 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
63 XXXXXXX ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_WH_D ,XXXXXXX ,_______ , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RIGHT,XXXXXXX ,XXXXXXX , 66 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RIGHT,XXXXXXX ,XXXXXXX ,
64 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 67 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
65 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,XXXXXXX ,KC_HOME ,CTL_LEFT,CTL_RIGHT,XXXXXXX,XXXXXXX ,XXXXXXX , 68 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,XXXXXXX ,KC_HOME ,CTL_LEFT,CTL_RIGHT,KC_END,XXXXXXX ,XXXXXXX ,
66 //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ 69 //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
67 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BTN1 , KC_BTN2 ,_______ , _______ ,_______ , XXXXXXX , XXXXXXX ,XXXXXXX ,WIN_LEFT,WIN_RIGHT 70 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , _______ , _______ ,_______ , _______ , ENTRY , KC_MUTE , KC_VOLD ,KC_VOLU ,WIN_LEFT,WIN_RIGHT
68 //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ 71 //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
69 ), 72 ),
70 [_ADJUST] = LAYOUT( 73 [_ADJUST] = LAYOUT(
71 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ 74 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
72 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , 75 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
73 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 76 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
74 XXXXXXX ,RESET ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_F12 , 77 XXXXXXX ,RESET ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
75 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 78 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
76 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , 79 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
77 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 80 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
@@ -84,26 +87,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
84 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ 87 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
85 XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 , 88 XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,
86 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 89 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
87 XXXXXXX ,XXXXXXX ,ALL_WIN ,EXPOSE ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , 90 XXXXXXX ,XXXXXXX ,ALL_WIN ,EXPOSE ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,KC_F4 ,KC_F5 ,KC_F6 ,XXXXXXX ,KC_F12 ,
88 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 91 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
89 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , 92 XXXXXXX ,XXXXXXX ,SAVE ,OSX_BACK ,ENTRY ,XXXXXXX ,XXXXXXX , XXXXXXX ,KC_PSCR ,KC_F1 ,KC_F2 ,KC_F3 ,XXXXXXX ,XXXXXXX ,
90 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 93 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
91 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , 94 XXXXXXX ,UNDO ,REDO ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
92 //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ 95 //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
93 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX ,_______ , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX 96 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX , KC_PGUP ,KC_PGDOWN , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
94 //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ 97 //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
95 ), 98 ),
96 [_D] = LAYOUT( 99 [_D] = LAYOUT(
97 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ 100 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
98 XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F12 , 101 XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_A ,KC_B ,KC_C ,KC_D ,KC_E ,KC_F ,
99 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 102 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
100 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , _______ ,KC_PSLS ,KC_P7 ,KC_P8 ,KC_P9 ,KC_PERC ,KC_PMNS , 103 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , _______ ,KC_LBRACKET ,KC_P7 ,KC_P8 ,KC_P9 ,KC_PERC ,KC_KP_MINUS ,
101 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 104 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
102 XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX , _______ ,KC_PAST ,KC_P4 ,KC_P5 ,KC_P6 ,KC_PPLS ,KC_BSPC , 105 XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,KC_F5 ,KC_F2 ,XXXXXXX , _______ ,KC_RBRACKET ,KC_P4 ,KC_P5 ,KC_P6 ,KC_PPLS ,KC_PAST ,
103 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 106 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
104 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , _______ ,_______ ,KC_COLN ,KC_P1 ,KC_P2 ,KC_P3 ,KC_PENT ,XXXXXXX , 107 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , _______ ,_______ ,KC_COLN ,KC_P1 ,KC_P2 ,KC_P3 ,KC_PSLS ,XXXXXXX ,
105 //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ 108 //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
106 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,_______ , _______ ,_______ , KC_P0 , KC_P0 ,KC_PDOT ,KC_PENT ,XXXXXXX 109 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,_______ , _______ ,_______ , KC_P0 , KC_COMMA ,KC_PDOT ,KC_PAST ,XXXXXXX
107 //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ 110 //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
108 ), 111 ),
109 [_S] = LAYOUT( 112 [_S] = LAYOUT(
@@ -114,9 +117,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
114 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 117 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
115 XXXXXXX ,XXXXXXX ,_______ ,KC_EQL ,F_ARROW ,KC_GRAVE,XXXXXXX , XXXXXXX ,KC_AMPR ,KC_LPRN ,KC_RPRN ,CLN_EQ ,KC_PLUS ,KC_PIPE , 118 XXXXXXX ,XXXXXXX ,_______ ,KC_EQL ,F_ARROW ,KC_GRAVE,XXXXXXX , XXXXXXX ,KC_AMPR ,KC_LPRN ,KC_RPRN ,CLN_EQ ,KC_PLUS ,KC_PIPE ,
116 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤ 119 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
117 XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_CIRC ,KC_DLR ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,KC_EXLM ,KC_TILD ,KC_CIRC ,ARROW ,KC_BSLASH,IARROW , 120 XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_CIRC ,ARROW ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,KC_EXLM ,KC_TILD ,KC_CIRC ,ARROW ,KC_BSLASH,IARROW ,
118 //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤ 121 //├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
119 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,_______ , XXXXXXX ,_______ , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX 122 XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,_______ , XXXXXXX ,ENTRY , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
120 //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘ 123 //└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
121 ) 124 )
122 125