mirror of
https://github.com/qmk/qmk_userspace.git
synced 2025-05-13 02:45:30 -04:00
128x32 OLED Overhaul and more
- Limit to eight layers to save MCU space - Tweaked default rules.mk for WPM, Audio, etc - Added Luna Pet OLED code and modified to my standard - Enabled Drag Scroll OLED indicator - Increased Split Communications (layers, LED state, Mods) - Cleaned up OLED Code and overhauled screen. - Data is on both halves now, no more split side logo - Added WPM counter - Added graphics for layers, mods, features, small QMK logo - Leveraged KLOR font and added my own images - Made LTO disabled by default since I'm team RP2040
This commit is contained in:
parent
b3d323769a
commit
2036b62a89
9 changed files with 347 additions and 495 deletions
|
@ -1,6 +1,7 @@
|
||||||
# override userspace defaults
|
# override userspace defaults
|
||||||
|
|
||||||
DYNAMIC_MACRO_ENABLE = no
|
DYNAMIC_MACRO_ENABLE = no
|
||||||
|
WPM_ENABLE = no
|
||||||
|
|
||||||
# override keyboard defaults
|
# override keyboard defaults
|
||||||
# keyboards\crkbd\info.json
|
# keyboards\crkbd\info.json
|
||||||
|
|
|
@ -16,15 +16,13 @@
|
||||||
#undef LOCKING_SUPPORT_ENABLE
|
#undef LOCKING_SUPPORT_ENABLE
|
||||||
#undef LOCKING_RESYNC_ENABLE
|
#undef LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Clear variables we plan to use that might be set elsewhere
|
//Clear variables we plan to use that might be set elsewhere
|
||||||
#undef USB_POLLING_INTERVAL_MS
|
#undef USB_POLLING_INTERVAL_MS
|
||||||
|
#undef LAYER_STATE_8BIT
|
||||||
|
|
||||||
//Set common configuration for all keyboards
|
//Set common configuration for all keyboards
|
||||||
#define USB_POLLING_INTERVAL_MS 1
|
#define USB_POLLING_INTERVAL_MS 1
|
||||||
|
#define LAYER_STATE_8BIT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,12 +4,6 @@
|
||||||
*
|
*
|
||||||
* https://docs.qmk.fm/#/feature_split_keyboard
|
* 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
|
//Clear variables we plan to use that might be set elsewhere
|
||||||
|
@ -24,9 +18,11 @@
|
||||||
|
|
||||||
//Set common configuration for all keyboards
|
//Set common configuration for all keyboards
|
||||||
#define SPLIT_TRANSPORT_MIRROR
|
#define SPLIT_TRANSPORT_MIRROR
|
||||||
|
#define SPLIT_LAYER_STATE_ENABLE
|
||||||
|
#define SPLIT_LED_STATE_ENABLE
|
||||||
|
#define SPLIT_MODS_ENABLE
|
||||||
#define SPLIT_OLED_ENABLE
|
#define SPLIT_OLED_ENABLE
|
||||||
#define SPLIT_ACTIVITY_ENABLE
|
#define SPLIT_ACTIVITY_ENABLE
|
||||||
#define SPLIT_WPM_ENABLE
|
#define SPLIT_WPM_ENABLE
|
||||||
|
|
||||||
|
|
||||||
#define MASTER_RIGHT
|
#define MASTER_RIGHT
|
|
@ -1,202 +1,106 @@
|
||||||
#include "oled.h"
|
#include "oled.h"
|
||||||
|
|
||||||
/* KEYBOARD PET START */
|
/* LUNA PET START */
|
||||||
|
|
||||||
/* settings */
|
#if defined(WPM_ENABLE)
|
||||||
# define MIN_WALK_SPEED 10
|
|
||||||
# define MIN_RUN_SPEED 40
|
|
||||||
|
|
||||||
/* advanced settings */
|
static uint32_t luna_anim_timer = 0;
|
||||||
# define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
|
static uint8_t luna_current_frame = 0;
|
||||||
# define ANIM_SIZE 96 // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024
|
|
||||||
|
|
||||||
/* timers */
|
void render_luna(void) {
|
||||||
uint32_t anim_timer = 0;
|
|
||||||
|
|
||||||
/* current frame */
|
#if OLED_TIMEOUT > 0
|
||||||
uint8_t current_frame = 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) {
|
||||||
bool isSneaking = false;
|
luna_anim_timer = timer_read32();
|
||||||
bool isJumping = false;
|
animate_luna(OLED_LUNA_X, OLED_LUNA_Y);
|
||||||
bool showedJump = true;
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
/* 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 */
|
/* KEYBOARD PET END */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Prints the current base layer
|
||||||
|
// (e.g. Qwerty, Colemak DH, etc)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
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));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_default_layer_state(void) {
|
void render_default_layer_state(void) {
|
||||||
|
|
||||||
switch (get_highest_layer(default_layer_state)) {
|
switch (get_highest_layer(default_layer_state)) {
|
||||||
|
|
||||||
case _QWERTY:
|
case _QWERTY:
|
||||||
oled_write_P(PSTR(OLED_RENDER_LAYOUT_QWERTY), false);
|
oled_write_P(PSTR(OLED_RENDER_LAYOUT_QWERTY), false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case _COLEMAK_DH:
|
case _COLEMAK_DH:
|
||||||
oled_write_P(PSTR(OLED_RENDER_LAYOUT_COLEMAK_DH), false);
|
oled_write_P(PSTR(OLED_RENDER_LAYOUT_COLEMAK_DH), false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case _GAME:
|
case _GAME:
|
||||||
oled_write_ln_P(PSTR(OLED_RENDER_LAYOUT_GAME), false);
|
oled_write_ln_P(PSTR(OLED_RENDER_LAYOUT_GAME), false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Shows the currently enabled Layer name
|
||||||
|
// Also shows where on the layer stack it is
|
||||||
void render_layer_state(void) {
|
void render_layer_state(void) {
|
||||||
|
|
||||||
switch (get_highest_layer(layer_state)) {
|
switch (get_highest_layer(layer_state)) {
|
||||||
|
@ -217,35 +121,42 @@ void render_layer_state(void) {
|
||||||
break;
|
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) {
|
void render_keylock_status(void) {
|
||||||
|
|
||||||
oled_write_ln_P(PSTR(OLED_RENDER_KEYLOCK_NAME), false);
|
oled_write_ln_P(PSTR(OLED_RENDER_KEYLOCK_NAME), false);
|
||||||
oled_write_P(PSTR(" "), false);
|
oled_write_P(PSTR(" "), false);
|
||||||
|
|
||||||
if( host_keyboard_led_state().num_lock ) {
|
host_keyboard_led_state().num_lock ? oled_write_P(num_on, false ) : oled_write_P(num_off, false );
|
||||||
oled_write_P(num_on, false );
|
host_keyboard_led_state().caps_lock || is_caps_word_on() ? oled_write_P(caps_on, false ) : oled_write_P(caps_off, false );
|
||||||
}else {
|
host_keyboard_led_state().scroll_lock ? oled_write_ln_P(scroll_on, false ) : oled_write_ln_P(scroll_off, false );
|
||||||
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 );
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Indicates which modifies are enabled
|
||||||
void render_mod_status(void) {
|
void render_mod_status(void) {
|
||||||
|
|
||||||
uint8_t current_mod = get_mods();
|
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_ln_P(PSTR(OLED_RENDER_MODS_NAME), false);
|
||||||
oled_write_P(PSTR(" "), false);
|
oled_write_P(PSTR(" "), false);
|
||||||
|
|
||||||
if( (current_mod | current_osm) & MOD_MASK_SHIFT ) {
|
(current_mod | current_osm) & MOD_MASK_SHIFT ? oled_write_P(shift_on, false) : oled_write_P(shift_off, false );
|
||||||
oled_write_P(shift_on, false );
|
(current_mod | current_osm) & MOD_MASK_CTRL ? oled_write_P(ctrl_on, false ) : oled_write_P(ctrl_off, 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 );
|
|
||||||
}
|
|
||||||
|
|
||||||
oled_write_P(PSTR(" "), false);
|
oled_write_P(PSTR(" "), false);
|
||||||
|
|
||||||
if( (current_mod | current_osm) & MOD_MASK_ALT ) {
|
(current_mod | current_osm) & MOD_MASK_ALT ? oled_write_P(alt_on, false ): oled_write_P(alt_off, false );
|
||||||
oled_write_P(alt_on, false );
|
(current_mod | current_osm) & MOD_MASK_GUI ? oled_write_P(gui_on, false ): oled_write_P(gui_off, 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 );
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Indicates which features are turned on or off
|
||||||
void render_feature_status(void) {
|
void render_feature_status(void) {
|
||||||
|
|
||||||
oled_write_ln_P(PSTR(OLED_RENDER_FEATURE_NAME), false);
|
oled_write_ln_P(PSTR(OLED_RENDER_FEATURE_NAME), false);
|
||||||
oled_write_P(PSTR(" "), false);
|
oled_write_P(PSTR(" "), false);
|
||||||
|
|
||||||
#if defined(RGB_MATRIX_ENABLE)
|
#if defined(RGB_MATRIX_ENABLE)
|
||||||
if (rgb_matrix_is_enabled()) {
|
rgb_matrix_is_enabled() ? oled_write_P(rgb_on, false) : oled_write_P(rgb_off, false);
|
||||||
oled_write_P(rgb_on, false);
|
|
||||||
} else {
|
|
||||||
oled_write_P(rgb_off, false);
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
oled_write_P(rgb_off, false);
|
oled_write_P(rgb_off, false);
|
||||||
#endif
|
#endif //RGB_MATRIX_ENABLED
|
||||||
|
|
||||||
if(drag_scroll_is_enabled()) {
|
// only works on master side
|
||||||
oled_write_P(dragscr_on, false);
|
drag_scroll_is_enabled() ? oled_write_P(dragscr_on, false) : oled_write_P(dragscr_off, false);
|
||||||
} else {
|
|
||||||
oled_write_P(dragscr_off, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
oled_write_P(PSTR(" "), false);
|
oled_write_P(PSTR(" "), false);
|
||||||
|
|
||||||
#if defined(AUDIO_ENABLE)
|
#if defined(AUDIO_ENABLE)
|
||||||
if (is_audio_on()) {
|
is_audio_on() ? oled_write_P(sound_on, false) : oled_write_P(sound_off, false);
|
||||||
oled_write_P(audio_on, false);
|
|
||||||
} else {
|
|
||||||
oled_write_P(audio_off, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
oled_write_P(audio_off, false);
|
oled_write_P(sound_off, false);
|
||||||
#endif //AUDIO_ENABLE
|
#endif //AUDIO_ENABLE
|
||||||
|
|
||||||
#if defined(HAPTIC_ENABLE)
|
#if defined(HAPTIC_ENABLE)
|
||||||
if (haptic_get_enable()) {
|
haptic_get_enable() ? oled_write_P(haptic_on, false) : oled_write_P(haptic_off, false);
|
||||||
oled_write_P(haptic_on, false);
|
|
||||||
} else {
|
|
||||||
oled_write_P(haptic_off, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
oled_write_P(haptic_off, false);
|
oled_write_P(haptic_off, false);
|
||||||
#endif //AUDIO_ENABLE
|
#endif //HAPTIC_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();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Coordinate the OLED rendering
|
||||||
bool oled_task_user(void) {
|
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()) {
|
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 {
|
} else {
|
||||||
|
|
||||||
#if defined(KEYBOARD_barbellboards_rollow)
|
render_default_layer_state();
|
||||||
render_rollow_logo();
|
render_layer_state();
|
||||||
#elif defined(KEYBOARD_crkbd)
|
|
||||||
render_crkbd_logo();
|
|
||||||
#else
|
|
||||||
//render_qmk_logo();
|
|
||||||
|
|
||||||
/* KEYBOARD PET RENDER START */
|
oled_write_ln_P(PSTR(" "), false);
|
||||||
|
render_mod_status();
|
||||||
render_luna(0, 13);
|
|
||||||
|
|
||||||
/* KEYBOARD PET RENDER END */
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
oled_write_ln_P(PSTR(" "), false);
|
||||||
|
oled_write_P(qmk_logo_small, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -375,15 +245,6 @@ bool oled_task_user(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
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;
|
return OLED_ROTATION_270;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
#include "t4corun.h"
|
#include "t4corun.h"
|
||||||
|
|
||||||
|
|
||||||
#define OLED_RENDER_KEYLOCK_NAME "Lock"
|
#define OLED_RENDER_KEYLOCK_NAME "Lock"
|
||||||
#define OLED_RENDER_MODS_NAME "Mods"
|
#define OLED_RENDER_MODS_NAME "Mods"
|
||||||
#define OLED_RENDER_FEATURE_NAME "Feat"
|
#define OLED_RENDER_FEATURE_NAME "Feat"
|
||||||
|
#define OLED_RENDER_WPM_NAME "Wpm"
|
||||||
|
|
||||||
#define OLED_RENDER_LAYOUT_QWERTY "QWRTY"
|
#define OLED_RENDER_LAYOUT_QWERTY "QWRTY"
|
||||||
#define OLED_RENDER_LAYOUT_COLEMAK_DH "CLMAK"
|
#define OLED_RENDER_LAYOUT_COLEMAK_DH "CLMAK"
|
||||||
|
@ -17,121 +17,152 @@
|
||||||
#define OLED_RENDER_LAYER_SYMBOL " Sym"
|
#define OLED_RENDER_LAYER_SYMBOL " Sym"
|
||||||
#define OLED_RENDER_LAYER_CONFIG " Cfg"
|
#define OLED_RENDER_LAYER_CONFIG " Cfg"
|
||||||
|
|
||||||
void render_crkbd_logo(void);
|
|
||||||
void render_rollow_logo(void);
|
// LUNA PET Variables
|
||||||
void render_qmk_logo(void);
|
#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_default_layer_state(void);
|
||||||
void render_layer_state(void);
|
void render_layer_state(void);
|
||||||
void render_keylock_status(void);
|
void render_keylock_status(void);
|
||||||
void render_mod_status(void);
|
void render_mod_status(void);
|
||||||
void render_feature_status(void);
|
void render_feature_status(void);
|
||||||
void render_oled_main(void);
|
|
||||||
bool oled_task_user(void);
|
bool oled_task_user(void);
|
||||||
oled_rotation_t oled_init_user(oled_rotation_t rotation);
|
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_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_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_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_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_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_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[] = {0xC9, 0xCA, 0};
|
||||||
static const char PROGMEM dragscr_off[] = {0x9D, 0x9E, 0};
|
static const char PROGMEM dragscr_on[] = {0xCB, 0xCC, 0};
|
||||||
|
|
||||||
static const char PROGMEM audio_on[] = {0xAF, 0xB0, 0};
|
static const char PROGMEM sound_off[] = {0x8F, 0x90, 0};
|
||||||
static const char PROGMEM audio_off[] = {0xCF, 0xD0, 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_on[] = {0xB1, 0xB2, 0};
|
||||||
static const char PROGMEM haptic_off[] = {0xB3, 0xB4, 0};
|
|
||||||
|
|
||||||
|
static const char PROGMEM lyr_cfg[] = {
|
||||||
static const char PROGMEM crkbd_logo[] = {
|
0xE1, 0xD1, 0xD2, 0xD3, 0xE1,
|
||||||
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
|
0xE1, 0xBA, 0xBB, 0xBC, 0xE1,
|
||||||
0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
|
0xE1, 0xB7, 0xB8, 0xB9, 0xE1,
|
||||||
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
|
0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00
|
||||||
0
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// copied from Drashna
|
static const char PROGMEM lyr_sym[] = {
|
||||||
static const char PROGMEM qmk_logo[] = { // 128x24
|
0xE1, 0x97, 0x98, 0x99, 0xE1,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0xF0, 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8,
|
0xE1, 0xDA, 0xDB, 0xDC, 0xE1,
|
||||||
0xF8, 0x3F, 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0xF0, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00,
|
0xE1, 0xB7, 0xB8, 0xB9, 0xE1,
|
||||||
0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00,
|
0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 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,
|
static const char PROGMEM lyr_num[] = {
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xE1, 0x97, 0x98, 0x99, 0xE1,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xE1, 0x9A, 0x9B, 0x9C, 0xE1,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xDF, 0xBF,
|
0xE1, 0xBA, 0xBB, 0xBC, 0xE1,
|
||||||
0xBF, 0x00, 0xBF, 0xBF, 0xDF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00,
|
0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 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,
|
static const char PROGMEM lyr_nav[] = {
|
||||||
0x03, 0x03, 0x7E, 0x7E, 0x03, 0x03, 0x7F, 0x7E, 0x00, 0x0F, 0x3E, 0x70, 0x3C, 0x06, 0x3C, 0x70,
|
0xE1, 0x97, 0x98, 0x99, 0xE1,
|
||||||
0x3E, 0x0F, 0x00, 0x32, 0x7B, 0x49, 0x49, 0x3F, 0x7E, 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x00, 0x1E,
|
0xE1, 0xB7, 0xB8, 0xB9, 0xE1,
|
||||||
0x3F, 0x69, 0x69, 0x6F, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xE1, 0xDA, 0xDB, 0xDC, 0xE1,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x07, 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F,
|
0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00
|
||||||
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,
|
static const char PROGMEM lyr_def[] = {
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xE1, 0x97, 0x98, 0x99, 0xE1,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xE1, 0xB7, 0xB8, 0xB9, 0xE1,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xE1, 0x9A, 0x9B, 0x9C, 0xE1,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
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,
|
#if defined(WPM_ENABLE)
|
||||||
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,
|
// Luna Sit
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
|
static const char PROGMEM sit[2][OLED_LUNA_ANIM_SIZE] = {
|
||||||
0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
/* 'sit1', 32x22px */
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 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,},
|
||||||
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,
|
/* 'sit2', 32x22px */
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xff, 0xff,
|
{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}
|
||||||
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
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 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
|
|
@ -148,24 +148,24 @@ static const unsigned char PROGMEM font[] = {
|
||||||
0x7F, 0x7F, 0x08, 0x08, 0x08, 0x7F,
|
0x7F, 0x7F, 0x08, 0x08, 0x08, 0x7F,
|
||||||
0x08, 0x08, 0x08, 0x7F, 0x7F, 0x00,
|
0x08, 0x08, 0x08, 0x7F, 0x7F, 0x00,
|
||||||
0x00, 0x2E, 0x2A, 0x2A, 0x3A, 0x00,
|
0x00, 0x2E, 0x2A, 0x2A, 0x3A, 0x00,
|
||||||
0x3E, 0x20, 0x20, 0x20, 0x00, 0x00,
|
|
||||||
0x7F, 0x51, 0x55, 0x55, 0x45, 0x7F,
|
0x7F, 0x51, 0x55, 0x55, 0x45, 0x7F,
|
||||||
0x41, 0x5F, 0x5F, 0x5F, 0x7F, 0x00,
|
0x00, 0x38, 0x00, 0x3E, 0x00, 0x38,
|
||||||
0x7F, 0x41, 0x7B, 0x77, 0x41, 0x7F,
|
0x00, 0x3C, 0x00, 0x30, 0x00, 0x00,
|
||||||
0x41, 0x5F, 0x5F, 0x5F, 0x7F, 0x00,
|
0x00, 0x24, 0x24, 0x12, 0x12, 0x24,
|
||||||
0x7F, 0x41, 0x5D, 0x5D, 0x5D, 0x7F,
|
0x24, 0x12, 0x12, 0x24, 0x00, 0x00,
|
||||||
0x41, 0x5F, 0x5F, 0x5F, 0x7F, 0x00,
|
0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00,
|
||||||
|
0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00,
|
||||||
0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xE0,
|
0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xE0,
|
||||||
0xE6, 0xF7, 0xF3, 0xF0, 0x60, 0x00,
|
0xE6, 0xF7, 0xF3, 0xF0, 0x60, 0x00,
|
||||||
0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00,
|
0x80, 0x80, 0x40, 0x40, 0x20, 0x20,
|
||||||
0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00,
|
0x10, 0x10, 0x08, 0x08, 0x10, 0x10,
|
||||||
0xF8, 0x1C, 0xDE, 0x1F, 0xFF, 0xFF,
|
0x20, 0x20, 0x40, 0x40, 0x80, 0x80,
|
||||||
0xFF, 0x1F, 0xDE, 0x1C, 0xF8, 0x00,
|
0x88, 0x88, 0xD5, 0xD5, 0xE2, 0xE2,
|
||||||
0xC0, 0xE2, 0xB4, 0xF8, 0xF8, 0xF8,
|
0xC4, 0xC4, 0x88, 0x88, 0xC4, 0xC4,
|
||||||
0xF8, 0xF8, 0xB4, 0xE2, 0xC0, 0x00,
|
0xE2, 0xE2, 0xD5, 0xD5, 0x88, 0x88,
|
||||||
0x7F, 0x01, 0x01, 0x01, 0x01, 0x3F,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
|
||||||
0x01, 0x01, 0x01, 0x01, 0x7F, 0x00,
|
0x00, 0x80, 0x00, 0x80, 0x00, 0x80,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F,
|
0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F,
|
||||||
0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F,
|
0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F,
|
||||||
0x87, 0xE1, 0xF9, 0xF9, 0xE1, 0x87,
|
0x87, 0xE1, 0xF9, 0xF9, 0xE1, 0x87,
|
||||||
|
@ -180,54 +180,54 @@ static const unsigned char PROGMEM font[] = {
|
||||||
0x7F, 0x1F, 0x0F, 0x47, 0x63, 0x71,
|
0x7F, 0x1F, 0x0F, 0x47, 0x63, 0x71,
|
||||||
0x63, 0x47, 0x0F, 0x1F, 0x7F, 0x00,
|
0x63, 0x47, 0x0F, 0x1F, 0x7F, 0x00,
|
||||||
0x00, 0x3E, 0x04, 0x08, 0x3E, 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, 0x41, 0x7F, 0x47,
|
||||||
0x7F, 0x43, 0x7F, 0x4F, 0x7F, 0x00,
|
0x7F, 0x43, 0x7F, 0x4F, 0x7F, 0x00,
|
||||||
0x7F, 0x5B, 0x5B, 0x6D, 0x6D, 0x5B,
|
0x7F, 0x5B, 0x5B, 0x6D, 0x6D, 0x5B,
|
||||||
0x5B, 0x6D, 0x6D, 0x5B, 0x7F, 0x00,
|
0x5B, 0x6D, 0x6D, 0x5B, 0x7F, 0x00,
|
||||||
0x00, 0x24, 0x24, 0x12, 0x12, 0x24,
|
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00,
|
||||||
0x24, 0x12, 0x12, 0x24, 0x00, 0x00,
|
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00,
|
||||||
0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x3F,
|
0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x3F,
|
||||||
0x3F, 0x7F, 0x7F, 0x38, 0x10, 0x00,
|
0x3F, 0x7F, 0x7F, 0x38, 0x10, 0x00,
|
||||||
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00,
|
0x88, 0x88, 0x55, 0x55, 0x22, 0x22,
|
||||||
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00,
|
0x44, 0x44, 0x88, 0x88, 0x44, 0x44,
|
||||||
0x0F, 0x14, 0x21, 0x40, 0x45, 0x41,
|
0x22, 0x22, 0x55, 0x55, 0x88, 0x88,
|
||||||
0x45, 0x40, 0x21, 0x14, 0x0F, 0x00,
|
0x88, 0x88, 0x55, 0x55, 0x23, 0x23,
|
||||||
0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D,
|
0x47, 0x47, 0x8F, 0x8F, 0x47, 0x47,
|
||||||
0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x00,
|
0x23, 0x23, 0x55, 0x55, 0x88, 0x88,
|
||||||
0x7F, 0x7F, 0x7F, 0x7F, 0x01, 0x3D,
|
0x00, 0xA8, 0xA8, 0xFC, 0xFE, 0x07,
|
||||||
0x01, 0x7F, 0x7F, 0x7F, 0x7F, 0x00,
|
0xFE, 0xFF, 0xFE, 0x07, 0xFE, 0xFF,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xFE, 0x07, 0xFE, 0xFC, 0xA8, 0xA8,
|
||||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x1C, 0x3E, 0x3E, 0x3E, 0x1C, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x3E, 0x1C, 0x1C, 0x08, 0x08, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x1C, 0x62, 0x0A,
|
0x00, 0x00, 0x00, 0x1C, 0x62, 0x0A,
|
||||||
0x62, 0x1C, 0x00, 0x00, 0x00, 0x00,
|
0x62, 0x1C, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x7F, 0x57, 0x7D, 0x67, 0x02, 0x1B,
|
0x7F, 0x57, 0x7D, 0x67, 0x02, 0x1B,
|
||||||
0x02, 0x67, 0x7D, 0x57, 0x7F, 0x00,
|
0x02, 0x67, 0x7D, 0x57, 0x7F, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x7F, 0x01, 0x01, 0x01, 0x01, 0x3F,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x01, 0x01, 0x01, 0x01, 0x7F, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x7F, 0x7F, 0x7F, 0x7F, 0x03, 0x3B,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x03, 0x7F, 0x7F, 0x7F, 0x7F, 0x00,
|
||||||
0x00, 0x3E, 0x22, 0x22, 0x22, 0x00,
|
0x00, 0x3E, 0x22, 0x22, 0x22, 0x00,
|
||||||
0x3E, 0x20, 0x20, 0x20, 0x00, 0x00,
|
0x7F, 0x41, 0x5D, 0x5D, 0x5D, 0x7F,
|
||||||
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,
|
|
||||||
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, 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,
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,8 +10,9 @@
|
||||||
# ?= means set the value if its not defined elsewhere
|
# ?= means set the value if its not defined elsewhere
|
||||||
|
|
||||||
|
|
||||||
|
# optional features
|
||||||
LTO_ENABLE ?= yes
|
# use these values if not defined at the keyboard level
|
||||||
|
LTO_ENABLE ?= no
|
||||||
MAGIC_ENABLE ?= no
|
MAGIC_ENABLE ?= no
|
||||||
CONSOLE_ENABLE ?= no
|
CONSOLE_ENABLE ?= no
|
||||||
UNICODE_ENABLE ?= no
|
UNICODE_ENABLE ?= no
|
||||||
|
@ -27,15 +28,15 @@ ENCODER_ENABLE ?= no
|
||||||
ENCODER_MAP_ENABLE ?= no
|
ENCODER_MAP_ENABLE ?= no
|
||||||
HAPTIC_ENABLE ?= no
|
HAPTIC_ENABLE ?= no
|
||||||
AUDIO_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
|
EXTRAKEY_ENABLE = yes
|
||||||
CAPS_WORD_ENABLE = yes
|
CAPS_WORD_ENABLE = yes
|
||||||
MOUSEKEY_ENABLE = yes
|
MOUSEKEY_ENABLE = yes
|
||||||
COMBO_ENABLE = yes
|
COMBO_ENABLE = yes
|
||||||
KEY_OVERRIDE_ENABLE = yes
|
KEY_OVERRIDE_ENABLE = yes
|
||||||
MUSIC_MODE = no
|
|
||||||
WPM_ENABLE = yes
|
|
||||||
|
|
||||||
# ---------------------------------------------------------
|
# ---------------------------------------------------------
|
||||||
# include my code that will be common across all my keyboards
|
# include my code that will be common across all my keyboards
|
||||||
|
@ -49,8 +50,12 @@ SRC += \
|
||||||
INTROSPECTION_KEYMAP_C += features/combo.c
|
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)
|
ifeq ($(strip $(OLED_ENABLE)), yes)
|
||||||
SRC += features/oled.c
|
SRC += features/oled.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(AUDIO_ENABLE)), yes)
|
||||||
|
MUSIC_MODE = no
|
||||||
endif
|
endif
|
|
@ -1,81 +1,46 @@
|
||||||
#include "t4corun.h"
|
#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;
|
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;
|
static bool drag_scroll_enabled = false;
|
||||||
|
|
||||||
|
// Luna Pet Variables
|
||||||
/* Luna variables */
|
static bool isJumping = false;
|
||||||
static bool isSneaking = false;
|
|
||||||
static bool isJumping = false;
|
|
||||||
static bool showedJump = true;
|
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;}
|
||||||
|
|
||||||
/*
|
// Hold Navigation and Number to get Symbol
|
||||||
Keeps track of Ploopy Nano drag scroll from the keyboard side
|
layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _NAVIGATION, _NUMBER, _SYMBOL); }
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// Customize behavior for existing keycodes or create new ones
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
|
||||||
switch (keycode) {
|
switch (keycode) {
|
||||||
|
|
||||||
/* KEYBOARD PET STATUS START */
|
|
||||||
|
|
||||||
case TR_LCTL:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
isSneaking = true;
|
|
||||||
} else {
|
|
||||||
isSneaking = false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case KC_SPC:
|
case KC_SPC:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
isJumping = true;
|
isJumping = true;
|
||||||
showedJump = false;
|
showedJump = false;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
isJumping = false;
|
isJumping = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* KEYBOARD PET STATUS END */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
case BASELYR:
|
case BASELYR:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
|
@ -86,7 +51,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
||||||
case RBSELYR:
|
case RBSELYR:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
|
|
||||||
|
@ -96,7 +60,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
||||||
case PN_DRGS:
|
case PN_DRGS:
|
||||||
if (record->event.pressed) {
|
if (record->event.pressed) {
|
||||||
|
|
||||||
|
@ -110,7 +73,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
||||||
case PN_PDPI:
|
case PN_PDPI:
|
||||||
if (record->event.pressed) {
|
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;
|
return true;
|
||||||
}
|
}
|
|
@ -3,12 +3,9 @@
|
||||||
#include "features/taphold.h"
|
#include "features/taphold.h"
|
||||||
|
|
||||||
bool drag_scroll_is_enabled(void);
|
bool drag_scroll_is_enabled(void);
|
||||||
|
|
||||||
bool isLunaSneaking(void);
|
|
||||||
bool isLunaJumping(void);
|
bool isLunaJumping(void);
|
||||||
bool isLunaShowedJump(void);
|
bool isJumpShown(void);
|
||||||
|
void setLunaJumped(void);
|
||||||
void setLunaShowedJump(bool state);
|
|
||||||
|
|
||||||
enum layers {
|
enum layers {
|
||||||
_QWERTY = 0,
|
_QWERTY = 0,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue