diff --git a/keyboards/crkbd/keymaps/t4corun/rules.mk b/keyboards/crkbd/keymaps/t4corun/rules.mk index 102899cb..4e58e065 100644 --- a/keyboards/crkbd/keymaps/t4corun/rules.mk +++ b/keyboards/crkbd/keymaps/t4corun/rules.mk @@ -1,6 +1,7 @@ # override userspace defaults DYNAMIC_MACRO_ENABLE = no +WPM_ENABLE = no # override keyboard defaults # keyboards\crkbd\info.json diff --git a/users/t4corun/config.h b/users/t4corun/config.h index 8cce84d5..a77abbd1 100644 --- a/users/t4corun/config.h +++ b/users/t4corun/config.h @@ -16,15 +16,13 @@ #undef LOCKING_SUPPORT_ENABLE #undef LOCKING_RESYNC_ENABLE - - //Clear variables we plan to use that might be set elsewhere #undef USB_POLLING_INTERVAL_MS +#undef LAYER_STATE_8BIT //Set common configuration for all keyboards #define USB_POLLING_INTERVAL_MS 1 - - +#define LAYER_STATE_8BIT diff --git a/users/t4corun/config/split_config.h b/users/t4corun/config/split_config.h index f86d85e0..1e4aec84 100644 --- a/users/t4corun/config/split_config.h +++ b/users/t4corun/config/split_config.h @@ -4,12 +4,6 @@ * * https://docs.qmk.fm/#/feature_split_keyboard * -* -* needed for for the rgb matrix indicators to work -* - SPLIT_LAYER_STATE_ENABLE -* - SPLIT_LED_STATE_ENABLE -* - SPLIT_MODS_ENABLE -* */ //Clear variables we plan to use that might be set elsewhere @@ -24,9 +18,11 @@ //Set common configuration for all keyboards #define SPLIT_TRANSPORT_MIRROR +#define SPLIT_LAYER_STATE_ENABLE +#define SPLIT_LED_STATE_ENABLE +#define SPLIT_MODS_ENABLE #define SPLIT_OLED_ENABLE #define SPLIT_ACTIVITY_ENABLE #define SPLIT_WPM_ENABLE - #define MASTER_RIGHT \ No newline at end of file diff --git a/users/t4corun/features/oled.c b/users/t4corun/features/oled.c index 92a98587..2b12d253 100644 --- a/users/t4corun/features/oled.c +++ b/users/t4corun/features/oled.c @@ -1,202 +1,106 @@ #include "oled.h" -/* KEYBOARD PET START */ +/* LUNA PET START */ -/* settings */ -# define MIN_WALK_SPEED 10 -# define MIN_RUN_SPEED 40 +#if defined(WPM_ENABLE) -/* advanced settings */ -# define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms -# define ANIM_SIZE 96 // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024 +static uint32_t luna_anim_timer = 0; +static uint8_t luna_current_frame = 0; -/* timers */ -uint32_t anim_timer = 0; +void render_luna(void) { -/* current frame */ -uint8_t current_frame = 0; +#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 -/* -bool isSneaking = false; -bool isJumping = false; -bool showedJump = true; -*/ + if (timer_elapsed32(luna_anim_timer) > OLED_LUNA_ANIM_FRAME_DURATION) { + luna_anim_timer = timer_read32(); + animate_luna(OLED_LUNA_X, OLED_LUNA_Y); + } -/* logic */ -static void render_luna(int LUNA_X, int LUNA_Y) { - /* Sit */ - static const char PROGMEM sit[2][ANIM_SIZE] = {/* 'sit1', 32x22px */ - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - - /* 'sit2', 32x22px */ - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; - - /* Walk */ - static const char PROGMEM walk[2][ANIM_SIZE] = {/* 'walk1', 32x22px */ - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - - /* 'walk2', 32x22px */ - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }}; - - /* Run */ - static const char PROGMEM run[2][ANIM_SIZE] = {/* 'run1', 32x22px */ - { - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - - /* 'run2', 32x22px */ - { - 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }}; - - /* Bark */ - static const char PROGMEM bark[2][ANIM_SIZE] = {/* 'bark1', 32x22px */ - { - 0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - - /* 'bark2', 32x22px */ - { - 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }}; - - /* Sneak */ - static const char PROGMEM sneak[2][ANIM_SIZE] = {/* 'sneak1', 32x22px */ - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06, 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, - }, - - /* '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, - }}; - - /* animation */ - void animate_luna(void) { - /* jump */ - if (isLunaJumping() || !isLunaShowedJump()) { - /* clear */ - oled_set_cursor(LUNA_X, LUNA_Y + 2); - oled_write(" ", false); - - oled_set_cursor(LUNA_X, LUNA_Y - 1); - - setLunaShowedJump(true); - } else { - /* clear */ - oled_set_cursor(LUNA_X, LUNA_Y - 1); - oled_write(" ", false); - - oled_set_cursor(LUNA_X, LUNA_Y); - } - - /* switch frame */ - current_frame = (current_frame + 1) % 2; - - /* current status */ - if (host_keyboard_led_state().caps_lock || is_caps_word_on()) { - oled_write_raw_P(bark[current_frame], ANIM_SIZE); - - } else if (isLunaSneaking()) { - oled_write_raw_P(sneak[current_frame], ANIM_SIZE); - - } else if (get_current_wpm() <= MIN_WALK_SPEED) { - oled_write_raw_P(sit[current_frame], ANIM_SIZE); - - } else if (get_current_wpm() <= MIN_RUN_SPEED) { - oled_write_raw_P(walk[current_frame], ANIM_SIZE); - - } else { - oled_write_raw_P(run[current_frame], ANIM_SIZE); - } - } - -# 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 - - /* animation timer */ - if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { - anim_timer = timer_read32(); - animate_luna(); - } } +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 */ - - - - - - - - - - - - - - - - - - - -void render_crkbd_logo(void) { - - oled_write_P(crkbd_logo, false); - -} - -void render_rollow_logo(void) { - - oled_write_raw_P(rollow_logo, sizeof(rollow_logo)); - -} - -void render_qmk_logo(void) { - - oled_write_raw_P(qmk_logo, sizeof(qmk_logo)); - -} - +// Prints the current base layer +// (e.g. Qwerty, Colemak DH, etc) void render_default_layer_state(void) { switch (get_highest_layer(default_layer_state)) { - case _QWERTY: oled_write_P(PSTR(OLED_RENDER_LAYOUT_QWERTY), false); break; - case _COLEMAK_DH: oled_write_P(PSTR(OLED_RENDER_LAYOUT_COLEMAK_DH), false); break; - case _GAME: oled_write_ln_P(PSTR(OLED_RENDER_LAYOUT_GAME), false); break; - } } - +// Shows the currently enabled Layer name +// Also shows where on the layer stack it is void render_layer_state(void) { switch (get_highest_layer(layer_state)) { @@ -217,35 +121,42 @@ void render_layer_state(void) { break; } + oled_write_ln_P(PSTR(" "),false); + + switch (get_highest_layer(layer_state)) { + case _NAVIGATION: + oled_write_P(lyr_nav, false ); + break; + case _NUMBER: + oled_write_P(lyr_num, false ); + break; + case _SYMBOL: + oled_write_P(lyr_sym, false ); + break; + case _CONFIG: + oled_write_P(lyr_cfg, false ); + break; + default: + oled_write_P(lyr_def, false ); + break; + } + } - +// Shows the Host LED State (Num lock, caps lock , scroll lock) void render_keylock_status(void) { oled_write_ln_P(PSTR(OLED_RENDER_KEYLOCK_NAME), false); oled_write_P(PSTR(" "), false); - if( host_keyboard_led_state().num_lock ) { - oled_write_P(num_on, false ); - }else { - oled_write_P(num_off, false ); - } - - if( host_keyboard_led_state().caps_lock || is_caps_word_on() ) { - oled_write_P(caps_on, false ); - }else { - oled_write_P(caps_off, false ); - } - - if( host_keyboard_led_state().scroll_lock ) { - oled_write_ln_P(scroll_on, false ); - }else { - oled_write_ln_P(scroll_off, false ); - } + host_keyboard_led_state().num_lock ? oled_write_P(num_on, false ) : oled_write_P(num_off, false ); + host_keyboard_led_state().caps_lock || is_caps_word_on() ? oled_write_P(caps_on, false ) : oled_write_P(caps_off, false ); + host_keyboard_led_state().scroll_lock ? oled_write_ln_P(scroll_on, false ) : oled_write_ln_P(scroll_off, false ); } +// Indicates which modifies are enabled void render_mod_status(void) { uint8_t current_mod = get_mods(); @@ -254,120 +165,79 @@ void render_mod_status(void) { oled_write_ln_P(PSTR(OLED_RENDER_MODS_NAME), false); oled_write_P(PSTR(" "), false); - if( (current_mod | current_osm) & MOD_MASK_SHIFT ) { - oled_write_P(shift_on, false ); - }else { - oled_write_P(shift_off, false ); - } - - if( (current_mod | current_osm) & MOD_MASK_CTRL ) { - oled_write_P(ctrl_on, false ); - }else { - oled_write_P(ctrl_off, false ); - } + (current_mod | current_osm) & MOD_MASK_SHIFT ? oled_write_P(shift_on, false) : oled_write_P(shift_off, false ); + (current_mod | current_osm) & MOD_MASK_CTRL ? oled_write_P(ctrl_on, false ) : oled_write_P(ctrl_off, false ); oled_write_P(PSTR(" "), false); - if( (current_mod | current_osm) & MOD_MASK_ALT ) { - oled_write_P(alt_on, false ); - }else { - oled_write_P(alt_off, false ); - } - - if( (current_mod | current_osm) & MOD_MASK_GUI ) { - oled_write_P(gui_on, false ); - }else { - oled_write_P(gui_off, false ); - } + (current_mod | current_osm) & MOD_MASK_ALT ? oled_write_P(alt_on, false ): oled_write_P(alt_off, false ); + (current_mod | current_osm) & MOD_MASK_GUI ? oled_write_P(gui_on, false ): oled_write_P(gui_off, false ); } +// Indicates which features are turned on or off void render_feature_status(void) { oled_write_ln_P(PSTR(OLED_RENDER_FEATURE_NAME), false); oled_write_P(PSTR(" "), false); #if defined(RGB_MATRIX_ENABLE) - if (rgb_matrix_is_enabled()) { - oled_write_P(rgb_on, false); - } else { - oled_write_P(rgb_off, false); - } + rgb_matrix_is_enabled() ? oled_write_P(rgb_on, false) : oled_write_P(rgb_off, false); #else oled_write_P(rgb_off, false); -#endif +#endif //RGB_MATRIX_ENABLED - if(drag_scroll_is_enabled()) { - oled_write_P(dragscr_on, false); - } else { - oled_write_P(dragscr_off, false); - } + // only works on master side + drag_scroll_is_enabled() ? oled_write_P(dragscr_on, false) : oled_write_P(dragscr_off, false); -oled_write_P(PSTR(" "), false); + oled_write_P(PSTR(" "), false); #if defined(AUDIO_ENABLE) - if (is_audio_on()) { - oled_write_P(audio_on, false); - } else { - oled_write_P(audio_off, false); - } - + is_audio_on() ? oled_write_P(sound_on, false) : oled_write_P(sound_off, false); #else - oled_write_P(audio_off, false); + oled_write_P(sound_off, false); #endif //AUDIO_ENABLE #if defined(HAPTIC_ENABLE) - if (haptic_get_enable()) { - oled_write_P(haptic_on, false); - } else { - oled_write_P(haptic_off, false); - } - + haptic_get_enable() ? oled_write_P(haptic_on, false) : oled_write_P(haptic_off, false); #else oled_write_P(haptic_off, false); -#endif //AUDIO_ENABLE - -} - - -void render_oled_main(void) { - - render_default_layer_state(); - render_layer_state(); - - oled_write_ln_P(PSTR(" "), false); - render_keylock_status(); - - oled_write_ln_P(PSTR(" "), false); - render_mod_status(); - - oled_write_ln_P(PSTR(" "), false); - render_feature_status(); +#endif //HAPTIC_ENABLE } +// Coordinate the OLED rendering bool oled_task_user(void) { + //process_record_user is only processed on master side + //split side OLED does not respond to key presses custom behaviors if (is_keyboard_master()) { - render_oled_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + + render_keylock_status(); + + oled_write_ln_P(PSTR(" "), false); + render_feature_status(); + +#if defined(WPM_ENABLE) + oled_write_ln_P(PSTR(" "), false); + oled_write_ln_P(PSTR(OLED_RENDER_WPM_NAME), false); + oled_write_P(PSTR(" "), false); + oled_write_P(get_u8_str(get_current_wpm(), ' '), false); + + render_luna(); +#endif //WPM_ENABLE + } else { -#if defined(KEYBOARD_barbellboards_rollow) - render_rollow_logo(); -#elif defined(KEYBOARD_crkbd) - render_crkbd_logo(); -#else - //render_qmk_logo(); + render_default_layer_state(); + render_layer_state(); - /* KEYBOARD PET RENDER START */ - - render_luna(0, 13); - - /* KEYBOARD PET RENDER END */ - -#endif + oled_write_ln_P(PSTR(" "), false); + render_mod_status(); + oled_write_ln_P(PSTR(" "), false); + oled_write_P(qmk_logo_small, false); } return false; @@ -375,15 +245,6 @@ bool oled_task_user(void) { } - oled_rotation_t oled_init_user(oled_rotation_t rotation) { - -#if !defined(KEYBOARD_klor_2040) - if (is_keyboard_master()) { - return OLED_ROTATION_270; - } -#endif - return OLED_ROTATION_270; - } diff --git a/users/t4corun/features/oled.h b/users/t4corun/features/oled.h index caa77abd..3ca91925 100644 --- a/users/t4corun/features/oled.h +++ b/users/t4corun/features/oled.h @@ -2,10 +2,10 @@ #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" @@ -17,121 +17,152 @@ #define OLED_RENDER_LAYER_SYMBOL " Sym" #define OLED_RENDER_LAYER_CONFIG " Cfg" -void render_crkbd_logo(void); -void render_rollow_logo(void); -void render_qmk_logo(void); + +// 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); -void render_oled_main(void); bool oled_task_user(void); oled_rotation_t oled_init_user(oled_rotation_t rotation); -static const char PROGMEM sep_v32[] = {0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0}; -static const char PROGMEM num_on[] = {0x91, 0}; -static const char PROGMEM num_off[] = {0xAD, 0}; - -static const char PROGMEM caps_on[] = {0x93, 0}; -static const char PROGMEM caps_off[] = {0xCD, 0}; - -static const char PROGMEM scroll_on[] = {0x8F, 0}; 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_on[] = {0x87, 0x88, 0}; static const char PROGMEM shift_off[] = {0x85, 0x86, 0}; +static const char PROGMEM shift_on[] = {0x87, 0x88, 0}; -static const char PROGMEM ctrl_on[] = {0xAB, 0xAC, 0}; static const char PROGMEM ctrl_off[] = {0xA9, 0xAA, 0}; +static const char PROGMEM ctrl_on[] = {0xAB, 0xAC, 0}; -static const char PROGMEM alt_on[] = {0xA7, 0xA8, 0}; static const char PROGMEM alt_off[] = {0xA5, 0xA6, 0}; +static const char PROGMEM alt_on[] = {0xA7, 0xA8, 0}; -static const char PROGMEM gui_on[] = {0x8B, 0x8C, 0}; static const char PROGMEM gui_off[] = {0x89, 0x8A, 0}; +static const char PROGMEM gui_on[] = {0x8B, 0x8C, 0}; -static const char PROGMEM rgb_on[] = {0xC7, 0xC8, 0}; static const char PROGMEM rgb_off[] = {0xC5, 0xC6, 0}; +static const char PROGMEM rgb_on[] = {0xC7, 0xC8, 0}; -static const char PROGMEM dragscr_on[] = {0xBD, 0xBE, 0}; -static const char PROGMEM dragscr_off[] = {0x9D, 0x9E, 0}; +static const char PROGMEM dragscr_off[] = {0xC9, 0xCA, 0}; +static const char PROGMEM dragscr_on[] = {0xCB, 0xCC, 0}; -static const char PROGMEM audio_on[] = {0xAF, 0xB0, 0}; -static const char PROGMEM audio_off[] = {0xCF, 0xD0, 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 haptic_off[] = {0xB3, 0xB4, 0}; - -static const char PROGMEM crkbd_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 +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 }; -// copied from Drashna -static const char PROGMEM qmk_logo[] = { // 128x24 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x49, 0x3F, 0x7E, 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x00, 0x1E, - 0x3F, 0x69, 0x69, 0x6F, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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 }; -static const char PROGMEM rollow_logo[] = { // 128x32 - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, - 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0xe0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 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, 0xe0, 0x00, 0x00, 0xf0, 0xf0, 0x00, - 0x00, 0x80, 0x80, 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, 0xff, 0xff, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xe0, 0xe0, 0x80, 0x80, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0x7c, 0x00, 0x00, 0xf0, 0xf8, 0xf8, - 0xf8, 0x3c, 0xfc, 0xf8, 0xf8, 0xf0, 0xe0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xe0, 0xf0, 0xf8, 0xf8, 0xfc, 0x3c, 0xf8, 0xf8, 0xf8, 0xf0, - 0xc0, 0x08, 0xf8, 0xf8, 0xf8, 0xf8, 0x00, 0xf8, 0xf8, 0xf8, 0xf8, 0xe0, 0xe0, 0xf8, 0xf8, 0xf8, - 0xf8, 0x00, 0x00, 0x80, 0x80, 0xe0, 0xe0, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, - 0x00, 0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x07, 0x07, 0x01, 0x01, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0xff, 0xff, 0xff, - 0xff, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff, 0xff, - 0x7f, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x07, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, - 0x00, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, - 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x01, 0x01, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, - 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x07, 0x00, 0x00, 0x0f, 0x0f, 0x00, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; \ No newline at end of file + +#if defined(WPM_ENABLE) + +// Luna Sit +static const char PROGMEM sit[2][OLED_LUNA_ANIM_SIZE] = { + /* 'sit1', 32x22px */ + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, + + /* 'sit2', 32x22px */ + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} +}; + +// Luna Walk +static const char PROGMEM walk[2][OLED_LUNA_ANIM_SIZE] = { + /* 'walk1', 32x22px */ + {0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, + + /* 'walk2', 32x22px */ + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,} +}; + +// Luna Run +static const char PROGMEM run[2][OLED_LUNA_ANIM_SIZE] = { + /* 'run1', 32x22px */ + {0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,}, + + /* 'run2', 32x22px */ + {0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,} +}; + +// Luna Bark +static const char PROGMEM bark[2][OLED_LUNA_ANIM_SIZE] = { + /* 'bark1', 32x22px */ + {0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,}, + + /* 'bark2', 32x22px */ + {0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,} +}; + +// Luna Sneak +static const char PROGMEM sneak[2][OLED_LUNA_ANIM_SIZE] = { + /* 'sneak1', 32x22px */ + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06, 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00,}, + + /* '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/lib/font.c b/users/t4corun/lib/font.c index 3c51406c..28832289 100644 --- a/users/t4corun/lib/font.c +++ b/users/t4corun/lib/font.c @@ -148,24 +148,24 @@ static const unsigned char PROGMEM font[] = { 0x7F, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x7F, 0x00, 0x00, 0x2E, 0x2A, 0x2A, 0x3A, 0x00, - 0x3E, 0x20, 0x20, 0x20, 0x00, 0x00, 0x7F, 0x51, 0x55, 0x55, 0x45, 0x7F, - 0x41, 0x5F, 0x5F, 0x5F, 0x7F, 0x00, - 0x7F, 0x41, 0x7B, 0x77, 0x41, 0x7F, - 0x41, 0x5F, 0x5F, 0x5F, 0x7F, 0x00, - 0x7F, 0x41, 0x5D, 0x5D, 0x5D, 0x7F, - 0x41, 0x5F, 0x5F, 0x5F, 0x7F, 0x00, + 0x00, 0x38, 0x00, 0x3E, 0x00, 0x38, + 0x00, 0x3C, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x24, 0x24, 0x12, 0x12, 0x24, + 0x24, 0x12, 0x12, 0x24, 0x00, 0x00, + 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00, + 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xE6, 0xF7, 0xF3, 0xF0, 0x60, 0x00, - 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00, - 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00, - 0xF8, 0x1C, 0xDE, 0x1F, 0xFF, 0xFF, - 0xFF, 0x1F, 0xDE, 0x1C, 0xF8, 0x00, - 0xC0, 0xE2, 0xB4, 0xF8, 0xF8, 0xF8, - 0xF8, 0xF8, 0xB4, 0xE2, 0xC0, 0x00, - 0x7F, 0x01, 0x01, 0x01, 0x01, 0x3F, - 0x01, 0x01, 0x01, 0x01, 0x7F, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, + 0x10, 0x10, 0x08, 0x08, 0x10, 0x10, + 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, + 0x88, 0x88, 0xD5, 0xD5, 0xE2, 0xE2, + 0xC4, 0xC4, 0x88, 0x88, 0xC4, 0xC4, + 0xE2, 0xE2, 0xD5, 0xD5, 0x88, 0x88, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, + 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x87, 0xE1, 0xF9, 0xF9, 0xE1, 0x87, @@ -180,54 +180,54 @@ static const unsigned char PROGMEM font[] = { 0x7F, 0x1F, 0x0F, 0x47, 0x63, 0x71, 0x63, 0x47, 0x0F, 0x1F, 0x7F, 0x00, 0x00, 0x3E, 0x04, 0x08, 0x3E, 0x00, - 0x3E, 0x20, 0x20, 0x20, 0x00, 0x00, + 0x7F, 0x41, 0x7B, 0x77, 0x41, 0x7F, 0x7F, 0x43, 0x7F, 0x41, 0x7F, 0x47, 0x7F, 0x43, 0x7F, 0x4F, 0x7F, 0x00, 0x7F, 0x5B, 0x5B, 0x6D, 0x6D, 0x5B, 0x5B, 0x6D, 0x6D, 0x5B, 0x7F, 0x00, - 0x00, 0x24, 0x24, 0x12, 0x12, 0x24, - 0x24, 0x12, 0x12, 0x24, 0x00, 0x00, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x3F, 0x3F, 0x7F, 0x7F, 0x38, 0x10, 0x00, - 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, - 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, - 0x0F, 0x14, 0x21, 0x40, 0x45, 0x41, - 0x45, 0x40, 0x21, 0x14, 0x0F, 0x00, - 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, - 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x00, - 0x7F, 0x7F, 0x7F, 0x7F, 0x01, 0x3D, - 0x01, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x88, 0x88, 0x55, 0x55, 0x22, 0x22, + 0x44, 0x44, 0x88, 0x88, 0x44, 0x44, + 0x22, 0x22, 0x55, 0x55, 0x88, 0x88, + 0x88, 0x88, 0x55, 0x55, 0x23, 0x23, + 0x47, 0x47, 0x8F, 0x8F, 0x47, 0x47, + 0x23, 0x23, 0x55, 0x55, 0x88, 0x88, + 0x00, 0xA8, 0xA8, 0xFC, 0xFE, 0x07, + 0xFE, 0xFF, 0xFE, 0x07, 0xFE, 0xFF, + 0xFE, 0x07, 0xFE, 0xFC, 0xA8, 0xA8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 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, 0x3E, 0x3E, 0x3E, 0x1C, 0x00, + 0x3E, 0x1C, 0x1C, 0x08, 0x08, 0x00, + 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x62, 0x0A, 0x62, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x57, 0x7D, 0x67, 0x02, 0x1B, 0x02, 0x67, 0x7D, 0x57, 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, + 0x7F, 0x01, 0x01, 0x01, 0x01, 0x3F, + 0x01, 0x01, 0x01, 0x01, 0x7F, 0x00, + 0x7F, 0x7F, 0x7F, 0x7F, 0x03, 0x3B, + 0x03, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x3E, 0x22, 0x22, 0x22, 0x00, - 0x3E, 0x20, 0x20, 0x20, 0x00, 0x00, - 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x38, - 0x00, 0x3C, 0x00, 0x30, 0x00, 0x00, - 0x1C, 0x3E, 0x3E, 0x3E, 0x1C, 0x00, - 0x3E, 0x1C, 0x1C, 0x08, 0x08, 0x00, - 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7F, 0x41, 0x5D, 0x5D, 0x5D, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, + 0xF0, 0xF0, 0xF8, 0xF8, 0xF0, 0xF0, + 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, + 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, + 0x07, 0x07, 0x0F, 0x0F, 0x07, 0x07, + 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x04, 0x04, + 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, + 0x88, 0x88, 0x5D, 0x5D, 0x3E, 0x3E, + 0x7C, 0x7C, 0xF8, 0xF8, 0x7C, 0x7C, + 0x3E, 0x3E, 0x5D, 0x5D, 0x88, 0x88, + 0x00, 0x0A, 0x0A, 0x1F, 0x3F, 0xFE, + 0x3D, 0xFB, 0x3B, 0xE0, 0x3B, 0xFB, + 0x3D, 0xFE, 0x3F, 0x1F, 0x0A, 0x0A, }; diff --git a/users/t4corun/rules.mk b/users/t4corun/rules.mk index e8d1acb9..09ebc8a7 100644 --- a/users/t4corun/rules.mk +++ b/users/t4corun/rules.mk @@ -10,8 +10,9 @@ # ?= means set the value if its not defined elsewhere - -LTO_ENABLE ?= yes +# optional features +# use these values if not defined at the keyboard level +LTO_ENABLE ?= no MAGIC_ENABLE ?= no CONSOLE_ENABLE ?= no UNICODE_ENABLE ?= no @@ -27,15 +28,15 @@ ENCODER_ENABLE ?= no ENCODER_MAP_ENABLE ?= no HAPTIC_ENABLE ?= no AUDIO_ENABLE ?= no +WPM_ENABLE ?= yes -# qmk features we will force +# qmk features we will force as these are critical for my workflow EXTRAKEY_ENABLE = yes CAPS_WORD_ENABLE = yes MOUSEKEY_ENABLE = yes COMBO_ENABLE = yes KEY_OVERRIDE_ENABLE = yes -MUSIC_MODE = no -WPM_ENABLE = yes + # --------------------------------------------------------- # include my code that will be common across all my keyboards @@ -49,8 +50,12 @@ SRC += \ INTROSPECTION_KEYMAP_C += features/combo.c # --------------------------------------------------------- -# include my code for enabled features for each keyboard +# include optional code for enabled features for each keyboard ifeq ($(strip $(OLED_ENABLE)), yes) - SRC += features/oled.c + SRC += features/oled.c +endif + +ifeq ($(strip $(AUDIO_ENABLE)), yes) + MUSIC_MODE = no endif \ No newline at end of file diff --git a/users/t4corun/t4corun.c b/users/t4corun/t4corun.c index e271da19..07b948fe 100644 --- a/users/t4corun/t4corun.c +++ b/users/t4corun/t4corun.c @@ -1,81 +1,46 @@ #include "t4corun.h" +// Keeps track of base layer so we can make one key to cycle through them +// instead of making a key for each one */ static uint8_t current_base_layer = _DEFAULT_LAYER_1; + +// Should keep track of the Ploopy Nano drag scroll mode +// There is a possibility of this being out of sync static bool drag_scroll_enabled = false; - -/* Luna variables */ -static bool isSneaking = false; -static bool isJumping = false; +// Luna Pet Variables +static bool isJumping = false; static bool showedJump = true; -layer_state_t layer_state_set_user(layer_state_t state) { - return update_tri_layer_state(state, _NAVIGATION, _NUMBER, _SYMBOL);; +// Allows the OLED code to get the drag scroll mode +bool drag_scroll_is_enabled(void) { return drag_scroll_enabled; } -} +// Allows the OLED code to see when space bar is pressed +bool isLunaJumping(void) { return isJumping; } +bool isJumpShown(void) { return showedJump; } -bool drag_scroll_is_enabled(void) { +// Allows the OLED code to clear the space bar status when render is complete +void setLunaJumped(void) { showedJump = true;} - /* - Keeps track of Ploopy Nano drag scroll from the keyboard side - It doesn't actually talk to the Ploopy Nano so there is a chance - This may be out of sync - - Used to enable OLED indicator - */ - return drag_scroll_enabled; - -} - -bool isLunaSneaking(void) { - - return isSneaking; - -} - -bool isLunaJumping(void) { - - return isJumping; - -} - -bool isLunaShowedJump(void) { - - return showedJump; -} - -void setLunaShowedJump(bool state) { - - showedJump = state; -} +// Hold Navigation and Number to get Symbol +layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _NAVIGATION, _NUMBER, _SYMBOL); } +// Customize behavior for existing keycodes or create new ones bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { - /* KEYBOARD PET STATUS START */ - - case TR_LCTL: - if (record->event.pressed) { - isSneaking = true; - } else { - isSneaking = false; - } - break; case KC_SPC: if (record->event.pressed) { - isJumping = true; + isJumping = true; showedJump = false; - } else { + } + else { isJumping = false; } - break; - - /* KEYBOARD PET STATUS END */ - - + break; case BASELYR: if (record->event.pressed) { @@ -86,7 +51,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; - case RBSELYR: if (record->event.pressed) { @@ -96,7 +60,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; - case PN_DRGS: if (record->event.pressed) { @@ -110,7 +73,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; - case PN_PDPI: if (record->event.pressed) { @@ -168,5 +130,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } + // let QMK process the normal behavior if not handled above return true; } \ No newline at end of file diff --git a/users/t4corun/t4corun.h b/users/t4corun/t4corun.h index 39099f61..ad50ee36 100644 --- a/users/t4corun/t4corun.h +++ b/users/t4corun/t4corun.h @@ -3,12 +3,9 @@ #include "features/taphold.h" bool drag_scroll_is_enabled(void); - -bool isLunaSneaking(void); bool isLunaJumping(void); -bool isLunaShowedJump(void); - -void setLunaShowedJump(bool state); +bool isJumpShown(void); +void setLunaJumped(void); enum layers { _QWERTY = 0,