aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2021-02-23 10:57:24 -0800
committerGitHub <noreply@github.com>2021-02-23 10:57:24 -0800
commit0b69e4df818c2515cf4eee3d8b6fd4a07775b887 (patch)
treebdeee9c5a88c2aef8aca366b3e6ea986f44174c0
parent11146ecd086c6b6736ab3c5947f26a96be642671 (diff)
downloadqmk_firmware-0b69e4df818c2515cf4eee3d8b6fd4a07775b887.tar.gz
qmk_firmware-0b69e4df818c2515cf4eee3d8b6fd4a07775b887.zip
[Keymap] Drashna Updates - Split+OLED edition (#11968)
-rwxr-xr-xkeyboards/c39/keymaps/drashna/keymap.c5
-rw-r--r--keyboards/gergo/keymaps/drashna/keymap.c5
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.c6
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_right_trackball/config.h1
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/config.h7
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/keymap.c66
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/rules.mk2
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_right_trackball/pointer_transport.c57
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_right_trackball/rules.mk4
-rw-r--r--keyboards/keebio/iris/keymaps/drashna/keymap.c5
-rw-r--r--keyboards/keebio/viterbi/keymaps/drashna/keymap.c18
-rw-r--r--keyboards/kyria/keymaps/drashna/config.h2
-rw-r--r--keyboards/kyria/keymaps/drashna/keymap.c9
-rw-r--r--keyboards/kyria/keymaps/drashna/rules.mk2
-rw-r--r--keyboards/moonlander/keymaps/drashna/keymap.c8
-rw-r--r--keyboards/orthodox/keymaps/drashna/keymap.c5
-rw-r--r--keyboards/splitkb/zima/keymaps/drashna/config.h32
-rw-r--r--keyboards/splitkb/zima/keymaps/drashna/keymap.c140
-rw-r--r--keyboards/splitkb/zima/keymaps/drashna/readme.md7
-rw-r--r--keyboards/splitkb/zima/keymaps/drashna/rules.mk2
-rw-r--r--layouts/community/ergodox/drashna/keymap.c15
-rw-r--r--layouts/community/ortho_4x12/drashna/keymap.c5
-rw-r--r--layouts/community/ortho_5x12/drashna/keymap.c18
-rw-r--r--layouts/community/ortho_5x12/drashna/rules.mk2
-rw-r--r--layouts/community/split_3x6_3/drashna/chconf.h9
-rw-r--r--layouts/community/split_3x6_3/drashna/config.h27
-rw-r--r--layouts/community/split_3x6_3/drashna/keymap.c11
-rw-r--r--layouts/community/split_3x6_3/drashna/mcuconf.h16
-rw-r--r--layouts/community/split_3x6_3/drashna/rules.mk2
-rw-r--r--users/drashna/config.h36
-rw-r--r--users/drashna/drashna.c35
-rw-r--r--users/drashna/drashna.h4
-rw-r--r--users/drashna/drashna_font.h1306
-rw-r--r--users/drashna/drashna_transport.c508
-rw-r--r--users/drashna/font_gmk_bad.h234
-rw-r--r--users/drashna/hue_manitee_font.h234
-rw-r--r--users/drashna/oled_stuff.c141
-rw-r--r--users/drashna/oled_stuff.h22
-rw-r--r--users/drashna/pimoroni_trackball.h8
-rw-r--r--users/drashna/process_records.c6
-rw-r--r--users/drashna/process_records.h1
-rw-r--r--users/drashna/rgb_stuff.c52
-rw-r--r--users/drashna/rules.mk24
-rw-r--r--users/drashna/wrappers.h167
44 files changed, 2513 insertions, 753 deletions
diff --git a/keyboards/c39/keymaps/drashna/keymap.c b/keyboards/c39/keymaps/drashna/keymap.c
index 3fd3ef35e..b5d11104d 100755
--- a/keyboards/c39/keymaps/drashna/keymap.c
+++ b/keyboards/c39/keymaps/drashna/keymap.c
@@ -24,14 +24,15 @@
24 * of use. K## is a placeholder to pass through the individual keycodes 24 * of use. K## is a placeholder to pass through the individual keycodes
25 */ 25 */
26// clang-format off 26// clang-format off
27#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
27#define LAYOUT_base( \ 28#define LAYOUT_base( \
28 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ 29 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
29 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ 30 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
30 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ 31 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
31 ) \ 32 ) \
32 LAYOUT_wrapper( \ 33 LAYOUT_wrapper( \
33 KC_ESC, K01, K02, K03, K04, K05, KC_NO, K06, K07, K08, K09, K0A, KC_DEL, \ 34 KC_ESC, K01, K02, K03, K04, K05, KC_NO, K06, K07, K08, K09, K0A, KC_DEL, \
34 ALT_T(KC_TAB), K11, K12, K13, K14, K15, KC_BSPC, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ 35 ALT_T(KC_TAB), K11, K12, K13, K14, K15, KC_BSPC, K16, K17, K18, K19, K1A, RALT_T(K1B), \
35 KC_MLSF, CTL_T(K21), K22, K23, K24, LT(_LOWER,K25), KC_SPC, LT(_RAISE,K26), K27, K28, K29, RCTL_T(K2A), KC_ENT \ 36 KC_MLSF, CTL_T(K21), K22, K23, K24, LT(_LOWER,K25), KC_SPC, LT(_RAISE,K26), K27, K28, K29, RCTL_T(K2A), KC_ENT \
36 ) 37 )
37#define LAYOUT_base_wrapper(...) LAYOUT_base(__VA_ARGS__) 38#define LAYOUT_base_wrapper(...) LAYOUT_base(__VA_ARGS__)
diff --git a/keyboards/gergo/keymaps/drashna/keymap.c b/keyboards/gergo/keymaps/drashna/keymap.c
index 7258d350d..ecf5f3903 100644
--- a/keyboards/gergo/keymaps/drashna/keymap.c
+++ b/keyboards/gergo/keymaps/drashna/keymap.c
@@ -24,14 +24,15 @@
24 * of use. K## is a placeholder to pass through the individual keycodes 24 * of use. K## is a placeholder to pass through the individual keycodes
25 */ 25 */
26// clang-format off 26// clang-format off
27#define LAYOUT_gergo_wrapper(...) LAYOUT_gergo(__VA_ARGS__)
27#define LAYOUT_gergo_base( \ 28#define LAYOUT_gergo_base( \
28 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ 29 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
29 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ 30 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
30 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ 31 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
31 ) \ 32 ) \
32 LAYOUT_gergo_wrapper( \ 33 LAYOUT_gergo_wrapper( \
33 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_PIPE, \ 34 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_PIPE, \
34 LALT_T(KC_TAB), K11, K12, K13, K14, K15, _______, _______, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ 35 LALT_T(KC_TAB), K11, K12, K13, K14, K15, _______, _______, K16, K17, K18, K19, K1A, RALT_T(K1B), \
35 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, _______, _______, _______, _______, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ 36 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, _______, _______, _______, _______, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
36 KC_GRV, KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT, _______ \ 37 KC_GRV, KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT, _______ \
37 ) 38 )
diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.c b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.c
index d931fd940..69f750095 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.c
+++ b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.c
@@ -85,7 +85,11 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
85 85
86#ifdef POINTING_DEVICE_ENABLE 86#ifdef POINTING_DEVICE_ENABLE
87 if (keycode == DPI_CONFIG && record->event.pressed) { 87 if (keycode == DPI_CONFIG && record->event.pressed) {
88 keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE; 88 if ((get_mods()|get_oneshot_mods()) & MOD_MASK_SHIFT) {
89 keyboard_config.dpi_config = (keyboard_config.dpi_config - 1) % DPI_OPTION_SIZE;
90 } else {
91 keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE;
92 }
89 eeconfig_update_kb(keyboard_config.raw); 93 eeconfig_update_kb(keyboard_config.raw);
90 trackball_set_cpi(dpi_array[keyboard_config.dpi_config]); 94 trackball_set_cpi(dpi_array[keyboard_config.dpi_config]);
91 } 95 }
diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/config.h b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/config.h
index 6d89314a2..b9b27f0b7 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/config.h
+++ b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/config.h
@@ -62,6 +62,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
62#define BOOTMAGIC_LITE_COLUMN_RIGHT 5 62#define BOOTMAGIC_LITE_COLUMN_RIGHT 5
63 63
64#define C6_AUDIO 64#define C6_AUDIO
65#define B7_AUDIO
65 66
66#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095 67#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095
67#define DYNAMIC_KEYMAP_LAYER_COUNT 16 68#define DYNAMIC_KEYMAP_LAYER_COUNT 16
diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/config.h b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/config.h
index 73bf32b25..41b2e07c7 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/config.h
+++ b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/config.h
@@ -18,9 +18,10 @@
18 18
19// #define USE_I2C 19// #define USE_I2C
20#define SELECT_SOFT_SERIAL_SPEED 0 20#define SELECT_SOFT_SERIAL_SPEED 0
21#define SERIAL_USE_MULTI_TRANSACTION 21// #define SERIAL_USE_MULTI_TRANSACTION
22 22#define SPLIT_MODS_ENABLE
23#define EE_HANDS 23#define EE_HANDS
24
24#define TRACKBALL_DPI_OPTIONS \ 25#define TRACKBALL_DPI_OPTIONS \
25 { 1200, 1800, 2600, 3400 } 26 { 1200, 1800, 2600, 3400 }
26 27
@@ -35,8 +36,6 @@
35#define SOLENOID_DEFAULT_DWELL 8 36#define SOLENOID_DEFAULT_DWELL 8
36 37
37#define OLED_DISPLAY_128X64 38#define OLED_DISPLAY_128X64
38#define OLED_TIMEOUT 0
39#define OLED_BRIGHTNESS 100 39#define OLED_BRIGHTNESS 100
40#define SPLIT_MODS_ENABLE
41 40
42#define MK_KINETIC_SPEED 41#define MK_KINETIC_SPEED
diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/keymap.c b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/keymap.c
index f8803edb9..5a1bb79fe 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/keymap.c
@@ -16,24 +16,21 @@
16 16
17#include "drashna.h" 17#include "drashna.h"
18 18
19#define TG_DBLO TG(_DIABLO)
20
21
22// clang-format off 19// clang-format off
23#define LAYOUT_5x6_right_trackball_wrapper(...) LAYOUT_5x6_right_trackball(__VA_ARGS__) 20#define LAYOUT_5x6_right_trackball_wrapper(...) LAYOUT_5x6_right_trackball(__VA_ARGS__)
24#define LAYOUT_5x6_right_trackball_base( \ 21#define LAYOUT_5x6_right_trackball_base( \
25 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ 22 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
26 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ 23 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
27 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ 24 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
28 ) \ 25 ) \
29 LAYOUT_5x6_right_trackball_wrapper( \ 26 LAYOUT_5x6_right_trackball_wrapper( \
30 KC_GRV, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \ 27 KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \
31 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSLS, \ 28 SH_TT, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, SH_TT, \
32 LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ 29 LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
33 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ 30 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
34 OS_LALT, OS_LGUI, TG_GAME, TG_DBLO, \ 31 OS_LALT, OS_LGUI, TG_GAME, TG_DBLO, \
35 OS_LGUI, KC_GRV, OS_RGUI, \ 32 OS_LGUI, KC_GRV, OS_RGUI, \
36 KC_SPC, _______, KC_ENT, \ 33 KC_SPC, TT(_MOUSE), KC_ENT, \
37 BK_LWER, MO(_MOUSE), MO(_MOUSE), DL_RAIS \ 34 BK_LWER, MO(_MOUSE), MO(_MOUSE), DL_RAIS \
38 ) 35 )
39#define LAYOUT_5x6_right_trackball_base_wrapper(...) LAYOUT_5x6_right_trackball_base(__VA_ARGS__) 36#define LAYOUT_5x6_right_trackball_base_wrapper(...) LAYOUT_5x6_right_trackball_base(__VA_ARGS__)
@@ -149,13 +146,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
149 _______, _______, KC_NUKE, _______ 146 _______, _______, KC_NUKE, _______
150 ), 147 ),
151}; 148};
152// clang-format off 149// clang-format on
153
154 150
155#ifdef POINTING_DEVICE_ENABLE 151#ifdef POINTING_DEVICE_ENABLE
156static uint16_t mouse_timer = 0; 152static uint16_t mouse_timer = 0;
157static uint16_t mouse_debounce_timer = 0; 153static uint16_t mouse_debounce_timer = 0;
158static uint8_t mouse_keycode_tracker = 0; 154static uint8_t mouse_keycode_tracker = 0;
155bool tap_toggling = false;
159 156
160void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) { 157void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) {
161 if ((x || y) && timer_elapsed(mouse_timer) > 125) { 158 if ((x || y) && timer_elapsed(mouse_timer) > 125) {
@@ -164,29 +161,64 @@ void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) {
164 layer_on(_MOUSE); 161 layer_on(_MOUSE);
165 } 162 }
166 } 163 }
167 if (timer_elapsed(mouse_debounce_timer) > 125 || layer_state_is(_GAMEPAD) ) { 164
165# ifdef TAPPING_TERM_PER_KEY
166 if (timer_elapsed(mouse_debounce_timer) > get_tapping_term(KC_BTN1, NULL)
167# else
168 if (timer_elapsed(mouse_debounce_timer) > TAPPING_TERM
169# endif
170 || layer_state_is(_GAMEPAD)) {
168 mouse_report->x = x; 171 mouse_report->x = x;
169 mouse_report->y = y; 172 mouse_report->y = y;
170 } 173 }
174# ifdef OLED_DRIVER_ENABLE
175 if (x || y) oled_timer = timer_read32();
176# endif
171} 177}
172 178
173void matrix_scan_keymap(void) { 179void matrix_scan_keymap(void) {
174 if (timer_elapsed(mouse_timer) > 650 && layer_state_is(_MOUSE) && !mouse_keycode_tracker) { 180 if (timer_elapsed(mouse_timer) > 650 && layer_state_is(_MOUSE) && !mouse_keycode_tracker && !tap_toggling) {
175 layer_off(_MOUSE); 181 layer_off(_MOUSE);
176 } 182 }
183 if (tap_toggling) {
184 if (!layer_state_is(_MOUSE)) {
185 layer_on(_MOUSE);
186 }
187 }
177} 188}
178 189
179bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { 190bool process_record_keymap(uint16_t keycode, keyrecord_t* record) {
180 switch(keycode){ 191 switch (keycode) {
192 case TT(_MOUSE): {
193 if (record->event.pressed) {
194 mouse_keycode_tracker++;
195 } else {
196# if TAPPING_TOGGLE != 0
197 if (record->tap.count == TAPPING_TOGGLE) {
198 tap_toggling ^= 1;
199# if TAPPING_TOGGLE == 1
200 if (!tap_toggling) mouse_keycode_tracker -= record->tap.count + 1;
201# else
202 if (!tap_toggling) mouse_keycode_tracker -= record->tap.count;
203# endif
204 } else {
205 mouse_keycode_tracker--;
206 }
207# endif
208 }
209 mouse_timer = timer_read();
210 break;
211 }
181 case MO(_MOUSE): 212 case MO(_MOUSE):
182 case DPI_CONFIG: 213 case DPI_CONFIG:
183 case KC_MS_UP...KC_MS_WH_RIGHT: 214 case KC_MS_UP ... KC_MS_WH_RIGHT:
184 record->event.pressed ? mouse_keycode_tracker++ : mouse_keycode_tracker--; 215 record->event.pressed ? mouse_keycode_tracker++ : mouse_keycode_tracker--;
185 mouse_timer = timer_read(); 216 mouse_timer = timer_read();
186 break; 217 break;
187 default: 218 default:
188 if (layer_state_is(_MOUSE) && !mouse_keycode_tracker) { 219 if (layer_state_is(_MOUSE) && !mouse_keycode_tracker) {
189 layer_off(_MOUSE); 220 layer_off(_MOUSE);
221 mouse_keycode_tracker = 0;
190 } 222 }
191 mouse_debounce_timer = timer_read(); 223 mouse_debounce_timer = timer_read();
192 break; 224 break;
diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/rules.mk
index be584e8c4..9999c0ddf 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/rules.mk
+++ b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/rules.mk
@@ -5,5 +5,5 @@ AUDIO_ENABLE = yes
5TAP_DANCE_ENABLE = yes 5TAP_DANCE_ENABLE = yes
6UNICODE_ENABLE = yes 6UNICODE_ENABLE = yes
7OLED_DRIVER_ENABLE = yes 7OLED_DRIVER_ENABLE = yes
8 8WPM_ENABLE = yes
9# DEBOUNCE_TYPE = sym_eager_pk 9# DEBOUNCE_TYPE = sym_eager_pk
diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pointer_transport.c b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pointer_transport.c
index 20216a21d..5df90258b 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pointer_transport.c
+++ b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/pointer_transport.c
@@ -77,7 +77,8 @@ typedef struct _I2C_slave_buffer_t {
77 bool oled_on; 77 bool oled_on;
78 layer_state_t t_layer_state; 78 layer_state_t t_layer_state;
79 layer_state_t t_default_layer_state; 79 layer_state_t t_default_layer_state;
80} I2C_slave_buffer_t; 80 bool is_rgb_matrix_suspended;
81} __attribute__((packed)) I2C_slave_buffer_t;
81 82
82static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_reg; 83static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_reg;
83 84
@@ -93,9 +94,10 @@ static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_re
93# define I2C_MOUSE_X_START offsetof(I2C_slave_buffer_t, mouse_x) 94# define I2C_MOUSE_X_START offsetof(I2C_slave_buffer_t, mouse_x)
94# define I2C_MOUSE_Y_START offsetof(I2C_slave_buffer_t, mouse_y) 95# define I2C_MOUSE_Y_START offsetof(I2C_slave_buffer_t, mouse_y)
95# define I2C_MOUSE_DPI_START offsetof(I2C_slave_buffer_t, device_cpi) 96# define I2C_MOUSE_DPI_START offsetof(I2C_slave_buffer_t, device_cpi)
96# define I2C_OLED_ON_START offsetof(I2C_slave_buffent, oled_on) 97# define I2C_OLED_ON_START offsetof(I2C_slave_buffer_t, oled_on)
97# define I2C_LAYER_STATE_START offsetof(I2C_slave_buffent, t_layer_state) 98# define I2C_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_layer_state)
98# define I2C_DEFAULT_LAYER_STATE_START offsetof(I2C_slave_buffent, t_default_layer_state) 99# define I2C_DEFAULT_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_default_layer_state)
100# define I2C_RGB_MATRIX_SUSPEND_START offsetof(I2C_slave_buffer_t, is_rgb_matrix_suspended)
99 101
100# define TIMEOUT 100 102# define TIMEOUT 100
101 103
@@ -196,9 +198,19 @@ bool transport_master(matrix_row_t matrix[]) {
196 } 198 }
197 199
198# ifdef OLED_DRIVER_ENABLE 200# ifdef OLED_DRIVER_ENABLE
199 if (is_oled_on() != i2c_buffer->oled_on) { 201 bool is_oled_on = is_oled_on();
200 if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&is_oled_on(), sizeof(bool), TIMEOUT) >= 0) { 202 if (is_oled_on != i2c_buffer->oled_on) {
201 i2c_buffer->oled_on = is_oled_on(); 203 if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&is_oled_on, sizeof(is_oled_on), TIMEOUT) >= 0) {
204 i2c_buffer->oled_on = is_oled_on;
205 }
206 }
207# endif
208
209# ifdef RGB_MATRIX_ENABLE
210 bool sus_state = rgb_matrix_get_suspend_state();
211 if (sus_state != i2c_buffer->is_rgb_matrix_suspended) {
212 if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_MATRIX_SUSPEND_START, (void *)&sus_state, sizeof(sus_state), TIMEOUT) >= 0) {
213 i2c_buffer->is_rgb_matrix_suspended = sus_state;
202 } 214 }
203 } 215 }
204# endif 216# endif
@@ -255,10 +267,10 @@ void transport_slave(matrix_row_t matrix[]) {
255# endif 267# endif
256 268
257 if (layer_state != i2c_buffer->t_layer_state) { 269 if (layer_state != i2c_buffer->t_layer_state) {
258 layer_state_set(i2c_buffer->t_layer_state); 270 layer_state = i2c_buffer->t_layer_state;
259 } 271 }
260 if (default_layer_state != i2c_buffer->t_default_layer_state) { 272 if (default_layer_state != i2c_buffer->t_default_layer_state) {
261 default_layer_state_set(i2c_buffer->t_default_layer_state); 273 default_layer_state = i2c_buffer->t_default_layer_state;
262 } 274 }
263 275
264# ifdef OLED_DRIVER_ENABLE 276# ifdef OLED_DRIVER_ENABLE
@@ -268,6 +280,10 @@ void transport_slave(matrix_row_t matrix[]) {
268 oled_off(); 280 oled_off();
269 } 281 }
270# endif 282# endif
283
284# ifdef RGB_MATRIX_ENABLE
285 rgb_matrix_set_suspend_state(i2c_buffer->is_rgb_matrix_suspended);
286# endif
271} 287}
272 288
273void transport_master_init(void) { i2c_init(); } 289void transport_master_init(void) { i2c_init(); }
@@ -286,7 +302,7 @@ typedef struct _Serial_s2m_buffer_t {
286# endif 302# endif
287 int8_t mouse_x; 303 int8_t mouse_x;
288 int8_t mouse_y; 304 int8_t mouse_y;
289} Serial_s2m_buffer_t; 305} __attribute__((packed)) Serial_s2m_buffer_t;
290 306
291typedef struct _Serial_m2s_buffer_t { 307typedef struct _Serial_m2s_buffer_t {
292# ifdef SPLIT_MODS_ENABLE 308# ifdef SPLIT_MODS_ENABLE
@@ -309,7 +325,8 @@ typedef struct _Serial_m2s_buffer_t {
309 bool oled_on; 325 bool oled_on;
310 layer_state_t t_layer_state; 326 layer_state_t t_layer_state;
311 layer_state_t t_default_layer_state; 327 layer_state_t t_default_layer_state;
312} Serial_m2s_buffer_t; 328 bool is_rgb_matrix_suspended;
329} __attribute__((packed)) Serial_m2s_buffer_t;
313 330
314# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) 331# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
315// When MCUs on both sides drive their respective RGB LED chains, 332// When MCUs on both sides drive their respective RGB LED chains,
@@ -434,10 +451,14 @@ bool transport_master(matrix_row_t matrix[]) {
434 } 451 }
435# endif 452# endif
436 453
437 serial_m2s_buffer.t_layer_state = layer_state; 454 serial_m2s_buffer.t_layer_state = layer_state;
438 serial_m2s_buffer.t_default_layer_state = default_layer_state; 455 serial_m2s_buffer.t_default_layer_state = default_layer_state;
439# ifdef OLED_DRIVER_ENABLE 456# ifdef OLED_DRIVER_ENABLE
440 serial_m2s_buffer.oled_on = is_oled_on(); 457 serial_m2s_buffer.oled_on = is_oled_on();
458# endif
459
460# ifdef RGB_MATRIX_ENABLE
461 serial_m2s_buffer.is_rgb_matrix_suspended = rgb_matrix_get_suspend_state();
441# endif 462# endif
442 463
443 return true; 464 return true;
@@ -484,10 +505,10 @@ void transport_slave(matrix_row_t matrix[]) {
484# endif 505# endif
485 506
486 if (layer_state != serial_m2s_buffer.t_layer_state) { 507 if (layer_state != serial_m2s_buffer.t_layer_state) {
487 layer_state_set(serial_m2s_buffer.t_layer_state); 508 layer_state = serial_m2s_buffer.t_layer_state;
488 } 509 }
489 if (default_layer_state != serial_m2s_buffer.t_default_layer_state) { 510 if (default_layer_state != serial_m2s_buffer.t_default_layer_state) {
490 default_layer_set(serial_m2s_buffer.t_default_layer_state); 511 default_layer_state = serial_m2s_buffer.t_default_layer_state;
491 } 512 }
492# ifdef OLED_DRIVER_ENABLE 513# ifdef OLED_DRIVER_ENABLE
493 if (serial_m2s_buffer.oled_on) { 514 if (serial_m2s_buffer.oled_on) {
@@ -496,6 +517,10 @@ void transport_slave(matrix_row_t matrix[]) {
496 oled_off(); 517 oled_off();
497 } 518 }
498# endif 519# endif
520
521# ifdef RGB_MATRIX_ENABLE
522 rgb_matrix_set_suspend_state(serial_m2s_buffer.is_rgb_matrix_suspended);
523# endif
499} 524}
500 525
501#endif 526#endif
diff --git a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/rules.mk b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/rules.mk
index 19b330cdc..99275c15a 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_right_trackball/rules.mk
+++ b/keyboards/handwired/dactyl_manuform/5x6_right_trackball/rules.mk
@@ -26,5 +26,5 @@ POINTING_DEVICE_ENABLE = yes
26SPLIT_KEYBOARD = yes 26SPLIT_KEYBOARD = yes
27SPLIT_TRANSPORT = custom 27SPLIT_TRANSPORT = custom
28 28
29SRC += pointer_transport.c pmw3360.c 29SRC += pmw3360.c
30QUANTUM_LIB_SRC += serial.c i2c_master.c i2c_slave.c spi_master.c 30QUANTUM_LIB_SRC += pointer_transport.c serial.c i2c_master.c i2c_slave.c spi_master.c
diff --git a/keyboards/keebio/iris/keymaps/drashna/keymap.c b/keyboards/keebio/iris/keymaps/drashna/keymap.c
index bc34ba822..1dc6f0e52 100644
--- a/keyboards/keebio/iris/keymaps/drashna/keymap.c
+++ b/keyboards/keebio/iris/keymaps/drashna/keymap.c
@@ -25,15 +25,16 @@
25 */ 25 */
26 26
27// clang-format off 27// clang-format off
28#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
28#define LAYOUT_iris_base( \ 29#define LAYOUT_iris_base( \
29 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ 30 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
30 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ 31 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
31 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ 32 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
32 ) \ 33 ) \
33 LAYOUT_wrapper( \ 34 LAYOUT_wrapper( \
34 KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \ 35 KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \
35 LALT_T(KC_TAB), K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSLS, \ 36 LALT_T(KC_TAB), K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSLS, \
36 KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ 37 KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
37 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, OS_LALT, OS_RGUI, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ 38 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, OS_LALT, OS_RGUI, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
38 KC_GRV, KC_SPC, LT(_LOWER,KC_BSPC), LT(_RAISE,KC_DEL), KC_ENT, RAISE \ 39 KC_GRV, KC_SPC, LT(_LOWER,KC_BSPC), LT(_RAISE,KC_DEL), KC_ENT, RAISE \
39 ) 40 )
diff --git a/keyboards/keebio/viterbi/keymaps/drashna/keymap.c b/keyboards/keebio/viterbi/keymaps/drashna/keymap.c
index 99e06b4de..0c4563e63 100644
--- a/keyboards/keebio/viterbi/keymaps/drashna/keymap.c
+++ b/keyboards/keebio/viterbi/keymaps/drashna/keymap.c
@@ -17,9 +17,7 @@
17#include "drashna.h" 17#include "drashna.h"
18 18
19// Fillers to make layering more clear 19// Fillers to make layering more clear
20#define DIABLO TG(_DIABLO) 20#define TT_MDIA TT(_MEDIA)
21#define GAMEPAD TG(_GAMEPAD)
22#define MEDIA TT(_MEDIA)
23 21
24// enum more_custom_keycodes { 22// enum more_custom_keycodes {
25// KC_P00 = NEW_SAFE_RANGE 23// KC_P00 = NEW_SAFE_RANGE
@@ -29,15 +27,15 @@
29const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 27const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
30 28
31 [_NUMLOCK] = LAYOUT_ortho_5x7( 29 [_NUMLOCK] = LAYOUT_ortho_5x7(
32 KC_NO, DIABLO, GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS, 30 KC_NO, TG_DBLO, TG_GAME, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS,
33 MEDIA, KC_CALC, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PAST, 31 TT_MDIA, KC_CALC, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PAST,
34 KC_HOME, KC_DEL, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PMNS, 32 KC_HOME, KC_DEL, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PMNS,
35 KC_END, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PPLS, 33 KC_END, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PPLS,
36 KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_COLN, KC_PENT 34 KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_COLN, KC_PENT
37 ), 35 ),
38 36
39 [_DIABLO] = LAYOUT_ortho_5x7( 37 [_DIABLO] = LAYOUT_ortho_5x7(
40 KC_ESC, DIABLO, KC_V, KC_D, XXXXXXX, XXXXXXX, KC_L, 38 KC_ESC, _______, KC_V, KC_D, XXXXXXX, XXXXXXX, KC_L,
41 KC_TAB, KC_S, KC_F, KC_I, KC_M, KC_T, KC_J, 39 KC_TAB, KC_S, KC_F, KC_I, KC_M, KC_T, KC_J,
42 KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_F, 40 KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_F,
43 KC_LCTL, KC_D3_3, KC_D3_3, KC_D3_3, KC_D3_3, KC_Z, KC_DIABLO_CLEAR, 41 KC_LCTL, KC_D3_3, KC_D3_3, KC_D3_3, KC_D3_3, KC_Z, KC_DIABLO_CLEAR,
@@ -45,16 +43,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
45 ), 43 ),
46 44
47 [_GAMEPAD] = LAYOUT_ortho_5x7( // Game pad layout designed primarily for Overwatch 45 [_GAMEPAD] = LAYOUT_ortho_5x7( // Game pad layout designed primarily for Overwatch
48 KC_NO, KC_ESC, GAMEPAD, KC_1, KC_2, KC_3, KC_4, 46 KC_NO, KC_ESC, _______, KC_1, KC_2, KC_3, KC_4,
49 MEDIA, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, 47 TT_MDIA, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
50 KC_Z, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, 48 KC_Z, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G,
51 KC_Y, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, 49 KC_Y, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B,
52 KC_F1, KC_U, KC_I, KC_Y, KC_V, KC_SPC, KC_V 50 KC_F1, KC_U, KC_I, KC_Y, KC_V, KC_SPC, KC_V
53 ), 51 ),
54 52
55 [_MEDIA] = LAYOUT_ortho_5x7( 53 [_MEDIA] = LAYOUT_ortho_5x7(
56 KC_MAKE, KC_RESET,MU_TOG, AU_ON, AU_OFF, CK_TOGG, RGB_SAD, 54 KC_MAKE, RESET, MU_TOG, AU_ON, AU_OFF, CK_TOGG, RGB_SAD,
57 MEDIA, EEP_RST, KC_RGB_T,RGB_M_P, RGB_M_B, RGB_M_R, RGB_SAI, 55 _______, EEP_RST, KC_RGB_T,RGB_M_P, RGB_M_B, RGB_M_R, RGB_SAI,
58 RGB_TOG, RGB_MOD, RGB_RMOD,RGB_M_SW,RGB_M_SN,RGB_M_K, RGB_HUD, 56 RGB_TOG, RGB_MOD, RGB_RMOD,RGB_M_SW,RGB_M_SN,RGB_M_K, RGB_HUD,
59 KC_MPLY, KC_MPRV, KC_MNXT, RGB_M_X, RGB_M_G, RGB_M_P, RGB_HUI, 57 KC_MPLY, KC_MPRV, KC_MNXT, RGB_M_X, RGB_M_G, RGB_M_P, RGB_HUI,
60 KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI 58 KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI
diff --git a/keyboards/kyria/keymaps/drashna/config.h b/keyboards/kyria/keymaps/drashna/config.h
index d5fcf9088..afd17b436 100644
--- a/keyboards/kyria/keymaps/drashna/config.h
+++ b/keyboards/kyria/keymaps/drashna/config.h
@@ -20,8 +20,6 @@
20 20
21#ifdef OLED_DRIVER_ENABLE 21#ifdef OLED_DRIVER_ENABLE
22# define OLED_DISPLAY_128X64 22# define OLED_DISPLAY_128X64
23# define OLED_FONT_H "font_gmk_bad.h"
24# define OLED_DISABLE_TIMEOUT
25# define OLED_SCROLL_TIMEOUT_RIGHT 60000 23# define OLED_SCROLL_TIMEOUT_RIGHT 60000
26#endif 24#endif
27 25
diff --git a/keyboards/kyria/keymaps/drashna/keymap.c b/keyboards/kyria/keymaps/drashna/keymap.c
index 08f32812e..ba1b03888 100644
--- a/keyboards/kyria/keymaps/drashna/keymap.c
+++ b/keyboards/kyria/keymaps/drashna/keymap.c
@@ -31,15 +31,16 @@ uint8_t is_master;
31 */ 31 */
32 32
33// clang-format off 33// clang-format off
34#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
34#define LAYOUT_kyria_base( \ 35#define LAYOUT_kyria_base( \
35 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ 36 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
36 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ 37 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
37 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ 38 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
38 ) \ 39 ) \
39 LAYOUT_wrapper( \ 40 LAYOUT_wrapper( \
40 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \ 41 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
41 LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ 42 LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
42 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, TG(_GAMEPAD), MEH(KC_MINS), TG(_DIABLO), KC_CAPS, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ 43 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, TG_GAME, MEH(KC_MINS), TG_DBLO, KC_CAPS, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
43 KC_MUTE, OS_LALT, KC_GRV, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI, UC(0x03A8), UC(0x2E2E) \ 44 KC_MUTE, OS_LALT, KC_GRV, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI, UC(0x03A8), UC(0x2E2E) \
44 ) 45 )
45/* Re-pass though to allow templates to be used */ 46/* Re-pass though to allow templates to be used */
@@ -112,7 +113,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
112 [_DIABLO] = LAYOUT_wrapper( 113 [_DIABLO] = LAYOUT_wrapper(
113 KC_ESC, KC_S, KC_I, KC_F, KC_M, KC_T, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, 114 KC_ESC, KC_S, KC_I, KC_F, KC_M, KC_T, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
114 KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 115 KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
115 KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, KC_J, KC_L, TG(_DIABLO), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 116 KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, KC_J, KC_L, TG_DBLO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
116 KC_DIABLO_CLEAR, KC_J, KC_NO, SFT_T(KC_SPACE), ALT_T(KC_Q), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO 117 KC_DIABLO_CLEAR, KC_J, KC_NO, SFT_T(KC_SPACE), ALT_T(KC_Q), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
117 ), 118 ),
118 [_LOWER] = LAYOUT_wrapper( 119 [_LOWER] = LAYOUT_wrapper(
diff --git a/keyboards/kyria/keymaps/drashna/rules.mk b/keyboards/kyria/keymaps/drashna/rules.mk
index 756c044fa..7a6a86e9f 100644
--- a/keyboards/kyria/keymaps/drashna/rules.mk
+++ b/keyboards/kyria/keymaps/drashna/rules.mk
@@ -1,7 +1,7 @@
1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays 1OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays
2ENCODER_ENABLE = yes # ENables the use of one or more encoders 2ENCODER_ENABLE = yes # ENables the use of one or more encoders
3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow 3RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
4RGBLIGHT_STARTUP_ANIMATION = yes 4RGBLIGHT_STARTUP_ANIMATION = no
5 5
6BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration 6BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration
7MOUSEKEY_ENABLE = no # Mouse keys 7MOUSEKEY_ENABLE = no # Mouse keys
diff --git a/keyboards/moonlander/keymaps/drashna/keymap.c b/keyboards/moonlander/keymaps/drashna/keymap.c
index a12be12ea..57c69df48 100644
--- a/keyboards/moonlander/keymaps/drashna/keymap.c
+++ b/keyboards/moonlander/keymaps/drashna/keymap.c
@@ -27,13 +27,13 @@ enum more_custom_keycodes { KC_SWAP_NUM = NEW_SAFE_RANGE };
27 27
28#define LAYOUT_moonlander_base( \ 28#define LAYOUT_moonlander_base( \
29 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ 29 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
30 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ 30 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
31 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ 31 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
32 ) \ 32 ) \
33 LAYOUT_moonlander_wrapper( \ 33 LAYOUT_moonlander_wrapper( \
34 KC_ESC, ________________NUMBER_LEFT________________, UC_FLIP, UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, \ 34 KC_ESC, ________________NUMBER_LEFT________________, UC_FLIP, UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, \
35 KC_TAB, K01, K02, K03, K04, K05, TG(_DIABLO),TG(_DIABLO), K06, K07, K08, K09, K0A, KC_BSLS, \ 35 KC_TAB, K01, K02, K03, K04, K05, TG_DBLO,TG_DBLO, K06, K07, K08, K09, K0A, KC_BSLS, \
36 KC_C1R3, K11, K12, K13, K14, K15, TG(_GAMEPAD),TG(_GAMEPAD), K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ 36 KC_C1R3, K11, K12, K13, K14, K15, TG_GAME,TG_GAME, K16, K17, K18, K19, K1A, RALT_T(K1B), \
37 KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A),KC_MRSF, \ 37 KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A),KC_MRSF, \
38 KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, KC_NO, KC_DEL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, UC(0x2E2E), \ 38 KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, KC_NO, KC_DEL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, UC(0x2E2E), \
39 KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT \ 39 KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT \
@@ -105,7 +105,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
105 [_GAMEPAD] = LAYOUT_moonlander_wrapper( 105 [_GAMEPAD] = LAYOUT_moonlander_wrapper(
106 KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, HYPR(KC_Q), KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, 106 KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, HYPR(KC_Q), KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
107 KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, UC_SHRG, UC_DISA, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 107 KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, UC_SHRG, UC_DISA, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
108 KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_TRNS, TG(_GAMEPAD), KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO, 108 KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_TRNS, TG_GAME, KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO,
109 KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO, 109 KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO,
110 KC_GRV, KC_U, KC_I, KC_Y, KC_T, KC_PSCR, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, 110 KC_GRV, KC_U, KC_I, KC_Y, KC_T, KC_PSCR, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO,
111 KC_V, KC_SPC, KC_H, KC_NO, KC_NO, KC_SWAP_NUM 111 KC_V, KC_SPC, KC_H, KC_NO, KC_NO, KC_SWAP_NUM
diff --git a/keyboards/orthodox/keymaps/drashna/keymap.c b/keyboards/orthodox/keymaps/drashna/keymap.c
index 2dbe18634..32b0dcfeb 100644
--- a/keyboards/orthodox/keymaps/drashna/keymap.c
+++ b/keyboards/orthodox/keymaps/drashna/keymap.c
@@ -8,14 +8,15 @@
8 * of use. K## is a placeholder to pass through the individual keycodes 8 * of use. K## is a placeholder to pass through the individual keycodes
9 */ 9 */
10// clang-format off 10// clang-format off
11#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
11#define LAYOUT_orthodox_base( \ 12#define LAYOUT_orthodox_base( \
12 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ 13 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
13 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ 14 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
14 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ 15 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
15 ) \ 16 ) \
16 LAYOUT_wrapper( \ 17 LAYOUT_wrapper( \
17 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \ 18 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \
18 LALT_T(KC_TAB), K11, K12, K13, K14, K15, OS_LALT, OS_LGUI, OS_RALT, RAISE, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ 19 LALT_T(KC_TAB), K11, K12, K13, K14, K15, OS_LALT, OS_LGUI, OS_RALT, RAISE, K16, K17, K18, K19, K1A, RALT_T(K1B), \
19 KC_MLSF, CTL_T(K21), K22, K23, K24, K25, LOWER, KC_SPACE,KC_BSPC, KC_DEL, KC_ENT, RAISE, K26, K27, K28, K29, RCTL_T(K2A), KC_MRSF \ 20 KC_MLSF, CTL_T(K21), K22, K23, K24, K25, LOWER, KC_SPACE,KC_BSPC, KC_DEL, KC_ENT, RAISE, K26, K27, K28, K29, RCTL_T(K2A), KC_MRSF \
20 ) 21 )
21#define LAYOUT_orthodox_base_wrapper(...) LAYOUT_orthodox_base(__VA_ARGS__) 22#define LAYOUT_orthodox_base_wrapper(...) LAYOUT_orthodox_base(__VA_ARGS__)
diff --git a/keyboards/splitkb/zima/keymaps/drashna/config.h b/keyboards/splitkb/zima/keymaps/drashna/config.h
new file mode 100644
index 000000000..91d657eda
--- /dev/null
+++ b/keyboards/splitkb/zima/keymaps/drashna/config.h
@@ -0,0 +1,32 @@
1/* Copyright 2019 Thomas Baart
2 * Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
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
18#pragma once
19
20#define OLED_FONT_H "users/drashna/drashna_font.h"
21#define OLED_UPDATE_INTERVAL 15
22#define OLED_DISABLE_TIMEOUT
23#define OLED_FONT_END 255
24// # define OLED_FONT_5X5
25// # define OLED_FONT_AZTECH
26// # define OLED_FONT_BMPLAIN
27# define OLED_FONT_SUPER_DIGG
28// # define OLED_LOGO_GMK_BAD
29// # define OLED_LOGO_HUE_MANITEE
30// # define OLED_LOGO_CORNE
31// # define OLED_LOGO_GOTHAM
32#define OLED_LOGO_SCIFI
diff --git a/keyboards/splitkb/zima/keymaps/drashna/keymap.c b/keyboards/splitkb/zima/keymaps/drashna/keymap.c
new file mode 100644
index 000000000..9d3919ee2
--- /dev/null
+++ b/keyboards/splitkb/zima/keymaps/drashna/keymap.c
@@ -0,0 +1,140 @@
1/* Copyright 2019 Thomas Baart
2 * Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
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#include QMK_KEYBOARD_H
18#include <stdio.h>
19
20#ifdef HAPTIC_ENABLE
21# include "haptic.h"
22extern haptic_config_t haptic_config;
23#endif
24
25const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
26 [0] = LAYOUT_ortho_4x3( /* Base */
27 KC_MUTE, TG(1), TG(2),
28 KC_P7, KC_P8, KC_P9,
29 KC_P4, KC_P5, KC_P6,
30 KC_P1, KC_P2, KC_P3
31 ),
32 [1] = LAYOUT_ortho_4x3( /* Layer 1 */
33 RESET, _______, XXXXXXX,
34 AU_ON, AU_OFF, XXXXXXX,
35 CK_TOGG, XXXXXXX, CK_UP,
36 CK_RST, XXXXXXX, CK_DOWN
37 ),
38 [2] = LAYOUT_ortho_4x3( /* Layer 2*/
39 RGB_TOG, RGB_MOD, _______,
40 RGB_HUI, RGB_SAI, RGB_VAI,
41 RGB_HUD, RGB_SAD, RGB_VAD,
42 HPT_TOG, HPT_FBK, HPT_CONT
43 )
44};
45
46
47static bool is_asleep = false;
48static uint32_t oled_timer;
49
50void render_oled_logo(void) {
51 // clang-format off
52 static const char PROGMEM qmk_logo[] = {
53 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
54 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
55 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
56 // clang-format on
57 oled_write_ln_P(qmk_logo, false);
58}
59
60void render_user_status(void) {
61 static const char PROGMEM audio_status[2][3] = {{0xE0, 0xE1, 0}, {0xE2, 0xE3, 0}};
62 oled_write_P(audio_status[is_audio_on()], false);
63 static const char PROGMEM audio_clicky_status[2][3] = {{0xF4, 0xF5, 0}, {0xF6, 0xF7, 0}};
64 oled_write_P(audio_clicky_status[is_clicky_on() && is_audio_on()], false);
65 static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}};
66 oled_write_P(rgb_layer_status[rgblight_is_enabled()], false);
67 static const char PROGMEM nukem_good[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}};
68 oled_write_P(nukem_good[0], haptic_config.enable);
69}
70
71void keyboard_post_init_user(void) {
72 oled_scroll_set_speed(0);
73}
74
75void oled_task_user(void) {
76 if (is_asleep) {
77 oled_off();
78 return;
79 }
80
81 if (timer_elapsed32(oled_timer) < 30000) {
82 oled_on();
83 oled_scroll_off();
84 oled_write_P(PSTR("SplitKB's Zima"), false);
85 char layer[2] = {0};
86 snprintf(layer, sizeof(layer), "%d", get_highest_layer(layer_state));
87 oled_write_P(PSTR(" L:"), false);
88 oled_write_ln(layer, false);
89 oled_write_ln_P(PSTR("--------------"), false);
90 if (rgblight_is_enabled()) {
91 oled_write_P(PSTR("HSV: "), false);
92 char rgbs[14];
93 snprintf(rgbs, sizeof(rgbs), "%3d, %3d, %3d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val());
94 oled_write_ln(rgbs, false);
95 } else {
96 oled_write_ln_P(PSTR("RGB LIGHT DISABLED"), false);
97 }
98 render_user_status();
99 } else {
100 if (timer_elapsed32(oled_timer) < 120000) {
101 oled_on();
102 render_oled_logo();
103 oled_scroll_right();
104 } else {
105 oled_off();
106 }
107 }
108}
109
110void suspend_power_down_user(void) {
111 is_asleep = true;
112}
113
114void suspend_wakeup_init_user(void) {
115 is_asleep = false;
116}
117
118bool process_record_user(uint16_t keycode, keyrecord_t* record) {
119 oled_timer = timer_read32();
120
121 return true;
122}
123
124
125 void encoder_update_user(uint8_t index, bool clockwise) {
126 if (clockwise) {
127 tap_code16(KC_VOLU);
128 } else {
129 tap_code16(KC_VOLD);
130 }
131# ifdef OLED_DRIVER_ENABLE
132 oled_timer = timer_read32();
133# endif
134# if defined(AUDIO_ENABLE) && defined(AUDIO_CLICKY)
135 if (is_audio_on() && is_clicky_on()) clicky_play();
136# endif
137# ifdef HAPTIC_ENABLE
138 if (haptic_config.enable) haptic_play();
139# endif
140}
diff --git a/keyboards/splitkb/zima/keymaps/drashna/readme.md b/keyboards/splitkb/zima/keymaps/drashna/readme.md
new file mode 100644
index 000000000..0f78f4bf1
--- /dev/null
+++ b/keyboards/splitkb/zima/keymaps/drashna/readme.md
@@ -0,0 +1,7 @@
1# The default keymap for zima
2
3This includes support for the OLED and Encoder. However, the actual code is found in the `zima.c` file. This can be replaced by adding your own `oled_task_user(void)` and `encoder_update_user` functinons. These will replace what is in the keyboard, and allow you to customize these features.
4
5The reason that this is done this way, is so that this functionality will work on the [QMK Configurator](https://config.qmk.fm/#/splitkb/zima/LAYOUT_ortho_4x3)
6
7For reference, the code used for the oled and encoder defaults is in [zima.c](https://github.com/qmk/qmk_firmware/tree/master/keyboards/splitkb/zima/zima.c).
diff --git a/keyboards/splitkb/zima/keymaps/drashna/rules.mk b/keyboards/splitkb/zima/keymaps/drashna/rules.mk
new file mode 100644
index 000000000..b9a1f7f25
--- /dev/null
+++ b/keyboards/splitkb/zima/keymaps/drashna/rules.mk
@@ -0,0 +1,2 @@
1# is intentional. won't compile under size, otherwise.
2USER_NAME := not_drashna
diff --git a/layouts/community/ergodox/drashna/keymap.c b/layouts/community/ergodox/drashna/keymap.c
index fb5bcc6bd..2bcf672a9 100644
--- a/layouts/community/ergodox/drashna/keymap.c
+++ b/layouts/community/ergodox/drashna/keymap.c
@@ -40,17 +40,20 @@ bool skip_leds = false;
40 * ease of use. K## is a placeholder to pass through the individual keycodes 40 * ease of use. K## is a placeholder to pass through the individual keycodes
41 */ 41 */
42// clang-format off 42// clang-format off
43#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)
44#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
45
43#define LAYOUT_ergodox_pretty_base( \ 46#define LAYOUT_ergodox_pretty_base( \
44 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ 47 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
45 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ 48 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
46 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ 49 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
47 ) \ 50 ) \
48 LAYOUT_ergodox_pretty_wrapper( \ 51 LAYOUT_ergodox_pretty_wrapper( \
49 KC_ESC, ________________NUMBER_LEFT________________, UC_FLIP, UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, \ 52 KC_ESC, ________________NUMBER_LEFT________________, UC_FLIP, UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, \
50 LALT_T(KC_TAB), K01, K02, K03, K04, K05, TG(_DIABLO), TG(_DIABLO), K06, K07, K08, K09, K0A, KC_BSLS, \ 53 LALT_T(KC_TAB), K01, K02, K03, K04, K05, TG_DBLO, TG_DBLO, K06, K07, K08, K09, K0A, KC_BSLS, \
51 KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ 54 KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
52 KC_MLSF, CTL_T(K21), K22, K23, K24, K25, TG(_GAMEPAD), TG(_GAMEPAD), K26, K27, K28, K29, RCTL_T(K2A), KC_MRSF, \ 55 KC_MLSF, CTL_T(K21), K22, K23, K24, K25, TG_GAME, TG_GAME, K26, K27, K28, K29, RCTL_T(K2A), KC_MRSF, \
53 KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, KC_BTN1, KC_BTN3, KC_BTN2, PM_SCROLL, PM_PRECISION, \ 56 KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, KC_BTN1, KC_BTN3, KC_BTN2, PM_SCROLL, PM_PRECISION, \
54 OS_LALT, OS_LGUI, OS_RGUI, CTL_T(KC_ESCAPE), \ 57 OS_LALT, OS_LGUI, OS_RGUI, CTL_T(KC_ESCAPE), \
55 KC_APP, KC_MENU, \ 58 KC_APP, KC_MENU, \
56 KC_SPC, LT(_LOWER, KC_BSPC), OS_LWR, OS_RSE, LT(_RAISE, KC_DEL), KC_ENT \ 59 KC_SPC, LT(_LOWER, KC_BSPC), OS_LWR, OS_RSE, LT(_RAISE, KC_DEL), KC_ENT \
@@ -235,7 +238,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
235 KC_ESC, KC_NO, KC_1, KC_2, KC_3, HYPR(KC_Q), HYPR(KC_GRV), KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, 238 KC_ESC, KC_NO, KC_1, KC_2, KC_3, HYPR(KC_Q), HYPR(KC_GRV), KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
236 KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, UC_SHRG, UC_DISA, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 239 KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_T, UC_SHRG, UC_DISA, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
237 KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO, 240 KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO,
238 KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_TRNS, TG(_GAMEPAD), KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO, 241 KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_TRNS, TG_GAME, KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO,
239 KC_GRV, KC_U, KC_I, KC_Y, KC_T, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, 242 KC_GRV, KC_U, KC_I, KC_Y, KC_T, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO,
240 KC_O, KC_P, MAGIC_TOGGLE_NKRO, LALT(KC_PSCR), 243 KC_O, KC_P, MAGIC_TOGGLE_NKRO, LALT(KC_PSCR),
241 KC_LGUI, KC_HYPR, 244 KC_LGUI, KC_HYPR,
diff --git a/layouts/community/ortho_4x12/drashna/keymap.c b/layouts/community/ortho_4x12/drashna/keymap.c
index d0df7f5c3..61f22dfe9 100644
--- a/layouts/community/ortho_4x12/drashna/keymap.c
+++ b/layouts/community/ortho_4x12/drashna/keymap.c
@@ -50,14 +50,15 @@ enum planck_keycodes {
50 * of use. K## is a placeholder to pass through the individual keycodes 50 * of use. K## is a placeholder to pass through the individual keycodes
51 */ 51 */
52// clang-format off 52// clang-format off
53#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__)
53#define LAYOUT_ortho_4x12_base( \ 54#define LAYOUT_ortho_4x12_base( \
54 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ 55 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
55 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ 56 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
56 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ 57 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
57 ) \ 58 ) \
58 LAYOUT_ortho_4x12_wrapper( \ 59 LAYOUT_ortho_4x12_wrapper( \
59 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_DEL, \ 60 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_DEL, \
60 LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ 61 LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
61 KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), KC_ENT, \ 62 KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), KC_ENT, \
62 BACKLIT, OS_LCTL, OS_LALT, OS_LGUI, PLNK_1, PLNK_2, PLNK_3, PLNK_4, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ 63 BACKLIT, OS_LCTL, OS_LALT, OS_LGUI, PLNK_1, PLNK_2, PLNK_3, PLNK_4, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
63 ) 64 )
diff --git a/layouts/community/ortho_5x12/drashna/keymap.c b/layouts/community/ortho_5x12/drashna/keymap.c
index 98c349b2e..9f6622c7d 100644
--- a/layouts/community/ortho_5x12/drashna/keymap.c
+++ b/layouts/community/ortho_5x12/drashna/keymap.c
@@ -24,17 +24,17 @@
24 * of use. K## is a placeholder to pass through the individual keycodes 24 * of use. K## is a placeholder to pass through the individual keycodes
25 */ 25 */
26// clang-format off 26// clang-format off
27#define LAYOUT_ortho_5x12_wrapper(...) LAYOUT_ortho_5x12(__VA_ARGS__)
27#define LAYOUT_ortho_5x12_base( \ 28#define LAYOUT_ortho_5x12_base( \
28 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ 29 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
29 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ 30 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
30 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \ 31 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
31 K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A \
32 ) \ 32 ) \
33 LAYOUT_ortho_5x12_wrapper( \ 33 LAYOUT_ortho_5x12_wrapper( \
34 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \ 34 KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_BSPC, \
35 LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_BSPC, \ 35 LALT_T(KC_TAB), K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \
36 KC_C1R3, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, RALT_T(KC_QUOT), \ 36 KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
37 KC_MLSF, CTL_T(K31), K32, K33, K34, K35, K36, K37, K38, K39, RCTL_T(K3A), KC_ENT, \ 37 KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), KC_ENT, \
38 KC_NO, OS_LCTL, OS_LALT, OS_LGUI, SP_LWER, BK_LWER, DL_RAIS, ET_RAIS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ 38 KC_NO, OS_LCTL, OS_LALT, OS_LGUI, SP_LWER, BK_LWER, DL_RAIS, ET_RAIS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
39 ) 39 )
40 40
@@ -44,28 +44,24 @@
44const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 44const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
45 45
46[_QWERTY] = LAYOUT_ortho_5x12_base_wrapper( 46[_QWERTY] = LAYOUT_ortho_5x12_base_wrapper(
47 ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________,
48 _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, 47 _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
49 _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, 48 _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
50 _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ 49 _________________QWERTY_L3_________________, _________________QWERTY_R3_________________
51), 50),
52 51
53[_COLEMAK] = LAYOUT_ortho_5x12_base_wrapper( 52[_COLEMAK] = LAYOUT_ortho_5x12_base_wrapper(
54 ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________,
55 _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, 53 _________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
56 _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, 54 _________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
57 _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ 55 _________________COLEMAK_L3________________, _________________COLEMAK_R3________________
58), 56),
59 57
60[_DVORAK] = LAYOUT_ortho_5x12_base_wrapper( 58[_DVORAK] = LAYOUT_ortho_5x12_base_wrapper(
61 ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________,
62 _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, 59 _________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
63 _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, 60 _________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
64 _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ 61 _________________DVORAK_L3_________________, _________________DVORAK_R3_________________
65), 62),
66 63
67[_WORKMAN] = LAYOUT_ortho_5x12_base_wrapper( 64[_WORKMAN] = LAYOUT_ortho_5x12_base_wrapper(
68 ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________,
69 _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, 65 _________________WORKMAN_L1________________, _________________WORKMAN_R1________________,
70 _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, 66 _________________WORKMAN_L2________________, _________________WORKMAN_R2________________,
71 _________________WORKMAN_L3________________, _________________WORKMAN_R3________________ 67 _________________WORKMAN_L3________________, _________________WORKMAN_R3________________
diff --git a/layouts/community/ortho_5x12/drashna/rules.mk b/layouts/community/ortho_5x12/drashna/rules.mk
index 2c59c614f..af68e04c0 100644
--- a/layouts/community/ortho_5x12/drashna/rules.mk
+++ b/layouts/community/ortho_5x12/drashna/rules.mk
@@ -9,6 +9,8 @@ NKRO_ENABLE = yes
9ifeq ($(strip $(KEYBOARD)), fractal) 9ifeq ($(strip $(KEYBOARD)), fractal)
10 RGB_MATRIX_ENABLE = no 10 RGB_MATRIX_ENABLE = no
11 AUDIO_ENABLE = yes 11 AUDIO_ENABLE = yes
12 AUDIO_SUPPORTED = yes
13 RGBLIGHT_SUPPORTED = yes
12 RGBLIGHT_ENABLE = yes 14 RGBLIGHT_ENABLE = yes
13 RGBLIGHT_TWINKLE = yes 15 RGBLIGHT_TWINKLE = yes
14 RGBLIGHT_STARTUP_ANIMATION = yes 16 RGBLIGHT_STARTUP_ANIMATION = yes
diff --git a/layouts/community/split_3x6_3/drashna/chconf.h b/layouts/community/split_3x6_3/drashna/chconf.h
new file mode 100644
index 000000000..ffcfb1989
--- /dev/null
+++ b/layouts/community/split_3x6_3/drashna/chconf.h
@@ -0,0 +1,9 @@
1
2#define CH_CFG_ST_RESOLUTION 16
3#define CH_CFG_ST_FREQUENCY 10000
4
5#if __has_include("platforms/chibios/common/configs/chconf.h")
6# include_next "platforms/chibios/common/configs/chconf.h"
7#else
8# include_next "chconf.h"
9#endif
diff --git a/layouts/community/split_3x6_3/drashna/config.h b/layouts/community/split_3x6_3/drashna/config.h
index b9b1d073d..6205ededf 100644
--- a/layouts/community/split_3x6_3/drashna/config.h
+++ b/layouts/community/split_3x6_3/drashna/config.h
@@ -19,8 +19,10 @@
19/* Select hand configuration */ 19/* Select hand configuration */
20 20
21// #define MASTER_LEFT 21// #define MASTER_LEFT
22#define MASTER_RIGHT 22// #define MASTER_RIGHT
23// #define EE_HAND 23#define EE_HANDS
24#define SPLIT_MODS_ENABLE
25
24#undef USE_I2C 26#undef USE_I2C
25#undef SSD1306OLED 27#undef SSD1306OLED
26 28
@@ -40,7 +42,7 @@
40#ifdef RGB_MATRIX_ENABLE 42#ifdef RGB_MATRIX_ENABLE
41# ifdef CONVERT_TO_PROTON_C 43# ifdef CONVERT_TO_PROTON_C
42# undef RGB_DI_PIN 44# undef RGB_DI_PIN
43# define RGB_DI_PIN PAL_LINE(GPIOA, 3) 45# define RGB_DI_PIN A3
44# endif 46# endif
45# define RGB_MATRIX_KEYPRESSES // reacts to keypresses 47# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
46// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) 48// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
@@ -56,24 +58,23 @@
56#endif 58#endif
57 59
58#ifdef CONVERT_TO_PROTON_C 60#ifdef CONVERT_TO_PROTON_C
59# define WS2812_PWM_DRIVER PWMD15 // default: PWMD2 61# define WS2812_PWM_DRIVER PWMD2 // default: PWMD2
60# define WS2812_PWM_CHANNEL 2 // default: 2 62# define WS2812_PWM_CHANNEL 4 // default: 2
61# define WS2812_PWM_PAL_MODE 9 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2 63# define WS2812_PWM_PAL_MODE 1 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2
62# define WS2812_DMA_STREAM STM32_DMA1_STREAM5 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. 64# define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
63# define WS2812_DMA_CHANNEL 5 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. 65# define WS2812_DMA_CHANNEL 2 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU.
64# define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM15_UP // DMAMUX configuration for TIMx_UP -- only required if your MCU has a DMAMUX peripheral, see the respective reference manual for the appropriate values for your MCU. 66# define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM2_UP // DMAMUX configuration for TIMx_UP -- only required if your MCU has a DMAMUX peripheral, see the respective reference manual for the appropriate values for your MCU.
65 67
66# undef SOFT_SERIAL_PIN 68# undef SOFT_SERIAL_PIN
67# define SOFT_SERIAL_PIN D3 69# define SOFT_SERIAL_PIN D3
68# define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1 70# define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1
69# define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7 71# define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
70 72
71
72// #define INIT_EE_HANDS_LEFT 73// #define INIT_EE_HANDS_LEFT
73// #define INIT_EE_HANDS_RIGHT 74// #define INIT_EE_HANDS_RIGHT
74#endif 75#endif
75 76
76#ifdef AUDIO_ENABLE 77#if defined(AUDIO_ENABLE) && !defined(CONVERT_TO_PROTON_C)
77# define B6_AUDIO 78# define B6_AUDIO
78# define NO_MUSIC_MODE 79# define NO_MUSIC_MODE
79#endif 80#endif
@@ -88,9 +89,5 @@
88#else 89#else
89# define PRODUCT Drashna Hacked Corne Keyboard 90# define PRODUCT Drashna Hacked Corne Keyboard
90#endif 91#endif
91#define OLED_FONT_H "layouts/community/split_3x6_3/drashna/glcdfont.c"
92// #define OLED_FONT_WIDTH 5
93// #define OLED_FONT_HEIGHT 7
94 92
95#define OLED_DISABLE_TIMEOUT
96#define TAPPING_TERM_PER_KEY 93#define TAPPING_TERM_PER_KEY
diff --git a/layouts/community/split_3x6_3/drashna/keymap.c b/layouts/community/split_3x6_3/drashna/keymap.c
index 513cc7f7d..65e05f64b 100644
--- a/layouts/community/split_3x6_3/drashna/keymap.c
+++ b/layouts/community/split_3x6_3/drashna/keymap.c
@@ -27,14 +27,15 @@ enum crkbd_keycodes { RGBRST = NEW_SAFE_RANGE };
27 */ 27 */
28 28
29// clang-format off 29// clang-format off
30#define LAYOUT_split_3x6_3_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__)
30#define LAYOUT_split_3x6_3_base( \ 31#define LAYOUT_split_3x6_3_base( \
31 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ 32 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
32 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ 33 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
33 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ 34 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
34 ) \ 35 ) \
35 LAYOUT_split_3x6_3_wrapper( \ 36 LAYOUT_split_3x6_3_wrapper( \
36 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \ 37 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
37 ALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ 38 ALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
38 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ 39 OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
39 RGB_MOD, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI \ 40 RGB_MOD, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI \
40 ) 41 )
@@ -121,11 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
121 122
122#ifdef OLED_DRIVER_ENABLE 123#ifdef OLED_DRIVER_ENABLE
123oled_rotation_t oled_init_user(oled_rotation_t rotation) { 124oled_rotation_t oled_init_user(oled_rotation_t rotation) {
124 if (is_keyboard_master()) { 125 return OLED_ROTATION_270;
125 return OLED_ROTATION_270;
126 } else {
127 return rotation;
128 }
129} 126}
130#endif 127#endif
131 128
diff --git a/layouts/community/split_3x6_3/drashna/mcuconf.h b/layouts/community/split_3x6_3/drashna/mcuconf.h
index 429e4e1cd..649af5d1f 100644
--- a/layouts/community/split_3x6_3/drashna/mcuconf.h
+++ b/layouts/community/split_3x6_3/drashna/mcuconf.h
@@ -19,14 +19,18 @@
19 19
20// #undef STM32_HSE_ENABLED 20// #undef STM32_HSE_ENABLED
21// #define STM32_HSE_ENABLED FALSE 21// #define STM32_HSE_ENABLED FALSE
22#undef STM32_GPT_USE_TIM15 22// #undef STM32_GPT_USE_TIM15
23#define STM32_GPT_USE_TIM15 FALSE 23// #define STM32_GPT_USE_TIM15 FALSE
24 24
25#undef STM32_PWM_USE_TIM15 25#undef STM32_PWM_USE_TIM2
26#define STM32_PWM_USE_TIM15 TRUE 26#define STM32_PWM_USE_TIM2 TRUE
27#undef STM32_PWM_USE_TIM3
28#define STM32_PWM_USE_TIM3 FALSE
27 29
28#undef STM32_SERIAL_USE_USART1 30#undef STM32_SERIAL_USE_USART1
29#define STM32_SERIAL_USE_USART1 TRUE 31#define STM32_SERIAL_USE_USART1 TRUE
30 32
31#undef STM32_PWM_TIM15_IRQ_PRIORITY 33// #undef STM32_PWM_TIM15_IRQ_PRIORITY
32#define STM32_PWM_TIM15_IRQ_PRIORITY 16 34// #define STM32_PWM_TIM15_IRQ_PRIORITY 16
35#undef STM32_ST_USE_TIMER
36#define STM32_ST_USE_TIMER 3
diff --git a/layouts/community/split_3x6_3/drashna/rules.mk b/layouts/community/split_3x6_3/drashna/rules.mk
index 5358cb0ac..db284f78d 100644
--- a/layouts/community/split_3x6_3/drashna/rules.mk
+++ b/layouts/community/split_3x6_3/drashna/rules.mk
@@ -29,6 +29,6 @@ endif
29 29
30ifeq ($(strip $(CTPC)), yes) 30ifeq ($(strip $(CTPC)), yes)
31 HAPTIC_ENABLE = no 31 HAPTIC_ENABLE = no
32 WS2812_DRIVER = pwm 32 WS2812_DRIVER = pwm # won't work without a patch to the ctpc mk file
33 SERIAL_DRIVER = usart 33 SERIAL_DRIVER = usart
34endif 34endif
diff --git a/users/drashna/config.h b/users/drashna/config.h
index 8837ca0a5..8081af9cc 100644
--- a/users/drashna/config.h
+++ b/users/drashna/config.h
@@ -22,8 +22,11 @@
22/* Set Polling rate to 1000Hz */ 22/* Set Polling rate to 1000Hz */
23#define USB_POLLING_INTERVAL_MS 1 23#define USB_POLLING_INTERVAL_MS 1
24 24
25#if defined(SPLIT_KEYBOAD) 25#if defined(SPLIT_KEYBOARD)
26# define SPLIT_MODS_ENABLE 26# define SPLIT_MODS_ENABLE
27// # define SPLIT_TRANSPORT_MIRROR
28# define SERIAL_USE_MULTI_TRANSACTION
29// # define SPLIT_NUM_TRANSACTIONS_KB 2
27#endif 30#endif
28 31
29#ifdef AUDIO_ENABLE 32#ifdef AUDIO_ENABLE
@@ -111,6 +114,18 @@
111# else 114# else
112# define OLED_UPDATE_INTERVAL 15 115# define OLED_UPDATE_INTERVAL 15
113# endif 116# endif
117# define OLED_DISABLE_TIMEOUT
118# define OLED_FONT_H "drashna_font.h"
119# define OLED_FONT_END 255
120// # define OLED_FONT_5X5
121// # define OLED_FONT_AZTECH
122// # define OLED_FONT_BMPLAIN
123// # define OLED_FONT_SUPER_DIGG
124// # define OLED_LOGO_GMK_BAD
125// # define OLED_LOGO_HUE_MANITEE
126// # define OLED_LOGO_CORNE
127// # define OLED_LOGO_GOTHAM
128# define OLED_LOGO_SCIFI
114#endif 129#endif
115 130
116#ifndef ONESHOT_TAP_TOGGLE 131#ifndef ONESHOT_TAP_TOGGLE
@@ -162,3 +177,22 @@
162#ifdef LOCKING_RESYNC_ENABLE 177#ifdef LOCKING_RESYNC_ENABLE
163# undef LOCKING_RESYNC_ENABLE 178# undef LOCKING_RESYNC_ENABLE
164#endif 179#endif
180
181#ifdef CONVERT_TO_PROTON_C
182// pins that are available but not present on Pro Micro
183# define A3 PAL_LINE(GPIOA, 3)
184# define A4 PAL_LINE(GPIOA, 4)
185# define A5 PAL_LINE(GPIOA, 5)
186# define A6 PAL_LINE(GPIOA, 6)
187# define A7 PAL_LINE(GPIOA, 7)
188# define A8 PAL_LINE(GPIOA, 8)
189# define A13 PAL_LINE(GPIOA, 13)
190# define A14 PAL_LINE(GPIOA, 14)
191# define A15 PAL_LINE(GPIOA, 15)
192# define B10 PAL_LINE(GPIOB, 10)
193# define B11 PAL_LINE(GPIOB, 11)
194# define B12 PAL_LINE(GPIOB, 12)
195# define C13 PAL_LINE(GPIOC, 13)
196# define C14 PAL_LINE(GPIOC, 14)
197# define C15 PAL_LINE(GPIOC, 15)
198#endif
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c
index 95c9d2f62..6a13f0d9b 100644
--- a/users/drashna/drashna.c
+++ b/users/drashna/drashna.c
@@ -111,7 +111,12 @@ void shutdown_user(void) {
111 111
112__attribute__((weak)) void suspend_power_down_keymap(void) {} 112__attribute__((weak)) void suspend_power_down_keymap(void) {}
113 113
114void suspend_power_down_user(void) { suspend_power_down_keymap(); } 114void suspend_power_down_user(void) {
115#ifdef OLED_DRIVER_ENABLE
116 oled_off();
117#endif
118 suspend_power_down_keymap();
119}
115 120
116__attribute__((weak)) void suspend_wakeup_init_keymap(void) {} 121__attribute__((weak)) void suspend_wakeup_init_keymap(void) {}
117 122
@@ -146,17 +151,34 @@ void matrix_scan_user(void) {
146 matrix_scan_keymap(); 151 matrix_scan_keymap();
147} 152}
148 153
154#ifdef AUDIO_ENABLE
155float doom_song[][2] = SONG(E1M1_DOOM);
156#endif
157
149__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } 158__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; }
150 159
151// on layer change, no matter where the change was initiated 160// on layer change, no matter where the change was initiated
152// Then runs keymap's layer change check 161// Then runs keymap's layer change check
153layer_state_t layer_state_set_user(layer_state_t state) { 162layer_state_t layer_state_set_user(layer_state_t state) {
154 if (!is_keyboard_master()) { return state; } 163 if (!is_keyboard_master()) {
155 164 return state;
165 }
166
156 state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); 167 state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
157#if defined(RGBLIGHT_ENABLE) 168#if defined(RGBLIGHT_ENABLE)
158 state = layer_state_set_rgb_light(state); 169 state = layer_state_set_rgb_light(state);
159#endif // RGBLIGHT_ENABLE 170#endif // RGBLIGHT_ENABLE
171#if defined(AUDIO_ENABLE) && !defined(__arm__)
172 static bool is_gamepad_on = false;
173 if (layer_state_cmp(state, _GAMEPAD) != is_gamepad_on) {
174 is_gamepad_on = layer_state_cmp(state, _GAMEPAD);
175 if (is_gamepad_on) {
176 PLAY_LOOP(doom_song);
177 } else {
178 stop_all_notes();
179 }
180 }
181#endif
160 return layer_state_set_keymap(state); 182 return layer_state_set_keymap(state);
161} 183}
162 184
@@ -164,7 +186,9 @@ __attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t
164 186
165// Runs state check and changes underglow color and animation 187// Runs state check and changes underglow color and animation
166layer_state_t default_layer_state_set_user(layer_state_t state) { 188layer_state_t default_layer_state_set_user(layer_state_t state) {
167 if (!is_keyboard_master()) { return state; } 189 if (!is_keyboard_master()) {
190 return state;
191 }
168 192
169 state = default_layer_state_set_keymap(state); 193 state = default_layer_state_set_keymap(state);
170#if 0 194#if 0
@@ -189,6 +213,9 @@ void eeconfig_init_user(void) {
189 userspace_config.rgb_layer_change = true; 213 userspace_config.rgb_layer_change = true;
190 eeconfig_update_user(userspace_config.raw); 214 eeconfig_update_user(userspace_config.raw);
191 eeconfig_init_keymap(); 215 eeconfig_init_keymap();
216#ifdef VIA_ENABLE
217 via_eeprom_reset();
218#endif
192 keyboard_init(); 219 keyboard_init();
193} 220}
194 221
diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h
index 35d11101d..9a18a8296 100644
--- a/users/drashna/drashna.h
+++ b/users/drashna/drashna.h
@@ -105,3 +105,7 @@ We use custom codes here, so we can substitute the right stuff
105# define KC_D3_3 KC_3 105# define KC_D3_3 KC_3
106# define KC_D3_4 KC_4 106# define KC_D3_4 KC_4
107#endif // TAP_DANCE_ENABLE 107#endif // TAP_DANCE_ENABLE
108
109#if defined(DRASHNA_CUSTOM_TRANSPORT) && defined(POINTING_DEVICE_ENABLE)
110void master_mouse_send(int8_t x, int8_t y);
111#endif
diff --git a/users/drashna/drashna_font.h b/users/drashna/drashna_font.h
new file mode 100644
index 000000000..6a3865a44
--- /dev/null
+++ b/users/drashna/drashna_font.h
@@ -0,0 +1,1306 @@
1#pragma once
2
3// additional fonts from
4// https://github.com/datacute/TinyOLED-Fonts
5
6#include "progmem.h"
7
8static const unsigned char font[] PROGMEM = {
9 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00 0
10 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, // 0x01 1
11 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, // 0x02 2
12 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, // 0x03 3 ♥
13 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, // 0x04 4 ♦
14 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, // 0x05 5 ♧
15 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, // 0x06 6 ♤
16 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, // 0x07 7
17 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, // 0x08 8
18 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, // 0x09 9
19 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, // 0x0A 10
20 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, // 0x0B 11 ♂
21 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, // 0x0C 12 ♀
22 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, // 0x0D 13 ♪
23 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, // 0x0E 14 ♫
24 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, // 0x0F 15
25 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, // 0x10 16
26 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, // 0x11 17
27 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, // 0x12 18 ↕
28 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, // 0x13 19 ‼
29 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, // 0x14 20 ¶
30 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, // 0x15 21 §
31 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, // 0x16 22 _
32 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, // 0x17 23 ↨
33 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, // 0x18 24 ↑
34 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, // 0x19 25 ↓
35 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, // 0x1A 26 →
36 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, // 0x1B 27 ←
37 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, // 0x1C 28 ⌙h
38 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, // 0x1D 29 ↭
39 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, // 0x1E 30
40 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, // 0x1F 31
41#if defined(OLED_FONT_5X5)
42 0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32
43 0x5c,0x00,0x00,0x00,0x00,0x00, // 0x21 33 !
44 0x06,0x00,0x06,0x00,0x00,0x00, // 0x22 34 "
45 0x28,0x7c,0x28,0x7c,0x28,0x00, // 0x23 35 #
46 0x5c,0x54,0xfe,0x54,0x74,0x00, // 0x24 36 $
47 0x44,0x20,0x10,0x08,0x44,0x00, // 0x25 37 %
48 0x28,0x54,0x54,0x20,0x50,0x00, // 0x26 38 &
49 0x06,0x00,0x00,0x00,0x00,0x00, // 0x27 39 '
50 0x38,0x44,0x00,0x00,0x00,0x00, // 0x28 40 (
51 0x44,0x38,0x00,0x00,0x00,0x00, // 0x29 41 )
52 0x02,0x07,0x02,0x00,0x00,0x00, // 0x2A 42 *
53 0x10,0x10,0x7c,0x10,0x10,0x00, // 0x2B 43 +
54 0xc0,0x00,0x00,0x00,0x00,0x00, // 0x2C 44 ,
55 0x10,0x10,0x10,0x10,0x10,0x00, // 0x2D 45 -
56 0x40,0x00,0x00,0x00,0x00,0x00, // 0x2E 46 .
57 0x60,0x10,0x0c,0x00,0x00,0x00, // 0x2F 47 /
58 0x7c,0x64,0x54,0x4c,0x7c,0x00, // 0x30 48 0
59 0x48,0x7c,0x40,0x00,0x00,0x00, // 0x31 49 1
60 0x64,0x54,0x54,0x54,0x48,0x00, // 0x32 50 2
61 0x44,0x54,0x54,0x54,0x6c,0x00, // 0x33 51 3
62 0x3c,0x20,0x70,0x20,0x20,0x00, // 0x34 52 4
63 0x5c,0x54,0x54,0x54,0x24,0x00, // 0x35 53 5
64 0x7c,0x54,0x54,0x54,0x74,0x00, // 0x36 54 6
65 0x04,0x04,0x64,0x14,0x0c,0x00, // 0x37 55 7
66 0x7c,0x54,0x54,0x54,0x7c,0x00, // 0x38 56 8
67 0x5c,0x54,0x54,0x54,0x7c,0x00, // 0x39 57 9
68 0x44,0x00,0x00,0x00,0x00,0x00, // 0x3A 58 :
69 0xc4,0x00,0x00,0x00,0x00,0x00, // 0x3B 59 ;
70 0x10,0x28,0x44,0x00,0x00,0x00, // 0x3C 60 <
71 0x28,0x28,0x28,0x28,0x28,0x00, // 0x3D 61 =
72 0x44,0x28,0x10,0x00,0x00,0x00, // 0x3E 62 >
73 0x08,0x04,0x54,0x08,0x00,0x00, // 0x3F 63 ?
74 0x7c,0x44,0x54,0x54,0x5c,0x00, // 0x40 64 @
75 0x7c,0x24,0x24,0x24,0x7c,0x00, // 0x41 65 A
76 0x7c,0x54,0x54,0x54,0x6c,0x00, // 0x42 66 B
77 0x7c,0x44,0x44,0x44,0x44,0x00, // 0x43 67 C
78 0x7c,0x44,0x44,0x44,0x38,0x00, // 0x44 68 D
79 0x7c,0x54,0x54,0x54,0x44,0x00, // 0x45 69 E
80 0x7c,0x14,0x14,0x14,0x04,0x00, // 0x46 70 F
81 0x7c,0x44,0x44,0x54,0x74,0x00, // 0x47 71 G
82 0x7c,0x10,0x10,0x10,0x7c,0x00, // 0x48 72 H
83 0x44,0x44,0x7c,0x44,0x44,0x00, // 0x49 73 I
84 0x60,0x40,0x40,0x44,0x7c,0x00, // 0x4A 74 J
85 0x7c,0x10,0x10,0x28,0x44,0x00, // 0x4B 75 K
86 0x7c,0x40,0x40,0x40,0x40,0x00, // 0x4C 76 L
87 0x7c,0x08,0x10,0x08,0x7c,0x00, // 0x4D 77 M
88 0x7c,0x08,0x10,0x20,0x7c,0x00, // 0x4E 78 N
89 0x38,0x44,0x44,0x44,0x38,0x00, // 0x4F 79 O
90 0x7c,0x14,0x14,0x14,0x08,0x00, // 0x50 80 P
91 0x3c,0x24,0x64,0x24,0x3c,0x00, // 0x51 81 Q
92 0x7c,0x14,0x14,0x14,0x68,0x00, // 0x52 82 R
93 0x5c,0x54,0x54,0x54,0x74,0x00, // 0x53 83 S
94 0x04,0x04,0x7c,0x04,0x04,0x00, // 0x54 84 T
95 0x7c,0x40,0x40,0x40,0x7c,0x00, // 0x55 85 U
96 0x0c,0x30,0x40,0x30,0x0c,0x00, // 0x56 86 V
97 0x3c,0x40,0x30,0x40,0x3c,0x00, // 0x57 87 W
98 0x44,0x28,0x10,0x28,0x44,0x00, // 0x58 88 X
99 0x0c,0x10,0x60,0x10,0x0c,0x00, // 0x59 89 Y
100 0x44,0x64,0x54,0x4c,0x44,0x00, // 0x5A 90 Z
101 0x7c,0x44,0x00,0x00,0x00,0x00, // 0x5B 91 [
102 0x0c,0x10,0x60,0x00,0x00,0x00, // 0x5C 92 \ backslash
103 0x44,0x7c,0x00,0x00,0x00,0x00, // 0x5D 93 ]
104 0x00,0x01,0x00,0x01,0x00,0x00, // 0x5E 94 ^
105 0x40,0x40,0x40,0x40,0x40,0x40, // 0x5F 95 _
106 0x00,0x01,0x00,0x00,0x00,0x00, // 0x60 96 `
107 0x7c,0x24,0x24,0x24,0x7c,0x00, // 0x61 97 a
108 0x7c,0x54,0x54,0x54,0x6c,0x00, // 0x62 98 b
109 0x7c,0x44,0x44,0x44,0x44,0x00, // 0x63 99 c
110 0x7c,0x44,0x44,0x44,0x38,0x00, // 0x64 100 d
111 0x7c,0x54,0x54,0x54,0x44,0x00, // 0x65 101 e
112 0x7c,0x14,0x14,0x14,0x04,0x00, // 0x66 102 f
113 0x7c,0x44,0x44,0x54,0x74,0x00, // 0x67 103 g
114 0x7c,0x10,0x10,0x10,0x7c,0x00, // 0x68 104 h
115 0x44,0x44,0x7c,0x44,0x44,0x00, // 0x69 105 i
116 0x60,0x40,0x40,0x44,0x7c,0x00, // 0x6A 106 j
117 0x7c,0x10,0x10,0x28,0x44,0x00, // 0x6B 107 k
118 0x7c,0x40,0x40,0x40,0x40,0x00, // 0x6C 108 l
119 0x7c,0x08,0x10,0x08,0x7c,0x00, // 0x6D 109 m
120 0x7c,0x08,0x10,0x20,0x7c,0x00, // 0x6E 110 n
121 0x38,0x44,0x44,0x44,0x38,0x00, // 0x6F 111 o
122 0x7c,0x14,0x14,0x14,0x08,0x00, // 0x70 112 p
123 0x3c,0x24,0x64,0x24,0x3c,0x00, // 0x71 113 q
124 0x7c,0x14,0x14,0x14,0x68,0x00, // 0x72 114 r
125 0x5c,0x54,0x54,0x54,0x74,0x00, // 0x73 115 s
126 0x04,0x04,0x7c,0x04,0x04,0x00, // 0x74 116 t
127 0x7c,0x40,0x40,0x40,0x7c,0x00, // 0x75 117 u
128 0x0c,0x30,0x40,0x30,0x0c,0x00, // 0x76 118 v
129 0x3c,0x40,0x30,0x40,0x3c,0x00, // 0x77 119 w
130 0x44,0x28,0x10,0x28,0x44,0x00, // 0x78 120 x
131 0x0c,0x10,0x60,0x10,0x0c,0x00, // 0x79 121 y
132 0x44,0x64,0x54,0x4c,0x44,0x00, // 0x7A 122 z
133 0x10,0x7c,0x44,0x00,0x00,0x00, // 0x7B 123 {
134 0x6c,0x00,0x00,0x00,0x00,0x00, // 0x7C 124 |
135 0x44,0x7c,0x10,0x00,0x00,0x00, // 0x7D 125 }
136 0x02,0x01,0x02,0x01,0x00,0x00, // 0x7E 126 ~
137 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127
138#elif defined(OLED_FONT_AZTECH)
139 0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32
140 0x00,0x2e,0x00,0x00,0x00,0x00, // 0x21 33 !
141 0x00,0x02,0x00,0x02,0x00,0x00, // 0x22 34 "
142 0x00,0x0a,0x1e,0x0a,0x1e,0x00, // 0x23 35 #
143 0x00,0x0e,0x2a,0x6b,0x2a,0x3a, // 0x24 36 $
144 0x00,0x06,0x06,0x26,0x18,0x06, // 0x25 37 %
145 0x38,0x3e,0x2a,0x2a,0x28,0x38, // 0x26 38 &
146 0x18,0x02,0x00,0x00,0x00,0x00, // 0x27 39 '
147 0x00,0x3e,0x22,0x00,0x00,0x00, // 0x28 40 (
148 0x00,0x22,0x3e,0x00,0x00,0x00, // 0x29 41 )
149 0x00,0x0e,0x0e,0x0e,0x04,0x00, // 0x2A 42 *
150 0x00,0x08,0x1c,0x08,0x00,0x00, // 0x2B 43 +
151 0x00,0x20,0x00,0x00,0x00,0x00, // 0x2C 44 ,
152 0x00,0x08,0x08,0x08,0x00,0x00, // 0x2D 45 -
153 0x00,0x20,0x00,0x00,0x00,0x00, // 0x2E 46 .
154 0x00,0x20,0x18,0x06,0x00,0x00, // 0x2F 47 /
155 0x00,0x3e,0x22,0x2a,0x22,0x3e, // 0x30 48 0
156 0x02,0x3e,0x00,0x00,0x00,0x00, // 0x31 49 1
157 0x00,0x38,0x28,0x2a,0x2a,0x2e, // 0x32 50 2
158 0x00,0x22,0x2a,0x2e,0x38,0x00, // 0x33 51 3
159 0x00,0x0e,0x08,0x08,0x3e,0x08, // 0x34 52 4
160 0x00,0x2e,0x2a,0x2a,0x28,0x38, // 0x35 53 5
161 0x00,0x3e,0x2a,0x2a,0x28,0x38, // 0x36 54 6
162 0x00,0x06,0x02,0x02,0x0a,0x3e, // 0x37 55 7
163 0x00,0x38,0x2e,0x2a,0x2e,0x38, // 0x38 56 8
164 0x00,0x0e,0x0a,0x2a,0x2a,0x3e, // 0x39 57 9
165 0x00,0x28,0x00,0x00,0x00,0x00, // 0x3A 58 :
166 0x00,0x28,0x00,0x00,0x00,0x00, // 0x3B 59 ;
167 0x00,0x08,0x14,0x22,0x00,0x00, // 0x3C 60 <
168 0x00,0x14,0x14,0x14,0x14,0x00, // 0x3D 61 =
169 0x00,0x22,0x14,0x08,0x00,0x00, // 0x3E 62 >
170 0x00,0x06,0x02,0x2a,0x0a,0x06, // 0x3F 63 ?
171 0x00,0x3e,0x02,0x3a,0x2a,0x0a, // 0x40 64 @
172 0x22,0x3e,0x02,0x0a,0x0a,0x3e, // 0x41 65 A
173 0x00,0x3e,0x22,0x2a,0x2e,0x38, // 0x42 66 B
174 0x00,0x3e,0x22,0x22,0x20,0x30, // 0x43 67 C
175 0x00,0x3e,0x22,0x22,0x22,0x3c, // 0x44 68 D
176 0x00,0x3e,0x2a,0x22,0x20,0x30, // 0x45 69 E
177 0x00,0x3e,0x0a,0x0a,0x06,0x02, // 0x46 70 F
178 0x00,0x3e,0x22,0x2a,0x28,0x38, // 0x47 71 G
179 0x00,0x3e,0x08,0x08,0x08,0x3e, // 0x48 72 H
180 0x00,0x22,0x3e,0x22,0x00,0x00, // 0x49 73 I
181 0x00,0x30,0x20,0x20,0x22,0x3e, // 0x4A 74 J
182 0x00,0x3e,0x08,0x08,0x0e,0x38, // 0x4B 75 K
183 0x00,0x3e,0x20,0x20,0x20,0x30, // 0x4C 76 L
184 0x00,0x3e,0x02,0x3e,0x20,0x3e, // 0x4D 77 M
185 0x3e,0x3e,0x02,0x3e,0x20,0x3e, // 0x4E 78 N
186 0x00,0x3e,0x22,0x22,0x22,0x3e, // 0x4F 79 O
187 0x00,0x3e,0x02,0x0a,0x0a,0x0e, // 0x50 80 P
188 0x00,0x3e,0x22,0x22,0x22,0x3e, // 0x51 81 Q
189 0x00,0x3e,0x02,0x0a,0x0e,0x38, // 0x52 82 R
190 0x00,0x0e,0x0a,0x2a,0x2a,0x3a, // 0x53 83 S
191 0x00,0x06,0x02,0x3e,0x02,0x06, // 0x54 84 T
192 0x00,0x3e,0x20,0x20,0x20,0x3e, // 0x55 85 U
193 0x00,0x3e,0x20,0x20,0x3e,0x00, // 0x56 86 V
194 0x00,0x3e,0x20,0x3e,0x02,0x3e, // 0x57 87 W
195 0x3e,0x3a,0x0e,0x08,0x0e,0x3a, // 0x58 88 X
196 0x00,0x0e,0x08,0x08,0x28,0x3e, // 0x59 89 Y
197 0x00,0x3a,0x2a,0x2a,0x0a,0x0e, // 0x5A 90 Z
198 0x00,0x3e,0x22,0x00,0x00,0x00, // 0x5B 91 [
199 0x00,0x02,0x0c,0x30,0x00,0x00, // 0x5C 92 \ backslash
200 0x22,0x3e,0x00,0x00,0x00,0x00, // 0x5D 93 ]
201 0x00,0x01,0x00,0x01,0x00,0x00, // 0x5E 94 ^
202 0x00,0x20,0x20,0x20,0x00,0x00, // 0x5F 95 _
203 0x00,0x01,0x00,0x00,0x00,0x00, // 0x60 96 `
204 0x00,0x38,0x28,0x28,0x08,0x38, // 0x61 97 a
205 0x00,0x3e,0x20,0x28,0x28,0x38, // 0x62 98 b
206 0x00,0x38,0x28,0x28,0x20,0x30, // 0x63 99 c
207 0x00,0x38,0x28,0x28,0x20,0x3e, // 0x64 100 d
208 0x00,0xf8,0x88,0x28,0x28,0x38, // 0x65 101 e
209 0x00,0xf8,0x28,0x28,0x18,0x08, // 0x66 102 f
210 0x00,0x38,0x28,0xa8,0x88,0xf8, // 0x67 103 g
211 0x00,0x3c,0x08,0x08,0x08,0x38, // 0x68 104 h
212 0x00,0x3a,0x00,0x00,0x00,0x00, // 0x69 105 i
213 0x80,0xfa,0x00,0x00,0x00,0x00, // 0x6A 106 j
214 0x00,0x3e,0x08,0x08,0x38,0x2c, // 0x6B 107 k
215 0x00,0x3e,0x20,0x00,0x00,0x00, // 0x6C 108 l
216 0x00,0x38,0x08,0x38,0x20,0x38, // 0x6D 109 m
217 0x38,0x38,0x08,0x38,0x20,0x38, // 0x6E 110 n
218 0x00,0x38,0x28,0x28,0x28,0x38, // 0x6F 111 o
219 0x00,0xf8,0x08,0x28,0x28,0x38, // 0x70 112 p
220 0x00,0x38,0x28,0x28,0x08,0xf8, // 0x71 113 q
221 0x00,0x38,0x08,0x08,0x18,0x08, // 0x72 114 r
222 0x00,0x38,0x28,0xa8,0xa8,0xe8, // 0x73 115 s
223 0x00,0x3e,0x28,0x28,0x20,0x30, // 0x74 116 t
224 0x00,0x38,0x20,0x20,0x20,0x38, // 0x75 117 u
225 0x00,0x38,0x20,0x38,0x00,0x00, // 0x76 118 v
226 0x00,0x38,0x20,0x38,0x08,0x38, // 0x77 119 w
227 0x38,0x28,0x38,0x10,0x38,0x28, // 0x78 120 x
228 0x00,0x38,0x20,0xa0,0xa0,0xf8, // 0x79 121 y
229 0x00,0xe8,0xa8,0xa8,0x28,0x38, // 0x7A 122 z
230 0x08,0x3e,0x22,0x00,0x00,0x00, // 0x7B 123 {
231 0x00,0x3f,0x00,0x00,0x00,0x00, // 0x7C 124 |
232 0x22,0x3e,0x08,0x00,0x00,0x00, // 0x7D 125 }
233 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7E 126 ~
234 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127
235#elif defined(OLED_FONT_BMPLAIN)
236 0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32
237 0x2e,0x00,0x00,0x00,0x00,0x00, // 0x21 33 !
238 0x03,0x00,0x03,0x00,0x00,0x00, // 0x22 34 "
239 0x0a,0x1f,0x0a,0x1f,0x0a,0x00, // 0x23 35 #
240 0x2e,0x2a,0x6b,0x2a,0x3a,0x00, // 0x24 36 $
241 0x0e,0x2a,0x1e,0x08,0x3c,0x2a, // 0x25 37 %
242 0x3e,0x2a,0x2a,0x22,0x38,0x08, // 0x26 38 &
243 0x03,0x00,0x00,0x00,0x00,0x00, // 0x27 39 '
244 0x1c,0x22,0x00,0x00,0x00,0x00, // 0x28 40 (
245 0x22,0x1c,0x00,0x00,0x00,0x00, // 0x29 41 )
246 0x15,0x0e,0x04,0x0e,0x15,0x00, // 0x2A 42 *
247 0x08,0x08,0x3e,0x08,0x08,0x00, // 0x2B 43 +
248 0x60,0x00,0x00,0x00,0x00,0x00, // 0x2C 44 ,
249 0x08,0x08,0x08,0x08,0x08,0x00, // 0x2D 45 -
250 0x20,0x00,0x00,0x00,0x00,0x00, // 0x2E 46 .
251 0x20,0x10,0x08,0x04,0x02,0x00, // 0x2F 47 /
252 0x3e,0x22,0x2a,0x22,0x3e,0x00, // 0x30 48 0
253 0x04,0x3e,0x00,0x00,0x00,0x00, // 0x31 49 1
254 0x3a,0x2a,0x2a,0x2a,0x2e,0x00, // 0x32 50 2
255 0x2a,0x2a,0x2a,0x2a,0x3e,0x00, // 0x33 51 3
256 0x0e,0x08,0x08,0x08,0x3e,0x00, // 0x34 52 4
257 0x2e,0x2a,0x2a,0x2a,0x3a,0x00, // 0x35 53 5
258 0x3e,0x2a,0x2a,0x2a,0x3a,0x00, // 0x36 54 6
259 0x02,0x02,0x02,0x02,0x3e,0x00, // 0x37 55 7
260 0x3e,0x2a,0x2a,0x2a,0x3e,0x00, // 0x38 56 8
261 0x2e,0x2a,0x2a,0x2a,0x3e,0x00, // 0x39 57 9
262 0x14,0x00,0x00,0x00,0x00,0x00, // 0x3A 58 :
263 0x34,0x00,0x00,0x00,0x00,0x00, // 0x3B 59 ;
264 0x08,0x14,0x22,0x00,0x00,0x00, // 0x3C 60 <
265 0x14,0x14,0x14,0x14,0x14,0x00, // 0x3D 61 =
266 0x22,0x14,0x08,0x00,0x00,0x00, // 0x3E 62 >
267 0x06,0x02,0x2a,0x0a,0x0e,0x00, // 0x3F 63 ?
268 0x3e,0x02,0x3a,0x2a,0x3e,0x00, // 0x40 64 @
269 0x3e,0x12,0x12,0x12,0x3e,0x00, // 0x41 65 A
270 0x3e,0x2a,0x2a,0x2a,0x36,0x00, // 0x42 66 B
271 0x3e,0x22,0x22,0x22,0x22,0x00, // 0x43 67 C
272 0x3e,0x22,0x22,0x22,0x1c,0x00, // 0x44 68 D
273 0x3e,0x2a,0x2a,0x2a,0x22,0x00, // 0x45 69 E
274 0x3e,0x0a,0x0a,0x0a,0x02,0x00, // 0x46 70 F
275 0x3e,0x22,0x2a,0x2a,0x3a,0x00, // 0x47 71 G
276 0x3e,0x08,0x08,0x08,0x3e,0x00, // 0x48 72 H
277 0x22,0x3e,0x22,0x00,0x00,0x00, // 0x49 73 I
278 0x38,0x20,0x20,0x20,0x3e,0x00, // 0x4A 74 J
279 0x3e,0x08,0x08,0x14,0x22,0x00, // 0x4B 75 K
280 0x3e,0x20,0x20,0x20,0x20,0x00, // 0x4C 76 L
281 0x3e,0x04,0x38,0x04,0x3e,0x00, // 0x4D 77 M
282 0x3e,0x04,0x08,0x10,0x3e,0x00, // 0x4E 78 N
283 0x3e,0x22,0x22,0x22,0x3e,0x00, // 0x4F 79 O
284 0x3e,0x0a,0x0a,0x0a,0x0e,0x00, // 0x50 80 P
285 0x3e,0x22,0x72,0x22,0x3e,0x00, // 0x51 81 Q
286 0x3e,0x0a,0x0a,0x1a,0x2e,0x00, // 0x52 82 R
287 0x2e,0x2a,0x2a,0x2a,0x3a,0x00, // 0x53 83 S
288 0x02,0x02,0x3e,0x02,0x02,0x00, // 0x54 84 T
289 0x1e,0x20,0x20,0x20,0x1e,0x00, // 0x55 85 U
290 0x0e,0x10,0x20,0x10,0x0e,0x00, // 0x56 86 V
291 0x3e,0x10,0x0e,0x10,0x3e,0x00, // 0x57 87 W
292 0x22,0x14,0x08,0x14,0x22,0x00, // 0x58 88 X
293 0x02,0x04,0x38,0x04,0x02,0x00, // 0x59 89 Y
294 0x3a,0x2a,0x2a,0x2a,0x2e,0x00, // 0x5A 90 Z
295 0x3e,0x22,0x00,0x00,0x00,0x00, // 0x5B 91 [
296 0x3f,0x21,0x3f,0x00,0x00,0x00, // 0x5C 92 \ backslash
297 0x22,0x3e,0x00,0x00,0x00,0x00, // 0x5D 93 ]
298 0x0c,0x1e,0x3c,0x1e,0x0c,0x00, // 0x5E 94 ^
299 0x20,0x20,0x20,0x20,0x20,0x00, // 0x5F 95 _
300 0x1c,0x3e,0x3e,0x3e,0x1c,0x00, // 0x60 96 `
301 0x3c,0x24,0x24,0x24,0x3c,0x20, // 0x61 97 a
302 0x3e,0x24,0x24,0x24,0x3c,0x00, // 0x62 98 b
303 0x3c,0x24,0x24,0x24,0x24,0x00, // 0x63 99 c
304 0x3c,0x24,0x24,0x24,0x3e,0x00, // 0x64 100 d
305 0x3c,0x24,0x34,0x2c,0x24,0x00, // 0x65 101 e
306 0x08,0x3e,0x0a,0x0a,0x00,0x00, // 0x66 102 f
307 0x1c,0x54,0x54,0x54,0x7c,0x00, // 0x67 103 g
308 0x3e,0x04,0x04,0x04,0x3c,0x00, // 0x68 104 h
309 0x3a,0x00,0x00,0x00,0x00,0x00, // 0x69 105 i
310 0x7a,0x00,0x00,0x00,0x00,0x00, // 0x6A 106 j
311 0x3e,0x08,0x14,0x22,0x00,0x00, // 0x6B 107 k
312 0x02,0x3e,0x00,0x00,0x00,0x00, // 0x6C 108 l
313 0x3c,0x04,0x3c,0x04,0x3c,0x00, // 0x6D 109 m
314 0x3c,0x04,0x04,0x04,0x3c,0x00, // 0x6E 110 n
315 0x3c,0x24,0x24,0x24,0x3c,0x00, // 0x6F 111 o
316 0x7c,0x24,0x24,0x24,0x3c,0x00, // 0x70 112 p
317 0x3c,0x24,0x24,0x24,0x7c,0x00, // 0x71 113 q
318 0x3c,0x04,0x04,0x04,0x00,0x00, // 0x72 114 r
319 0x24,0x2c,0x34,0x24,0x00,0x00, // 0x73 115 s
320 0x04,0x3e,0x24,0x24,0x00,0x00, // 0x74 116 t
321 0x3c,0x20,0x20,0x20,0x3c,0x00, // 0x75 117 u
322 0x0c,0x10,0x20,0x10,0x0c,0x00, // 0x76 118 v
323 0x3c,0x20,0x3c,0x20,0x3c,0x00, // 0x77 119 w
324 0x24,0x24,0x18,0x24,0x24,0x00, // 0x78 120 x
325 0x1c,0x50,0x50,0x50,0x7c,0x00, // 0x79 121 y
326 0x24,0x34,0x2c,0x24,0x00,0x00, // 0x7A 122 z
327 0x08,0x3e,0x22,0x00,0x00,0x00, // 0x7B 123 {
328 0x1c,0x22,0x22,0x22,0x1c,0x00, // 0x7C 124 |
329 0x22,0x3e,0x08,0x00,0x00,0x00, // 0x7D 125 }
330 0x01,0x01,0x01,0x00,0x00,0x00, // 0x7E 126 ~
331 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127
332#elif defined(OLED_FONT_SUPER_DIGG)
333 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 32
334 0x58, 0x5C, 0x00, 0x00, 0x00, 0x00, // 0x21 33 !
335 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, // 0x22 34 "
336 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, // 0x23 35 #
337 0x5C, 0xFE, 0x54, 0xFE, 0x74, 0x00, // 0x24 36 $
338 0x03, 0x63, 0x38, 0x0C, 0x63, 0x60, // 0x25 37 %
339 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x50, // 0x26 38 &
340 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // 0x27 39 '
341 0x70, 0x7C, 0x44, 0x00, 0x00, 0x00, // 0x28 40 (
342 0x44, 0x7C, 0x70, 0x00, 0x00, 0x00, // 0x29 41 )
343 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, // 0x2A 42 *
344 0x10, 0x10, 0x70, 0x7C, 0x10, 0x00, // 0x2B 43 +
345 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00, // 0x2C 44 ,
346 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, // 0x2D 45 -
347 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, // 0x2E 46 .
348 0x70, 0x7C, 0x03, 0x00, 0x00, 0x00, // 0x2F 47 /
349 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x1C, // 0x30 48 0
350 0x04, 0x04, 0x7C, 0x1C, 0x00, 0x00, // 0x31 49 1
351 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, // 0x32 50 2
352 0x44, 0x54, 0x54, 0x54, 0x7C, 0x70, // 0x33 51 3
353 0x1C, 0x10, 0x10, 0x7C, 0x7C, 0x00, // 0x34 52 4
354 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, // 0x35 53 5
355 0x70, 0x7C, 0x54, 0x54, 0x74, 0x00, // 0x36 54 6
356 0x04, 0x14, 0x14, 0x14, 0x7C, 0x70, // 0x37 55 7
357 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x00, // 0x38 56 8
358 0x5C, 0x54, 0x54, 0x54, 0x7C, 0x1C, // 0x39 57 9
359 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, // 0x3A 58 :
360 0x50, 0xD0, 0x00, 0x00, 0x00, 0x00, // 0x3B 59 ;
361 0x18, 0x18, 0x24, 0x42, 0x00, 0x00, // 0x3C 60 <
362 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, // 0x3D 61 =
363 0x42, 0x24, 0x18, 0x18, 0x00, 0x00, // 0x3E 62 >
364 0x04, 0x14, 0x54, 0x54, 0x1C, 0x1C, // 0x3F 63 ?
365 0xF8, 0x04, 0x74, 0x74, 0x54, 0x54, // 0x40 64 @
366 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00, // 0x41 65 A
367 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00, // 0x42 66 B
368 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44, // 0x43 67 C
369 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70, // 0x44 68 D
370 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44, // 0x45 69 E
371 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04, // 0x46 70 F
372 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74, // 0x47 71 G
373 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00, // 0x48 72 H
374 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, // 0x49 73 I
375 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70, // 0x4A 74 J
376 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00, // 0x4B 75 K
377 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60, // 0x4C 76 L
378 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04, // 0x4D 77 M
379 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C, // 0x4E 78 N
380 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C, // 0x4F 79 O
381 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00, // 0x50 80 P
382 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00, // 0x51 81 Q
383 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00, // 0x52 82 R
384 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, // 0x53 83 S
385 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00, // 0x54 84 T
386 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C, // 0x55 85 U
387 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C, // 0x56 86 V
388 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40, // 0x57 87 W
389 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00, // 0x58 88 X
390 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00, // 0x59 89 Y
391 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, // 0x5A 90 Z
392 0xF0, 0xFE, 0x82, 0x00, 0x00, 0x00, // 0x5B 91 [
393 0x03, 0x7C, 0x70, 0x00, 0x00, 0x00, // 0x5C 92 \ backslash
394 0x82, 0xFE, 0xF0, 0x00, 0x00, 0x00, // 0x5D 93 ]
395 0x04, 0x02, 0x01, 0x06, 0x04, 0x00, // 0x5E 94 ^
396 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, // 0x5F 95 _
397 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x60 96 `
398 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00, // 0x61 97 a
399 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00, // 0x62 98 b
400 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44, // 0x63 99 c
401 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70, // 0x64 100 d
402 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44, // 0x65 101 e
403 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04, // 0x66 102 f
404 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74, // 0x67 103 g
405 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00, // 0x68 104 h
406 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, // 0x69 105 i
407 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70, // 0x6A 106 j
408 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00, // 0x6B 107 k
409 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60, // 0x6C 108 l
410 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04, // 0x6D 109 m
411 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C, // 0x6E 110 n
412 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C, // 0x6F 111 o
413 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00, // 0x70 112 p
414 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00, // 0x71 113 q
415 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00, // 0x72 114 r
416 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, // 0x73 115 s
417 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00, // 0x74 116 t
418 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C, // 0x75 117 u
419 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C, // 0x76 118 v
420 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40, // 0x77 119 w
421 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00, // 0x78 120 x
422 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00, // 0x79 121 y
423 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, // 0x7A 122 z
424 0x10, 0xFE, 0xC2, 0x00, 0x00, 0x00, // 0x7B 123 {
425 0x00, 0x44, 0x77, 0x00, 0x00, 0x00, // 0x7C 124 |
426 0xC2, 0xFE, 0x10, 0x00, 0x00, 0x00, // 0x7D 125 }
427 0x02, 0x01, 0x03, 0x04, 0x06, 0x02, // 0x7E 126 ~
428 0x3C, 0x22, 0x21, 0x22, 0x3C, 0x00, // 0x7F 127
429#else // default font
430 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 32
431 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, // 0x21 33 !
432 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, // 0x22 34 "
433 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, // 0x23 35 #
434 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, // 0x24 36 $
435 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, // 0x25 37 %
436 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, // 0x26 38 &
437 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, // 0x27 39 '
438 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, // 0x28 40 (
439 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, // 0x29 41 )
440 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, // 0x2A 42 *
441 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, // 0x2B 43 +
442 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, // 0x2C 44 ,
443 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, // 0x2D 45 -
444 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, // 0x2E 46 .
445 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, // 0x2F 47 /
446 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, // 0x30 48 0
447 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, // 0x31 49 1
448 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, // 0x32 50 2
449 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, // 0x33 51 3
450 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, // 0x34 52 4
451 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, // 0x35 53 5
452 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, // 0x36 54 6
453 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, // 0x37 55 7
454 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, // 0x38 56 8
455 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, // 0x39 57 9
456 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, // 0x3A 58 :
457 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, // 0x3B 59 ;
458 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, // 0x3C 60 <
459 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, // 0x3D 61 =
460 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, // 0x3E 62 >
461 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, // 0x3F 63 ?
462 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, // 0x40 64 @
463 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, // 0x41 65 A
464 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, // 0x42 66 B
465 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, // 0x43 67 C
466 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, // 0x44 68 D
467 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, // 0x45 69 E
468 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, // 0x46 70 F
469 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, // 0x47 71 G
470 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, // 0x48 72 H
471 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, // 0x49 73 I
472 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, // 0x4A 74 J
473 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, // 0x4B 75 K
474 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, // 0x4C 76 L
475 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, // 0x4D 77 M
476 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, // 0x4E 78 N
477 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, // 0x4F 79 O
478 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, // 0x50 80 P
479 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, // 0x51 81 Q
480 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, // 0x52 82 R
481 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, // 0x53 83 S
482 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, // 0x54 84 T
483 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, // 0x55 85 U
484 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, // 0x56 86 V
485 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, // 0x57 87 W
486 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, // 0x58 88 X
487 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, // 0x59 89 Y
488 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, // 0x5A 90 Z
489 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, // 0x5B 91 [
490 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, // 0x5C 92 \ backslash
491 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, // 0x5D 93 ]
492 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, // 0x5E 94 ^
493 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, // 0x5F 95 _
494 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, // 0x60 96 `
495 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, // 0x61 97 a
496 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, // 0x62 98 b
497 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, // 0x63 99 c
498 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, // 0x64 100 d
499 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, // 0x65 101 e
500 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, // 0x66 102 f
501 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, // 0x67 103 g
502 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, // 0x68 104 h
503 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, // 0x69 105 i
504 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, // 0x6A 106 j
505 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, // 0x6B 107 k
506 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, // 0x6C 108 l
507 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, // 0x6D 109 m
508 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, // 0x6E 110 n
509 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, // 0x6F 111 o
510 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, // 0x70 112 p
511 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, // 0x71 113 q
512 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, // 0x72 114 r
513 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, // 0x73 115 s
514 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, // 0x74 116 t
515 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, // 0x75 117 u
516 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, // 0x76 118 v
517 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, // 0x77 119 w
518 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, // 0x78 120 x
519 0x4C, 0x90, 0x10, 0x90, 0x7C, 0x00, // 0x79 121 y
520 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, // 0x7A 122 z
521 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, // 0x7B 123 {
522 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, // 0x7C 124 |
523 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, // 0x7D 125 }
524 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, // 0x7E 126 ~
525 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, // 0x7F 127
526#endif
527
528#if defined(OLED_LOGO_GMK_BAD)
529 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80
530 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, // 0x81
531 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, // 0x82
532 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00, // 0x83
533 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, // 0x84
534 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, // 0x85
535 0x80, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8, // 0x86
536 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x87
537 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x00, // 0x88
538 0x80, 0xE0, 0xF0, 0xF8, 0x78, 0x38, // 0x89
539 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, // 0x8A
540 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8B
541 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x38, // 0x8C
542 0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0x00, // 0x8D
543 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8E
544 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8F
545 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x90
546 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x91
547 0x00, 0x00, 0x00, 0x80, 0xFC, 0xFC, // 0x92
548 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, // 0x93
549 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x94
550 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, // 0x95
551 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, // 0x96
552 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, // 0x97
553 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, // 0x98
554 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x99
555 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9A
556 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9B
557 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9C
558 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9D
559 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9E
560 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9F
561 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, // 0xA0
562 0xFF, 0xFF, 0xFF, 0xC1, 0x80, 0x00, // 0xA1
563 0x00, 0x38, 0x38, 0xB8, 0xB8, 0xF9, // 0xA2
564 0xF9, 0xF8, 0x38, 0x00, 0x00, 0x00, // 0xA3
565 0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0x1F, // 0xA4
566 0x01, 0x3F, 0xFF, 0xFF, 0xF0, 0xFE, // 0xA5
567 0x7F, 0x0F, 0x03, 0xFF, 0xFF, 0xFF, // 0xA6
568 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, // 0xA7
569 0xFF, 0xFF, 0xFF, 0x3F, 0x1E, 0x7F, // 0xA8
570 0xFF, 0xFF, 0xF3, 0xC1, 0x80, 0x00, // 0xA9
571 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xAA
572 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, // 0xAB
573 0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x1C, // 0xAC
574 0x9C, 0xFF, 0xFF, 0xF3, 0xE1, 0x00, // 0xAD
575 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, // 0xAE
576 0xFF, 0x0F, 0x07, 0x07, 0x8E, 0xFF, // 0xAF
577 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, // 0xB0
578 0x00, 0xF0, 0xFC, 0xFE, 0xFF, 0x8F, // 0xB1
579 0x07, 0x07, 0x8E, 0xFF, 0xFF, 0xFF, // 0xB2
580 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, // 0xB3
581 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, // 0xB4
582 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, // 0xB5
583 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, // 0xB6
584 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, // 0xB7
585 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, // 0xB8
586 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB9
587 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBA
588 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBB
589 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBC
590 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBD
591 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBE
592 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBF
593 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0
594 0x00, 0x01, 0x03, 0x03, 0x03, 0x07, // 0xC1
595 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, // 0xC2
596 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC3
597 0x06, 0x07, 0x07, 0x07, 0x01, 0x00, // 0xC4
598 0x00, 0x00, 0x07, 0x07, 0x07, 0x01, // 0xC5
599 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, // 0xC6
600 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, // 0xC7
601 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, // 0xC8
602 0x00, 0x03, 0x07, 0x07, 0x07, 0x06, // 0xC9
603 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xCA
604 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, // 0xCB
605 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, // 0xCC
606 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, // 0xCD
607 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, // 0xCE
608 0x07, 0x07, 0x07, 0x03, 0x07, 0x07, // 0xCF
609 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, // 0xD0
610 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, // 0xD1
611 0x07, 0x03, 0x07, 0x07, 0x07, 0x07, // 0xD2
612 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, // 0xD3
613 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, // 0xD4
614 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD5
615 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD6
616 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD7
617 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD8
618 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD9
619 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDA
620 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDB
621 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDC
622 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDD
623 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDE
624 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF
625 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
626 0x00, 0x14, 0x08, 0x14, 0x00, 0x00,
627 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
628 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00,
629 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C,
630 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00,
631 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C,
632 0x18, 0x30, 0x66, 0x66, 0x66, 0x00,
633 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E,
634 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00,
635 0x00, 0x00, 0x77, 0x77, 0x77, 0x00,
636 0x77, 0x77, 0x77, 0x00, 0x00, 0x00,
637 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24,
638 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00,
639 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1,
640 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00,
641 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED,
642 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00,
643 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F,
644 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00,
645 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64,
646 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00,
647 0x00, 0x04, 0x42, 0x69, 0x65, 0x65,
648 0x65, 0x69, 0x42, 0x04, 0x00, 0x00,
649 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08,
650 0x18, 0x08, 0x18, 0x00, 0x00, 0x00,
651 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70,
652 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
653 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
654 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
655 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
656 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
657 #elif defined(OLED_LOGO_HUE_MANITEE)
658 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80
659 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0,
660 0x90, 0x70, 0xE8, 0xA8, 0xE4, 0xC4,
661 0xC4, 0xA0, 0xE4, 0xB0, 0xDC, 0xE4,
662 0xFC, 0xFC, 0xFC, 0xFC, 0x3C, 0x3C,
663 0xFC, 0xF8, 0xF0, 0xF0, 0xE0, 0x00,
664 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
665 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
666 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
667 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8,
668 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
669 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
670 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
671 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
672 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
673 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
674 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, // 0x90
675 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
676 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
677 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
678 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
679 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
680 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
681 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
682 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
683 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
684 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
685 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
686 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
687 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
688 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
689 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
690 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, // 0xA0
691 0xFC, 0xF6, 0xF7, 0xEF, 0xFF, 0x87,
692 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
693 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF,
694 0xFF, 0x07, 0x1F, 0x1F, 0x19, 0x15,
695 0xF7, 0x16, 0x1A, 0x1B, 0x16, 0x07,
696 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
697 0x00, 0x00, 0x0C, 0x0C, 0x33, 0x33,
698 0x33, 0x33, 0x33, 0x33, 0xC0, 0xC0,
699 0x00, 0x00, 0x03, 0x03, 0xFF, 0xFF,
700 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0,
701 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03,
702 0x03, 0x03, 0x03, 0x03, 0x03, 0xFC,
703 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC,
704 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
705 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00,
706 0xFF, 0xFF, 0x30, 0x30, 0xCC, 0xCC, // 0xB0
707 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
708 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
709 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
710 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
711 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
712 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
713 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
714 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
715 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
716 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
717 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
718 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
719 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
720 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
721 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
722 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // 0xC0
723 0x03, 0x07, 0x07, 0x07, 0x07, 0x01,
724 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
725 0x00, 0x00, 0x00, 0x03, 0x07, 0x07,
726 0x03, 0x00, 0x00, 0x02, 0x04, 0x00,
727 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
728 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
729 0x00, 0x00, 0x03, 0x03, 0x03, 0x03,
730 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
731 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
732 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
733 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
734 0x03, 0x03, 0x03, 0x03, 0x03, 0x00,
735 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
736 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
737 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
738 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, // 0xD0
739 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
740 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
741 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
742 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
743 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
744 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
745 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
746 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
747 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
748 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
749 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
750 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
751 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
752 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
753 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF
754 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
755 0x00, 0x14, 0x08, 0x14, 0x00, 0x00,
756 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
757 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00,
758 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C,
759 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00,
760 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C,
761 0x18, 0x30, 0x66, 0x66, 0x66, 0x00,
762 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E,
763 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00,
764 0x00, 0x00, 0x77, 0x77, 0x77, 0x00,
765 0x77, 0x77, 0x77, 0x00, 0x00, 0x00,
766 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24,
767 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00,
768 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1,
769 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00,
770 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED,
771 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00,
772 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F,
773 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00,
774 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64,
775 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00,
776 0x00, 0x04, 0x42, 0x69, 0x65, 0x65,
777 0x65, 0x69, 0x42, 0x04, 0x00, 0x00,
778 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08,
779 0x18, 0x08, 0x18, 0x00, 0x00, 0x00,
780 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70,
781 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
782 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
783 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
784 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
785 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
786 #elif defined(OLED_LOGO_CORNE)
787 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80
788 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
789 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0,
790 0xF0, 0xF8, 0xF8, 0x18, 0x00, 0xC0,
791 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF,
792 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00,
793 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
794 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0,
795 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
796 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
797 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0,
798 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80,
799 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0,
800 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00,
801 0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0,
802 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80,
803 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, // 0x90
804 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
805 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00,
806 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
807 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
808 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
809 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
810 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
811 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
812 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
813 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
814 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
815 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
816 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
817 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
818 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
819 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA0
820 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE,
821 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF,
822 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF,
823 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
824 0xFF, 0x1F, 0x07, 0x01, 0x00, 0x00,
825 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
826 0x00, 0xFF, 0xFF, 0xFF, 0x81, 0x00,
827 0x00, 0x00, 0x00, 0x00, 0x00, 0x81,
828 0xC3, 0xC3, 0xC3, 0x00, 0x00, 0xFF,
829 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00,
830 0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF,
831 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
832 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
833 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
834 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF,
835 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, // 0xB0
836 0x9D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
837 0x1C, 0x9D, 0xDF, 0xDF, 0xDF, 0x00,
838 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
839 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
840 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
841 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
842 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
843 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
844 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
845 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
846 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
847 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
848 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
849 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
850 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
851 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0
852 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F,
853 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F,
854 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F,
855 0x3F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
856 0x7F, 0x7C, 0x78, 0x78, 0x38, 0x1C,
857 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
858 0x00, 0x00, 0x01, 0x03, 0x07, 0x07,
859 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
860 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
861 0x01, 0x03, 0x07, 0x07, 0x07, 0x07,
862 0x07, 0x07, 0x07, 0x07, 0x03, 0x01,
863 0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
864 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
865 0x00, 0x07, 0x07, 0x07, 0x00, 0x00,
866 0x00, 0x00, 0x00, 0x00, 0x07, 0x07,
867 0x07, 0x00, 0x00, 0x00, 0x01, 0x03, // 0xD0
868 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
869 0x07, 0x07, 0x03, 0x01, 0x00, 0x00,
870 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
871 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
872 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
873 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
874 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
875 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
876 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
877 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
878 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
879 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
880 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
881 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
882 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF
883 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
884 0x00, 0x14, 0x08, 0x14, 0x00, 0x00,
885 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
886 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00,
887 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C,
888 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00,
889 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C,
890 0x18, 0x30, 0x66, 0x66, 0x66, 0x00,
891 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E,
892 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00,
893 0x00, 0x00, 0x77, 0x77, 0x77, 0x00,
894 0x77, 0x77, 0x77, 0x00, 0x00, 0x00,
895 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24,
896 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00,
897 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1,
898 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00,
899 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED,
900 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00,
901 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F,
902 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00,
903 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64,
904 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00,
905 0x00, 0x04, 0x42, 0x69, 0x65, 0x65,
906 0x65, 0x69, 0x42, 0x04, 0x00, 0x00,
907 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08,
908 0x18, 0x08, 0x18, 0x00, 0x00, 0x00,
909 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70,
910 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
911 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
912 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
913 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
914 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
915
916#elif defined(OLED_LOGO_GOTHAM) // see /keyboards/crkbd/keymaps/gotham/oled.c
917 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80
918 0x00, 0x00, 0xC0, 0x60, 0x30, 0x18,
919 0xF8, 0x18, 0x00, 0xC0, 0x70, 0x1C,
920 0x06, 0x03, 0x01, 0x01, 0x01, 0x01,
921 0x01, 0xC3, 0x7E, 0x00, 0x00, 0x00,
922 0x00, 0x00, 0x08, 0x08, 0x08, 0x00,
923 0x00, 0x08, 0x08, 0x08, 0x00, 0x1C,
924 0x22, 0x41, 0x41, 0x41, 0x22, 0x1C,
925 0x00, 0x08, 0x08, 0x08, 0x00, 0x00,
926 0x08, 0x08, 0x08, 0x00, 0x00, 0x00,
927 0x00, 0x00, 0x00, 0x20, 0x20, 0xF8,
928 0x0C, 0x04, 0xE7, 0xE4, 0xE4, 0x07,
929 0x04, 0xE4, 0xE7, 0xE4, 0x04, 0x07,
930 0xE4, 0xE4, 0xE7, 0x04, 0x0C, 0xF8,
931 0x20, 0x20, 0x00, 0x00, 0x00, 0x00,
932 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
933 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, // 0x90
934 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
935 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00,
936 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
937 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30,
938 0x77, 0x77, 0x77, 0x00, 0x77, 0x77,
939 0x77, 0x00, 0x00, 0x00, 0x00, 0x00,
940 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F,
941 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00,
942 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
943 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
944 0x00, 0x00, 0x08, 0x00, 0x00, 0x60,
945 0x70, 0x3E, 0x1F, 0x19, 0x18, 0x0C,
946 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
947 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
948 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
949 0x00, 0xF8, 0x0C, 0x06, 0x07, 0xFC, // 0xA0
950 0x00, 0xFF, 0x01, 0x00, 0x00, 0x00,
951 0xFF, 0x80, 0xFF, 0x01, 0x00, 0x00,
952 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1C,
953 0x07, 0x01, 0x00, 0x00, 0x00, 0x00,
954 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00,
955 0x00, 0x1C, 0x22, 0x00, 0x00, 0x1C,
956 0x3E, 0x7F, 0x63, 0x41, 0x22, 0x1C,
957 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
958 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
959 0x00, 0x00, 0x00, 0x49, 0x49, 0xFF,
960 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x38,
961 0x30, 0xFF, 0xFF, 0xFF, 0x30, 0x38,
962 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0xFF,
963 0x49, 0x49, 0x00, 0x00, 0x00, 0x00,
964 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64,
965 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, // 0xB0
966 0x00, 0x04, 0x42, 0x69, 0x65, 0x65,
967 0x65, 0x69, 0x42, 0x04, 0x00, 0x00,
968 0x00, 0x00, 0x00, 0x06, 0x06, 0x06,
969 0x0C, 0x18, 0x30, 0x66, 0x66, 0x66,
970 0x00, 0x00, 0xFC, 0x24, 0x24, 0xFC,
971 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC,
972 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC,
973 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC,
974 0x24, 0x24, 0xFC, 0x00, 0x00, 0x00,
975 0xF0, 0x90, 0x90, 0xF0, 0x90, 0x90,
976 0xF0, 0x98, 0x9C, 0xF2, 0x22, 0x21,
977 0xE1, 0x01, 0x01, 0x01, 0xF1, 0x91,
978 0x91, 0xFA, 0x4C, 0x4C, 0xF8, 0x48,
979 0x48, 0xF8, 0x48, 0x48, 0xF8, 0x00,
980 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
981 0x00, 0x03, 0x0E, 0x18, 0x30, 0x21, // 0xC0
982 0x21, 0x31, 0x18, 0x10, 0x30, 0x20,
983 0x60, 0x41, 0x60, 0x20, 0x30, 0x18,
984 0x30, 0x60, 0x40, 0x40, 0x47, 0x4C,
985 0x48, 0x68, 0x38, 0x1C, 0x0F, 0x00,
986 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
987 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C,
988 0x22, 0x41, 0x63, 0x7F, 0x3E, 0x1C,
989 0x00, 0x00, 0x22, 0x1C, 0x00, 0x00,
990 0x41, 0x22, 0x1C, 0x00, 0x00, 0x00,
991 0x00, 0x00, 0x00, 0x02, 0x02, 0x0F,
992 0x18, 0x10, 0x70, 0x10, 0x10, 0x70,
993 0x10, 0x13, 0x73, 0x13, 0x10, 0x70,
994 0x10, 0x10, 0x70, 0x10, 0x18, 0x0F,
995 0x02, 0x02, 0x00, 0x00, 0x00, 0x00,
996 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1,
997 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, // 0xD0
998 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED,
999 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00,
1000 0x08, 0x0C, 0x7E, 0x7F, 0x7E, 0x0C,
1001 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
1002 0x00, 0x00, 0x0F, 0x09, 0x09, 0x09,
1003 0x0F, 0x09, 0x09, 0x0F, 0x09, 0x09,
1004 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
1005 0x09, 0x0F, 0x09, 0x09, 0x0F, 0x09,
1006 0x09, 0x09, 0x0F, 0x00, 0x00, 0x00,
1007 0x07, 0x04, 0x04, 0x07, 0x04, 0x04,
1008 0x07, 0x04, 0x04, 0x0F, 0x09, 0x09,
1009 0x0F, 0x00, 0x00, 0x00, 0x07, 0x04,
1010 0x04, 0x07, 0x02, 0x02, 0x03, 0x02,
1011 0x02, 0x03, 0x02, 0x02, 0x03, 0x00,
1012 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF
1013 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
1014 0x00, 0x14, 0x08, 0x14, 0x00, 0x00,
1015 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
1016 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00,
1017 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C,
1018 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00,
1019 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C,
1020 0x18, 0x30, 0x66, 0x66, 0x66, 0x00,
1021 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E,
1022 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00,
1023 0x00, 0x00, 0x77, 0x77, 0x77, 0x00,
1024 0x77, 0x77, 0x77, 0x00, 0x00, 0x00,
1025 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24,
1026 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00,
1027 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1,
1028 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00,
1029 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED,
1030 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00,
1031 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F,
1032 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00,
1033 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64,
1034 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00,
1035 0x00, 0x04, 0x42, 0x69, 0x65, 0x65,
1036 0x65, 0x69, 0x42, 0x04, 0x00, 0x00,
1037 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08,
1038 0x18, 0x08, 0x18, 0x00, 0x00, 0x00,
1039 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70,
1040 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1041 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1042 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1043 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1044 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1045
1046#elif defined(OLED_LOGO_SCIFI)
1047 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1048 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1049 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
1050 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0x60,
1051 0x70, 0x30, 0x38, 0x18, 0x0C, 0x0C,
1052 0x1E, 0x0C, 0x80, 0x00, 0x00, 0x00,
1053 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
1054 0xC0, 0xE0, 0xF0, 0x38, 0x1C, 0x0E,
1055 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
1056 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
1057 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
1058 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1059 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1060 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
1061 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
1062 0x00, 0x00, 0x80, 0x40, 0x00, 0x00,
1063 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1064 0x00, 0x00, 0x80, 0x80, 0x80, 0x00,
1065 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0,
1066 0xC0, 0x60, 0x60, 0x30, 0x10, 0x00,
1067 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1068 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
1069 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
1070 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
1071 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
1072 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
1073 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
1074 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
1075 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
1076 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1077 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1078 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1079 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
1080 0x30, 0x30, 0x70, 0x78, 0x78, 0x7C,
1081 0x7C, 0x7E, 0x3E, 0x3F, 0x3F, 0x3B,
1082 0x3B, 0x39, 0x39, 0x38, 0x38, 0x38,
1083 0x38, 0x38, 0x38, 0x38, 0x3C, 0x38,
1084 0x18, 0x8F, 0xDF, 0xF8, 0x7C, 0xBE,
1085 0xDF, 0xF7, 0xFB, 0xFD, 0xFE, 0xEF,
1086 0x73, 0x3B, 0x1B, 0x1F, 0xEF, 0xF7,
1087 0xFF, 0x7E, 0x6F, 0x6F, 0x6F, 0x6F,
1088 0x6D, 0xBD, 0xE1, 0xF9, 0x3F, 0x3F,
1089 0x39, 0x79, 0x79, 0x7D, 0xED, 0xED,
1090 0xCD, 0xC7, 0xC7, 0x87, 0xC7, 0xE3,
1091 0xE0, 0xF8, 0x7E, 0x3F, 0x37, 0x33,
1092 0x3B, 0x1B, 0x19, 0x19, 0x0D, 0xED,
1093 0xFF, 0xBF, 0xC7, 0xE7, 0xE3, 0xF0,
1094 0x7C, 0xDE, 0xE7, 0xFB, 0x3E, 0x3F,
1095 0xFC, 0xE0, 0xF8, 0x3E, 0xCF, 0xF3,
1096 0xFC, 0x3F, 0x1F, 0x1F, 0x3C, 0x7E,
1097 0x76, 0xF3, 0xE3, 0x81, 0x01, 0x00,
1098 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1099 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1100 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
1101 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
1102 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
1103 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
1104 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
1105 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
1106 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
1107 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
1108 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1109 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1110 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1111 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1112 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1113 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1114 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1115 0x00, 0x00, 0x20, 0x30, 0x18, 0x1E,
1116 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00,
1117 0x01, 0x03, 0x03, 0x01, 0x00, 0x00,
1118 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1119 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1120 0x00, 0x03, 0x07, 0x00, 0x00, 0x00,
1121 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1122 0x00, 0x01, 0xE1, 0x79, 0x3E, 0x1F,
1123 0x07, 0x01, 0x00, 0x00, 0x00, 0x00,
1124 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
1125 0x01, 0x00, 0x00, 0x01, 0x01, 0x01,
1126 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1127 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
1128 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1129 0x00, 0x00, 0x00, 0x01, 0x01, 0x03,
1130 0x02, 0x06, 0x04, 0x08, 0x18, 0x10,
1131 0x30, 0x20, 0x60, 0x00, 0x00, 0x00,
1132 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1133 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1134 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1135 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1136 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1137 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1138 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1139 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1140 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1141 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1142 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1143 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
1144 0x00, 0x14, 0x08, 0x14, 0x00, 0x00,
1145 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
1146 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00,
1147 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C,
1148 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00,
1149 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C,
1150 0x18, 0x30, 0x66, 0x66, 0x66, 0x00,
1151 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E,
1152 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00,
1153 0x00, 0x00, 0x77, 0x77, 0x77, 0x00,
1154 0x77, 0x77, 0x77, 0x00, 0x00, 0x00,
1155 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24,
1156 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00,
1157 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1,
1158 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00,
1159 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED,
1160 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00,
1161 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F,
1162 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00,
1163 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64,
1164 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00,
1165 0x00, 0x04, 0x42, 0x69, 0x65, 0x65,
1166 0x65, 0x69, 0x42, 0x04, 0x00, 0x00,
1167 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08,
1168 0x18, 0x08, 0x18, 0x00, 0x00, 0x00,
1169 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70,
1170 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1171 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1172 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1173 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1174 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1175#else
1176 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80
1177 0x40, 0x40, 0x40, 0xF0, 0xF8, 0xF8,
1178 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0x3F,
1179 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8,
1180 0xF8, 0xF0, 0x40, 0x40, 0x40, 0x00,
1181 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
1182 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00,
1183 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00,
1184 0x80, 0xC0, 0xC0, 0x00, 0xC0, 0xC0,
1185 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00,
1186 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0,
1187 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0,
1188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1189 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1191 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1192 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x90
1193 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1194 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1197 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
1198 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
1199 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
1200 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
1201 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
1202 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
1203 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
1204 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
1205 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1206 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA0
1209 0x49, 0x49, 0x49, 0xFF, 0xFF, 0xFF,
1210 0xFF, 0xE0, 0xDF, 0xBF, 0xBF, 0x00,
1211 0xBF, 0xBF, 0xDF, 0xE0, 0xFF, 0xFF,
1212 0xFF, 0xFF, 0x49, 0x49, 0x49, 0x00,
1213 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F,
1214 0x60, 0x60, 0xE0, 0xBF, 0x1F, 0x00,
1215 0x7F, 0x7F, 0x07, 0x1E, 0x38, 0x1E,
1216 0x07, 0x7F, 0x7F, 0x00, 0x7F, 0x7F,
1217 0x0E, 0x1F, 0x3B, 0x71, 0x60, 0x00,
1218 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F,
1219 0x0C, 0x0C, 0x0C, 0x00, 0x7E, 0x7E,
1220 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x00,
1221 0x7F, 0x7E, 0x03, 0x03, 0x7E, 0x7E,
1222 0x03, 0x03, 0x7F, 0x7E, 0x00, 0x0F,
1223 0x3E, 0x70, 0x3C, 0x06, 0x3C, 0x70,
1224 0x3E, 0x0F, 0x00, 0x32, 0x7B, 0x49, // 0xB0
1225 0x49, 0x3F, 0x7E, 0x00, 0x7F, 0x7E,
1226 0x03, 0x03, 0x00, 0x1E, 0x3F, 0x69,
1227 0x69, 0x6F, 0x26, 0x00, 0x00, 0x00,
1228 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1229 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
1230 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
1231 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
1232 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
1233 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
1234 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
1235 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
1236 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
1237 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1238 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1239 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0
1241 0x01, 0x01, 0x01, 0x07, 0x0F, 0x0F,
1242 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x7E,
1243 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F,
1244 0x0F, 0x07, 0x01, 0x01, 0x01, 0x00,
1245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1246 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
1247 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1248 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1249 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1250 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1251 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1252 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1253 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1254 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1255 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1256 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD0
1257 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1258 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1259 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1260 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1261 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1262 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1263 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1264 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1265 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1266 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1267 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1268 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1269 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1270 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1271 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF
1272 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
1273 0x00, 0x14, 0x08, 0x14, 0x00, 0x00,
1274 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F,
1275 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00,
1276 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C,
1277 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00,
1278 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C,
1279 0x18, 0x30, 0x66, 0x66, 0x66, 0x00,
1280 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E,
1281 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00,
1282 0x00, 0x00, 0x77, 0x77, 0x77, 0x00,
1283 0x77, 0x77, 0x77, 0x00, 0x00, 0x00,
1284 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24,
1285 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00,
1286 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1,
1287 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00,
1288 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED,
1289 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00,
1290 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F,
1291 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00,
1292 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64,
1293 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00,
1294 0x00, 0x04, 0x42, 0x69, 0x65, 0x65,
1295 0x65, 0x69, 0x42, 0x04, 0x00, 0x00,
1296 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08,
1297 0x18, 0x08, 0x18, 0x00, 0x00, 0x00,
1298 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70,
1299 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1300 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1301 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1302 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1303 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1304
1305#endif
1306 };
diff --git a/users/drashna/drashna_transport.c b/users/drashna/drashna_transport.c
new file mode 100644
index 000000000..f0908b490
--- /dev/null
+++ b/users/drashna/drashna_transport.c
@@ -0,0 +1,508 @@
1/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include <string.h>
18#include <stddef.h>
19
20#include "matrix.h"
21#include QMK_KEYBOARD_H
22
23#define ROWS_PER_HAND (MATRIX_ROWS / 2)
24
25#ifdef RGBLIGHT_ENABLE
26# include "rgblight.h"
27#endif
28
29#ifdef BACKLIGHT_ENABLE
30# include "backlight.h"
31#endif
32
33#ifdef ENCODER_ENABLE
34# include "encoder.h"
35static pin_t encoders_pad[] = ENCODERS_PAD_A;
36# define NUMBER_OF_ENCODERS (sizeof(encoders_pad) / sizeof(pin_t))
37#endif
38
39#ifdef POINTING_DEVICE_ENABLE
40static int8_t split_mouse_x = 0, split_mouse_y = 0;
41#endif
42
43#ifdef OLED_DRIVER_ENABLE
44# include "oled_driver.h"
45#endif
46
47#if defined(USE_I2C)
48
49# include "i2c_master.h"
50# include "i2c_slave.h"
51
52typedef struct _I2C_slave_buffer_t {
53 matrix_row_t smatrix[ROWS_PER_HAND];
54# ifdef SPLIT_MODS_ENABLE
55 uint8_t real_mods;
56 uint8_t weak_mods;
57# ifndef NO_ACTION_ONESHOT
58 uint8_t oneshot_mods;
59# endif
60# endif
61# ifdef BACKLIGHT_ENABLE
62 uint8_t backlight_level;
63# endif
64# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
65 rgblight_syncinfo_t rgblight_sync;
66# endif
67# ifdef ENCODER_ENABLE
68 uint8_t encoder_state[NUMBER_OF_ENCODERS];
69# endif
70# ifdef WPM_ENABLE
71 uint8_t current_wpm;
72# endif
73 int8_t mouse_x;
74 int8_t mouse_y;
75 bool oled_on;
76 layer_state_t t_layer_state;
77 layer_state_t t_default_layer_state;
78 bool is_rgb_matrix_suspended;
79} __attribute__((packed)) I2C_slave_buffer_t;
80
81static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_reg;
82
83# define I2C_BACKLIGHT_START offsetof(I2C_slave_buffer_t, backlight_level)
84# define I2C_RGB_START offsetof(I2C_slave_buffer_t, rgblight_sync)
85# define I2C_KEYMAP_START offsetof(I2C_slave_buffer_t, smatrix)
86# define I2C_REAL_MODS_START offsetof(I2C_slave_buffer_t, real_mods)
87# define I2C_WEAK_MODS_START offsetof(I2C_slave_buffer_t, weak_mods)
88# define I2C_ONESHOT_MODS_START offsetof(I2C_slave_buffer_t, oneshot_mods)
89# define I2C_ENCODER_START offsetof(I2C_slave_buffer_t, encoder_state)
90# define I2C_WPM_START offsetof(I2C_slave_buffer_t, current_wpm)
91# define I2C_MOUSE_X_START offsetof(I2C_slave_buffer_t, mouse_x)
92# define I2C_MOUSE_Y_START offsetof(I2C_slave_buffer_t, mouse_y)
93# define I2C_OLED_ON_START offsetof(I2C_slave_buffer_t, oled_on)
94# define I2C_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_layer_state)
95# define I2C_DEFAULT_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_default_layer_state)
96# define I2C_RGB_MATRIX_SUSPEND_START offsetof(I2C_slave_buffer_t, is_rgb_matrix_suspended)
97
98# define TIMEOUT 100
99
100# ifndef SLAVE_I2C_ADDRESS
101# define SLAVE_I2C_ADDRESS 0x32
102# endif
103
104// Get rows from other half over i2c
105bool transport_master(matrix_row_t matrix[]) {
106 i2c_readReg(SLAVE_I2C_ADDRESS, I2C_KEYMAP_START, (void *)matrix, sizeof(i2c_buffer->smatrix), TIMEOUT);
107
108 // write backlight info
109# ifdef BACKLIGHT_ENABLE
110 uint8_t level = is_backlight_enabled() ? get_backlight_level() : 0;
111 if (level != i2c_buffer->backlight_level) {
112 if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_BACKLIGHT_START, (void *)&level, sizeof(level), TIMEOUT) >= 0) {
113 i2c_buffer->backlight_level = level;
114 }
115 }
116# endif
117
118# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
119 if (rgblight_get_change_flags()) {
120 rgblight_syncinfo_t rgblight_sync;
121 rgblight_get_syncinfo(&rgblight_sync);
122 if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_START, (void *)&rgblight_sync, sizeof(rgblight_sync), TIMEOUT) >= 0) {
123 rgblight_clear_change_flags();
124 }
125 }
126# endif
127
128# ifdef ENCODER_ENABLE
129 i2c_readReg(SLAVE_I2C_ADDRESS, I2C_ENCODER_START, (void *)i2c_buffer->encoder_state, sizeof(i2c_buffer->encoder_state), TIMEOUT);
130 encoder_update_raw(i2c_buffer->encoder_state);
131# endif
132
133# ifdef WPM_ENABLE
134 uint8_t current_wpm = get_current_wpm();
135 if (current_wpm != i2c_buffer->current_wpm) {
136 if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WPM_START, (void *)&current_wpm, sizeof(current_wpm), TIMEOUT) >= 0) {
137 i2c_buffer->current_wpm = current_wpm;
138 }
139 }
140# endif
141
142# ifdef POINTING_DEVICE_ENABLE
143 if (is_keyboard_left()) {
144 report_mouse_t temp_report = pointing_device_get_report();
145 i2c_readReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_X_START, (void *)&i2c_buffer->mouse_x, sizeof(i2c_buffer->mouse_x), TIMEOUT);
146 temp_report.x = i2c_buffer->mouse_x;
147 i2c_readReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_Y_START, (void *)&i2c_buffer->mouse_y, sizeof(i2c_buffer->mouse_y), TIMEOUT);
148 temp_report.y = i2c_buffer->mouse_y;
149 pointing_device_set_report(temp_report);
150 }
151# endif
152
153# ifdef SPLIT_MODS_ENABLE
154 uint8_t real_mods = get_mods();
155 if (real_mods != i2c_buffer->real_mods) {
156 if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_REAL_MODS_START, (void *)&real_mods, sizeof(real_mods), TIMEOUT) >= 0) {
157 i2c_buffer->real_mods = real_mods;
158 }
159 }
160
161 uint8_t weak_mods = get_weak_mods();
162 if (weak_mods != i2c_buffer->weak_mods) {
163 if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WEAK_MODS_START, (void *)&weak_mods, sizeof(weak_mods), TIMEOUT) >= 0) {
164 i2c_buffer->weak_mods = weak_mods;
165 }
166 }
167
168# ifndef NO_ACTION_ONESHOT
169 uint8_t oneshot_mods = get_oneshot_mods();
170 if (oneshot_mods != i2c_buffer->oneshot_mods) {
171 if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_ONESHOT_MODS_START, (void *)&oneshot_mods, sizeof(oneshot_mods), TIMEOUT) >= 0) {
172 i2c_buffer->oneshot_mods = oneshot_mods;
173 }
174 }
175# endif
176# endif
177
178 if (layer_state != i2c_buffer->t_layer_state) {
179 if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&layer_state, sizeof(layer_state), TIMEOUT) >= 0) {
180 i2c_buffer->t_layer_state = layer_state;
181 }
182 }
183
184 if (default_layer_state != i2c_buffer->t_default_layer_state) {
185 if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_DEFAULT_LAYER_STATE_START, (void *)&default_layer_state, sizeof(default_layer_state), TIMEOUT) >= 0) {
186 i2c_buffer->t_default_layer_state = default_layer_state;
187 }
188 }
189
190# ifdef OLED_DRIVER_ENABLE
191 bool is_oled = is_oled_on();
192 if (is_oled != i2c_buffer->oled_on) {
193 if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&is_oled, sizeof(is_oled), TIMEOUT) >= 0) {
194 i2c_buffer->oled_on = is_oled;
195 }
196 }
197# endif
198
199# ifdef RGB_MATRIX_ENABLE
200 bool sus_state = rgb_matrix_get_suspend_state();
201 if (sus_state != i2c_buffer->is_rgb_matrix_suspended) {
202 if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_MATRIX_SUSPEND_START, (void *)&sus_state, sizeof(sus_state), TIMEOUT) >= 0) {
203 i2c_buffer->is_rgb_matrix_suspended = sus_state;
204 }
205 }
206# endif
207
208 return true;
209}
210
211void transport_slave(matrix_row_t matrix[]) {
212 // Copy matrix to I2C buffer
213 memcpy((void *)i2c_buffer->smatrix, (void *)matrix, sizeof(i2c_buffer->smatrix));
214
215// Read Backlight Info
216# ifdef BACKLIGHT_ENABLE
217 backlight_set(i2c_buffer->backlight_level);
218# endif
219
220# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
221 // Update the RGB with the new data
222 if (i2c_buffer->rgblight_sync.status.change_flags != 0) {
223 rgblight_update_sync(&i2c_buffer->rgblight_sync, false);
224 i2c_buffer->rgblight_sync.status.change_flags = 0;
225 }
226# endif
227
228# ifdef ENCODER_ENABLE
229 encoder_state_raw(i2c_buffer->encoder_state);
230# endif
231
232# ifdef WPM_ENABLE
233 set_current_wpm(i2c_buffer->current_wpm);
234# endif
235
236# ifdef POINTING_DEVICE_ENABLE
237 if (!is_keyboard_left()) {
238 i2c_buffer->mouse_x = split_mouse_x;
239 i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_X_START, (void *)&i2c_buffer->mouse_x, sizeof(i2c_buffer->mouse_x), TIMEOUT);
240 i2c_buffer->mouse_y = split_mouse_y;
241 i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_Y_START, (void *)&i2c_buffer->mouse_y, sizeof(i2c_buffer->mouse_y), TIMEOUT);
242 }
243
244# endif
245
246# ifdef SPLIT_MODS_ENABLE
247 set_mods(i2c_buffer->real_mods);
248 set_weak_mods(i2c_buffer->weak_mods);
249# ifndef NO_ACTION_ONESHOT
250 set_oneshot_mods(i2c_buffer->oneshot_mods);
251# endif
252# endif
253
254 if (layer_state != i2c_buffer->t_layer_state) {
255 layer_state = i2c_buffer->t_layer_state;
256 }
257 if (default_layer_state != i2c_buffer->t_default_layer_state) {
258 default_layer_state = i2c_buffer->t_default_layer_state;
259 }
260
261# ifdef OLED_DRIVER_ENABLE
262 if (i2c_buffer->oled_on) {
263 oled_on();
264 } else {
265 oled_off();
266 }
267# endif
268
269# ifdef RGB_MATRIX_ENABLE
270 rgb_matrix_set_suspend_state(i2c_buffer->is_rgb_matrix_suspended);
271# endif
272}
273
274void transport_master_init(void) { i2c_init(); }
275
276void transport_slave_init(void) { i2c_slave_init(SLAVE_I2C_ADDRESS); }
277
278#else // USE_SERIAL
279
280# include "serial.h"
281
282typedef struct _Serial_s2m_buffer_t {
283 // TODO: if MATRIX_COLS > 8 change to uint8_t packed_matrix[] for pack/unpack
284 matrix_row_t smatrix[ROWS_PER_HAND];
285# ifdef ENCODER_ENABLE
286 uint8_t encoder_state[NUMBER_OF_ENCODERS];
287# endif
288 int8_t mouse_x;
289 int8_t mouse_y;
290} __attribute__((packed)) Serial_s2m_buffer_t;
291
292typedef struct _Serial_m2s_buffer_t {
293# ifdef SPLIT_MODS_ENABLE
294 uint8_t real_mods;
295 uint8_t weak_mods;
296# ifndef NO_ACTION_ONESHOT
297 uint8_t oneshot_mods;
298# endif
299# endif
300# ifdef BACKLIGHT_ENABLE
301 uint8_t backlight_level;
302# endif
303# ifdef WPM_ENABLE
304 uint8_t current_wpm;
305# endif
306 bool oled_on;
307 layer_state_t t_layer_state;
308 layer_state_t t_default_layer_state;
309 bool is_rgb_matrix_suspended;
310} __attribute__((packed)) Serial_m2s_buffer_t;
311
312# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
313// When MCUs on both sides drive their respective RGB LED chains,
314// it is necessary to synchronize, so it is necessary to communicate RGB
315// information. In that case, define RGBLIGHT_SPLIT with info on the number
316// of LEDs on each half.
317//
318// Otherwise, if the master side MCU drives both sides RGB LED chains,
319// there is no need to communicate.
320
321typedef struct _Serial_rgblight_t {
322 rgblight_syncinfo_t rgblight_sync;
323} Serial_rgblight_t;
324
325volatile Serial_rgblight_t serial_rgblight = {};
326uint8_t volatile status_rgblight = 0;
327# endif
328
329volatile Serial_s2m_buffer_t serial_s2m_buffer = {};
330volatile Serial_m2s_buffer_t serial_m2s_buffer = {};
331uint8_t volatile status0 = 0;
332
333enum serial_transaction_id {
334 GET_SLAVE_MATRIX = 0,
335# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
336 PUT_RGBLIGHT,
337# endif
338};
339
340SSTD_t transactions[] = {
341 [GET_SLAVE_MATRIX] =
342 {
343 (uint8_t *)&status0,
344 sizeof(serial_m2s_buffer),
345 (uint8_t *)&serial_m2s_buffer,
346 sizeof(serial_s2m_buffer),
347 (uint8_t *)&serial_s2m_buffer,
348 },
349# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
350 [PUT_RGBLIGHT] =
351 {
352 (uint8_t *)&status_rgblight, sizeof(serial_rgblight), (uint8_t *)&serial_rgblight, 0, NULL // no slave to master transfer
353 },
354# endif
355};
356
357void transport_master_init(void) { soft_serial_initiator_init(transactions, TID_LIMIT(transactions)); }
358
359void transport_slave_init(void) { soft_serial_target_init(transactions, TID_LIMIT(transactions)); }
360
361# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT)
362
363// rgblight synchronization information communication.
364
365void transport_rgblight_master(void) {
366 if (rgblight_get_change_flags()) {
367 rgblight_get_syncinfo((rgblight_syncinfo_t *)&serial_rgblight.rgblight_sync);
368 if (soft_serial_transaction(PUT_RGBLIGHT) == TRANSACTION_END) {
369 rgblight_clear_change_flags();
370 }
371 }
372}
373
374void transport_rgblight_slave(void) {
375 if (status_rgblight == TRANSACTION_ACCEPTED) {
376 rgblight_update_sync((rgblight_syncinfo_t *)&serial_rgblight.rgblight_sync, false);
377 status_rgblight = TRANSACTION_END;
378 }
379}
380
381# else
382# define transport_rgblight_master()
383# define transport_rgblight_slave()
384# endif
385
386bool transport_master(matrix_row_t matrix[]) {
387# ifndef SERIAL_USE_MULTI_TRANSACTION
388 if (soft_serial_transaction() != TRANSACTION_END) {
389 return false;
390 }
391# else
392 transport_rgblight_master();
393 if (soft_serial_transaction(GET_SLAVE_MATRIX) != TRANSACTION_END) {
394 return false;
395 }
396# endif
397
398 // TODO: if MATRIX_COLS > 8 change to unpack()
399 for (int i = 0; i < ROWS_PER_HAND; ++i) {
400 matrix[i] = serial_s2m_buffer.smatrix[i];
401 }
402
403# ifdef BACKLIGHT_ENABLE
404 // Write backlight level for slave to read
405 serial_m2s_buffer.backlight_level = is_backlight_enabled() ? get_backlight_level() : 0;
406# endif
407
408# ifdef ENCODER_ENABLE
409 encoder_update_raw((uint8_t *)serial_s2m_buffer.encoder_state);
410# endif
411
412# ifdef WPM_ENABLE
413 // Write wpm to slave
414 serial_m2s_buffer.current_wpm = get_current_wpm();
415# endif
416
417# ifdef SPLIT_MODS_ENABLE
418 serial_m2s_buffer.real_mods = get_mods();
419 serial_m2s_buffer.weak_mods = get_weak_mods();
420# ifndef NO_ACTION_ONESHOT
421 serial_m2s_buffer.oneshot_mods = get_oneshot_mods();
422# endif
423# endif
424
425# ifdef POINTING_DEVICE_ENABLE
426 if (is_keyboard_left()) {
427 report_mouse_t temp_report = pointing_device_get_report();
428 temp_report.x = serial_s2m_buffer.mouse_x;
429 temp_report.y = serial_s2m_buffer.mouse_y;
430 pointing_device_set_report(temp_report);
431 }
432# endif
433
434 serial_m2s_buffer.t_layer_state = layer_state;
435 serial_m2s_buffer.t_default_layer_state = default_layer_state;
436# ifdef OLED_DRIVER_ENABLE
437 serial_m2s_buffer.oled_on = is_oled_on();
438# endif
439
440# ifdef RGB_MATRIX_ENABLE
441 serial_m2s_buffer.is_rgb_matrix_suspended = rgb_matrix_get_suspend_state();
442# endif
443
444 return true;
445}
446
447void transport_slave(matrix_row_t matrix[]) {
448 transport_rgblight_slave();
449
450 // TODO: if MATRIX_COLS > 8 change to pack()
451 for (int i = 0; i < ROWS_PER_HAND; ++i) {
452 serial_s2m_buffer.smatrix[i] = matrix[i];
453 }
454
455# ifdef BACKLIGHT_ENABLE
456 backlight_set(serial_m2s_buffer.backlight_level);
457# endif
458
459# ifdef ENCODER_ENABLE
460 encoder_state_raw((uint8_t *)serial_s2m_buffer.encoder_state);
461# endif
462
463# ifdef WPM_ENABLE
464 set_current_wpm(serial_m2s_buffer.current_wpm);
465# endif
466
467# ifdef SPLIT_MODS_ENABLE
468 set_mods(serial_m2s_buffer.real_mods);
469 set_weak_mods(serial_m2s_buffer.weak_mods);
470# ifndef NO_ACTION_ONESHOT
471 set_oneshot_mods(serial_m2s_buffer.oneshot_mods);
472# endif
473# endif
474
475# ifdef POINTING_DEVICE_ENABLE
476 if (!is_keyboard_left()) {
477 serial_s2m_buffer.mouse_x = split_mouse_x;
478 serial_s2m_buffer.mouse_y = split_mouse_y;
479 }
480# endif
481
482 if (layer_state != serial_m2s_buffer.t_layer_state) {
483 layer_state = serial_m2s_buffer.t_layer_state;
484 }
485 if (default_layer_state != serial_m2s_buffer.t_default_layer_state) {
486 default_layer_state = serial_m2s_buffer.t_default_layer_state;
487 }
488# ifdef OLED_DRIVER_ENABLE
489 if (serial_m2s_buffer.oled_on) {
490 oled_on();
491 } else {
492 oled_off();
493 }
494# endif
495
496# ifdef RGB_MATRIX_ENABLE
497 rgb_matrix_set_suspend_state(serial_m2s_buffer.is_rgb_matrix_suspended);
498# endif
499}
500
501#endif
502
503#ifdef POINTING_DEVICE_ENABLE
504void master_mouse_send(int8_t x, int8_t y) {
505 split_mouse_x = x;
506 split_mouse_y = y;
507}
508#endif
diff --git a/users/drashna/font_gmk_bad.h b/users/drashna/font_gmk_bad.h
deleted file mode 100644
index 2f660d7eb..000000000
--- a/users/drashna/font_gmk_bad.h
+++ /dev/null
@@ -1,234 +0,0 @@
1#pragma once
2
3#include "progmem.h"
4
5// Corne 8x6 font with QMK Firmware Logo
6// Online editor: https://helixfonteditor.netlify.com/
7
8// clang-format off
9const unsigned char font[] PROGMEM = {
10 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
11 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
12 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
13 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
14 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
15 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
16 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
17 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
18 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
19 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
20 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
21 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
22 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
23 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
24 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
25 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
26 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
27 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
28 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
29 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
30 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
31 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
32 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
33 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
34 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
35 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
36 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
37 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
38 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
39 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
40 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
41 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
42 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
43 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
44 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
45 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
46 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
47 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
48 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
49 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
50 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
51 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
52 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
53 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
54 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
55 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
56 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
57 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
58 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
59 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
60 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
61 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
62 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
63 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
64 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
65 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
66 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
67 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
68 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
69 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
70 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
71 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
72 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
73 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
74 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
75 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
76 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
77 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
78 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
79 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
80 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
81 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
82 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
83 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
84 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
85 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
86 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
87 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
88 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
89 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
90 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
91 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
92 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
93 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
94 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
95 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
96 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
97 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
98 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
99 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
100 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
101 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
102 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
103 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
104 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
105 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
106 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
107 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
108 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
109 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
110 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
111 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
112 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
113 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
114 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
115 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
116 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
117 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
118 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
119 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
120 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
121 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
122 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
123 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
124 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
125 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
126 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
127 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
128 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
129 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
130 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
131 0x4C, 0x90, 0x10, 0x90, 0x7C, 0x00,
132 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
133 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
134 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
135 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
136 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
137 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
138 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
139 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70,
140 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0,
141 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00,
142 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8,
143 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00,
144 0x80, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8,
145 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00,
146 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x00,
147 0x80, 0xE0, 0xF0, 0xF8, 0x78, 0x38,
148 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
149 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
150 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x38,
151 0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0x00,
152 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
153 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
154 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
155 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
156 0x00, 0x00, 0x00, 0x80, 0xFC, 0xFC,
157 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00,
158 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
159 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
160 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
161 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
162 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
163 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
164 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
165 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
167 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
169 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
170 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C,
171 0xFF, 0xFF, 0xFF, 0xC1, 0x80, 0x00,
172 0x00, 0x38, 0x38, 0xB8, 0xB8, 0xF9,
173 0xF9, 0xF8, 0x38, 0x00, 0x00, 0x00,
174 0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0x1F,
175 0x01, 0x3F, 0xFF, 0xFF, 0xF0, 0xFE,
176 0x7F, 0x0F, 0x03, 0xFF, 0xFF, 0xFF,
177 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80,
178 0xFF, 0xFF, 0xFF, 0x3F, 0x1E, 0x7F,
179 0xFF, 0xFF, 0xF3, 0xC1, 0x80, 0x00,
180 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
181 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
182 0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x1C,
183 0x9C, 0xFF, 0xFF, 0xF3, 0xE1, 0x00,
184 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE,
185 0xFF, 0x0F, 0x07, 0x07, 0x8E, 0xFF,
186 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00,
187 0x00, 0xF0, 0xFC, 0xFE, 0xFF, 0x8F,
188 0x07, 0x07, 0x8E, 0xFF, 0xFF, 0xFF,
189 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80,
190 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
191 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
192 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
193 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
194 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
197 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
199 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
200 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
201 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
202 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
203 0x00, 0x01, 0x03, 0x03, 0x03, 0x07,
204 0x07, 0x07, 0x07, 0x03, 0x03, 0x03,
205 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
206 0x06, 0x07, 0x07, 0x07, 0x01, 0x00,
207 0x00, 0x00, 0x07, 0x07, 0x07, 0x01,
208 0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
209 0x07, 0x00, 0x00, 0x00, 0x00, 0x07,
210 0x07, 0x07, 0x07, 0x00, 0x00, 0x00,
211 0x00, 0x03, 0x07, 0x07, 0x07, 0x06,
212 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
213 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
214 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
215 0x07, 0x07, 0x03, 0x01, 0x00, 0x00,
216 0x00, 0x00, 0x00, 0x00, 0x03, 0x07,
217 0x07, 0x07, 0x07, 0x03, 0x07, 0x07,
218 0x07, 0x07, 0x00, 0x00, 0x00, 0x00,
219 0x00, 0x00, 0x03, 0x07, 0x07, 0x07,
220 0x07, 0x03, 0x07, 0x07, 0x07, 0x07,
221 0x00, 0x00, 0x00, 0x00, 0x01, 0x07,
222 0x07, 0x07, 0x01, 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 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
234};
diff --git a/users/drashna/hue_manitee_font.h b/users/drashna/hue_manitee_font.h
deleted file mode 100644
index 2deb4d32d..000000000
--- a/users/drashna/hue_manitee_font.h
+++ /dev/null
@@ -1,234 +0,0 @@
1#pragma once
2
3#include "progmem.h"
4
5// Corne 8x6 font with QMK Firmware Logo
6// Online editor: https://helixfonteditor.netlify.com/
7
8// clang-format off
9const unsigned char font[] PROGMEM = {
10 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
11 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
12 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
13 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
14 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
15 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
16 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
17 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
18 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
19 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
20 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
21 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
22 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
23 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
24 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
25 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
26 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
27 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
28 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
29 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
30 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
31 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
32 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
33 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
34 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
35 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
36 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
37 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
38 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
39 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
40 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
41 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
42 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
43 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
44 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
45 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
46 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
47 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
48 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
49 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
50 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
51 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
52 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
53 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
54 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
55 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
56 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
57 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
58 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
59 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
60 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
61 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
62 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
63 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
64 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
65 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
66 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
67 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
68 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
69 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
70 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
71 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
72 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
73 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
74 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
75 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
76 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
77 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
78 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
79 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
80 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
81 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
82 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
83 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
84 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
85 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
86 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
87 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
88 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
89 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
90 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
91 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
92 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
93 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
94 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
95 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
96 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
97 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
98 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
99 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
100 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
101 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
102 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
103 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
104 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
105 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
106 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
107 0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
108 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
109 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
110 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
111 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
112 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
113 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
114 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
115 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
116 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
117 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
118 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
119 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
120 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
121 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
122 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
123 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
124 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
125 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
126 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
127 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
128 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
129 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
130 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
131 0x4C, 0x90, 0x10, 0x90, 0x7C, 0x00,
132 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
133 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
134 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
135 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
136 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
137 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
138 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
139 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0,
140 0x90, 0x70, 0xE8, 0xA8, 0xE4, 0xC4,
141 0xC4, 0xA0, 0xE4, 0xB0, 0xDC, 0xE4,
142 0xFC, 0xFC, 0xFC, 0xFC, 0x3C, 0x3C,
143 0xFC, 0xF8, 0xF0, 0xF0, 0xE0, 0x00,
144 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
145 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
146 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
147 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8,
148 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
149 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
150 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
151 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
152 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
153 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
154 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00,
155 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
156 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
157 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
158 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
159 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
160 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
161 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
162 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
163 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
164 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
165 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
167 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
169 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
170 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
171 0xFC, 0xF6, 0xF7, 0xEF, 0xFF, 0x87,
172 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
173 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF,
174 0xFF, 0x07, 0x1F, 0x1F, 0x19, 0x15,
175 0xF7, 0x16, 0x1A, 0x1B, 0x16, 0x07,
176 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
177 0x00, 0x00, 0x0C, 0x0C, 0x33, 0x33,
178 0x33, 0x33, 0x33, 0x33, 0xC0, 0xC0,
179 0x00, 0x00, 0x03, 0x03, 0xFF, 0xFF,
180 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0,
181 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03,
182 0x03, 0x03, 0x03, 0x03, 0x03, 0xFC,
183 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC,
184 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
185 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00,
186 0xFF, 0xFF, 0x30, 0x30, 0xCC, 0xCC,
187 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
189 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
191 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
192 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
193 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
194 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
197 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
199 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
200 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
201 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
202 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
203 0x03, 0x07, 0x07, 0x07, 0x07, 0x01,
204 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
205 0x00, 0x00, 0x00, 0x03, 0x07, 0x07,
206 0x03, 0x00, 0x00, 0x02, 0x04, 0x00,
207 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
208 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
209 0x00, 0x00, 0x03, 0x03, 0x03, 0x03,
210 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
211 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
212 0x03, 0x03, 0x03, 0x03, 0x00, 0x00,
213 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
214 0x03, 0x03, 0x03, 0x03, 0x03, 0x00,
215 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
216 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
217 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
218 0x03, 0x03, 0x00, 0x00, 0x00, 0x00,
219 0x03, 0x03, 0x00, 0x00, 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 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
234};
diff --git a/users/drashna/oled_stuff.c b/users/drashna/oled_stuff.c
index 30eb068f7..4abf5f05f 100644
--- a/users/drashna/oled_stuff.c
+++ b/users/drashna/oled_stuff.c
@@ -15,6 +15,7 @@
15 */ 15 */
16 16
17#include "drashna.h" 17#include "drashna.h"
18#include <stdio.h>
18 19
19#ifndef KEYLOGGER_LENGTH 20#ifndef KEYLOGGER_LENGTH
20// # ifdef OLED_DISPLAY_128X64 21// # ifdef OLED_DISPLAY_128X64
@@ -24,7 +25,7 @@
24// # endif 25// # endif
25#endif 26#endif
26 27
27static uint32_t oled_timer = 0; 28uint32_t oled_timer = 0;
28static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"}; 29static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"};
29static uint16_t log_timer = 0; 30static uint16_t log_timer = 0;
30 31
@@ -132,28 +133,26 @@ void render_layer_state(void) {
132 oled_write_P(PSTR(" "), false); 133 oled_write_P(PSTR(" "), false);
133#endif 134#endif
134 oled_write_P(PSTR(OLED_RENDER_LAYER_RAISE), layer_state_is(_RAISE)); 135 oled_write_P(PSTR(OLED_RENDER_LAYER_RAISE), layer_state_is(_RAISE));
135#if _MODS
136# ifdef OLED_DISPLAY_128X64
137 oled_write_P(PSTR(" "), false);
138# endif
139 oled_write_P(PSTR(OLED_RENDER_LAYER_MODS), layer_state_is(_MODS));
140#endif
141#ifdef OLED_DISPLAY_128X64 136#ifdef OLED_DISPLAY_128X64
142 oled_advance_page(true); 137 oled_advance_page(true);
138 oled_write_P(PSTR(" "), false);
139 oled_write_P(PSTR("GamePad"), layer_state_is(_GAMEPAD));
140 oled_write_P(PSTR(" "), false);
141 oled_write_P(PSTR("Diablo"), layer_state_is(_DIABLO));
142 oled_write_P(PSTR(" "), false);
143 oled_write_P(PSTR("Mouse"), layer_state_is(_MOUSE));
143#endif 144#endif
144} 145}
145 146
146void render_keylock_status(uint8_t led_usb_state) { 147void render_keylock_status(uint8_t led_usb_state) {
147 oled_write_P(PSTR(OLED_RENDER_LOCK_NAME), false); 148 oled_write_P(PSTR(OLED_RENDER_LOCK_NAME), false);
149#if !defined(OLED_DISPLAY_128X64)
148 oled_write_P(PSTR(" "), false); 150 oled_write_P(PSTR(" "), false);
151#endif
149 oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state & (1 << USB_LED_NUM_LOCK)); 152 oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state & (1 << USB_LED_NUM_LOCK));
150#ifdef OLED_DISPLAY_128X64
151 oled_write_P(PSTR(" "), false); 153 oled_write_P(PSTR(" "), false);
152#endif
153 oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK)); 154 oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK));
154#ifdef OLED_DISPLAY_128X64
155 oled_write_P(PSTR(" "), false); 155 oled_write_P(PSTR(" "), false);
156#endif
157 oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK)); 156 oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK));
158#ifndef OLED_DISPLAY_128X64 157#ifndef OLED_DISPLAY_128X64
159 oled_advance_page(true); 158 oled_advance_page(true);
@@ -161,20 +160,18 @@ void render_keylock_status(uint8_t led_usb_state) {
161} 160}
162 161
163void render_mod_status(uint8_t modifiers) { 162void render_mod_status(uint8_t modifiers) {
163 static const char PROGMEM mod_status[5][3] = {{0xE8, 0xE9, 0}, {0xE4, 0xE5, 0}, {0xE6, 0xE7, 0}, {0xEA, 0xEB, 0}, {0xEC, 0xED, 0}};
164 oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false); 164 oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false);
165 oled_write_P(PSTR(OLED_RENDER_MODS_SFT), (modifiers & MOD_MASK_SHIFT)); 165 oled_write_P(mod_status[0], (modifiers & MOD_MASK_SHIFT));
166#ifdef OLED_DISPLAY_128X64 166 oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_MASK_GUI));
167#if !defined(OLED_DISPLAY_128X64)
167 oled_write_P(PSTR(" "), false); 168 oled_write_P(PSTR(" "), false);
168#endif 169#endif
169 oled_write_P(PSTR(OLED_RENDER_MODS_CTL), (modifiers & MOD_MASK_CTRL)); 170 oled_write_P(mod_status[2], (modifiers & MOD_MASK_ALT));
170#ifdef OLED_DISPLAY_128X64 171 oled_write_P(mod_status[1], (modifiers & MOD_MASK_CTRL));
171 oled_write_P(PSTR(" "), false); 172#if defined(OLED_DISPLAY_128X64)
172#endif 173 oled_advance_page(true);
173 oled_write_P(PSTR(OLED_RENDER_MODS_ALT), (modifiers & MOD_MASK_ALT));
174#ifdef OLED_DISPLAY_128X64
175 oled_write_P(PSTR(" "), false);
176#endif 174#endif
177 oled_write_P(PSTR(OLED_RENDER_MODS_GUI), (modifiers & MOD_MASK_GUI));
178} 175}
179 176
180void render_bootmagic_status(void) { 177void render_bootmagic_status(void) {
@@ -204,41 +201,71 @@ void render_bootmagic_status(void) {
204#endif 201#endif
205 oled_write_P(logo[0][0], !is_bootmagic_on); 202 oled_write_P(logo[0][0], !is_bootmagic_on);
206 } 203 }
204#ifndef OLED_DISPLAY_128X64
205 oled_write_P(PSTR(" "), false);
206 oled_write_P(logo[1][1], is_bootmagic_on);
207 oled_write_P(logo[0][1], !is_bootmagic_on);
208#endif
207 oled_write_P(PSTR(" "), false); 209 oled_write_P(PSTR(" "), false);
208#ifdef OLED_DISPLAY_128X64
209 oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro); 210 oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro);
210 oled_write_P(PSTR(" "), false); 211 oled_write_P(PSTR(" "), false);
211 oled_write_ln_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), !keymap_config.no_gui); 212 oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), !keymap_config.no_gui);
212 oled_write_P(PSTR("Magic "), false);
213 if (keymap_config.swap_lctl_lgui)
214#endif
215 {
216 oled_write_P(logo[1][1], is_bootmagic_on);
217#ifdef OLED_DISPLAY_128X64 213#ifdef OLED_DISPLAY_128X64
214 oled_advance_page(true);
215 oled_write_P(PSTR("Magic"), false);
216 oled_write_P(PSTR(" "), false);
217 if (keymap_config.swap_lctl_lgui) {
218 oled_write_P(logo[1][1], is_bootmagic_on);
218 } else { 219 } else {
219#endif
220 oled_write_P(logo[0][1], !is_bootmagic_on); 220 oled_write_P(logo[0][1], !is_bootmagic_on);
221 } 221 }
222#endif
222 oled_write_P(PSTR(" "), false); 223 oled_write_P(PSTR(" "), false);
223#ifdef OLED_DISPLAY_128X64
224 oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_GRV), keymap_config.swap_grave_esc); 224 oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_GRV), keymap_config.swap_grave_esc);
225 oled_write_P(PSTR(" "), false); 225 oled_write_P(PSTR(" "), false);
226 oled_write_P(PSTR(" "), false);
226 oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_CAPS), keymap_config.swap_control_capslock); 227 oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_CAPS), keymap_config.swap_control_capslock);
228#ifdef OLED_DISPLAY_128X64
227 oled_advance_page(true); 229 oled_advance_page(true);
228#else
229 oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro);
230#endif 230#endif
231} 231}
232 232
233#if defined(POINTING_DEVICE_ENABLE)
234extern bool tap_toggling;
235#endif
236
233void render_user_status(void) { 237void render_user_status(void) {
234 oled_write_P(PSTR(OLED_RENDER_USER_NAME), false); 238 oled_write_P(PSTR(OLED_RENDER_USER_NAME), false);
239#if !defined(OLED_DISPLAY_128X64)
235 oled_write_P(PSTR(" "), false); 240 oled_write_P(PSTR(" "), false);
241#endif
242#if defined(RGB_MATRIX_ENABLE)
236 oled_write_P(PSTR(OLED_RENDER_USER_ANIM), userspace_config.rgb_matrix_idle_anim); 243 oled_write_P(PSTR(OLED_RENDER_USER_ANIM), userspace_config.rgb_matrix_idle_anim);
244# if !defined(OLED_DISPLAY_128X64)
237 oled_write_P(PSTR(" "), false); 245 oled_write_P(PSTR(" "), false);
238 oled_write_P(PSTR(OLED_RENDER_USER_LAYR), userspace_config.rgb_layer_change); 246# endif
247#elif defined(POINTING_DEVICE_ENABLE)
248 static const char PROGMEM mouse_lock[3] = {0xF2, 0xF3, 0};
249 oled_write_P(mouse_lock, tap_toggling);
250#endif
251#ifdef AUDIO_ENABLE
252 static const char PROGMEM audio_status[2][3] = {{0xE0, 0xE1, 0}, {0xE2, 0xE3, 0}};
253 oled_write_P(audio_status[is_audio_on()], false);
254
255# ifdef AUDIO_CLICKY
256 static const char PROGMEM audio_clicky_status[2][3] = {{0xF4, 0xF5, 0}, {0xF6, 0xF7, 0}};
257 oled_write_P(audio_clicky_status[is_clicky_on() && is_audio_on()], false);
258# if !defined(OLED_DISPLAY_128X64)
239 oled_write_P(PSTR(" "), false); 259 oled_write_P(PSTR(" "), false);
240 oled_write_P(PSTR(OLED_RENDER_USER_NUKE), userspace_config.nuke_switch); 260# endif
241#ifdef OLED_DISPLAY_128X64 261# endif
262#endif
263
264 static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}};
265 oled_write_P(rgb_layer_status[userspace_config.rgb_layer_change], false);
266 static const char PROGMEM nukem_good[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}};
267 oled_write_P(nukem_good[0], userspace_config.nuke_switch);
268#if defined(OLED_DISPLAY_128X64)
242 oled_advance_page(true); 269 oled_advance_page(true);
243#endif 270#endif
244} 271}
@@ -253,23 +280,55 @@ __attribute__((weak)) void oled_driver_render_logo(void) {
253 oled_write_P(qmk_logo, false); 280 oled_write_P(qmk_logo, false);
254} 281}
255 282
283void render_wpm(void) {
284#ifdef WPM_ENABLE
285# ifdef OLED_DISPLAY_128X64
286 char wpm_counter[4];
287# else
288 char wpm_counter[6];
289# endif
290 snprintf(wpm_counter, sizeof(wpm_counter), "%3u", get_current_wpm());
291 oled_write_P(PSTR(OLED_RENDER_WPM_COUNTER), false);
292 oled_write(wpm_counter, false);
293#endif
294}
295
296#ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball
297extern keyboard_config_t keyboard_config;
298extern uint16_t dpi_array[];
299
300void render_pointing_dpi_status(void) {
301 char dpi_status[6];
302 snprintf(dpi_status, sizeof(dpi_status), "%5u", dpi_array[keyboard_config.dpi_config]);
303 oled_write_P(PSTR(" DPI: "), false);
304 oled_write(dpi_status, false);
305}
306#endif
307
256void render_status_secondary(void) { 308void render_status_secondary(void) {
257#if !defined(SPLIT_TRANSPORT_MIRROR) || defined(OLED_DISPLAY_128X64) 309#if defined(OLED_DISPLAY_128X64)
258 oled_driver_render_logo(); 310 oled_driver_render_logo();
259#endif 311#endif
260 /* Show Keyboard Layout */ 312 /* Show Keyboard Layout */
261 render_default_layer_state(); 313 render_default_layer_state();
262 render_layer_state(); 314 render_layer_state();
263 render_mod_status(get_mods() | get_oneshot_mods()); 315 render_mod_status(get_mods() | get_oneshot_mods());
264 render_keylogger_status(); 316 // render_keylogger_status();
265 317 render_keylock_status(host_keyboard_leds());
266} 318}
267// clang-format on
268 319
269void render_status_main(void) { 320void render_status_main(void) {
321#if defined(OLED_DISPLAY_128X64)
270 oled_driver_render_logo(); 322 oled_driver_render_logo();
271 /* Show Keyboard Layout */ 323 render_wpm();
324# ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball
325 render_pointing_dpi_status();
326# endif
327 oled_write_P(PSTR("\n"), false);
328#else
272 render_default_layer_state(); 329 render_default_layer_state();
330#endif
331 /* Show Keyboard Layout */
273 // render_keylock_status(host_keyboard_leds()); 332 // render_keylock_status(host_keyboard_leds());
274 render_bootmagic_status(); 333 render_bootmagic_status();
275 render_user_status(); 334 render_user_status();
diff --git a/users/drashna/oled_stuff.h b/users/drashna/oled_stuff.h
index 7f2786d00..2224cd90e 100644
--- a/users/drashna/oled_stuff.h
+++ b/users/drashna/oled_stuff.h
@@ -21,6 +21,7 @@
21 21
22void oled_driver_render_logo(void); 22void oled_driver_render_logo(void);
23bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); 23bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
24extern uint32_t oled_timer;
24 25
25#ifdef OLED_DISPLAY_128X64 26#ifdef OLED_DISPLAY_128X64
26# define OLED_RENDER_KEYLOGGER "Keylogger: " 27# define OLED_RENDER_KEYLOGGER "Keylogger: "
@@ -35,7 +36,7 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
35# define OLED_RENDER_LAYOUT_EUCALYN "Eucalyn" 36# define OLED_RENDER_LAYOUT_EUCALYN "Eucalyn"
36# define OLED_RENDER_LAYOUT_CARPLAX "Carplax" 37# define OLED_RENDER_LAYOUT_CARPLAX "Carplax"
37 38
38# define OLED_RENDER_LAYER_NAME "Layer:\n" 39# define OLED_RENDER_LAYER_NAME "Layer:"
39# define OLED_RENDER_LAYER_LOWER "Lower" 40# define OLED_RENDER_LAYER_LOWER "Lower"
40# define OLED_RENDER_LAYER_RAISE "Raise" 41# define OLED_RENDER_LAYER_RAISE "Raise"
41# define OLED_RENDER_LAYER_ADJUST "Adjust" 42# define OLED_RENDER_LAYER_ADJUST "Adjust"
@@ -46,7 +47,7 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
46# define OLED_RENDER_LOCK_CAPS "CAPS" 47# define OLED_RENDER_LOCK_CAPS "CAPS"
47# define OLED_RENDER_LOCK_SCLK "SCLK" 48# define OLED_RENDER_LOCK_SCLK "SCLK"
48 49
49# define OLED_RENDER_MODS_NAME "Mods: " 50# define OLED_RENDER_MODS_NAME "Mods:"
50# define OLED_RENDER_MODS_SFT "Sft" 51# define OLED_RENDER_MODS_SFT "Sft"
51# define OLED_RENDER_MODS_CTL "Ctl" 52# define OLED_RENDER_MODS_CTL "Ctl"
52# define OLED_RENDER_MODS_ALT "Alt" 53# define OLED_RENDER_MODS_ALT "Alt"
@@ -63,6 +64,7 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
63# define OLED_RENDER_USER_LAYR "Layr" 64# define OLED_RENDER_USER_LAYR "Layr"
64# define OLED_RENDER_USER_NUKE "Nuke" 65# define OLED_RENDER_USER_NUKE "Nuke"
65 66
67# define OLED_RENDER_WPM_COUNTER "WPM: "
66#else 68#else
67# define OLED_RENDER_KEYLOGGER "KLogr" 69# define OLED_RENDER_KEYLOGGER "KLogr"
68 70
@@ -83,15 +85,15 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
83# define OLED_RENDER_LAYER_MODS " Mods" 85# define OLED_RENDER_LAYER_MODS " Mods"
84 86
85# define OLED_RENDER_LOCK_NAME "Lock:" 87# define OLED_RENDER_LOCK_NAME "Lock:"
86# define OLED_RENDER_LOCK_NUML "N" 88# define OLED_RENDER_LOCK_NUML "NumL"
87# define OLED_RENDER_LOCK_CAPS "C" 89# define OLED_RENDER_LOCK_CAPS "CapL"
88# define OLED_RENDER_LOCK_SCLK "S" 90# define OLED_RENDER_LOCK_SCLK "ScrL"
89 91
90# define OLED_RENDER_MODS_NAME "Mods: " 92# define OLED_RENDER_MODS_NAME "Mods: "
91# define OLED_RENDER_MODS_SFT "S" 93# define OLED_RENDER_MODS_SFT "Shft"
92# define OLED_RENDER_MODS_CTL "C" 94# define OLED_RENDER_MODS_CTL "Ctrl"
93# define OLED_RENDER_MODS_ALT "A" 95# define OLED_RENDER_MODS_ALT "Alt\n"
94# define OLED_RENDER_MODS_GUI "G" 96# define OLED_RENDER_MODS_GUI "GUI\n"
95 97
96# define OLED_RENDER_BOOTMAGIC_NAME "BTMGK" 98# define OLED_RENDER_BOOTMAGIC_NAME "BTMGK"
97# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO" 99# define OLED_RENDER_BOOTMAGIC_NKRO "NKRO"
@@ -104,4 +106,6 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
104# define OLED_RENDER_USER_LAYR "Layr" 106# define OLED_RENDER_USER_LAYR "Layr"
105# define OLED_RENDER_USER_NUKE "Nuke" 107# define OLED_RENDER_USER_NUKE "Nuke"
106 108
109# define OLED_RENDER_WPM_COUNTER "WPM: "
110
107#endif 111#endif
diff --git a/users/drashna/pimoroni_trackball.h b/users/drashna/pimoroni_trackball.h
index 83d248d3f..a30fb0bb8 100644
--- a/users/drashna/pimoroni_trackball.h
+++ b/users/drashna/pimoroni_trackball.h
@@ -23,13 +23,13 @@
23# define TRACKBALL_ADDRESS 0x0A 23# define TRACKBALL_ADDRESS 0x0A
24#endif 24#endif
25#define TRACKBALL_WRITE ((TRACKBALL_ADDRESS << 1) | I2C_WRITE) 25#define TRACKBALL_WRITE ((TRACKBALL_ADDRESS << 1) | I2C_WRITE)
26#define TRACKBALL_READ ((TRACKBALL_ADDRESS << 1) | I2C_READ) 26#define TRACKBALL_READ ((TRACKBALL_ADDRESS << 1) | I2C_READ)
27 27
28void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white); 28void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white);
29void trackball_check_click(bool pressed, report_mouse_t *mouse); 29void trackball_check_click(bool pressed, report_mouse_t *mouse);
30void trackball_register_button(bool pressed, enum mouse_buttons button); 30void trackball_register_button(bool pressed, enum mouse_buttons button);
31 31
32float trackball_get_precision(void); 32float trackball_get_precision(void);
33void trackball_set_precision(float precision); 33void trackball_set_precision(float precision);
34bool trackball_is_scrolling(void); 34bool trackball_is_scrolling(void);
35void trackball_set_scrolling(bool scroll); 35void trackball_set_scrolling(bool scroll);
diff --git a/users/drashna/process_records.c b/users/drashna/process_records.c
index 14fda92de..ef901226e 100644
--- a/users/drashna/process_records.c
+++ b/users/drashna/process_records.c
@@ -36,12 +36,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
36 36
37 if (!(process_record_keymap(keycode, record) && process_record_secrets(keycode, record) 37 if (!(process_record_keymap(keycode, record) && process_record_secrets(keycode, record)
38#ifdef RGB_MATRIX_ENABLE 38#ifdef RGB_MATRIX_ENABLE
39 && process_record_user_rgb_matrix(keycode, record) 39 && process_record_user_rgb_matrix(keycode, record)
40#endif 40#endif
41#ifdef RGBLIGHT_ENABLE 41#ifdef RGBLIGHT_ENABLE
42 && process_record_user_rgb_light(keycode, record) 42 && process_record_user_rgb_light(keycode, record)
43#endif 43#endif
44 && true)) { 44 && true)) {
45 return false; 45 return false;
46 } 46 }
47 47
diff --git a/users/drashna/process_records.h b/users/drashna/process_records.h
index e59e2242e..2e2467050 100644
--- a/users/drashna/process_records.h
+++ b/users/drashna/process_records.h
@@ -55,6 +55,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
55#define ADJUST MO(_ADJUST) 55#define ADJUST MO(_ADJUST)
56#define TG_MODS TG(_MODS) 56#define TG_MODS TG(_MODS)
57#define TG_GAME TG(_GAMEPAD) 57#define TG_GAME TG(_GAMEPAD)
58#define TG_DBLO TG(_DIABLO)
58#define OS_LWR OSL(_LOWER) 59#define OS_LWR OSL(_LOWER)
59#define OS_RSE OSL(_RAISE) 60#define OS_RSE OSL(_RAISE)
60 61
diff --git a/users/drashna/rgb_stuff.c b/users/drashna/rgb_stuff.c
index b67f707b6..c8b2f4c72 100644
--- a/users/drashna/rgb_stuff.c
+++ b/users/drashna/rgb_stuff.c
@@ -14,15 +14,17 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16 16
17#include "drashna.h" 17#ifdef RGBLIGHT_ENABLE
18#include "rgb_stuff.h" 18
19#include "eeprom.h" 19# include "drashna.h"
20# include "rgb_stuff.h"
21# include "eeprom.h"
20 22
21bool has_initialized; 23bool has_initialized;
22 24
23void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val(), index); } 25void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val(), index); }
24 26
25#ifdef RGBLIGHT_TWINKLE 27# ifdef RGBLIGHT_TWINKLE
26static rgblight_fadeout lights[RGBLED_NUM]; 28static rgblight_fadeout lights[RGBLED_NUM];
27 29
28/* Handler for fading/twinkling effect */ 30/* Handler for fading/twinkling effect */
@@ -91,7 +93,7 @@ void start_rgb_light(void) {
91 93
92 rgblight_sethsv_at(light->hue, 255, light->life, light_index); 94 rgblight_sethsv_at(light->hue, 255, light->life, light_index);
93} 95}
94#endif 96# endif
95 97
96bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) { 98bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) {
97 uint16_t temp_keycode = keycode; 99 uint16_t temp_keycode = keycode;
@@ -101,7 +103,7 @@ bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) {
101 } 103 }
102 104
103 switch (temp_keycode) { 105 switch (temp_keycode) {
104#ifdef RGBLIGHT_TWINKLE 106# ifdef RGBLIGHT_TWINKLE
105 case KC_A ... KC_SLASH: 107 case KC_A ... KC_SLASH:
106 case KC_F1 ... KC_F12: 108 case KC_F1 ... KC_F12:
107 case KC_INSERT ... KC_UP: 109 case KC_INSERT ... KC_UP:
@@ -112,20 +114,20 @@ bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) {
112 start_rgb_light(); 114 start_rgb_light();
113 } 115 }
114 break; 116 break;
115#endif // RGBLIGHT_TWINKLE 117# endif // RGBLIGHT_TWINKLE
116 } 118 }
117 return true; 119 return true;
118} 120}
119 121
120#if defined(RGBLIGHT_STARTUP_ANIMATION) 122# if defined(RGBLIGHT_STARTUP_ANIMATION)
121static bool is_enabled; 123static bool is_enabled;
122static bool is_rgblight_startup; 124static bool is_rgblight_startup;
123static uint8_t old_hue; 125static uint8_t old_hue;
124static uint16_t rgblight_startup_loop_timer; 126static uint16_t rgblight_startup_loop_timer;
125#endif 127# endif
126 128
127void keyboard_post_init_rgb_light(void) { 129void keyboard_post_init_rgb_light(void) {
128#if defined(RGBLIGHT_STARTUP_ANIMATION) 130# if defined(RGBLIGHT_STARTUP_ANIMATION)
129 is_enabled = rgblight_is_enabled(); 131 is_enabled = rgblight_is_enabled();
130 if (userspace_config.rgb_layer_change) { 132 if (userspace_config.rgb_layer_change) {
131 rgblight_enable_noeeprom(); 133 rgblight_enable_noeeprom();
@@ -136,7 +138,7 @@ void keyboard_post_init_rgb_light(void) {
136 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); 138 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
137 is_rgblight_startup = true; 139 is_rgblight_startup = true;
138 } 140 }
139#endif 141# endif
140 layer_state_set_rgb_light(layer_state); 142 layer_state_set_rgb_light(layer_state);
141} 143}
142 144
@@ -145,7 +147,7 @@ void matrix_scan_rgb_light(void) {
145 scan_rgblight_fadeout(); 147 scan_rgblight_fadeout();
146# endif // RGBLIGHT_ENABLE 148# endif // RGBLIGHT_ENABLE
147 149
148#if defined(RGBLIGHT_STARTUP_ANIMATION) 150# if defined(RGBLIGHT_STARTUP_ANIMATION)
149 if (is_rgblight_startup && is_keyboard_master()) { 151 if (is_rgblight_startup && is_keyboard_master()) {
150 if (timer_elapsed(rgblight_startup_loop_timer) > 10) { 152 if (timer_elapsed(rgblight_startup_loop_timer) > 10) {
151 static uint8_t counter; 153 static uint8_t counter;
@@ -163,7 +165,7 @@ void matrix_scan_rgb_light(void) {
163 } 165 }
164 } 166 }
165 } 167 }
166#endif 168# endif
167} 169}
168 170
169void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) { 171void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode) {
@@ -173,16 +175,16 @@ void rgblight_set_hsv_and_mode(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mo
173} 175}
174 176
175layer_state_t layer_state_set_rgb_light(layer_state_t state) { 177layer_state_t layer_state_set_rgb_light(layer_state_t state) {
176#ifdef RGBLIGHT_ENABLE 178# ifdef RGBLIGHT_ENABLE
177 if (userspace_config.rgb_layer_change) { 179 if (userspace_config.rgb_layer_change) {
178 uint8_t mode = layer_state_cmp(state,_MODS) ? RGBLIGHT_MODE_BREATHING : RGBLIGHT_MODE_STATIC_LIGHT; 180 uint8_t mode = layer_state_cmp(state, _MODS) ? RGBLIGHT_MODE_BREATHING : RGBLIGHT_MODE_STATIC_LIGHT;
179 switch (get_highest_layer(state|default_layer_state)) { 181 switch (get_highest_layer(state | default_layer_state)) {
180 case _MACROS: 182 case _MACROS:
181# ifdef RGBLIGHT_EFFECT_TWINKLE 183# ifdef RGBLIGHT_EFFECT_TWINKLE
182 rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_TWINKLE + 5); 184 rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_TWINKLE + 5);
183# else 185# else
184 rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_BREATHING + 3); 186 rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_BREATHING + 3);
185# endif 187# endif
186 break; 188 break;
187 case _MEDIA: 189 case _MEDIA:
188 rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_KNIGHT + 1); 190 rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_KNIGHT + 1);
@@ -228,7 +230,9 @@ layer_state_t layer_state_set_rgb_light(layer_state_t state) {
228 break; 230 break;
229 } 231 }
230 } 232 }
231#endif // RGBLIGHT_ENABLE 233# endif // RGBLIGHT_ENABLE
232 234
233 return state; 235 return state;
234} 236}
237
238#endif
diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk
index b7523a436..2ae01c62e 100644
--- a/users/drashna/rules.mk
+++ b/users/drashna/rules.mk
@@ -66,3 +66,27 @@ ifeq ($(strip $(PIMORONI_TRACKBALL_ENABLE)), yes)
66 SRC += pimoroni_trackball.c 66 SRC += pimoroni_trackball.c
67 QUANTUM_LIB_SRC += i2c_master.c 67 QUANTUM_LIB_SRC += i2c_master.c
68endif 68endif
69
70
71ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
72 ifneq ($(strip $(SPLIT_TRANSPORT)), custom)
73 SPLIT_TRANSPORT = custom
74 QUANTUM_LIB_SRC += drashna_transport.c
75 OPT_DEFS += -DDRASHNA_CUSTOM_TRANSPORT
76 # Unused functions are pruned away, which is why we can add multiple drivers here without bloat.
77 ifeq ($(PLATFORM),AVR)
78 ifneq ($(NO_I2C),yes)
79 QUANTUM_LIB_SRC += i2c_master.c \
80 i2c_slave.c
81 endif
82 endif
83
84 SERIAL_DRIVER ?= bitbang
85 OPT_DEFS += -DSERIAL_DRIVER_$(strip $(shell echo $(SERIAL_DRIVER) | tr '[:lower:]' '[:upper:]'))
86 ifeq ($(strip $(SERIAL_DRIVER)), bitbang)
87 QUANTUM_LIB_SRC += serial.c
88 else
89 QUANTUM_LIB_SRC += serial_$(strip $(SERIAL_DRIVER)).c
90 endif
91 endif
92endif
diff --git a/users/drashna/wrappers.h b/users/drashna/wrappers.h
index d135f44af..be8162dfa 100644
--- a/users/drashna/wrappers.h
+++ b/users/drashna/wrappers.h
@@ -21,19 +21,6 @@ Since our quirky block definitions are basically a list of comma separated
21arguments, we need a wrapper in order for these definitions to be 21arguments, we need a wrapper in order for these definitions to be
22expanded before being used as arguments to the LAYOUT_xxx macro. 22expanded before being used as arguments to the LAYOUT_xxx macro.
23*/ 23*/
24#if (!defined(LAYOUT) && defined(KEYMAP))
25# define LAYOUT KEYMAP
26#endif
27
28// clang-format off
29#define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__)
30#define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
31#define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__)
32#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
33#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__)
34#define LAYOUT_ortho_5x12_wrapper(...) LAYOUT_ortho_5x12(__VA_ARGS__)
35#define LAYOUT_gergo_wrapper(...) LAYOUT_gergo(__VA_ARGS__)
36#define LAYOUT_split_3x6_3_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__)
37 24
38/* 25/*
39Blocks for each of the four major keyboard layouts 26Blocks for each of the four major keyboard layouts
@@ -46,14 +33,14 @@ NOTE: These are all the same length. If you do a search/replace
46 then you need to add/remove underscores to keep the 33 then you need to add/remove underscores to keep the
47 lengths consistent. 34 lengths consistent.
48*/ 35*/
36// clang-format off
37#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T
38#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G
39#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B
49 40
50#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T 41#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P
51#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G 42#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT
52#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B 43#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
53
54#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P
55#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN
56#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH
57 44
58 45
59#define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G 46#define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G
@@ -61,15 +48,15 @@ NOTE: These are all the same length. If you do a search/replace
61#define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B 48#define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B
62 49
63#define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN 50#define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
64#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O 51#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT
65#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH 52#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
66 53
67#define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B 54#define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B
68#define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G 55#define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G
69#define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V 56#define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V
70 57
71#define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN 58#define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
72#define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O 59#define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT
73#define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH 60#define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH
74 61
75 62
@@ -78,7 +65,7 @@ NOTE: These are all the same length. If you do a search/replace
78#define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X 65#define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
79 66
80#define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L 67#define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L
81#define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S 68#define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH
82#define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z 69#define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z
83 70
84 71
@@ -87,88 +74,106 @@ NOTE: These are all the same length. If you do a search/replace
87#define ________________DVORAK_AU_L3_______________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X 74#define ________________DVORAK_AU_L3_______________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
88 75
89#define ________________DVORAK_AU_R1_______________ KC_F, KC_G, KC_C, KC_R, KC_L 76#define ________________DVORAK_AU_R1_______________ KC_F, KC_G, KC_C, KC_R, KC_L
90#define ________________DVORAK_AU_R2_______________ KC_D, KC_H, KC_T, KC_N, KC_S 77#define ________________DVORAK_AU_R2_______________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH
91#define ________________DVORAK_AU_R3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z 78#define ________________DVORAK_AU_R3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z
92 79
93#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B 80#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B
94#define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G 81#define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G
95#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V 82#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V
83
84#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN
85#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT
86#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH
87
96 88
97#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN 89#define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K
98#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I 90#define _________________NORMAN_L2_________________ KC_A, KC_S, KC_E, KC_T, KC_G
99#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH 91#define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B
100 92
93#define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN
94#define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, KC_U, KC_QUOT
95#define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH
101 96
102#define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K
103#define _________________NORMAN_L2_________________ KC_A, KC_S, KC_E, KC_T, KC_G
104#define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B
105 97
106#define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN 98#define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B
107#define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, KC_U 99#define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F
108#define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLASH 100#define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM
109 101
102#define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L
103#define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R, KC_QUOT
104#define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X
110 105
111#define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B
112#define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F
113#define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM
114 106
115#define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L 107#define _________________EUCALYN_L1________________ KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN
116#define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R 108#define _________________EUCALYN_L2________________ KC_A, KC_O, KC_E, KC_I, KC_U
117#define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X 109#define _________________EUCALYN_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_F
118 110
111#define _________________EUCALYN_R1________________ KC_M, KC_R, KC_D, KC_Y, KC_P
112#define _________________EUCALYN_R2________________ KC_G, KC_T, KC_K, KC_S, KC_N, KC_QUOT
113#define _________________EUCALYN_R3________________ KC_B, KC_H, KC_J, KC_L, KC_SLSH
119 114
120#define _________________EUCALYN_L1________________ KC_SLSH, KC_COMM, KC_DOT, KC_F, KC_Q 115// Qwerty-like
121#define _________________EUCALYN_L2________________ KC_A, KC_O, KC_E, KC_I, KC_U 116#define _____________CARPLAX_QFMLWY_L1_____________ KC_Q, KC_F, KC_M, KC_L, KC_W
122#define _________________EUCALYN_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_W 117#define _____________CARPLAX_QFMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R
118#define _____________CARPLAX_QFMLWY_L3_____________ KC_Z, KC_V, KC_G, KC_C, KC_X
123 119
124#define _________________EUCALYN_R1________________ KC_M, KC_R, KC_D, KC_Y, KC_P 120#define _____________CARPLAX_QFMLWY_R1_____________ KC_Y, KC_U, KC_O, KC_B, KC_J
125#define _________________EUCALYN_R2________________ KC_G, KC_T, KC_K, KC_S, KC_N 121#define _____________CARPLAX_QFMLWY_R2_____________ KC_I, KC_A, KC_E, KC_H, KC_SCLN, KC_QUOT
126#define _________________EUCALYN_R3________________ KC_B, KC_H, KC_J, KC_L, KC_SCLN 122#define _____________CARPLAX_QFMLWY_R3_____________ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH
127 123
124// Colemak like
125#define _____________CARPLAX_QGMLWB_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W
126#define _____________CARPLAX_QGMLWB_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R
127#define _____________CARPLAX_QGMLWB_L3_____________ KC_Z, KC_X, KC_C, KC_F, KC_J
128 128
129#define _____________CARPLAX_QFMLWY_L1_____________ KC_Q, KC_F, KC_M, KC_L, KC_W 129#define _____________CARPLAX_QGMLWB_R1_____________ KC_B, KC_Y, KC_U, KC_V, KC_SCLN
130#define _____________CARPLAX_QFMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R 130#define _____________CARPLAX_QGMLWB_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT
131#define _____________CARPLAX_QFMLWY_L3_____________ KC_Z, KC_V, KC_G, KC_C, KC_X 131#define _____________CARPLAX_QGMLWB_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
132 132
133#define _____________CARPLAX_QFMLWY_R1_____________ KC_Y, KC_U, KC_O, KC_B, KC_J 133// colemak like, zxcv fixed
134#define _____________CARPLAX_QFMLWY_R2_____________ KC_I, KC_A, KC_E, KC_H, KC_SCLN 134#define _____________CARPLAX_QGMLWY_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W
135#define _____________CARPLAX_QFMLWY_R3_____________ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH 135#define _____________CARPLAX_QGMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R
136#define _____________CARPLAX_QGMLWY_L3_____________ KC_Z, KC_X, KC_C, KC_V, KC_J
136 137
138#define _____________CARPLAX_QGMLWY_R1_____________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN
139#define _____________CARPLAX_QGMLWY_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT
140#define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH
137 141
138#define _____________CARPLAX_QGMLWB_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W 142// teeheehee
139#define _____________CARPLAX_QGMLWB_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R 143#define _____________CARPLAX_TNWCLR_L1_____________ KC_T, KC_N, KC_W, KC_C, KC_L
140#define _____________CARPLAX_QGMLWB_L3_____________ KC_Z, KC_X, KC_C, KC_F, KC_J 144#define _____________CARPLAX_TNWCLR_L2_____________ KC_S, KC_K, KC_J, KC_X, KC_G
145#define _____________CARPLAX_TNWCLR_L3_____________ KC_E, KC_O, KC_D, KC_I, KC_A
141 146
142#define _____________CARPLAX_QGMLWB_R1_____________ KC_B, KC_Y, KC_U, KC_V, KC_SCLN 147#define _____________CARPLAX_TNWCLR_R1_____________ KC_R, KC_B, KC_F, KC_M, KC_H
143#define _____________CARPLAX_QGMLWB_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H 148#define _____________CARPLAX_TNWCLR_R2_____________ KC_P, KC_Q, KC_Z, KC_V, KC_SCLN, KC_QUOT
144#define _____________CARPLAX_QGMLWB_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH 149#define _____________CARPLAX_TNWCLR_R3_____________ KC_U, KC_Y, KC_COMM, KC_DOT, KC_SLSH
145 150
146 151
147#define _____________CARPLAX_QGMLWY_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W 152#define _________________WHITE_R1__________________ KC_V, KC_Y, KC_D, KC_COMM, KC_QUOT
148#define _____________CARPLAX_QGMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R 153#define _________________WHITE_R2__________________ KC_A, KC_T, KC_H, KC_E, KC_B
149#define _____________CARPLAX_QGMLWY_L3_____________ KC_Z, KC_X, KC_C, KC_V, KC_J 154#define _________________WHITE_R3__________________ KC_P, KC_K, KC_G, KC_W, KC_Q
150 155
151#define _____________CARPLAX_QGMLWY_R1_____________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN 156#define _________________WHITE_L1__________________ KC_INT1, KC_J, KC_M, KC_L, KC_U
152#define _____________CARPLAX_QGMLWY_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H 157#define _________________WHITE_L2__________________ KC_MINS, KC_C, KC_S, KC_N, KC_O, KC_I
153#define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH 158#define _________________WHITE_L3__________________ KC_X, KC_R, KC_F, KC_DOT, KC_Z
154 159
155 160
156#define _________________WHITE_R1__________________ KC_V, KC_Y, KC_D, KC_COMM, KC_QUOT 161#define _________________HALMAK_L1_________________ KC_W, KC_L, KC_R, KC_B, KC_Z
157#define _________________WHITE_R2__________________ KC_A, KC_T, KC_H, KC_E, KC_B 162#define _________________HALMAK_L2_________________ KC_S, KC_H, KC_N, KC_T, KC_COMM
158#define _________________WHITE_R3__________________ KC_P, KC_K, KC_G, KC_W, KC_Q 163#define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH
159 164
160#define _________________WHITE_L1__________________ KC_INT1, KC_J, KC_M, KC_L, KC_U 165#define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J
161#define _________________WHITE_L2__________________ KC_MINS, KC_C, KC_S, KC_N, KC_O // KC_I 166#define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I, KC_QUOTE
162#define _________________WHITE_L3__________________ KC_X, KC_R, KC_F, KC_DOT, KC_Z 167#define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y
163 168
164 169
165#define _________________HALMAK_L1_________________ KC_W, KC_L, KC_R, KC_B, KC_Z 170#define _________________HALMAK_L1_________________ KC_W, KC_L, KC_R, KC_B, KC_Z
166#define _________________HALMAK_L2_________________ KC_S, KC_H, KC_N, KC_T, KC_COMM 171#define _________________HALMAK_L2_________________ KC_S, KC_H, KC_N, KC_T, KC_COMM
167#define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH 172#define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH
168 173
169#define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J 174#define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J
170#define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I 175#define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I, KC_QUOTE
171#define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y 176#define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y
172 177
173 178
174#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5 179#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5
@@ -185,7 +190,7 @@ NOTE: These are all the same length. If you do a search/replace
185 190
186#define _________________LOWER_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN 191#define _________________LOWER_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
187#define _________________LOWER_R2__________________ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR 192#define _________________LOWER_R2__________________ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR
188#define _________________LOWER_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT 193#define _________________LOWER_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
189 194
190 195
191 196
@@ -195,7 +200,7 @@ NOTE: These are all the same length. If you do a search/replace
195 200
196#define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________ 201#define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________
197#define _________________RAISE_R2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC 202#define _________________RAISE_R2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC
198#define _________________RAISE_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END 203#define _________________RAISE_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
199 204
200 205
201 206