diff --git a/keyboards/barbellboards/rollow/keymaps/t4corun/rules.mk b/keyboards/barbellboards/rollow/keymaps/t4corun/rules.mk index ef9cbaeb..fc0cdd7c 100644 --- a/keyboards/barbellboards/rollow/keymaps/t4corun/rules.mk +++ b/keyboards/barbellboards/rollow/keymaps/t4corun/rules.mk @@ -5,4 +5,5 @@ # keyboards\barbellboards\rollow\info.json # keyboards\barbellboards\rollow\rules.mk +LTO_ENABLE = no CONVERT_TO = promicro_rp2040 \ No newline at end of file diff --git a/keyboards/klor/keymaps/t4corun/keymap.c b/keyboards/klor/keymaps/t4corun/keymap.c index 690aa5a7..11db598d 100644 --- a/keyboards/klor/keymaps/t4corun/keymap.c +++ b/keyboards/klor/keymaps/t4corun/keymap.c @@ -32,16 +32,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) -/* These are horizontal encoders. Found I have to make it opposite the rotary encoders for it to feel intuitive*/ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [_QWERTY] = { ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, - [_COLEMAK_DH] = { ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, - [_GAME] = { ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, - [_NAVIGATION] = { ENCODER_CCW_CW(ZOOMIN, ZOOMOUT), ENCODER_CCW_CW(___x___, ___x___) }, - [_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_RGHT, KC_LEFT) }, + [_QWERTY] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_COLEMAK_DH] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_GAME] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_NAVIGATION] = { ENCODER_CCW_CW(ZOOMOUT, ZOOMIN), ENCODER_CCW_CW(___x___, ___x___) }, + [_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_LEFT, KC_RGHT) }, [_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, - [_CONFIG] = { ENCODER_CCW_CW(BASELYR, RBSELYR), ENCODER_CCW_CW(TR_RMOD, TR_RRMD) } + [_CONFIG] = { ENCODER_CCW_CW(RBSELYR, BASELYR), ENCODER_CCW_CW(TR_RRMD, TR_RMOD) } }; diff --git a/keyboards/klor/keymaps/t4corun/rules.mk b/keyboards/klor/keymaps/t4corun/rules.mk index 956e11ac..fabb46eb 100644 --- a/keyboards/klor/keymaps/t4corun/rules.mk +++ b/keyboards/klor/keymaps/t4corun/rules.mk @@ -1,5 +1,7 @@ # override userspace defaults +ENCODER_MAP_ENABLE = yes + # override keyboard defaults # keyboards\klor\info.json # keyboards\klor\rules.mk @@ -7,6 +9,7 @@ AUDIO_ENABLE = yes HAPTIC_ENABLE = yes RGB_MATRIX_ENABLE = yes +SWAP_HANDS_ENABLE = no # Choose your layout KLOR_CONFIG = saegewerk \ No newline at end of file diff --git a/qmk.json b/qmk.json index af6e7139..a9d451de 100644 --- a/qmk.json +++ b/qmk.json @@ -2,7 +2,6 @@ "userspace_version": "1.0", "build_targets": [ - ["ploopyco/trackball_nano", "lkbm"], ["crkbd/rev1", "t4corun"], ["bastardkb/charybdis/3x5/v2/splinky_3", "t4corun"], ["planck/rev6", "t4corun"], diff --git a/users/t4corun/features/keyoverride.h b/users/t4corun/features/keyoverride.h index 2a576cc3..8d56cfb9 100644 --- a/users/t4corun/features/keyoverride.h +++ b/users/t4corun/features/keyoverride.h @@ -1,2 +1,3 @@ #pragma once + #include "t4corun.h" \ No newline at end of file diff --git a/users/t4corun/features/luna.c b/users/t4corun/features/luna.c new file mode 100644 index 00000000..9650095a --- /dev/null +++ b/users/t4corun/features/luna.c @@ -0,0 +1,71 @@ +#include "luna.h" + +static uint32_t luna_anim_timer = 0; +static uint8_t luna_current_frame = 0; + +void render_luna(void) { + +#if OLED_TIMEOUT > 0 + // the animation prevents the normal timeout from occuring + if (last_input_activity_elapsed() > OLED_TIMEOUT && last_led_activity_elapsed() > OLED_TIMEOUT) { + oled_off(); + return; + } else { + oled_on(); + } +#endif //OLED_TIMEOUT + + if (timer_elapsed32(luna_anim_timer) > OLED_LUNA_ANIM_FRAME_DURATION) { + luna_anim_timer = timer_read32(); + animate_luna(OLED_LUNA_X, OLED_LUNA_Y); + } + +} + +void animate_luna(int LUNA_X, int LUNA_Y) { + + uint8_t current_mod = get_mods(); + uint8_t current_osm = get_oneshot_mods(); + + // Make Luna Jump when spacebar is pressed + // Only works when Luna is rendered on Master Slide + if (isLunaJumping() || !isJumpShown()) { + /* clear */ + oled_set_cursor(LUNA_X, LUNA_Y + 2); + oled_write(" ", false); + oled_set_cursor(LUNA_X, LUNA_Y - 1); + + setLunaJumped(); + } else { + /* clear */ + oled_set_cursor(LUNA_X, LUNA_Y - 1); + oled_write(" ", false); + oled_set_cursor(LUNA_X, LUNA_Y); + } + + luna_current_frame = (luna_current_frame + 1) % 2; + + // Animate based on status + if (host_keyboard_led_state().caps_lock || is_caps_word_on()) { + + oled_write_raw_P(bark[luna_current_frame], OLED_LUNA_ANIM_SIZE); + + } else if ((current_mod | current_osm) & MOD_MASK_CTRL) { + + oled_write_raw_P(sneak[luna_current_frame], OLED_LUNA_ANIM_SIZE); + + } else if (get_current_wpm() <= OLED_LUNA_MIN_WALK_SPEED) { + + oled_write_raw_P(sit[luna_current_frame], OLED_LUNA_ANIM_SIZE); + + } else if (get_current_wpm() <= OLED_LUNA_MIN_RUN_SPEED) { + + oled_write_raw_P(walk[luna_current_frame], OLED_LUNA_ANIM_SIZE); + + } else { + + oled_write_raw_P(run[luna_current_frame], OLED_LUNA_ANIM_SIZE); + + } + +} \ No newline at end of file diff --git a/users/t4corun/features/oled.h b/users/t4corun/features/luna.h similarity index 63% rename from users/t4corun/features/oled.h rename to users/t4corun/features/luna.h index 3ca91925..f55bfd6f 100644 --- a/users/t4corun/features/oled.h +++ b/users/t4corun/features/luna.h @@ -2,123 +2,9 @@ #include "t4corun.h" -#define OLED_RENDER_KEYLOCK_NAME "Lock" -#define OLED_RENDER_MODS_NAME "Mods" -#define OLED_RENDER_FEATURE_NAME "Feat" -#define OLED_RENDER_WPM_NAME "Wpm" - -#define OLED_RENDER_LAYOUT_QWERTY "QWRTY" -#define OLED_RENDER_LAYOUT_COLEMAK_DH "CLMAK" -#define OLED_RENDER_LAYOUT_GAME "GAME" - -#define OLED_RENDER_LAYER_BASE " Def" -#define OLED_RENDER_LAYER_NAVIGATION " Nav" -#define OLED_RENDER_LAYER_NUMBER " Num" -#define OLED_RENDER_LAYER_SYMBOL " Sym" -#define OLED_RENDER_LAYER_CONFIG " Cfg" - - // LUNA PET Variables -#if defined(WPM_ENABLE) -# define OLED_LUNA_X 0 -# define OLED_LUNA_Y 13 -# define OLED_LUNA_MIN_WALK_SPEED 10 -# define OLED_LUNA_MIN_RUN_SPEED 40 -# define OLED_LUNA_ANIM_FRAME_DURATION 200 // how long each frame lasts in ms -# define OLED_LUNA_ANIM_SIZE 96 // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024 - -void render_luna(void); -void animate_luna(int LUNA_X, int LUNA_Y); -#endif //WPM_ENABLE - - - -void render_default_layer_state(void); -void render_layer_state(void); -void render_keylock_status(void); -void render_mod_status(void); -void render_feature_status(void); -bool oled_task_user(void); -oled_rotation_t oled_init_user(oled_rotation_t rotation); - - -static const char PROGMEM scroll_off[] = {0x8D, 0}; -static const char PROGMEM scroll_on[] = {0x8E, 0}; - -static const char PROGMEM num_off[] = {0xAD, 0}; -static const char PROGMEM num_on[] = {0xAE, 0}; - -static const char PROGMEM caps_off[] = {0xCD, 0}; -static const char PROGMEM caps_on[] = {0xCE, 0}; - -static const char PROGMEM shift_off[] = {0x85, 0x86, 0}; -static const char PROGMEM shift_on[] = {0x87, 0x88, 0}; - -static const char PROGMEM ctrl_off[] = {0xA9, 0xAA, 0}; -static const char PROGMEM ctrl_on[] = {0xAB, 0xAC, 0}; - -static const char PROGMEM alt_off[] = {0xA5, 0xA6, 0}; -static const char PROGMEM alt_on[] = {0xA7, 0xA8, 0}; - -static const char PROGMEM gui_off[] = {0x89, 0x8A, 0}; -static const char PROGMEM gui_on[] = {0x8B, 0x8C, 0}; - -static const char PROGMEM rgb_off[] = {0xC5, 0xC6, 0}; -static const char PROGMEM rgb_on[] = {0xC7, 0xC8, 0}; - -static const char PROGMEM dragscr_off[] = {0xC9, 0xCA, 0}; -static const char PROGMEM dragscr_on[] = {0xCB, 0xCC, 0}; - -static const char PROGMEM sound_off[] = {0x8F, 0x90, 0}; -static const char PROGMEM sound_on[] = {0xAF, 0xB0, 0}; - -static const char PROGMEM haptic_off[] = {0x91, 0x92, 0}; -static const char PROGMEM haptic_on[] = {0xB1, 0xB2, 0}; - -static const char PROGMEM lyr_cfg[] = { - 0xE1, 0xD1, 0xD2, 0xD3, 0xE1, - 0xE1, 0xBA, 0xBB, 0xBC, 0xE1, - 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, - 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 -}; - -static const char PROGMEM lyr_sym[] = { - 0xE1, 0x97, 0x98, 0x99, 0xE1, - 0xE1, 0xDA, 0xDB, 0xDC, 0xE1, - 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, - 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 -}; - -static const char PROGMEM lyr_num[] = { - 0xE1, 0x97, 0x98, 0x99, 0xE1, - 0xE1, 0x9A, 0x9B, 0x9C, 0xE1, - 0xE1, 0xBA, 0xBB, 0xBC, 0xE1, - 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 -}; - -static const char PROGMEM lyr_nav[] = { - 0xE1, 0x97, 0x98, 0x99, 0xE1, - 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, - 0xE1, 0xDA, 0xDB, 0xDC, 0xE1, - 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 -}; - -static const char PROGMEM lyr_def[] = { - 0xE1, 0x97, 0x98, 0x99, 0xE1, - 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, - 0xE1, 0x9A, 0x9B, 0x9C, 0xE1, - 0xE1, 0xD4, 0xD5, 0xD6, 0xE1, 0x00 -}; - -static const char PROGMEM qmk_logo_small[] = { - 0xE1, 0x9D, 0x9E, 0x9F, 0xE1, - 0xE1, 0xBD, 0xBE, 0xBF, 0xE1, - 0xE1, 0xDD, 0xDE, 0xDF, 0xE1, 0x00 -}; - - - -#if defined(WPM_ENABLE) +void render_luna(void); +void animate_luna(int LUNA_X, int LUNA_Y); // Luna Sit static const char PROGMEM sit[2][OLED_LUNA_ANIM_SIZE] = { @@ -164,5 +50,3 @@ static const char PROGMEM sneak[2][OLED_LUNA_ANIM_SIZE] = { /* 'sneak2', 32x22px */ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04, 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,} }; - -#endif //WPM_ENABLE \ No newline at end of file diff --git a/users/t4corun/features/oled.c b/users/t4corun/features/oled32.c similarity index 70% rename from users/t4corun/features/oled.c rename to users/t4corun/features/oled32.c index 2b12d253..1aaba4fc 100644 --- a/users/t4corun/features/oled.c +++ b/users/t4corun/features/oled32.c @@ -1,84 +1,8 @@ -#include "oled.h" - -/* LUNA PET START */ +#include "oled32.h" #if defined(WPM_ENABLE) - -static uint32_t luna_anim_timer = 0; -static uint8_t luna_current_frame = 0; - -void render_luna(void) { - -#if OLED_TIMEOUT > 0 - // the animation prevents the normal timeout from occuring - if (last_input_activity_elapsed() > OLED_TIMEOUT && last_led_activity_elapsed() > OLED_TIMEOUT) { - oled_off(); - return; - } else { - oled_on(); - } -#endif //OLED_TIMEOUT - - if (timer_elapsed32(luna_anim_timer) > OLED_LUNA_ANIM_FRAME_DURATION) { - luna_anim_timer = timer_read32(); - animate_luna(OLED_LUNA_X, OLED_LUNA_Y); - } - -} - -void animate_luna(int LUNA_X, int LUNA_Y) { - - uint8_t current_mod = get_mods(); - uint8_t current_osm = get_oneshot_mods(); - - // Make Luna Jump when spacebar is pressed - // Only works when Luna is rendered on Master Slide - if (isLunaJumping() || !isJumpShown()) { - /* clear */ - oled_set_cursor(LUNA_X, LUNA_Y + 2); - oled_write(" ", false); - oled_set_cursor(LUNA_X, LUNA_Y - 1); - - setLunaJumped(); - } else { - /* clear */ - oled_set_cursor(LUNA_X, LUNA_Y - 1); - oled_write(" ", false); - oled_set_cursor(LUNA_X, LUNA_Y); - } - - luna_current_frame = (luna_current_frame + 1) % 2; - - // Animate based on status - if (host_keyboard_led_state().caps_lock || is_caps_word_on()) { - - oled_write_raw_P(bark[luna_current_frame], OLED_LUNA_ANIM_SIZE); - - } else if ((current_mod | current_osm) & MOD_MASK_CTRL) { - - oled_write_raw_P(sneak[luna_current_frame], OLED_LUNA_ANIM_SIZE); - - } else if (get_current_wpm() <= OLED_LUNA_MIN_WALK_SPEED) { - - oled_write_raw_P(sit[luna_current_frame], OLED_LUNA_ANIM_SIZE); - - } else if (get_current_wpm() <= OLED_LUNA_MIN_RUN_SPEED) { - - oled_write_raw_P(walk[luna_current_frame], OLED_LUNA_ANIM_SIZE); - - } else { - - oled_write_raw_P(run[luna_current_frame], OLED_LUNA_ANIM_SIZE); - - } - -} - -#endif //WPM_ENABLE - -/* KEYBOARD PET END */ - - + #include "luna.c" +#endif // Prints the current base layer @@ -246,5 +170,10 @@ bool oled_task_user(void) { oled_rotation_t oled_init_user(oled_rotation_t rotation) { + + //OLED_ROTATION_270 for Rollow/Corne/Swoop + //OLED_ROTATION_0 for KLOR + return OLED_ROTATION_270; + } diff --git a/users/t4corun/features/oled32.h b/users/t4corun/features/oled32.h new file mode 100644 index 00000000..6a3975a8 --- /dev/null +++ b/users/t4corun/features/oled32.h @@ -0,0 +1,111 @@ +#pragma once + +#include "t4corun.h" + +#define OLED_RENDER_KEYLOCK_NAME "Lock" +#define OLED_RENDER_MODS_NAME "Mods" +#define OLED_RENDER_FEATURE_NAME "Feat" +#define OLED_RENDER_WPM_NAME "Wpm" + +#define OLED_RENDER_LAYOUT_QWERTY "QWRTY" +#define OLED_RENDER_LAYOUT_COLEMAK_DH "CLMAK" +#define OLED_RENDER_LAYOUT_GAME "GAME" + +#define OLED_RENDER_LAYER_BASE " Def" +#define OLED_RENDER_LAYER_NAVIGATION " Nav" +#define OLED_RENDER_LAYER_NUMBER " Num" +#define OLED_RENDER_LAYER_SYMBOL " Sym" +#define OLED_RENDER_LAYER_CONFIG " Cfg" + +// LUNA PET Variables +#if defined(WPM_ENABLE) +# define OLED_LUNA_X 0 +# define OLED_LUNA_Y 13 +# define OLED_LUNA_MIN_WALK_SPEED 10 +# define OLED_LUNA_MIN_RUN_SPEED 40 +# define OLED_LUNA_ANIM_FRAME_DURATION 200 // how long each frame lasts in ms +# define OLED_LUNA_ANIM_SIZE 96 // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024 +#endif //WPM_ENABLE + + + +void render_default_layer_state(void); +void render_layer_state(void); +void render_keylock_status(void); +void render_mod_status(void); +void render_feature_status(void); + + +static const char PROGMEM scroll_off[] = {0x8D, 0}; +static const char PROGMEM scroll_on[] = {0x8E, 0}; + +static const char PROGMEM num_off[] = {0xAD, 0}; +static const char PROGMEM num_on[] = {0xAE, 0}; + +static const char PROGMEM caps_off[] = {0xCD, 0}; +static const char PROGMEM caps_on[] = {0xCE, 0}; + +static const char PROGMEM shift_off[] = {0x85, 0x86, 0}; +static const char PROGMEM shift_on[] = {0x87, 0x88, 0}; + +static const char PROGMEM ctrl_off[] = {0xA9, 0xAA, 0}; +static const char PROGMEM ctrl_on[] = {0xAB, 0xAC, 0}; + +static const char PROGMEM alt_off[] = {0xA5, 0xA6, 0}; +static const char PROGMEM alt_on[] = {0xA7, 0xA8, 0}; + +static const char PROGMEM gui_off[] = {0x89, 0x8A, 0}; +static const char PROGMEM gui_on[] = {0x8B, 0x8C, 0}; + +static const char PROGMEM rgb_off[] = {0xC5, 0xC6, 0}; +static const char PROGMEM rgb_on[] = {0xC7, 0xC8, 0}; + +static const char PROGMEM dragscr_off[] = {0xC9, 0xCA, 0}; +static const char PROGMEM dragscr_on[] = {0xCB, 0xCC, 0}; + +static const char PROGMEM sound_off[] = {0x8F, 0x90, 0}; +static const char PROGMEM sound_on[] = {0xAF, 0xB0, 0}; + +static const char PROGMEM haptic_off[] = {0x91, 0x92, 0}; +static const char PROGMEM haptic_on[] = {0xB1, 0xB2, 0}; + +static const char PROGMEM lyr_cfg[] = { + 0xE1, 0xD1, 0xD2, 0xD3, 0xE1, + 0xE1, 0xBA, 0xBB, 0xBC, 0xE1, + 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, + 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 +}; + +static const char PROGMEM lyr_sym[] = { + 0xE1, 0x97, 0x98, 0x99, 0xE1, + 0xE1, 0xDA, 0xDB, 0xDC, 0xE1, + 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, + 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 +}; + +static const char PROGMEM lyr_num[] = { + 0xE1, 0x97, 0x98, 0x99, 0xE1, + 0xE1, 0x9A, 0x9B, 0x9C, 0xE1, + 0xE1, 0xBA, 0xBB, 0xBC, 0xE1, + 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 +}; + +static const char PROGMEM lyr_nav[] = { + 0xE1, 0x97, 0x98, 0x99, 0xE1, + 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, + 0xE1, 0xDA, 0xDB, 0xDC, 0xE1, + 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 +}; + +static const char PROGMEM lyr_def[] = { + 0xE1, 0x97, 0x98, 0x99, 0xE1, + 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, + 0xE1, 0x9A, 0x9B, 0x9C, 0xE1, + 0xE1, 0xD4, 0xD5, 0xD6, 0xE1, 0x00 +}; + +static const char PROGMEM qmk_logo_small[] = { + 0xE1, 0x9D, 0x9E, 0x9F, 0xE1, + 0xE1, 0xBD, 0xBE, 0xBF, 0xE1, + 0xE1, 0xDD, 0xDE, 0xDF, 0xE1, 0x00 +}; \ No newline at end of file diff --git a/users/t4corun/features/oled64.c b/users/t4corun/features/oled64.c new file mode 100644 index 00000000..4c71e325 --- /dev/null +++ b/users/t4corun/features/oled64.c @@ -0,0 +1,44 @@ +#include "oled64.h" + +#if defined(WPM_ENABLE) + #include "luna.c" +#endif + + +// Coordinate the OLED rendering +bool oled_task_user(void) { + + if (is_keyboard_master()) { + /* + oled_write_P(PSTR("123456789012345678901"), true); + oled_write_ln_P(PSTR("2"), false); + oled_write_ln_P(PSTR("3"), false); + oled_write_ln_P(PSTR("4"), false); + oled_write_ln_P(PSTR("5"), false); + oled_write_ln_P(PSTR("6"), false); + oled_write_ln_P(PSTR("7"), false); + oled_write_ln_P(PSTR("8"), false); + //oled_write_ln_P(PSTR("9"), false); +*/ + +#if defined(WPM_ENABLE) + render_luna(); +#endif + + } else { + oled_write_raw_P(klor_face, sizeof(klor_face)); + } + + return false; + +} + + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + + //OLED_ROTATION_270 for Rollow/Corne/Swoop + //OLED_ROTATION_180 for KLOR + + return OLED_ROTATION_270; + +} diff --git a/users/t4corun/features/oled64.h b/users/t4corun/features/oled64.h new file mode 100644 index 00000000..28ca0534 --- /dev/null +++ b/users/t4corun/features/oled64.h @@ -0,0 +1,149 @@ +#pragma once + +#include "t4corun.h" + +#define OLED_RENDER_KEYLOCK_NAME "Lock" +#define OLED_RENDER_MODS_NAME "Mods" +#define OLED_RENDER_FEATURE_NAME "Feat" +#define OLED_RENDER_WPM_NAME "Wpm" + +#define OLED_RENDER_LAYOUT_QWERTY "QWRTY" +#define OLED_RENDER_LAYOUT_COLEMAK_DH "CLMAK" +#define OLED_RENDER_LAYOUT_GAME "GAME" + +#define OLED_RENDER_LAYER_BASE " Def" +#define OLED_RENDER_LAYER_NAVIGATION " Nav" +#define OLED_RENDER_LAYER_NUMBER " Num" +#define OLED_RENDER_LAYER_SYMBOL " Sym" +#define OLED_RENDER_LAYER_CONFIG " Cfg" + +// LUNA PET Variables +#if defined(WPM_ENABLE) +# define OLED_LUNA_X 0 +# define OLED_LUNA_Y 5 +# define OLED_LUNA_MIN_WALK_SPEED 10 +# define OLED_LUNA_MIN_RUN_SPEED 40 +# define OLED_LUNA_ANIM_FRAME_DURATION 200 // how long each frame lasts in ms +# define OLED_LUNA_ANIM_SIZE 96 // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024 +#endif //WPM_ENABLE + +void render_default_layer_state(void); +void render_layer_state(void); +void render_keylock_status(void); +void render_mod_status(void); +void render_feature_status(void); + + +static const char PROGMEM scroll_off[] = {0x8D, 0}; +static const char PROGMEM scroll_on[] = {0x8E, 0}; + +static const char PROGMEM num_off[] = {0xAD, 0}; +static const char PROGMEM num_on[] = {0xAE, 0}; + +static const char PROGMEM caps_off[] = {0xCD, 0}; +static const char PROGMEM caps_on[] = {0xCE, 0}; + +static const char PROGMEM shift_off[] = {0x85, 0x86, 0}; +static const char PROGMEM shift_on[] = {0x87, 0x88, 0}; + +static const char PROGMEM ctrl_off[] = {0xA9, 0xAA, 0}; +static const char PROGMEM ctrl_on[] = {0xAB, 0xAC, 0}; + +static const char PROGMEM alt_off[] = {0xA5, 0xA6, 0}; +static const char PROGMEM alt_on[] = {0xA7, 0xA8, 0}; + +static const char PROGMEM gui_off[] = {0x89, 0x8A, 0}; +static const char PROGMEM gui_on[] = {0x8B, 0x8C, 0}; + +static const char PROGMEM rgb_off[] = {0xC5, 0xC6, 0}; +static const char PROGMEM rgb_on[] = {0xC7, 0xC8, 0}; + +static const char PROGMEM dragscr_off[] = {0xC9, 0xCA, 0}; +static const char PROGMEM dragscr_on[] = {0xCB, 0xCC, 0}; + +static const char PROGMEM sound_off[] = {0x8F, 0x90, 0}; +static const char PROGMEM sound_on[] = {0xAF, 0xB0, 0}; + +static const char PROGMEM haptic_off[] = {0x91, 0x92, 0}; +static const char PROGMEM haptic_on[] = {0xB1, 0xB2, 0}; + +static const char PROGMEM lyr_cfg[] = { + 0xE1, 0xD1, 0xD2, 0xD3, 0xE1, + 0xE1, 0xBA, 0xBB, 0xBC, 0xE1, + 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, + 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 +}; + +static const char PROGMEM lyr_sym[] = { + 0xE1, 0x97, 0x98, 0x99, 0xE1, + 0xE1, 0xDA, 0xDB, 0xDC, 0xE1, + 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, + 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 +}; + +static const char PROGMEM lyr_num[] = { + 0xE1, 0x97, 0x98, 0x99, 0xE1, + 0xE1, 0x9A, 0x9B, 0x9C, 0xE1, + 0xE1, 0xBA, 0xBB, 0xBC, 0xE1, + 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 +}; + +static const char PROGMEM lyr_nav[] = { + 0xE1, 0x97, 0x98, 0x99, 0xE1, + 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, + 0xE1, 0xDA, 0xDB, 0xDC, 0xE1, + 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 +}; + +static const char PROGMEM lyr_def[] = { + 0xE1, 0x97, 0x98, 0x99, 0xE1, + 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, + 0xE1, 0x9A, 0x9B, 0x9C, 0xE1, + 0xE1, 0xD4, 0xD5, 0xD6, 0xE1, 0x00 +}; + +static const char PROGMEM qmk_logo_small[] = { + 0xE1, 0x9D, 0x9E, 0x9F, 0xE1, + 0xE1, 0xBD, 0xBE, 0xBF, 0xE1, + 0xE1, 0xDD, 0xDE, 0xDF, 0xE1, 0x00 +}; + + +#if defined(KEYBOARD_klor) + +static const char PROGMEM klor_face[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, + 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 // KEYBOARD_klor \ No newline at end of file diff --git a/users/t4corun/rules.mk b/users/t4corun/rules.mk index 09ebc8a7..98bdc39f 100644 --- a/users/t4corun/rules.mk +++ b/users/t4corun/rules.mk @@ -53,7 +53,11 @@ INTROSPECTION_KEYMAP_C += features/combo.c # include optional code for enabled features for each keyboard ifeq ($(strip $(OLED_ENABLE)), yes) - SRC += features/oled.c + ifeq ($(filter $(KEYBOARD), klor klor/2040),) + SRC += features/oled32.c + else + SRC += features/oled64.c + endif endif ifeq ($(strip $(AUDIO_ENABLE)), yes)