[Keymap] Drashna Updates - Split+OLED edition (#11968)
44 files changed, 2513 insertions(+), 753 deletions(-) M keyboards/c39/keymaps/drashna/keymap.c M keyboards/gergo/keymaps/drashna/keymap.c M keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.c M keyboards/handwired/dactyl_manuform/5x6_right_trackball/config.h M keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/config.h M keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/keymap.c M keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/rules.mk M keyboards/handwired/dactyl_manuform/5x6_right_trackball/pointer_transport.c M keyboards/handwired/dactyl_manuform/5x6_right_trackball/rules.mk M keyboards/keebio/iris/keymaps/drashna/keymap.c M keyboards/keebio/viterbi/keymaps/drashna/keymap.c M keyboards/kyria/keymaps/drashna/config.h M keyboards/kyria/keymaps/drashna/keymap.c M keyboards/kyria/keymaps/drashna/rules.mk M keyboards/moonlander/keymaps/drashna/keymap.c M keyboards/orthodox/keymaps/drashna/keymap.c A keyboards/splitkb/zima/keymaps/drashna/config.h A keyboards/splitkb/zima/keymaps/drashna/keymap.c A keyboards/splitkb/zima/keymaps/drashna/readme.md A keyboards/splitkb/zima/keymaps/drashna/rules.mk M layouts/community/ergodox/drashna/keymap.c M layouts/community/ortho_4x12/drashna/keymap.c M layouts/community/ortho_5x12/drashna/keymap.c M layouts/community/ortho_5x12/drashna/rules.mk A layouts/community/split_3x6_3/drashna/chconf.h M layouts/community/split_3x6_3/drashna/config.h M layouts/community/split_3x6_3/drashna/keymap.c M layouts/community/split_3x6_3/drashna/mcuconf.h M layouts/community/split_3x6_3/drashna/rules.mk M users/drashna/config.h M users/drashna/drashna.c M users/drashna/drashna.h A users/drashna/drashna_font.h A users/drashna/drashna_transport.c D users/drashna/font_gmk_bad.h D users/drashna/hue_manitee_font.h M users/drashna/oled_stuff.c M users/drashna/oled_stuff.h M users/drashna/pimoroni_trackball.h M users/drashna/process_records.c M users/drashna/process_records.h M users/drashna/rgb_stuff.c M users/drashna/rules.mk M users/drashna/wrappers.h
M keyboards/c39/keymaps/drashna/keymap.c => keyboards/c39/keymaps/drashna/keymap.c +3 -2
@@ 24,14 24,15 @@ * of use. K## is a placeholder to pass through the individual keycodes */ // clang-format off #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) #define LAYOUT_base( \ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ ) \ LAYOUT_wrapper( \ KC_ESC, K01, K02, K03, K04, K05, KC_NO, K06, K07, K08, K09, K0A, KC_DEL, \ ALT_T(KC_TAB), K11, K12, K13, K14, K15, KC_BSPC, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ ALT_T(KC_TAB), K11, K12, K13, K14, K15, KC_BSPC, K16, K17, K18, K19, K1A, RALT_T(K1B), \ KC_MLSF, CTL_T(K21), K22, K23, K24, LT(_LOWER,K25), KC_SPC, LT(_RAISE,K26), K27, K28, K29, RCTL_T(K2A), KC_ENT \ ) #define LAYOUT_base_wrapper(...) LAYOUT_base(__VA_ARGS__)
M keyboards/gergo/keymaps/drashna/keymap.c => keyboards/gergo/keymaps/drashna/keymap.c +3 -2
@@ 24,14 24,15 @@ * of use. K## is a placeholder to pass through the individual keycodes */ // clang-format off #define LAYOUT_gergo_wrapper(...) LAYOUT_gergo(__VA_ARGS__) #define LAYOUT_gergo_base( \ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ ) \ LAYOUT_gergo_wrapper( \ KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_PIPE, \ LALT_T(KC_TAB), K11, K12, K13, K14, K15, _______, _______, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ LALT_T(KC_TAB), K11, K12, K13, K14, K15, _______, _______, K16, K17, K18, K19, K1A, RALT_T(K1B), \ OS_LSFT, CTL_T(K21), K22, K23, K24, K25, _______, _______, _______, _______, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ KC_GRV, KC_SPC, BK_LWER, OS_LALT, OS_RGUI, DL_RAIS, KC_ENT, _______ \ )
M keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.c => keyboards/handwired/dactyl_manuform/5x6_right_trackball/5x6_right_trackball.c +5 -1
@@ 85,7 85,11 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) { #ifdef POINTING_DEVICE_ENABLE if (keycode == DPI_CONFIG && record->event.pressed) { keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE; if ((get_mods()|get_oneshot_mods()) & MOD_MASK_SHIFT) { keyboard_config.dpi_config = (keyboard_config.dpi_config - 1) % DPI_OPTION_SIZE; } else { keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE; } eeconfig_update_kb(keyboard_config.raw); trackball_set_cpi(dpi_array[keyboard_config.dpi_config]); }
M keyboards/handwired/dactyl_manuform/5x6_right_trackball/config.h => keyboards/handwired/dactyl_manuform/5x6_right_trackball/config.h +1 -0
@@ 62,6 62,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #define BOOTMAGIC_LITE_COLUMN_RIGHT 5 #define C6_AUDIO #define B7_AUDIO #define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095 #define DYNAMIC_KEYMAP_LAYER_COUNT 16
M keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/config.h => keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/config.h +3 -4
@@ 18,9 18,10 @@ // #define USE_I2C #define SELECT_SOFT_SERIAL_SPEED 0 #define SERIAL_USE_MULTI_TRANSACTION // #define SERIAL_USE_MULTI_TRANSACTION #define SPLIT_MODS_ENABLE #define EE_HANDS #define TRACKBALL_DPI_OPTIONS \ { 1200, 1800, 2600, 3400 } @@ 35,8 36,6 @@ #define SOLENOID_DEFAULT_DWELL 8 #define OLED_DISPLAY_128X64 #define OLED_TIMEOUT 0 #define OLED_BRIGHTNESS 100 #define SPLIT_MODS_ENABLE #define MK_KINETIC_SPEED
M keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/keymap.c => keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/keymap.c +49 -17
@@ 16,24 16,21 @@ #include "drashna.h" #define TG_DBLO TG(_DIABLO) // clang-format off #define LAYOUT_5x6_right_trackball_wrapper(...) LAYOUT_5x6_right_trackball(__VA_ARGS__) #define LAYOUT_5x6_right_trackball_base( \ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ ) \ LAYOUT_5x6_right_trackball_wrapper( \ KC_GRV, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \ KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSLS, \ LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \ SH_TT, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, SH_TT, \ LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ OS_LALT, OS_LGUI, TG_GAME, TG_DBLO, \ OS_LGUI, KC_GRV, OS_RGUI, \ KC_SPC, _______, KC_ENT, \ KC_SPC, TT(_MOUSE), KC_ENT, \ BK_LWER, MO(_MOUSE), MO(_MOUSE), DL_RAIS \ ) @@ #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] = { _______, _______, KC_NUKE, _______ ), }; // clang-format off // clang-format on #ifdef POINTING_DEVICE_ENABLE static uint16_t mouse_timer = 0; static uint16_t mouse_debounce_timer = 0; static uint16_t mouse_timer = 0; static uint16_t mouse_debounce_timer = 0; static uint8_t mouse_keycode_tracker = 0; bool tap_toggling = false; void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) { @@ 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) { layer_on(_MOUSE); } } if (timer_elapsed(mouse_debounce_timer) > 125 || layer_state_is(_GAMEPAD) ) { # ifdef TAPPING_TERM_PER_KEY if (timer_elapsed(mouse_debounce_timer) > get_tapping_term(KC_BTN1, NULL) # else if (timer_elapsed(mouse_debounce_timer) > TAPPING_TERM # endif || layer_state_is(_GAMEPAD)) { mouse_report->x = x; mouse_report->y = y; } # ifdef OLED_DRIVER_ENABLE if (x || y) oled_timer = timer_read32(); # endif } void matrix_scan_keymap(void) { if (timer_elapsed(mouse_timer) > 650 && layer_state_is(_MOUSE) && !mouse_keycode_tracker) { if (timer_elapsed(mouse_timer) > 650 && layer_state_is(_MOUSE) && !mouse_keycode_tracker && !tap_toggling) { layer_off(_MOUSE); } if (tap_toggling) { if (!layer_state_is(_MOUSE)) { layer_on(_MOUSE); } } } bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { switch(keycode){ bool process_record_keymap(uint16_t keycode, keyrecord_t* record) { switch (keycode) { case TT(_MOUSE): { if (record->event.pressed) { mouse_keycode_tracker++; } else { # if TAPPING_TOGGLE != 0 if (record->tap.count == TAPPING_TOGGLE) { tap_toggling ^= 1; # if TAPPING_TOGGLE == 1 if (!tap_toggling) mouse_keycode_tracker -= record->tap.count + 1; # else if (!tap_toggling) mouse_keycode_tracker -= record->tap.count; # endif } else { mouse_keycode_tracker--; } # endif } mouse_timer = timer_read(); break; } case MO(_MOUSE): case DPI_CONFIG: case KC_MS_UP...KC_MS_WH_RIGHT: case KC_MS_UP ... KC_MS_WH_RIGHT: record->event.pressed ? mouse_keycode_tracker++ : mouse_keycode_tracker--; mouse_timer = timer_read(); break; default: if (layer_state_is(_MOUSE) && !mouse_keycode_tracker) { layer_off(_MOUSE); mouse_keycode_tracker = 0; } mouse_debounce_timer = timer_read(); break;
M keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/rules.mk => keyboards/handwired/dactyl_manuform/5x6_right_trackball/keymaps/drashna/rules.mk +1 -1
@@ 5,5 5,5 @@ AUDIO_ENABLE = yes TAP_DANCE_ENABLE = yes UNICODE_ENABLE = yes OLED_DRIVER_ENABLE = yes WPM_ENABLE = yes # DEBOUNCE_TYPE = sym_eager_pk
M keyboards/handwired/dactyl_manuform/5x6_right_trackball/pointer_transport.c => keyboards/handwired/dactyl_manuform/5x6_right_trackball/pointer_transport.c +41 -16
@@ 77,7 77,8 @@ typedef struct _I2C_slave_buffer_t { bool oled_on; layer_state_t t_layer_state; layer_state_t t_default_layer_state; } I2C_slave_buffer_t; bool is_rgb_matrix_suspended; } __attribute__((packed)) I2C_slave_buffer_t; static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_reg; @@ 93,9 94,10 @@ static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_re # define I2C_MOUSE_X_START offsetof(I2C_slave_buffer_t, mouse_x) # define I2C_MOUSE_Y_START offsetof(I2C_slave_buffer_t, mouse_y) # define I2C_MOUSE_DPI_START offsetof(I2C_slave_buffer_t, device_cpi) # define I2C_OLED_ON_START offsetof(I2C_slave_buffent, oled_on) # define I2C_LAYER_STATE_START offsetof(I2C_slave_buffent, t_layer_state) # define I2C_DEFAULT_LAYER_STATE_START offsetof(I2C_slave_buffent, t_default_layer_state) # define I2C_OLED_ON_START offsetof(I2C_slave_buffer_t, oled_on) # define I2C_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_layer_state) # define I2C_DEFAULT_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_default_layer_state) # define I2C_RGB_MATRIX_SUSPEND_START offsetof(I2C_slave_buffer_t, is_rgb_matrix_suspended) # define TIMEOUT 100 @@ 196,9 198,19 @@ bool transport_master(matrix_row_t matrix[]) { } # ifdef OLED_DRIVER_ENABLE if (is_oled_on() != i2c_buffer->oled_on) { if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&is_oled_on(), sizeof(bool), TIMEOUT) >= 0) { i2c_buffer->oled_on = is_oled_on(); bool is_oled_on = is_oled_on(); if (is_oled_on != i2c_buffer->oled_on) { if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&is_oled_on, sizeof(is_oled_on), TIMEOUT) >= 0) { i2c_buffer->oled_on = is_oled_on; } } # endif # ifdef RGB_MATRIX_ENABLE bool sus_state = rgb_matrix_get_suspend_state(); if (sus_state != i2c_buffer->is_rgb_matrix_suspended) { if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_MATRIX_SUSPEND_START, (void *)&sus_state, sizeof(sus_state), TIMEOUT) >= 0) { i2c_buffer->is_rgb_matrix_suspended = sus_state; } } @@ # endif 255,10 267,10 @@ void transport_slave(matrix_row_t matrix[]) { # endif if (layer_state != i2c_buffer->t_layer_state) { layer_state_set(i2c_buffer->t_layer_state); layer_state = i2c_buffer->t_layer_state; } if (default_layer_state != i2c_buffer->t_default_layer_state) { default_layer_state_set(i2c_buffer->t_default_layer_state); default_layer_state = i2c_buffer->t_default_layer_state; } @@ # ifdef OLED_DRIVER_ENABLE 268,6 280,10 @@ void transport_slave(matrix_row_t matrix[]) { oled_off(); } # endif # ifdef RGB_MATRIX_ENABLE rgb_matrix_set_suspend_state(i2c_buffer->is_rgb_matrix_suspended); # endif } @@ void transport_master_init(void) { i2c_init(); } 286,7 302,7 @@ typedef struct _Serial_s2m_buffer_t { # endif int8_t mouse_x; int8_t mouse_y; } Serial_s2m_buffer_t; } __attribute__((packed)) Serial_s2m_buffer_t; typedef struct _Serial_m2s_buffer_t { @@ # ifdef SPLIT_MODS_ENABLE 309,7 325,8 @@ typedef struct _Serial_m2s_buffer_t { bool oled_on; layer_state_t t_layer_state; layer_state_t t_default_layer_state; } Serial_m2s_buffer_t; bool is_rgb_matrix_suspended; } __attribute__((packed)) Serial_m2s_buffer_t; # if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) @@ // When MCUs on both sides drive their respective RGB LED chains, 434,10 451,14 @@ bool transport_master(matrix_row_t matrix[]) { } # endif serial_m2s_buffer.t_layer_state = layer_state; serial_m2s_buffer.t_default_layer_state = default_layer_state; serial_m2s_buffer.t_layer_state = layer_state; serial_m2s_buffer.t_default_layer_state = default_layer_state; # ifdef OLED_DRIVER_ENABLE serial_m2s_buffer.oled_on = is_oled_on(); serial_m2s_buffer.oled_on = is_oled_on(); # endif # ifdef RGB_MATRIX_ENABLE serial_m2s_buffer.is_rgb_matrix_suspended = rgb_matrix_get_suspend_state(); # endif @@ return true; 484,10 505,10 @@ void transport_slave(matrix_row_t matrix[]) { # endif if (layer_state != serial_m2s_buffer.t_layer_state) { layer_state_set(serial_m2s_buffer.t_layer_state); layer_state = serial_m2s_buffer.t_layer_state; } if (default_layer_state != serial_m2s_buffer.t_default_layer_state) { default_layer_set(serial_m2s_buffer.t_default_layer_state); default_layer_state = serial_m2s_buffer.t_default_layer_state; } # ifdef OLED_DRIVER_ENABLE @@ if (serial_m2s_buffer.oled_on) { 496,6 517,10 @@ void transport_slave(matrix_row_t matrix[]) { oled_off(); } # endif # ifdef RGB_MATRIX_ENABLE rgb_matrix_set_suspend_state(serial_m2s_buffer.is_rgb_matrix_suspended); # endif } #endif
M keyboards/handwired/dactyl_manuform/5x6_right_trackball/rules.mk => keyboards/handwired/dactyl_manuform/5x6_right_trackball/rules.mk +2 -2
@@ 26,5 26,5 @@ POINTING_DEVICE_ENABLE = yes SPLIT_KEYBOARD = yes SPLIT_TRANSPORT = custom SRC += pointer_transport.c pmw3360.c QUANTUM_LIB_SRC += serial.c i2c_master.c i2c_slave.c spi_master.c SRC += pmw3360.c QUANTUM_LIB_SRC += pointer_transport.c serial.c i2c_master.c i2c_slave.c spi_master.c
M keyboards/keebio/iris/keymaps/drashna/keymap.c => keyboards/keebio/iris/keymaps/drashna/keymap.c +3 -2
@@ 25,15 25,16 @@ */ // clang-format off #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) #define LAYOUT_iris_base( \ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ ) \ LAYOUT_wrapper( \ KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \ LALT_T(KC_TAB), K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSLS, \ KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ OS_LSFT, CTL_T(K21), K22, K23, K24, K25, OS_LALT, OS_RGUI, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ KC_GRV, KC_SPC, LT(_LOWER,KC_BSPC), LT(_RAISE,KC_DEL), KC_ENT, RAISE \ )
M keyboards/keebio/viterbi/keymaps/drashna/keymap.c => keyboards/keebio/viterbi/keymaps/drashna/keymap.c +8 -10
@@ 17,9 17,7 @@ #include "drashna.h" // Fillers to make layering more clear #define DIABLO TG(_DIABLO) #define GAMEPAD TG(_GAMEPAD) #define MEDIA TT(_MEDIA) #define TT_MDIA TT(_MEDIA) // enum more_custom_keycodes { @@ // KC_P00 = NEW_SAFE_RANGE 29,15 27,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NUMLOCK] = LAYOUT_ortho_5x7( KC_NO, DIABLO, GAMEPAD, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS, MEDIA, KC_CALC, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PAST, KC_NO, TG_DBLO, TG_GAME, KC_NLCK, KC_SLCK, KC_COLN, KC_PSLS, TT_MDIA, KC_CALC, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PAST, KC_HOME, KC_DEL, KC_PGUP, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_END, KC_UP, KC_PGDN, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_COLN, KC_PENT ), [_DIABLO] = LAYOUT_ortho_5x7( KC_ESC, DIABLO, KC_V, KC_D, XXXXXXX, XXXXXXX, KC_L, KC_ESC, _______, KC_V, KC_D, XXXXXXX, XXXXXXX, KC_L, KC_TAB, KC_S, KC_F, KC_I, KC_M, KC_T, KC_J, KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_F, @@ 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] = { ), [_GAMEPAD] = LAYOUT_ortho_5x7( // Game pad layout designed primarily for Overwatch KC_NO, KC_ESC, GAMEPAD, KC_1, KC_2, KC_3, KC_4, MEDIA, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_ESC, _______, KC_1, KC_2, KC_3, KC_4, TT_MDIA, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_Y, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_F1, KC_U, KC_I, KC_Y, KC_V, KC_SPC, KC_V ), [_MEDIA] = LAYOUT_ortho_5x7( KC_MAKE, KC_RESET,MU_TOG, AU_ON, AU_OFF, CK_TOGG, RGB_SAD, MEDIA, EEP_RST, KC_RGB_T,RGB_M_P, RGB_M_B, RGB_M_R, RGB_SAI, KC_MAKE, RESET, MU_TOG, AU_ON, AU_OFF, CK_TOGG, RGB_SAD, _______, EEP_RST, KC_RGB_T,RGB_M_P, RGB_M_B, RGB_M_R, RGB_SAI, RGB_TOG, RGB_MOD, RGB_RMOD,RGB_M_SW,RGB_M_SN,RGB_M_K, RGB_HUD, KC_MPLY, KC_MPRV, KC_MNXT, RGB_M_X, RGB_M_G, RGB_M_P, RGB_HUI, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI
M keyboards/kyria/keymaps/drashna/config.h => keyboards/kyria/keymaps/drashna/config.h +0 -2
@@ 20,8 20,6 @@ #ifdef OLED_DRIVER_ENABLE # define OLED_DISPLAY_128X64 # define OLED_FONT_H "font_gmk_bad.h" # define OLED_DISABLE_TIMEOUT # define OLED_SCROLL_TIMEOUT_RIGHT 60000 #endif
M keyboards/kyria/keymaps/drashna/keymap.c => keyboards/kyria/keymaps/drashna/keymap.c +5 -4
@@ 31,15 31,16 @@ uint8_t is_master; */ // clang-format off #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) #define LAYOUT_kyria_base( \ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ ) \ LAYOUT_wrapper( \ KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \ LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ 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, \ LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ 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, \ KC_MUTE, OS_LALT, KC_GRV, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI, UC(0x03A8), UC(0x2E2E) \ ) @@ /* Re-pass though to allow templates to be used */ 112,7 113,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_DIABLO] = LAYOUT_wrapper( KC_ESC, KC_S, KC_I, KC_F, KC_M, KC_T, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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, 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, 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 ), [_LOWER] = LAYOUT_wrapper(
M keyboards/kyria/keymaps/drashna/rules.mk => keyboards/kyria/keymaps/drashna/rules.mk +1 -1
@@ 1,7 1,7 @@ OLED_DRIVER_ENABLE = yes # Enables the use of OLED displays ENCODER_ENABLE = yes # ENables the use of one or more encoders RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow RGBLIGHT_STARTUP_ANIMATION = yes RGBLIGHT_STARTUP_ANIMATION = no BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration MOUSEKEY_ENABLE = no # Mouse keys
M keyboards/moonlander/keymaps/drashna/keymap.c => keyboards/moonlander/keymaps/drashna/keymap.c +4 -4
@@ 27,13 27,13 @@ enum more_custom_keycodes { KC_SWAP_NUM = NEW_SAFE_RANGE }; #define LAYOUT_moonlander_base( \ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ ) \ LAYOUT_moonlander_wrapper( \ KC_ESC, ________________NUMBER_LEFT________________, UC_FLIP, UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, \ KC_TAB, K01, K02, K03, K04, K05, TG(_DIABLO),TG(_DIABLO), K06, K07, K08, K09, K0A, KC_BSLS, \ KC_C1R3, K11, K12, K13, K14, K15, TG(_GAMEPAD),TG(_GAMEPAD), K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ KC_TAB, K01, K02, K03, K04, K05, TG_DBLO,TG_DBLO, K06, K07, K08, K09, K0A, KC_BSLS, \ KC_C1R3, K11, K12, K13, K14, K15, TG_GAME,TG_GAME, K16, K17, K18, K19, K1A, RALT_T(K1B), \ KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A),KC_MRSF, \ KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, KC_NO, KC_DEL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, UC(0x2E2E), \ @@ 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] = { [_GAMEPAD] = LAYOUT_moonlander_wrapper( 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, 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, 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, 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, KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_N, KC_M, KC_NO, KC_NO, KC_NO, KC_NO, KC_GRV, KC_U, KC_I, KC_Y, KC_T, KC_PSCR, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_V, KC_SPC, KC_H, KC_NO, KC_NO, KC_SWAP_NUM
M keyboards/orthodox/keymaps/drashna/keymap.c => keyboards/orthodox/keymaps/drashna/keymap.c +3 -2
@@ 8,14 8,15 @@ * of use. K## is a placeholder to pass through the individual keycodes */ // clang-format off #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) #define LAYOUT_orthodox_base( \ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ ) \ LAYOUT_wrapper( \ KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \ 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), \ LALT_T(KC_TAB), K11, K12, K13, K14, K15, OS_LALT, OS_LGUI, OS_RALT, RAISE, K16, K17, K18, K19, K1A, RALT_T(K1B), \ 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 \ ) #define LAYOUT_orthodox_base_wrapper(...) LAYOUT_orthodox_base(__VA_ARGS__)
A keyboards/splitkb/zima/keymaps/drashna/config.h => keyboards/splitkb/zima/keymaps/drashna/config.h +32 -0
@@ 0,0 1,32 @@ /* Copyright 2019 Thomas Baart * Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #pragma once #define OLED_FONT_H "users/drashna/drashna_font.h" #define OLED_UPDATE_INTERVAL 15 #define OLED_DISABLE_TIMEOUT #define OLED_FONT_END 255 // # define OLED_FONT_5X5 // # define OLED_FONT_AZTECH // # define OLED_FONT_BMPLAIN # define OLED_FONT_SUPER_DIGG // # define OLED_LOGO_GMK_BAD // # define OLED_LOGO_HUE_MANITEE // # define OLED_LOGO_CORNE // # define OLED_LOGO_GOTHAM #define OLED_LOGO_SCIFI
A keyboards/splitkb/zima/keymaps/drashna/keymap.c => keyboards/splitkb/zima/keymaps/drashna/keymap.c +140 -0
@@ 0,0 1,140 @@ /* Copyright 2019 Thomas Baart * Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include QMK_KEYBOARD_H #include <stdio.h> #ifdef HAPTIC_ENABLE # include "haptic.h" extern haptic_config_t haptic_config; #endif const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_ortho_4x3( /* Base */ KC_MUTE, TG(1), TG(2), KC_P7, KC_P8, KC_P9, KC_P4, KC_P5, KC_P6, KC_P1, KC_P2, KC_P3 ), [1] = LAYOUT_ortho_4x3( /* Layer 1 */ RESET, _______, XXXXXXX, AU_ON, AU_OFF, XXXXXXX, CK_TOGG, XXXXXXX, CK_UP, CK_RST, XXXXXXX, CK_DOWN ), [2] = LAYOUT_ortho_4x3( /* Layer 2*/ RGB_TOG, RGB_MOD, _______, RGB_HUI, RGB_SAI, RGB_VAI, RGB_HUD, RGB_SAD, RGB_VAD, HPT_TOG, HPT_FBK, HPT_CONT ) }; static bool is_asleep = false; static uint32_t oled_timer; void render_oled_logo(void) { // clang-format off static const char PROGMEM qmk_logo[] = { 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0}; // clang-format on oled_write_ln_P(qmk_logo, false); } void render_user_status(void) { static const char PROGMEM audio_status[2][3] = {{0xE0, 0xE1, 0}, {0xE2, 0xE3, 0}}; oled_write_P(audio_status[is_audio_on()], false); static const char PROGMEM audio_clicky_status[2][3] = {{0xF4, 0xF5, 0}, {0xF6, 0xF7, 0}}; oled_write_P(audio_clicky_status[is_clicky_on() && is_audio_on()], false); static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}}; oled_write_P(rgb_layer_status[rgblight_is_enabled()], false); static const char PROGMEM nukem_good[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}}; oled_write_P(nukem_good[0], haptic_config.enable); } void keyboard_post_init_user(void) { oled_scroll_set_speed(0); } void oled_task_user(void) { if (is_asleep) { oled_off(); return; } if (timer_elapsed32(oled_timer) < 30000) { oled_on(); oled_scroll_off(); oled_write_P(PSTR("SplitKB's Zima"), false); char layer[2] = {0}; snprintf(layer, sizeof(layer), "%d", get_highest_layer(layer_state)); oled_write_P(PSTR(" L:"), false); oled_write_ln(layer, false); oled_write_ln_P(PSTR("--------------"), false); if (rgblight_is_enabled()) { oled_write_P(PSTR("HSV: "), false); char rgbs[14]; snprintf(rgbs, sizeof(rgbs), "%3d, %3d, %3d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val()); oled_write_ln(rgbs, false); } else { oled_write_ln_P(PSTR("RGB LIGHT DISABLED"), false); } render_user_status(); } else { if (timer_elapsed32(oled_timer) < 120000) { oled_on(); render_oled_logo(); oled_scroll_right(); } else { oled_off(); } } } void suspend_power_down_user(void) { is_asleep = true; } void suspend_wakeup_init_user(void) { is_asleep = false; } bool process_record_user(uint16_t keycode, keyrecord_t* record) { oled_timer = timer_read32(); return true; } void encoder_update_user(uint8_t index, bool clockwise) { if (clockwise) { tap_code16(KC_VOLU); } else { tap_code16(KC_VOLD); } # ifdef OLED_DRIVER_ENABLE oled_timer = timer_read32(); # endif # if defined(AUDIO_ENABLE) && defined(AUDIO_CLICKY) if (is_audio_on() && is_clicky_on()) clicky_play(); # endif # ifdef HAPTIC_ENABLE if (haptic_config.enable) haptic_play(); # endif }
A keyboards/splitkb/zima/keymaps/drashna/readme.md => keyboards/splitkb/zima/keymaps/drashna/readme.md +7 -0
@@ 0,0 1,7 @@ # The default keymap for zima This 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. The 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) For 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).
A keyboards/splitkb/zima/keymaps/drashna/rules.mk => keyboards/splitkb/zima/keymaps/drashna/rules.mk +2 -0
M layouts/community/ergodox/drashna/keymap.c => layouts/community/ergodox/drashna/keymap.c +9 -6
@@ 40,17 40,20 @@ bool skip_leds = false; * ease of use. K## is a placeholder to pass through the individual keycodes */ // clang-format off #define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__) #define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__) #define LAYOUT_ergodox_pretty_base( \ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ ) \ LAYOUT_ergodox_pretty_wrapper( \ KC_ESC, ________________NUMBER_LEFT________________, UC_FLIP, UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, \ LALT_T(KC_TAB), K01, K02, K03, K04, K05, TG(_DIABLO), TG(_DIABLO), K06, K07, K08, K09, K0A, KC_BSLS, \ KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ KC_MLSF, CTL_T(K21), K22, K23, K24, K25, TG(_GAMEPAD), TG(_GAMEPAD), K26, K27, K28, K29, RCTL_T(K2A), KC_MRSF, \ KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, KC_BTN1, KC_BTN3, KC_BTN2, PM_SCROLL, PM_PRECISION, \ LALT_T(KC_TAB), K01, K02, K03, K04, K05, TG_DBLO, TG_DBLO, K06, K07, K08, K09, K0A, KC_BSLS, \ KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ KC_MLSF, CTL_T(K21), K22, K23, K24, K25, TG_GAME, TG_GAME, K26, K27, K28, K29, RCTL_T(K2A), KC_MRSF, \ KC_GRV, OS_MEH, OS_HYPR, KC_LBRC, KC_RBRC, KC_BTN1, KC_BTN3, KC_BTN2, PM_SCROLL, PM_PRECISION, \ OS_LALT, OS_LGUI, OS_RGUI, CTL_T(KC_ESCAPE), \ KC_APP, KC_MENU, \ @@ 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] = { 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, 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, KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_I, KC_O, KC_NO, KC_NO, KC_NO, KC_NO, 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, 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, KC_GRV, KC_U, KC_I, KC_Y, KC_T, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_O, KC_P, MAGIC_TOGGLE_NKRO, LALT(KC_PSCR), KC_LGUI, KC_HYPR,
M layouts/community/ortho_4x12/drashna/keymap.c => layouts/community/ortho_4x12/drashna/keymap.c +3 -2
@@ 50,14 50,15 @@ enum planck_keycodes { * of use. K## is a placeholder to pass through the individual keycodes */ // clang-format off #define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__) #define LAYOUT_ortho_4x12_base( \ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ ) \ LAYOUT_ortho_4x12_wrapper( \ KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_DEL, \ LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), KC_ENT, \ BACKLIT, OS_LCTL, OS_LALT, OS_LGUI, PLNK_1, PLNK_2, PLNK_3, PLNK_4, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ )
M layouts/community/ortho_5x12/drashna/keymap.c => layouts/community/ortho_5x12/drashna/keymap.c +7 -11
@@ 24,17 24,17 @@ * of use. K## is a placeholder to pass through the individual keycodes */ // clang-format off #define LAYOUT_ortho_5x12_wrapper(...) LAYOUT_ortho_5x12(__VA_ARGS__) #define LAYOUT_ortho_5x12_base( \ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \ K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ ) \ LAYOUT_ortho_5x12_wrapper( \ KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \ LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, KC_BSPC, \ KC_C1R3, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, RALT_T(KC_QUOT), \ KC_MLSF, CTL_T(K31), K32, K33, K34, K35, K36, K37, K38, K39, RCTL_T(K3A), KC_ENT, \ KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_BSPC, \ LALT_T(KC_TAB), K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSPC, \ KC_C1R3, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ KC_MLSF, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), KC_ENT, \ KC_NO, OS_LCTL, OS_LALT, OS_LGUI, SP_LWER, BK_LWER, DL_RAIS, ET_RAIS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ ) @@ 44,28 44,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = LAYOUT_ortho_5x12_base_wrapper( ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________ ), [_COLEMAK] = LAYOUT_ortho_5x12_base_wrapper( ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, _________________COLEMAK_L3________________, _________________COLEMAK_R3________________ ), [_DVORAK] = LAYOUT_ortho_5x12_base_wrapper( ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, _________________DVORAK_L1_________________, _________________DVORAK_R1_________________, _________________DVORAK_L2_________________, _________________DVORAK_R2_________________, _________________DVORAK_L3_________________, _________________DVORAK_R3_________________ ), [_WORKMAN] = LAYOUT_ortho_5x12_base_wrapper( ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, _________________WORKMAN_L1________________, _________________WORKMAN_R1________________, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, _________________WORKMAN_L3________________, _________________WORKMAN_R3________________
M layouts/community/ortho_5x12/drashna/rules.mk => layouts/community/ortho_5x12/drashna/rules.mk +2 -0
@@ 9,6 9,8 @@ NKRO_ENABLE = yes ifeq ($(strip $(KEYBOARD)), fractal) RGB_MATRIX_ENABLE = no AUDIO_ENABLE = yes AUDIO_SUPPORTED = yes RGBLIGHT_SUPPORTED = yes RGBLIGHT_ENABLE = yes RGBLIGHT_TWINKLE = yes RGBLIGHT_STARTUP_ANIMATION = yes
A layouts/community/split_3x6_3/drashna/chconf.h => layouts/community/split_3x6_3/drashna/chconf.h +9 -0
@@ 0,0 1,9 @@ #define CH_CFG_ST_RESOLUTION 16 #define CH_CFG_ST_FREQUENCY 10000 #if __has_include("platforms/chibios/common/configs/chconf.h") # include_next "platforms/chibios/common/configs/chconf.h" #else # include_next "chconf.h" #endif
M layouts/community/split_3x6_3/drashna/config.h => layouts/community/split_3x6_3/drashna/config.h +12 -15
@@ 19,8 19,10 @@ /* Select hand configuration */ // #define MASTER_LEFT #define MASTER_RIGHT // #define EE_HAND // #define MASTER_RIGHT #define EE_HANDS #define SPLIT_MODS_ENABLE #undef USE_I2C #undef SSD1306OLED @@ 40,7 42,7 @@ #ifdef RGB_MATRIX_ENABLE # ifdef CONVERT_TO_PROTON_C # undef RGB_DI_PIN # define RGB_DI_PIN PAL_LINE(GPIOA, 3) # define RGB_DI_PIN A3 # endif # define RGB_MATRIX_KEYPRESSES // reacts to keypresses @@ // # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses) 56,24 58,23 @@ #endif #ifdef CONVERT_TO_PROTON_C # define WS2812_PWM_DRIVER PWMD15 // default: PWMD2 # define WS2812_PWM_CHANNEL 2 // default: 2 # define WS2812_PWM_PAL_MODE 9 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2 # define WS2812_DMA_STREAM STM32_DMA1_STREAM5 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. # define WS2812_DMA_CHANNEL 5 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. # 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. # define WS2812_PWM_DRIVER PWMD2 // default: PWMD2 # define WS2812_PWM_CHANNEL 4 // default: 2 # define WS2812_PWM_PAL_MODE 1 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 2 # define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA Stream for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. # define WS2812_DMA_CHANNEL 2 // DMA Channel for TIMx_UP, see the respective reference manual for the appropriate values for your MCU. # 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. # undef SOFT_SERIAL_PIN # define SOFT_SERIAL_PIN D3 # define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1 # define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7 // #define INIT_EE_HANDS_LEFT // #define INIT_EE_HANDS_RIGHT #endif #ifdef AUDIO_ENABLE #if defined(AUDIO_ENABLE) && !defined(CONVERT_TO_PROTON_C) # define B6_AUDIO # define NO_MUSIC_MODE @@ #endif 88,9 89,5 @@ #else # define PRODUCT Drashna Hacked Corne Keyboard #endif #define OLED_FONT_H "layouts/community/split_3x6_3/drashna/glcdfont.c" // #define OLED_FONT_WIDTH 5 // #define OLED_FONT_HEIGHT 7 #define OLED_DISABLE_TIMEOUT #define TAPPING_TERM_PER_KEY
M layouts/community/split_3x6_3/drashna/keymap.c => layouts/community/split_3x6_3/drashna/keymap.c +4 -7
@@ 27,14 27,15 @@ enum crkbd_keycodes { RGBRST = NEW_SAFE_RANGE }; */ // clang-format off #define LAYOUT_split_3x6_3_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__) #define LAYOUT_split_3x6_3_base( \ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \ ) \ LAYOUT_split_3x6_3_wrapper( \ KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \ ALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \ ALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \ OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \ RGB_MOD, KC_SPC, BK_LWER, DL_RAIS, KC_ENT, OS_RGUI \ @@ ) 121,11 122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #ifdef OLED_DRIVER_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { if (is_keyboard_master()) { return OLED_ROTATION_270; } else { return rotation; } return OLED_ROTATION_270; } #endif
M layouts/community/split_3x6_3/drashna/mcuconf.h => layouts/community/split_3x6_3/drashna/mcuconf.h +10 -6
@@ 19,14 19,18 @@ // #undef STM32_HSE_ENABLED // #define STM32_HSE_ENABLED FALSE #undef STM32_GPT_USE_TIM15 #define STM32_GPT_USE_TIM15 FALSE // #undef STM32_GPT_USE_TIM15 // #define STM32_GPT_USE_TIM15 FALSE #undef STM32_PWM_USE_TIM15 #define STM32_PWM_USE_TIM15 TRUE #undef STM32_PWM_USE_TIM2 #define STM32_PWM_USE_TIM2 TRUE #undef STM32_PWM_USE_TIM3 #define STM32_PWM_USE_TIM3 FALSE #undef STM32_SERIAL_USE_USART1 #define STM32_SERIAL_USE_USART1 TRUE #undef STM32_PWM_TIM15_IRQ_PRIORITY #define STM32_PWM_TIM15_IRQ_PRIORITY 16 // #undef STM32_PWM_TIM15_IRQ_PRIORITY // #define STM32_PWM_TIM15_IRQ_PRIORITY 16 #undef STM32_ST_USE_TIMER #define STM32_ST_USE_TIMER 3
M layouts/community/split_3x6_3/drashna/rules.mk => layouts/community/split_3x6_3/drashna/rules.mk +1 -1
@@ 29,6 29,6 @@ endif ifeq ($(strip $(CTPC)), yes) HAPTIC_ENABLE = no WS2812_DRIVER = pwm WS2812_DRIVER = pwm # won't work without a patch to the ctpc mk file SERIAL_DRIVER = usart endif
M users/drashna/config.h => users/drashna/config.h +35 -1
@@ 22,8 22,11 @@ /* Set Polling rate to 1000Hz */ #define USB_POLLING_INTERVAL_MS 1 #if defined(SPLIT_KEYBOAD) #if defined(SPLIT_KEYBOARD) # define SPLIT_MODS_ENABLE // # define SPLIT_TRANSPORT_MIRROR # define SERIAL_USE_MULTI_TRANSACTION // # define SPLIT_NUM_TRANSACTIONS_KB 2 #endif @@ #ifdef AUDIO_ENABLE 111,6 114,18 @@ # else # define OLED_UPDATE_INTERVAL 15 # endif # define OLED_DISABLE_TIMEOUT # define OLED_FONT_H "drashna_font.h" # define OLED_FONT_END 255 // # define OLED_FONT_5X5 // # define OLED_FONT_AZTECH // # define OLED_FONT_BMPLAIN // # define OLED_FONT_SUPER_DIGG // # define OLED_LOGO_GMK_BAD // # define OLED_LOGO_HUE_MANITEE // # define OLED_LOGO_CORNE // # define OLED_LOGO_GOTHAM # define OLED_LOGO_SCIFI #endif @@ #ifndef ONESHOT_TAP_TOGGLE 162,3 177,22 @@ #ifdef LOCKING_RESYNC_ENABLE # undef LOCKING_RESYNC_ENABLE #endif #ifdef CONVERT_TO_PROTON_C // pins that are available but not present on Pro Micro # define A3 PAL_LINE(GPIOA, 3) # define A4 PAL_LINE(GPIOA, 4) # define A5 PAL_LINE(GPIOA, 5) # define A6 PAL_LINE(GPIOA, 6) # define A7 PAL_LINE(GPIOA, 7) # define A8 PAL_LINE(GPIOA, 8) # define A13 PAL_LINE(GPIOA, 13) # define A14 PAL_LINE(GPIOA, 14) # define A15 PAL_LINE(GPIOA, 15) # define B10 PAL_LINE(GPIOB, 10) # define B11 PAL_LINE(GPIOB, 11) # define B12 PAL_LINE(GPIOB, 12) # define C13 PAL_LINE(GPIOC, 13) # define C14 PAL_LINE(GPIOC, 14) # define C15 PAL_LINE(GPIOC, 15) #endif
M users/drashna/drashna.c => users/drashna/drashna.c +31 -4
@@ 111,7 111,12 @@ void shutdown_user(void) { __attribute__((weak)) void suspend_power_down_keymap(void) {} void suspend_power_down_user(void) { suspend_power_down_keymap(); } void suspend_power_down_user(void) { #ifdef OLED_DRIVER_ENABLE oled_off(); #endif suspend_power_down_keymap(); } __attribute__((weak)) void suspend_wakeup_init_keymap(void) {} @@ 146,17 151,34 @@ void matrix_scan_user(void) { matrix_scan_keymap(); } #ifdef AUDIO_ENABLE float doom_song[][2] = SONG(E1M1_DOOM); #endif __attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; } // on layer change, no matter where the change was initiated // Then runs keymap's layer change check layer_state_t layer_state_set_user(layer_state_t state) { if (!is_keyboard_master()) { return state; } if (!is_keyboard_master()) { return state; } state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); #if defined(RGBLIGHT_ENABLE) state = layer_state_set_rgb_light(state); #endif // RGBLIGHT_ENABLE #if defined(AUDIO_ENABLE) && !defined(__arm__) static bool is_gamepad_on = false; if (layer_state_cmp(state, _GAMEPAD) != is_gamepad_on) { is_gamepad_on = layer_state_cmp(state, _GAMEPAD); if (is_gamepad_on) { PLAY_LOOP(doom_song); } else { stop_all_notes(); } } #endif return layer_state_set_keymap(state); } @@ 164,7 186,9 @@ __attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t // Runs state check and changes underglow color and animation layer_state_t default_layer_state_set_user(layer_state_t state) { if (!is_keyboard_master()) { return state; } if (!is_keyboard_master()) { return state; } state = default_layer_state_set_keymap(state); @@ #if 0 189,6 213,9 @@ void eeconfig_init_user(void) { userspace_config.rgb_layer_change = true; eeconfig_update_user(userspace_config.raw); eeconfig_init_keymap(); #ifdef VIA_ENABLE via_eeprom_reset(); #endif keyboard_init(); }
M users/drashna/drashna.h => users/drashna/drashna.h +4 -0
@@ 105,3 105,7 @@ We use custom codes here, so we can substitute the right stuff # define KC_D3_3 KC_3 # define KC_D3_4 KC_4 #endif // TAP_DANCE_ENABLE #if defined(DRASHNA_CUSTOM_TRANSPORT) && defined(POINTING_DEVICE_ENABLE) void master_mouse_send(int8_t x, int8_t y); #endif
A users/drashna/drashna_font.h => users/drashna/drashna_font.h +1306 -0
@@ 0,0 1,1306 @@ #pragma once // additional fonts from // https://github.com/datacute/TinyOLED-Fonts #include "progmem.h" static const unsigned char font[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x00 0 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, // 0x01 1 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, // 0x02 2 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, // 0x03 3 ♥ 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, // 0x04 4 ♦ 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, // 0x05 5 ♧ 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, // 0x06 6 ♤ 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, // 0x07 7 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, // 0x08 8 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, // 0x09 9 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, // 0x0A 10 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, // 0x0B 11 ♂ 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, // 0x0C 12 ♀ 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, // 0x0D 13 ♪ 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, // 0x0E 14 ♫ 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, // 0x0F 15 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, // 0x10 16 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, // 0x11 17 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, // 0x12 18 ↕ 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, // 0x13 19 ‼ 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, // 0x14 20 ¶ 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, // 0x15 21 § 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, // 0x16 22 _ 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, // 0x17 23 ↨ 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, // 0x18 24 ↑ 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, // 0x19 25 ↓ 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, // 0x1A 26 → 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, // 0x1B 27 ← 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, // 0x1C 28 ⌙h 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, // 0x1D 29 ↭ 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, // 0x1E 30 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, // 0x1F 31 #if defined(OLED_FONT_5X5) 0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32 0x5c,0x00,0x00,0x00,0x00,0x00, // 0x21 33 ! 0x06,0x00,0x06,0x00,0x00,0x00, // 0x22 34 " 0x28,0x7c,0x28,0x7c,0x28,0x00, // 0x23 35 # 0x5c,0x54,0xfe,0x54,0x74,0x00, // 0x24 36 $ 0x44,0x20,0x10,0x08,0x44,0x00, // 0x25 37 % 0x28,0x54,0x54,0x20,0x50,0x00, // 0x26 38 & 0x06,0x00,0x00,0x00,0x00,0x00, // 0x27 39 ' 0x38,0x44,0x00,0x00,0x00,0x00, // 0x28 40 ( 0x44,0x38,0x00,0x00,0x00,0x00, // 0x29 41 ) 0x02,0x07,0x02,0x00,0x00,0x00, // 0x2A 42 * 0x10,0x10,0x7c,0x10,0x10,0x00, // 0x2B 43 + 0xc0,0x00,0x00,0x00,0x00,0x00, // 0x2C 44 , 0x10,0x10,0x10,0x10,0x10,0x00, // 0x2D 45 - 0x40,0x00,0x00,0x00,0x00,0x00, // 0x2E 46 . 0x60,0x10,0x0c,0x00,0x00,0x00, // 0x2F 47 / 0x7c,0x64,0x54,0x4c,0x7c,0x00, // 0x30 48 0 0x48,0x7c,0x40,0x00,0x00,0x00, // 0x31 49 1 0x64,0x54,0x54,0x54,0x48,0x00, // 0x32 50 2 0x44,0x54,0x54,0x54,0x6c,0x00, // 0x33 51 3 0x3c,0x20,0x70,0x20,0x20,0x00, // 0x34 52 4 0x5c,0x54,0x54,0x54,0x24,0x00, // 0x35 53 5 0x7c,0x54,0x54,0x54,0x74,0x00, // 0x36 54 6 0x04,0x04,0x64,0x14,0x0c,0x00, // 0x37 55 7 0x7c,0x54,0x54,0x54,0x7c,0x00, // 0x38 56 8 0x5c,0x54,0x54,0x54,0x7c,0x00, // 0x39 57 9 0x44,0x00,0x00,0x00,0x00,0x00, // 0x3A 58 : 0xc4,0x00,0x00,0x00,0x00,0x00, // 0x3B 59 ; 0x10,0x28,0x44,0x00,0x00,0x00, // 0x3C 60 < 0x28,0x28,0x28,0x28,0x28,0x00, // 0x3D 61 = 0x44,0x28,0x10,0x00,0x00,0x00, // 0x3E 62 > 0x08,0x04,0x54,0x08,0x00,0x00, // 0x3F 63 ? 0x7c,0x44,0x54,0x54,0x5c,0x00, // 0x40 64 @ 0x7c,0x24,0x24,0x24,0x7c,0x00, // 0x41 65 A 0x7c,0x54,0x54,0x54,0x6c,0x00, // 0x42 66 B 0x7c,0x44,0x44,0x44,0x44,0x00, // 0x43 67 C 0x7c,0x44,0x44,0x44,0x38,0x00, // 0x44 68 D 0x7c,0x54,0x54,0x54,0x44,0x00, // 0x45 69 E 0x7c,0x14,0x14,0x14,0x04,0x00, // 0x46 70 F 0x7c,0x44,0x44,0x54,0x74,0x00, // 0x47 71 G 0x7c,0x10,0x10,0x10,0x7c,0x00, // 0x48 72 H 0x44,0x44,0x7c,0x44,0x44,0x00, // 0x49 73 I 0x60,0x40,0x40,0x44,0x7c,0x00, // 0x4A 74 J 0x7c,0x10,0x10,0x28,0x44,0x00, // 0x4B 75 K 0x7c,0x40,0x40,0x40,0x40,0x00, // 0x4C 76 L 0x7c,0x08,0x10,0x08,0x7c,0x00, // 0x4D 77 M 0x7c,0x08,0x10,0x20,0x7c,0x00, // 0x4E 78 N 0x38,0x44,0x44,0x44,0x38,0x00, // 0x4F 79 O 0x7c,0x14,0x14,0x14,0x08,0x00, // 0x50 80 P 0x3c,0x24,0x64,0x24,0x3c,0x00, // 0x51 81 Q 0x7c,0x14,0x14,0x14,0x68,0x00, // 0x52 82 R 0x5c,0x54,0x54,0x54,0x74,0x00, // 0x53 83 S 0x04,0x04,0x7c,0x04,0x04,0x00, // 0x54 84 T 0x7c,0x40,0x40,0x40,0x7c,0x00, // 0x55 85 U 0x0c,0x30,0x40,0x30,0x0c,0x00, // 0x56 86 V 0x3c,0x40,0x30,0x40,0x3c,0x00, // 0x57 87 W 0x44,0x28,0x10,0x28,0x44,0x00, // 0x58 88 X 0x0c,0x10,0x60,0x10,0x0c,0x00, // 0x59 89 Y 0x44,0x64,0x54,0x4c,0x44,0x00, // 0x5A 90 Z 0x7c,0x44,0x00,0x00,0x00,0x00, // 0x5B 91 [ 0x0c,0x10,0x60,0x00,0x00,0x00, // 0x5C 92 \ backslash 0x44,0x7c,0x00,0x00,0x00,0x00, // 0x5D 93 ] 0x00,0x01,0x00,0x01,0x00,0x00, // 0x5E 94 ^ 0x40,0x40,0x40,0x40,0x40,0x40, // 0x5F 95 _ 0x00,0x01,0x00,0x00,0x00,0x00, // 0x60 96 ` 0x7c,0x24,0x24,0x24,0x7c,0x00, // 0x61 97 a 0x7c,0x54,0x54,0x54,0x6c,0x00, // 0x62 98 b 0x7c,0x44,0x44,0x44,0x44,0x00, // 0x63 99 c 0x7c,0x44,0x44,0x44,0x38,0x00, // 0x64 100 d 0x7c,0x54,0x54,0x54,0x44,0x00, // 0x65 101 e 0x7c,0x14,0x14,0x14,0x04,0x00, // 0x66 102 f 0x7c,0x44,0x44,0x54,0x74,0x00, // 0x67 103 g 0x7c,0x10,0x10,0x10,0x7c,0x00, // 0x68 104 h 0x44,0x44,0x7c,0x44,0x44,0x00, // 0x69 105 i 0x60,0x40,0x40,0x44,0x7c,0x00, // 0x6A 106 j 0x7c,0x10,0x10,0x28,0x44,0x00, // 0x6B 107 k 0x7c,0x40,0x40,0x40,0x40,0x00, // 0x6C 108 l 0x7c,0x08,0x10,0x08,0x7c,0x00, // 0x6D 109 m 0x7c,0x08,0x10,0x20,0x7c,0x00, // 0x6E 110 n 0x38,0x44,0x44,0x44,0x38,0x00, // 0x6F 111 o 0x7c,0x14,0x14,0x14,0x08,0x00, // 0x70 112 p 0x3c,0x24,0x64,0x24,0x3c,0x00, // 0x71 113 q 0x7c,0x14,0x14,0x14,0x68,0x00, // 0x72 114 r 0x5c,0x54,0x54,0x54,0x74,0x00, // 0x73 115 s 0x04,0x04,0x7c,0x04,0x04,0x00, // 0x74 116 t 0x7c,0x40,0x40,0x40,0x7c,0x00, // 0x75 117 u 0x0c,0x30,0x40,0x30,0x0c,0x00, // 0x76 118 v 0x3c,0x40,0x30,0x40,0x3c,0x00, // 0x77 119 w 0x44,0x28,0x10,0x28,0x44,0x00, // 0x78 120 x 0x0c,0x10,0x60,0x10,0x0c,0x00, // 0x79 121 y 0x44,0x64,0x54,0x4c,0x44,0x00, // 0x7A 122 z 0x10,0x7c,0x44,0x00,0x00,0x00, // 0x7B 123 { 0x6c,0x00,0x00,0x00,0x00,0x00, // 0x7C 124 | 0x44,0x7c,0x10,0x00,0x00,0x00, // 0x7D 125 } 0x02,0x01,0x02,0x01,0x00,0x00, // 0x7E 126 ~ 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127 #elif defined(OLED_FONT_AZTECH) 0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32 0x00,0x2e,0x00,0x00,0x00,0x00, // 0x21 33 ! 0x00,0x02,0x00,0x02,0x00,0x00, // 0x22 34 " 0x00,0x0a,0x1e,0x0a,0x1e,0x00, // 0x23 35 # 0x00,0x0e,0x2a,0x6b,0x2a,0x3a, // 0x24 36 $ 0x00,0x06,0x06,0x26,0x18,0x06, // 0x25 37 % 0x38,0x3e,0x2a,0x2a,0x28,0x38, // 0x26 38 & 0x18,0x02,0x00,0x00,0x00,0x00, // 0x27 39 ' 0x00,0x3e,0x22,0x00,0x00,0x00, // 0x28 40 ( 0x00,0x22,0x3e,0x00,0x00,0x00, // 0x29 41 ) 0x00,0x0e,0x0e,0x0e,0x04,0x00, // 0x2A 42 * 0x00,0x08,0x1c,0x08,0x00,0x00, // 0x2B 43 + 0x00,0x20,0x00,0x00,0x00,0x00, // 0x2C 44 , 0x00,0x08,0x08,0x08,0x00,0x00, // 0x2D 45 - 0x00,0x20,0x00,0x00,0x00,0x00, // 0x2E 46 . 0x00,0x20,0x18,0x06,0x00,0x00, // 0x2F 47 / 0x00,0x3e,0x22,0x2a,0x22,0x3e, // 0x30 48 0 0x02,0x3e,0x00,0x00,0x00,0x00, // 0x31 49 1 0x00,0x38,0x28,0x2a,0x2a,0x2e, // 0x32 50 2 0x00,0x22,0x2a,0x2e,0x38,0x00, // 0x33 51 3 0x00,0x0e,0x08,0x08,0x3e,0x08, // 0x34 52 4 0x00,0x2e,0x2a,0x2a,0x28,0x38, // 0x35 53 5 0x00,0x3e,0x2a,0x2a,0x28,0x38, // 0x36 54 6 0x00,0x06,0x02,0x02,0x0a,0x3e, // 0x37 55 7 0x00,0x38,0x2e,0x2a,0x2e,0x38, // 0x38 56 8 0x00,0x0e,0x0a,0x2a,0x2a,0x3e, // 0x39 57 9 0x00,0x28,0x00,0x00,0x00,0x00, // 0x3A 58 : 0x00,0x28,0x00,0x00,0x00,0x00, // 0x3B 59 ; 0x00,0x08,0x14,0x22,0x00,0x00, // 0x3C 60 < 0x00,0x14,0x14,0x14,0x14,0x00, // 0x3D 61 = 0x00,0x22,0x14,0x08,0x00,0x00, // 0x3E 62 > 0x00,0x06,0x02,0x2a,0x0a,0x06, // 0x3F 63 ? 0x00,0x3e,0x02,0x3a,0x2a,0x0a, // 0x40 64 @ 0x22,0x3e,0x02,0x0a,0x0a,0x3e, // 0x41 65 A 0x00,0x3e,0x22,0x2a,0x2e,0x38, // 0x42 66 B 0x00,0x3e,0x22,0x22,0x20,0x30, // 0x43 67 C 0x00,0x3e,0x22,0x22,0x22,0x3c, // 0x44 68 D 0x00,0x3e,0x2a,0x22,0x20,0x30, // 0x45 69 E 0x00,0x3e,0x0a,0x0a,0x06,0x02, // 0x46 70 F 0x00,0x3e,0x22,0x2a,0x28,0x38, // 0x47 71 G 0x00,0x3e,0x08,0x08,0x08,0x3e, // 0x48 72 H 0x00,0x22,0x3e,0x22,0x00,0x00, // 0x49 73 I 0x00,0x30,0x20,0x20,0x22,0x3e, // 0x4A 74 J 0x00,0x3e,0x08,0x08,0x0e,0x38, // 0x4B 75 K 0x00,0x3e,0x20,0x20,0x20,0x30, // 0x4C 76 L 0x00,0x3e,0x02,0x3e,0x20,0x3e, // 0x4D 77 M 0x3e,0x3e,0x02,0x3e,0x20,0x3e, // 0x4E 78 N 0x00,0x3e,0x22,0x22,0x22,0x3e, // 0x4F 79 O 0x00,0x3e,0x02,0x0a,0x0a,0x0e, // 0x50 80 P 0x00,0x3e,0x22,0x22,0x22,0x3e, // 0x51 81 Q 0x00,0x3e,0x02,0x0a,0x0e,0x38, // 0x52 82 R 0x00,0x0e,0x0a,0x2a,0x2a,0x3a, // 0x53 83 S 0x00,0x06,0x02,0x3e,0x02,0x06, // 0x54 84 T 0x00,0x3e,0x20,0x20,0x20,0x3e, // 0x55 85 U 0x00,0x3e,0x20,0x20,0x3e,0x00, // 0x56 86 V 0x00,0x3e,0x20,0x3e,0x02,0x3e, // 0x57 87 W 0x3e,0x3a,0x0e,0x08,0x0e,0x3a, // 0x58 88 X 0x00,0x0e,0x08,0x08,0x28,0x3e, // 0x59 89 Y 0x00,0x3a,0x2a,0x2a,0x0a,0x0e, // 0x5A 90 Z 0x00,0x3e,0x22,0x00,0x00,0x00, // 0x5B 91 [ 0x00,0x02,0x0c,0x30,0x00,0x00, // 0x5C 92 \ backslash 0x22,0x3e,0x00,0x00,0x00,0x00, // 0x5D 93 ] 0x00,0x01,0x00,0x01,0x00,0x00, // 0x5E 94 ^ 0x00,0x20,0x20,0x20,0x00,0x00, // 0x5F 95 _ 0x00,0x01,0x00,0x00,0x00,0x00, // 0x60 96 ` 0x00,0x38,0x28,0x28,0x08,0x38, // 0x61 97 a 0x00,0x3e,0x20,0x28,0x28,0x38, // 0x62 98 b 0x00,0x38,0x28,0x28,0x20,0x30, // 0x63 99 c 0x00,0x38,0x28,0x28,0x20,0x3e, // 0x64 100 d 0x00,0xf8,0x88,0x28,0x28,0x38, // 0x65 101 e 0x00,0xf8,0x28,0x28,0x18,0x08, // 0x66 102 f 0x00,0x38,0x28,0xa8,0x88,0xf8, // 0x67 103 g 0x00,0x3c,0x08,0x08,0x08,0x38, // 0x68 104 h 0x00,0x3a,0x00,0x00,0x00,0x00, // 0x69 105 i 0x80,0xfa,0x00,0x00,0x00,0x00, // 0x6A 106 j 0x00,0x3e,0x08,0x08,0x38,0x2c, // 0x6B 107 k 0x00,0x3e,0x20,0x00,0x00,0x00, // 0x6C 108 l 0x00,0x38,0x08,0x38,0x20,0x38, // 0x6D 109 m 0x38,0x38,0x08,0x38,0x20,0x38, // 0x6E 110 n 0x00,0x38,0x28,0x28,0x28,0x38, // 0x6F 111 o 0x00,0xf8,0x08,0x28,0x28,0x38, // 0x70 112 p 0x00,0x38,0x28,0x28,0x08,0xf8, // 0x71 113 q 0x00,0x38,0x08,0x08,0x18,0x08, // 0x72 114 r 0x00,0x38,0x28,0xa8,0xa8,0xe8, // 0x73 115 s 0x00,0x3e,0x28,0x28,0x20,0x30, // 0x74 116 t 0x00,0x38,0x20,0x20,0x20,0x38, // 0x75 117 u 0x00,0x38,0x20,0x38,0x00,0x00, // 0x76 118 v 0x00,0x38,0x20,0x38,0x08,0x38, // 0x77 119 w 0x38,0x28,0x38,0x10,0x38,0x28, // 0x78 120 x 0x00,0x38,0x20,0xa0,0xa0,0xf8, // 0x79 121 y 0x00,0xe8,0xa8,0xa8,0x28,0x38, // 0x7A 122 z 0x08,0x3e,0x22,0x00,0x00,0x00, // 0x7B 123 { 0x00,0x3f,0x00,0x00,0x00,0x00, // 0x7C 124 | 0x22,0x3e,0x08,0x00,0x00,0x00, // 0x7D 125 } 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7E 126 ~ 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127 #elif defined(OLED_FONT_BMPLAIN) 0x00,0x00,0x00,0x00,0x00,0x00, // 0x20 32 0x2e,0x00,0x00,0x00,0x00,0x00, // 0x21 33 ! 0x03,0x00,0x03,0x00,0x00,0x00, // 0x22 34 " 0x0a,0x1f,0x0a,0x1f,0x0a,0x00, // 0x23 35 # 0x2e,0x2a,0x6b,0x2a,0x3a,0x00, // 0x24 36 $ 0x0e,0x2a,0x1e,0x08,0x3c,0x2a, // 0x25 37 % 0x3e,0x2a,0x2a,0x22,0x38,0x08, // 0x26 38 & 0x03,0x00,0x00,0x00,0x00,0x00, // 0x27 39 ' 0x1c,0x22,0x00,0x00,0x00,0x00, // 0x28 40 ( 0x22,0x1c,0x00,0x00,0x00,0x00, // 0x29 41 ) 0x15,0x0e,0x04,0x0e,0x15,0x00, // 0x2A 42 * 0x08,0x08,0x3e,0x08,0x08,0x00, // 0x2B 43 + 0x60,0x00,0x00,0x00,0x00,0x00, // 0x2C 44 , 0x08,0x08,0x08,0x08,0x08,0x00, // 0x2D 45 - 0x20,0x00,0x00,0x00,0x00,0x00, // 0x2E 46 . 0x20,0x10,0x08,0x04,0x02,0x00, // 0x2F 47 / 0x3e,0x22,0x2a,0x22,0x3e,0x00, // 0x30 48 0 0x04,0x3e,0x00,0x00,0x00,0x00, // 0x31 49 1 0x3a,0x2a,0x2a,0x2a,0x2e,0x00, // 0x32 50 2 0x2a,0x2a,0x2a,0x2a,0x3e,0x00, // 0x33 51 3 0x0e,0x08,0x08,0x08,0x3e,0x00, // 0x34 52 4 0x2e,0x2a,0x2a,0x2a,0x3a,0x00, // 0x35 53 5 0x3e,0x2a,0x2a,0x2a,0x3a,0x00, // 0x36 54 6 0x02,0x02,0x02,0x02,0x3e,0x00, // 0x37 55 7 0x3e,0x2a,0x2a,0x2a,0x3e,0x00, // 0x38 56 8 0x2e,0x2a,0x2a,0x2a,0x3e,0x00, // 0x39 57 9 0x14,0x00,0x00,0x00,0x00,0x00, // 0x3A 58 : 0x34,0x00,0x00,0x00,0x00,0x00, // 0x3B 59 ; 0x08,0x14,0x22,0x00,0x00,0x00, // 0x3C 60 < 0x14,0x14,0x14,0x14,0x14,0x00, // 0x3D 61 = 0x22,0x14,0x08,0x00,0x00,0x00, // 0x3E 62 > 0x06,0x02,0x2a,0x0a,0x0e,0x00, // 0x3F 63 ? 0x3e,0x02,0x3a,0x2a,0x3e,0x00, // 0x40 64 @ 0x3e,0x12,0x12,0x12,0x3e,0x00, // 0x41 65 A 0x3e,0x2a,0x2a,0x2a,0x36,0x00, // 0x42 66 B 0x3e,0x22,0x22,0x22,0x22,0x00, // 0x43 67 C 0x3e,0x22,0x22,0x22,0x1c,0x00, // 0x44 68 D 0x3e,0x2a,0x2a,0x2a,0x22,0x00, // 0x45 69 E 0x3e,0x0a,0x0a,0x0a,0x02,0x00, // 0x46 70 F 0x3e,0x22,0x2a,0x2a,0x3a,0x00, // 0x47 71 G 0x3e,0x08,0x08,0x08,0x3e,0x00, // 0x48 72 H 0x22,0x3e,0x22,0x00,0x00,0x00, // 0x49 73 I 0x38,0x20,0x20,0x20,0x3e,0x00, // 0x4A 74 J 0x3e,0x08,0x08,0x14,0x22,0x00, // 0x4B 75 K 0x3e,0x20,0x20,0x20,0x20,0x00, // 0x4C 76 L 0x3e,0x04,0x38,0x04,0x3e,0x00, // 0x4D 77 M 0x3e,0x04,0x08,0x10,0x3e,0x00, // 0x4E 78 N 0x3e,0x22,0x22,0x22,0x3e,0x00, // 0x4F 79 O 0x3e,0x0a,0x0a,0x0a,0x0e,0x00, // 0x50 80 P 0x3e,0x22,0x72,0x22,0x3e,0x00, // 0x51 81 Q 0x3e,0x0a,0x0a,0x1a,0x2e,0x00, // 0x52 82 R 0x2e,0x2a,0x2a,0x2a,0x3a,0x00, // 0x53 83 S 0x02,0x02,0x3e,0x02,0x02,0x00, // 0x54 84 T 0x1e,0x20,0x20,0x20,0x1e,0x00, // 0x55 85 U 0x0e,0x10,0x20,0x10,0x0e,0x00, // 0x56 86 V 0x3e,0x10,0x0e,0x10,0x3e,0x00, // 0x57 87 W 0x22,0x14,0x08,0x14,0x22,0x00, // 0x58 88 X 0x02,0x04,0x38,0x04,0x02,0x00, // 0x59 89 Y 0x3a,0x2a,0x2a,0x2a,0x2e,0x00, // 0x5A 90 Z 0x3e,0x22,0x00,0x00,0x00,0x00, // 0x5B 91 [ 0x3f,0x21,0x3f,0x00,0x00,0x00, // 0x5C 92 \ backslash 0x22,0x3e,0x00,0x00,0x00,0x00, // 0x5D 93 ] 0x0c,0x1e,0x3c,0x1e,0x0c,0x00, // 0x5E 94 ^ 0x20,0x20,0x20,0x20,0x20,0x00, // 0x5F 95 _ 0x1c,0x3e,0x3e,0x3e,0x1c,0x00, // 0x60 96 ` 0x3c,0x24,0x24,0x24,0x3c,0x20, // 0x61 97 a 0x3e,0x24,0x24,0x24,0x3c,0x00, // 0x62 98 b 0x3c,0x24,0x24,0x24,0x24,0x00, // 0x63 99 c 0x3c,0x24,0x24,0x24,0x3e,0x00, // 0x64 100 d 0x3c,0x24,0x34,0x2c,0x24,0x00, // 0x65 101 e 0x08,0x3e,0x0a,0x0a,0x00,0x00, // 0x66 102 f 0x1c,0x54,0x54,0x54,0x7c,0x00, // 0x67 103 g 0x3e,0x04,0x04,0x04,0x3c,0x00, // 0x68 104 h 0x3a,0x00,0x00,0x00,0x00,0x00, // 0x69 105 i 0x7a,0x00,0x00,0x00,0x00,0x00, // 0x6A 106 j 0x3e,0x08,0x14,0x22,0x00,0x00, // 0x6B 107 k 0x02,0x3e,0x00,0x00,0x00,0x00, // 0x6C 108 l 0x3c,0x04,0x3c,0x04,0x3c,0x00, // 0x6D 109 m 0x3c,0x04,0x04,0x04,0x3c,0x00, // 0x6E 110 n 0x3c,0x24,0x24,0x24,0x3c,0x00, // 0x6F 111 o 0x7c,0x24,0x24,0x24,0x3c,0x00, // 0x70 112 p 0x3c,0x24,0x24,0x24,0x7c,0x00, // 0x71 113 q 0x3c,0x04,0x04,0x04,0x00,0x00, // 0x72 114 r 0x24,0x2c,0x34,0x24,0x00,0x00, // 0x73 115 s 0x04,0x3e,0x24,0x24,0x00,0x00, // 0x74 116 t 0x3c,0x20,0x20,0x20,0x3c,0x00, // 0x75 117 u 0x0c,0x10,0x20,0x10,0x0c,0x00, // 0x76 118 v 0x3c,0x20,0x3c,0x20,0x3c,0x00, // 0x77 119 w 0x24,0x24,0x18,0x24,0x24,0x00, // 0x78 120 x 0x1c,0x50,0x50,0x50,0x7c,0x00, // 0x79 121 y 0x24,0x34,0x2c,0x24,0x00,0x00, // 0x7A 122 z 0x08,0x3e,0x22,0x00,0x00,0x00, // 0x7B 123 { 0x1c,0x22,0x22,0x22,0x1c,0x00, // 0x7C 124 | 0x22,0x3e,0x08,0x00,0x00,0x00, // 0x7D 125 } 0x01,0x01,0x01,0x00,0x00,0x00, // 0x7E 126 ~ 0x00,0x00,0x00,0x00,0x00,0x00, // 0x7F 127 #elif defined(OLED_FONT_SUPER_DIGG) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 32 0x58, 0x5C, 0x00, 0x00, 0x00, 0x00, // 0x21 33 ! 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, // 0x22 34 " 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, // 0x23 35 # 0x5C, 0xFE, 0x54, 0xFE, 0x74, 0x00, // 0x24 36 $ 0x03, 0x63, 0x38, 0x0C, 0x63, 0x60, // 0x25 37 % 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x50, // 0x26 38 & 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, // 0x27 39 ' 0x70, 0x7C, 0x44, 0x00, 0x00, 0x00, // 0x28 40 ( 0x44, 0x7C, 0x70, 0x00, 0x00, 0x00, // 0x29 41 ) 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, // 0x2A 42 * 0x10, 0x10, 0x70, 0x7C, 0x10, 0x00, // 0x2B 43 + 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00, // 0x2C 44 , 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, // 0x2D 45 - 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, // 0x2E 46 . 0x70, 0x7C, 0x03, 0x00, 0x00, 0x00, // 0x2F 47 / 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x1C, // 0x30 48 0 0x04, 0x04, 0x7C, 0x1C, 0x00, 0x00, // 0x31 49 1 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, // 0x32 50 2 0x44, 0x54, 0x54, 0x54, 0x7C, 0x70, // 0x33 51 3 0x1C, 0x10, 0x10, 0x7C, 0x7C, 0x00, // 0x34 52 4 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, // 0x35 53 5 0x70, 0x7C, 0x54, 0x54, 0x74, 0x00, // 0x36 54 6 0x04, 0x14, 0x14, 0x14, 0x7C, 0x70, // 0x37 55 7 0x70, 0x5C, 0x54, 0x74, 0x7C, 0x00, // 0x38 56 8 0x5C, 0x54, 0x54, 0x54, 0x7C, 0x1C, // 0x39 57 9 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, // 0x3A 58 : 0x50, 0xD0, 0x00, 0x00, 0x00, 0x00, // 0x3B 59 ; 0x18, 0x18, 0x24, 0x42, 0x00, 0x00, // 0x3C 60 < 0x28, 0x28, 0x28, 0x28, 0x00, 0x00, // 0x3D 61 = 0x42, 0x24, 0x18, 0x18, 0x00, 0x00, // 0x3E 62 > 0x04, 0x14, 0x54, 0x54, 0x1C, 0x1C, // 0x3F 63 ? 0xF8, 0x04, 0x74, 0x74, 0x54, 0x54, // 0x40 64 @ 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00, // 0x41 65 A 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00, // 0x42 66 B 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44, // 0x43 67 C 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70, // 0x44 68 D 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44, // 0x45 69 E 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04, // 0x46 70 F 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74, // 0x47 71 G 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00, // 0x48 72 H 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, // 0x49 73 I 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70, // 0x4A 74 J 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00, // 0x4B 75 K 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60, // 0x4C 76 L 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04, // 0x4D 77 M 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C, // 0x4E 78 N 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C, // 0x4F 79 O 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00, // 0x50 80 P 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00, // 0x51 81 Q 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00, // 0x52 82 R 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, // 0x53 83 S 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00, // 0x54 84 T 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C, // 0x55 85 U 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C, // 0x56 86 V 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40, // 0x57 87 W 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00, // 0x58 88 X 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00, // 0x59 89 Y 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, // 0x5A 90 Z 0xF0, 0xFE, 0x82, 0x00, 0x00, 0x00, // 0x5B 91 [ 0x03, 0x7C, 0x70, 0x00, 0x00, 0x00, // 0x5C 92 \ backslash 0x82, 0xFE, 0xF0, 0x00, 0x00, 0x00, // 0x5D 93 ] 0x04, 0x02, 0x01, 0x06, 0x04, 0x00, // 0x5E 94 ^ 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, // 0x5F 95 _ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x60 96 ` 0x70, 0x7C, 0x14, 0x14, 0x3C, 0x00, // 0x61 97 a 0x7C, 0x74, 0x54, 0x54, 0x7C, 0x00, // 0x62 98 b 0x70, 0x7C, 0x44, 0x44, 0x44, 0x44, // 0x63 99 c 0x70, 0x7C, 0x44, 0x44, 0x48, 0x70, // 0x64 100 d 0x70, 0x7C, 0x54, 0x54, 0x54, 0x44, // 0x65 101 e 0x70, 0x7C, 0x14, 0x14, 0x14, 0x04, // 0x66 102 f 0x70, 0x7C, 0x44, 0x44, 0x54, 0x74, // 0x67 103 g 0x70, 0x7C, 0x10, 0x10, 0x7C, 0x00, // 0x68 104 h 0x70, 0x7C, 0x00, 0x00, 0x00, 0x00, // 0x69 105 i 0x60, 0x40, 0x40, 0x40, 0x7C, 0x70, // 0x6A 106 j 0x7C, 0x70, 0x10, 0x1C, 0x70, 0x00, // 0x6B 107 k 0x70, 0x7C, 0x40, 0x40, 0x40, 0x60, // 0x6C 108 l 0x70, 0x7C, 0x04, 0x04, 0x7C, 0x04, // 0x6D 109 m 0x70, 0x7C, 0x04, 0x04, 0x04, 0x7C, // 0x6E 110 n 0x70, 0x7C, 0x44, 0x44, 0x44, 0x7C, // 0x6F 111 o 0x70, 0x7C, 0x24, 0x24, 0x3C, 0x00, // 0x70 112 p 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00, // 0x71 113 q 0x7C, 0x74, 0x14, 0x14, 0x3C, 0x00, // 0x72 114 r 0x5C, 0x5C, 0x54, 0x54, 0x74, 0x00, // 0x73 115 s 0x04, 0x04, 0x7C, 0x74, 0x04, 0x00, // 0x74 116 t 0x70, 0x7C, 0x40, 0x40, 0x40, 0x7C, // 0x75 117 u 0x70, 0x7C, 0x40, 0x40, 0x20, 0x1C, // 0x76 118 v 0x70, 0x7C, 0x40, 0x40, 0x7C, 0x40, // 0x77 119 w 0x70, 0x7C, 0x10, 0x10, 0x3C, 0x00, // 0x78 120 x 0x1C, 0x10, 0x70, 0x70, 0x1C, 0x00, // 0x79 121 y 0x74, 0x74, 0x54, 0x54, 0x5C, 0x00, // 0x7A 122 z 0x10, 0xFE, 0xC2, 0x00, 0x00, 0x00, // 0x7B 123 { 0x00, 0x44, 0x77, 0x00, 0x00, 0x00, // 0x7C 124 | 0xC2, 0xFE, 0x10, 0x00, 0x00, 0x00, // 0x7D 125 } 0x02, 0x01, 0x03, 0x04, 0x06, 0x02, // 0x7E 126 ~ 0x3C, 0x22, 0x21, 0x22, 0x3C, 0x00, // 0x7F 127 #else // default font 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 32 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, // 0x21 33 ! 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, // 0x22 34 " 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, // 0x23 35 # 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, // 0x24 36 $ 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, // 0x25 37 % 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, // 0x26 38 & 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, // 0x27 39 ' 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, // 0x28 40 ( 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, // 0x29 41 ) 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, // 0x2A 42 * 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, // 0x2B 43 + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, // 0x2C 44 , 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, // 0x2D 45 - 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, // 0x2E 46 . 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, // 0x2F 47 / 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, // 0x30 48 0 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, // 0x31 49 1 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, // 0x32 50 2 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, // 0x33 51 3 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, // 0x34 52 4 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, // 0x35 53 5 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, // 0x36 54 6 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, // 0x37 55 7 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, // 0x38 56 8 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, // 0x39 57 9 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, // 0x3A 58 : 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, // 0x3B 59 ; 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, // 0x3C 60 < 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, // 0x3D 61 = 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, // 0x3E 62 > 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, // 0x3F 63 ? 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, // 0x40 64 @ 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, // 0x41 65 A 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, // 0x42 66 B 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, // 0x43 67 C 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, // 0x44 68 D 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, // 0x45 69 E 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, // 0x46 70 F 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, // 0x47 71 G 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, // 0x48 72 H 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, // 0x49 73 I 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, // 0x4A 74 J 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, // 0x4B 75 K 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, // 0x4C 76 L 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, // 0x4D 77 M 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, // 0x4E 78 N 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, // 0x4F 79 O 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, // 0x50 80 P 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, // 0x51 81 Q 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, // 0x52 82 R 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, // 0x53 83 S 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, // 0x54 84 T 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, // 0x55 85 U 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, // 0x56 86 V 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, // 0x57 87 W 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, // 0x58 88 X 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, // 0x59 89 Y 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, // 0x5A 90 Z 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, // 0x5B 91 [ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, // 0x5C 92 \ backslash 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, // 0x5D 93 ] 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, // 0x5E 94 ^ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, // 0x5F 95 _ 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, // 0x60 96 ` 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, // 0x61 97 a 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, // 0x62 98 b 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, // 0x63 99 c 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, // 0x64 100 d 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, // 0x65 101 e 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, // 0x66 102 f 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, // 0x67 103 g 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, // 0x68 104 h 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, // 0x69 105 i 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, // 0x6A 106 j 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, // 0x6B 107 k 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, // 0x6C 108 l 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, // 0x6D 109 m 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, // 0x6E 110 n 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, // 0x6F 111 o 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, // 0x70 112 p 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, // 0x71 113 q 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, // 0x72 114 r 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, // 0x73 115 s 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, // 0x74 116 t 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, // 0x75 117 u 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, // 0x76 118 v 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, // 0x77 119 w 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, // 0x78 120 x 0x4C, 0x90, 0x10, 0x90, 0x7C, 0x00, // 0x79 121 y 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, // 0x7A 122 z 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, // 0x7B 123 { 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, // 0x7C 124 | 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, // 0x7D 125 } 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, // 0x7E 126 ~ 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, // 0x7F 127 #endif #if defined(OLED_LOGO_GMK_BAD) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, // 0x81 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, // 0x82 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00, // 0x83 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, // 0x84 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, // 0x85 0x80, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8, // 0x86 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x87 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x00, // 0x88 0x80, 0xE0, 0xF0, 0xF8, 0x78, 0x38, // 0x89 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, // 0x8A 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8B 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x38, // 0x8C 0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0x00, // 0x8D 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8E 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8F 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x90 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x91 0x00, 0x00, 0x00, 0x80, 0xFC, 0xFC, // 0x92 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, // 0x93 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x94 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, // 0x95 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, // 0x96 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, // 0x97 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, // 0x98 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x99 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9A 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9B 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9C 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9D 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9E 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9F 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, // 0xA0 0xFF, 0xFF, 0xFF, 0xC1, 0x80, 0x00, // 0xA1 0x00, 0x38, 0x38, 0xB8, 0xB8, 0xF9, // 0xA2 0xF9, 0xF8, 0x38, 0x00, 0x00, 0x00, // 0xA3 0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0x1F, // 0xA4 0x01, 0x3F, 0xFF, 0xFF, 0xF0, 0xFE, // 0xA5 0x7F, 0x0F, 0x03, 0xFF, 0xFF, 0xFF, // 0xA6 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, // 0xA7 0xFF, 0xFF, 0xFF, 0x3F, 0x1E, 0x7F, // 0xA8 0xFF, 0xFF, 0xF3, 0xC1, 0x80, 0x00, // 0xA9 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xAA 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, // 0xAB 0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x1C, // 0xAC 0x9C, 0xFF, 0xFF, 0xF3, 0xE1, 0x00, // 0xAD 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, // 0xAE 0xFF, 0x0F, 0x07, 0x07, 0x8E, 0xFF, // 0xAF 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, // 0xB0 0x00, 0xF0, 0xFC, 0xFE, 0xFF, 0x8F, // 0xB1 0x07, 0x07, 0x8E, 0xFF, 0xFF, 0xFF, // 0xB2 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, // 0xB3 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, // 0xB4 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, // 0xB5 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, // 0xB6 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, // 0xB7 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, // 0xB8 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB9 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBA 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBC 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBD 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBF 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0 0x00, 0x01, 0x03, 0x03, 0x03, 0x07, // 0xC1 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, // 0xC2 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC3 0x06, 0x07, 0x07, 0x07, 0x01, 0x00, // 0xC4 0x00, 0x00, 0x07, 0x07, 0x07, 0x01, // 0xC5 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, // 0xC6 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, // 0xC7 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, // 0xC8 0x00, 0x03, 0x07, 0x07, 0x07, 0x06, // 0xC9 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xCA 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, // 0xCB 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, // 0xCC 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, // 0xCD 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, // 0xCE 0x07, 0x07, 0x07, 0x03, 0x07, 0x07, // 0xCF 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, // 0xD0 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, // 0xD1 0x07, 0x03, 0x07, 0x07, 0x07, 0x07, // 0xD2 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, // 0xD3 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, // 0xD4 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD5 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD6 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD7 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD8 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD9 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDA 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDC 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDD 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDE 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, #elif defined(OLED_LOGO_HUE_MANITEE) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x90, 0x70, 0xE8, 0xA8, 0xE4, 0xC4, 0xC4, 0xA0, 0xE4, 0xB0, 0xDC, 0xE4, 0xFC, 0xFC, 0xFC, 0xFC, 0x3C, 0x3C, 0xFC, 0xF8, 0xF0, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, // 0x90 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, // 0xA0 0xFC, 0xF6, 0xF7, 0xEF, 0xFF, 0x87, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x1F, 0x1F, 0x19, 0x15, 0xF7, 0x16, 0x1A, 0x1B, 0x16, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xC0, 0xC0, 0x00, 0x00, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x30, 0x30, 0xCC, 0xCC, // 0xB0 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // 0xC0 0x03, 0x07, 0x07, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x03, 0x00, 0x00, 0x02, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, // 0xD0 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, #elif defined(OLED_LOGO_CORNE) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0x18, 0x00, 0xC0, 0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, // 0x90 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA0 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xC3, 0xC3, 0xC3, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, // 0xB0 0x9D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x9D, 0xDF, 0xDF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F, 0x3F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7C, 0x78, 0x78, 0x38, 0x1C, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x01, 0x03, // 0xD0 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, #elif defined(OLED_LOGO_GOTHAM) // see /keyboards/crkbd/keymaps/gotham/oled.c 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 0x00, 0x00, 0xC0, 0x60, 0x30, 0x18, 0xF8, 0x18, 0x00, 0xC0, 0x70, 0x1C, 0x06, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0xC3, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x1C, 0x22, 0x41, 0x41, 0x41, 0x22, 0x1C, 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0xF8, 0x0C, 0x04, 0xE7, 0xE4, 0xE4, 0x07, 0x04, 0xE4, 0xE7, 0xE4, 0x04, 0x07, 0xE4, 0xE4, 0xE7, 0x04, 0x0C, 0xF8, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, // 0x90 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x77, 0x77, 0x77, 0x00, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x60, 0x70, 0x3E, 0x1F, 0x19, 0x18, 0x0C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0C, 0x06, 0x07, 0xFC, // 0xA0 0x00, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0x80, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1C, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 0x1C, 0x22, 0x00, 0x00, 0x1C, 0x3E, 0x7F, 0x63, 0x41, 0x22, 0x1C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0xFF, 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x38, 0x30, 0xFF, 0xFF, 0xFF, 0x30, 0x38, 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0xFF, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, // 0xB0 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, 0x00, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x24, 0x24, 0xFC, 0x00, 0x00, 0x00, 0xF0, 0x90, 0x90, 0xF0, 0x90, 0x90, 0xF0, 0x98, 0x9C, 0xF2, 0x22, 0x21, 0xE1, 0x01, 0x01, 0x01, 0xF1, 0x91, 0x91, 0xFA, 0x4C, 0x4C, 0xF8, 0x48, 0x48, 0xF8, 0x48, 0x48, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0E, 0x18, 0x30, 0x21, // 0xC0 0x21, 0x31, 0x18, 0x10, 0x30, 0x20, 0x60, 0x41, 0x60, 0x20, 0x30, 0x18, 0x30, 0x60, 0x40, 0x40, 0x47, 0x4C, 0x48, 0x68, 0x38, 0x1C, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x63, 0x7F, 0x3E, 0x1C, 0x00, 0x00, 0x22, 0x1C, 0x00, 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x0F, 0x18, 0x10, 0x70, 0x10, 0x10, 0x70, 0x10, 0x13, 0x73, 0x13, 0x10, 0x70, 0x10, 0x10, 0x70, 0x10, 0x18, 0x0F, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, // 0xD0 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, 0x08, 0x0C, 0x7E, 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x09, 0x09, 0x09, 0x0F, 0x09, 0x09, 0x0F, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0F, 0x09, 0x09, 0x0F, 0x09, 0x09, 0x09, 0x0F, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x07, 0x04, 0x04, 0x07, 0x04, 0x04, 0x0F, 0x09, 0x09, 0x0F, 0x00, 0x00, 0x00, 0x07, 0x04, 0x04, 0x07, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, #elif defined(OLED_LOGO_SCIFI) 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x30, 0x38, 0x18, 0x0C, 0x0C, 0x1E, 0x0C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0x60, 0x60, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x30, 0x70, 0x78, 0x78, 0x7C, 0x7C, 0x7E, 0x3E, 0x3F, 0x3F, 0x3B, 0x3B, 0x39, 0x39, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x3C, 0x38, 0x18, 0x8F, 0xDF, 0xF8, 0x7C, 0xBE, 0xDF, 0xF7, 0xFB, 0xFD, 0xFE, 0xEF, 0x73, 0x3B, 0x1B, 0x1F, 0xEF, 0xF7, 0xFF, 0x7E, 0x6F, 0x6F, 0x6F, 0x6F, 0x6D, 0xBD, 0xE1, 0xF9, 0x3F, 0x3F, 0x39, 0x79, 0x79, 0x7D, 0xED, 0xED, 0xCD, 0xC7, 0xC7, 0x87, 0xC7, 0xE3, 0xE0, 0xF8, 0x7E, 0x3F, 0x37, 0x33, 0x3B, 0x1B, 0x19, 0x19, 0x0D, 0xED, 0xFF, 0xBF, 0xC7, 0xE7, 0xE3, 0xF0, 0x7C, 0xDE, 0xE7, 0xFB, 0x3E, 0x3F, 0xFC, 0xE0, 0xF8, 0x3E, 0xCF, 0xF3, 0xFC, 0x3F, 0x1F, 0x1F, 0x3C, 0x7E, 0x76, 0xF3, 0xE3, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x18, 0x1E, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE1, 0x79, 0x3E, 0x1F, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x02, 0x06, 0x04, 0x08, 0x18, 0x10, 0x30, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 #else 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 0x40, 0x40, 0x40, 0xF0, 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0x3F, 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0xF0, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x90 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA0 0x49, 0x49, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xDF, 0xBF, 0xBF, 0x00, 0xBF, 0xBF, 0xDF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x60, 0x60, 0xE0, 0xBF, 0x1F, 0x00, 0x7F, 0x7F, 0x07, 0x1E, 0x38, 0x1E, 0x07, 0x7F, 0x7F, 0x00, 0x7F, 0x7F, 0x0E, 0x1F, 0x3B, 0x71, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x0C, 0x0C, 0x0C, 0x00, 0x7E, 0x7E, 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x7E, 0x7E, 0x03, 0x03, 0x7F, 0x7E, 0x00, 0x0F, 0x3E, 0x70, 0x3C, 0x06, 0x3C, 0x70, 0x3E, 0x0F, 0x00, 0x32, 0x7B, 0x49, // 0xB0 0x49, 0x3F, 0x7E, 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x00, 0x1E, 0x3F, 0x69, 0x69, 0x6F, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0 0x01, 0x01, 0x01, 0x07, 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x7E, 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x07, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD0 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDF 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x14, 0x08, 0x14, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x00, 0x22, 0x1C, 0x41, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x7E, 0x7F, 0x7E, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0xA5, 0xFF, 0x24, 0x24, 0xFF, 0xA5, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1, 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x38, 0xFC, 0xED, 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x4A, 0x4F, 0x4A, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x6A, 0x64, 0x6A, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x69, 0x65, 0x65, 0x65, 0x69, 0x42, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x14, 0x1C, 0x08, 0x18, 0x08, 0x18, 0x00, 0x00, 0x00, 0x00, 0x70, 0xC8, 0xEE, 0xF9, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, #endif };
A users/drashna/drashna_transport.c => users/drashna/drashna_transport.c +508 -0
@@ 0,0 1,508 @@ /* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <string.h> #include <stddef.h> #include "matrix.h" #include QMK_KEYBOARD_H #define ROWS_PER_HAND (MATRIX_ROWS / 2) #ifdef RGBLIGHT_ENABLE # include "rgblight.h" #endif #ifdef BACKLIGHT_ENABLE # include "backlight.h" #endif #ifdef ENCODER_ENABLE # include "encoder.h" static pin_t encoders_pad[] = ENCODERS_PAD_A; # define NUMBER_OF_ENCODERS (sizeof(encoders_pad) / sizeof(pin_t)) #endif #ifdef POINTING_DEVICE_ENABLE static int8_t split_mouse_x = 0, split_mouse_y = 0; #endif #ifdef OLED_DRIVER_ENABLE # include "oled_driver.h" #endif #if defined(USE_I2C) # include "i2c_master.h" # include "i2c_slave.h" typedef struct _I2C_slave_buffer_t { matrix_row_t smatrix[ROWS_PER_HAND]; # ifdef SPLIT_MODS_ENABLE uint8_t real_mods; uint8_t weak_mods; # ifndef NO_ACTION_ONESHOT uint8_t oneshot_mods; # endif # endif # ifdef BACKLIGHT_ENABLE uint8_t backlight_level; # endif # if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) rgblight_syncinfo_t rgblight_sync; # endif # ifdef ENCODER_ENABLE uint8_t encoder_state[NUMBER_OF_ENCODERS]; # endif # ifdef WPM_ENABLE uint8_t current_wpm; # endif int8_t mouse_x; int8_t mouse_y; bool oled_on; layer_state_t t_layer_state; layer_state_t t_default_layer_state; bool is_rgb_matrix_suspended; } __attribute__((packed)) I2C_slave_buffer_t; static I2C_slave_buffer_t *const i2c_buffer = (I2C_slave_buffer_t *)i2c_slave_reg; # define I2C_BACKLIGHT_START offsetof(I2C_slave_buffer_t, backlight_level) # define I2C_RGB_START offsetof(I2C_slave_buffer_t, rgblight_sync) # define I2C_KEYMAP_START offsetof(I2C_slave_buffer_t, smatrix) # define I2C_REAL_MODS_START offsetof(I2C_slave_buffer_t, real_mods) # define I2C_WEAK_MODS_START offsetof(I2C_slave_buffer_t, weak_mods) # define I2C_ONESHOT_MODS_START offsetof(I2C_slave_buffer_t, oneshot_mods) # define I2C_ENCODER_START offsetof(I2C_slave_buffer_t, encoder_state) # define I2C_WPM_START offsetof(I2C_slave_buffer_t, current_wpm) # define I2C_MOUSE_X_START offsetof(I2C_slave_buffer_t, mouse_x) # define I2C_MOUSE_Y_START offsetof(I2C_slave_buffer_t, mouse_y) # define I2C_OLED_ON_START offsetof(I2C_slave_buffer_t, oled_on) # define I2C_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_layer_state) # define I2C_DEFAULT_LAYER_STATE_START offsetof(I2C_slave_buffer_t, t_default_layer_state) # define I2C_RGB_MATRIX_SUSPEND_START offsetof(I2C_slave_buffer_t, is_rgb_matrix_suspended) # define TIMEOUT 100 # ifndef SLAVE_I2C_ADDRESS # define SLAVE_I2C_ADDRESS 0x32 # endif // Get rows from other half over i2c bool transport_master(matrix_row_t matrix[]) { i2c_readReg(SLAVE_I2C_ADDRESS, I2C_KEYMAP_START, (void *)matrix, sizeof(i2c_buffer->smatrix), TIMEOUT); // write backlight info # ifdef BACKLIGHT_ENABLE uint8_t level = is_backlight_enabled() ? get_backlight_level() : 0; if (level != i2c_buffer->backlight_level) { if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_BACKLIGHT_START, (void *)&level, sizeof(level), TIMEOUT) >= 0) { i2c_buffer->backlight_level = level; } } # endif # if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) if (rgblight_get_change_flags()) { rgblight_syncinfo_t rgblight_sync; rgblight_get_syncinfo(&rgblight_sync); if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_START, (void *)&rgblight_sync, sizeof(rgblight_sync), TIMEOUT) >= 0) { rgblight_clear_change_flags(); } } # endif # ifdef ENCODER_ENABLE i2c_readReg(SLAVE_I2C_ADDRESS, I2C_ENCODER_START, (void *)i2c_buffer->encoder_state, sizeof(i2c_buffer->encoder_state), TIMEOUT); encoder_update_raw(i2c_buffer->encoder_state); # endif # ifdef WPM_ENABLE uint8_t current_wpm = get_current_wpm(); if (current_wpm != i2c_buffer->current_wpm) { if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WPM_START, (void *)¤t_wpm, sizeof(current_wpm), TIMEOUT) >= 0) { i2c_buffer->current_wpm = current_wpm; } } # endif # ifdef POINTING_DEVICE_ENABLE if (is_keyboard_left()) { report_mouse_t temp_report = pointing_device_get_report(); i2c_readReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_X_START, (void *)&i2c_buffer->mouse_x, sizeof(i2c_buffer->mouse_x), TIMEOUT); temp_report.x = i2c_buffer->mouse_x; i2c_readReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_Y_START, (void *)&i2c_buffer->mouse_y, sizeof(i2c_buffer->mouse_y), TIMEOUT); temp_report.y = i2c_buffer->mouse_y; pointing_device_set_report(temp_report); } # endif # ifdef SPLIT_MODS_ENABLE uint8_t real_mods = get_mods(); if (real_mods != i2c_buffer->real_mods) { if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_REAL_MODS_START, (void *)&real_mods, sizeof(real_mods), TIMEOUT) >= 0) { i2c_buffer->real_mods = real_mods; } } uint8_t weak_mods = get_weak_mods(); if (weak_mods != i2c_buffer->weak_mods) { if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_WEAK_MODS_START, (void *)&weak_mods, sizeof(weak_mods), TIMEOUT) >= 0) { i2c_buffer->weak_mods = weak_mods; } } # ifndef NO_ACTION_ONESHOT uint8_t oneshot_mods = get_oneshot_mods(); if (oneshot_mods != i2c_buffer->oneshot_mods) { if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_ONESHOT_MODS_START, (void *)&oneshot_mods, sizeof(oneshot_mods), TIMEOUT) >= 0) { i2c_buffer->oneshot_mods = oneshot_mods; } } # endif # endif if (layer_state != i2c_buffer->t_layer_state) { if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&layer_state, sizeof(layer_state), TIMEOUT) >= 0) { i2c_buffer->t_layer_state = layer_state; } } if (default_layer_state != i2c_buffer->t_default_layer_state) { if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_DEFAULT_LAYER_STATE_START, (void *)&default_layer_state, sizeof(default_layer_state), TIMEOUT) >= 0) { i2c_buffer->t_default_layer_state = default_layer_state; } } # ifdef OLED_DRIVER_ENABLE bool is_oled = is_oled_on(); if (is_oled != i2c_buffer->oled_on) { if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_LAYER_STATE_START, (void *)&is_oled, sizeof(is_oled), TIMEOUT) >= 0) { i2c_buffer->oled_on = is_oled; } } # endif # ifdef RGB_MATRIX_ENABLE bool sus_state = rgb_matrix_get_suspend_state(); if (sus_state != i2c_buffer->is_rgb_matrix_suspended) { if (i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_RGB_MATRIX_SUSPEND_START, (void *)&sus_state, sizeof(sus_state), TIMEOUT) >= 0) { i2c_buffer->is_rgb_matrix_suspended = sus_state; } } # endif return true; } void transport_slave(matrix_row_t matrix[]) { // Copy matrix to I2C buffer memcpy((void *)i2c_buffer->smatrix, (void *)matrix, sizeof(i2c_buffer->smatrix)); // Read Backlight Info # ifdef BACKLIGHT_ENABLE backlight_set(i2c_buffer->backlight_level); # endif # if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) // Update the RGB with the new data if (i2c_buffer->rgblight_sync.status.change_flags != 0) { rgblight_update_sync(&i2c_buffer->rgblight_sync, false); i2c_buffer->rgblight_sync.status.change_flags = 0; } # endif # ifdef ENCODER_ENABLE encoder_state_raw(i2c_buffer->encoder_state); # endif # ifdef WPM_ENABLE set_current_wpm(i2c_buffer->current_wpm); # endif # ifdef POINTING_DEVICE_ENABLE if (!is_keyboard_left()) { i2c_buffer->mouse_x = split_mouse_x; i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_X_START, (void *)&i2c_buffer->mouse_x, sizeof(i2c_buffer->mouse_x), TIMEOUT); i2c_buffer->mouse_y = split_mouse_y; i2c_writeReg(SLAVE_I2C_ADDRESS, I2C_MOUSE_Y_START, (void *)&i2c_buffer->mouse_y, sizeof(i2c_buffer->mouse_y), TIMEOUT); } # endif # ifdef SPLIT_MODS_ENABLE set_mods(i2c_buffer->real_mods); set_weak_mods(i2c_buffer->weak_mods); # ifndef NO_ACTION_ONESHOT set_oneshot_mods(i2c_buffer->oneshot_mods); # endif # endif if (layer_state != i2c_buffer->t_layer_state) { layer_state = i2c_buffer->t_layer_state; } if (default_layer_state != i2c_buffer->t_default_layer_state) { default_layer_state = i2c_buffer->t_default_layer_state; } # ifdef OLED_DRIVER_ENABLE if (i2c_buffer->oled_on) { oled_on(); } else { oled_off(); } # endif # ifdef RGB_MATRIX_ENABLE rgb_matrix_set_suspend_state(i2c_buffer->is_rgb_matrix_suspended); # endif } void transport_master_init(void) { i2c_init(); } void transport_slave_init(void) { i2c_slave_init(SLAVE_I2C_ADDRESS); } #else // USE_SERIAL # include "serial.h" typedef struct _Serial_s2m_buffer_t { // TODO: if MATRIX_COLS > 8 change to uint8_t packed_matrix[] for pack/unpack matrix_row_t smatrix[ROWS_PER_HAND]; # ifdef ENCODER_ENABLE uint8_t encoder_state[NUMBER_OF_ENCODERS]; # endif int8_t mouse_x; int8_t mouse_y; } __attribute__((packed)) Serial_s2m_buffer_t; typedef struct _Serial_m2s_buffer_t { # ifdef SPLIT_MODS_ENABLE uint8_t real_mods; uint8_t weak_mods; # ifndef NO_ACTION_ONESHOT uint8_t oneshot_mods; # endif # endif # ifdef BACKLIGHT_ENABLE uint8_t backlight_level; # endif # ifdef WPM_ENABLE uint8_t current_wpm; # endif bool oled_on; layer_state_t t_layer_state; layer_state_t t_default_layer_state; bool is_rgb_matrix_suspended; } __attribute__((packed)) Serial_m2s_buffer_t; # if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) // When MCUs on both sides drive their respective RGB LED chains, // it is necessary to synchronize, so it is necessary to communicate RGB // information. In that case, define RGBLIGHT_SPLIT with info on the number // of LEDs on each half. // // Otherwise, if the master side MCU drives both sides RGB LED chains, // there is no need to communicate. typedef struct _Serial_rgblight_t { rgblight_syncinfo_t rgblight_sync; } Serial_rgblight_t; volatile Serial_rgblight_t serial_rgblight = {}; uint8_t volatile status_rgblight = 0; # endif volatile Serial_s2m_buffer_t serial_s2m_buffer = {}; volatile Serial_m2s_buffer_t serial_m2s_buffer = {}; uint8_t volatile status0 = 0; enum serial_transaction_id { GET_SLAVE_MATRIX = 0, # if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) PUT_RGBLIGHT, # endif }; SSTD_t transactions[] = { [GET_SLAVE_MATRIX] = { (uint8_t *)&status0, sizeof(serial_m2s_buffer), (uint8_t *)&serial_m2s_buffer, sizeof(serial_s2m_buffer), (uint8_t *)&serial_s2m_buffer, }, # if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) [PUT_RGBLIGHT] = { (uint8_t *)&status_rgblight, sizeof(serial_rgblight), (uint8_t *)&serial_rgblight, 0, NULL // no slave to master transfer }, # endif }; void transport_master_init(void) { soft_serial_initiator_init(transactions, TID_LIMIT(transactions)); } void transport_slave_init(void) { soft_serial_target_init(transactions, TID_LIMIT(transactions)); } # if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_SPLIT) // rgblight synchronization information communication. void transport_rgblight_master(void) { if (rgblight_get_change_flags()) { rgblight_get_syncinfo((rgblight_syncinfo_t *)&serial_rgblight.rgblight_sync); if (soft_serial_transaction(PUT_RGBLIGHT) == TRANSACTION_END) { rgblight_clear_change_flags(); } } } void transport_rgblight_slave(void) { if (status_rgblight == TRANSACTION_ACCEPTED) { rgblight_update_sync((rgblight_syncinfo_t *)&serial_rgblight.rgblight_sync, false); status_rgblight = TRANSACTION_END; } } # else # define transport_rgblight_master() # define transport_rgblight_slave() # endif bool transport_master(matrix_row_t matrix[]) { # ifndef SERIAL_USE_MULTI_TRANSACTION if (soft_serial_transaction() != TRANSACTION_END) { return false; } # else transport_rgblight_master(); if (soft_serial_transaction(GET_SLAVE_MATRIX) != TRANSACTION_END) { return false; } # endif // TODO: if MATRIX_COLS > 8 change to unpack() for (int i = 0; i < ROWS_PER_HAND; ++i) { matrix[i] = serial_s2m_buffer.smatrix[i]; } # ifdef BACKLIGHT_ENABLE // Write backlight level for slave to read serial_m2s_buffer.backlight_level = is_backlight_enabled() ? get_backlight_level() : 0; # endif # ifdef ENCODER_ENABLE encoder_update_raw((uint8_t *)serial_s2m_buffer.encoder_state); # endif # ifdef WPM_ENABLE // Write wpm to slave serial_m2s_buffer.current_wpm = get_current_wpm(); # endif # ifdef SPLIT_MODS_ENABLE serial_m2s_buffer.real_mods = get_mods(); serial_m2s_buffer.weak_mods = get_weak_mods(); # ifndef NO_ACTION_ONESHOT serial_m2s_buffer.oneshot_mods = get_oneshot_mods(); # endif # endif # ifdef POINTING_DEVICE_ENABLE if (is_keyboard_left()) { report_mouse_t temp_report = pointing_device_get_report(); temp_report.x = serial_s2m_buffer.mouse_x; temp_report.y = serial_s2m_buffer.mouse_y; pointing_device_set_report(temp_report); } # endif serial_m2s_buffer.t_layer_state = layer_state; serial_m2s_buffer.t_default_layer_state = default_layer_state; # ifdef OLED_DRIVER_ENABLE serial_m2s_buffer.oled_on = is_oled_on(); # endif # ifdef RGB_MATRIX_ENABLE serial_m2s_buffer.is_rgb_matrix_suspended = rgb_matrix_get_suspend_state(); # endif return true; } void transport_slave(matrix_row_t matrix[]) { transport_rgblight_slave(); // TODO: if MATRIX_COLS > 8 change to pack() for (int i = 0; i < ROWS_PER_HAND; ++i) { serial_s2m_buffer.smatrix[i] = matrix[i]; } # ifdef BACKLIGHT_ENABLE backlight_set(serial_m2s_buffer.backlight_level); # endif # ifdef ENCODER_ENABLE encoder_state_raw((uint8_t *)serial_s2m_buffer.encoder_state); # endif # ifdef WPM_ENABLE set_current_wpm(serial_m2s_buffer.current_wpm); # endif # ifdef SPLIT_MODS_ENABLE set_mods(serial_m2s_buffer.real_mods); set_weak_mods(serial_m2s_buffer.weak_mods); # ifndef NO_ACTION_ONESHOT set_oneshot_mods(serial_m2s_buffer.oneshot_mods); # endif # endif # ifdef POINTING_DEVICE_ENABLE if (!is_keyboard_left()) { serial_s2m_buffer.mouse_x = split_mouse_x; serial_s2m_buffer.mouse_y = split_mouse_y; } # endif if (layer_state != serial_m2s_buffer.t_layer_state) { layer_state = serial_m2s_buffer.t_layer_state; } if (default_layer_state != serial_m2s_buffer.t_default_layer_state) { default_layer_state = serial_m2s_buffer.t_default_layer_state; } # ifdef OLED_DRIVER_ENABLE if (serial_m2s_buffer.oled_on) { oled_on(); } else { oled_off(); } # endif # ifdef RGB_MATRIX_ENABLE rgb_matrix_set_suspend_state(serial_m2s_buffer.is_rgb_matrix_suspended); # endif } #endif #ifdef POINTING_DEVICE_ENABLE void master_mouse_send(int8_t x, int8_t y) { split_mouse_x = x; split_mouse_y = y; } #endif
D users/drashna/font_gmk_bad.h => users/drashna/font_gmk_bad.h +0 -234
@@ 1,234 0,0 @@ #pragma once #include "progmem.h" // Corne 8x6 font with QMK Firmware Logo // Online editor: https://helixfonteditor.netlify.com/ // clang-format off const unsigned char font[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, 0x4C, 0x90, 0x10, 0x90, 0x7C, 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, 0x38, 0x38, 0x38, 0x78, 0x70, 0xF0, 0xE0, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x00, 0x80, 0xE0, 0xF0, 0xF8, 0x78, 0x38, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF8, 0xF8, 0xF8, 0x38, 0x38, 0x38, 0xF8, 0xF0, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFC, 0xFC, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0xFF, 0xFF, 0xC1, 0x80, 0x00, 0x00, 0x38, 0x38, 0xB8, 0xB8, 0xF9, 0xF9, 0xF8, 0x38, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFF, 0xFF, 0x1F, 0x01, 0x3F, 0xFF, 0xFF, 0xF0, 0xFE, 0x7F, 0x0F, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x3F, 0x1E, 0x7F, 0xFF, 0xFF, 0xF3, 0xC1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x3F, 0x1C, 0x1C, 0x9C, 0xFF, 0xFF, 0xF3, 0xE1, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, 0xFF, 0x0F, 0x07, 0x07, 0x8E, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFE, 0xFF, 0x8F, 0x07, 0x07, 0x8E, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, 0x07, 0x03, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, 0x07, 0x03, 0x07, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
D users/drashna/hue_manitee_font.h => users/drashna/hue_manitee_font.h +0 -234
@@ 1,234 0,0 @@ #pragma once #include "progmem.h" // Corne 8x6 font with QMK Firmware Logo // Online editor: https://helixfonteditor.netlify.com/ // clang-format off const unsigned char font[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, 0x4C, 0x90, 0x10, 0x90, 0x7C, 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x90, 0x70, 0xE8, 0xA8, 0xE4, 0xC4, 0xC4, 0xA0, 0xE4, 0xB0, 0xDC, 0xE4, 0xFC, 0xFC, 0xFC, 0xFC, 0x3C, 0x3C, 0xFC, 0xF8, 0xF0, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFC, 0xF6, 0xF7, 0xEF, 0xFF, 0x87, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x1F, 0x1F, 0x19, 0x15, 0xF7, 0x16, 0x1A, 0x1B, 0x16, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xC0, 0xC0, 0x00, 0x00, 0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xFC, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0xFC, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x30, 0x30, 0xCC, 0xCC, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x03, 0x00, 0x00, 0x02, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
M users/drashna/oled_stuff.c => users/drashna/oled_stuff.c +100 -41
@@ 15,6 15,7 @@ */ #include "drashna.h" #include <stdio.h> #ifndef KEYLOGGER_LENGTH @@ // # ifdef OLED_DISPLAY_128X64 24,7 25,7 @@ // # endif #endif static uint32_t oled_timer = 0; uint32_t oled_timer = 0; static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"}; static uint16_t log_timer = 0; @@ 132,28 133,26 @@ void render_layer_state(void) { oled_write_P(PSTR(" "), false); #endif oled_write_P(PSTR(OLED_RENDER_LAYER_RAISE), layer_state_is(_RAISE)); #if _MODS # ifdef OLED_DISPLAY_128X64 oled_write_P(PSTR(" "), false); # endif oled_write_P(PSTR(OLED_RENDER_LAYER_MODS), layer_state_is(_MODS)); #endif #ifdef OLED_DISPLAY_128X64 oled_advance_page(true); oled_write_P(PSTR(" "), false); oled_write_P(PSTR("GamePad"), layer_state_is(_GAMEPAD)); oled_write_P(PSTR(" "), false); oled_write_P(PSTR("Diablo"), layer_state_is(_DIABLO)); oled_write_P(PSTR(" "), false); oled_write_P(PSTR("Mouse"), layer_state_is(_MOUSE)); #endif } void render_keylock_status(uint8_t led_usb_state) { oled_write_P(PSTR(OLED_RENDER_LOCK_NAME), false); #if !defined(OLED_DISPLAY_128X64) oled_write_P(PSTR(" "), false); #endif oled_write_P(PSTR(OLED_RENDER_LOCK_NUML), led_usb_state & (1 << USB_LED_NUM_LOCK)); #ifdef OLED_DISPLAY_128X64 oled_write_P(PSTR(" "), false); #endif oled_write_P(PSTR(OLED_RENDER_LOCK_CAPS), led_usb_state & (1 << USB_LED_CAPS_LOCK)); #ifdef OLED_DISPLAY_128X64 oled_write_P(PSTR(" "), false); #endif oled_write_P(PSTR(OLED_RENDER_LOCK_SCLK), led_usb_state & (1 << USB_LED_SCROLL_LOCK)); #ifndef OLED_DISPLAY_128X64 @@ oled_advance_page(true); 161,20 160,18 @@ void render_keylock_status(uint8_t led_usb_state) { } void render_mod_status(uint8_t modifiers) { static const char PROGMEM mod_status[5][3] = {{0xE8, 0xE9, 0}, {0xE4, 0xE5, 0}, {0xE6, 0xE7, 0}, {0xEA, 0xEB, 0}, {0xEC, 0xED, 0}}; oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false); oled_write_P(PSTR(OLED_RENDER_MODS_SFT), (modifiers & MOD_MASK_SHIFT)); #ifdef OLED_DISPLAY_128X64 oled_write_P(mod_status[0], (modifiers & MOD_MASK_SHIFT)); oled_write_P(mod_status[!keymap_config.swap_lctl_lgui ? 3 : 4], (modifiers & MOD_MASK_GUI)); #if !defined(OLED_DISPLAY_128X64) oled_write_P(PSTR(" "), false); #endif oled_write_P(PSTR(OLED_RENDER_MODS_CTL), (modifiers & MOD_MASK_CTRL)); #ifdef OLED_DISPLAY_128X64 oled_write_P(PSTR(" "), false); #endif oled_write_P(PSTR(OLED_RENDER_MODS_ALT), (modifiers & MOD_MASK_ALT)); #ifdef OLED_DISPLAY_128X64 oled_write_P(PSTR(" "), false); oled_write_P(mod_status[2], (modifiers & MOD_MASK_ALT)); oled_write_P(mod_status[1], (modifiers & MOD_MASK_CTRL)); #if defined(OLED_DISPLAY_128X64) oled_advance_page(true); #endif oled_write_P(PSTR(OLED_RENDER_MODS_GUI), (modifiers & MOD_MASK_GUI)); } @@ void render_bootmagic_status(void) { 204,41 201,71 @@ void render_bootmagic_status(void) { #endif oled_write_P(logo[0][0], !is_bootmagic_on); } #ifndef OLED_DISPLAY_128X64 oled_write_P(PSTR(" "), false); oled_write_P(logo[1][1], is_bootmagic_on); oled_write_P(logo[0][1], !is_bootmagic_on); #endif oled_write_P(PSTR(" "), false); #ifdef OLED_DISPLAY_128X64 oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro); oled_write_P(PSTR(" "), false); oled_write_ln_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), !keymap_config.no_gui); oled_write_P(PSTR("Magic "), false); if (keymap_config.swap_lctl_lgui) #endif { oled_write_P(logo[1][1], is_bootmagic_on); oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), !keymap_config.no_gui); #ifdef OLED_DISPLAY_128X64 oled_advance_page(true); oled_write_P(PSTR("Magic"), false); oled_write_P(PSTR(" "), false); if (keymap_config.swap_lctl_lgui) { oled_write_P(logo[1][1], is_bootmagic_on); } else { #endif oled_write_P(logo[0][1], !is_bootmagic_on); } #endif oled_write_P(PSTR(" "), false); #ifdef OLED_DISPLAY_128X64 oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_GRV), keymap_config.swap_grave_esc); oled_write_P(PSTR(" "), false); oled_write_P(PSTR(" "), false); oled_write_P(PSTR(" "), false); oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_CAPS), keymap_config.swap_control_capslock); #ifdef OLED_DISPLAY_128X64 oled_advance_page(true); #else oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NKRO), keymap_config.nkro); #endif } #if defined(POINTING_DEVICE_ENABLE) extern bool tap_toggling; #endif void render_user_status(void) { oled_write_P(PSTR(OLED_RENDER_USER_NAME), false); #if !defined(OLED_DISPLAY_128X64) oled_write_P(PSTR(" "), false); #endif #if defined(RGB_MATRIX_ENABLE) oled_write_P(PSTR(OLED_RENDER_USER_ANIM), userspace_config.rgb_matrix_idle_anim); # if !defined(OLED_DISPLAY_128X64) oled_write_P(PSTR(" "), false); oled_write_P(PSTR(OLED_RENDER_USER_LAYR), userspace_config.rgb_layer_change); # endif #elif defined(POINTING_DEVICE_ENABLE) static const char PROGMEM mouse_lock[3] = {0xF2, 0xF3, 0}; oled_write_P(mouse_lock, tap_toggling); #endif #ifdef AUDIO_ENABLE static const char PROGMEM audio_status[2][3] = {{0xE0, 0xE1, 0}, {0xE2, 0xE3, 0}}; oled_write_P(audio_status[is_audio_on()], false); # ifdef AUDIO_CLICKY static const char PROGMEM audio_clicky_status[2][3] = {{0xF4, 0xF5, 0}, {0xF6, 0xF7, 0}}; oled_write_P(audio_clicky_status[is_clicky_on() && is_audio_on()], false); # if !defined(OLED_DISPLAY_128X64) oled_write_P(PSTR(" "), false); oled_write_P(PSTR(OLED_RENDER_USER_NUKE), userspace_config.nuke_switch); #ifdef OLED_DISPLAY_128X64 # endif # endif #endif static const char PROGMEM rgb_layer_status[2][3] = {{0xEE, 0xEF, 0}, {0xF0, 0xF1, 0}}; oled_write_P(rgb_layer_status[userspace_config.rgb_layer_change], false); static const char PROGMEM nukem_good[2][3] = {{0xF8, 0xF9, 0}, {0xF6, 0xF7, 0}}; oled_write_P(nukem_good[0], userspace_config.nuke_switch); #if defined(OLED_DISPLAY_128X64) oled_advance_page(true); #endif @@ } 253,23 280,55 @@ __attribute__((weak)) void oled_driver_render_logo(void) { oled_write_P(qmk_logo, false); } void render_wpm(void) { #ifdef WPM_ENABLE # ifdef OLED_DISPLAY_128X64 char wpm_counter[4]; # else char wpm_counter[6]; # endif snprintf(wpm_counter, sizeof(wpm_counter), "%3u", get_current_wpm()); oled_write_P(PSTR(OLED_RENDER_WPM_COUNTER), false); oled_write(wpm_counter, false); #endif } #ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball extern keyboard_config_t keyboard_config; extern uint16_t dpi_array[]; void render_pointing_dpi_status(void) { char dpi_status[6]; snprintf(dpi_status, sizeof(dpi_status), "%5u", dpi_array[keyboard_config.dpi_config]); oled_write_P(PSTR(" DPI: "), false); oled_write(dpi_status, false); } #endif void render_status_secondary(void) { #if !defined(SPLIT_TRANSPORT_MIRROR) || defined(OLED_DISPLAY_128X64) #if defined(OLED_DISPLAY_128X64) oled_driver_render_logo(); #endif /* Show Keyboard Layout */ render_default_layer_state(); render_layer_state(); render_mod_status(get_mods() | get_oneshot_mods()); render_keylogger_status(); // render_keylogger_status(); render_keylock_status(host_keyboard_leds()); } // clang-format on void render_status_main(void) { #if defined(OLED_DISPLAY_128X64) oled_driver_render_logo(); /* Show Keyboard Layout */ render_wpm(); # ifdef KEYBOARD_handwired_dactyl_manuform_5x6_right_trackball render_pointing_dpi_status(); # endif oled_write_P(PSTR("\n"), false); #else render_default_layer_state(); #endif /* Show Keyboard Layout */ // render_keylock_status(host_keyboard_leds()); render_bootmagic_status(); render_user_status();
M users/drashna/oled_stuff.h => users/drashna/oled_stuff.h +13 -9
@@ 21,6 21,7 @@ void oled_driver_render_logo(void); bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); extern uint32_t oled_timer; #ifdef OLED_DISPLAY_128X64 @@ # define OLED_RENDER_KEYLOGGER "Keylogger: " 35,7 36,7 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); # define OLED_RENDER_LAYOUT_EUCALYN "Eucalyn" # define OLED_RENDER_LAYOUT_CARPLAX "Carplax" # define OLED_RENDER_LAYER_NAME "Layer:\n" # define OLED_RENDER_LAYER_NAME "Layer:" # define OLED_RENDER_LAYER_LOWER "Lower" # define OLED_RENDER_LAYER_RAISE "Raise" @@ # define OLED_RENDER_LAYER_ADJUST "Adjust" 46,7 47,7 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); # define OLED_RENDER_LOCK_CAPS "CAPS" # define OLED_RENDER_LOCK_SCLK "SCLK" # define OLED_RENDER_MODS_NAME "Mods: " # define OLED_RENDER_MODS_NAME "Mods:" # define OLED_RENDER_MODS_SFT "Sft" # define OLED_RENDER_MODS_CTL "Ctl" @@ # define OLED_RENDER_MODS_ALT "Alt" 63,6 64,7 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); # define OLED_RENDER_USER_LAYR "Layr" # define OLED_RENDER_USER_NUKE "Nuke" # define OLED_RENDER_WPM_COUNTER "WPM: " #else # define OLED_RENDER_KEYLOGGER "KLogr" @@ 83,15 85,15 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); # define OLED_RENDER_LAYER_MODS " Mods" # define OLED_RENDER_LOCK_NAME "Lock:" # define OLED_RENDER_LOCK_NUML "N" # define OLED_RENDER_LOCK_CAPS "C" # define OLED_RENDER_LOCK_SCLK "S" # define OLED_RENDER_LOCK_NUML "NumL" # define OLED_RENDER_LOCK_CAPS "CapL" # define OLED_RENDER_LOCK_SCLK "ScrL" # define OLED_RENDER_MODS_NAME "Mods: " # define OLED_RENDER_MODS_SFT "S" # define OLED_RENDER_MODS_CTL "C" # define OLED_RENDER_MODS_ALT "A" # define OLED_RENDER_MODS_GUI "G" # define OLED_RENDER_MODS_SFT "Shft" # define OLED_RENDER_MODS_CTL "Ctrl" # define OLED_RENDER_MODS_ALT "Alt\n" # define OLED_RENDER_MODS_GUI "GUI\n" # define OLED_RENDER_BOOTMAGIC_NAME "BTMGK" @@ # define OLED_RENDER_BOOTMAGIC_NKRO "NKRO" 104,4 106,6 @@ bool process_record_user_oled(uint16_t keycode, keyrecord_t *record); # define OLED_RENDER_USER_LAYR "Layr" # define OLED_RENDER_USER_NUKE "Nuke" # define OLED_RENDER_WPM_COUNTER "WPM: " #endif
M users/drashna/pimoroni_trackball.h => users/drashna/pimoroni_trackball.h +4 -4
@@ 23,13 23,13 @@ # define TRACKBALL_ADDRESS 0x0A #endif #define TRACKBALL_WRITE ((TRACKBALL_ADDRESS << 1) | I2C_WRITE) #define TRACKBALL_READ ((TRACKBALL_ADDRESS << 1) | I2C_READ) #define TRACKBALL_READ ((TRACKBALL_ADDRESS << 1) | I2C_READ) void trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white); void trackball_check_click(bool pressed, report_mouse_t *mouse); void trackball_register_button(bool pressed, enum mouse_buttons button); float trackball_get_precision(void); void trackball_set_precision(float precision); bool trackball_is_scrolling(void); void trackball_set_scrolling(bool scroll); void trackball_set_precision(float precision); bool trackball_is_scrolling(void); void trackball_set_scrolling(bool scroll);
M users/drashna/process_records.c => users/drashna/process_records.c +3 -3
@@ 36,12 36,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (!(process_record_keymap(keycode, record) && process_record_secrets(keycode, record) #ifdef RGB_MATRIX_ENABLE && process_record_user_rgb_matrix(keycode, record) && process_record_user_rgb_matrix(keycode, record) #endif #ifdef RGBLIGHT_ENABLE && process_record_user_rgb_light(keycode, record) && process_record_user_rgb_light(keycode, record) #endif && true)) { && true)) { return false; }
M users/drashna/process_records.h => users/drashna/process_records.h +1 -0
@@ 55,6 55,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record); #define ADJUST MO(_ADJUST) #define TG_MODS TG(_MODS) #define TG_GAME TG(_GAMEPAD) #define TG_DBLO TG(_DIABLO) #define OS_LWR OSL(_LOWER) #define OS_RSE OSL(_RAISE)
M users/drashna/rgb_stuff.c => users/drashna/rgb_stuff.c +28 -24
@@ 14,15 14,17 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include "drashna.h" #include "rgb_stuff.h" #include "eeprom.h" #ifdef RGBLIGHT_ENABLE # include "drashna.h" # include "rgb_stuff.h" # include "eeprom.h" bool has_initialized; bool has_initialized; void rgblight_sethsv_default_helper(uint8_t index) { rgblight_sethsv_at(rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val(), index); } #ifdef RGBLIGHT_TWINKLE # ifdef RGBLIGHT_TWINKLE static rgblight_fadeout lights[RGBLED_NUM]; @@ /* Handler for fading/twinkling effect */ 91,7 93,7 @@ void start_rgb_light(void) { rgblight_sethsv_at(light->hue, 255, light->life, light_index); } #endif # endif bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) { @@ uint16_t temp_keycode = keycode; 101,7 103,7 @@ bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) { } switch (temp_keycode) { #ifdef RGBLIGHT_TWINKLE # ifdef RGBLIGHT_TWINKLE case KC_A ... KC_SLASH: case KC_F1 ... KC_F12: @@ case KC_INSERT ... KC_UP: 112,20 114,20 @@ bool process_record_user_rgb_light(uint16_t keycode, keyrecord_t *record) { start_rgb_light(); } break; #endif // RGBLIGHT_TWINKLE # endif // RGBLIGHT_TWINKLE } return true; } #if defined(RGBLIGHT_STARTUP_ANIMATION) static bool is_enabled; static bool is_rgblight_startup; static uint8_t old_hue; # if defined(RGBLIGHT_STARTUP_ANIMATION) static bool is_enabled; static bool is_rgblight_startup; static uint8_t old_hue; static uint16_t rgblight_startup_loop_timer; #endif # endif void keyboard_post_init_rgb_light(void) { #if defined(RGBLIGHT_STARTUP_ANIMATION) # if defined(RGBLIGHT_STARTUP_ANIMATION) is_enabled = rgblight_is_enabled(); if (userspace_config.rgb_layer_change) { @@ rgblight_enable_noeeprom(); 136,7 138,7 @@ void keyboard_post_init_rgb_light(void) { rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); is_rgblight_startup = true; } #endif # endif layer_state_set_rgb_light(layer_state); } @@ 145,7 147,7 @@ void matrix_scan_rgb_light(void) { scan_rgblight_fadeout(); # endif // RGBLIGHT_ENABLE #if defined(RGBLIGHT_STARTUP_ANIMATION) # if defined(RGBLIGHT_STARTUP_ANIMATION) if (is_rgblight_startup && is_keyboard_master()) { if (timer_elapsed(rgblight_startup_loop_timer) > 10) { @@ static uint8_t counter; 163,7 165,7 @@ void matrix_scan_rgb_light(void) { } } } #endif # endif } @@ void 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 } layer_state_t layer_state_set_rgb_light(layer_state_t state) { #ifdef RGBLIGHT_ENABLE # ifdef RGBLIGHT_ENABLE if (userspace_config.rgb_layer_change) { uint8_t mode = layer_state_cmp(state,_MODS) ? RGBLIGHT_MODE_BREATHING : RGBLIGHT_MODE_STATIC_LIGHT; switch (get_highest_layer(state|default_layer_state)) { uint8_t mode = layer_state_cmp(state, _MODS) ? RGBLIGHT_MODE_BREATHING : RGBLIGHT_MODE_STATIC_LIGHT; switch (get_highest_layer(state | default_layer_state)) { case _MACROS: # ifdef RGBLIGHT_EFFECT_TWINKLE # ifdef RGBLIGHT_EFFECT_TWINKLE rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_TWINKLE + 5); # else # else rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_BREATHING + 3); # endif # endif break; case _MEDIA: @@ 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) { break; } } #endif // RGBLIGHT_ENABLE # endif // RGBLIGHT_ENABLE return state; } #endif
M users/drashna/rules.mk => users/drashna/rules.mk +24 -0
@@ 66,3 66,27 @@ ifeq ($(strip $(PIMORONI_TRACKBALL_ENABLE)), yes) SRC += pimoroni_trackball.c QUANTUM_LIB_SRC += i2c_master.c endif ifeq ($(strip $(SPLIT_KEYBOARD)), yes) ifneq ($(strip $(SPLIT_TRANSPORT)), custom) SPLIT_TRANSPORT = custom QUANTUM_LIB_SRC += drashna_transport.c OPT_DEFS += -DDRASHNA_CUSTOM_TRANSPORT # Unused functions are pruned away, which is why we can add multiple drivers here without bloat. ifeq ($(PLATFORM),AVR) ifneq ($(NO_I2C),yes) QUANTUM_LIB_SRC += i2c_master.c \ i2c_slave.c endif endif SERIAL_DRIVER ?= bitbang OPT_DEFS += -DSERIAL_DRIVER_$(strip $(shell echo $(SERIAL_DRIVER) | tr '[:lower:]' '[:upper:]')) ifeq ($(strip $(SERIAL_DRIVER)), bitbang) QUANTUM_LIB_SRC += serial.c else QUANTUM_LIB_SRC += serial_$(strip $(SERIAL_DRIVER)).c endif endif endif
M users/drashna/wrappers.h => users/drashna/wrappers.h +86 -81
@@ 21,19 21,6 @@ Since our quirky block definitions are basically a list of comma separated arguments, we need a wrapper in order for these definitions to be expanded before being used as arguments to the LAYOUT_xxx macro. */ #if (!defined(LAYOUT) && defined(KEYMAP)) # define LAYOUT KEYMAP #endif // clang-format off #define LAYOUT_ergodox_wrapper(...) LAYOUT_ergodox(__VA_ARGS__) #define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__) #define KEYMAP_wrapper(...) LAYOUT(__VA_ARGS__) #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) #define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__) #define LAYOUT_ortho_5x12_wrapper(...) LAYOUT_ortho_5x12(__VA_ARGS__) #define LAYOUT_gergo_wrapper(...) LAYOUT_gergo(__VA_ARGS__) #define LAYOUT_split_3x6_3_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__) /* @@ Blocks 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 then you need to add/remove underscores to keep the lengths consistent. */ // clang-format off #define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T #define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G #define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B #define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T #define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G #define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B #define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P #define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN #define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH #define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P #define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT #define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH @@ #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 #define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B #define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN #define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O #define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH #define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT #define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH #define ______________COLEMAK_MOD_DH_L1____________ KC_Q, KC_W, KC_F, KC_P, KC_B #define ______________COLEMAK_MOD_DH_L2____________ KC_A, KC_R, KC_S, KC_T, KC_G #define ______________COLEMAK_MOD_DH_L3____________ KC_Z, KC_X, KC_C, KC_D, KC_V #define ______________COLEMAK_MOD_DH_R1____________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN #define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O #define ______________COLEMAK_MOD_DH_R2____________ KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT #define ______________COLEMAK_MOD_DH_R3____________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH @@ 78,7 65,7 @@ NOTE: These are all the same length. If you do a search/replace #define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X #define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L #define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S #define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH #define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z @@ 87,88 74,106 @@ NOTE: These are all the same length. If you do a search/replace #define ________________DVORAK_AU_L3_______________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X #define ________________DVORAK_AU_R1_______________ KC_F, KC_G, KC_C, KC_R, KC_L #define ________________DVORAK_AU_R2_______________ KC_D, KC_H, KC_T, KC_N, KC_S #define ________________DVORAK_AU_R2_______________ KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH #define ________________DVORAK_AU_R3_______________ KC_B, KC_M, KC_W, KC_V, KC_Z #define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B #define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G #define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V #define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B #define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G #define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V #define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN #define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT #define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH #define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN #define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I #define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH #define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K #define _________________NORMAN_L2_________________ KC_A, KC_S, KC_E, KC_T, KC_G #define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B #define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN #define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, KC_U, KC_QUOT #define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLSH #define _________________NORMAN_L1_________________ KC_Q, KC_W, KC_D, KC_F, KC_K #define _________________NORMAN_L2_________________ KC_A, KC_S, KC_E, KC_T, KC_G #define _________________NORMAN_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B #define _________________NORMAN_R1_________________ KC_J, KC_U, KC_R, KC_L, KC_SCLN #define _________________NORMAN_R2_________________ KC_Y, KC_N, KC_I, KC_O, KC_U #define _________________NORMAN_R3_________________ KC_P, KC_M, KC_COMM, KC_DOT, KC_SLASH #define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B #define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F #define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM #define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L #define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R, KC_QUOT #define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X #define _________________MALTRON_L1________________ KC_Q, KC_P, KC_Y, KC_C, KC_B #define _________________MALTRON_L2________________ KC_A, KC_N, KC_I, KC_S, KC_F #define _________________MALTRON_L3________________ KC_SCLN, KC_SLSH, KC_J, KC_G, KC_COMM #define _________________MALTRON_R1________________ KC_V, KC_M, KC_U, KC_Z, KC_L #define _________________MALTRON_R2________________ KC_D, KC_T, KC_D, KC_O, KC_R #define _________________MALTRON_R3________________ KC_DOT, KC_W, KC_K, KC_MINS, KC_X #define _________________EUCALYN_L1________________ KC_Q, KC_W, KC_COMM, KC_DOT, KC_SCLN #define _________________EUCALYN_L2________________ KC_A, KC_O, KC_E, KC_I, KC_U #define _________________EUCALYN_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_F #define _________________EUCALYN_R1________________ KC_M, KC_R, KC_D, KC_Y, KC_P #define _________________EUCALYN_R2________________ KC_G, KC_T, KC_K, KC_S, KC_N, KC_QUOT #define _________________EUCALYN_R3________________ KC_B, KC_H, KC_J, KC_L, KC_SLSH #define _________________EUCALYN_L1________________ KC_SLSH, KC_COMM, KC_DOT, KC_F, KC_Q #define _________________EUCALYN_L2________________ KC_A, KC_O, KC_E, KC_I, KC_U #define _________________EUCALYN_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_W // Qwerty-like #define _____________CARPLAX_QFMLWY_L1_____________ KC_Q, KC_F, KC_M, KC_L, KC_W #define _____________CARPLAX_QFMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R #define _____________CARPLAX_QFMLWY_L3_____________ KC_Z, KC_V, KC_G, KC_C, KC_X #define _________________EUCALYN_R1________________ KC_M, KC_R, KC_D, KC_Y, KC_P #define _________________EUCALYN_R2________________ KC_G, KC_T, KC_K, KC_S, KC_N #define _________________EUCALYN_R3________________ KC_B, KC_H, KC_J, KC_L, KC_SCLN #define _____________CARPLAX_QFMLWY_R1_____________ KC_Y, KC_U, KC_O, KC_B, KC_J #define _____________CARPLAX_QFMLWY_R2_____________ KC_I, KC_A, KC_E, KC_H, KC_SCLN, KC_QUOT #define _____________CARPLAX_QFMLWY_R3_____________ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH // Colemak like #define _____________CARPLAX_QGMLWB_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W #define _____________CARPLAX_QGMLWB_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R #define _____________CARPLAX_QGMLWB_L3_____________ KC_Z, KC_X, KC_C, KC_F, KC_J #define _____________CARPLAX_QFMLWY_L1_____________ KC_Q, KC_F, KC_M, KC_L, KC_W #define _____________CARPLAX_QFMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R #define _____________CARPLAX_QFMLWY_L3_____________ KC_Z, KC_V, KC_G, KC_C, KC_X #define _____________CARPLAX_QGMLWB_R1_____________ KC_B, KC_Y, KC_U, KC_V, KC_SCLN #define _____________CARPLAX_QGMLWB_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT #define _____________CARPLAX_QGMLWB_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH #define _____________CARPLAX_QFMLWY_R1_____________ KC_Y, KC_U, KC_O, KC_B, KC_J #define _____________CARPLAX_QFMLWY_R2_____________ KC_I, KC_A, KC_E, KC_H, KC_SCLN #define _____________CARPLAX_QFMLWY_R3_____________ KC_P, KC_K, KC_COMM, KC_DOT, KC_SLSH // colemak like, zxcv fixed #define _____________CARPLAX_QGMLWY_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W #define _____________CARPLAX_QGMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R #define _____________CARPLAX_QGMLWY_L3_____________ KC_Z, KC_X, KC_C, KC_V, KC_J #define _____________CARPLAX_QGMLWY_R1_____________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN #define _____________CARPLAX_QGMLWY_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT #define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH #define _____________CARPLAX_QGMLWB_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W #define _____________CARPLAX_QGMLWB_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R #define _____________CARPLAX_QGMLWB_L3_____________ KC_Z, KC_X, KC_C, KC_F, KC_J // teeheehee #define _____________CARPLAX_TNWCLR_L1_____________ KC_T, KC_N, KC_W, KC_C, KC_L #define _____________CARPLAX_TNWCLR_L2_____________ KC_S, KC_K, KC_J, KC_X, KC_G #define _____________CARPLAX_TNWCLR_L3_____________ KC_E, KC_O, KC_D, KC_I, KC_A #define _____________CARPLAX_QGMLWB_R1_____________ KC_B, KC_Y, KC_U, KC_V, KC_SCLN #define _____________CARPLAX_QGMLWB_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H #define _____________CARPLAX_QGMLWB_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH #define _____________CARPLAX_TNWCLR_R1_____________ KC_R, KC_B, KC_F, KC_M, KC_H #define _____________CARPLAX_TNWCLR_R2_____________ KC_P, KC_Q, KC_Z, KC_V, KC_SCLN, KC_QUOT #define _____________CARPLAX_TNWCLR_R3_____________ KC_U, KC_Y, KC_COMM, KC_DOT, KC_SLSH #define _____________CARPLAX_QGMLWY_L1_____________ KC_Q, KC_G, KC_M, KC_L, KC_W #define _____________CARPLAX_QGMLWY_L2_____________ KC_D, KC_S, KC_T, KC_N, KC_R #define _____________CARPLAX_QGMLWY_L3_____________ KC_Z, KC_X, KC_C, KC_V, KC_J #define _________________WHITE_R1__________________ KC_V, KC_Y, KC_D, KC_COMM, KC_QUOT #define _________________WHITE_R2__________________ KC_A, KC_T, KC_H, KC_E, KC_B #define _________________WHITE_R3__________________ KC_P, KC_K, KC_G, KC_W, KC_Q #define _____________CARPLAX_QGMLWY_R1_____________ KC_Y, KC_F, KC_U, KC_B, KC_SCLN #define _____________CARPLAX_QGMLWY_R2_____________ KC_I, KC_A, KC_E, KC_O, KC_H #define _____________CARPLAX_QGMLWY_R3_____________ KC_K, KC_P, KC_COMM, KC_DOT, KC_SLSH #define _________________WHITE_L1__________________ KC_INT1, KC_J, KC_M, KC_L, KC_U #define _________________WHITE_L2__________________ KC_MINS, KC_C, KC_S, KC_N, KC_O, KC_I #define _________________WHITE_L3__________________ KC_X, KC_R, KC_F, KC_DOT, KC_Z #define _________________WHITE_R1__________________ KC_V, KC_Y, KC_D, KC_COMM, KC_QUOT #define _________________WHITE_R2__________________ KC_A, KC_T, KC_H, KC_E, KC_B #define _________________WHITE_R3__________________ KC_P, KC_K, KC_G, KC_W, KC_Q #define _________________HALMAK_L1_________________ KC_W, KC_L, KC_R, KC_B, KC_Z #define _________________HALMAK_L2_________________ KC_S, KC_H, KC_N, KC_T, KC_COMM #define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH #define _________________WHITE_L1__________________ KC_INT1, KC_J, KC_M, KC_L, KC_U #define _________________WHITE_L2__________________ KC_MINS, KC_C, KC_S, KC_N, KC_O // KC_I #define _________________WHITE_L3__________________ KC_X, KC_R, KC_F, KC_DOT, KC_Z #define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J #define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I, KC_QUOTE #define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y #define _________________HALMAK_L1_________________ KC_W, KC_L, KC_R, KC_B, KC_Z #define _________________HALMAK_L2_________________ KC_S, KC_H, KC_N, KC_T, KC_COMM #define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH #define _________________HALMAK_L1_________________ KC_W, KC_L, KC_R, KC_B, KC_Z #define _________________HALMAK_L2_________________ KC_S, KC_H, KC_N, KC_T, KC_COMM #define _________________HALMAK_L3_________________ KC_F, KC_M, KC_V, KC_V, KC_SLASH #define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J #define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I #define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y #define _________________HALMAK_R1_________________ KC_SCLN, KC_Q, KC_U, KC_D, KC_J #define _________________HALMAK_R2_________________ KC_DOT, KC_A, KC_E, KC_O, KC_I, KC_QUOTE #define _________________HALMAK_R3_________________ KC_G, KC_P, KC_X, KC_K, KC_Y @@ #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 #define _________________LOWER_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN #define _________________LOWER_R2__________________ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR #define _________________LOWER_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT #define _________________LOWER_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END @@ 195,7 200,7 @@ NOTE: These are all the same length. If you do a search/replace #define _________________RAISE_R1__________________ ________________NUMBER_RIGHT_______________ #define _________________RAISE_R2__________________ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC #define _________________RAISE_R3__________________ _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END #define _________________RAISE_R3__________________ _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT