aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaneEvans <dane@goneepic.com>2021-05-27 15:30:34 +1000
committerGitHub <noreply@github.com>2021-05-26 22:30:34 -0700
commit9da95bc3abc2d5682aea917e56abfeae30a7980f (patch)
tree8da651a066b4fb878e605d097ae13942ec453e7f
parent088c71b4ea6e083f01d6c5d7248555972c4125a4 (diff)
downloadqmk_firmware-9da95bc3abc2d5682aea917e56abfeae30a7980f.tar.gz
qmk_firmware-9da95bc3abc2d5682aea917e56abfeae30a7980f.zip
[Keymap] add personal keymap files, and sofle_rgb default maps, (#12267)
-rw-r--r--keyboards/crkbd/keymaps/devdev/config.h117
-rw-r--r--keyboards/crkbd/keymaps/devdev/keymap.c410
-rw-r--r--keyboards/crkbd/keymaps/devdev/rules.mk4
-rw-r--r--keyboards/minimacro5/keymaps/devdev/keymap.c126
-rw-r--r--keyboards/minimacro5/keymaps/devdev/rules.mk2
-rw-r--r--keyboards/navi10/keymaps/devdev/config.h35
-rw-r--r--keyboards/navi10/keymaps/devdev/keymap.c263
-rw-r--r--keyboards/navi10/keymaps/devdev/rules.mk2
-rw-r--r--keyboards/sofle/keymaps/devdev/config.h130
-rw-r--r--keyboards/sofle/keymaps/devdev/keymap.c571
-rw-r--r--keyboards/sofle/keymaps/devdev/rules.mk7
-rw-r--r--keyboards/sofle/keymaps/rgb_default/config.h130
-rw-r--r--keyboards/sofle/keymaps/rgb_default/keymap.c571
-rw-r--r--keyboards/sofle/keymaps/rgb_default/rules.mk7
-rw-r--r--users/devdev/config.h30
-rw-r--r--users/devdev/glcdfont.c465
16 files changed, 2870 insertions, 0 deletions
diff --git a/keyboards/crkbd/keymaps/devdev/config.h b/keyboards/crkbd/keymaps/devdev/config.h
new file mode 100644
index 000000000..793c7b020
--- /dev/null
+++ b/keyboards/crkbd/keymaps/devdev/config.h
@@ -0,0 +1,117 @@
1/*
2This is the c configuration file for the keymap
3
4Copyright 2012 Jun Wako <wakojun@gmail.com>
5Copyright 2015 Jack Humbert
6Copyright 2021 Dane Evans
7
8
9This program is free software: you can redistribute it and/or modify
10it under the terms of the GNU General Public License as published by
11the Free Software Foundation, either version 2 of the License, or
12(at your option) any later version.
13
14This program is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License
20along with this program. If not, see <http://www.gnu.org/licenses/>.
21*/
22
23#pragma once
24
25//#define USE_MATRIX_I2C
26
27/* Select hand configuration */
28
29#define MASTER_LEFT
30// #define MASTER_RIGHT
31// #define EE_HANDS
32
33#define CUSTOM_FONT
34
35#define CUSTOM_LAYER_READ //if you remove this it causes issues - needs better guarding
36
37#define TAPPING_FORCE_HOLD
38#define TAPPING_TERM 200
39
40#define RGBLIGHT_SLEEP
41//
42#define RGBLIGHT_LAYERS
43
44#ifdef RGBLIGHT_ENABLE
45 #undef RGBLED_NUM
46
47 //#define RGBLIGHT_ANIMATIONS
48 #define RGBLIGHT_EFFECT_BREATHING
49 #define RGBLIGHT_EFFECT_RAINBOW_MOOD
50 #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
51 #define RGBLIGHT_EFFECT_SNAKE
52 #define RGBLIGHT_EFFECT_KNIGHT
53 //#define RGBLIGHT_EFFECT_CHRISTMAS
54 //#define RGBLIGHT_EFFECT_STATIC_GRADIENT
55 //#define RGBLIGHT_EFFECT_RGB_TEST
56 //#define RGBLIGHT_EFFECT_ALTERNATING
57 //#define RGBLIGHT_EFFECT_TWINKLE
58
59 //#define RGBLED_NUM 54
60 //#define RGBLED_SPLIT 27
61 //#define RGBLED_SPLIT { 27, 27 } // haven't figured out how to use this yet
62
63 #define RGBLED_NUM 27
64 #define RGBLIGHT_LIMIT_VAL 120
65 #define RGBLIGHT_HUE_STEP 10
66 #define RGBLIGHT_SAT_STEP 17
67 #define RGBLIGHT_VAL_STEP 17
68#endif
69
70#ifdef RGB_MATRIX_ENABLE
71# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
72// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
73// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
74# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
75# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
76// # 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)
77// # 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)
78# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
79
80#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_GRADIENT_LEFT_RIGHT
81
82# define RGB_MATRIX_HUE_STEP 8
83# define RGB_MATRIX_SAT_STEP 8
84# define RGB_MATRIX_VAL_STEP 8
85# define RGB_MATRIX_SPD_STEP 10
86
87/* Disable the animations you don't want/need. You will need to disable a good number of these *
88 * because they take up a lot of space. Disable until you can successfully compile your firmware. */
89 # define DISABLE_RGB_MATRIX_ALPHAS_MODS
90// # define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
91// # define DISABLE_RGB_MATRIX_BREATHING
92// # define DISABLE_RGB_MATRIX_CYCLE_ALL
93// # define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
94// # define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
95// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
96// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
97// # define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
98// # define DISABLE_RGB_MATRIX_DUAL_BEACON
99// # define DISABLE_RGB_MATRIX_RAINBOW_BEACON
100// # define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
101// # define DISABLE_RGB_MATRIX_RAINDROPS
102// # define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
103 # define DISABLE_RGB_MATRIX_TYPING_HEATMAP
104// # define DISABLE_RGB_MATRIX_DIGITAL_RAIN
105// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE
106// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
107 # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
108// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
109// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
110// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
111// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
112 # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
113// # define DISABLE_RGB_MATRIX_SPLASH
114// # define DISABLE_RGB_MATRIX_MULTISPLASH
115// # define DISABLE_RGB_MATRIX_SOLID_SPLASH
116// # define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
117#endif
diff --git a/keyboards/crkbd/keymaps/devdev/keymap.c b/keyboards/crkbd/keymaps/devdev/keymap.c
new file mode 100644
index 000000000..4da3fcaa6
--- /dev/null
+++ b/keyboards/crkbd/keymaps/devdev/keymap.c
@@ -0,0 +1,410 @@
1/* Copyright 2020 Dane Evans
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// CRKBD
18
19#include QMK_KEYBOARD_H
20
21
22char layer_state_str[24];
23
24
25 enum userspace_layers {
26 _DEFAULTS = 0,
27 _COLEMAK = 0,
28 _COLEMAKDH,
29 _QWERTY,
30 _NUM,
31 _SYM,
32 _COMMAND,
33 _NUMPAD,
34 _SWITCH,
35 _MOVE,
36
37};
38
39const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
40
41 // colemak
42 [_COLEMAK] = LAYOUT(
43 //,-----------------------------------------------------. ,-----------------------------------------------------.
44 LT(_NUMPAD,KC_TAB), KC_Q, KC_W, KC_F, KC_P, KC_G, LT(_SWITCH,KC_J), KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
45 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
46 KC_LSFT, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I,LT(_NUMPAD,KC_O),KC_QUOT,
47 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
48 KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
49 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
50 KC_LGUI, MO(_NUM), KC_SPC, KC_ENT, MO(_SYM), KC_LALT
51 //`--------------------------' `--------------------------'
52 ),
53
54 // colemak DH
55 [_COLEMAKDH] = LAYOUT(
56 //,-----------------------------------------------------. ,-----------------------------------------------------.
57 LT(_NUMPAD,KC_TAB), KC_Q, KC_W, KC_F, KC_P, KC_B, LT(_SWITCH,KC_J), KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
58 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
59 KC_LSFT, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I,LT(_NUMPAD,KC_O),KC_QUOT,
60 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
61 KC_LCTL, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
62 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
63 KC_LGUI, MO(_NUM), KC_SPC, KC_ENT, MO(_SYM), KC_LALT
64 //`--------------------------' `--------------------------'
65 ),
66
67 // qwerty
68 [_QWERTY] = LAYOUT(
69 //,-----------------------------------------------------. ,-----------------------------------------------------.
70 KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, LT(_SWITCH,KC_Y), KC_U, KC_I, KC_O, KC_P, KC_TRNS,
71 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
72 KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, LT(_NUMPAD,KC_SCLN), KC_TRNS,
73 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
74 KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS,
75 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
76 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
77 //`--------------------------' `--------------------------'
78 ),
79
80
81
82 // numbers - L thumb
83 [_NUM] = LAYOUT(
84 //,-----------------------------------------------------. ,-----------------------------------------------------.
85 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
86 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
87 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_WH_U, KC_PGUP, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_DEL,
88 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
89 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_WH_D, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
90 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
91 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(_COMMAND), KC_TRNS
92 //`--------------------------' `--------------------------'
93 ),
94
95 // symbols - R thumb
96 [_SYM] = LAYOUT(
97 //,-----------------------------------------------------. ,-----------------------------------------------------.
98 KC_ESC, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
99 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
100 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,
101 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
102 KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,
103 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
104 KC_TRNS, MO(_COMMAND), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
105 //`--------------------------' `--------------------------'
106 ),
107
108 // commands - both thumbs
109 [_COMMAND] = LAYOUT(
110 //,-----------------------------------------------------. ,-----------------------------------------------------.
111 RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO,
112 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
113 RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, DF(1), DF(0), C(G(KC_LEFT)), KC_NO, KC_NO, C(G(KC_RGHT)), KC_NO, KC_NO,
114 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
115 RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_NO, DF(2), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
116 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
117 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
118 //`--------------------------' `--------------------------'
119 ),
120
121 // numpad
122 [_NUMPAD] = LAYOUT(
123 //,-----------------------------------------------------. ,-----------------------------------------------------.
124 LT(0,KC_NO), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_CIRC, KC_P7, KC_P8, KC_P9, KC_ASTR, KC_BSPC,
125 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
126 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MINS, KC_P4, KC_P5, KC_P6, KC_EQL, KC_DEL,
127 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
128 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PLUS, KC_P1, KC_P2, KC_P3, KC_SLSH, KC_NO,
129 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
130 OSM(MOD_MEH), KC_NO, KC_TRNS, KC_ENT, KC_P0, KC_PDOT
131 //`--------------------------' `--------------------------'
132 ),
133
134 // layer switcher
135 [_SWITCH] = LAYOUT(
136 //,-----------------------------------------------------. ,-----------------------------------------------------.
137 TO(0), TO(1), TO(2), TO(3), TO(4), TO(5), KC_NO, TO(7), KC_NO, KC_NO, KC_NO, RESET,
138 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
139 KC_NO, KC_NO, KC_BRIU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, EEP_RST,
140 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
141 KC_SYSTEM_SLEEP, KC_NO, KC_BRID, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
142 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
143 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
144 //`--------------------------' `--------------------------'
145
146 ),
147
148 // amovement
149 [_MOVE] = LAYOUT(
150 //,-----------------------------------------------------. ,-----------------------------------------------------.
151 LT(0,KC_NO), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_UP, KC_PGUP, KC_NO, KC_NO, KC_NO,
152 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
153 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_ENT, KC_RGHT, KC_NO, KC_NO, KC_NO,
154 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
155 KC_APP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_DOWN, KC_PGDN, KC_DEL, KC_NO, KC_NO,
156 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
157 KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO
158 //`--------------------------' `--------------------------'
159 )
160
161};
162
163
164// it appears that these are different to the board numbering.
165// when you specify n here, it lightss up n+1 on the board diagram - actually may be an entirely different pattern
166
167// _QWERTY,
168// Light on inner column and underglow
169const rgblight_segment_t PROGMEM layer_qwerty_lights[] = RGBLIGHT_LAYER_SEGMENTS(
170 {0, 10, HSV_AZURE}
171);
172
173// _COLEMAKDH,
174// Light on inner column and underglow
175const rgblight_segment_t PROGMEM layer_colemakdh_lights[] = RGBLIGHT_LAYER_SEGMENTS(
176 {0, 10, HSV_RED}
177);
178
179// _NUM,
180// Light on inner column and underglow
181const rgblight_segment_t PROGMEM layer_num_lights[] = RGBLIGHT_LAYER_SEGMENTS(
182 {0, 10, HSV_TEAL}
183);
184// _SYMBOL,
185// Light on inner column and underglow
186const rgblight_segment_t PROGMEM layer_symbol_lights[] = RGBLIGHT_LAYER_SEGMENTS(
187 {0, 10, HSV_BLUE}
188);
189// _COMMAND,
190// Light on inner column and underglow
191const rgblight_segment_t PROGMEM layer_command_lights[] = RGBLIGHT_LAYER_SEGMENTS(
192 {0, 10, HSV_PURPLE}
193);
194
195
196//_NUMPAD
197//havent worked out how to do each side individually either
198const rgblight_segment_t PROGMEM layer_numpad_lights[] = RGBLIGHT_LAYER_SEGMENTS(
199{0, 10, HSV_ORANGE}
200);
201const rgblight_segment_t PROGMEM layer_numpad_rh_lights[] = RGBLIGHT_LAYER_SEGMENTS(
202 {0, 10, HSV_ORANGE},
203 {10, 5, HSV_BLUE},
204 {15, 3, HSV_BLUE},
205 {18, 3, HSV_BLUE}
206);
207
208// _MOVE,
209// Light on inner column and underglow
210const rgblight_segment_t PROGMEM layer_move_lights[] = RGBLIGHT_LAYER_SEGMENTS(
211 {0, 10, HSV_PINK}
212);
213
214// _SWITCHER // light up top row
215const rgblight_segment_t PROGMEM layer_switcher_lights[] = RGBLIGHT_LAYER_SEGMENTS(
216 {0, 6, HSV_GREEN},
217 {9, 2, HSV_GREEN},
218 {17, 2, HSV_GREEN},
219 {23, 2, HSV_GREEN}
220);
221
222
223// Now define the array of layers. Later layers take precedence
224const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
225 layer_qwerty_lights,
226 layer_colemakdh_lights,
227 layer_num_lights,// overrides layer 1
228 layer_symbol_lights,
229 layer_command_lights,
230 layer_numpad_lights,
231 layer_numpad_rh_lights,
232 layer_move_lights,
233 layer_switcher_lights // Overrides other layers
234);
235
236void keyboard_post_init_user(void) {
237 // Enable the LED layers
238 rgblight_layers = my_rgb_layers;
239 rgblight_mode(10);// haven't found a way to set this in a more useful way
240
241}
242
243
244layer_state_t layer_state_set_user(layer_state_t state) {
245 rgblight_set_layer_state(0, layer_state_cmp(state, _DEFAULTS) && layer_state_cmp(default_layer_state,_QWERTY));
246 rgblight_set_layer_state(1, layer_state_cmp(state, _DEFAULTS) && layer_state_cmp(default_layer_state,_QWERTY));
247
248 rgblight_set_layer_state(2, layer_state_cmp(state, _NUM));
249 rgblight_set_layer_state(3, layer_state_cmp(state, _SYM));
250 rgblight_set_layer_state(4, layer_state_cmp(state, _COMMAND));
251 rgblight_set_layer_state(5, layer_state_cmp(state, _NUMPAD));
252 if (!is_keyboard_master())
253 rgblight_set_layer_state(6, layer_state_cmp(state, _NUMPAD));
254 rgblight_set_layer_state(7, layer_state_cmp(state, _MOVE));
255 rgblight_set_layer_state(8, layer_state_cmp(state, _SWITCH));
256 return state;
257}
258
259/*
260bool led_update_user(led_t led_state) {
261 rgblight_set_layer_state(0, led_state.caps_lock);
262 return true;
263}
264*/
265
266
267
268//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
269#ifdef OLED_DRIVER_ENABLE
270oled_rotation_t oled_init_user(oled_rotation_t rotation) {
271 if (!is_keyboard_master()) {
272 return OLED_ROTATION_180; // flips the display 180 degrees if offhand
273 }
274 return rotation;
275}
276// When add source files to SRC in rules.mk, you can use functions.
277const char *read_layer_state(void);
278const char *read_logo(void);
279void set_keylog(uint16_t keycode, keyrecord_t *record);
280const char *read_keylog(void);
281const char *read_keylogs(void);
282
283
284const char *read_mode_icon(bool swap);
285// const char *read_host_led_state(void);
286// void set_timelog(void);
287// const char *read_timelog(void);
288
289
290void oled_render_layer_state(void) {
291 char string [24];
292 switch (get_highest_layer(default_layer_state|layer_state))
293 {
294 case _QWERTY:
295 oled_write_ln_P(PSTR("Layer: QWERTY"),false);
296 break;
297 case _COLEMAK:
298 oled_write_ln_P(PSTR("Layer: COLEMAK"),false);
299 break;
300 case _COLEMAKDH:
301 oled_write_ln_P(PSTR("Layer: COLEMAKDH"),false);
302 break;
303 case _NUM:
304 oled_write_ln_P(PSTR("Layer: Numbers"),false);
305 break;
306 case _SYM:
307 oled_write_ln_P(PSTR("Layer: Symbols"),false);
308 break;
309 case _COMMAND:
310 oled_write_ln_P(PSTR("Layer: Command"),false);
311 break;
312 case _NUMPAD:
313 oled_write_ln_P(PSTR("Layer: Numpad"),false);
314 break;
315 case _MOVE:
316 oled_write_ln_P(PSTR("Layer: Movement"),false);
317 break;
318 case _SWITCH:
319 oled_write_ln_P(PSTR("Layer: Layer Switch"),false);
320 break;
321 default:
322 snprintf(string, sizeof(string), "%ld",layer_state);
323 oled_write_P(PSTR("Layer: Undef-"),false);
324 oled_write_ln(string, false);
325 }
326 }
327
328/*
329void matrix_render_user(struct CharacterMatrix *matrix) {
330 if (has_usb()) {
331 // If you want to change the display of OLED, you need to change here
332 matrix_write_ln(matrix, read_layer_state());
333 matrix_write_ln(matrix, read_keylog());
334 //matrix_write_ln(matrix, read_keylogs());
335 //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
336 //matrix_write_ln(matrix, read_host_led_state());
337 //matrix_write_ln(matrix, read_timelog());
338 } else {
339 matrix_write(matrix, read_logo());
340 }
341}
342*/
343
344char keylog_str[24] = {};
345const char code_to_name[60] = {
346 ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f',
347 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
348 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
349 '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
350 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\',
351 '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
352
353void set_keylog(uint16_t keycode, keyrecord_t *record) {
354 char name = ' ';
355 if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) ||
356 (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; }
357 if (keycode < 60) {
358 name = code_to_name[keycode];
359 }
360
361 // update keylog
362 snprintf(keylog_str, sizeof(keylog_str), "%dx%d, k%2d : %c",
363 record->event.key.row, record->event.key.col,
364 keycode, name);
365}
366
367void oled_render_keylog(void) {
368 oled_write(keylog_str, false);
369}
370
371void render_bootmagic_status(bool status) {
372 /* Show Ctrl-Gui Swap options */
373 static const char PROGMEM logo[][2][3] = {
374 {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
375 {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
376 };
377 if (status) {
378 oled_write_ln_P(logo[0][0], false);
379 oled_write_ln_P(logo[0][1], false);
380 } else {
381 oled_write_ln_P(logo[1][0], false);
382 oled_write_ln_P(logo[1][1], false);
383 }
384}
385
386void oled_render_logo(void) {
387 static const char PROGMEM crkbd_logo[] = {
388 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
389 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
390 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
391 0};
392 oled_write_P(crkbd_logo, false);
393}
394
395void oled_task_user(void) {
396 if (is_master) {
397 oled_render_layer_state();
398 oled_render_keylog();
399 } else {
400 oled_render_logo();
401 }
402}
403
404bool process_record_user(uint16_t keycode, keyrecord_t *record) {
405 if (record->event.pressed) {
406 set_keylog(keycode, record);
407 }
408 return true;
409}
410#endif // OLED_DRIVER_ENABLE \ No newline at end of file
diff --git a/keyboards/crkbd/keymaps/devdev/rules.mk b/keyboards/crkbd/keymaps/devdev/rules.mk
new file mode 100644
index 000000000..58e90c811
--- /dev/null
+++ b/keyboards/crkbd/keymaps/devdev/rules.mk
@@ -0,0 +1,4 @@
1MOUSEKEY_ENABLE = yes
2EXTRAKEY_ENABLE = yes
3RGBLIGHT_ENABLE = yes
4OLED_DRIVER_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/minimacro5/keymaps/devdev/keymap.c b/keyboards/minimacro5/keymaps/devdev/keymap.c
new file mode 100644
index 000000000..dc5a9b0de
--- /dev/null
+++ b/keyboards/minimacro5/keymaps/devdev/keymap.c
@@ -0,0 +1,126 @@
1/* Copyright 2020 Dane Evans
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// MINI MACRO 5
17
18#include QMK_KEYBOARD_H
19
20enum layers {
21 _MAIN,
22 _MEDIA,
23 _DISCORD,
24 _PHOTOSHOP
25};
26
27// Tap Dance declarations
28enum tap_dances{
29 TD_TO_DISCORD,
30 TD_TO_PHOTOSHOP,
31 TD_TO_MEDIA,
32 TD_TO_MAIN,
33 TD_RESET_SLIDER
34
35};
36
37
38void encoder_update_user(uint8_t index, bool clockwise) {
39 if (index == 0) { /* First encoder*/
40 switch(biton32(layer_state)){
41 case _MAIN:
42 if (clockwise) {
43 tap_code(KC_VOLU);
44 } else {
45 tap_code(KC_VOLD);
46 }
47 break;
48 case _MEDIA:
49 if (clockwise) {
50 tap_code(KC_VOLU);
51 } else {
52 tap_code(KC_VOLD);
53 }
54 break;
55 case _DISCORD:
56 if (clockwise) {
57 tap_code(KC_VOLU);
58 } else {
59 tap_code(KC_VOLD);
60 }
61 break;
62 case _PHOTOSHOP:
63 if (clockwise) {
64 tap_code(KC_UP);
65 } else {
66 tap_code(KC_DOWN);
67 }
68 break;
69 default:
70 if (clockwise) {
71 tap_code(KC_VOLU);
72 } else {
73 tap_code(KC_VOLD);
74 }
75 break;
76 }
77 }
78}
79
80//
81const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //buttion closest to usb is first
82 [_MAIN] = LAYOUT_ortho_1x5(
83 TD(TD_TO_DISCORD), TO(_DISCORD), KC_C, RGB_TOG, TD(TD_TO_PHOTOSHOP)
84 ),
85 [_MEDIA] = LAYOUT_ortho_1x5(
86 TD(TD_TO_MAIN), KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_STOP
87 ),
88 [_DISCORD] = LAYOUT_ortho_1x5(
89 TD(TD_TO_MAIN), TD(TD_TO_MEDIA), KC_Q, KC_R, MEH(KC_UP)
90 )
91 ,
92 [_PHOTOSHOP] = LAYOUT_ortho_1x5(
93 TD(TD_RESET_SLIDER) , C(KC_Z), C(KC_Y), KC_P, KC_G
94 )
95};
96
97layer_state_t layer_state_set_user(layer_state_t state) {
98
99 if (layer_state_cmp(state, _MAIN)) // this one not working
100 rgblight_sethsv_at(HSV_GREEN, 0);
101 if (layer_state_cmp(state, _MEDIA))
102 rgblight_sethsv_at(HSV_RED, 0);
103 if (layer_state_cmp(state, _DISCORD))
104 rgblight_sethsv_at(HSV_BLUE, 0);
105 if (layer_state_cmp(state, _PHOTOSHOP))
106 rgblight_sethsv_at(HSV_PURPLE, 0);
107 return state;
108}
109
110void keyboard_post_init_user(void) {
111 //rgblight_mode(1);
112 rgblight_sethsv_at(HSV_GREEN, 0);
113}
114
115// Tap Dance definitions
116qk_tap_dance_action_t tap_dance_actions[] = {
117 // Tap once for Escape, twice for Caps Lock
118 [TD_TO_DISCORD] = ACTION_TAP_DANCE_LAYER_MOVE(KC_MUTE, _DISCORD),
119 [TD_TO_PHOTOSHOP] = ACTION_TAP_DANCE_LAYER_MOVE(KC_E, _PHOTOSHOP),
120 [TD_TO_MEDIA] = ACTION_TAP_DANCE_LAYER_MOVE(KC_E, _MEDIA),
121 [TD_TO_MAIN] = ACTION_TAP_DANCE_LAYER_MOVE(KC_MUTE, _MAIN),
122 [TD_RESET_SLIDER] = ACTION_TAP_DANCE_LAYER_MOVE(KC_0, _MAIN)
123};
124
125
126
diff --git a/keyboards/minimacro5/keymaps/devdev/rules.mk b/keyboards/minimacro5/keymaps/devdev/rules.mk
new file mode 100644
index 000000000..1c1ed316a
--- /dev/null
+++ b/keyboards/minimacro5/keymaps/devdev/rules.mk
@@ -0,0 +1,2 @@
1RGBLIGHT_ENABLE = yes
2TAP_DANCE_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/navi10/keymaps/devdev/config.h b/keyboards/navi10/keymaps/devdev/config.h
new file mode 100644
index 000000000..dba45a5f2
--- /dev/null
+++ b/keyboards/navi10/keymaps/devdev/config.h
@@ -0,0 +1,35 @@
1/*
2Copyright 2019 Ethan Durrant (emdarcher)
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/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
20#undef DEBOUNCE
21#define DEBOUNCE 1
22
23#define TAPPING_TERM 220
24
25#ifdef RGBLIGHT_ENABLE
26 #define RGB_DI_PIN D3
27 #define RGBLED_NUM 3
28
29 #define RGBLIGHT_LIMIT_VAL 120
30 #define RGBLIGHT_HUE_STEP 10
31 #define RGBLIGHT_SAT_STEP 17
32 #define RGBLIGHT_VAL_STEP 17
33
34
35#endif
diff --git a/keyboards/navi10/keymaps/devdev/keymap.c b/keyboards/navi10/keymaps/devdev/keymap.c
new file mode 100644
index 000000000..b0d43ebc6
--- /dev/null
+++ b/keyboards/navi10/keymaps/devdev/keymap.c
@@ -0,0 +1,263 @@
1/* Copyright 2019 Ethan Durrant (emdarcher)
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 // NAVI 10
18#include QMK_KEYBOARD_H
19
20#define INDICATOR_LED B5
21
22
23#define _ML1 2
24#define _FN2 3
25#define _PR3 4
26#define _GI4 4
27
28
29#define HS_RED 0,255
30#define HS_WHITE 0, 0
31#define HS_ORANGE 28, 255
32#define HS_GREEN 85, 255
33#define HS_TURQUOISE 123, 90
34#define HS_CYAN 128, 255
35#define HS_AZURE 132, 102
36#define HS_BLUE 170, 255
37#define HS_PURPLE 191, 255
38#define HS_MAGENTA 213, 255
39
40
41//create the tap type
42typedef struct {
43 bool is_press_action;
44 int state;
45} tap;
46
47//tap dance states
48enum {
49 // uses https://beta.docs.qmk.fm/using-qmk/software-features/feature_tap_dance
50 SINGLE_TAP = 1,
51 SINGLE_HOLD = 2,
52 DOUBLE_TAP = 3,
53 TRIPLE_TAP = 4,
54};
55
56//tap dance keys
57enum {
58 TAPPY_KEY = 0
59};
60
61enum custom_keycodes { // git macros
62 M_G_HERE = SAFE_RANGE,
63 M_G_PUSH,
64 M_G_PULL,
65 M_G_ADD,
66 M_G_COMM
67};
68
69//function to handle all the tap dances
70int cur_dance(qk_tap_dance_state_t *state);
71
72//functions for each tap dance
73void tk_finished(qk_tap_dance_state_t *state, void *user_data);
74void tk_reset(qk_tap_dance_state_t *state, void *user_data);
75
76// define the macros in here
77bool process_record_user(uint16_t keycode, keyrecord_t *record) {
78 switch (keycode) {
79 // open git bash here
80 case M_G_HERE:
81 if (record->event.pressed) {
82 SEND_STRING(SS_TAP(X_APP)"s");
83 } else {
84 // when keycode M_G_HERE is released
85 }
86 break;
87
88 //git push
89 case M_G_PUSH:
90 if (record->event.pressed) {
91 // when keycode M_G_PUSH is pressed
92 SEND_STRING("git push"SS_TAP(X_ENTER));
93 } else {
94 // when keycode M_G_PUSH is released
95 }
96 break;
97
98 // git pull
99 case M_G_PULL:
100 if (record->event.pressed) {
101 SEND_STRING("git pull"SS_TAP(X_ENTER));
102 }
103 break;
104
105 // git add
106 case M_G_ADD:
107 if (record->event.pressed) {
108 SEND_STRING("git add ");
109 }
110 break;
111
112 // git commit
113 case M_G_COMM: // git commit
114 if (record->event.pressed) {
115 SEND_STRING("git commit -m ' ");
116 }
117 break;
118 }
119 return true;
120};
121
122
123
124const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
125 // Base
126 [0] = LAYOUT(
127 TD(TAPPY_KEY),KC_HOME, KC_PGUP,
128 KC_DEL, KC_END, KC_PGDN,
129
130 KC_UP,
131 KC_LEFT, KC_DOWN, KC_RIGHT),
132
133 // media function layer, toggled on a single tap
134 [_ML1] = LAYOUT(
135 KC_TRNS, KC_BSPC, KC_VOLU,
136 KC_MUTE, KC_ENTER, KC_VOLD,
137
138 KC_SPC,
139 KC_MRWD, KC_MPLY, KC_MFFD),
140
141 // F keys, double tap to get here
142 [_FN2] = LAYOUT(
143 TO(0), KC_F3, KC_F5,
144 KC_F2, KC_F4, KC_F6,
145
146 KC_F7,
147 KC_F9, KC_F8, KC_F10),
148
149 // programming, triple tap to get here
150 [_PR3] = LAYOUT(
151 TO(0), A(KC_F7), S(KC_F10), //atmel, segger, pycharm
152 KC_F2, KC_F4, S(KC_F9),
153
154 KC_UP,
155 KC_LEFT, KC_DOWN, KC_RIGHT),
156
157 // git function layer, hold to get here
158 [_GI4] = LAYOUT(
159 KC_TRNS, M_G_PUSH, M_G_ADD,
160 M_G_HERE, M_G_PULL, M_G_COMM,
161
162 RGB_VAI,
163 RGB_TOG, RGB_VAD, RGB_MOD),
164
165
166
167};
168
169//determine the current tap dance state
170int cur_dance (qk_tap_dance_state_t *state){
171 if(state->count == 1)
172 {
173 //if a tap was registered
174 if(!state->pressed)
175 {
176 //if not still pressed, then was a single tap
177 return SINGLE_TAP;
178 } else
179 {
180 //if still pressed/held down, then it's a single hold
181 return SINGLE_HOLD;
182 }
183 }
184 else if (state->count == 2)
185 {
186 return DOUBLE_TAP;
187 }
188
189 else if (state->count == 3)
190 {
191 return TRIPLE_TAP;
192 }
193 else
194 {
195 return 8;
196 }
197}
198
199//initialize the tap structure for the tap key
200static tap tk_tap_state = {
201 .is_press_action = true,
202 .state = 0
203};
204
205//functions that control what our tap dance key does
206void tk_finished(qk_tap_dance_state_t *state, void *user_data){
207 tk_tap_state.state = cur_dance(state);
208 uint8_t val = rgblight_get_val();
209 switch(tk_tap_state.state){
210 case SINGLE_TAP:
211 //send desired key when tapped:
212 //setting to the media layer
213 if(layer_state_is(_ML1)){
214 //if already active, toggle it to off
215 layer_off(_ML1);
216 rgblight_sethsv(HS_PURPLE, val);
217 } else {
218 //turn on the media layer
219 layer_on(_ML1);
220 rgblight_sethsv_at(HS_RED, 0, 0);
221 rgblight_sethsv_at(HS_GREEN, 0, 1);
222 rgblight_sethsv_at(HS_BLUE, val, 2);
223 }
224 break;
225
226 case DOUBLE_TAP:
227 layer_on(_FN2);
228 rgblight_sethsv_at(HS_RED, 0, 0);
229 rgblight_sethsv_at(HS_GREEN, val, 1);
230 rgblight_sethsv_at(HS_BLUE, 0, 2);
231 break;
232 case TRIPLE_TAP:
233 layer_on(_PR3);
234 rgblight_sethsv_at(HS_RED, 0, 0);
235 rgblight_sethsv_at(HS_GREEN, val, 1);
236 rgblight_sethsv_at(HS_BLUE, val, 2);
237 break;
238 case SINGLE_HOLD:
239 //set to desired layer when held:
240 //setting to the function layer
241 layer_on(_GI4);
242 rgblight_sethsv_at(HS_RED, val, 0);
243 rgblight_sethsv_at(HS_GREEN, val, 1);
244 rgblight_sethsv_at(HS_BLUE, val, 2);
245 break;
246 }
247}
248
249void tk_reset(qk_tap_dance_state_t *state, void *user_data){
250 //if held and released, leave the layer
251 if(tk_tap_state.state == SINGLE_HOLD){
252 layer_off(_GI4);
253 uint8_t val = rgblight_get_val();
254 rgblight_sethsv(HS_PURPLE, val);
255 }
256 //reset the state
257 tk_tap_state.state = 0;
258}
259
260//associate the tap dance key with its functionality
261qk_tap_dance_action_t tap_dance_actions[] = {
262 [TAPPY_KEY] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, tk_finished, tk_reset, TAPPING_TERM)
263};
diff --git a/keyboards/navi10/keymaps/devdev/rules.mk b/keyboards/navi10/keymaps/devdev/rules.mk
new file mode 100644
index 000000000..1c1ed316a
--- /dev/null
+++ b/keyboards/navi10/keymaps/devdev/rules.mk
@@ -0,0 +1,2 @@
1RGBLIGHT_ENABLE = yes
2TAP_DANCE_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/sofle/keymaps/devdev/config.h b/keyboards/sofle/keymaps/devdev/config.h
new file mode 100644
index 000000000..7d597d991
--- /dev/null
+++ b/keyboards/sofle/keymaps/devdev/config.h
@@ -0,0 +1,130 @@
1 /* Copyright 2021 Dane Evans
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
19//#define USE_MATRIX_I2C
20
21/* Select hand configuration */
22
23///https://thomasbaart.nl/2018/12/01/reducing-firmware-size-in-qmk/
24
25
26#define MASTER_LEFT
27// #define MASTER_RIGHT
28// #define EE_HANDS
29
30#define CUSTOM_FONT
31
32#define CUSTOM_LAYER_READ //if you remove this it causes issues - needs better guarding
33
34
35#define TAPPING_FORCE_HOLD
36#ifdef TAPPING_TERM
37 #undef TAPPING_TERM
38 #define TAPPING_TERM 200
39#endif
40#define ENCODER_DIRECTION_FLIP
41
42
43#define RGBLIGHT_SLEEP
44//
45#define RGBLIGHT_LAYERS
46
47/* ws2812 RGB LED */
48#define RGB_DI_PIN D3
49
50
51#ifdef RGB_MATRIX_ENABLE
52#define RGBLED_NUM 35 // Number of LEDs
53#define RGBLED_NUM 35 // Number of LEDs
54#define DRIVER_LED_TOTAL RGBLED_NUM
55#endif
56
57#ifdef RGBLIGHT_ENABLE
58 #undef RGBLED_NUM
59
60 //#define RGBLIGHT_ANIMATIONS
61 //#define RGBLIGHT_EFFECT_BREATHING
62 #define RGBLIGHT_EFFECT_RAINBOW_MOOD
63 //#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
64 //#define RGBLIGHT_EFFECT_SNAKE
65 //#define RGBLIGHT_EFFECT_KNIGHT
66 //#define RGBLIGHT_EFFECT_CHRISTMAS
67 //#define RGBLIGHT_EFFECT_STATIC_GRADIENT
68 //#define RGBLIGHT_EFFECT_RGB_TEST
69 //#define RGBLIGHT_EFFECT_ALTERNATING
70 //#define RGBLIGHT_EFFECT_TWINKLE
71
72 #define RGBLED_NUM 70
73 //#define RGBLED_SPLIT
74 #define RGBLED_SPLIT { 35, 35 } // haven't figured out how to use this yet
75
76 //#define RGBLED_NUM 30
77 #define RGBLIGHT_LIMIT_VAL 120
78 #define RGBLIGHT_HUE_STEP 10
79 #define RGBLIGHT_SAT_STEP 17
80 #define RGBLIGHT_VAL_STEP 17
81#endif
82
83#ifdef RGB_MATRIX_ENABLE
84# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
85// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
86// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
87# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
88# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
89// # 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)
90// # 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)
91# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
92
93#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_GRADIENT_LEFT_RIGHT
94
95# define RGB_MATRIX_HUE_STEP 8
96# define RGB_MATRIX_SAT_STEP 8
97# define RGB_MATRIX_VAL_STEP 8
98# define RGB_MATRIX_SPD_STEP 10
99
100/* Disable the animations you don't want/need. You will need to disable a good number of these *
101 * because they take up a lot of space. Disable until you can successfully compile your firmware. */
102// # define DISABLE_RGB_MATRIX_ALPHAS_MODS
103// # define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
104// # define DISABLE_RGB_MATRIX_BREATHING
105// # define DISABLE_RGB_MATRIX_CYCLE_ALL
106// # define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
107// # define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
108// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
109// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
110// # define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
111// # define DISABLE_RGB_MATRIX_DUAL_BEACON
112// # define DISABLE_RGB_MATRIX_RAINBOW_BEACON
113// # define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
114// # define DISABLE_RGB_MATRIX_RAINDROPS
115// # define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
116// # define DISABLE_RGB_MATRIX_TYPING_HEATMAP
117// # define DISABLE_RGB_MATRIX_DIGITAL_RAIN
118// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE
119// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
120// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
121// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
122// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
123// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
124// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
125// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
126// # define DISABLE_RGB_MATRIX_SPLASH
127// # define DISABLE_RGB_MATRIX_MULTISPLASH
128// # define DISABLE_RGB_MATRIX_SOLID_SPLASH
129// # define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
130#endif \ No newline at end of file
diff --git a/keyboards/sofle/keymaps/devdev/keymap.c b/keyboards/sofle/keymaps/devdev/keymap.c
new file mode 100644
index 000000000..7d100abb6
--- /dev/null
+++ b/keyboards/sofle/keymaps/devdev/keymap.c
@@ -0,0 +1,571 @@
1
2 /* Copyright 2021 Dane Evans
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 // SOFLE RGB
18#include <stdio.h>
19
20#include QMK_KEYBOARD_H
21
22#define INDICATOR_BRIGHTNESS 30
23
24#define HSV_OVERRIDE_HELP(h, s, v, Override) h, s , Override
25#define HSV_OVERRIDE(hsv, Override) HSV_OVERRIDE_HELP(hsv,Override)
26
27// Light combinations
28#define SET_INDICATORS(hsv) \
29 {0, 1, HSV_OVERRIDE_HELP(hsv, INDICATOR_BRIGHTNESS)}, \
30 {35+0, 1, hsv}
31#define SET_UNDERGLOW(hsv) \
32 {1, 5, hsv}, \
33 {35+1, 5,hsv}
34#define SET_NUMPAD(hsv) \
35 {35+15, 5, hsv},\
36 {35+22, 3, hsv},\
37 {35+27, 3, hsv}
38#define SET_NUMROW(hsv) \
39 {10, 2, hsv}, \
40 {20, 2, hsv}, \
41 {30, 2, hsv}, \
42 {35+ 10, 2, hsv}, \
43 {35+ 20, 2, hsv}, \
44 {35+ 30, 2, hsv}
45#define SET_INNER_COL(hsv) \
46 {33, 4, hsv}, \
47 {35+ 33, 4, hsv}
48
49#define SET_OUTER_COL(hsv) \
50 {7, 4, hsv}, \
51 {35+ 7, 4, hsv}
52#define SET_THUMB_CLUSTER(hsv) \
53 {25, 2, hsv}, \
54 {35+ 25, 2, hsv}
55#define SET_LAYER_ID(hsv) \
56 {0, 1, HSV_OVERRIDE_HELP(hsv, INDICATOR_BRIGHTNESS)}, \
57 {35+0, 1, HSV_OVERRIDE_HELP(hsv, INDICATOR_BRIGHTNESS)}, \
58 {1, 5, hsv}, \
59 {35+1, 5, hsv}, \
60 {7, 4, hsv}, \
61 {35+ 7, 4, hsv}, \
62 {25, 2, hsv}, \
63 {35+ 25, 2, hsv}
64
65
66enum sofle_layers {
67 _DEFAULTS = 0,
68 _QWERTY = 0,
69 _COLEMAK,
70 _COLEMAKDH,
71 _LOWER,
72 _RAISE,
73 _ADJUST,
74 _NUMPAD,
75 _SWITCH
76};
77
78enum custom_keycodes {
79 KC_QWERTY = SAFE_RANGE,
80 KC_COLEMAK,
81 KC_COLEMAKDH,
82 KC_LOWER,
83 KC_RAISE,
84 KC_ADJUST,
85 KC_D_MUTE
86};
87
88const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
89/*
90 * QWERTY
91 * ,-----------------------------------------. ,-----------------------------------------.
92 * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
93 * |------+------+------+------+------+------| |------+------+------+------+------+------|
94 * | TAB | Q | W | E | R | T | | Y | U | I | O | P | Bspc |
95 * |------+------+------+------+------+------| |------+------+------+------+------+------|
96 * |LShift| A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
97 * |------+------+------+------+------+------| MUTE | |DISCORD|------+------+------+------+------+------|
98 * | LCTR | Z | X | C | V | B |-------| |-------| N | M | , | . | / |LShift|
99 * `-----------------------------------------/ / \ \-----------------------------------------'
100 * | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE |RAISE | RCTR | RAlt |
101 * | | | | |/ / \ \ | | | | |
102 * `----------------------------------' '------''---------------------------'
103 */
104 [_QWERTY] = LAYOUT(
105 //,------------------------------------------------. ,---------------------------------------------------.
106 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_SWITCH,KC_6), KC_7, KC_8, KC_9, KC_0, KC_GRV,
107 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
108 LT(_NUMPAD,KC_TAB),KC_Q,KC_W,KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
109 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
110 KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
111 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
112 KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_D_MUTE,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT,
113 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
114 KC_BSPC, KC_LGUI, KC_LOWER, KC_SPC, KC_ENT , KC_SPC, KC_ENT , KC_RAISE, KC_RCTRL, KC_RALT
115 // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
116),
117
118/*
119 * COLEMAK
120 * ,-----------------------------------------. ,-----------------------------------------.
121 * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
122 * |------+------+------+------+------+------| |------+------+------+------+------+------|
123 * | TAB | Q | W | F | P | G | | J | L | U | Y | ; | Bspc |
124 * |------+------+------+------+------+------| |------+------+------+------+------+------|
125 * |LShift| A | R | S | T | D |-------. ,-------| H | N | E | I | O | ' |
126 * |------+------+------+------+------+------| MUTE | |DISCORD|------+------+------+------+------+------|
127 * | LCTR | Z | X | C | V | B |-------| |-------| K | M | , | . | / |LShift|
128 * `-----------------------------------------/ / \ \-----------------------------------------'
129 * | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE |RAISE | RCTR | RAlt |
130 * | | | | |/ / \ \ | | | | |
131 * `----------------------------------' '------''---------------------------'
132 */
133[_COLEMAK] = LAYOUT(
134 //,------------------------------------------------. ,---------------------------------------------------.
135 KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_SWITCH,KC_6), KC_7, KC_8, KC_9, KC_0, KC_TRNS,
136 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
137 KC_TRNS, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_TRNS,
138 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
139 KC_TRNS, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_TRNS,
140 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
141 KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_TRNS, KC_TRNS,KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS,
142 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
143 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
144 // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
145),
146
147/*
148 * COLEMAK-DH
149 * ,-----------------------------------------. ,-----------------------------------------.
150 * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
151 * |------+------+------+------+------+------| |------+------+------+------+------+------|
152 * | TAB | Q | W | F | P | B | | J | L | U | Y | ; | Bspc |
153 * |------+------+------+------+------+------| |------+------+------+------+------+------|
154 * |LShift| A | R | S | T | G |-------. ,-------| M | N | E | I | O | ' |
155 * |------+------+------+------+------+------| MUTE | |DISCORD|------+------+------+------+------+------|
156 * | LCTR | Z | X | C | D | V |-------| |-------| K | H | , | . | / |LShift|
157 * `-----------------------------------------/ / \ \-----------------------------------------'
158 * | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE |RAISE | RCTR | RAlt |
159 * | | | | |/ / \ \ | | | | |
160 * `----------------------------------' '------''---------------------------'
161 */
162[_COLEMAKDH] = LAYOUT(
163 //,------------------------------------------------. ,---------------------------------------------------.
164 KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_SWITCH,KC_6), KC_7, KC_8, KC_9, KC_0, KC_TRNS,
165 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
166 KC_TRNS, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_TRNS,
167 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
168 KC_TRNS, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_TRNS,
169 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
170 KC_TRNS, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_TRNS, KC_TRNS,KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS,
171 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
172 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
173 // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
174),
175
176/* LOWER
177 * ,-----------------------------------------. ,-----------------------------------------.
178 * | trans| F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
179 * |------+------+------+------+------+------| |------+------+------+------+------+------|
180 * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 |
181 * |------+------+------+------+------+------| |------+------+------+------+------+------|
182 * | trans| ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | | |
183 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
184 * | trans| = | - | + | { | } |-------| |-------| [ | ] | ; | : | \ | Shift|
185 * `-----------------------------------------/ / \ \-----------------------------------------'
186 * | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE |RAISE | RCTR | RAlt |
187 * | | | | |/ / \ \ | | | | |
188 * `----------------------------------' '------''---------------------------'
189 */
190[_LOWER] = LAYOUT(
191 //,------------------------------------------------. ,---------------------------------------------------.
192 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
193 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
194 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
195 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
196 _______, KC_NO, KC_NO, KC_NO, KC_WH_U, KC_PGUP, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_DEL,
197 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
198 _______, KC_NO, KC_NO, KC_NO, KC_WH_D, KC_PGDN,_______, _______,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, _______,
199 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
200 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
201 // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
202),
203/* RAISE
204 * ,----------------------------------------. ,-----------------------------------------.
205 * | | | | | | | | | | | | | |
206 * |------+------+------+------+------+------| |------+------+------+------+------+------|
207 * | Esc | Ins | Pscr | Menu | | | | | PWrd | Up | NWrd | DLine| Bspc |
208 * |------+------+------+------+------+------| |------+------+------+------+------+------|
209 * | Tab | LAt | LCtl |LShift| | Caps |-------. ,-------| | Left | Down | Rigth| Del | Bspc |
210 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
211 * |Shift | Undo | Cut | Copy | Paste| |-------| |-------| | LStr | | LEnd | | Shift|
212 * `-----------------------------------------/ / \ \-----------------------------------------'
213 * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
214 * | | | | |/ / \ \ | | | | |
215 * `----------------------------------' '------''---------------------------'
216 */
217[_RAISE] = LAYOUT(
218 //,------------------------------------------------. ,---------------------------------------------------.
219 _______, _______ , _______ , _______ , _______ , _______, _______, _______ , _______, _______ , _______ ,_______,
220 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
221 _______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, XXXXXXX, KC_CIRC, KC_AMPR,KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
222 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
223 _______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,
224 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
225 _______,KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, XXXXXXX,_______, _______,KC_UNDS, KC_PLUS,KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,
226 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
227 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
228 // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
229),
230/* ADJUST
231 * ,-----------------------------------------. ,-----------------------------------------.
232 * | | | | | | | | | | | | | |
233 * |------+------+------+------+------+------| |------+------+------+------+------+------|
234 * | RESET| | | | | | | | | | | | |
235 * |------+------+------+------+------+------| |------+------+------+------+------+------|
236 * |RGB_TOG|hue^ |sat ^ | bri ^| |COLEMAK|-------. ,-------|desk <| | |desk >| | |
237 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
238 * | mode | hue dn|sat d|bri dn| |QWERTY|-------| |-------| | PREV | PLAY | NEXT | | |
239 * `-----------------------------------------/ / \ \-----------------------------------------'
240 * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
241 * | | | | |/ / \ \ | | | | |
242 * `----------------------------------' '------''---------------------------'
243 */
244 [_ADJUST] = LAYOUT(
245 //,------------------------------------------------. ,---------------------------------------------------.
246 EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
247 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
248 RESET, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
249 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
250 RGB_TOG, RGB_HUI,RGB_SAI, RGB_VAI, KC_COLEMAKDH,KC_COLEMAK, C(G(KC_LEFT)),KC_NO,KC_NO,C(G(KC_RGHT)),XXXXXXX, XXXXXXX,
251 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
252 RGB_MOD, RGB_HUD,RGB_SAD, RGB_VAD, XXXXXXX,KC_QWERTY,XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
253 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
254 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
255 // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
256),
257/* NUMPAD
258 * ,-----------------------------------------. ,-----------------------------------------.
259 * | trans| | | | | | | F6 | F7 | F8 | F9 | F10 | F11 |
260 * |------+------+------+------+------+------| |------+------+------+------+------+------|
261 * | ` | | | | | | | | 7 | 8 | 9 | * | F12 |
262 * |------+------+------+------+------+------| |------+------+------+------+------+------|
263 * | trans| | | | | |-------. ,-------| - | 4 | 5 | 6 | | | |
264 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
265 * | trans| | | | | |-------| |-------| + | 1 | 2 | 3 | \ | Shift|
266 * `-----------------------------------------/ / \ \-----------------------------------------'
267 * | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE | 0 | . | RAlt |
268 * | | | | |/ / \ \ | | | | |
269 * `----------------------------------' '------''---------------------------'
270 */
271[_NUMPAD] = LAYOUT(
272 //,------------------------------------------------. ,---------------------------------------------------.
273 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX,
274 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
275 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_CIRC, KC_P7, KC_P8, KC_P9, KC_ASTR, _______,
276 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
277 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_P4, KC_P5, KC_P6, KC_EQL, KC_PIPE,
278 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
279 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,_______, _______,KC_PLUS, KC_P1, KC_P2, KC_P3, KC_SLSH, _______,
280 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
281 _______, OSM(MOD_MEH), _______, _______, _______, _______, _______, KC_P0, KC_PDOT, _______
282 // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
283),
284
285/* SWITCH
286 * ,-----------------------------------------. ,-----------------------------------------.
287 * | cole | qwer | low |raise | adj |numpd | | | F7 | F8 | F9 | F10 | F11 |
288 * |------+------+------+------+------+------| |------+------+------+------+------+------|
289 * | ` | | | | | | | | 7 | 8 | 9 | * | F12 |
290 * |------+------+------+------+------+------| |------+------+------+------+------+------|
291 * | trans| | | | | |-------. ,-------| - | 4 | 5 | 6 | | | |
292 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
293 * | trans| | | | | |-------| |-------| + | 1 | 2 | 3 | \ | Shift|
294 * `-----------------------------------------/ / \ \-----------------------------------------'
295 * | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE | 0 | . | RAlt |
296 * | | | | |/ / \ \ | | | | |
297 * `----------------------------------' '------''---------------------------'
298 */
299 // layer switcher
300[_SWITCH] = LAYOUT(
301 //,------------------------------------------------. ,---------------------------------------------------.
302 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX,
303 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
304 TO(0), TO(1), TO(2), TO(3), TO(4), TO(5), KC_NO, TO(7), KC_NO, KC_NO, KC_NO, RESET,
305 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
306 KC_NO, KC_NO, KC_BRIU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, EEP_RST,
307 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
308 KC_SYSTEM_SLEEP,KC_NO,KC_BRID,KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
309 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
310 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
311 // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
312
313 ),
314};
315
316#ifdef RGBLIGHT_ENABLE
317char layer_state_str[70];
318// Now define the array of layers. Later layers take precedence
319
320// QWERTY,
321// Light on inner column and underglow
322const rgblight_segment_t PROGMEM layer_qwerty_lights[] = RGBLIGHT_LAYER_SEGMENTS(
323 SET_LAYER_ID(HSV_RED)
324
325);
326const rgblight_segment_t PROGMEM layer_colemakdh_lights[] = RGBLIGHT_LAYER_SEGMENTS(
327 SET_LAYER_ID(HSV_PINK)
328);
329
330// _NUM,
331// Light on outer column and underglow
332const rgblight_segment_t PROGMEM layer_num_lights[] = RGBLIGHT_LAYER_SEGMENTS(
333 SET_LAYER_ID(HSV_TEAL)
334
335);
336// _SYMBOL,
337// Light on inner column and underglow
338const rgblight_segment_t PROGMEM layer_symbol_lights[] = RGBLIGHT_LAYER_SEGMENTS(
339 SET_LAYER_ID(HSV_BLUE)
340
341 );
342// _COMMAND,
343// Light on inner column and underglow
344const rgblight_segment_t PROGMEM layer_command_lights[] = RGBLIGHT_LAYER_SEGMENTS(
345 SET_LAYER_ID(HSV_PURPLE)
346);
347
348//_NUMPAD
349const rgblight_segment_t PROGMEM layer_numpad_lights[] = RGBLIGHT_LAYER_SEGMENTS(
350 SET_INDICATORS(HSV_ORANGE),
351 SET_UNDERGLOW(HSV_ORANGE),
352 SET_NUMPAD(HSV_BLUE),
353 {7, 4, HSV_ORANGE},
354 {25, 2, HSV_ORANGE},
355 {35+6, 4, HSV_ORANGE},
356 {35+25, 2, HSV_ORANGE}
357 );
358// _SWITCHER // light up top row
359const rgblight_segment_t PROGMEM layer_switcher_lights[] = RGBLIGHT_LAYER_SEGMENTS(
360 SET_LAYER_ID(HSV_GREEN),
361 SET_NUMROW(HSV_GREEN)
362);
363
364const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
365
366 layer_qwerty_lights,
367 layer_num_lights,// overrides layer 1
368 layer_symbol_lights,
369 layer_command_lights,
370 layer_numpad_lights,
371 layer_switcher_lights, // Overrides other layers
372 layer_colemakdh_lights
373);
374
375layer_state_t layer_state_set_user(layer_state_t state) {
376 rgblight_set_layer_state(0, layer_state_cmp(state, _DEFAULTS) && layer_state_cmp(default_layer_state,_QWERTY));
377 rgblight_set_layer_state(7, layer_state_cmp(state, _DEFAULTS) && layer_state_cmp(default_layer_state,_COLEMAKDH));
378
379
380 rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
381 rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
382 rgblight_set_layer_state(3, layer_state_cmp(state, _ADJUST));
383 rgblight_set_layer_state(4, layer_state_cmp(state, _NUMPAD));
384 rgblight_set_layer_state(5, layer_state_cmp(state, _SWITCH));
385 return state;
386}
387void keyboard_post_init_user(void) {
388 // Enable the LED layers
389 rgblight_layers = my_rgb_layers;
390
391 rgblight_mode(10);// haven't found a way to set this in a more useful way
392
393}
394#endif
395
396#ifdef OLED_DRIVER_ENABLE
397
398static void render_logo(void) {
399 static const char PROGMEM qmk_logo[] = {
400 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
401 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
402 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
403 };
404
405 oled_write_P(qmk_logo, false);
406}
407
408static void print_status_narrow(void) {
409 // Print current mode
410 oled_write_P(PSTR("\n\n"), false);
411 oled_write_ln_P(PSTR("Dane\nEvans"), false);
412
413 oled_write_ln_P(PSTR(""), false);
414
415 //snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Undef-%ld", layer_state)
416
417
418 switch (get_highest_layer(default_layer_state)) {
419 case _QWERTY:
420 oled_write_ln_P(PSTR("Qwrt"), false);
421 break;
422 case _COLEMAK:
423 oled_write_ln_P(PSTR("Clmk"), false);
424 break;
425 case _COLEMAKDH:
426 oled_write_ln_P(PSTR("CmkDH"), false);
427 break;
428
429 default:
430 oled_write_ln_P(PSTR("Undef"), false);
431 }
432 oled_write_P(PSTR("\n\n"), false);
433 // Print current layer
434 oled_write_ln_P(PSTR("LAYER"), false);
435 switch (get_highest_layer(layer_state)) {
436 case _COLEMAK:
437 case _QWERTY:
438 case _COLEMAKDH:
439 oled_write_P(PSTR("Base\n"), false);
440 break;
441 case _RAISE:
442 oled_write_P(PSTR("Raise"), false);
443 break;
444 case _LOWER:
445 oled_write_P(PSTR("Lower"), false);
446 break;
447 case _ADJUST:
448 oled_write_P(PSTR("Adj\n"), false);
449 break;
450 case _NUMPAD:
451 oled_write_P(PSTR("Nump\n"), false);
452 break;
453 case _SWITCH:
454 oled_write_P(PSTR("Swit\n"), false);
455 break;
456 default:
457 oled_write_ln_P(PSTR("Undef"), false);
458 }
459}
460
461oled_rotation_t oled_init_user(oled_rotation_t rotation) {
462 if (is_keyboard_master()) {
463 return OLED_ROTATION_270;
464 }
465 return rotation;
466}
467
468void oled_task_user(void) {
469 if (is_keyboard_master()) {
470 print_status_narrow();
471 } else {
472 render_logo();
473 }
474}
475
476#endif
477
478bool process_record_user(uint16_t keycode, keyrecord_t *record) {
479 switch (keycode) {
480 case KC_QWERTY:
481 if (record->event.pressed) {
482 set_single_persistent_default_layer(_QWERTY);
483 }
484 return false;
485 case KC_COLEMAK:
486 if (record->event.pressed) {
487 set_single_persistent_default_layer(_COLEMAK);
488 }
489 return false;
490 case KC_COLEMAKDH:
491 if (record->event.pressed) {
492 set_single_persistent_default_layer(_COLEMAKDH);
493 }
494 return false;
495 case KC_LOWER:
496 if (record->event.pressed) {
497 layer_on(_LOWER);
498 update_tri_layer(_LOWER, _RAISE, _ADJUST);
499 } else {
500 layer_off(_LOWER);
501 update_tri_layer(_LOWER, _RAISE, _ADJUST);
502 }
503 return false;
504 case KC_RAISE:
505 if (record->event.pressed) {
506 layer_on(_RAISE);
507 update_tri_layer(_LOWER, _RAISE, _ADJUST);
508 } else {
509 layer_off(_RAISE);
510 update_tri_layer(_LOWER, _RAISE, _ADJUST);
511 }
512 return false;
513 case KC_ADJUST:
514 if (record->event.pressed) {
515 layer_on(_ADJUST);
516 } else {
517 layer_off(_ADJUST);
518 }
519 return false;
520 case KC_D_MUTE:
521 if (record->event.pressed) {
522 register_mods(mod_config(MOD_MEH));
523 register_code(KC_UP);
524 } else {
525 unregister_mods(mod_config(MOD_MEH));
526 unregister_code(KC_UP);
527 }
528 }
529 return true;
530}
531
532#ifdef ENCODER_ENABLE
533
534void encoder_update_user(uint8_t index, bool clockwise) {
535 if (index == 0) {
536 if (clockwise) {
537 tap_code(KC_VOLU);
538 } else {
539 tap_code(KC_VOLD);
540 }
541 } else if (index == 1) {
542 switch (get_highest_layer(layer_state)) {
543 case _COLEMAK:
544 case _QWERTY:
545 case _COLEMAKDH:
546 if (clockwise) {
547 tap_code(KC_PGDOWN);
548 } else {
549 tap_code(KC_PGUP);
550 }
551 break;
552 case _RAISE:
553 case _LOWER:
554 if (clockwise) {
555 tap_code(KC_DOWN);
556 } else {
557 tap_code(KC_UP);
558 }
559 break;
560 default:
561 if (clockwise) {
562 tap_code(KC_WH_D);
563 } else {
564 tap_code(KC_WH_U);
565 }
566 break;
567 }
568 }
569}
570
571#endif
diff --git a/keyboards/sofle/keymaps/devdev/rules.mk b/keyboards/sofle/keymaps/devdev/rules.mk
new file mode 100644
index 000000000..3dffb0368
--- /dev/null
+++ b/keyboards/sofle/keymaps/devdev/rules.mk
@@ -0,0 +1,7 @@
1MOUSEKEY_ENABLE = yes
2EXTRAKEY_ENABLE = yes
3CONSOLE_ENABLE = yes
4RGBLIGHT_ENABLE = yes
5ENCODER_ENABLE = yes
6LTO_ENABLE = yes
7OLED_DRIVER_ENABLE = yes
diff --git a/keyboards/sofle/keymaps/rgb_default/config.h b/keyboards/sofle/keymaps/rgb_default/config.h
new file mode 100644
index 000000000..7d597d991
--- /dev/null
+++ b/keyboards/sofle/keymaps/rgb_default/config.h
@@ -0,0 +1,130 @@
1 /* Copyright 2021 Dane Evans
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
19//#define USE_MATRIX_I2C
20
21/* Select hand configuration */
22
23///https://thomasbaart.nl/2018/12/01/reducing-firmware-size-in-qmk/
24
25
26#define MASTER_LEFT
27// #define MASTER_RIGHT
28// #define EE_HANDS
29
30#define CUSTOM_FONT
31
32#define CUSTOM_LAYER_READ //if you remove this it causes issues - needs better guarding
33
34
35#define TAPPING_FORCE_HOLD
36#ifdef TAPPING_TERM
37 #undef TAPPING_TERM
38 #define TAPPING_TERM 200
39#endif
40#define ENCODER_DIRECTION_FLIP
41
42
43#define RGBLIGHT_SLEEP
44//
45#define RGBLIGHT_LAYERS
46
47/* ws2812 RGB LED */
48#define RGB_DI_PIN D3
49
50
51#ifdef RGB_MATRIX_ENABLE
52#define RGBLED_NUM 35 // Number of LEDs
53#define RGBLED_NUM 35 // Number of LEDs
54#define DRIVER_LED_TOTAL RGBLED_NUM
55#endif
56
57#ifdef RGBLIGHT_ENABLE
58 #undef RGBLED_NUM
59
60 //#define RGBLIGHT_ANIMATIONS
61 //#define RGBLIGHT_EFFECT_BREATHING
62 #define RGBLIGHT_EFFECT_RAINBOW_MOOD
63 //#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
64 //#define RGBLIGHT_EFFECT_SNAKE
65 //#define RGBLIGHT_EFFECT_KNIGHT
66 //#define RGBLIGHT_EFFECT_CHRISTMAS
67 //#define RGBLIGHT_EFFECT_STATIC_GRADIENT
68 //#define RGBLIGHT_EFFECT_RGB_TEST
69 //#define RGBLIGHT_EFFECT_ALTERNATING
70 //#define RGBLIGHT_EFFECT_TWINKLE
71
72 #define RGBLED_NUM 70
73 //#define RGBLED_SPLIT
74 #define RGBLED_SPLIT { 35, 35 } // haven't figured out how to use this yet
75
76 //#define RGBLED_NUM 30
77 #define RGBLIGHT_LIMIT_VAL 120
78 #define RGBLIGHT_HUE_STEP 10
79 #define RGBLIGHT_SAT_STEP 17
80 #define RGBLIGHT_VAL_STEP 17
81#endif
82
83#ifdef RGB_MATRIX_ENABLE
84# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
85// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
86// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
87# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
88# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
89// # 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)
90// # 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)
91# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
92
93#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_GRADIENT_LEFT_RIGHT
94
95# define RGB_MATRIX_HUE_STEP 8
96# define RGB_MATRIX_SAT_STEP 8
97# define RGB_MATRIX_VAL_STEP 8
98# define RGB_MATRIX_SPD_STEP 10
99
100/* Disable the animations you don't want/need. You will need to disable a good number of these *
101 * because they take up a lot of space. Disable until you can successfully compile your firmware. */
102// # define DISABLE_RGB_MATRIX_ALPHAS_MODS
103// # define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
104// # define DISABLE_RGB_MATRIX_BREATHING
105// # define DISABLE_RGB_MATRIX_CYCLE_ALL
106// # define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
107// # define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
108// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
109// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
110// # define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
111// # define DISABLE_RGB_MATRIX_DUAL_BEACON
112// # define DISABLE_RGB_MATRIX_RAINBOW_BEACON
113// # define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
114// # define DISABLE_RGB_MATRIX_RAINDROPS
115// # define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
116// # define DISABLE_RGB_MATRIX_TYPING_HEATMAP
117// # define DISABLE_RGB_MATRIX_DIGITAL_RAIN
118// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE
119// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
120// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
121// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
122// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
123// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
124// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
125// # define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
126// # define DISABLE_RGB_MATRIX_SPLASH
127// # define DISABLE_RGB_MATRIX_MULTISPLASH
128// # define DISABLE_RGB_MATRIX_SOLID_SPLASH
129// # define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
130#endif \ No newline at end of file
diff --git a/keyboards/sofle/keymaps/rgb_default/keymap.c b/keyboards/sofle/keymaps/rgb_default/keymap.c
new file mode 100644
index 000000000..6b7486c1b
--- /dev/null
+++ b/keyboards/sofle/keymaps/rgb_default/keymap.c
@@ -0,0 +1,571 @@
1
2 /* Copyright 2021 Dane Evans
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 // SOFLE RGB
18#include <stdio.h>
19
20#include QMK_KEYBOARD_H
21
22#define INDICATOR_BRIGHTNESS 30
23
24#define HSV_OVERRIDE_HELP(h, s, v, Override) h, s , Override
25#define HSV_OVERRIDE(hsv, Override) HSV_OVERRIDE_HELP(hsv,Override)
26
27// Light combinations
28#define SET_INDICATORS(hsv) \
29 {0, 1, HSV_OVERRIDE_HELP(hsv, INDICATOR_BRIGHTNESS)}, \
30 {35+0, 1, hsv}
31#define SET_UNDERGLOW(hsv) \
32 {1, 6, hsv}, \
33 {35+1, 6,hsv}
34#define SET_NUMPAD(hsv) \
35 {35+15, 5, hsv},\
36 {35+22, 3, hsv},\
37 {35+27, 3, hsv}
38#define SET_NUMROW(hsv) \
39 {10, 2, hsv}, \
40 {20, 2, hsv}, \
41 {30, 2, hsv}, \
42 {35+ 10, 2, hsv}, \
43 {35+ 20, 2, hsv}, \
44 {35+ 30, 2, hsv}
45#define SET_INNER_COL(hsv) \
46 {33, 4, hsv}, \
47 {35+ 33, 4, hsv}
48
49#define SET_OUTER_COL(hsv) \
50 {7, 4, hsv}, \
51 {35+ 7, 4, hsv}
52#define SET_THUMB_CLUSTER(hsv) \
53 {25, 2, hsv}, \
54 {35+ 25, 2, hsv}
55#define SET_LAYER_ID(hsv) \
56 {0, 1, HSV_OVERRIDE_HELP(hsv, INDICATOR_BRIGHTNESS)}, \
57 {35+0, 1, HSV_OVERRIDE_HELP(hsv, INDICATOR_BRIGHTNESS)}, \
58 {1, 6, hsv}, \
59 {35+1, 6, hsv}, \
60 {7, 4, hsv}, \
61 {35+ 7, 4, hsv}, \
62 {25, 2, hsv}, \
63 {35+ 25, 2, hsv}
64
65
66enum sofle_layers {
67 _DEFAULTS = 0,
68 _QWERTY = 0,
69 _COLEMAK,
70 _COLEMAKDH,
71 _LOWER,
72 _RAISE,
73 _ADJUST,
74 _NUMPAD,
75 _SWITCH
76};
77
78enum custom_keycodes {
79 KC_QWERTY = SAFE_RANGE,
80 KC_COLEMAK,
81 KC_COLEMAKDH,
82 KC_LOWER,
83 KC_RAISE,
84 KC_ADJUST,
85 KC_D_MUTE
86};
87
88const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
89/*
90 * QWERTY
91 * ,-----------------------------------------. ,-----------------------------------------.
92 * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
93 * |------+------+------+------+------+------| |------+------+------+------+------+------|
94 * | TAB | Q | W | E | R | T | | Y | U | I | O | P | Bspc |
95 * |------+------+------+------+------+------| |------+------+------+------+------+------|
96 * |LShift| A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
97 * |------+------+------+------+------+------| MUTE | |DISCORD|------+------+------+------+------+------|
98 * | LCTR | Z | X | C | V | B |-------| |-------| N | M | , | . | / |LShift|
99 * `-----------------------------------------/ / \ \-----------------------------------------'
100 * | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE |RAISE | RCTR | RAlt |
101 * | | | | |/ / \ \ | | | | |
102 * `----------------------------------' '------''---------------------------'
103 */
104 [_QWERTY] = LAYOUT(
105 //,------------------------------------------------. ,---------------------------------------------------.
106 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_SWITCH,KC_6), KC_7, KC_8, KC_9, KC_0, KC_GRV,
107 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
108 LT(_NUMPAD,KC_TAB),KC_Q,KC_W,KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
109 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
110 KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
111 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
112 KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_D_MUTE,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT,
113 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
114 KC_BSPC, KC_LGUI, KC_LOWER, KC_SPC, KC_ENT , KC_SPC, KC_ENT , KC_RAISE, KC_RCTRL, KC_RALT
115 // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
116),
117
118/*
119 * COLEMAK
120 * ,-----------------------------------------. ,-----------------------------------------.
121 * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
122 * |------+------+------+------+------+------| |------+------+------+------+------+------|
123 * | TAB | Q | W | F | P | G | | J | L | U | Y | ; | Bspc |
124 * |------+------+------+------+------+------| |------+------+------+------+------+------|
125 * |LShift| A | R | S | T | D |-------. ,-------| H | N | E | I | O | ' |
126 * |------+------+------+------+------+------| MUTE | |DISCORD|------+------+------+------+------+------|
127 * | LCTR | Z | X | C | V | B |-------| |-------| K | M | , | . | / |LShift|
128 * `-----------------------------------------/ / \ \-----------------------------------------'
129 * | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE |RAISE | RCTR | RAlt |
130 * | | | | |/ / \ \ | | | | |
131 * `----------------------------------' '------''---------------------------'
132 */
133[_COLEMAK] = LAYOUT(
134 //,------------------------------------------------. ,---------------------------------------------------.
135 KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_SWITCH,KC_6), KC_7, KC_8, KC_9, KC_0, KC_TRNS,
136 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
137 KC_TRNS, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_TRNS,
138 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
139 KC_TRNS, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_TRNS,
140 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
141 KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_TRNS, KC_TRNS,KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS,
142 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
143 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
144 // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
145),
146
147/*
148 * COLEMAK-DH
149 * ,-----------------------------------------. ,-----------------------------------------.
150 * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
151 * |------+------+------+------+------+------| |------+------+------+------+------+------|
152 * | TAB | Q | W | F | P | B | | J | L | U | Y | ; | Bspc |
153 * |------+------+------+------+------+------| |------+------+------+------+------+------|
154 * |LShift| A | R | S | T | G |-------. ,-------| M | N | E | I | O | ' |
155 * |------+------+------+------+------+------| MUTE | |DISCORD|------+------+------+------+------+------|
156 * | LCTR | Z | X | C | D | V |-------| |-------| K | H | , | . | / |LShift|
157 * `-----------------------------------------/ / \ \-----------------------------------------'
158 * | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE |RAISE | RCTR | RAlt |
159 * | | | | |/ / \ \ | | | | |
160 * `----------------------------------' '------''---------------------------'
161 */
162[_COLEMAKDH] = LAYOUT(
163 //,------------------------------------------------. ,---------------------------------------------------.
164 KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_SWITCH,KC_6), KC_7, KC_8, KC_9, KC_0, KC_TRNS,
165 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
166 KC_TRNS, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_TRNS,
167 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
168 KC_TRNS, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_TRNS,
169 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
170 KC_TRNS, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_TRNS, KC_TRNS,KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS,
171 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
172 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
173 // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
174),
175
176/* LOWER
177 * ,-----------------------------------------. ,-----------------------------------------.
178 * | trans| F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
179 * |------+------+------+------+------+------| |------+------+------+------+------+------|
180 * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 |
181 * |------+------+------+------+------+------| |------+------+------+------+------+------|
182 * | trans| ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | | |
183 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
184 * | trans| = | - | + | { | } |-------| |-------| [ | ] | ; | : | \ | Shift|
185 * `-----------------------------------------/ / \ \-----------------------------------------'
186 * | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE |RAISE | RCTR | RAlt |
187 * | | | | |/ / \ \ | | | | |
188 * `----------------------------------' '------''---------------------------'
189 */
190[_LOWER] = LAYOUT(
191 //,------------------------------------------------. ,---------------------------------------------------.
192 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
193 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
194 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
195 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
196 _______, KC_NO, KC_NO, KC_NO, KC_WH_U, KC_PGUP, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_DEL,
197 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
198 _______, KC_NO, KC_NO, KC_NO, KC_WH_D, KC_PGDN,_______, _______,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, _______,
199 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
200 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
201 // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
202),
203/* RAISE
204 * ,----------------------------------------. ,-----------------------------------------.
205 * | | | | | | | | | | | | | |
206 * |------+------+------+------+------+------| |------+------+------+------+------+------|
207 * | Esc | Ins | Pscr | Menu | | | | | PWrd | Up | NWrd | DLine| Bspc |
208 * |------+------+------+------+------+------| |------+------+------+------+------+------|
209 * | Tab | LAt | LCtl |LShift| | Caps |-------. ,-------| | Left | Down | Rigth| Del | Bspc |
210 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
211 * |Shift | Undo | Cut | Copy | Paste| |-------| |-------| | LStr | | LEnd | | Shift|
212 * `-----------------------------------------/ / \ \-----------------------------------------'
213 * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
214 * | | | | |/ / \ \ | | | | |
215 * `----------------------------------' '------''---------------------------'
216 */
217[_RAISE] = LAYOUT(
218 //,------------------------------------------------. ,---------------------------------------------------.
219 _______, _______ , _______ , _______ , _______ , _______, _______, _______ , _______, _______ , _______ ,_______,
220 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
221 _______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, XXXXXXX, KC_CIRC, KC_AMPR,KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
222 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
223 _______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,
224 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
225 _______,KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, XXXXXXX,_______, _______,KC_UNDS, KC_PLUS,KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,
226 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
227 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
228 // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
229),
230/* ADJUST
231 * ,-----------------------------------------. ,-----------------------------------------.
232 * | | | | | | | | | | | | | |
233 * |------+------+------+------+------+------| |------+------+------+------+------+------|
234 * | RESET| | | | | | | | | | | | |
235 * |------+------+------+------+------+------| |------+------+------+------+------+------|
236 * |RGB_TOG|hue^ |sat ^ | bri ^| |COLEMAK|-------. ,-------|desk <| | |desk >| | |
237 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
238 * | mode | hue dn|sat d|bri dn| |QWERTY|-------| |-------| | PREV | PLAY | NEXT | | |
239 * `-----------------------------------------/ / \ \-----------------------------------------'
240 * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
241 * | | | | |/ / \ \ | | | | |
242 * `----------------------------------' '------''---------------------------'
243 */
244 [_ADJUST] = LAYOUT(
245 //,------------------------------------------------. ,---------------------------------------------------.
246 EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
247 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
248 RESET, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
249 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
250 RGB_TOG, RGB_HUI,RGB_SAI, RGB_VAI, KC_COLEMAKDH,KC_COLEMAK, C(G(KC_LEFT)),KC_NO,KC_NO,C(G(KC_RGHT)),XXXXXXX, XXXXXXX,
251 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
252 RGB_MOD, RGB_HUD,RGB_SAD, RGB_VAD, XXXXXXX,KC_QWERTY,XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
253 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
254 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
255 // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
256),
257/* NUMPAD
258 * ,-----------------------------------------. ,-----------------------------------------.
259 * | trans| | | | | | | F6 | F7 | F8 | F9 | F10 | F11 |
260 * |------+------+------+------+------+------| |------+------+------+------+------+------|
261 * | ` | | | | | | | | 7 | 8 | 9 | * | F12 |
262 * |------+------+------+------+------+------| |------+------+------+------+------+------|
263 * | trans| | | | | |-------. ,-------| - | 4 | 5 | 6 | | | |
264 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
265 * | trans| | | | | |-------| |-------| + | 1 | 2 | 3 | \ | Shift|
266 * `-----------------------------------------/ / \ \-----------------------------------------'
267 * | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE | 0 | . | RAlt |
268 * | | | | |/ / \ \ | | | | |
269 * `----------------------------------' '------''---------------------------'
270 */
271[_NUMPAD] = LAYOUT(
272 //,------------------------------------------------. ,---------------------------------------------------.
273 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX,
274 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
275 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_CIRC, KC_P7, KC_P8, KC_P9, KC_ASTR, _______,
276 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
277 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_P4, KC_P5, KC_P6, KC_EQL, KC_PIPE,
278 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
279 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,_______, _______,KC_PLUS, KC_P1, KC_P2, KC_P3, KC_SLSH, _______,
280 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
281 _______, OSM(MOD_MEH), _______, _______, _______, _______, _______, KC_P0, KC_PDOT, _______
282 // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
283),
284
285/* SWITCH
286 * ,-----------------------------------------. ,-----------------------------------------.
287 * | cole | qwer | low |raise | adj |numpd | | | F7 | F8 | F9 | F10 | F11 |
288 * |------+------+------+------+------+------| |------+------+------+------+------+------|
289 * | ` | | | | | | | | 7 | 8 | 9 | * | F12 |
290 * |------+------+------+------+------+------| |------+------+------+------+------+------|
291 * | trans| | | | | |-------. ,-------| - | 4 | 5 | 6 | | | |
292 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
293 * | trans| | | | | |-------| |-------| + | 1 | 2 | 3 | \ | Shift|
294 * `-----------------------------------------/ / \ \-----------------------------------------'
295 * | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE | 0 | . | RAlt |
296 * | | | | |/ / \ \ | | | | |
297 * `----------------------------------' '------''---------------------------'
298 */
299 // layer switcher
300[_SWITCH] = LAYOUT(
301 //,------------------------------------------------. ,---------------------------------------------------.
302 _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX,
303 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
304 TO(0), TO(1), TO(2), TO(3), TO(4), TO(5), KC_NO, TO(7), KC_NO, KC_NO, KC_NO, RESET,
305 //|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
306 KC_NO, KC_NO, KC_BRIU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, EEP_RST,
307 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
308 KC_SYSTEM_SLEEP,KC_NO,KC_BRID,KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
309 //|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
310 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
311 // \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
312
313 ),
314};
315
316#ifdef RGBLIGHT_ENABLE
317char layer_state_str[70];
318// Now define the array of layers. Later layers take precedence
319
320// QWERTY,
321// Light on inner column and underglow
322const rgblight_segment_t PROGMEM layer_qwerty_lights[] = RGBLIGHT_LAYER_SEGMENTS(
323 SET_LAYER_ID(HSV_RED)
324
325);
326const rgblight_segment_t PROGMEM layer_colemakdh_lights[] = RGBLIGHT_LAYER_SEGMENTS(
327 SET_LAYER_ID(HSV_PINK)
328);
329
330// _NUM,
331// Light on outer column and underglow
332const rgblight_segment_t PROGMEM layer_num_lights[] = RGBLIGHT_LAYER_SEGMENTS(
333 SET_LAYER_ID(HSV_TEAL)
334
335);
336// _SYMBOL,
337// Light on inner column and underglow
338const rgblight_segment_t PROGMEM layer_symbol_lights[] = RGBLIGHT_LAYER_SEGMENTS(
339 SET_LAYER_ID(HSV_BLUE)
340
341 );
342// _COMMAND,
343// Light on inner column and underglow
344const rgblight_segment_t PROGMEM layer_command_lights[] = RGBLIGHT_LAYER_SEGMENTS(
345 SET_LAYER_ID(HSV_PURPLE)
346);
347
348//_NUMPAD
349const rgblight_segment_t PROGMEM layer_numpad_lights[] = RGBLIGHT_LAYER_SEGMENTS(
350 SET_INDICATORS(HSV_ORANGE),
351 SET_UNDERGLOW(HSV_ORANGE),
352 SET_NUMPAD(HSV_BLUE),
353 {7, 4, HSV_ORANGE},
354 {25, 2, HSV_ORANGE},
355 {35+6, 4, HSV_ORANGE},
356 {35+25, 2, HSV_ORANGE}
357 );
358// _SWITCHER // light up top row
359const rgblight_segment_t PROGMEM layer_switcher_lights[] = RGBLIGHT_LAYER_SEGMENTS(
360 SET_LAYER_ID(HSV_GREEN),
361 SET_NUMROW(HSV_GREEN)
362);
363
364const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
365
366 layer_qwerty_lights,
367 layer_num_lights,// overrides layer 1
368 layer_symbol_lights,
369 layer_command_lights,
370 layer_numpad_lights,
371 layer_switcher_lights, // Overrides other layers
372 layer_colemakdh_lights
373);
374
375layer_state_t layer_state_set_user(layer_state_t state) {
376 rgblight_set_layer_state(0, layer_state_cmp(state, _DEFAULTS) && layer_state_cmp(default_layer_state,_QWERTY));
377 rgblight_set_layer_state(7, layer_state_cmp(state, _DEFAULTS) && layer_state_cmp(default_layer_state,_COLEMAKDH));
378
379
380 rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
381 rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
382 rgblight_set_layer_state(3, layer_state_cmp(state, _ADJUST));
383 rgblight_set_layer_state(4, layer_state_cmp(state, _NUMPAD));
384 rgblight_set_layer_state(5, layer_state_cmp(state, _SWITCH));
385 return state;
386}
387void keyboard_post_init_user(void) {
388 // Enable the LED layers
389 rgblight_layers = my_rgb_layers;
390
391 rgblight_mode(10);// haven't found a way to set this in a more useful way
392
393}
394#endif
395
396#ifdef OLED_DRIVER_ENABLE
397
398static void render_logo(void) {
399 static const char PROGMEM qmk_logo[] = {
400 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
401 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
402 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
403 };
404
405 oled_write_P(qmk_logo, false);
406}
407
408static void print_status_narrow(void) {
409 // Print current mode
410 oled_write_P(PSTR("\n\n"), false);
411 oled_write_ln_P(PSTR("Dane\nEvans"), false);
412
413 oled_write_ln_P(PSTR(""), false);
414
415 //snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Undef-%ld", layer_state)
416
417
418 switch (get_highest_layer(default_layer_state)) {
419 case _QWERTY:
420 oled_write_ln_P(PSTR("Qwrt"), false);
421 break;
422 case _COLEMAK:
423 oled_write_ln_P(PSTR("Clmk"), false);
424 break;
425 case _COLEMAKDH:
426 oled_write_ln_P(PSTR("CmkDH"), false);
427 break;
428
429 default:
430 oled_write_ln_P(PSTR("Undef"), false);
431 }
432 oled_write_P(PSTR("\n\n"), false);
433 // Print current layer
434 oled_write_ln_P(PSTR("LAYER"), false);
435 switch (get_highest_layer(layer_state)) {
436 case _COLEMAK:
437 case _QWERTY:
438 case _COLEMAKDH:
439 oled_write_P(PSTR("Base\n"), false);
440 break;
441 case _RAISE:
442 oled_write_P(PSTR("Raise"), false);
443 break;
444 case _LOWER:
445 oled_write_P(PSTR("Lower"), false);
446 break;
447 case _ADJUST:
448 oled_write_P(PSTR("Adj\n"), false);
449 break;
450 case _NUMPAD:
451 oled_write_P(PSTR("Nump\n"), false);
452 break;
453 case _SWITCH:
454 oled_write_P(PSTR("Swit\n"), false);
455 break;
456 default:
457 oled_write_ln_P(PSTR("Undef"), false);
458 }
459}
460
461oled_rotation_t oled_init_user(oled_rotation_t rotation) {
462 if (is_keyboard_master()) {
463 return OLED_ROTATION_270;
464 }
465 return rotation;
466}
467
468void oled_task_user(void) {
469 if (is_keyboard_master()) {
470 print_status_narrow();
471 } else {
472 render_logo();
473 }
474}
475
476#endif
477
478bool process_record_user(uint16_t keycode, keyrecord_t *record) {
479 switch (keycode) {
480 case KC_QWERTY:
481 if (record->event.pressed) {
482 set_single_persistent_default_layer(_QWERTY);
483 }
484 return false;
485 case KC_COLEMAK:
486 if (record->event.pressed) {
487 set_single_persistent_default_layer(_COLEMAK);
488 }
489 return false;
490 case KC_COLEMAKDH:
491 if (record->event.pressed) {
492 set_single_persistent_default_layer(_COLEMAKDH);
493 }
494 return false;
495 case KC_LOWER:
496 if (record->event.pressed) {
497 layer_on(_LOWER);
498 update_tri_layer(_LOWER, _RAISE, _ADJUST);
499 } else {
500 layer_off(_LOWER);
501 update_tri_layer(_LOWER, _RAISE, _ADJUST);
502 }
503 return false;
504 case KC_RAISE:
505 if (record->event.pressed) {
506 layer_on(_RAISE);
507 update_tri_layer(_LOWER, _RAISE, _ADJUST);
508 } else {
509 layer_off(_RAISE);
510 update_tri_layer(_LOWER, _RAISE, _ADJUST);
511 }
512 return false;
513 case KC_ADJUST:
514 if (record->event.pressed) {
515 layer_on(_ADJUST);
516 } else {
517 layer_off(_ADJUST);
518 }
519 return false;
520 case KC_D_MUTE:
521 if (record->event.pressed) {
522 register_mods(mod_config(MOD_MEH));
523 register_code(KC_UP);
524 } else {
525 unregister_mods(mod_config(MOD_MEH));
526 unregister_code(KC_UP);
527 }
528 }
529 return true;
530}
531
532#ifdef ENCODER_ENABLE
533
534void encoder_update_user(uint8_t index, bool clockwise) {
535 if (index == 0) {
536 if (clockwise) {
537 tap_code(KC_VOLU);
538 } else {
539 tap_code(KC_VOLD);
540 }
541 } else if (index == 1) {
542 switch (get_highest_layer(layer_state)) {
543 case _COLEMAK:
544 case _QWERTY:
545 case _COLEMAKDH:
546 if (clockwise) {
547 tap_code(KC_PGDOWN);
548 } else {
549 tap_code(KC_PGUP);
550 }
551 break;
552 case _RAISE:
553 case _LOWER:
554 if (clockwise) {
555 tap_code(KC_DOWN);
556 } else {
557 tap_code(KC_UP);
558 }
559 break;
560 default:
561 if (clockwise) {
562 tap_code(KC_WH_D);
563 } else {
564 tap_code(KC_WH_U);
565 }
566 break;
567 }
568 }
569}
570
571#endif
diff --git a/keyboards/sofle/keymaps/rgb_default/rules.mk b/keyboards/sofle/keymaps/rgb_default/rules.mk
new file mode 100644
index 000000000..3dffb0368
--- /dev/null
+++ b/keyboards/sofle/keymaps/rgb_default/rules.mk
@@ -0,0 +1,7 @@
1MOUSEKEY_ENABLE = yes
2EXTRAKEY_ENABLE = yes
3CONSOLE_ENABLE = yes
4RGBLIGHT_ENABLE = yes
5ENCODER_ENABLE = yes
6LTO_ENABLE = yes
7OLED_DRIVER_ENABLE = yes
diff --git a/users/devdev/config.h b/users/devdev/config.h
new file mode 100644
index 000000000..c5a30fe8e
--- /dev/null
+++ b/users/devdev/config.h
@@ -0,0 +1,30 @@
1 /* Copyright 2021 Dane Evans
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
18#pragma once
19
20/* Disable unused and unneeded features to reduce on firmware size */
21#if defined(LOCKING_SUPPORT_ENABLE)
22# undef LOCKING_SUPPORT_ENABLE
23#endif
24
25#if defined(OLED_FONT_H)
26# undef OLED_FONT_H
27#endif
28
29
30#define OLED_FONT_H "users/devdev/glcdfont.c"
diff --git a/users/devdev/glcdfont.c b/users/devdev/glcdfont.c
new file mode 100644
index 000000000..a95afa3e0
--- /dev/null
+++ b/users/devdev/glcdfont.c
@@ -0,0 +1,465 @@
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#ifndef CUSTOM_FONT
7// Standard ASCII 5x7 font
8const 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 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
122 0x18, 0x24, 0x24, 0x18, 0x7C, 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, 0x90, 0x90, 0x90, 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, 0x00, 0x00, 0x00, 0x00,
138 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
139 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0,
140 0xF0, 0xF8, 0xF8, 0x18, 0x00, 0xC0,
141 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF,
142 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00,
143 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
144 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0,
145 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
146 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
147 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0,
148 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80,
149 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0,
150 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00,
151 0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0,
152 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80,
153 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0,
154 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
155 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00,
156 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
157 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
158 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
159 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
160 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
161 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
162 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
163 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
164 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
165 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
167 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
169 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
170 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE,
171 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF,
172 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF,
173 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
174 0xFF, 0x1F, 0x07, 0x01, 0x00, 0x00,
175 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
176 0x00, 0xFF, 0xFF, 0xFF, 0x81, 0x00,
177 0x00, 0x00, 0x00, 0x00, 0x00, 0x81,
178 0xC3, 0xC3, 0xC3, 0x00, 0x00, 0xFF,
179 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00,
180 0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF,
181 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
182 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
183 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
184 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF,
185 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
186 0x9D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
187 0x1C, 0x9D, 0xDF, 0xDF, 0xDF, 0x00,
188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
189 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
190 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
191 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
192 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
193 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
194 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
195 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
196 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
197 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
199 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
200 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
201 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
202 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F,
203 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F,
204 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F,
205 0x3F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
206 0x7F, 0x7C, 0x78, 0x78, 0x38, 0x1C,
207 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
208 0x00, 0x00, 0x01, 0x03, 0x07, 0x07,
209 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
210 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
211 0x01, 0x03, 0x07, 0x07, 0x07, 0x07,
212 0x07, 0x07, 0x07, 0x07, 0x03, 0x01,
213 0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
214 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
215 0x00, 0x07, 0x07, 0x07, 0x00, 0x00,
216 0x00, 0x00, 0x00, 0x00, 0x07, 0x07,
217 0x07, 0x00, 0x00, 0x00, 0x01, 0x03,
218 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
219 0x07, 0x07, 0x03, 0x01, 0x00, 0x00,
220 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
221 0x00, 0x00, 0x00, 0x00, 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};
234
235#else
236
237// use https://joric.github.io/qle/ to generate these.
238// You can copy the image into the logo section, then copy the byte array out of the font one .
239const unsigned char font[] PROGMEM= {
240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
241 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
242 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
243 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
244 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
245 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
246 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
247 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
248 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
249 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
250 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
251 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
252 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
253 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
254 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
255 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
256 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
257 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
258 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
259 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
260 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
261 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
262 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
263 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
264 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
265 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
266 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
267 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
268 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
269 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
270 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
271 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
272 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
273 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
274 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
275 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
276 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
277 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
278 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
279 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
280 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
281 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
282 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
283 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
284 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
285 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
286 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
287 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
288 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
289 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
290 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
291 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
292 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
293 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
294 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
295 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
296 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
297 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
298 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
299 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
300 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
301 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
302 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
303 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
304 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
305 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
306 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
307 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
308 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
309 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
310 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
311 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
312 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
313 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
314 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
315 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
316 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
317 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
318 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
319 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
320 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
321 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
322 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
323 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
324 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
325 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
326 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
327 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
328 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
329 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
330 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
331 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
332 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
333 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
334 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
335 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
336 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
337 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
338 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
339 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
340 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
341 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
342 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
343 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
344 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
345 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
346 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
347 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
348 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
349 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
350 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
351 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
352 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
353 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
354 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
355 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
356 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
357 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
358 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
359 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
360 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
361 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
362 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
363 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
364 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
365 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
366 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
367 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
368 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
369 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFC,
370 0xFC, 0xF8, 0xF0, 0x00, 0x20, 0xF0,
371 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
372 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
373 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
374 0x00, 0x00, 0x00, 0x00, 0x08, 0x3C,
375 0xA8, 0xE0, 0xE0, 0xE0, 0xF0, 0x78,
376 0x7C, 0x7C, 0x7C, 0x3C, 0x1C, 0x00,
377 0x00, 0x00, 0xF8, 0xFC, 0x8C, 0x04,
378 0x04, 0x0C, 0x08, 0x10, 0x80, 0x00,
379 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
380 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
381 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
382 0x00, 0x00, 0x40, 0x60, 0xC0, 0x80,
383 0x80, 0xE0, 0xF0, 0xF8, 0x7C, 0x1C,
384 0x0C, 0x0C, 0x0C, 0x9C, 0xF8, 0x00,
385 0x00, 0x00, 0xF8, 0xFC, 0x8C, 0x04,
386 0x04, 0x0C, 0x08, 0x10, 0x80, 0x00,
387 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
388 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
389 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
390 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
391 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
392 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
393 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
394 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
395 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
396 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
397 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
398 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
399 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
400 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
401 0x00, 0x00, 0x00, 0x00, 0x20, 0x70,
402 0x21, 0x3F, 0x0F, 0x1F, 0x3D, 0x3D,
403 0x3C, 0xBC, 0xBC, 0xFC, 0x7E, 0x7E,
404 0xF3, 0xF1, 0xE0, 0xC0, 0x80, 0x00,
405 0x00, 0x00, 0x00, 0x80, 0xC0, 0x20,
406 0x00, 0x00, 0x10, 0x38, 0xE0, 0xFF,
407 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0x02,
408 0x02, 0x07, 0x02, 0x00, 0x00, 0x00,
409 0x00, 0x00, 0x01, 0x03, 0x07, 0x8F,
410 0xCF, 0x7E, 0x7E, 0x3F, 0x3D, 0x3D,
411 0x3C, 0xBC, 0xBC, 0xF8, 0xF0, 0xFC,
412 0x84, 0x0E, 0x04, 0x00, 0x00, 0x00,
413 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
414 0x70, 0x20, 0x20, 0xE0, 0x81, 0xFF,
415 0xFF, 0xFF, 0x7F, 0x03, 0x0E, 0x04,
416 0x00, 0x00, 0x02, 0x01, 0x00, 0x00,
417 0x00, 0x00, 0x01, 0x03, 0x07, 0x8F,
418 0xCF, 0x7E, 0x7E, 0x3F, 0x3D, 0x3D,
419 0x3C, 0xBC, 0xBC, 0xF8, 0xF0, 0xFC,
420 0x84, 0x0E, 0x04, 0x00, 0x00, 0x00,
421 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
422 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
423 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
424 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
425 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
426 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
427 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
428 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
429 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
430 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
431 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
432 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
433 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
434 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
435 0x00, 0x00, 0x01, 0x08, 0x10, 0x30,
436 0x20, 0x20, 0x31, 0x3F, 0x1F, 0x00,
437 0x00, 0x00, 0x00, 0x0F, 0x1C, 0x18,
438 0x18, 0x18, 0x1C, 0x1F, 0x0F, 0x07,
439 0x03, 0x00, 0x00, 0x01, 0x03, 0x01,
440 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
441 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
442 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
443 0x04, 0x0F, 0x04, 0x00, 0x0F, 0x1F,
444 0x3F, 0x3F, 0x3E, 0x00, 0x00, 0x00,
445 0x00, 0x00, 0x00, 0x1C, 0x1E, 0x1F,
446 0x1F, 0x1F, 0x0F, 0x07, 0x03, 0x03,
447 0x03, 0x0A, 0x1e, 0x08, 0x00, 0x00,
448 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
449 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
450 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
451 0x04, 0x0F, 0x04, 0x00, 0x0f, 0x1F,
452 0x3F, 0x3F, 0x3f, 0x00, 0x00, 0x00,
453 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
454 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
455 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
456 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
457 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
458 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
459 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
460 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
461 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
462 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
463 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
464};
465#endif \ No newline at end of file