From a274d43796f9eb40a0f5928a24439cf8d0a339f1 Mon Sep 17 00:00:00 2001 From: Victor Date: Sun, 12 May 2024 23:34:04 -0500 Subject: [PATCH 01/34] Initial checkin - trying to port over the old config to info.json data driven config - stopped for tonight --- keyboards/klor/config.h | 55 ++++++++++++++++++++++++ keyboards/klor/info.json | 90 ++++++++++++++++++++++++++++++++++++++++ keyboards/klor/klor.c | 0 keyboards/klor/klor.h | 0 keyboards/klor/readme.md | 26 ++++++++++++ keyboards/klor/rules.mk | 15 +++++++ 6 files changed, 186 insertions(+) create mode 100644 keyboards/klor/config.h create mode 100644 keyboards/klor/info.json create mode 100644 keyboards/klor/klor.c create mode 100644 keyboards/klor/klor.h create mode 100644 keyboards/klor/readme.md create mode 100644 keyboards/klor/rules.mk diff --git a/keyboards/klor/config.h b/keyboards/klor/config.h new file mode 100644 index 00000000..2daaaec4 --- /dev/null +++ b/keyboards/klor/config.h @@ -0,0 +1,55 @@ +#pragma once + +// Most configuration will be found in info.json + +// ┌─────────────────────────────────────────────────┐ +// │ o l e d s │ +// └─────────────────────────────────────────────────┘ + +#ifdef OLED_ENABLE +# define OLED_DISPLAY_128X64 +#endif + +// ┌─────────────────────────────────────────────────┐ +// │ a u d i o │ +// └─────────────────────────────────────────────────┘ + +#define AUDIO_PIN B5 +#define AUDIO_VOICES +#define AUDIO_DAC_SAMPLE_MAX 4095U +#define AUDIO_VOICE_DEFAULT butts_fader + +#ifdef AUDIO_ENABLE +# define KLOR_SOUND W__NOTE(_DS0), W__NOTE(_DS1), H__NOTE(_DS2), H__NOTE(_DS3), Q__NOTE(_DS4), Q__NOTE(_DS5), E__NOTE(_DS6), E__NOTE(_DS7), S__NOTE(_DS8), Q__NOTE(_GS0) +# define STARTUP_SONG SONG(KLOR_SOUND) +# define BYE_SOUND H__NOTE(_DS4), H__NOTE(_DS3), W__NOTE(_DS1) +# define GOODBYE_SONG SONG(BYE_SOUND) +# define DEFAULT_LAYER_SONGS \ + { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND) } +#endif + +// ┌─────────────────────────────────────────────────┐ +// │ h a p t i c f e e d b a c k │ +// └─────────────────────────────────────────────────┘ + +#ifdef HAPTIC_ENABLE +# define FB_ERM_LRA 1 +# define FB_BRAKEFACTOR 3 // For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 +# define FB_LOOPGAIN 1 // For Low:0, Medium:1, High:2, Very High:3 +# define RATED_VOLTAGE 2 +# define V_PEAK 2.8 +# define V_RMS 2.0 +# define F_LRA 150 // resonance freq +# define DRV_GREETING alert_750ms +#endif + +// ┌─────────────────────────────────────────────────┐ +// │ t r a c k b a l l │ +// └─────────────────────────────────────────────────┘ + +#ifdef POINTING_DEVICE_ENABLE +# define PAW3204_SCLK_PIN D0 +# define PAW3204_SDIO_PIN D1 +# define POINTING_DEVICE_AUTO_MOUSE_ENABLE +# define AUTO_MOUSE_DELAY 300 +#endif \ No newline at end of file diff --git a/keyboards/klor/info.json b/keyboards/klor/info.json new file mode 100644 index 00000000..ecffb70c --- /dev/null +++ b/keyboards/klor/info.json @@ -0,0 +1,90 @@ +{ + "keyboard_name": "KLOR", + "url": "https://github.com/GEIGEIGEIST/KLOR", + "manufacturer": "GEIST", + "usb": { + "vid": "0x3A3C", + "pid": "0x0001", + "device_version": "1.3.0" + }, + "processor": "RP2040", + "bootloader": "rp2040", + "matrix_pins": { + "cols": [ "F6", "F7", "B1", "B3", "B2", "B6" ], + "rows": [ "C6", "D7", "E6", "B4" ] + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "encoder": true, + "oled": true + }, + "build": { + "lto": true + }, + "encoder": { + "rotary": [ + { + "pin_a": "F4", + "pin_b": "F5", + "resolution": 2 + } + ] + }, + "split": { + "enabled": true, + "soft_serial_pin": "D2", + "encoder": { + "right": { + "rotary": [ + { + "pin_a": "F4", + "pin_b": "F5", + "resolution": 2 + } + ] + } + }, + "transport": { + "sync": { + "matrix_state": true, + "oled": true, + "haptic": true + } + } + }, + "rgb_matrix": { + "driver": "ws2812", + "led_count": 42, + "split_count": [21,21], + "max_brightness": 180, + "sleep": true + }, + "ws2812": { + "pin": "D3", + "driver": "vendor" + }, + "layouts": { + "LAYOUT_polydactyl": { + "layout": [ + {"x":3, "y":0.25}, {"x":13, "y":0.25}, {"x":4, "y":0.75}, {"x":12, "y":0.75}, {"x":5, "y":1}, {"x":11, "y":1}, {"x":3, "y":1.25}, {"x":13, "y":1.25}, {"x":4, "y":1.75}, {"x":12, "y":1.75}, {"x":5, "y":2}, {"x":11, "y":2}, {"x":3, "y":2.25}, {"x":13, "y":2.25}, {"x":4, "y":2.75}, {"x":12, "y":2.75}, {"x":5, "y":3}, {"x":11, "y":3}, {"x":6.25, "y":3.25}, {"x":9.75, "y":3.25}, {"x":-0.5, "y":-0.4500000000000002}, {"x":-0.5, "y":-4.15}, {"x":-0.5, "y":-6.15}, {"x":-0.5, "y":-5.15}, {"x":-0.5, "y":-4.15}, {"x":-0.25, "y":-5.5}, {"x":0.75, "y":-4.7}, {"x":-0.25, "y":-4.500000000000001}, {"x":0.75, "y":-3.7000000000000006}, {"x":-0.25, "y":-3.5000000000000004}, {"x":-0.5, "y":-7.200000000000001}, {"x":-0.5, "y":-7.200000000000001}, {"x":-0.5, "y":-7.200000000000001}, {"x":-0.5, "y":-10.9}, {"x":-0.5, "y":-10.9}, {"x":-0.5, "y":-10.9}, {"x":-1.0, "y":-12.250000000000002}, {"x":-2, "y":-11.450000000000001}, {"x":-1.0, "y":-11.250000000000002}, {"x":-2, "y":-10.450000000000001}, {"x":-1.0, "y":-10.250000000000002}, {"x":-0.75, "y":-12.250000000000002}, {"x":-0.75, "y":-11.250000000000002}, {"x":-0.75, "y":-10.250000000000002} + ] + }, + "LAYOUT_konrad": { + "layout": [ + {"x":3, "y":0.25}, {"x":13, "y":0.25}, {"x":4, "y":0.75}, {"x":12, "y":0.75}, {"x":5, "y":1}, {"x":11, "y":1}, {"x":3, "y":1.25}, {"x":13, "y":1.25}, {"x":4, "y":1.75}, {"x":12, "y":1.75}, {"x":5, "y":2}, {"x":11, "y":2}, {"x":3, "y":2.25}, {"x":13, "y":2.25}, {"x":4, "y":2.75}, {"x":12, "y":2.75}, {"x":5, "y":3}, {"x":11, "y":3}, {"x":6.25, "y":3.25}, {"x":9.75, "y":3.25}, {"x":-0.5, "y":-0.4499999999999993}, {"x":-0.5, "y":-4.149999999999999}, {"x":-0.5, "y":-6.149999999999999}, {"x":-0.5, "y":-5.149999999999999}, {"x":-0.5, "y":-4.149999999999999}, {"x":-0.25, "y":-5.499999999999999}, {"x":0.75, "y":-4.699999999999998}, {"x":-0.25, "y":-4.499999999999999}, {"x":0.75, "y":-3.6999999999999984}, {"x":-0.25, "y":-3.4999999999999987}, {"x":-0.5, "y":-7.199999999999998}, {"x":-0.5, "y":-7.199999999999998}, {"x":-0.5, "y":-10.899999999999999}, {"x":-0.5, "y":-10.899999999999999}, {"x":-1.0, "y":-12.249999999999998}, {"x":-2, "y":-11.449999999999998}, {"x":-1.0, "y":-11.249999999999998}, {"x":-2, "y":-10.449999999999998}, {"x":-1.0, "y":-10.249999999999998}, {"x":-0.75, "y":-12.249999999999998}, {"x":-0.75, "y":-11.249999999999998}, {"x":-0.75, "y":-10.249999999999998} + ] + }, + "LAYOUT_yubitsume": { + "layout": [ + {"x":2.25, "y":0.25}, {"x":12.25, "y":0.25}, {"x":3.25, "y":0.75}, {"x":11.25, "y":0.75}, {"x":4.25, "y":1}, {"x":10.25, "y":1}, {"x":2.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":3.25, "y":1.75}, {"x":11.25, "y":1.75}, {"x":4.25, "y":2}, {"x":10.25, "y":2}, {"x":2.25, "y":2.25}, {"x":12.25, "y":2.25}, {"x":3.25, "y":2.75}, {"x":11.25, "y":2.75}, {"x":4.25, "y":3}, {"x":10.25, "y":3}, {"x":5.5, "y":3.25}, {"x":9, "y":3.25}, {"x":-0.5, "y":-0.4499999999999993}, {"x":-0.5, "y":-4.149999999999999}, {"x":-1.25, "y":-6.149999999999999}, {"x":-1.25, "y":-5.149999999999999}, {"x":-1.25, "y":-4.149999999999999}, {"x":-1.0, "y":-5.499999999999999}, {"x":-1.0, "y":-4.499999999999999}, {"x":-1.0, "y":-3.4999999999999987}, {"x":-0.5, "y":-7.199999999999998}, {"x":-0.5, "y":-7.199999999999998}, {"x":-0.5, "y":-7.199999999999999}, {"x":-0.5, "y":-10.899999999999999}, {"x":-0.5, "y":-10.899999999999999}, {"x":-0.5, "y":-10.899999999999999}, {"x":-1.75, "y":-12.25}, {"x":-1.75, "y":-11.25}, {"x":-1.75, "y":-10.25}, {"x":-1.5, "y":-12.25}, {"x":-1.5, "y":-11.25}, {"x":-1.5, "y":-10.25} + ] + }, + "LAYOUT_saegewerk": { + "layout": [ + {"x":2.25, "y":0.25}, {"x":12.25, "y":0.25}, {"x":3.25, "y":0.75}, {"x":11.25, "y":0.75}, {"x":4.25, "y":1}, {"x":10.25, "y":1}, {"x":2.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":3.25, "y":1.75}, {"x":11.25, "y":1.75}, {"x":4.25, "y":2}, {"x":10.25, "y":2}, {"x":2.25, "y":2.25}, {"x":12.25, "y":2.25}, {"x":3.25, "y":2.75}, {"x":11.25, "y":2.75}, {"x":4.25, "y":3}, {"x":10.25, "y":3}, {"x":5.5, "y":3.25}, {"x":9, "y":3.25}, {"x":-0.5, "y":-0.4499999999999993}, {"x":-0.5, "y":-4.149999999999999}, {"x":-1.25, "y":-6.149999999999999}, {"x":-1.25, "y":-5.149999999999999}, {"x":-1.25, "y":-4.149999999999999}, {"x":-1.0, "y":-5.499999999999999}, {"x":-1.0, "y":-4.499999999999999}, {"x":-1.0, "y":-3.4999999999999987}, {"x":-0.5, "y":-7.199999999999998}, {"x":-0.5, "y":-7.199999999999998}, {"x":-0.5, "y":-10.899999999999999}, {"x":-0.5, "y":-10.899999999999999}, {"x":-1.75, "y":-12.249999999999998}, {"x":-1.75, "y":-11.249999999999998}, {"x":-1.75, "y":-10.249999999999998}, {"x":-1.5, "y":-12.249999999999998}, {"x":-1.5, "y":-11.249999999999998}, {"x":-1.5, "y":-10.249999999999998} + ] + } + } +} diff --git a/keyboards/klor/klor.c b/keyboards/klor/klor.c new file mode 100644 index 00000000..e69de29b diff --git a/keyboards/klor/klor.h b/keyboards/klor/klor.h new file mode 100644 index 00000000..e69de29b diff --git a/keyboards/klor/readme.md b/keyboards/klor/readme.md new file mode 100644 index 00000000..6632bcf2 --- /dev/null +++ b/keyboards/klor/readme.md @@ -0,0 +1,26 @@ +```text +█ █ █ ▄▄▄▀▀▀▀▀▀▄▄▄ █▀▀▀▀▀▀▀▀▀▀█ +█ █ █ ▄▀ ▀▄ █ █ +█ █ █ ▄▀ ▀▄ █ █ +█ █ █ █ █ █ █ +█ █ █ █ █ █ █ +█ █ █ █ █ █▄▄▄▄▄▄▄▄▄▄█ +█ █ █ █ █ █ █ █ +█ █ █ █ █ █ █ █ +█ █ █ █ ▀▄ ▄▀ █ █ +██ █ █ ▀▄ ▄▀ █ █ +█ █ █▄▄▄▄▄▄▄▄ ▀▀▀▄▄▄▄▄▄▀▀▀ █ █ +``` + +# KLOR split keyboard + +KLOR is 42 keys column-staggered split keyboard made by @geigeigeist. It supports a per key RGB matrix, encoders, OLED displays, haptic feedback, audio, a Pixart Paw3204 trackball and four different layouts, through brake off parts. +It's schematics are based on the Sofle, while the layout is based on the Yacc46. + +t4croun: this is my attempt at modernizing @geigeigeist's keymap. The repo has not been updated in a few years and QMK has introduced breaking changes. His repo can be found [here](https://github.com/GEIGEIGEIST/qmk-config-klor). Note: Focusing on defining my saegewerk configuration as that is what I have + +You can use this command to compile the firmware +`qmk compile -kb klor -km default` + +and this command if you want to compile the firmware for a RP2040 based MCU +`qmk compile -kb klor/2040 -km default` \ No newline at end of file diff --git a/keyboards/klor/rules.mk b/keyboards/klor/rules.mk new file mode 100644 index 00000000..c3fcb138 --- /dev/null +++ b/keyboards/klor/rules.mk @@ -0,0 +1,15 @@ +#HAPTIC FEEDBACK +HAPTIC_DRIVER = drv2605l + +#PER KEY RGB +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE) + +#SPACE SAVING +AUDIO_ENABLE = no +MUSIC_ENABLE = no +CONSOLE_ENABLE = no +COMMAND_ENABLE = no +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no From c86deba845532444ebe9eb84de2d3c107273dfb2 Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 13 May 2024 21:33:46 -0500 Subject: [PATCH 02/34] Adding klor files and trying to build --- keyboards/klor/2040/2040.c | 1 + keyboards/klor/2040/2040.h | 3 + keyboards/klor/2040/config.h | 10 + keyboards/klor/2040/halconf.h | 7 + keyboards/klor/2040/mcuconf.h | 12 + keyboards/klor/2040/readme.md | 21 + keyboards/klor/2040/rules.mk | 12 + keyboards/klor/config.h | 5 +- keyboards/klor/info.json | 26 +- keyboards/klor/keymaps/default/config.h | 87 + keyboards/klor/keymaps/default/geist/config.h | 97 + keyboards/klor/keymaps/default/geist/keymap.c | 802 +++++ keyboards/klor/keymaps/default/geist/rules.mk | 17 + keyboards/klor/keymaps/default/keymap.c | 771 ++++ keyboards/klor/keymaps/default/rules.mk | 16 + keyboards/klor/klor.c | 237 ++ keyboards/klor/klor.h | 105 + keyboards/klor/lib/glcdfont.c | 233 ++ keyboards/klor/lib/klorimation.h | 3159 +++++++++++++++++ keyboards/klor/lib/klounds.h | 15 + keyboards/klor/rules.mk | 17 +- qmk.json | 6 +- qmk_clone.json | 8 - qmk_nontree.json | 3 +- 24 files changed, 5644 insertions(+), 26 deletions(-) create mode 100644 keyboards/klor/2040/2040.c create mode 100644 keyboards/klor/2040/2040.h create mode 100644 keyboards/klor/2040/config.h create mode 100644 keyboards/klor/2040/halconf.h create mode 100644 keyboards/klor/2040/mcuconf.h create mode 100644 keyboards/klor/2040/readme.md create mode 100644 keyboards/klor/2040/rules.mk create mode 100644 keyboards/klor/keymaps/default/config.h create mode 100644 keyboards/klor/keymaps/default/geist/config.h create mode 100644 keyboards/klor/keymaps/default/geist/keymap.c create mode 100644 keyboards/klor/keymaps/default/geist/rules.mk create mode 100644 keyboards/klor/keymaps/default/keymap.c create mode 100644 keyboards/klor/keymaps/default/rules.mk create mode 100644 keyboards/klor/lib/glcdfont.c create mode 100644 keyboards/klor/lib/klorimation.h create mode 100644 keyboards/klor/lib/klounds.h delete mode 100644 qmk_clone.json diff --git a/keyboards/klor/2040/2040.c b/keyboards/klor/2040/2040.c new file mode 100644 index 00000000..c8a237b4 --- /dev/null +++ b/keyboards/klor/2040/2040.c @@ -0,0 +1 @@ +#include "2040.h" \ No newline at end of file diff --git a/keyboards/klor/2040/2040.h b/keyboards/klor/2040/2040.h new file mode 100644 index 00000000..2b748f70 --- /dev/null +++ b/keyboards/klor/2040/2040.h @@ -0,0 +1,3 @@ +#pragma once + +#include "klor.h" \ No newline at end of file diff --git a/keyboards/klor/2040/config.h b/keyboards/klor/2040/config.h new file mode 100644 index 00000000..8fbc56f0 --- /dev/null +++ b/keyboards/klor/2040/config.h @@ -0,0 +1,10 @@ +#pragma once +#include "config_common.h" + +// ┌─────────────────────────────────────────────────┐ +// │ a u d i o │ +// └─────────────────────────────────────────────────┘ + +#define AUDIO_PWM_DRIVER PWMD4 +#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_B +#define AUDIO_STATE_TIMER GPTD4 diff --git a/keyboards/klor/2040/halconf.h b/keyboards/klor/2040/halconf.h new file mode 100644 index 00000000..58f0849b --- /dev/null +++ b/keyboards/klor/2040/halconf.h @@ -0,0 +1,7 @@ +#pragma once + +#define HAL_USE_I2C TRUE +#define HAL_USE_PWM TRUE +#define HAL_USE_PAL TRUE + +#include_next diff --git a/keyboards/klor/2040/mcuconf.h b/keyboards/klor/2040/mcuconf.h new file mode 100644 index 00000000..b6c8644c --- /dev/null +++ b/keyboards/klor/2040/mcuconf.h @@ -0,0 +1,12 @@ +#pragma once + +#include_next + +#undef RP_I2C_USE_I2C1 +#define RP_I2C_USE_I2C1 TRUE + +#undef RP_PWM_USE_PWM4 +#define RP_PWM_USE_PWM4 TRUE + +#undef RP_PWM_USE_TIM1 +#define RP_PWM_USE_TIM1 TRUE diff --git a/keyboards/klor/2040/readme.md b/keyboards/klor/2040/readme.md new file mode 100644 index 00000000..cd6d8269 --- /dev/null +++ b/keyboards/klor/2040/readme.md @@ -0,0 +1,21 @@ +# KLOR keyboard with RP2040 MCU + +This is the RP2040 revision of the firmware. +You can use several RP2040 based MCUs with Pro Micro formfactor. +By default the config is setup for the pinout of the Sparkfun Pro Micro RP2040, which is used by most of the RP2040 based MCUs. Since the KB2040/Blok/Elite-Pi have a slightly different pinout you need to change this line +`CONVERT_TO = promicro_rp2040` +to one of tis lines +`CONVERT_TO = kb2040` +`CONVERT_TO = blok` +`CONVERT_TO = elite_pi` + in the `/2040/rules.mk` file. + + +## Bootloader + +Enter the bootloader in 3 ways: + +- **Keycode in layout**: Press the key mapped to `QK_BOOTLOADER` if it is configured. +- **Physical reset button**: Quick double-tap on the reset button soldered on the PCB. +- **Controller boot button**: Hold the `BOOT` button on the controller and plug in the USB. +- **Bootmagic reset**: Hold down the top left key on the left half and plug in the controller. diff --git a/keyboards/klor/2040/rules.mk b/keyboards/klor/2040/rules.mk new file mode 100644 index 00000000..b8e75935 --- /dev/null +++ b/keyboards/klor/2040/rules.mk @@ -0,0 +1,12 @@ +# PIO serial/WS2812 drivers must be used on RP2040 +SERIAL_DRIVER = vendor + +# CONVERTER - if you use a listed MCU comment the first line and uncomment the appropiate line +CONVERT_TO = promicro_rp2040 +#CONVERT_TO = kb2040 +#CONVERT_TO = blok +#CONVERT_TO = elite_pi + +# AUDIO +AUDIO_ENABLE = yes +AUDIO_DRIVER = pwm_hardware diff --git a/keyboards/klor/config.h b/keyboards/klor/config.h index 2daaaec4..e29d34b3 100644 --- a/keyboards/klor/config.h +++ b/keyboards/klor/config.h @@ -7,15 +7,14 @@ // └─────────────────────────────────────────────────┘ #ifdef OLED_ENABLE -# define OLED_DISPLAY_128X64 +# define OLED_DISPLAY_128X64 +# define OLED_FONT_H "./lib/glcdfont.c" #endif // ┌─────────────────────────────────────────────────┐ // │ a u d i o │ // └─────────────────────────────────────────────────┘ -#define AUDIO_PIN B5 -#define AUDIO_VOICES #define AUDIO_DAC_SAMPLE_MAX 4095U #define AUDIO_VOICE_DEFAULT butts_fader diff --git a/keyboards/klor/info.json b/keyboards/klor/info.json index ecffb70c..f1f4c7ff 100644 --- a/keyboards/klor/info.json +++ b/keyboards/klor/info.json @@ -7,19 +7,13 @@ "pid": "0x0001", "device_version": "1.3.0" }, - "processor": "RP2040", - "bootloader": "rp2040", + "processor": "atmega32u4", + "bootloader": "caterina", "matrix_pins": { "cols": [ "F6", "F7", "B1", "B3", "B2", "B6" ], "rows": [ "C6", "D7", "E6", "B4" ] }, "diode_direction": "COL2ROW", - "features": { - "bootmagic": true, - "extrakey": true, - "encoder": true, - "oled": true - }, "build": { "lto": true }, @@ -54,17 +48,29 @@ } } }, + "rgblight": { + "driver": "ws2812", + "led_count": 42, + "split_count": [21, 21] + }, "rgb_matrix": { "driver": "ws2812", "led_count": 42, - "split_count": [21,21], + "split_count": [21, 21], "max_brightness": 180, - "sleep": true + "sleep": true, + "default": { + "hue": 35 + } }, "ws2812": { "pin": "D3", "driver": "vendor" }, + "audio": { + "pins": [ "B5" ], + "voices": true + }, "layouts": { "LAYOUT_polydactyl": { "layout": [ diff --git a/keyboards/klor/keymaps/default/config.h b/keyboards/klor/keymaps/default/config.h new file mode 100644 index 00000000..62175180 --- /dev/null +++ b/keyboards/klor/keymaps/default/config.h @@ -0,0 +1,87 @@ +#pragma once + +/* The way how "handedness" is decided (which half is which), +see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness +for more options. +*/ + +#define MASTER_LEFT +// #define MASTER_RIGHT + +//#define TAPPING_TERM 170 +#define TAPPING_TERM 170 + +// Prevent normal rollover on alphas from accidentally triggering mods. +#define IGNORE_MOD_TAP_INTERRUPT + +// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. +#define TAPPING_FORCE_HOLD + +// Auto Shift +#define NO_AUTO_SHIFT_ALPHA +#define AUTO_SHIFT_TIMEOUT TAPPING_TERM +#define AUTO_SHIFT_NO_SETUP + +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE +#define NO_ACTION_ONESHOT +//#define NO_ACTION_TAPPING +//#define NO_MUSIC_MODE + +#define COMBO_COUNT 1 + + +// RGB matrix support +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effect + +//# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_SOLID_COLOR +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +//# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +//# define ENABLE_RGB_MATRIX_RAINDROPS +//# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +//# define ENABLE_RGB_MATRIX_PIXEL_RAIN +//# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined ├─────────────────────────────┐ +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +//# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined ├────────────┐ +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +//# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +//# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif diff --git a/keyboards/klor/keymaps/default/geist/config.h b/keyboards/klor/keymaps/default/geist/config.h new file mode 100644 index 00000000..06c77177 --- /dev/null +++ b/keyboards/klor/keymaps/default/geist/config.h @@ -0,0 +1,97 @@ +#pragma once + +/* The way how "handedness" is decided (which half is which), +see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness +for more options. +*/ + +#define MASTER_LEFT +// #define MASTER_RIGHT + + +//#define TAPPING_TERM 170 +#define TAPPING_TERM 170 + +// Prevent normal rollover on alphas from accidentally triggering mods. +#define IGNORE_MOD_TAP_INTERRUPT + +// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. +#define TAPPING_FORCE_HOLD + +// Auto Shift +#define NO_AUTO_SHIFT_ALPHA +#define AUTO_SHIFT_TIMEOUT TAPPING_TERM +#define AUTO_SHIFT_NO_SETUP + +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE +#define NO_ACTION_ONESHOT +//#define NO_ACTION_TAPPING +//#define NO_MUSIC_MODE + +#define COMBO_COUNT 1 + + +#ifdef POINTING_DEVICE_ENABLE +//# define POINTING_DEVICE_ROTATION_90 +# define SPLIT_POINTING_ENABLE +# define POINTING_DEVICE_RIGHT +# define POINTING_DEVICE_ROTATION_270 +#endif + +// RGB matrix support +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effect + +//# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_SOLID_COLOR +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +//# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +//# define ENABLE_RGB_MATRIX_RAINDROPS +//# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +//# define ENABLE_RGB_MATRIX_PIXEL_RAIN +//# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined ├─────────────────────────────┐ +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +//# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined ├────────────┐ +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +//# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +//# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif + + diff --git a/keyboards/klor/keymaps/default/geist/keymap.c b/keyboards/klor/keymaps/default/geist/keymap.c new file mode 100644 index 00000000..909a82ec --- /dev/null +++ b/keyboards/klor/keymaps/default/geist/keymap.c @@ -0,0 +1,802 @@ +/* + + █ █ █ ▄▄▄▀▀▀▀▀▀▄▄▄ █▀▀▀▀▀▀▀▀▀▀█ + █ █ █ ▄▀ ▀▄ █ █ + █ █ █ ▄▀ ▀▄ █ █ + █ █ █ █ █ █ █ + █ █ █ █ █ █ █ + █ █ █ █ █ █▄▄▄▄▄▄▄▄▄▄█ + █ █ █ █ █ █ █ █ + █ █ █ █ █ █ █ █ + █ █ █ █ ▀▄ ▄▀ █ █ + ██ █ █ ▀▄ ▄▀ █ █ + █ █ █▄▄▄▄▄▄▄▄ ▀▀▀▄▄▄▄▄▄▀▀▀ █ █ + + ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + ┌─┐┌─╴╷┌──┬─ + │ ┐├─╴│└─┐│ + └─┘└─╴╵╶─┘╵ +*/ +#include QMK_KEYBOARD_H +#include +#include +#include "klor.h" +#ifdef HAPTIC_ENABLE +#include "drivers/haptic/DRV2605L.h" +#endif //HAPTIC ENABLE + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ D E F I N I T I O N S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +// ┌───────────────────────────────────────────────────────────┐ +// │ d e f i n e l a y e r s │ +// └───────────────────────────────────────────────────────────┘ + +enum klor_layers { + /* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */ + _COLEMAK, + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, +}; + +// ┌───────────────────────────────────────────────────────────┐ +// │ d e f i n e k e y c o d e s │ +// └───────────────────────────────────────────────────────────┘ + +enum custom_keycodes { + COLEMAK = SAFE_RANGE, + QWERTY, + LOWER, + RAISE, + ADJUST, + OS_SWAP, + WMAIL, + GMAIL, + GIPHY, + MAKE_H, + SNAP1, + SNAP2 +}; + +// ┌───────────────────────────────────────────────────────────┐ +// │ d e f i n e m a c r o n a m e s │ +// └───────────────────────────────────────────────────────────┘ + +// LEFT HAND HOME ROW MODS ├───────────────────────────────────┐ + +#define GUI_A MT(MOD_LGUI, KC_A) +#define ALT_R MT(MOD_LALT, KC_R) +#define CTL_S MT(MOD_LCTL, KC_S) +#define SHT_T MT(MOD_LSFT, KC_T) + +// RIGHT HAND HOME ROW MODS ├───────────────────────────────────┐ + +#define SHT_N MT(MOD_RSFT, KC_N) +#define CTL_E MT(MOD_LCTL, KC_E) +#define ALT_I MT(MOD_LALT, KC_I) +#define GUI_O MT(MOD_LGUI, KC_O) + +// ┌───────────────────────────────────────────────────────────┐ +// │ d e f i n e c o m b o s │ +// └───────────────────────────────────────────────────────────┘ + +const uint16_t PROGMEM esc_combo[] = {KC_TAB, KC_Q, COMBO_END}; +//const uint16_t PROGMEM save_combo[] = {KC_D, KC_S, COMBO_END}; +combo_t key_combos[COMBO_COUNT] = { + COMBO(esc_combo, KC_ESC) + //COMBO(save_combo, C(KC_S)) +}; + + +// ┌───────────────────────────────────────────────────────────┐ +// │ d e f i n e k e y o v e r r i d e s │ +// └───────────────────────────────────────────────────────────┘ + +const key_override_t sve_key_override = ko_make_basic(MOD_MASK_GUI, KC_S, C(KC_S)); + +// This globally defines all key overrides to be used ├───────────┐ +const key_override_t **key_overrides = (const key_override_t *[]){ + &sve_key_override, + NULL // Null terminate the array of overrides! +}; + + +// ┌───────────────────────────────────────────────────────────┐ +// │ d e f i n e s o u n d s │ +// └───────────────────────────────────────────────────────────┘ + +#ifdef AUDIO_ENABLE + #define WINXP_SOUND W__NOTE(_DS6), Q__NOTE(_DS5), H__NOTE(_AS5), H__NOTE(_GS5), H__NOTE(_DS5), H__NOTE(_DS6), H__NOTE(_AS5) + #define MAC_SOUND S__NOTE(_CS5), B__NOTE(_C5) + + float winxp_song[][2] = SONG(WINXP_SOUND); + float mac_song[][2] = SONG(MAC_SOUND); +#endif // AUDIO_ENABLE + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ K E Y M A P S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + ┌───────────────────────────────────────────────────────────┐ + │ c o l e m a k │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ Q │ W │ F │ P │ G │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ J │ L │ U │ Y │ ; │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ TAB │ A │ R │ S │ T │ D ├─╯ ╰─┤ H │ N │ E │ I │ O │ " │ + ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + │ DEL │ Z │ X │ C │ V │ B ││ SHIFT ││PLY/PSE ││ K │ M │ , │ . │ / │ SHIFT │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPCE │ + └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ + + [_COLEMAK] = LAYOUT_polydactyl( + //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, + KC_TAB, GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, KC_QUOT, + KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_MPLY, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, + KC_DEL, LOWER, KC_SPC, KC_ESC, KC_LGUI, KC_ENT, RAISE, KC_BSPC + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌───────────────────────────────────────────────────────────┐ + │ q w e r t y │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ Q │ W │ E │ R │ T │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ Y │ U │ I │ O │ P │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ TAB │ A │ S │ D │ F │ G ├─╯ ╰─┤ H │ J │ K │ L │ ; │ " │ + ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + │ DEL │ Z │ X │ C │ V │ B ││ SHIFT ││PLY/PSE ││ N │ M │ , │ . │ / │ SHIFT │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPACE │ + └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ + + [_QWERTY] = LAYOUT_polydactyl( + //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_DEL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_MPLY, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, LOWER, KC_SPC, KC_LALT, KC_LGUI, KC_ENT, RAISE, KC_BSPC + ), + + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌───────────────────────────────────────────────────────────┐ + │ l o w e r │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ CAPSLCK │ NUMLCK │ ↑ │ = │ { │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ } │ 7 │ 8 │ 9 │ + │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ ESC │ HOME │ ← │ ↓ │ → │ [ ├─╯ ╰─┤ ] │ 4 │ 5 │ 6 │ - │ ' │ + ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + │ SCRNSHT │ END │ PG↑ │ SAVE │ PG↓ │ ( ││ MUTE ││PLY/PSE ││ ) │ 1 │ 2 │ 3 │ * │ ▼ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ADJUST │ 0 │ + └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ + + [_LOWER] = LAYOUT_polydactyl( + //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_ESC, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, KC_DQT, + SNAP2, KC_END, KC_PGUP, C(KC_S), KC_PGDN, KC_LPRN, KC_MUTE, KC_MPLY, KC_RPRN, KC_P1, KC_P2, KC_P3, KC_PAST, _______, + _______, _______, _______, RGB_MOD, RGB_MOD, _______, _______, KC_P0 + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌───────────────────────────────────────────────────────────┐ + │ r a i s e │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ ! │ @ │ # │ $ │ % │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ ^ │ & │ Ü │ ° │ / │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ GMX │ Ä │ è │ SZ │ é │ ├─╯ ╰─┤ │ ¥ │ € │ £ │ Ö │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + │ WEB │ ` │ ~ │ CUE │ │ ││ MUTE ││PLY/PSE ││ │ │ │ DM REC1 │ DM STOP │ DM PLY1 │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ GIPHY │ ADJUST │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │ + └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ + + [_RAISE] = LAYOUT_polydactyl( + //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS, + GMAIL, RALT(KC_A),RALT(KC_F),RALT(KC_S),RALT(KC_G),XXXXXXX, XXXXXXX,LSFT(RALT(KC_4)),RALT(KC_5), RALT(KC_4), RALT(KC_O), XXXXXXX, + WMAIL, KC_GRV, LSFT(KC_GRV),RALT(KC_C),XXXXXXX,XXXXXXX, KC_MUTE, KC_MPLY, XXXXXXX, XXXXXXX, XXXXXXX, DM_REC1, DM_RSTP, DM_PLY1, + GIPHY, _______, _______, RGB_MOD, RGB_MOD, _______, _______, _______ + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌───────────────────────────────────────────────────────────┐ + │ a d j u s t │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ AUDIO │ HAPTIC │ │ │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ F7 │ F8 │ F9 │ F14 │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ RESET │ DEBUG │ QWERTY │ │ │ ├─╯ ╰─┤ │ F4 │ F5 │ F6 │ F12 │ F13 │ + ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + │ MAKE │ OS SWAP │ COLEMAK │ │ │ ││ MUTE ││PLY/PSE ││ │ F1 │ F2 │ F3 │ F10 │ F11 │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │ + └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ + + [_ADJUST] = LAYOUT_polydactyl( + //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ + AU_TOG, HPT_TOG, RGB_HUI, RGB_MOD, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F14, + QK_BOOT, DB_TOGG, QWERTY, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F12, KC_F13, + MAKE_H, OS_SWAP, COLEMAK, RGB_VAI, XXXXXXX, XXXXXXX, KC_MUTE, KC_MPLY, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, KC_F11, + _______, _______, _______, _______, _______, _______, _______, _______ + ) + + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌───────────────────────────────────────────────────────────┐ + │ t e m p l a t e │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ │ │ │ │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ │ │ │ │ │ ├─╯ ╰─┤ │ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ │ ││ ││ ││ │ │ │ │ │ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ │ │ │ ││ │ │ │ │ + └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ + + [_TEMPLATE] = LAYOUT_polydactyl( + //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + )*/ +}; + + + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ T R A C K B A L L │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +#ifdef POINTING_DEVICE_ENABLE + +void pointing_device_init_user(void) { + set_auto_mouse_layer(_MOUSE); // only required if AUTO_MOUSE_DEFAULT_LAYER is not set to index of + set_auto_mouse_enable(true); // always required before the auto mouse feature will work +} + +report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { + if (scrolling_mode) { + mouse_report.h = mouse_report.x; + mouse_report.v = mouse_report.y; + mouse_report.x = 0; + mouse_report.y = 0; + } + return mouse_report; +} + +#endif //POINTING_DEVICE_ENABLE + + + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ H A P T I C F E E D B A C K │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +void keyboard_post_init_user(void) { + // Call the post init code. + #if HAPTIC_ENABLE + haptic_disable(); // disables per key haptic feedback by default + #endif //HAPTIC ENABLE + + #if RGB_MATRIX_ENABLE + rgblight_enable_noeeprom(); + //rgblight_sethsv_noeeprom(35, 255, 255); // set default RGB color to yellow + #endif //RGB_MATRIX_ENABLE +} + + + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ O L E D │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +#ifdef OLED_ENABLE + +// ┌───────────────────────────────────────────────────────────┐ +// │ d y n a m i c m a c r o │ +// └───────────────────────────────────────────────────────────┘ + +char layer_state_str[24]; +char o_text[24] = ""; +int dmacro_num = 0; + +#ifdef DYNAMIC_MACRO_ENABLE + char dmacro_text[4][24] = { "", "RECORDING", "STOP RECORDING", "PLAY RECORDING"}; + static uint16_t dmacro_timer; + const char PROGMEM rec_ico[] = {0xD1, 0xE1, 0}; + const char PROGMEM stop_ico[] = {0xD3, 0xE1, 0}; + const char PROGMEM play_ico[] = {0xD2, 0xE1, 0}; + + + // DYNMACRO RECORD ├─────────────────────────────────────────────────────────────┐ + void dynamic_macro_record_start_user(void) { + dmacro_num = 1; + return; + } + + // DYNMACRO STOP RECORDING ├─────────────────────────────────────────────────────┐ + void dynamic_macro_record_end_user(int8_t direction) { + dmacro_num = 2; + dmacro_timer = timer_read(); + return; + } + + // DYNMACRO PLAY RECORDING ├─────────────────────────────────────────────────────┐ + void dynamic_macro_play_user(int8_t direction) { + dmacro_num = 3; + dmacro_timer = timer_read(); + return; + } +#endif //DYNAMIC_MACRO_ENABLE + + +void matrix_scan_user(void) { + #ifdef DYNAMIC_MACRO_ENABLE + // DynMacroTimer + if(dmacro_num > 0){ + if (timer_elapsed(dmacro_timer) < 3000) { + strcpy ( o_text, dmacro_text[dmacro_num] ); + } + else { + if (dmacro_num == 1) { + strcpy ( o_text, dmacro_text[1] ); + } + else { + strcpy ( o_text, layer_state_str ); + dmacro_num = 0; + } + } + } + #endif //DYNAMIC_MACRO_ENABLE +} + + +// ┌───────────────────────────────────────────────────────────┐ +// │ o l e d g r a p h i c s │ +// └───────────────────────────────────────────────────────────┘ + +void render_os_lock_status(void) { + static const char PROGMEM sep_v[] = {0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0}; + static const char PROGMEM sep_h1[] = {0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0}; + static const char PROGMEM sep_h2[] = {0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0}; + static const char PROGMEM face_1[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0xE1, 0}; + static const char PROGMEM face_2[] = {0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xE1, 0}; + static const char PROGMEM os_m_1[] = {0x95, 0x96, 0}; + static const char PROGMEM os_m_2[] = {0xB5, 0xB6, 0}; + static const char PROGMEM os_w_1[] = {0x97, 0x98, 0}; + static const char PROGMEM os_w_2[] = {0xB7, 0xB8, 0}; + static const char PROGMEM s_lock[] = {0x8F, 0x90, 0}; + static const char PROGMEM n_lock[] = {0x91, 0x92, 0}; + static const char PROGMEM c_lock[] = {0x93, 0x94, 0}; + static const char PROGMEM b_lock[] = {0xE1, 0xE1, 0}; + #ifdef AUDIO_ENABLE + static const char PROGMEM aud_en[] = {0xAF, 0xB0, 0}; + static const char PROGMEM aud_di[] = {0xCF, 0xD0, 0}; + #endif + #ifdef HAPTIC_ENABLE + static const char PROGMEM hap_en[] = {0xB1, 0xB2, 0}; + #endif + +// os mode status ────────────────────────────────────────┐ + + oled_write_ln_P(sep_v, false); + + if (keymap_config.swap_lctl_lgui) { + oled_write_P(os_m_1, false); // ──── MAC + } else { + oled_write_P(os_w_1, false); // ──── WIN + } + + oled_write_P(sep_h1, false); + oled_write_P(face_1, false); + + if (keymap_config.swap_lctl_lgui) { + oled_write_P(os_m_2, false); // ──── MAC + } else { + oled_write_P(os_w_2, false); // ──── WIN + } + + oled_write_P(sep_h1, false); + oled_write_P(face_2, false); + oled_write_ln_P(sep_v, false); + + +// lock key layer status ─────────────────────────────────┐ + + led_t led_usb_state = host_keyboard_led_state(); + + if (led_usb_state.num_lock) { + oled_write_P(n_lock, false); // ──── NUMLOCK + } else { + oled_write_P(b_lock, false); + } + if (led_usb_state.caps_lock) { + oled_write_P(c_lock, false); // ─── CAPSLOCK + } else { + oled_write_P(b_lock, false); + } + if (led_usb_state.scroll_lock) { // ─ SCROLLLOCK + oled_write_P(s_lock, false); + } else { + oled_write_P(b_lock, false); + } + +// hardware feature status ──────────────────────────────┐ + + oled_write_P(sep_h2, false); + + #ifndef AUDIO_ENABLE + oled_write_P(b_lock, false); + #endif + #ifndef HAPTIC_ENABLE + oled_write_P(b_lock, false); + #endif + + #ifdef AUDIO_ENABLE // ────────────────── AUDIO + if (is_audio_on()) { + oled_write_P(aud_en, false); + } else { + oled_write_P(aud_di, false); + } + #endif // AUDIO ENABLE + + #ifdef HAPTIC_ENABLE // ─────────────── HAPTIC + oled_write_P(hap_en, false); + #endif // HAPTIC ENABLE +} + + +// layer status ──────────────────────────────────────────┐ + +int layerstate = 0; + +layer_state_t layer_state_set_kb(layer_state_t state) { + switch (get_highest_layer(layer_state | default_layer_state)) { + case 0: + strcpy ( layer_state_str, "BASE COLEMAK"); + break; + case 1: + strcpy ( layer_state_str, "BASE QWERTY"); + break; + case 2: + strcpy ( layer_state_str, "LOWER"); + break; + case 3: + strcpy ( layer_state_str, "RAISE"); + break; + case 4: + strcpy ( layer_state_str, "ADJUST"); + break; + default: + strcpy ( layer_state_str, "XXXXXX"); + } + if (dmacro_num < 1) { + strcpy ( o_text, layer_state_str ); + } + //return state; + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + +// ┌───────────────────────────────────────────────────────────┐ +// │ w r i t e t o o l e d │ +// └───────────────────────────────────────────────────────────┘ + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + if (is_keyboard_master()) { // ────────────────────────── PRIMARY SIDE + + // layer status ──────────────────────────────────────────────────┐ + #ifdef DYNAMIC_MACRO_ENABLE + if(dmacro_num == 1){ oled_write_P(rec_ico, false); } + if(dmacro_num == 2){ oled_write_P(stop_ico, false); } + if(dmacro_num == 3){ oled_write_P(play_ico, false); } + #endif //DYNAMIC_MACRO_ENABLE + + oled_write_ln(o_text, false); + render_os_lock_status(); + + } else { // ─────────────────────────────────────────── SECONDARY SIDE + + // KLOR face ─────────────────────────────────────────────────────┐ + + static const char PROGMEM klor_face[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, + 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(klor_face, sizeof(klor_face)); + } + return false; +} +#endif // OLED_ENABLE + + + +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case SHT_T: + return TAPPING_TERM - 150; + case SHT_N: + return TAPPING_TERM - 150; + default: + return TAPPING_TERM; + } +} + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ M A C R O S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + + case OS_SWAP: + if (record->event.pressed) { + if (!keymap_config.swap_lctl_lgui) { + keymap_config.swap_lctl_lgui = true; // ─── MAC + #ifdef AUDIO_ENABLE + PLAY_SONG(mac_song); + #endif // AUDIO_ENABLE + } + else { + keymap_config.swap_lctl_lgui = false; // ─── WIN + #ifdef AUDIO_ENABLE + PLAY_SONG(winxp_song); + #endif // AUDIO_ENABLE + } + #ifdef HAPTIC_ENABLE + DRV_pulse(pulsing_strong); + #endif // HAPTIC_ENABLE + eeconfig_update_keymap(keymap_config.raw); + clear_keyboard(); // ──── clear to prevent stuck keys + return false; + } + + +// ┌───────────────────────────────────────────────────────────┐ +// │ l a y e r │ +// └───────────────────────────────────────────────────────────┘ + + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + #ifdef HAPTIC_ENABLE + DRV_pulse(transition_hum); + #endif // HAPTIC_ENABLE + } + return false; + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + #ifdef HAPTIC_ENABLE + DRV_pulse(transition_hum); + #endif // HAPTIC_ENABLE + } + return false; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + case ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + + +// ┌───────────────────────────────────────────────────────────┐ +// │ q m k │ +// └───────────────────────────────────────────────────────────┘ + + case MAKE_H: + if (record->event.pressed) { + #ifdef KEYBOARD_klor_2040 + SEND_STRING ("qmk compile -kb klor/2040 -km geist"); + #else + SEND_STRING ("qmk compile -kb klor -km geist"); + #endif + tap_code(KC_ENTER); + } + break; + +// ┌───────────────────────────────────────────────────────────┐ +// │ p r o d u c t i v i t y │ +// └───────────────────────────────────────────────────────────┘ + + case WMAIL: + if (record->event.pressed) { + SEND_STRING ("igit.igit@web.de"); + } + break; + + case GMAIL: + if (record->event.pressed) { + SEND_STRING ("igit@gmx.de"); + } + break; + + case GIPHY: + if (record->event.pressed) { + SEND_STRING ("@gif "); + } + break; + + case SNAP1: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + SEND_STRING(SS_LSFT(SS_LCMD("4"))); //MAC + } else { + SEND_STRING(SS_LWIN(SS_TAP(X_PSCR))); //WIN + } + } + break; + + case SNAP2: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + SEND_STRING(SS_LSFT(SS_LCMD(SS_LCTL("4")))); //MAC + } else { + SEND_STRING(SS_LSFT(SS_LWIN("S"))); //WIN + } + } + break; + + case KC_MPLY: + if (record->event.pressed) { + #ifdef HAPTIC_ENABLE + DRV_pulse(sharp_click); + #endif // HAPTIC_ENABL + } + break; + } + return true; +} + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ E N C O D E R │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +#ifdef ENCODER_ENABLE + +// ┌───────────────────────────────────────────────────────────┐ +// │ e n c o d e r L │ +// └───────────────────────────────────────────────────────────┘ + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_PGDN); + } else { + tap_code(KC_PGUP); + } + +// ┌───────────────────────────────────────────────────────────┐ +// │ e n c o d e r R │ +// └───────────────────────────────────────────────────────────┘ + + } else if (index == 1) { + if(IS_LAYER_ON(_LOWER)){ + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + }else { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + } + return true; +} + +#endif // ENCODER_ENABLE + + + + +/* + + ▐█ ▟▛ ▐█ ▄▆▀▀▀▀▀▀▆▄ ▐█▀▀▀▀▀█▌ + ▐█ ▟▛ ▐█ ▟▛ ▜▙ ▐█ █▌ + ▐█ ▟▛ ▐█ ▐█ █▋▐█ █▌ + ▐█ ▟█▙ ▐█ ▐█ █▋▐█▀▀▜█▀▀▘ + ▐█▟▛ ▜▙ ▐█ ▜▙ ▟▛ ▐█ ▜▙ + ▐█▛ ▜▙ ▐█▄▄▄▄ ▀▜▆▄▄▄▄▆▛▀ ▐█ ▜▙ + + ▄██████████████▄ + ████████████████ + ▄██████▀ ▀████▀ ▀██████▄ + ███████▄ ▄████▄ ▄███████ + ███████████▀▀▀▀███████████ + ▀█████████▀ ▄▄ ▀█████████▀ + ████▀ ▄██▄ ▀████ + ████▄▄████▄▄████ + +*/ + + + diff --git a/keyboards/klor/keymaps/default/geist/rules.mk b/keyboards/klor/keymaps/default/geist/rules.mk new file mode 100644 index 00000000..ae2604f7 --- /dev/null +++ b/keyboards/klor/keymaps/default/geist/rules.mk @@ -0,0 +1,17 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +ENCODER_ENABLE = yes +EXTRAKEY_ENABLE = yes +DYNAMIC_MACRO_ENABLE = yes +COMBO_ENABLE = yes +KEY_OVERRIDE_ENABLE = yes + +#HAPTIC FEEBACK +HAPTIC_ENABLE = yes + +#PER KEY RGB +RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE) + +#AUDIO +AUDIO_ENABLE = yes +MUSIC_ENABLE = yes \ No newline at end of file diff --git a/keyboards/klor/keymaps/default/keymap.c b/keyboards/klor/keymaps/default/keymap.c new file mode 100644 index 00000000..3d6d43cd --- /dev/null +++ b/keyboards/klor/keymaps/default/keymap.c @@ -0,0 +1,771 @@ +/* + + █ █ █ ▄▄▄▀▀▀▀▀▀▄▄▄ █▀▀▀▀▀▀▀▀▀▀█ + █ █ █ ▄▀ ▀▄ █ █ + █ █ █ ▄▀ ▀▄ █ █ + █ █ █ █ █ █ █ + █ █ █ █ █ █ █ + █ █ █ █ █ █▄▄▄▄▄▄▄▄▄▄█ + █ █ █ █ █ █ █ █ + █ █ █ █ █ █ █ █ + █ █ █ █ ▀▄ ▄▀ █ █ + ██ █ █ ▀▄ ▄▀ █ █ + █ █ █▄▄▄▄▄▄▄▄ ▀▀▀▄▄▄▄▄▄▀▀▀ █ █ + + ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + D E F A U L T + +*/ +#include QMK_KEYBOARD_H +#include +#include +#include "klor.h" +#ifdef HAPTIC_ENABLE +#include "drivers/haptic/DRV2605L.h" +#endif //HAPTIC ENABLE + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ D E F I N I T I O N S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +// ┌───────────────────────────────────────────────────────────┐ +// │ d e f i n e l a y e r s │ +// └───────────────────────────────────────────────────────────┘ + +enum klor_layers { + /* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */ + _QWERTY, + _COLEMAK, + _LOWER, + _RAISE, + _ADJUST, +}; + +// ┌───────────────────────────────────────────────────────────┐ +// │ d e f i n e k e y c o d e s │ +// └───────────────────────────────────────────────────────────┘ + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + LOWER, + RAISE, + ADJUST, + OS_SWAP, + MAKE_H, +}; + +// ┌───────────────────────────────────────────────────────────┐ +// │ d e f i n e m a c r o n a m e s │ +// └───────────────────────────────────────────────────────────┘ + +// LEFT HAND HOME ROW MODS ├───────────────────────────────────┐ + +#define GUI_A MT(MOD_LGUI, KC_A) +#define ALT_R MT(MOD_LALT, KC_R) +#define CTL_S MT(MOD_LCTL, KC_S) +#define SHT_T MT(MOD_LSFT, KC_T) + +// RIGHT HAND HOME ROW MODS ├───────────────────────────────────┐ + +#define SHT_N MT(MOD_RSFT, KC_N) +#define CTL_E MT(MOD_LCTL, KC_E) +#define ALT_I MT(MOD_LALT, KC_I) +#define GUI_O MT(MOD_LGUI, KC_O) + + +// ┌───────────────────────────────────────────────────────────┐ +// │ d e f i n e s o u n d s │ +// └───────────────────────────────────────────────────────────┘ + +#ifdef AUDIO_ENABLE + #define WINXP_SOUND W__NOTE(_DS6), Q__NOTE(_DS5), H__NOTE(_AS5), H__NOTE(_GS5), H__NOTE(_DS5), H__NOTE(_DS6), H__NOTE(_AS5) + #define MAC_SOUND S__NOTE(_CS5), B__NOTE(_C5) + + float winxp_song[][2] = SONG(WINXP_SOUND); + float mac_song[][2] = SONG(MAC_SOUND); +#endif // AUDIO_ENABLE + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ K E Y M A P S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌───────────────────────────────────────────────────────────┐ + │ q w e r t y │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ Q │ W │ E │ R │ T │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ Y │ U │ I │ O │ P │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ TAB │ A │ S │ D │ F │ G ├─╯ ╰─┤ H │ J │ K │ L │ ; │ " │ + ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + │ DEL │ Z │ X │ C │ V │ B ││ MUTE ││PLY/PSE ││ N │ M │ , │ . │ / │ SHIFT │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPACE │ + └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ + + [_QWERTY] = LAYOUT_polydactyl( + //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_DEL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_MPLY, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_LCTL, LOWER, KC_SPC, KC_LALT, KC_LGUI, KC_ENT, RAISE, KC_BSPC + ), + +/* + ┌───────────────────────────────────────────────────────────┐ + │ c o l e m a k │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ Q │ W │ F │ P │ G │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ J │ L │ U │ Y │ ; │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ TAB │ A │ R │ S │ T │ D ├─╯ ╰─┤ H │ N │ E │ I │ O │ " │ + ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + │ DEL │ Z │ X │ C │ V │ B ││ SHIFT ││PLY/PSE ││ K │ M │ , │ . │ / │ SHIFT │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPCE │ + └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ + + [_COLEMAK] = LAYOUT_polydactyl( + //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, + KC_TAB, GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, KC_QUOT, + KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_MPLY, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, + KC_DEL, LOWER, KC_SPC, KC_ESC, KC_LGUI, KC_ENT, RAISE, KC_BSPC + ), + + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌───────────────────────────────────────────────────────────┐ + │ l o w e r │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ CAPSLCK │ NUMLCK │ ↑ │ = │ { │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ } │ 7 │ 8 │ 9 │ + │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ ESC │ HOME │ ← │ ↓ │ → │ [ ├─╯ ╰─┤ ] │ 4 │ 5 │ 6 │ - │ ' │ + ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ END │ PG↑ │ SAVE │ PG↓ │ ( ││ MUTE ││PLY/PSE ││ ) │ 1 │ 2 │ 3 │ * │ ▼ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ADJUST │ 0 │ + └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ + + [_LOWER] = LAYOUT_polydactyl( + //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_ESC, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, KC_DQT, + XXXXXXX, KC_END, KC_PGUP, C(KC_S), KC_PGDN, KC_LPRN, KC_MUTE, KC_MPLY, KC_RPRN, KC_P1, KC_P2, KC_P3, KC_PAST, _______, + _______, _______, _______, _______, _______, _______, _______, KC_P0 + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌───────────────────────────────────────────────────────────┐ + │ r a i s e │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ ! │ @ │ # │ $ │ % │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ ^ │ & │ │ ° │ / │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ │ │ │ │ │ ├─╯ ╰─┤ │ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ │ ││ MUTE ││PLY/PSE ││ │ │ │ │ │ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ │ ADJUST │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │ + └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ + + [_RAISE] = LAYOUT_polydactyl( + //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_MPLY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌───────────────────────────────────────────────────────────┐ + │ a d j u s t │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ AUDIO │ HAPTIC │ RGB HUE │ RGB MOD │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ F7 │ F8 │ F9 │ F14 │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ RESET │ DEBUG │ QWERTY │ RGB SAT │ │ ├─╯ ╰─┤ │ F4 │ F5 │ F6 │ F12 │ F13 │ + ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + │ MAKE │ OS SWAP │ COLEMAK │ RGB VAL │ │ ││ MUTE ││PLY/PSE ││ │ F1 │ F2 │ F3 │ F10 │ F11 │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │ + └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ + + [_ADJUST] = LAYOUT_polydactyl( + //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ + AU_TOG, HPT_TOG, RGB_HUI, RGB_MOD, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F14, + QK_BOOT, DB_TOGG, QWERTY, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F12, KC_F13, + MAKE_H, OS_SWAP, COLEMAK, RGB_VAI, XXXXXXX, XXXXXXX, KC_MUTE, KC_MPLY, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, KC_F11, + _______, _______, _______, _______, _______, _______, _______, _______ + ) + + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌───────────────────────────────────────────────────────────┐ + │ t e m p l a t e p o l y d a c t y l │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ │ │ │ │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ │ │ │ │ │ ├─╯ ╰─┤ │ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ │ ││ ││ ││ │ │ │ │ │ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ │ │ │ ││ │ │ │ │ + └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ + + [_TEMPLATE] = LAYOUT_polydactyl( + //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) + + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌───────────────────────────────────────────────────────────┐ + │ t e m p l a t e k o n r a d │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ │ │ │ │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ │ │ │ │ │ ├─╯ ╰─┤ │ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ │ ││ ││ ││ │ │ │ │ │ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤╰────────╯╰────────╯├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ │ │ │ │ │ │ │ + └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ + + [_TEMPLATE] = LAYOUT_konrad( + //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ) + + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ t e m p l a t e y u b i t s u m e │ + └─────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ │ │ │ │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ ├─╯ ╰─┤ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ ││ ││ ││ │ │ │ │ │ + └─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘ + │ │ │ │ ││ │ │ │ │ + └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ + + [_TEMPLATE] = LAYOUT_yubitsume( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) + + + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ t e m p l a t e s a e g e w e r k │ + └─────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ │ │ │ │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ ├─╯ ╰─┤ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ ││ ││ ││ │ │ │ │ │ + └─────────┴─────────┼─────────┼─────────┼─────────┤╰────────╯╰────────╯├─────────┼─────────┼─────────┼─────────┴─────────┘ + │ │ │ │ │ │ │ │ + └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ + + [_TEMPLATE] = LAYOUT_saegewerk( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ) + + */ +}; + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ H A P T I C F E E D B A C K │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +void keyboard_post_init_user(void) { + // Call the post init code. + #if HAPTIC_ENABLE + haptic_disable(); // disables per key haptic feedback by default + #endif //HAPTIC ENABLE +} + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ O L E D │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +#ifdef OLED_ENABLE + +// ┌───────────────────────────────────────────────────────────┐ +// │ d y n a m i c m a c r o │ +// └───────────────────────────────────────────────────────────┘ + +char layer_state_str[24]; +char o_text[24] = ""; +int dmacro_num = 0; + +#ifdef DYNAMIC_MACRO_ENABLE + char dmacro_text[4][24] = { "", "RECORDING", "STOP RECORDING", "PLAY RECORDING"}; + static uint16_t dmacro_timer; + const char PROGMEM rec_ico[] = {0xD1, 0xE1, 0}; + const char PROGMEM stop_ico[] = {0xD3, 0xE1, 0}; + const char PROGMEM play_ico[] = {0xD2, 0xE1, 0}; + + + // DYNMACRO RECORD ├─────────────────────────────────────────────────────────────┐ + void dynamic_macro_record_start_user(void) { + dmacro_num = 1; + return; + } + + // DYNMACRO STOP RECORDING ├─────────────────────────────────────────────────────┐ + void dynamic_macro_record_end_user(int8_t direction) { + dmacro_num = 2; + dmacro_timer = timer_read(); + return; + } + + // DYNMACRO PLAY RECORDING ├─────────────────────────────────────────────────────┐ + void dynamic_macro_play_user(int8_t direction) { + dmacro_num = 3; + dmacro_timer = timer_read(); + return; + } +#endif //DYNAMIC_MACRO_ENABLE + + +void matrix_scan_user(void) { + #ifdef DYNAMIC_MACRO_ENABLE + // DynMacroTimer + if(dmacro_num > 0){ + if (timer_elapsed(dmacro_timer) < 3000) { + strcpy ( o_text, dmacro_text[dmacro_num] ); + } + else { + if (dmacro_num == 1) { + strcpy ( o_text, dmacro_text[1] ); + } + else { + strcpy ( o_text, layer_state_str ); + dmacro_num = 0; + } + } + } + #endif //DYNAMIC_MACRO_ENABLE +} + + +// ┌───────────────────────────────────────────────────────────┐ +// │ o l e d g r a p h i c s │ +// └───────────────────────────────────────────────────────────┘ + +void render_os_lock_status(void) { + static const char PROGMEM sep_v[] = {0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0}; + static const char PROGMEM sep_h1[] = {0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0}; + static const char PROGMEM sep_h2[] = {0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0}; + static const char PROGMEM face_1[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0xE1, 0}; + static const char PROGMEM face_2[] = {0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xE1, 0}; + static const char PROGMEM os_m_1[] = {0x95, 0x96, 0}; + static const char PROGMEM os_m_2[] = {0xB5, 0xB6, 0}; + static const char PROGMEM os_w_1[] = {0x97, 0x98, 0}; + static const char PROGMEM os_w_2[] = {0xB7, 0xB8, 0}; + static const char PROGMEM s_lock[] = {0x8F, 0x90, 0}; + static const char PROGMEM n_lock[] = {0x91, 0x92, 0}; + static const char PROGMEM c_lock[] = {0x93, 0x94, 0}; + static const char PROGMEM b_lock[] = {0xE1, 0xE1, 0}; + #ifdef AUDIO_ENABLE + static const char PROGMEM aud_en[] = {0xAF, 0xB0, 0}; + static const char PROGMEM aud_di[] = {0xCF, 0xD0, 0}; + #endif + #ifdef HAPTIC_ENABLE + static const char PROGMEM hap_en[] = {0xB1, 0xB2, 0}; + #endif + +// os mode status ────────────────────────────────────────┐ + + oled_write_ln_P(sep_v, false); + + if (keymap_config.swap_lctl_lgui) { + oled_write_P(os_m_1, false); // ──── MAC + } else { + oled_write_P(os_w_1, false); // ──── WIN + } + + oled_write_P(sep_h1, false); + oled_write_P(face_1, false); + + if (keymap_config.swap_lctl_lgui) { + oled_write_P(os_m_2, false); // ──── MAC + } else { + oled_write_P(os_w_2, false); // ──── WIN + } + + oled_write_P(sep_h1, false); + oled_write_P(face_2, false); + oled_write_ln_P(sep_v, false); + + +// lock key layer status ─────────────────────────────────┐ + + led_t led_usb_state = host_keyboard_led_state(); + + if (led_usb_state.num_lock) { + oled_write_P(n_lock, false); // ──── NUMLOCK + } else { + oled_write_P(b_lock, false); + } + if (led_usb_state.caps_lock) { + oled_write_P(c_lock, false); // ─── CAPSLOCK + } else { + oled_write_P(b_lock, false); + } + if (led_usb_state.scroll_lock) { // ─ SCROLLLOCK + oled_write_P(s_lock, false); + } else { + oled_write_P(b_lock, false); + } + +// hardware feature status ──────────────────────────────┐ + + oled_write_P(sep_h2, false); + + #ifndef AUDIO_ENABLE + oled_write_P(b_lock, false); + #endif + #ifndef HAPTIC_ENABLE + oled_write_P(b_lock, false); + #endif + + #ifdef AUDIO_ENABLE // ────────────────── AUDIO + if (is_audio_on()) { + oled_write_P(aud_en, false); + } else { + oled_write_P(aud_di, false); + } + #endif // AUDIO ENABLE + + #ifdef HAPTIC_ENABLE // ─────────────── HAPTIC + oled_write_P(hap_en, false); + #endif // HAPTIC ENABLE +} + + +// layer status ──────────────────────────────────────────┐ + +int layerstate = 0; + +layer_state_t layer_state_set_kb(layer_state_t state) { + switch (get_highest_layer(layer_state | default_layer_state)) { + case 0: + strcpy ( layer_state_str, "BASE COLEMAK"); + break; + case 1: + strcpy ( layer_state_str, "BASE QWERTY"); + break; + case 2: + strcpy ( layer_state_str, "LOWER"); + break; + case 3: + strcpy ( layer_state_str, "RAISE"); + break; + case 4: + strcpy ( layer_state_str, "ADJUST"); + break; + default: + strcpy ( layer_state_str, "XXXXXX"); + } + if (dmacro_num < 1) { + strcpy ( o_text, layer_state_str ); + } + //return state; + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + + +// ┌───────────────────────────────────────────────────────────┐ +// │ w r i t e t o o l e d │ +// └───────────────────────────────────────────────────────────┘ + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + if (is_keyboard_master()) { // ────────────────────────── PRIMARY SIDE + + // layer status ──────────────────────────────────────────────────┐ + #ifdef DYNAMIC_MACRO_ENABLE + if(dmacro_num == 1){ oled_write_P(rec_ico, false); } + if(dmacro_num == 2){ oled_write_P(stop_ico, false); } + if(dmacro_num == 3){ oled_write_P(play_ico, false); } + #endif //DYNAMIC_MACRO_ENABLE + + oled_write_ln(o_text, false); + render_os_lock_status(); + + } else { // ─────────────────────────────────────────── SECONDARY SIDE + + // KLOR face ─────────────────────────────────────────────────────┐ + + static const char PROGMEM klor_face[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, + 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(klor_face, sizeof(klor_face)); + } + return false; +} +#endif // OLED_ENABLE + + + +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case SHT_T: + return TAPPING_TERM - 150; + case SHT_N: + return TAPPING_TERM - 150; + default: + return TAPPING_TERM; + } +} + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ M A C R O S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + + case OS_SWAP: + if (record->event.pressed) { + if (!keymap_config.swap_lctl_lgui) { + keymap_config.swap_lctl_lgui = true; // ─── MAC + #ifdef AUDIO_ENABLE + PLAY_SONG(mac_song); + #endif // AUDIO_ENABLE + } + else { + keymap_config.swap_lctl_lgui = false; // ─── WIN + #ifdef AUDIO_ENABLE + PLAY_SONG(winxp_song); + #endif // AUDIO_ENABLE + } + #ifdef HAPTIC_ENABLE + DRV_pulse(pulsing_strong); + #endif // HAPTIC_ENABLE + eeconfig_update_keymap(keymap_config.raw); + clear_keyboard(); // ──── clear to prevent stuck keys + return false; + } + + +// ┌───────────────────────────────────────────────────────────┐ +// │ l a y e r │ +// └───────────────────────────────────────────────────────────┘ + + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + #ifdef HAPTIC_ENABLE + DRV_pulse(transition_hum); + #endif // HAPTIC_ENABLE + } + return false; + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + #ifdef HAPTIC_ENABLE + DRV_pulse(transition_hum); + #endif // HAPTIC_ENABLE + } + return false; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + case ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + +// ┌───────────────────────────────────────────────────────────┐ +// │ q m k │ +// └───────────────────────────────────────────────────────────┘ + + case MAKE_H: + if (record->event.pressed) { + #ifdef KEYBOARD_klor_kb2040 + SEND_STRING ("qmk compile -kb klor/2040 -km default"); + #else + SEND_STRING ("qmk compile -kb klor -km default"); + #endif + tap_code(KC_ENTER); + } + break; + +// ┌───────────────────────────────────────────────────────────┐ +// │ p r o d u c t i v i t y │ +// └───────────────────────────────────────────────────────────┘ + + case KC_MPLY: + if (record->event.pressed) { + #ifdef HAPTIC_ENABLE + DRV_pulse(sharp_click); + #endif // HAPTIC_ENABL + } + break; + } + return true; +} + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ E N C O D E R │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +#ifdef ENCODER_ENABLE + +// ┌───────────────────────────────────────────────────────────┐ +// │ e n c o d e r L │ +// └───────────────────────────────────────────────────────────┘ + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + +// ┌───────────────────────────────────────────────────────────┐ +// │ e n c o d e r R │ +// └───────────────────────────────────────────────────────────┘ + + } else if (index == 1) { + if(IS_LAYER_ON(_LOWER)){ + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + }else { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + } + return true; +} + +#endif // ENCODER_ENABLE + + + + +/* + + ▐█ ▟▛ ▐█ ▄▆▀▀▀▀▀▀▆▄ ▐█▀▀▀▀▀█▌ + ▐█ ▟▛ ▐█ ▟▛ ▜▙ ▐█ █▌ + ▐█ ▟▛ ▐█ ▐█ █▋▐█ █▌ + ▐█ ▟█▙ ▐█ ▐█ █▋▐█▀▀▜█▀▀▘ + ▐█▟▛ ▜▙ ▐█ ▜▙ ▟▛ ▐█ ▜▙ + ▐█▛ ▜▙ ▐█▄▄▄▄ ▀▜▆▄▄▄▄▆▛▀ ▐█ ▜▙ + + ▄██████████████▄ + ████████████████ + ▄██████▀ ▀████▀ ▀██████▄ + ███████▄ ▄████▄ ▄███████ + ███████████▀▀▀▀███████████ + ▀█████████▀ ▄▄ ▀█████████▀ + ████▀ ▄██▄ ▀████ + ████▄▄████▄▄████ + +*/ + + + diff --git a/keyboards/klor/keymaps/default/rules.mk b/keyboards/klor/keymaps/default/rules.mk new file mode 100644 index 00000000..98144ed9 --- /dev/null +++ b/keyboards/klor/keymaps/default/rules.mk @@ -0,0 +1,16 @@ +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +ENCODER_ENABLE = yes +EXTRAKEY_ENABLE = yes +AUDIO_ENABLE = no +MUSIC_ENABLE = no + +DYNAMIC_MACRO_ENABLE = no +COMBO_ENABLE = no +KEY_OVERRIDE_ENABLE = no + +#HAPTIC FEEBACK +HAPTIC_ENABLE = no + +#PER KEY RGB +RGB_MATRIX_ENABLE = no diff --git a/keyboards/klor/klor.c b/keyboards/klor/klor.c index e69de29b..e374b1bc 100644 --- a/keyboards/klor/klor.c +++ b/keyboards/klor/klor.c @@ -0,0 +1,237 @@ +/* Copyright 2022 + * GEIST @geigeigeist + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "klor.h" + + +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_180; +} + + +//#ifdef HAPTIC_ENABLE +//#include "drivers/haptic/DRV2605L.h" +//#endif //HAPTIC ENABLE + + +#ifdef SWAP_HANDS_ENABLE + +__attribute__ ((weak)) +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = + +/* ORIGINAL LAYOUT +{ // LEFT + { {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0} }, \ + { {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1} }, \ + { {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2} }, \ + { {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3} }, \ + // RIGHT + { {0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4} }, \ + { {0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5} }, \ + { {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6} }, \ + { {0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7} }, \ +}; +*/ + +// MIRRORED LAYOUT +{ // LEFT + { {0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4} }, \ + { {0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5} }, \ + { {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6} }, \ + { {0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7} }, \ + // RIGHT + { {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0} }, \ + { {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1} }, \ + { {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2} }, \ + { {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3} }, \ +}; + +#endif //SWAP_HANDS_ENABLE + + + + + +#ifdef RGB_MATRIX_ENABLE + +// Physical layout ──────────────────────────────────────────────────── +// +// ┌────────────────────┐ ┌────────────────────┐ +// │ 18 13 12 06 05 │ │ 26 27 33 34 39 │ +//┌───┴────────────────────┤ ├────────────────────┴───┐ +//│ 20 17 14 11 07 04 │ │ 25 28 32 35 38 40 │ +//├────────────────────────┤ ├────────────────────────┤ +//│ 19 16 15 10 08 03 │ │ 24 29 31 36 37 41 │ +//└───────────────┬────────┴───────┐ ┌───────┴────────┬───────────────┘ +// │ 09 02 01 00 │ │ 21 22 23 30 │ +// └────────────────┘ └────────────────┘ +// +// +// Electrical layout ─────────────────────────────────────── +// +// C 00──01──02──03──04──05────06──07──08──09──10──11 R +// ┌────────────────────┐┌────────────────────┐ │ +// X │ 18 13 12 06 05 ││ 26 27 33 34 39 │ X 0 +// ┌───┴────────────────────┤├────────────────────┴───┐ │ +// │ 20 17 14 11 07 04 ││ 25 28 32 35 38 40 │ 1 +// ├────────────────────────┤├────────────────────────┤ │ +// │ 19 16 15 10 08 03 ││ 24 29 31 36 37 41 │ 2 +// └───┬────────────────┬───┘└───┬────────────────┬───┘ │ +// X │ 09 02 01 00 │ X X │ 21 22 23 30 │ X 3 +// └────────────────┘ └────────────────┘ + + +// POLYDACTYL / YUBITSUME +// use this matrix if you use the polydactyl or yubitsume layout ────────────────────────────────────┐ + +led_config_t g_led_config = { { +//COL 00 01 02 03 04 05 ROW + { NO_LED, 18, 13, 12, 6, 5 },//00 + { 19, 17, 14, 11, 7, 4 },//01 + { 20, 16, 15, 10, 8, 3 },//02 + { NO_LED, 9, 2, 1, 0, NO_LED },//03 + { NO_LED, 37, 34, 33, 27, 26 },//00 + { 40, 38, 35, 32, 28, 25 },//01 + { 41, 39, 36, 31, 29, 24 },//02 + { NO_LED, 30, 23, 22, 21, NO_LED } //03 +}, { + //LEFT + //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ + { 102, 63 }, { 89, 54 }, { 74, 49 }, { 75, 34 }, { 75, 21 }, { 75, 8 }, { 60, 6 }, + //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ + { 60, 19 }, { 60, 32 }, { 58, 48 }, { 46, 25 }, { 46, 12 }, { 46, 0 }, { 29, 7 }, + //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ + { 30, 20 }, { 31, 33 }, { 17, 42 }, { 15, 30 }, { 13, 17 }, { 0, 28 }, { 3, 41 }, + //RIGHT + //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ + { 122, 63 }, { 135, 54 }, { 150, 49 }, { 149, 34 }, { 149, 21 }, { 149, 8 }, { 163, 6 }, + //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ + { 163, 19 }, { 163, 32 }, { 166, 48 }, { 178, 25 }, { 178, 12 }, { 178, 0 }, { 195, 7 }, + //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ + { 194, 20 }, { 193, 33 }, { 206, 42 }, { 209, 30 }, { 211, 17 }, { 224, 28 }, { 221, 41 } +}, { + //LEFT + 1, 1, 1, 4, 4, 4, 4, + 4, 4, 1, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 1, 1, + //RIGHT + 1, 1, 1, 4, 4, 4, 4, + 4, 4, 1, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 1, 1 +} }; +// ────────────────────────────────────────────────────────────────────────────────────────────────────┘ + + +/* +// KONRAD +// use this matrix if you use the konrad layout ───────────────────────────────────────────────────────┐ + +led_config_t g_led_config = { { +//COL 00 01 02 03 04 05 ROW + { NO_LED, 17, 12, 11, 5, 4 },//00 + { 18, 16, 13, 10, 6, 3 },//01 + { 19, 15, 14, 9, 7, 2 },//02 + { NO_LED, 8, 1, 0, NO_LED, NO_LED },//03 + { NO_LED, 37, 32, 31, 25, 24 },//00 + { 38, 36, 33, 30, 26, 23 },//01 + { 39, 35, 34, 29, 27, 22 },//02 + { NO_LED, 28, 21, 20, NO_LED, NO_LED } //03 +}, { + //LEFT + //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ + { 89, 54 }, { 74, 49 }, { 75, 34 }, { 75, 21 }, { 75, 8 }, { 60, 6 }, + //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ + { 60, 19 }, { 60, 32 }, { 58, 48 }, { 46, 25 }, { 46, 12 }, { 46, 0 }, { 29, 7 }, + //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ + { 30, 20 }, { 31, 33 }, { 17, 42 }, { 15, 30 }, { 13, 17 }, { 0, 28 }, { 3, 41 }, + //RIGHT + //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ + { 135, 54 }, { 150, 49 }, { 149, 34 }, { 149, 21 }, { 149, 8 }, { 163, 6 }, + //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ + { 163, 19 }, { 163, 32 }, { 166, 48 }, { 178, 25 }, { 178, 12 }, { 178, 0 }, { 195, 7 }, + //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ + { 194, 20 }, { 193, 33 }, { 206, 42 }, { 209, 30 }, { 211, 17 }, { 224, 28 }, { 221, 41 } +}, { + //LEFT + 1, 1, 4, 4, 4, 4, + 4, 4, 1, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 1, 1, + //RIGHT + 1, 1, 4, 4, 4, 4, + 4, 4, 1, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 1, 1 +} }; + +// ────────────────────────────────────────────────────────────────────────────────────────────────────┘ +*/ + +/* +// SAEGEWERK +// use this matrix if you use the saegewerk layout ────────────────────────────────────────────────────┐ + +led_config_t g_led_config = { { +//COL 00 01 02 03 04 05 ROW + { NO_LED, 17, 12, 11, 5, 4 },//00 + { NO_LED, 16, 13, 10, 6, 3 },//01 + { NO_LED, 15, 14, 9, 7, 2 },//02 + { NO_LED, 8, 1, 0, NO_LED, NO_LED },//03 + { NO_LED, 35, 30, 29, 23, 22 },//00 + { NO_LED, 34, 31, 28, 24, 21 },//01 + { NO_LED, 33, 32, 27, 25, 20 },//02 + { NO_LED, 26, 19, 18, NO_LED, NO_LED } //03 +}, { + //LEFT + //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ + { 89, 54 }, { 74, 49 }, { 75, 34 }, { 75, 21 }, { 75, 8 }, { 60, 6 }, + //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ + { 60, 19 }, { 60, 32 }, { 58, 48 }, { 46, 25 }, { 46, 12 }, { 46, 0 }, { 29, 7 }, + //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ + { 30, 20 }, { 31, 33 }, { 17, 42 }, { 15, 30 }, { 13, 17 }, + //RIGHT + //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ + { 135, 54 }, { 150, 49 }, { 149, 34 }, { 149, 21 }, { 149, 8 }, { 163, 6 }, + //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ + { 163, 19 }, { 163, 32 }, { 166, 48 }, { 178, 25 }, { 178, 12 }, { 178, 0 }, { 195, 7 }, + //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ + { 194, 20 }, { 193, 33 }, { 206, 42 }, { 209, 30 }, { 211, 17 } +}, { + //LEFT + 1, 1, 4, 4, 4, 4, + 4, 4, 1, 4, 4, 4, 4, + 4, 4, 4, 4, 4, + //RIGHT + 1, 1, 4, 4, 4, 4, + 4, 4, 1, 4, 4, 4, 4, + 4, 4, 4, 4, 4 +} }; + +// ────────────────────────────────────────────────────────────────────────────────────────────────────┘ +*/ + +void suspend_power_down_kb(void) { + rgb_matrix_set_suspend_state(true); + suspend_power_down_user(); +} + +void suspend_wakeup_init_kb(void) { + rgb_matrix_set_suspend_state(false); + suspend_wakeup_init_user(); +} +#endif //RGB_MATRIX_ENABLE + + + diff --git a/keyboards/klor/klor.h b/keyboards/klor/klor.h index e69de29b..7d0934cd 100644 --- a/keyboards/klor/klor.h +++ b/keyboards/klor/klor.h @@ -0,0 +1,105 @@ +/* Copyright 2022 + * GEIST @geigeigeist + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +//#pragma once +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +// readability +#define ___ KC_NO + +#define LAYOUT_polydactyl( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ + L31, L32, L33, L34, R31, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, L34, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, R31, R30 }, \ + } + + +#define LAYOUT_konrad( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ + L31, L32, L33, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, ___, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, ___, R30 }, \ + } + + +#define LAYOUT_yubitsume( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ + L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ + L31, L32, L33, L34, R31, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { ___, L11, L12, L13, L14, L15 }, \ + { ___, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, L34, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { ___, R14, R13, R12, R11, R10 }, \ + { ___, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, R31, R30 }, \ + } + + +#define LAYOUT_saegewerk( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ + L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ + L31, L32, L33, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { ___, L11, L12, L13, L14, L15 }, \ + { ___, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, ___, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { ___, R14, R13, R12, R11, R10 }, \ + { ___, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, ___, R30 }, \ + } + + +#define LAYOUT LAYOUT_polydactyl \ No newline at end of file diff --git a/keyboards/klor/lib/glcdfont.c b/keyboards/klor/lib/glcdfont.c new file mode 100644 index 00000000..2fc27198 --- /dev/null +++ b/keyboards/klor/lib/glcdfont.c @@ -0,0 +1,233 @@ +// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. +// See gfxfont.h for newer custom bitmap font info. + +#pragma once + +#include "progmem.h" + +static const unsigned char PROGMEM font[] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, + 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, + 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, + 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, + 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, + 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, + 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, + 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, + 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, + 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x94, 0xB6, 0xFF, 0xB6, 0x94, 0x00, + 0x08, 0x0C, 0x7E, 0x0C, 0x08, 0x00, + 0x10, 0x30, 0x7E, 0x30, 0x10, 0x00, + 0x08, 0x08, 0x3E, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x3E, 0x08, 0x08, 0x00, + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, + 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, + 0x14, 0x3E, 0x14, 0x3E, 0x14, 0x00, + 0x2E, 0x2A, 0x7F, 0x2A, 0x3A, 0x00, + 0x20, 0x12, 0x08, 0x24, 0x02, 0x00, + 0x37, 0x49, 0x49, 0x37, 0x50, 0x00, + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x7F, 0x51, 0x49, 0x45, 0x7F, 0x00, + 0x08, 0x04, 0x02, 0x7F, 0x00, 0x00, + 0x71, 0x49, 0x49, 0x49, 0x4F, 0x00, + 0x41, 0x41, 0x49, 0x49, 0x77, 0x00, + 0x0F, 0x10, 0x10, 0x10, 0x7F, 0x00, + 0x4F, 0x49, 0x49, 0x49, 0x71, 0x00, + 0x7E, 0x49, 0x49, 0x49, 0x70, 0x00, + 0x01, 0x01, 0x71, 0x09, 0x07, 0x00, + 0x77, 0x49, 0x49, 0x49, 0x77, 0x00, + 0x07, 0x49, 0x49, 0x49, 0x3F, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x01, 0x01, 0x59, 0x09, 0x0F, 0x00, + 0x7F, 0x41, 0x5D, 0x59, 0x4F, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x7F, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x76, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x41, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x7E, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x49, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x09, 0x00, + 0x7F, 0x41, 0x41, 0x49, 0x7B, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, + 0x70, 0x40, 0x40, 0x40, 0x7F, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x77, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7F, 0x01, 0x1F, 0x01, 0x7F, 0x00, + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x0F, 0x00, + 0x7F, 0x41, 0x71, 0x41, 0x7F, 0x00, + 0x7F, 0x09, 0x09, 0x19, 0x6F, 0x00, + 0x47, 0x49, 0x49, 0x49, 0x79, 0x00, + 0x01, 0x01, 0x7F, 0x01, 0x01, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x7F, 0x00, + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, + 0x7F, 0x40, 0x7F, 0x40, 0x7F, 0x00, + 0x77, 0x08, 0x08, 0x08, 0x77, 0x00, + 0x4F, 0x48, 0x48, 0x48, 0x7F, 0x00, + 0x61, 0x51, 0x49, 0x45, 0x43, 0x00, + 0x00, 0x7F, 0x41, 0x41, 0x00, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x41, 0x41, 0x7F, 0x00, 0x00, + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, + 0x60, 0x54, 0x54, 0x54, 0x7C, 0x00, + 0x7F, 0x44, 0x44, 0x44, 0x78, 0x00, + 0x7C, 0x44, 0x44, 0x44, 0x44, 0x00, + 0x78, 0x44, 0x44, 0x44, 0x7F, 0x00, + 0x7C, 0x54, 0x54, 0x54, 0x5C, 0x00, + 0x08, 0x7F, 0x09, 0x09, 0x09, 0x00, + 0x38, 0xA4, 0xA4, 0xA4, 0xFC, 0x00, + 0x7F, 0x04, 0x04, 0x04, 0x78, 0x00, + 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, + 0x70, 0x40, 0x40, 0x7D, 0x00, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x76, 0x00, + 0x00, 0x00, 0x7F, 0x40, 0x00, 0x00, + 0x7C, 0x04, 0x7C, 0x04, 0x7C, 0x00, + 0x7C, 0x04, 0x04, 0x04, 0x78, 0x00, + 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00, + 0xFC, 0x24, 0x24, 0x24, 0x38, 0x00, + 0x38, 0x24, 0x24, 0x24, 0xFC, 0x00, + 0x7C, 0x04, 0x04, 0x04, 0x04, 0x00, + 0x5C, 0x54, 0x54, 0x54, 0x74, 0x00, + 0x04, 0x04, 0x7F, 0x04, 0x04, 0x00, + 0x7C, 0x40, 0x40, 0x40, 0x7C, 0x00, + 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, + 0x7C, 0x40, 0x7C, 0x40, 0x7C, 0x00, + 0x6C, 0x10, 0x10, 0x10, 0x6C, 0x00, + 0xBC, 0xA0, 0xA0, 0xA0, 0xFC, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, + 0x00, 0x00, 0xE0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xFE, 0xFF, 0x9F, 0x0F, 0x0F, + 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, + 0x0F, 0x0F, 0x9F, 0xFF, 0xFE, 0xF0, + 0xF0, 0xF0, 0xF0, 0xE0, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0x10, 0x08, 0x04, 0x02, 0x02, + 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x02, 0x02, 0x02, 0x04, 0x08, + 0x10, 0xE0, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, + 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, + 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, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, + 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, + 0x87, 0xE1, 0xF9, 0xF9, 0xE1, 0x87, + 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, + 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0xC0, 0x30, 0x0C, + 0x33, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xC0, 0x3F, 0x00, 0x00, 0x00, + 0xFF, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x38, 0xC8, 0x08, 0x08, 0x0F, + 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x24, 0x24, 0x12, 0x12, 0x24, 0x24, + 0x48, 0x48, 0x24, 0x24, 0x12, 0x12, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 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, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, + 0x3F, 0x0C, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0C, 0x30, 0x00, + 0x00, 0x00, 0x00, 0x3F, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x01, 0x02, 0x04, 0x08, 0x10, 0x10, + 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x10, 0x10, 0x10, 0x08, 0x04, + 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0C, 0x30, + 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x40, 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, +}; diff --git a/keyboards/klor/lib/klorimation.h b/keyboards/klor/lib/klorimation.h new file mode 100644 index 00000000..182e631a --- /dev/null +++ b/keyboards/klor/lib/klorimation.h @@ -0,0 +1,3159 @@ +// Copyright 2022 @geigeigeist +// SPDX-License-Identifier: GPL-2.0+ + +#pragma once + + +// Animation parameters +#define FRAME_DURATION 41 // How long each frame lasts in milliseconds 41 = 24fps + +// Animation variables +uint32_t timer = 0; +uint8_t current_frame = 0; + +// Render animation +static void render_animation(void) { + + +// 'frame_01', 64x128px +static const char epd_bitmap_frame_01 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_02', 64x128px +static const char epd_bitmap_frame_02 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0xe0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x08, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x08, 0x18, 0x18, 0x18, 0x30, 0x30, 0x60, 0xe0, 0xc0, 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, 0xc0, 0xf0, 0x38, 0x0c, 0x06, + 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, + 0x06, 0x0c, 0x38, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_03', 64x128px +static const char epd_bitmap_frame_03 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x20, + 0x20, 0x60, 0x60, 0x60, 0x60, 0x60, 0xc0, 0xc0, 0xc0, 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, 0x80, 0xc0, 0x70, 0x38, + 0x1c, 0x0c, 0x06, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x06, 0x0c, 0x1c, + 0x38, 0x70, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfc, 0x1f, 0x03, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x03, 0x1f, 0xfc, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_04', 64x128px +static const char epd_bitmap_frame_04 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x40, + 0x40, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 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, 0xc0, 0xe0, 0x70, + 0x38, 0x18, 0x0c, 0x06, 0x06, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x06, 0x06, 0x0c, 0x18, 0x38, + 0x70, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf8, 0x3e, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x07, 0x3e, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 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, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_06', 64x128px +static const char epd_bitmap_frame_06 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 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, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, + 0x70, 0x38, 0x18, 0x0c, 0x06, 0x06, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x06, 0x06, 0x0c, 0x18, 0x38, 0x70, + 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf0, 0x3c, 0x0e, 0x03, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x03, 0x0e, 0x3c, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_05', 64x128px +static const char epd_bitmap_frame_05 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0xe0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x08, 0x0c, 0x0c, 0x0c, 0x04, 0x04, 0x06, 0x06, + 0x06, 0x06, 0x04, 0x04, 0x0c, 0x0c, 0x0c, 0x08, 0x18, 0x18, 0x30, 0x30, 0x60, 0xe0, 0xc0, 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, 0x80, 0xe0, 0x78, 0x1c, 0x0e, 0x07, + 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, + 0x07, 0x0e, 0x1c, 0x78, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xfc, 0x1f, 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, 0x01, 0x1f, 0xfc, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_07', 64x128px +static const char epd_bitmap_frame_07 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x40, 0x60, 0x60, 0x60, 0x20, 0x20, 0x30, 0x30, + 0x30, 0x30, 0x20, 0x20, 0x60, 0x60, 0x60, 0x40, 0xc0, 0xc0, 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, 0xc0, 0xe0, 0x70, 0x38, + 0x1c, 0x0e, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x0e, 0x1c, + 0x38, 0x70, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfc, 0x0f, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0f, 0xfc, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_08', 64x128px +static const char epd_bitmap_frame_08 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0xc0, 0x60, 0x60, 0x30, 0x30, 0x30, 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x60, 0x60, 0xc0, 0xc0, 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, 0x80, 0xe0, 0x70, 0x1c, 0x0e, + 0x06, 0x03, 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, 0x01, 0x01, 0x03, 0x06, + 0x0e, 0x1c, 0x70, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x3e, 0x07, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x07, 0x3e, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_09', 64x128px +static const char epd_bitmap_frame_09 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60, 0xc0, 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, 0x80, 0xe0, 0x70, 0x38, 0x0e, 0x07, + 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, + 0x07, 0x0e, 0x38, 0x70, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xfc, 0x1f, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x1f, 0xfc, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_10', 64x128px +static const char epd_bitmap_frame_10 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0x60, 0x70, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x0c, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x0c, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x70, 0x60, 0xc0, 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, 0x80, 0xe0, 0x78, 0x1c, 0x06, 0x03, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x03, 0x06, 0x1c, 0x78, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xfe, 0x0f, 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, 0x01, 0x0f, 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_11', 64x128px +static const char epd_bitmap_frame_11 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, + 0xc0, 0xe0, 0x70, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x02, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x70, 0xe0, 0xc0, + 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, 0xc0, 0xf0, 0x3c, 0x0e, 0x07, 0x03, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x03, 0x07, 0x0e, 0x3c, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_12', 64x128px +static const char epd_bitmap_frame_12 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, + 0xe0, 0x60, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, + 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x60, 0xe0, + 0xc0, 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, 0xe0, 0xf8, 0x1c, 0x0e, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x0e, 0x1c, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_13', 64x128px +static const char epd_bitmap_frame_13 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, + 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x38, 0x70, 0xe0, + 0xc0, 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, 0xe0, 0x78, 0x1e, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x1e, 0x78, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_15', 64x128px +static const char epd_bitmap_frame_15 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 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, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, + 0x70, 0x38, 0x18, 0x0c, 0x0e, 0x06, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x06, 0x0e, 0x0c, 0x18, 0x38, 0x70, + 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf0, 0x7c, 0x0e, 0x07, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x07, 0x0e, 0x7c, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_14', 64x128px +static const char epd_bitmap_frame_14 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 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, 0x80, 0x80, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, + 0x60, 0x30, 0x18, 0x1c, 0x0c, 0x06, 0x06, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x06, 0x06, 0x0c, 0x1c, 0x18, 0x30, 0x60, + 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x78, 0x1e, 0x07, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x07, 0x1e, 0x78, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_16', 64x128px +static const char epd_bitmap_frame_16 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 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, 0x80, 0x80, 0x80, 0x80, + 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, + 0x70, 0x30, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x30, 0x70, + 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf0, 0x7c, 0x0e, 0x07, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x07, 0x0e, 0x7c, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_17', 64x128px +static const char epd_bitmap_frame_17 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 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, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, + 0x70, 0x38, 0x18, 0x0c, 0x0e, 0x06, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x06, 0x0e, 0x0c, 0x18, 0x38, 0x70, + 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf0, 0x7c, 0x0e, 0x07, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x07, 0x0e, 0x7c, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_18', 64x128px +static const char epd_bitmap_frame_18 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0x80, 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, 0x80, 0xc0, 0xe0, + 0x70, 0x38, 0x1c, 0x0c, 0x06, 0x06, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x06, 0x06, 0x0c, 0x1c, 0x38, 0x70, + 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf0, 0x3c, 0x0f, 0x03, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x03, 0x0f, 0x3c, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_19', 64x128px +static const char epd_bitmap_frame_19 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 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, 0x80, 0xc0, 0x60, + 0x30, 0x18, 0x1c, 0x0c, 0x06, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x06, 0x0c, 0x1c, 0x18, 0x30, + 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0x3c, 0x0f, 0x03, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x03, 0x0f, 0x3c, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_20', 64x128px +static const char epd_bitmap_frame_20 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 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, 0x80, 0xe0, 0x70, + 0x30, 0x18, 0x0c, 0x0e, 0x06, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x06, 0x0e, 0x0c, 0x18, 0x30, + 0x70, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0x3c, 0x0f, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0f, 0x3c, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 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, 0x01, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_21', 64x128px +static const char epd_bitmap_frame_21 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x40, + 0x40, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 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, 0xc0, 0xe0, 0x70, + 0x38, 0x18, 0x0c, 0x06, 0x06, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x06, 0x06, 0x0c, 0x18, 0x38, + 0x70, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf8, 0x3e, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x07, 0x3e, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 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, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_22', 64x128px +static const char epd_bitmap_frame_22 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0xc0, 0xc0, 0xc0, 0xc0, 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, 0xc0, 0xe0, 0x70, + 0x38, 0x1c, 0x0c, 0x06, 0x07, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x07, 0x06, 0x0c, 0x1c, 0x38, + 0x70, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf8, 0x3e, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x07, 0x3e, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 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, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_23', 64x128px +static const char epd_bitmap_frame_23 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x80, 0xc0, 0xc0, 0xc0, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0xc0, 0xc0, 0xc0, 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, 0xc0, 0xe0, 0x70, + 0x38, 0x1c, 0x0c, 0x06, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x06, 0x0c, 0x1c, 0x38, + 0x70, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf8, 0x1e, 0x07, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x07, 0x1e, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 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, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_24', 64x128px +static const char epd_bitmap_frame_24 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x80, 0xc0, 0xc0, 0xc0, 0x40, 0x40, 0x60, 0x60, + 0x60, 0x60, 0x40, 0x40, 0xc0, 0xc0, 0xc0, 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, 0x80, 0xc0, 0xe0, 0x70, + 0x38, 0x1c, 0x0e, 0x06, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x06, 0x0e, 0x1c, 0x38, + 0x70, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf8, 0x1e, 0x07, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x07, 0x1e, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 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, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_25', 64x128px +static const char epd_bitmap_frame_25 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0x40, 0x40, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x40, 0x40, 0xc0, 0xc0, 0xc0, 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, 0x80, 0xc0, 0xe0, 0x70, + 0x18, 0x1c, 0x0e, 0x06, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x06, 0x0e, 0x1c, 0x18, + 0x70, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf8, 0x1e, 0x07, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x07, 0x1e, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 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, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_26', 64x128px +static const char epd_bitmap_frame_26 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0x40, 0x40, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x40, 0x40, 0xc0, 0xc0, 0xc0, 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, 0x80, 0xc0, 0xe0, 0x30, + 0x18, 0x0c, 0x0e, 0x06, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x06, 0x0e, 0x0c, 0x18, + 0x30, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0x1e, 0x07, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x07, 0x1e, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 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, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_27', 64x128px +static const char epd_bitmap_frame_27 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0x40, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x40, 0xc0, 0xc0, 0xc0, 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, 0x80, 0xc0, 0xe0, 0x30, + 0x18, 0x0c, 0x0e, 0x06, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x06, 0x0e, 0x0c, 0x18, + 0x30, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0x1e, 0x07, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x07, 0x1e, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 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, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_28', 64x128px +static const char epd_bitmap_frame_28 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0x40, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x40, 0xc0, 0xc0, 0xc0, 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, 0x80, 0xc0, 0xe0, 0x30, + 0x18, 0x0c, 0x0e, 0x06, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x06, 0x0e, 0x0c, 0x18, + 0x30, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0x1e, 0x07, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x07, 0x1e, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 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, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_29', 64x128px +static const char epd_bitmap_frame_29 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0x40, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x40, 0xc0, 0xc0, 0xc0, 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, 0x80, 0xc0, 0xe0, 0x30, + 0x18, 0x0c, 0x0e, 0x06, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x06, 0x0e, 0x0c, 0x18, + 0x30, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0x1e, 0x07, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x07, 0x1e, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 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, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_30', 64x128px +static const char epd_bitmap_frame_30 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0x40, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x40, 0xc0, 0xc0, 0xc0, 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, 0x80, 0xc0, 0xe0, 0x30, + 0x18, 0x0c, 0x0e, 0x06, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x06, 0x0e, 0x0c, 0x18, + 0x30, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0x1e, 0x07, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x07, 0x1e, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 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, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0xe0, 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, 0x00, 0x80, 0xe0, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_31', 64x128px +static const char epd_bitmap_frame_31 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0x40, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x40, 0xc0, 0xc0, 0xc0, 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, 0x80, 0xc0, 0x60, 0x30, + 0x18, 0x0c, 0x06, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x06, 0x0c, 0x18, + 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0x1e, 0x07, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x07, 0x1e, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe3, 0xcf, 0xfc, 0xf0, 0xe0, 0xc0, + 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, 0x80, + 0xc0, 0xe0, 0x70, 0x3c, 0x0f, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_32', 64x128px +static const char epd_bitmap_frame_32 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x40, 0x60, 0x60, 0x60, 0x20, 0x20, 0x30, 0x30, + 0x30, 0x30, 0x20, 0x20, 0x60, 0x60, 0x60, 0x40, 0xc0, 0xc0, 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, 0xc0, 0xe0, 0x70, 0x38, + 0x1c, 0x0e, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x0e, 0x1c, + 0x38, 0x70, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfc, 0x0f, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0f, 0xfc, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 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, 0xc0, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1c, 0x38, 0x60, + 0xc0, 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, 0x80, 0x80, 0xc0, + 0x60, 0x38, 0x1c, 0x0f, 0x03, 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, 0x80, + 0x80, 0x81, 0x83, 0x83, 0x86, 0x8e, 0x8c, 0x8c, 0x98, 0x98, 0x98, 0x90, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x10, 0x18, 0x18, 0x18, 0x0c, 0x1c, 0x1e, 0x3e, 0x3b, 0x73, 0xe1, 0xe0, + 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_33', 64x128px +static const char epd_bitmap_frame_33 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, + 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x02, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x38, 0x70, 0xe0, + 0xc0, 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, 0xe0, 0x78, 0x1e, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x1e, 0x78, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xf8, 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, 0x00, 0x00, 0x00, 0x80, 0xf8, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1e, 0x38, 0x70, 0xe0, + 0xc0, 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, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x20, 0x60, 0x60, + 0x60, 0x60, 0x20, 0x20, 0x30, 0x30, 0x30, 0x10, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, + 0x07, 0x0e, 0x0e, 0x1c, 0x1c, 0x38, 0x70, 0x70, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x70, 0x70, 0x30, 0x38, 0x38, 0x1c, 0x1c, + 0x0e, 0x0e, 0x06, 0x07, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x07, 0x0e, + 0x0f, 0x1f, 0x1f, 0x3b, 0x71, 0x71, 0xe1, 0xe0, 0xc0, 0xc0, 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, 0x18, 0x18, 0x38, 0x38, 0x38, 0x38, 0x38, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x70, 0x70, + 0x70, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x61, 0x61, 0x63, 0x67, 0x67, 0x6e, 0x6e, 0x7c, + 0xfc, 0xf8, 0xf8, 0xf0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_34', 64x128px +static const char epd_bitmap_frame_34 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xe0, + 0xe0, 0x70, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x86, 0x06, 0x06, 0x07, 0x07, 0x07, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x0f, 0xff, 0xfc, + 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0x70, 0x78, 0x38, 0x1c, 0x1e, 0x0e, 0x07, 0x03, 0x03, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xff, + 0xff, 0x83, 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, 0xff, 0xff, 0xe0, 0x80, 0x80, 0x80, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x02, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x38, 0x7c, 0xfc, + 0xdc, 0x8c, 0x0c, 0x0c, 0x0c, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe3, 0x7b, 0x1f, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x1e, 0x78, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xf8, 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, 0x00, 0x00, 0x00, 0x80, 0xf8, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1e, 0x38, 0x70, 0xe0, + 0xc0, 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, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x20, 0x60, 0x60, + 0x60, 0x60, 0x20, 0x20, 0x30, 0x30, 0x30, 0x10, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x70, 0x70, 0xe0, 0xe0, 0xc0, 0xc0, + 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, 0x80, 0x80, 0xc0, 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, 0x01, 0x01, + 0x03, 0x07, 0x07, 0x0e, 0x0e, 0x1c, 0x1c, 0x38, 0x38, 0x70, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x80, + 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x60, 0x70, 0x30, 0x38, 0x38, 0x1c, 0x1c, 0x0e, 0x0e, 0x06, + 0x07, 0x07, 0x03, 0x03, 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, 0x01, 0x01, 0x03, 0x03, + 0x07, 0x0f, 0x0f, 0x1d, 0x1c, 0x38, 0x38, 0x70, 0xe0, 0xe0, 0xc0, 0xc0, 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, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1c, 0x1c, + 0x1c, 0x1c, 0x1c, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x30, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x37, 0x3e, + 0x3e, 0x3c, 0x3c, 0x38, 0x78, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_35', 64x128px +static const char epd_bitmap_frame_35 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x70, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x38, 0x38, 0x18, 0x18, 0x18, 0xf8, 0xf8, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xe0, 0xe0, 0x70, 0x38, 0x38, 0x1c, + 0x0e, 0x0e, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, + 0xf0, 0x70, 0x38, 0x1c, 0x1e, 0x0e, 0x07, 0x07, 0x03, 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, 0x1f, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, + 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x7f, 0x3c, 0x30, 0x30, 0x30, 0xb8, 0xf8, + 0xf8, 0x78, 0x38, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x07, 0x07, 0x0f, 0x0f, 0x1b, 0x3b, 0x71, 0xe1, + 0xc1, 0x81, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x78, 0x1e, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x1e, 0x78, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xf8, 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, 0x00, 0x00, 0x00, 0x80, 0xf8, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1e, 0x38, 0x70, 0xe0, + 0xc0, 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, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x20, 0x60, 0x60, + 0x60, 0x60, 0x20, 0x20, 0x30, 0x30, 0x30, 0x10, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x70, 0x70, 0xe0, 0xe0, 0xc0, + 0xc0, 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, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x03, 0x07, 0x07, 0x0e, 0x0e, 0x1c, 0x1c, 0x38, 0x70, 0x70, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, + 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x70, 0x70, 0x30, 0x38, 0x18, 0x1c, 0x1c, 0x0e, 0x0e, 0x06, 0x07, + 0x03, 0x03, 0x03, 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, 0x01, 0x01, 0x03, + 0x03, 0x07, 0x0f, 0x0e, 0x1c, 0x1c, 0x38, 0x38, 0x70, 0xe0, 0xe0, 0xc0, 0xc0, 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, 0x0e, 0x0e, 0x0e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x39, 0x39, 0x3b, 0x3b, 0x3f, + 0x3e, 0x3e, 0x3c, 0x3c, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_36', 64x128px +static const char epd_bitmap_frame_36 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x30, 0x30, 0x38, 0x38, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x1c, 0x1c, 0x1c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0e, 0x0e, 0x0e, 0x06, 0x06, 0x7e, 0xfe, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xe0, 0x70, 0x70, 0x38, 0x1c, 0x1c, 0x0e, 0x07, + 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, + 0xfc, 0x1c, 0x0e, 0x0f, 0x07, 0x03, 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, 0x07, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, + 0xff, 0xf8, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, + 0x60, 0x60, 0x60, 0x60, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1f, 0x1f, 0x0c, 0x0c, 0x0c, 0x8c, 0xcc, + 0xee, 0x7e, 0x3e, 0x1e, 0x0e, 0x0e, 0x06, 0x07, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x38, 0x70, 0xe0, + 0xc0, 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, 0xe0, 0x78, 0x1e, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x1e, 0x78, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xf8, 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, 0x00, 0x00, 0x00, 0x80, 0xf8, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1e, 0x38, 0x70, 0xe0, + 0xc0, 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, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x20, 0x60, 0x60, + 0x60, 0x60, 0x20, 0x20, 0x30, 0x30, 0x30, 0x10, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x38, 0x70, 0x60, 0xe0, 0xc0, + 0xc0, 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, + 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x03, 0x03, 0x07, 0x07, 0x0e, 0x1c, 0x1c, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xc0, 0xc0, 0x80, + 0xc0, 0xc0, 0xc0, 0xe0, 0x60, 0x70, 0x70, 0x38, 0x38, 0x1c, 0x1c, 0x0c, 0x0e, 0x0e, 0x07, 0x07, + 0x03, 0x03, 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, 0x01, 0x01, 0x03, + 0x03, 0x07, 0x07, 0x0e, 0x1c, 0x1c, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xc0, 0xc0, 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, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, 0x1c, + 0x1c, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x1b, 0x1b, 0x3f, + 0x3f, 0x3e, 0x3c, 0x3c, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_37', 64x128px +static const char epd_bitmap_frame_37 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, + 0xc0, 0xc0, 0xe0, 0xe0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x9c, 0x1c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0e, + 0x0e, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x1f, 0xff, 0xfc, + 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xe0, 0xe0, 0x70, 0x38, 0x38, 0x1c, 0x0e, 0x0f, 0x07, 0x03, + 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, + 0xfe, 0x0e, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xcf, + 0xff, 0xfc, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x70, 0x70, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x38, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x06, 0x06, 0x06, 0x87, 0xc7, + 0xe7, 0x73, 0x3b, 0x1b, 0x0f, 0x0f, 0x07, 0x07, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x02, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x38, 0x70, 0xe0, + 0xc0, 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, 0xe0, 0x78, 0x1e, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x1e, 0x78, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xf8, 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, 0x00, 0x00, 0x00, 0x80, 0xf8, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1e, 0x38, 0x70, 0xe0, + 0xc0, 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, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x20, 0x60, 0x60, + 0x60, 0x60, 0x20, 0x20, 0x30, 0x30, 0x30, 0x10, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xc0, + 0xc0, 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, + 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x03, 0x03, 0x07, 0x07, 0x0e, 0x1c, 0x1c, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xc0, 0xc0, 0x80, + 0xc0, 0xc0, 0xe0, 0xe0, 0x60, 0x70, 0x70, 0x38, 0x38, 0x1c, 0x1c, 0x0c, 0x0e, 0x06, 0x07, 0x07, + 0x03, 0x03, 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, 0x01, 0x01, 0x03, + 0x03, 0x07, 0x07, 0x0e, 0x0c, 0x1c, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xe0, 0xc0, 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, 0x06, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, + 0x1c, 0x1c, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x1b, 0x1b, 0x1f, + 0x1f, 0x3e, 0x3e, 0x3c, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_38', 64x128px +static const char epd_bitmap_frame_38 [] PROGMEM = { + 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, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, + 0xc0, 0xe0, 0xf0, 0x70, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xce, 0x0e, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x07, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x0f, 0xff, 0xfe, + 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xe0, 0xf0, 0x70, 0x38, 0x3c, 0x1c, 0x0e, 0x0f, 0x07, 0x03, 0x03, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, + 0xff, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xe7, + 0xff, 0xfe, 0x60, 0x60, 0x60, 0x60, 0x70, 0x70, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x38, + 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0xc3, + 0xe3, 0x71, 0x39, 0x19, 0x0d, 0x0d, 0x07, 0x07, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x02, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x38, 0x70, 0xe0, + 0xc0, 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, 0xe0, 0x78, 0x1e, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x1e, 0x78, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xf8, 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, 0x00, 0x00, 0x00, 0x80, 0xf8, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1e, 0x38, 0x70, 0xe0, + 0xc0, 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, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x20, 0x60, 0x60, + 0x60, 0x60, 0x20, 0x20, 0x30, 0x30, 0x30, 0x10, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xc0, + 0xc0, 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, + 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x03, 0x03, 0x07, 0x07, 0x0e, 0x1c, 0x1c, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xc0, 0xc0, 0x80, + 0xc0, 0xc0, 0xe0, 0xe0, 0x60, 0x70, 0x70, 0x38, 0x38, 0x1c, 0x1c, 0x0c, 0x0e, 0x06, 0x07, 0x07, + 0x03, 0x03, 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, 0x01, 0x01, 0x03, + 0x03, 0x07, 0x07, 0x0e, 0x0c, 0x1c, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xe0, 0xc0, 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, 0x06, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, + 0x1c, 0x1c, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x1b, 0x1b, 0x1f, + 0x1f, 0x3e, 0x3e, 0x3c, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_39', 64x128px +static const char epd_bitmap_frame_39 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, + 0xe0, 0xe0, 0x70, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xfe, 0xf6, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0xff, 0xff, + 0x80, 0x80, 0x80, 0xc0, 0xe0, 0xe0, 0x70, 0x38, 0x38, 0x1c, 0x0e, 0x0e, 0x07, 0x03, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, + 0xff, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe0, 0x80, 0x80, 0x80, 0x80, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0x60, 0x60, 0x60, 0xe0, 0xe7, + 0xff, 0xff, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x38, 0x38, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x1c, 0x1c, 0x1c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x81, 0xc1, + 0xe1, 0x71, 0x38, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x02, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x38, 0x70, 0xe0, + 0xc0, 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, 0xe0, 0x78, 0x1e, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x1e, 0x78, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xf8, 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, 0x00, 0x00, 0x00, 0x80, 0xf8, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1e, 0x38, 0x70, 0xe0, + 0xc0, 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, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x20, 0x60, 0x60, + 0x60, 0x60, 0x20, 0x20, 0x30, 0x30, 0x30, 0x10, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xc0, + 0xc0, 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, + 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x03, 0x03, 0x07, 0x07, 0x0e, 0x1c, 0x1c, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xc0, 0xc0, 0x80, + 0xc0, 0xc0, 0xc0, 0xe0, 0x60, 0x70, 0x70, 0x38, 0x38, 0x1c, 0x1c, 0x0c, 0x0e, 0x06, 0x07, 0x07, + 0x03, 0x03, 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, 0x01, 0x01, 0x03, + 0x03, 0x07, 0x07, 0x0e, 0x0c, 0x1c, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xe0, 0xc0, 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, 0x06, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, + 0x1c, 0x1c, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x1b, 0x1b, 0x1f, + 0x3f, 0x3e, 0x3e, 0x3c, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_40', 64x128px +static const char epd_bitmap_frame_40 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, + 0xe0, 0xf0, 0x70, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xe0, 0x80, 0xc0, 0xe0, 0xe0, 0x70, 0x78, 0x38, 0x1c, 0x1c, 0x0e, 0x07, 0x07, 0x03, 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, 0x3f, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x83, 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, 0xff, 0xff, 0xf0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xe0, 0xe0, 0xe0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x70, 0x70, 0x30, 0xb0, 0xb3, + 0xbf, 0xbf, 0x30, 0x30, 0x38, 0x38, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1c, 0x1c, 0x1c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x02, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x38, 0x70, 0xe0, + 0xc0, 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, 0xe0, 0x78, 0x1e, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x1e, 0x78, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xf8, 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, 0x00, 0x00, 0x00, 0x80, 0xf8, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1e, 0x38, 0x70, 0xe0, + 0xc0, 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, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x20, 0x60, 0x60, + 0x60, 0x60, 0x20, 0x20, 0x30, 0x30, 0x30, 0x10, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x38, 0x70, 0xe0, 0xe0, 0xc0, + 0xc0, 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, + 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x03, 0x03, 0x07, 0x07, 0x0e, 0x1c, 0x1c, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xc0, 0xc0, 0x80, + 0xc0, 0xc0, 0xc0, 0xe0, 0x60, 0x70, 0x70, 0x38, 0x38, 0x1c, 0x1c, 0x0c, 0x0e, 0x06, 0x07, 0x07, + 0x03, 0x03, 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, 0x01, 0x01, 0x03, + 0x03, 0x07, 0x07, 0x0e, 0x1c, 0x1c, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xe0, 0xc0, 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, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, + 0x1c, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x1b, 0x1b, 0x1f, + 0x3f, 0x3e, 0x3e, 0x3c, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_41', 64x128px +static const char epd_bitmap_frame_41 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, + 0xe0, 0x70, 0x70, 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, + 0xfe, 0xc0, 0xe0, 0xe0, 0x70, 0x70, 0x38, 0x1c, 0x1c, 0x0e, 0x0e, 0x07, 0x03, 0x03, 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, 0x07, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xe1, 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, 0x7f, 0x7f, 0x78, 0x60, 0x60, 0x60, 0x60, 0x70, + 0x70, 0x70, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x38, 0xb8, 0x99, + 0x9f, 0x9f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1c, 0x1c, 0x1c, 0x1c, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0e, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x02, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x38, 0x70, 0xe0, + 0xc0, 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, 0xe0, 0x78, 0x1e, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x1e, 0x78, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xf8, 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, 0x00, 0x00, 0x00, 0x80, 0xf8, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1e, 0x38, 0x70, 0xe0, + 0xc0, 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, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x20, 0x60, 0x60, + 0x60, 0x60, 0x20, 0x20, 0x30, 0x30, 0x30, 0x10, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x38, 0x70, 0xe0, 0xe0, 0xc0, + 0xc0, 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, + 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x03, 0x03, 0x07, 0x0e, 0x0e, 0x1c, 0x1c, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xc0, 0xc0, 0x80, + 0xc0, 0xc0, 0xc0, 0xe0, 0x60, 0x70, 0x70, 0x38, 0x38, 0x1c, 0x1c, 0x0c, 0x0e, 0x0e, 0x07, 0x07, + 0x03, 0x03, 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, 0x01, 0x01, 0x03, + 0x03, 0x07, 0x07, 0x0e, 0x1c, 0x1c, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xe0, 0xc0, 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, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, 0x1c, + 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x1b, 0x1b, 0x1f, + 0x3f, 0x3e, 0x3e, 0x3c, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_42', 64x128px +static const char epd_bitmap_frame_42 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x38, 0xf8, + 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, + 0xe0, 0x60, 0x70, 0x38, 0x38, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xe0, 0xe0, 0x70, 0x70, 0x38, 0x38, 0x1c, 0x0e, 0x0e, 0x07, 0x07, 0x03, 0x03, 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, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x0c, 0x0c, 0x0c, 0x8c, 0x8c, + 0x8f, 0x8f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0e, 0x0e, 0x0e, + 0x0e, 0x0e, 0x0e, 0x0e, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x02, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x38, 0x70, 0xe0, + 0xc0, 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, 0xe0, 0x78, 0x1e, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x1e, 0x78, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xf8, 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, 0x00, 0x00, 0x00, 0x80, 0xf8, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1e, 0x38, 0x70, 0xe0, + 0xc0, 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, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x20, 0x60, 0x60, + 0x60, 0x60, 0x20, 0x20, 0x30, 0x30, 0x30, 0x10, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x70, 0x70, 0xe0, 0xe0, 0xc0, + 0xc0, 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, + 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x03, 0x07, 0x07, 0x0e, 0x0e, 0x1c, 0x1c, 0x38, 0x38, 0x70, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, + 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x70, 0x70, 0x38, 0x38, 0x18, 0x1c, 0x0c, 0x0e, 0x0e, 0x07, 0x07, + 0x03, 0x03, 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, 0x01, 0x01, 0x03, + 0x03, 0x07, 0x07, 0x0e, 0x1c, 0x1c, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xe0, 0xc0, 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, 0x0e, 0x0e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x1b, 0x1b, 0x1f, + 0x3f, 0x3e, 0x3e, 0x3c, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_43', 64x128px +static const char epd_bitmap_frame_43 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, + 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, + 0xe0, 0xe0, 0x70, 0x70, 0x38, 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x70, 0x70, 0x38, 0x38, 0x1c, 0x1c, 0x0e, 0x0e, 0x07, 0x07, 0x03, 0x03, 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, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0x86, + 0x87, 0x87, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x02, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x38, 0x70, 0xe0, + 0xc0, 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, 0xe0, 0x78, 0x1e, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x1e, 0x78, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xf8, 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, 0x00, 0x00, 0x00, 0x80, 0xf8, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1e, 0x38, 0x70, 0xe0, + 0xc0, 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, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x20, 0x60, 0x60, + 0x60, 0x60, 0x20, 0x20, 0x30, 0x30, 0x30, 0x10, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xe0, 0xc0, + 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, + 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x03, 0x03, 0x07, 0x07, 0x0e, 0x0e, 0x1c, 0x1c, 0x38, 0x70, 0x70, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, + 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x70, 0x70, 0x30, 0x38, 0x18, 0x1c, 0x0c, 0x0e, 0x0e, 0x07, 0x07, + 0x03, 0x03, 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, 0x01, 0x01, 0x03, + 0x03, 0x07, 0x07, 0x0e, 0x1c, 0x1c, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xc0, 0xc0, 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, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x1b, 0x1b, 0x3f, + 0x3f, 0x3e, 0x3e, 0x3c, 0x3c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_44', 64x128px +static const char epd_bitmap_frame_44 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, + 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, + 0xe0, 0xe0, 0x70, 0x70, 0x38, 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x70, 0x70, 0x38, 0x38, 0x1c, 0x1c, 0x0e, 0x0e, 0x07, 0x07, 0x03, 0x03, 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, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0x86, + 0x87, 0x87, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x02, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x38, 0x70, 0xe0, + 0xc0, 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, 0xe0, 0x78, 0x1e, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x1e, 0x78, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xf8, 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, 0x00, 0x00, 0x00, 0x80, 0xf8, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1e, 0x38, 0x70, 0xe0, + 0xc0, 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, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x20, 0x60, 0x60, + 0x60, 0x60, 0x20, 0x20, 0x30, 0x30, 0x30, 0x10, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x70, 0x70, 0xe0, 0xe0, 0xc0, 0xc0, + 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, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x03, 0x03, 0x07, 0x06, 0x0e, 0x1c, 0x1c, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, + 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x60, 0x70, 0x30, 0x38, 0x38, 0x1c, 0x1c, 0x0e, 0x0e, 0x07, 0x07, + 0x03, 0x03, 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, 0x01, 0x01, 0x03, + 0x07, 0x07, 0x0f, 0x0e, 0x1c, 0x1c, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xc0, 0xc0, 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, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x1b, 0x3b, 0x3f, + 0x3f, 0x3e, 0x3e, 0x3c, 0x3c, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; +// 'frame_45', 64x128px +static const char epd_bitmap_frame_45 [] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0xfc, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, + 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, + 0xe0, 0xe0, 0x70, 0x70, 0x38, 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x70, 0x70, 0x38, 0x38, 0x1c, 0x1c, 0x0e, 0x0e, 0x07, 0x07, 0x03, 0x03, 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, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0x86, + 0x87, 0x87, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x02, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x38, 0x70, 0xe0, + 0xc0, 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, 0xe0, 0x78, 0x1e, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x1e, 0x78, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xf8, 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, 0x00, 0x00, 0x00, 0x80, 0xf8, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1e, 0x38, 0x70, 0xe0, + 0xc0, 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, 0x80, 0xc0, + 0xe0, 0x70, 0x38, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x07, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x20, 0x60, 0x60, + 0x60, 0x60, 0x20, 0x20, 0x30, 0x30, 0x30, 0x10, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x07, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0xe0, 0xe0, 0xc0, 0xc0, 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, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, + 0x03, 0x07, 0x06, 0x0e, 0x0c, 0x1c, 0x38, 0x38, 0x70, 0x70, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x80, + 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x70, 0x70, 0x38, 0x38, 0x1c, 0x1c, 0x0c, 0x0e, 0x06, 0x07, + 0x03, 0x03, 0x01, 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, 0x01, 0x01, 0x03, 0x03, + 0x07, 0x07, 0x0f, 0x0f, 0x1c, 0x1c, 0x38, 0x38, 0x70, 0x60, 0xe0, 0xc0, 0xc0, 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, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x38, 0x38, 0x38, 0x38, 0x39, 0x3b, 0x3b, 0x3f, + 0x3f, 0x3e, 0x3e, 0x3c, 0x3c, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + + + + // Animation frames array + const char* epd_bitmap_allArray [] = { + epd_bitmap_frame_01, + epd_bitmap_frame_02, + epd_bitmap_frame_03, + epd_bitmap_frame_04, + epd_bitmap_frame_05, + epd_bitmap_frame_06, + epd_bitmap_frame_07, + epd_bitmap_frame_08, + epd_bitmap_frame_09, + epd_bitmap_frame_10, + epd_bitmap_frame_11, + epd_bitmap_frame_12, + epd_bitmap_frame_13, + epd_bitmap_frame_14, + epd_bitmap_frame_15, + epd_bitmap_frame_16, + epd_bitmap_frame_17, + epd_bitmap_frame_18, + epd_bitmap_frame_19, + epd_bitmap_frame_20, + epd_bitmap_frame_21, + epd_bitmap_frame_22, + epd_bitmap_frame_23, + epd_bitmap_frame_24, + epd_bitmap_frame_25, + epd_bitmap_frame_26, + epd_bitmap_frame_27, + epd_bitmap_frame_28, + epd_bitmap_frame_29, + epd_bitmap_frame_30, + epd_bitmap_frame_31, + epd_bitmap_frame_32, + epd_bitmap_frame_33, + epd_bitmap_frame_34, + epd_bitmap_frame_35, + epd_bitmap_frame_36, + epd_bitmap_frame_37, + epd_bitmap_frame_38, + epd_bitmap_frame_39, + epd_bitmap_frame_40, + epd_bitmap_frame_41, + epd_bitmap_frame_42, + epd_bitmap_frame_43, + epd_bitmap_frame_44, + epd_bitmap_frame_45 + }; + + // Frame sizes array + uint16_t frame_sizes[45] = { + sizeof(epd_bitmap_frame_01), + sizeof(epd_bitmap_frame_02), + sizeof(epd_bitmap_frame_03), + sizeof(epd_bitmap_frame_04), + sizeof(epd_bitmap_frame_05), + sizeof(epd_bitmap_frame_06), + sizeof(epd_bitmap_frame_07), + sizeof(epd_bitmap_frame_08), + sizeof(epd_bitmap_frame_09), + sizeof(epd_bitmap_frame_10), + sizeof(epd_bitmap_frame_11), + sizeof(epd_bitmap_frame_12), + sizeof(epd_bitmap_frame_13), + sizeof(epd_bitmap_frame_14), + sizeof(epd_bitmap_frame_15), + sizeof(epd_bitmap_frame_16), + sizeof(epd_bitmap_frame_17), + sizeof(epd_bitmap_frame_18), + sizeof(epd_bitmap_frame_19), + sizeof(epd_bitmap_frame_20), + sizeof(epd_bitmap_frame_21), + sizeof(epd_bitmap_frame_22), + sizeof(epd_bitmap_frame_23), + sizeof(epd_bitmap_frame_24), + sizeof(epd_bitmap_frame_25), + sizeof(epd_bitmap_frame_26), + sizeof(epd_bitmap_frame_27), + sizeof(epd_bitmap_frame_28), + sizeof(epd_bitmap_frame_29), + sizeof(epd_bitmap_frame_30), + sizeof(epd_bitmap_frame_31), + sizeof(epd_bitmap_frame_32), + sizeof(epd_bitmap_frame_33), + sizeof(epd_bitmap_frame_34), + sizeof(epd_bitmap_frame_35), + sizeof(epd_bitmap_frame_36), + sizeof(epd_bitmap_frame_37), + sizeof(epd_bitmap_frame_38), + sizeof(epd_bitmap_frame_39), + sizeof(epd_bitmap_frame_40), + sizeof(epd_bitmap_frame_41), + sizeof(epd_bitmap_frame_42), + sizeof(epd_bitmap_frame_43), + sizeof(epd_bitmap_frame_44), + sizeof(epd_bitmap_frame_45) + }; + + //uint8_t framecount = sizeof(epd_bitmap_allArray) / sizeof(epd_bitmap_allArray[0]); + + if (current_frame < 44){ + + // Run animation + if (timer_elapsed(timer) > FRAME_DURATION){ + // Set timer to updated time + //timer = timer_read() + 2500; + timer = timer_read(); + + // Increment frame + current_frame = (current_frame + 1) % (sizeof(epd_bitmap_allArray) / sizeof(epd_bitmap_allArray[0])); + + // Draw frame to OLED + oled_write_raw_P(epd_bitmap_allArray[current_frame], frame_sizes[current_frame]); + } + } + else { + return; + } +} + +/* +uint32_t timer = 0; +uint8_t current_frame = 0; +*/ \ No newline at end of file diff --git a/keyboards/klor/lib/klounds.h b/keyboards/klor/lib/klounds.h new file mode 100644 index 00000000..de103398 --- /dev/null +++ b/keyboards/klor/lib/klounds.h @@ -0,0 +1,15 @@ +// Copyright 2022 @geigeigeist +// SPDX-License-Identifier: GPL-2.0+ + +#pragma once + +#define WINXP_SOUND W__NOTE(_DS6), Q__NOTE(_DS5), H__NOTE(_AS5), H__NOTE(_GS5), H__NOTE(_DS5), H__NOTE(_DS6), H__NOTE(_AS5) +#define MAC_SOUND S__NOTE(_CS5), B__NOTE(_C5) +#define CAPSON_SOUND Q__NOTE(_DS1) +#define CAPSOFF_SOUND Q__NOTE(_DS5) + +float winxp_song[][2] = SONG(WINXP_SOUND); +float mac_song[][2] = SONG(MAC_SOUND); +float capson_song[][2] = SONG(CAPSON_SOUND); +float capsoff_song[][2] = SONG(CAPSOFF_SOUND); + diff --git a/keyboards/klor/rules.mk b/keyboards/klor/rules.mk index c3fcb138..b71d7dde 100644 --- a/keyboards/klor/rules.mk +++ b/keyboards/klor/rules.mk @@ -1,15 +1,26 @@ -#HAPTIC FEEDBACK +# A number of these rules were moved into info.json + +# Build Options +# change yes to no to disable +# +SWAP_HANDS_ENABLE = yes + +# HAPTIC FEEDBACK HAPTIC_DRIVER = drv2605l -#PER KEY RGB +# PER KEY RGB BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE) -#SPACE SAVING +# SPACE SAVING +EXTRAKEY_ENABLE = no AUDIO_ENABLE = no MUSIC_ENABLE = no +LTO_ENABLE = no CONSOLE_ENABLE = no COMMAND_ENABLE = no +MOUSEKEY_ENABLE = no SPACE_CADET_ENABLE = no GRAVE_ESC_ENABLE = no +MAGIC_ENABLE = no diff --git a/qmk.json b/qmk.json index 591fb8d6..8ed7b3c5 100644 --- a/qmk.json +++ b/qmk.json @@ -1,11 +1,15 @@ { "userspace_version": "1.0", "build_targets": [ + ["ploopyco/trackball_nano", "lkbm"], ["crkbd/rev1", "t4corun"], ["bastardkb/charybdis/3x5/v2/splinky_3", "t4corun"], ["planck/rev6", "t4corun"], ["bluebell/swoop", "t4corun"], - ["barbellboards/rollow", "t4corun"] + ["barbellboards/rollow", "t4corun"], + ["klor", "default"], + ["klor/2040", "default"] + ] } \ No newline at end of file diff --git a/qmk_clone.json b/qmk_clone.json deleted file mode 100644 index 7aeff4f3..00000000 --- a/qmk_clone.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "clone_targets": [ - { - "repository": "https://github.com/app-gitKaiwho/qmk-config-klor/", - "tree": "main" - } - ] -} \ No newline at end of file diff --git a/qmk_nontree.json b/qmk_nontree.json index 8dfd6ce2..1134b852 100644 --- a/qmk_nontree.json +++ b/qmk_nontree.json @@ -1,5 +1,6 @@ { "nontree_targets": [ - "barbellboards" + "barbellboards", + "klor" ] } From 873c2bf735c25ef48f20cb8e6385e310ef424e79 Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 13 May 2024 22:11:04 -0500 Subject: [PATCH 03/34] Forgot to update default keymap - they had the wrong oled driver in there - Added copyright stuff back --- keyboards/klor/2040/2040.c | 3 + keyboards/klor/2040/2040.h | 3 + keyboards/klor/2040/config.h | 4 + keyboards/klor/config.h | 18 +++++ keyboards/klor/keymaps/default/config.h | 5 -- keyboards/klor/keymaps/default/keymap.c | 6 +- keyboards/klor/keymaps/default/rules.mk | 7 +- .../klor/keymaps/{default => }/geist/config.h | 0 .../klor/keymaps/{default => }/geist/keymap.c | 0 .../klor/keymaps/{default => }/geist/rules.mk | 0 keyboards/klor/klor.c | 75 ++++++++++++++++++ keyboards/klor/klor.h | 76 +------------------ keyboards/klor/rules.mk | 4 +- 13 files changed, 111 insertions(+), 90 deletions(-) rename keyboards/klor/keymaps/{default => }/geist/config.h (100%) rename keyboards/klor/keymaps/{default => }/geist/keymap.c (100%) rename keyboards/klor/keymaps/{default => }/geist/rules.mk (100%) diff --git a/keyboards/klor/2040/2040.c b/keyboards/klor/2040/2040.c index c8a237b4..504d8fc2 100644 --- a/keyboards/klor/2040/2040.c +++ b/keyboards/klor/2040/2040.c @@ -1 +1,4 @@ +// Copyright 2022 @geigeigeist +// SPDX-License-Identifier: GPL-2.0+ + #include "2040.h" \ No newline at end of file diff --git a/keyboards/klor/2040/2040.h b/keyboards/klor/2040/2040.h index 2b748f70..fe69da9f 100644 --- a/keyboards/klor/2040/2040.h +++ b/keyboards/klor/2040/2040.h @@ -1,3 +1,6 @@ +// Copyright 2022 @geigeigeist +// SPDX-License-Identifier: GPL-2.0+ + #pragma once #include "klor.h" \ No newline at end of file diff --git a/keyboards/klor/2040/config.h b/keyboards/klor/2040/config.h index 8fbc56f0..c3c566e1 100644 --- a/keyboards/klor/2040/config.h +++ b/keyboards/klor/2040/config.h @@ -1,3 +1,7 @@ +// Copyright 2022 @geigeigeist +// SPDX-License-Identifier: GPL-2.0+ +// here you find only RP2040 specific configurations + #pragma once #include "config_common.h" diff --git a/keyboards/klor/config.h b/keyboards/klor/config.h index e29d34b3..4f826db9 100644 --- a/keyboards/klor/config.h +++ b/keyboards/klor/config.h @@ -1,4 +1,22 @@ +/* +Copyright 2022 GEIST <@geigeigeist> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + #pragma once +#include "config_common.h" // Most configuration will be found in info.json diff --git a/keyboards/klor/keymaps/default/config.h b/keyboards/klor/keymaps/default/config.h index 62175180..95ce1828 100644 --- a/keyboards/klor/keymaps/default/config.h +++ b/keyboards/klor/keymaps/default/config.h @@ -11,11 +11,6 @@ for more options. //#define TAPPING_TERM 170 #define TAPPING_TERM 170 -// Prevent normal rollover on alphas from accidentally triggering mods. -#define IGNORE_MOD_TAP_INTERRUPT - -// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. -#define TAPPING_FORCE_HOLD // Auto Shift #define NO_AUTO_SHIFT_ALPHA diff --git a/keyboards/klor/keymaps/default/keymap.c b/keyboards/klor/keymaps/default/keymap.c index 3d6d43cd..4faf89c4 100644 --- a/keyboards/klor/keymaps/default/keymap.c +++ b/keyboards/klor/keymaps/default/keymap.c @@ -20,9 +20,9 @@ #include #include #include "klor.h" -#ifdef HAPTIC_ENABLE -#include "drivers/haptic/DRV2605L.h" -#endif //HAPTIC ENABLE +//#ifdef HAPTIC_ENABLE +//#include "drivers/haptic/DRV2605L.h" +//#endif //HAPTIC ENABLE // ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ diff --git a/keyboards/klor/keymaps/default/rules.mk b/keyboards/klor/keymaps/default/rules.mk index 98144ed9..b838d215 100644 --- a/keyboards/klor/keymaps/default/rules.mk +++ b/keyboards/klor/keymaps/default/rules.mk @@ -1,9 +1,4 @@ -OLED_ENABLE = yes -OLED_DRIVER = SSD1306 -ENCODER_ENABLE = yes EXTRAKEY_ENABLE = yes -AUDIO_ENABLE = no -MUSIC_ENABLE = no DYNAMIC_MACRO_ENABLE = no COMBO_ENABLE = no @@ -13,4 +8,4 @@ KEY_OVERRIDE_ENABLE = no HAPTIC_ENABLE = no #PER KEY RGB -RGB_MATRIX_ENABLE = no +RGB_MATRIX_ENABLE = no \ No newline at end of file diff --git a/keyboards/klor/keymaps/default/geist/config.h b/keyboards/klor/keymaps/geist/config.h similarity index 100% rename from keyboards/klor/keymaps/default/geist/config.h rename to keyboards/klor/keymaps/geist/config.h diff --git a/keyboards/klor/keymaps/default/geist/keymap.c b/keyboards/klor/keymaps/geist/keymap.c similarity index 100% rename from keyboards/klor/keymaps/default/geist/keymap.c rename to keyboards/klor/keymaps/geist/keymap.c diff --git a/keyboards/klor/keymaps/default/geist/rules.mk b/keyboards/klor/keymaps/geist/rules.mk similarity index 100% rename from keyboards/klor/keymaps/default/geist/rules.mk rename to keyboards/klor/keymaps/geist/rules.mk diff --git a/keyboards/klor/klor.c b/keyboards/klor/klor.c index e374b1bc..ebfc7652 100644 --- a/keyboards/klor/klor.c +++ b/keyboards/klor/klor.c @@ -17,6 +17,81 @@ #include "klor.h" +#define LAYOUT_polydactyl( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ + L31, L32, L33, L34, R31, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, L34, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, R31, R30 }, \ + } + + +#define LAYOUT_konrad( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ + L31, L32, L33, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, ___, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, ___, R30 }, \ + } + + +#define LAYOUT_yubitsume( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ + L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ + L31, L32, L33, L34, R31, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { ___, L11, L12, L13, L14, L15 }, \ + { ___, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, L34, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { ___, R14, R13, R12, R11, R10 }, \ + { ___, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, R31, R30 }, \ + } + + +#define LAYOUT_saegewerk( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ + L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ + L31, L32, L33, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { ___, L11, L12, L13, L14, L15 }, \ + { ___, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, ___, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { ___, R14, R13, R12, R11, R10 }, \ + { ___, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, ___, R30 }, \ + } + + +#define LAYOUT LAYOUT_polydactyl + + oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return OLED_ROTATION_180; diff --git a/keyboards/klor/klor.h b/keyboards/klor/klor.h index 7d0934cd..f087d80d 100644 --- a/keyboards/klor/klor.h +++ b/keyboards/klor/klor.h @@ -28,78 +28,4 @@ */ // readability -#define ___ KC_NO - -#define LAYOUT_polydactyl( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ - L31, L32, L33, L34, R31, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { L10, L11, L12, L13, L14, L15 }, \ - { L20, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, L34, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { R15, R14, R13, R12, R11, R10 }, \ - { R25, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, R31, R30 }, \ - } - - -#define LAYOUT_konrad( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ - L31, L32, L33, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { L10, L11, L12, L13, L14, L15 }, \ - { L20, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, ___, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { R15, R14, R13, R12, R11, R10 }, \ - { R25, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, ___, R30 }, \ - } - - -#define LAYOUT_yubitsume( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ - L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ - L31, L32, L33, L34, R31, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { ___, L11, L12, L13, L14, L15 }, \ - { ___, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, L34, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { ___, R14, R13, R12, R11, R10 }, \ - { ___, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, R31, R30 }, \ - } - - -#define LAYOUT_saegewerk( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ - L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ - L31, L32, L33, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { ___, L11, L12, L13, L14, L15 }, \ - { ___, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, ___, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { ___, R14, R13, R12, R11, R10 }, \ - { ___, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, ___, R30 }, \ - } - - -#define LAYOUT LAYOUT_polydactyl \ No newline at end of file +#define ___ KC_NO \ No newline at end of file diff --git a/keyboards/klor/rules.mk b/keyboards/klor/rules.mk index b71d7dde..75752de2 100644 --- a/keyboards/klor/rules.mk +++ b/keyboards/klor/rules.mk @@ -5,13 +5,15 @@ # SWAP_HANDS_ENABLE = yes +OLED_ENABLE = yes + # HAPTIC FEEDBACK HAPTIC_DRIVER = drv2605l # PER KEY RGB BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE) +RGB_MATRIX_ENABLE = no # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE) # SPACE SAVING EXTRAKEY_ENABLE = no From b12f69a7aee35729ff68bd5b7f28ee9fe9009802 Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 13 May 2024 23:11:36 -0500 Subject: [PATCH 04/34] Added layout matrix so it will compile - fixed other bugs - Spruced up the info.json after using the qmk converter --- keyboards/klor/2040/config.h | 1 - keyboards/klor/2040/rules.mk | 1 + keyboards/klor/config.h | 2 +- keyboards/klor/info.json | 265 ++++++++++++++++++++++-- keyboards/klor/keymaps/default/config.h | 2 +- keyboards/klor/keymaps/default/rules.mk | 5 +- keyboards/klor/klor.c | 4 +- keyboards/klor/rules.mk | 30 +-- 8 files changed, 266 insertions(+), 44 deletions(-) diff --git a/keyboards/klor/2040/config.h b/keyboards/klor/2040/config.h index c3c566e1..14741421 100644 --- a/keyboards/klor/2040/config.h +++ b/keyboards/klor/2040/config.h @@ -3,7 +3,6 @@ // here you find only RP2040 specific configurations #pragma once -#include "config_common.h" // ┌─────────────────────────────────────────────────┐ // │ a u d i o │ diff --git a/keyboards/klor/2040/rules.mk b/keyboards/klor/2040/rules.mk index b8e75935..ad72f7ca 100644 --- a/keyboards/klor/2040/rules.mk +++ b/keyboards/klor/2040/rules.mk @@ -1,5 +1,6 @@ # PIO serial/WS2812 drivers must be used on RP2040 SERIAL_DRIVER = vendor +WS2812_DRIVER = vendor # CONVERTER - if you use a listed MCU comment the first line and uncomment the appropiate line CONVERT_TO = promicro_rp2040 diff --git a/keyboards/klor/config.h b/keyboards/klor/config.h index 4f826db9..d67cf801 100644 --- a/keyboards/klor/config.h +++ b/keyboards/klor/config.h @@ -16,7 +16,6 @@ along with this program. If not, see . */ #pragma once -#include "config_common.h" // Most configuration will be found in info.json @@ -33,6 +32,7 @@ along with this program. If not, see . // │ a u d i o │ // └─────────────────────────────────────────────────┘ +#define AUDIO_PIN B5 #define AUDIO_DAC_SAMPLE_MAX 4095U #define AUDIO_VOICE_DEFAULT butts_fader diff --git a/keyboards/klor/info.json b/keyboards/klor/info.json index f1f4c7ff..24e9b17d 100644 --- a/keyboards/klor/info.json +++ b/keyboards/klor/info.json @@ -8,27 +8,46 @@ "device_version": "1.3.0" }, "processor": "atmega32u4", - "bootloader": "caterina", + "bootloader": "atmel-dfu", "matrix_pins": { "cols": [ "F6", "F7", "B1", "B3", "B2", "B6" ], "rows": [ "C6", "D7", "E6", "B4" ] }, "diode_direction": "COL2ROW", "build": { - "lto": true + "lto": false }, + "features": { + "audio": false, + "backlight": false, + "command": false, + "console": false, + "encoder": true, + "extrakey": false, + "grave_esc": false, + "magic": false, + "mousekey": false, + "music": false, + "oled": true, + "rgb_matrix": false, + "rgblight": false, + "space_cadet": false, + "swap_hands": true + }, + "mouse_key": { + "enabled": false + }, "encoder": { "rotary": [ { - "pin_a": "F4", - "pin_b": "F5", + "pin_a": "F5", + "pin_b": "F4", "resolution": 2 } ] }, "split": { "enabled": true, - "soft_serial_pin": "D2", "encoder": { "right": { "rotary": [ @@ -40,7 +59,9 @@ ] } }, + "soft_serial_pin": "D2", "transport": { + "protocol": "serial", "sync": { "matrix_state": true, "oled": true, @@ -49,7 +70,6 @@ } }, "rgblight": { - "driver": "ws2812", "led_count": 42, "split_count": [21, 21] }, @@ -61,35 +81,240 @@ "sleep": true, "default": { "hue": 35 - } + }, + "layout": [ + {"matrix": [3, 4], "x": 102, "y": 63, "flags": 1}, + {"matrix": [3, 3], "x": 89, "y": 54, "flags": 1}, + {"matrix": [3, 2], "x": 74, "y": 49, "flags": 1}, + {"matrix": [2, 5], "x": 75, "y": 34, "flags": 4}, + {"matrix": [1, 5], "x": 75, "y": 21, "flags": 4}, + {"matrix": [0, 5], "x": 75, "y": 8, "flags": 4}, + {"matrix": [0, 4], "x": 60, "y": 6, "flags": 4}, + {"matrix": [1, 4], "x": 60, "y": 19, "flags": 4}, + {"matrix": [2, 4], "x": 60, "y": 32, "flags": 4}, + {"matrix": [3, 1], "x": 58, "y": 48, "flags": 1}, + {"matrix": [2, 3], "x": 46, "y": 25, "flags": 4}, + {"matrix": [1, 3], "x": 46, "y": 12, "flags": 4}, + {"matrix": [0, 3], "x": 46, "y": 0, "flags": 4}, + {"matrix": [0, 2], "x": 29, "y": 7, "flags": 4}, + {"matrix": [1, 2], "x": 30, "y": 20, "flags": 4}, + {"matrix": [2, 2], "x": 31, "y": 33, "flags": 4}, + {"matrix": [2, 1], "x": 17, "y": 42, "flags": 4}, + {"matrix": [1, 1], "x": 15, "y": 30, "flags": 4}, + {"matrix": [0, 1], "x": 13, "y": 17, "flags": 4}, + {"matrix": [1, 0], "x": 0, "y": 28, "flags": 1}, + {"matrix": [2, 0], "x": 3, "y": 41, "flags": 1}, + {"matrix": [7, 4], "x": 122, "y": 63, "flags": 1}, + {"matrix": [7, 3], "x": 135, "y": 54, "flags": 1}, + {"matrix": [7, 2], "x": 150, "y": 49, "flags": 1}, + {"matrix": [6, 5], "x": 149, "y": 34, "flags": 4}, + {"matrix": [5, 5], "x": 149, "y": 21, "flags": 4}, + {"matrix": [4, 5], "x": 149, "y": 8, "flags": 4}, + {"matrix": [4, 4], "x": 163, "y": 6, "flags": 4}, + {"matrix": [5, 4], "x": 163, "y": 19, "flags": 4}, + {"matrix": [6, 4], "x": 163, "y": 32, "flags": 4}, + {"matrix": [7, 1], "x": 166, "y": 48, "flags": 1}, + {"matrix": [6, 3], "x": 178, "y": 25, "flags": 4}, + {"matrix": [5, 3], "x": 178, "y": 12, "flags": 4}, + {"matrix": [4, 3], "x": 178, "y": 0, "flags": 4}, + {"matrix": [4, 2], "x": 195, "y": 7, "flags": 4}, + {"matrix": [5, 2], "x": 194, "y": 20, "flags": 4}, + {"matrix": [6, 2], "x": 193, "y": 33, "flags": 4}, + {"matrix": [4, 1], "x": 206, "y": 42, "flags": 4}, + {"matrix": [5, 1], "x": 209, "y": 30, "flags": 4}, + {"matrix": [6, 1], "x": 211, "y": 17, "flags": 4}, + {"matrix": [5, 0], "x": 224, "y": 28, "flags": 1}, + {"matrix": [6, 0], "x": 221, "y": 41, "flags": 1} + ] }, "ws2812": { - "pin": "D3", - "driver": "vendor" + "pin": "D3" }, "audio": { - "pins": [ "B5" ], "voices": true }, + "layout_aliases": { + "LAYOUT": "LAYOUT_polydactyl" + }, "layouts": { + "LAYOUT_konrad": { + "layout": [ + {"label": "L01", "matrix": [0, 1], "x": 3, "y": 0.25}, + {"label": "L02", "matrix": [0, 2], "x": 13, "y": 0.25}, + {"label": "L03", "matrix": [0, 3], "x": 4, "y": 0.75}, + {"label": "L04", "matrix": [0, 4], "x": 12, "y": 0.75}, + {"label": "L05", "matrix": [0, 5], "x": 5, "y": 1}, + {"label": "R00", "matrix": [4, 5], "x": 11, "y": 1}, + {"label": "R01", "matrix": [4, 4], "x": 3, "y": 1.25}, + {"label": "R02", "matrix": [4, 3], "x": 13, "y": 1.25}, + {"label": "R03", "matrix": [4, 2], "x": 4, "y": 1.75}, + {"label": "R04", "matrix": [4, 1], "x": 12, "y": 1.75}, + {"label": "L10", "matrix": [1, 0], "x": 5, "y": 2}, + {"label": "L11", "matrix": [1, 1], "x": 11, "y": 2}, + {"label": "L12", "matrix": [1, 2], "x": 3, "y": 2.25}, + {"label": "L13", "matrix": [1, 3], "x": 13, "y": 2.25}, + {"label": "L14", "matrix": [1, 4], "x": 4, "y": 2.75}, + {"label": "L15", "matrix": [1, 5], "x": 12, "y": 2.75}, + {"label": "R10", "matrix": [5, 5], "x": 5, "y": 3}, + {"label": "R11", "matrix": [5, 4], "x": 11, "y": 3}, + {"label": "R12", "matrix": [5, 3], "x": 6.25, "y": 3.25}, + {"label": "R13", "matrix": [5, 2], "x": 9.75, "y": 3.25}, + {"label": "R14", "matrix": [5, 1], "x": -0.5, "y": -0.4499999999999993}, + {"label": "R15", "matrix": [5, 0], "x": -0.5, "y": -4.149999999999999}, + {"label": "L20", "matrix": [2, 0], "x": -0.5, "y": -6.149999999999999}, + {"label": "L21", "matrix": [2, 1], "x": -0.5, "y": -5.149999999999999}, + {"label": "L22", "matrix": [2, 2], "x": -0.5, "y": -4.149999999999999}, + {"label": "L23", "matrix": [2, 3], "x": -0.25, "y": -5.499999999999999}, + {"label": "L24", "matrix": [2, 4], "x": 0.75, "y": -4.699999999999998}, + {"label": "L25", "matrix": [2, 5], "x": -0.25, "y": -4.499999999999999}, + {"label": "L35", "matrix": [3, 5], "x": 0.75, "y": -3.6999999999999984}, + {"label": "R30", "matrix": [7, 5], "x": -0.25, "y": -3.4999999999999987}, + {"label": "R20", "matrix": [6, 5], "x": -0.5, "y": -7.199999999999998}, + {"label": "R21", "matrix": [6, 4], "x": -0.5, "y": -7.199999999999998}, + {"label": "R22", "matrix": [6, 3], "x": -0.5, "y": -10.899999999999999}, + {"label": "R23", "matrix": [6, 2], "x": -0.5, "y": -10.899999999999999}, + {"label": "R24", "matrix": [6, 1], "x": -1, "y": -12.249999999999998}, + {"label": "R25", "matrix": [6, 0], "x": -2, "y": -11.449999999999998}, + {"label": "L31", "matrix": [3, 1], "x": -1, "y": -11.249999999999998}, + {"label": "L32", "matrix": [3, 2], "x": -2, "y": -10.449999999999998}, + {"label": "L33", "matrix": [3, 3], "x": -1, "y": -10.249999999999998}, + {"label": "R32", "matrix": [7, 3], "x": -0.75, "y": -12.249999999999998}, + {"label": "R33", "matrix": [7, 2], "x": -0.75, "y": -11.249999999999998}, + {"label": "R34", "matrix": [7, 1], "x": -0.75, "y": -10.249999999999998} + ] + }, "LAYOUT_polydactyl": { "layout": [ - {"x":3, "y":0.25}, {"x":13, "y":0.25}, {"x":4, "y":0.75}, {"x":12, "y":0.75}, {"x":5, "y":1}, {"x":11, "y":1}, {"x":3, "y":1.25}, {"x":13, "y":1.25}, {"x":4, "y":1.75}, {"x":12, "y":1.75}, {"x":5, "y":2}, {"x":11, "y":2}, {"x":3, "y":2.25}, {"x":13, "y":2.25}, {"x":4, "y":2.75}, {"x":12, "y":2.75}, {"x":5, "y":3}, {"x":11, "y":3}, {"x":6.25, "y":3.25}, {"x":9.75, "y":3.25}, {"x":-0.5, "y":-0.4500000000000002}, {"x":-0.5, "y":-4.15}, {"x":-0.5, "y":-6.15}, {"x":-0.5, "y":-5.15}, {"x":-0.5, "y":-4.15}, {"x":-0.25, "y":-5.5}, {"x":0.75, "y":-4.7}, {"x":-0.25, "y":-4.500000000000001}, {"x":0.75, "y":-3.7000000000000006}, {"x":-0.25, "y":-3.5000000000000004}, {"x":-0.5, "y":-7.200000000000001}, {"x":-0.5, "y":-7.200000000000001}, {"x":-0.5, "y":-7.200000000000001}, {"x":-0.5, "y":-10.9}, {"x":-0.5, "y":-10.9}, {"x":-0.5, "y":-10.9}, {"x":-1.0, "y":-12.250000000000002}, {"x":-2, "y":-11.450000000000001}, {"x":-1.0, "y":-11.250000000000002}, {"x":-2, "y":-10.450000000000001}, {"x":-1.0, "y":-10.250000000000002}, {"x":-0.75, "y":-12.250000000000002}, {"x":-0.75, "y":-11.250000000000002}, {"x":-0.75, "y":-10.250000000000002} + {"label": "L01", "matrix": [0, 1], "x": 3, "y": 0.25}, + {"label": "L02", "matrix": [0, 2], "x": 13, "y": 0.25}, + {"label": "L03", "matrix": [0, 3], "x": 4, "y": 0.75}, + {"label": "L04", "matrix": [0, 4], "x": 12, "y": 0.75}, + {"label": "L05", "matrix": [0, 5], "x": 5, "y": 1}, + {"label": "R00", "matrix": [4, 5], "x": 11, "y": 1}, + {"label": "R01", "matrix": [4, 4], "x": 3, "y": 1.25}, + {"label": "R02", "matrix": [4, 3], "x": 13, "y": 1.25}, + {"label": "R03", "matrix": [4, 2], "x": 4, "y": 1.75}, + {"label": "R04", "matrix": [4, 1], "x": 12, "y": 1.75}, + {"label": "L10", "matrix": [1, 0], "x": 5, "y": 2}, + {"label": "L11", "matrix": [1, 1], "x": 11, "y": 2}, + {"label": "L12", "matrix": [1, 2], "x": 3, "y": 2.25}, + {"label": "L13", "matrix": [1, 3], "x": 13, "y": 2.25}, + {"label": "L14", "matrix": [1, 4], "x": 4, "y": 2.75}, + {"label": "L15", "matrix": [1, 5], "x": 12, "y": 2.75}, + {"label": "R10", "matrix": [5, 5], "x": 5, "y": 3}, + {"label": "R11", "matrix": [5, 4], "x": 11, "y": 3}, + {"label": "R12", "matrix": [5, 3], "x": 6.25, "y": 3.25}, + {"label": "R13", "matrix": [5, 2], "x": 9.75, "y": 3.25}, + {"label": "R14", "matrix": [5, 1], "x": -0.5, "y": -0.4500000000000002}, + {"label": "R15", "matrix": [5, 0], "x": -0.5, "y": -4.15}, + {"label": "L20", "matrix": [2, 0], "x": -0.5, "y": -6.15}, + {"label": "L21", "matrix": [2, 1], "x": -0.5, "y": -5.15}, + {"label": "L22", "matrix": [2, 2], "x": -0.5, "y": -4.15}, + {"label": "L23", "matrix": [2, 3], "x": -0.25, "y": -5.5}, + {"label": "L24", "matrix": [2, 4], "x": 0.75, "y": -4.7}, + {"label": "L25", "matrix": [2, 5], "x": -0.25, "y": -4.500000000000001}, + {"label": "L35", "matrix": [3, 5], "x": 0.75, "y": -3.7000000000000006}, + {"label": "R30", "matrix": [7, 5], "x": -0.25, "y": -3.5000000000000004}, + {"label": "R20", "matrix": [6, 5], "x": -0.5, "y": -7.200000000000001}, + {"label": "R21", "matrix": [6, 4], "x": -0.5, "y": -7.200000000000001}, + {"label": "R22", "matrix": [6, 3], "x": -0.5, "y": -7.200000000000001}, + {"label": "R23", "matrix": [6, 2], "x": -0.5, "y": -10.9}, + {"label": "R24", "matrix": [6, 1], "x": -0.5, "y": -10.9}, + {"label": "R25", "matrix": [6, 0], "x": -0.5, "y": -10.9}, + {"label": "L31", "matrix": [3, 1], "x": -1, "y": -12.250000000000002}, + {"label": "L32", "matrix": [3, 2], "x": -2, "y": -11.450000000000001}, + {"label": "L33", "matrix": [3, 3], "x": -1, "y": -11.250000000000002}, + {"label": "L34", "matrix": [3, 4], "x": -2, "y": -10.450000000000001}, + {"label": "R31", "matrix": [7, 4], "x": -1, "y": -10.250000000000002}, + {"label": "R32", "matrix": [7, 3], "x": -0.75, "y": -12.250000000000002}, + {"label": "R33", "matrix": [7, 2], "x": -0.75, "y": -11.250000000000002}, + {"label": "R34", "matrix": [7, 1], "x": -0.75, "y": -10.250000000000002} ] }, - "LAYOUT_konrad": { + "LAYOUT_saegewerk": { "layout": [ - {"x":3, "y":0.25}, {"x":13, "y":0.25}, {"x":4, "y":0.75}, {"x":12, "y":0.75}, {"x":5, "y":1}, {"x":11, "y":1}, {"x":3, "y":1.25}, {"x":13, "y":1.25}, {"x":4, "y":1.75}, {"x":12, "y":1.75}, {"x":5, "y":2}, {"x":11, "y":2}, {"x":3, "y":2.25}, {"x":13, "y":2.25}, {"x":4, "y":2.75}, {"x":12, "y":2.75}, {"x":5, "y":3}, {"x":11, "y":3}, {"x":6.25, "y":3.25}, {"x":9.75, "y":3.25}, {"x":-0.5, "y":-0.4499999999999993}, {"x":-0.5, "y":-4.149999999999999}, {"x":-0.5, "y":-6.149999999999999}, {"x":-0.5, "y":-5.149999999999999}, {"x":-0.5, "y":-4.149999999999999}, {"x":-0.25, "y":-5.499999999999999}, {"x":0.75, "y":-4.699999999999998}, {"x":-0.25, "y":-4.499999999999999}, {"x":0.75, "y":-3.6999999999999984}, {"x":-0.25, "y":-3.4999999999999987}, {"x":-0.5, "y":-7.199999999999998}, {"x":-0.5, "y":-7.199999999999998}, {"x":-0.5, "y":-10.899999999999999}, {"x":-0.5, "y":-10.899999999999999}, {"x":-1.0, "y":-12.249999999999998}, {"x":-2, "y":-11.449999999999998}, {"x":-1.0, "y":-11.249999999999998}, {"x":-2, "y":-10.449999999999998}, {"x":-1.0, "y":-10.249999999999998}, {"x":-0.75, "y":-12.249999999999998}, {"x":-0.75, "y":-11.249999999999998}, {"x":-0.75, "y":-10.249999999999998} + {"label": "L01", "matrix": [0, 1], "x": 2.25, "y": 0.25}, + {"label": "L02", "matrix": [0, 2], "x": 12.25, "y": 0.25}, + {"label": "L03", "matrix": [0, 3], "x": 3.25, "y": 0.75}, + {"label": "L04", "matrix": [0, 4], "x": 11.25, "y": 0.75}, + {"label": "L05", "matrix": [0, 5], "x": 4.25, "y": 1}, + {"label": "R00", "matrix": [4, 5], "x": 10.25, "y": 1}, + {"label": "R01", "matrix": [4, 4], "x": 2.25, "y": 1.25}, + {"label": "R02", "matrix": [4, 3], "x": 12.25, "y": 1.25}, + {"label": "R03", "matrix": [4, 2], "x": 3.25, "y": 1.75}, + {"label": "R04", "matrix": [4, 1], "x": 11.25, "y": 1.75}, + {"label": "L11", "matrix": [1, 1], "x": 4.25, "y": 2}, + {"label": "L12", "matrix": [1, 2], "x": 10.25, "y": 2}, + {"label": "L13", "matrix": [1, 3], "x": 2.25, "y": 2.25}, + {"label": "L14", "matrix": [1, 4], "x": 12.25, "y": 2.25}, + {"label": "L15", "matrix": [1, 5], "x": 3.25, "y": 2.75}, + {"label": "R10", "matrix": [5, 5], "x": 11.25, "y": 2.75}, + {"label": "R11", "matrix": [5, 4], "x": 4.25, "y": 3}, + {"label": "R12", "matrix": [5, 3], "x": 10.25, "y": 3}, + {"label": "R13", "matrix": [5, 2], "x": 5.5, "y": 3.25}, + {"label": "R14", "matrix": [5, 1], "x": 9, "y": 3.25}, + {"label": "L21", "matrix": [2, 1], "x": -0.5, "y": -0.4499999999999993}, + {"label": "L22", "matrix": [2, 2], "x": -0.5, "y": -4.149999999999999}, + {"label": "L23", "matrix": [2, 3], "x": -1.25, "y": -6.149999999999999}, + {"label": "L24", "matrix": [2, 4], "x": -1.25, "y": -5.149999999999999}, + {"label": "L25", "matrix": [2, 5], "x": -1.25, "y": -4.149999999999999}, + {"label": "L35", "matrix": [3, 5], "x": -1, "y": -5.499999999999999}, + {"label": "R30", "matrix": [7, 5], "x": -1, "y": -4.499999999999999}, + {"label": "R20", "matrix": [6, 5], "x": -1, "y": -3.4999999999999987}, + {"label": "R21", "matrix": [6, 4], "x": -0.5, "y": -7.199999999999998}, + {"label": "R22", "matrix": [6, 3], "x": -0.5, "y": -7.199999999999998}, + {"label": "R23", "matrix": [6, 2], "x": -0.5, "y": -10.899999999999999}, + {"label": "R24", "matrix": [6, 1], "x": -0.5, "y": -10.899999999999999}, + {"label": "L31", "matrix": [3, 1], "x": -1.75, "y": -12.249999999999998}, + {"label": "L32", "matrix": [3, 2], "x": -1.75, "y": -11.249999999999998}, + {"label": "L33", "matrix": [3, 3], "x": -1.75, "y": -10.249999999999998}, + {"label": "R32", "matrix": [7, 3], "x": -1.5, "y": -12.249999999999998}, + {"label": "R33", "matrix": [7, 2], "x": -1.5, "y": -11.249999999999998}, + {"label": "R34", "matrix": [7, 1], "x": -1.5, "y": -10.249999999999998} ] }, - "LAYOUT_yubitsume": { + "LAYOUT_yubitsume": { "layout": [ - {"x":2.25, "y":0.25}, {"x":12.25, "y":0.25}, {"x":3.25, "y":0.75}, {"x":11.25, "y":0.75}, {"x":4.25, "y":1}, {"x":10.25, "y":1}, {"x":2.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":3.25, "y":1.75}, {"x":11.25, "y":1.75}, {"x":4.25, "y":2}, {"x":10.25, "y":2}, {"x":2.25, "y":2.25}, {"x":12.25, "y":2.25}, {"x":3.25, "y":2.75}, {"x":11.25, "y":2.75}, {"x":4.25, "y":3}, {"x":10.25, "y":3}, {"x":5.5, "y":3.25}, {"x":9, "y":3.25}, {"x":-0.5, "y":-0.4499999999999993}, {"x":-0.5, "y":-4.149999999999999}, {"x":-1.25, "y":-6.149999999999999}, {"x":-1.25, "y":-5.149999999999999}, {"x":-1.25, "y":-4.149999999999999}, {"x":-1.0, "y":-5.499999999999999}, {"x":-1.0, "y":-4.499999999999999}, {"x":-1.0, "y":-3.4999999999999987}, {"x":-0.5, "y":-7.199999999999998}, {"x":-0.5, "y":-7.199999999999998}, {"x":-0.5, "y":-7.199999999999999}, {"x":-0.5, "y":-10.899999999999999}, {"x":-0.5, "y":-10.899999999999999}, {"x":-0.5, "y":-10.899999999999999}, {"x":-1.75, "y":-12.25}, {"x":-1.75, "y":-11.25}, {"x":-1.75, "y":-10.25}, {"x":-1.5, "y":-12.25}, {"x":-1.5, "y":-11.25}, {"x":-1.5, "y":-10.25} - ] - }, - "LAYOUT_saegewerk": { - "layout": [ - {"x":2.25, "y":0.25}, {"x":12.25, "y":0.25}, {"x":3.25, "y":0.75}, {"x":11.25, "y":0.75}, {"x":4.25, "y":1}, {"x":10.25, "y":1}, {"x":2.25, "y":1.25}, {"x":12.25, "y":1.25}, {"x":3.25, "y":1.75}, {"x":11.25, "y":1.75}, {"x":4.25, "y":2}, {"x":10.25, "y":2}, {"x":2.25, "y":2.25}, {"x":12.25, "y":2.25}, {"x":3.25, "y":2.75}, {"x":11.25, "y":2.75}, {"x":4.25, "y":3}, {"x":10.25, "y":3}, {"x":5.5, "y":3.25}, {"x":9, "y":3.25}, {"x":-0.5, "y":-0.4499999999999993}, {"x":-0.5, "y":-4.149999999999999}, {"x":-1.25, "y":-6.149999999999999}, {"x":-1.25, "y":-5.149999999999999}, {"x":-1.25, "y":-4.149999999999999}, {"x":-1.0, "y":-5.499999999999999}, {"x":-1.0, "y":-4.499999999999999}, {"x":-1.0, "y":-3.4999999999999987}, {"x":-0.5, "y":-7.199999999999998}, {"x":-0.5, "y":-7.199999999999998}, {"x":-0.5, "y":-10.899999999999999}, {"x":-0.5, "y":-10.899999999999999}, {"x":-1.75, "y":-12.249999999999998}, {"x":-1.75, "y":-11.249999999999998}, {"x":-1.75, "y":-10.249999999999998}, {"x":-1.5, "y":-12.249999999999998}, {"x":-1.5, "y":-11.249999999999998}, {"x":-1.5, "y":-10.249999999999998} + {"label": "L01", "matrix": [0, 1], "x": 2.25, "y": 0.25}, + {"label": "L02", "matrix": [0, 2], "x": 12.25, "y": 0.25}, + {"label": "L03", "matrix": [0, 3], "x": 3.25, "y": 0.75}, + {"label": "L04", "matrix": [0, 4], "x": 11.25, "y": 0.75}, + {"label": "L05", "matrix": [0, 5], "x": 4.25, "y": 1}, + {"label": "R00", "matrix": [4, 5], "x": 10.25, "y": 1}, + {"label": "R01", "matrix": [4, 4], "x": 2.25, "y": 1.25}, + {"label": "R02", "matrix": [4, 3], "x": 12.25, "y": 1.25}, + {"label": "R03", "matrix": [4, 2], "x": 3.25, "y": 1.75}, + {"label": "R04", "matrix": [4, 1], "x": 11.25, "y": 1.75}, + {"label": "L11", "matrix": [1, 1], "x": 4.25, "y": 2}, + {"label": "L12", "matrix": [1, 2], "x": 10.25, "y": 2}, + {"label": "L13", "matrix": [1, 3], "x": 2.25, "y": 2.25}, + {"label": "L14", "matrix": [1, 4], "x": 12.25, "y": 2.25}, + {"label": "L15", "matrix": [1, 5], "x": 3.25, "y": 2.75}, + {"label": "R10", "matrix": [5, 5], "x": 11.25, "y": 2.75}, + {"label": "R11", "matrix": [5, 4], "x": 4.25, "y": 3}, + {"label": "R12", "matrix": [5, 3], "x": 10.25, "y": 3}, + {"label": "R13", "matrix": [5, 2], "x": 5.5, "y": 3.25}, + {"label": "R14", "matrix": [5, 1], "x": 9, "y": 3.25}, + {"label": "L21", "matrix": [2, 1], "x": -0.5, "y": -0.4499999999999993}, + {"label": "L22", "matrix": [2, 2], "x": -0.5, "y": -4.149999999999999}, + {"label": "L23", "matrix": [2, 3], "x": -1.25, "y": -6.149999999999999}, + {"label": "L24", "matrix": [2, 4], "x": -1.25, "y": -5.149999999999999}, + {"label": "L25", "matrix": [2, 5], "x": -1.25, "y": -4.149999999999999}, + {"label": "L35", "matrix": [3, 5], "x": -1, "y": -5.499999999999999}, + {"label": "R30", "matrix": [7, 5], "x": -1, "y": -4.499999999999999}, + {"label": "R20", "matrix": [6, 5], "x": -1, "y": -3.4999999999999987}, + {"label": "R21", "matrix": [6, 4], "x": -0.5, "y": -7.199999999999998}, + {"label": "R22", "matrix": [6, 3], "x": -0.5, "y": -7.199999999999998}, + {"label": "R23", "matrix": [6, 2], "x": -0.5, "y": -7.199999999999999}, + {"label": "R24", "matrix": [6, 1], "x": -0.5, "y": -10.899999999999999}, + {"label": "L31", "matrix": [3, 1], "x": -0.5, "y": -10.899999999999999}, + {"label": "L32", "matrix": [3, 2], "x": -0.5, "y": -10.899999999999999}, + {"label": "L33", "matrix": [3, 3], "x": -1.75, "y": -12.25}, + {"label": "L34", "matrix": [3, 4], "x": -1.75, "y": -11.25}, + {"label": "R31", "matrix": [7, 4], "x": -1.75, "y": -10.25}, + {"label": "R32", "matrix": [7, 3], "x": -1.5, "y": -12.25}, + {"label": "R33", "matrix": [7, 2], "x": -1.5, "y": -11.25}, + {"label": "R34", "matrix": [7, 1], "x": -1.5, "y": -10.25} ] } } diff --git a/keyboards/klor/keymaps/default/config.h b/keyboards/klor/keymaps/default/config.h index 95ce1828..a9de238b 100644 --- a/keyboards/klor/keymaps/default/config.h +++ b/keyboards/klor/keymaps/default/config.h @@ -23,7 +23,7 @@ for more options. //#define NO_ACTION_TAPPING //#define NO_MUSIC_MODE -#define COMBO_COUNT 1 +//#define COMBO_COUNT 1 // RGB matrix support diff --git a/keyboards/klor/keymaps/default/rules.mk b/keyboards/klor/keymaps/default/rules.mk index b838d215..e0f81bf4 100644 --- a/keyboards/klor/keymaps/default/rules.mk +++ b/keyboards/klor/keymaps/default/rules.mk @@ -5,7 +5,4 @@ COMBO_ENABLE = no KEY_OVERRIDE_ENABLE = no #HAPTIC FEEBACK -HAPTIC_ENABLE = no - -#PER KEY RGB -RGB_MATRIX_ENABLE = no \ No newline at end of file +HAPTIC_ENABLE = no \ No newline at end of file diff --git a/keyboards/klor/klor.c b/keyboards/klor/klor.c index ebfc7652..def4d16d 100644 --- a/keyboards/klor/klor.c +++ b/keyboards/klor/klor.c @@ -172,7 +172,7 @@ const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = // POLYDACTYL / YUBITSUME // use this matrix if you use the polydactyl or yubitsume layout ────────────────────────────────────┐ - +/* led_config_t g_led_config = { { //COL 00 01 02 03 04 05 ROW { NO_LED, 18, 13, 12, 6, 5 },//00 @@ -209,7 +209,7 @@ led_config_t g_led_config = { { 4, 4, 4, 4, 4, 1, 1 } }; // ────────────────────────────────────────────────────────────────────────────────────────────────────┘ - +*/ /* // KONRAD diff --git a/keyboards/klor/rules.mk b/keyboards/klor/rules.mk index 75752de2..22ee7738 100644 --- a/keyboards/klor/rules.mk +++ b/keyboards/klor/rules.mk @@ -3,26 +3,26 @@ # Build Options # change yes to no to disable # -SWAP_HANDS_ENABLE = yes +#SWAP_HANDS_ENABLE = yes -OLED_ENABLE = yes +#OLED_ENABLE = yes # HAPTIC FEEDBACK HAPTIC_DRIVER = drv2605l # PER KEY RGB -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -RGB_MATRIX_ENABLE = no # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE) +#BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +#RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +#RGB_MATRIX_ENABLE = no # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE) # SPACE SAVING -EXTRAKEY_ENABLE = no -AUDIO_ENABLE = no -MUSIC_ENABLE = no -LTO_ENABLE = no -CONSOLE_ENABLE = no -COMMAND_ENABLE = no -MOUSEKEY_ENABLE = no -SPACE_CADET_ENABLE = no -GRAVE_ESC_ENABLE = no -MAGIC_ENABLE = no +# EXTRAKEY_ENABLE = no +# AUDIO_ENABLE = no +# MUSIC_ENABLE = no +# LTO_ENABLE = no +# CONSOLE_ENABLE = no +# COMMAND_ENABLE = no +# MOUSEKEY_ENABLE = no +# SPACE_CADET_ENABLE = no +# GRAVE_ESC_ENABLE = no +# MAGIC_ENABLE = no From 7b38b6e842efa5a0ba388d7015b8d85e629d4419 Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 13 May 2024 23:20:28 -0500 Subject: [PATCH 05/34] fixing invalid keycodes in default keymap --- keyboards/klor/keymaps/default/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/klor/keymaps/default/keymap.c b/keyboards/klor/keymaps/default/keymap.c index 4faf89c4..bdb3b5df 100644 --- a/keyboards/klor/keymaps/default/keymap.c +++ b/keyboards/klor/keymaps/default/keymap.c @@ -205,9 +205,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_ADJUST] = LAYOUT_polydactyl( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ - AU_TOG, HPT_TOG, RGB_HUI, RGB_MOD, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F14, + AU_TOGG, HF_TOGG, RGB_HUI, RGB_MOD, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F14, QK_BOOT, DB_TOGG, QWERTY, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F12, KC_F13, - MAKE_H, OS_SWAP, COLEMAK, RGB_VAI, XXXXXXX, XXXXXXX, KC_MUTE, KC_MPLY, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, KC_F11, + QK_MAKE, OS_SWAP, COLEMAK, RGB_VAI, XXXXXXX, XXXXXXX, KC_MUTE, KC_MPLY, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, KC_F11, _______, _______, _______, _______, _______, _______, _______, _______ ) From 5fcac2aa541c51d64ad5712c299324d3f6aab289 Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 13 May 2024 23:30:55 -0500 Subject: [PATCH 06/34] Allowing warnings in RP2040 rules.mk --- keyboards/klor/2040/rules.mk | 3 +++ 1 file changed, 3 insertions(+) diff --git a/keyboards/klor/2040/rules.mk b/keyboards/klor/2040/rules.mk index ad72f7ca..0cc4589a 100644 --- a/keyboards/klor/2040/rules.mk +++ b/keyboards/klor/2040/rules.mk @@ -1,3 +1,6 @@ +# Ignore some warnings during the build, likely to be fixed before RP2040 PR is merged +ALLOW_WARNINGS = yes + # PIO serial/WS2812 drivers must be used on RP2040 SERIAL_DRIVER = vendor WS2812_DRIVER = vendor From ce371b48d93fa6c4bd40130095bca81d1f1bae5b Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 13 May 2024 23:56:25 -0500 Subject: [PATCH 07/34] adding Saegewerk default keymap - enabled haptic feedback on this --- keyboards/klor/keymaps/saegewerk/config.h | 82 +++ keyboards/klor/keymaps/saegewerk/keymap.c | 771 ++++++++++++++++++++++ keyboards/klor/keymaps/saegewerk/rules.mk | 8 + qmk.json | 3 +- 4 files changed, 863 insertions(+), 1 deletion(-) create mode 100644 keyboards/klor/keymaps/saegewerk/config.h create mode 100644 keyboards/klor/keymaps/saegewerk/keymap.c create mode 100644 keyboards/klor/keymaps/saegewerk/rules.mk diff --git a/keyboards/klor/keymaps/saegewerk/config.h b/keyboards/klor/keymaps/saegewerk/config.h new file mode 100644 index 00000000..a9de238b --- /dev/null +++ b/keyboards/klor/keymaps/saegewerk/config.h @@ -0,0 +1,82 @@ +#pragma once + +/* The way how "handedness" is decided (which half is which), +see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness +for more options. +*/ + +#define MASTER_LEFT +// #define MASTER_RIGHT + +//#define TAPPING_TERM 170 +#define TAPPING_TERM 170 + + +// Auto Shift +#define NO_AUTO_SHIFT_ALPHA +#define AUTO_SHIFT_TIMEOUT TAPPING_TERM +#define AUTO_SHIFT_NO_SETUP + +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE +#define NO_ACTION_ONESHOT +//#define NO_ACTION_TAPPING +//#define NO_MUSIC_MODE + +//#define COMBO_COUNT 1 + + +// RGB matrix support +#ifdef RGB_MATRIX_ENABLE +# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR +// RGB Matrix Animation modes. Explicitly enabled +// For full list of effects, see: +// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effect + +//# define ENABLE_RGB_MATRIX_ALPHAS_MODS +# define ENABLE_RGB_MATRIX_SOLID_COLOR +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE +# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN +# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_BREATHING +# define ENABLE_RGB_MATRIX_BAND_SAT +# define ENABLE_RGB_MATRIX_BAND_VAL +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT +# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT +# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL +# define ENABLE_RGB_MATRIX_CYCLE_ALL +# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT +# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN +# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON +# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN +//# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL +# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL +# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL +# define ENABLE_RGB_MATRIX_DUAL_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_BEACON +# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS +//# define ENABLE_RGB_MATRIX_RAINDROPS +//# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS +# define ENABLE_RGB_MATRIX_HUE_BREATHING +# define ENABLE_RGB_MATRIX_HUE_PENDULUM +# define ENABLE_RGB_MATRIX_HUE_WAVE +//# define ENABLE_RGB_MATRIX_PIXEL_RAIN +//# define ENABLE_RGB_MATRIX_PIXEL_FLOW +# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL +// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined ├─────────────────────────────┐ +# define ENABLE_RGB_MATRIX_TYPING_HEATMAP +//# define ENABLE_RGB_MATRIX_DIGITAL_RAIN +// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined ├────────────┐ +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE +//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE +//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS +//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS +# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS +//# define ENABLE_RGB_MATRIX_SPLASH +# define ENABLE_RGB_MATRIX_MULTISPLASH +//# define ENABLE_RGB_MATRIX_SOLID_SPLASH +# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH +#endif diff --git a/keyboards/klor/keymaps/saegewerk/keymap.c b/keyboards/klor/keymaps/saegewerk/keymap.c new file mode 100644 index 00000000..71d9efc2 --- /dev/null +++ b/keyboards/klor/keymaps/saegewerk/keymap.c @@ -0,0 +1,771 @@ +/* + + █ █ █ ▄▄▄▀▀▀▀▀▀▄▄▄ █▀▀▀▀▀▀▀▀▀▀█ + █ █ █ ▄▀ ▀▄ █ █ + █ █ █ ▄▀ ▀▄ █ █ + █ █ █ █ █ █ █ + █ █ █ █ █ █ █ + █ █ █ █ █ █▄▄▄▄▄▄▄▄▄▄█ + █ █ █ █ █ █ █ █ + █ █ █ █ █ █ █ █ + █ █ █ █ ▀▄ ▄▀ █ █ + ██ █ █ ▀▄ ▄▀ █ █ + █ █ █▄▄▄▄▄▄▄▄ ▀▀▀▄▄▄▄▄▄▀▀▀ █ █ + + ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + D E F A U L T + +*/ +#include QMK_KEYBOARD_H +#include +#include +#include "klor.h" +//#ifdef HAPTIC_ENABLE +//#include "drivers/haptic/DRV2605L.h" +//#endif //HAPTIC ENABLE + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ D E F I N I T I O N S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +// ┌───────────────────────────────────────────────────────────┐ +// │ d e f i n e l a y e r s │ +// └───────────────────────────────────────────────────────────┘ + +enum klor_layers { + /* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */ + _QWERTY, + _COLEMAK, + _LOWER, + _RAISE, + _ADJUST, +}; + +// ┌───────────────────────────────────────────────────────────┐ +// │ d e f i n e k e y c o d e s │ +// └───────────────────────────────────────────────────────────┘ + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + LOWER, + RAISE, + ADJUST, + OS_SWAP, + MAKE_H, +}; + +// ┌───────────────────────────────────────────────────────────┐ +// │ d e f i n e m a c r o n a m e s │ +// └───────────────────────────────────────────────────────────┘ + +// LEFT HAND HOME ROW MODS ├───────────────────────────────────┐ + +#define GUI_A MT(MOD_LGUI, KC_A) +#define ALT_R MT(MOD_LALT, KC_R) +#define CTL_S MT(MOD_LCTL, KC_S) +#define SHT_T MT(MOD_LSFT, KC_T) + +// RIGHT HAND HOME ROW MODS ├───────────────────────────────────┐ + +#define SHT_N MT(MOD_RSFT, KC_N) +#define CTL_E MT(MOD_LCTL, KC_E) +#define ALT_I MT(MOD_LALT, KC_I) +#define GUI_O MT(MOD_LGUI, KC_O) + + +// ┌───────────────────────────────────────────────────────────┐ +// │ d e f i n e s o u n d s │ +// └───────────────────────────────────────────────────────────┘ + +#ifdef AUDIO_ENABLE + #define WINXP_SOUND W__NOTE(_DS6), Q__NOTE(_DS5), H__NOTE(_AS5), H__NOTE(_GS5), H__NOTE(_DS5), H__NOTE(_DS6), H__NOTE(_AS5) + #define MAC_SOUND S__NOTE(_CS5), B__NOTE(_C5) + + float winxp_song[][2] = SONG(WINXP_SOUND); + float mac_song[][2] = SONG(MAC_SOUND); +#endif // AUDIO_ENABLE + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ K E Y M A P S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌───────────────────────────────────────────────────────────┐ + │ q w e r t y │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ Q │ W │ E │ R │ T │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ Y │ U │ I │ O │ P │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ A │ S │ D │ F │ G ├─╯ ╰─┤ H │ J │ K │ L │ ; │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ Z │ X │ C │ V │ B ││ MUTE ││PLY/PSE ││ N │ M │ , │ . │ / │ + └─────────┴─────────┼─────────┼─────────┼─────────┤╰────────╯╰────────╯├─────────┼─────────┼─────────┼─────────┴─────────┘ + │ CTRL │ LOWER │ SPACE │ │ ENTER │ RAISE │ BSPACE │ + └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ + + [_QWERTY] = LAYOUT_saegewerk( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_MPLY, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_LCTL, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC + ), + +/* + ┌───────────────────────────────────────────────────────────┐ + │ c o l e m a k │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ Q │ W │ F │ P │ G │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ J │ L │ U │ Y │ ; │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ A │ R │ S │ T │ D ├─╯ ╰─┤ H │ N │ E │ I │ O │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ Z │ X │ C │ V │ B ││ SHIFT ││PLY/PSE ││ K │ M │ , │ . │ / │ + └─────────┴─────────┼─────────┼─────────┼─────────┤╰────────╯╰────────╯├─────────┼─────────┼─────────┼─────────┴─────────┘ + │ CTRL │ LOWER │ SPACE │ │ ENTER │ RAISE │ BSPCE │ + └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ + + [_COLEMAK] = LAYOUT_saegewerk( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, + GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_MPLY, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_DEL, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC + ), + + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌───────────────────────────────────────────────────────────┐ + │ l o w e r │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ CAPSLCK │ NUMLCK │ ↑ │ = │ { │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ } │ 7 │ 8 │ 9 │ + │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ HOME │ ← │ ↓ │ → │ [ ├─╯ ╰─┤ ] │ 4 │ 5 │ 6 │ - │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ END │ PG↑ │ SAVE │ PG↓ │ ( ││ MUTE ││PLY/PSE ││ ) │ 1 │ 2 │ 3 │ * │ + └─────────┴─────────┼─────────┼─────────┼─────────┤╰────────╯╰────────╯├─────────┼─────────┼─────────┼─────────┴─────────┘ + │ ▼ │ ▼ │ ▼ │ │ ▼ │ ADJUST │ 0 │ + └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ + + [_LOWER] = LAYOUT_saegewerk( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, + KC_END, KC_PGUP, C(KC_S), KC_PGDN, KC_LPRN, KC_MUTE, KC_MPLY, KC_RPRN, KC_P1, KC_P2, KC_P3, KC_PAST, + _______, _______, _______, _______, _______, KC_P0 + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌───────────────────────────────────────────────────────────┐ + │ r a i s e │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ ! │ @ │ # │ $ │ % │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ ^ │ & │ │ ° │ / │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ ├─╯ ╰─┤ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ ESC │ │ ALT │ TAB │ DEL ││ MUTE ││PLY/PSE ││ " │ SHIFT │ CMD/WIN │ │ │ + └─────────┴─────────┼─────────┼─────────┼─────────┤╰────────╯╰────────╯├─────────┼─────────┼─────────┼─────────┴─────────┘ + │ │ ADJUST │ ▼ │ │ ▼ │ ▼ │ ▼ │ + └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ + + [_RAISE] = LAYOUT_saegewerk( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_ESC, XXXXXXX, KC_LALT, KC_TAB, KC_DEL, KC_MUTE, KC_MPLY, KC_QUOT, KC_RSFT, KC_LGUI, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, _______, _______ + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌───────────────────────────────────────────────────────────┐ + │ a d j u s t │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ AUDIO │ HAPTIC │ RGB HUE │ RGB MOD │ RESET │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ F7 │ F8 │ F9 │ F11 │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ DEBUG │ QWERTY │ RGB SAT │ │ MAKE ├─╯ ╰─┤ │ F4 │ F5 │ F6 │ F12 │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ OS SWAP │ COLEMAK │ RGB VAL │ │ ││ MUTE ││PLY/PSE ││ │ F1 │ F2 │ F3 │ F10 │ + └─────────┴─────────┼─────────┼─────────┼─────────┤╰────────╯╰────────╯├─────────┼─────────┼─────────┼─────────┴─────────┘ + │ ▼ │ ▼ │ ▼ │ │ ▼ │ ▼ │ ▼ │ + └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ + + [_ADJUST] = LAYOUT_saegewerk( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + AU_TOGG, HF_TOGG, RGB_HUI, RGB_MOD, QK_BOOT, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F11, + DB_TOGG, QWERTY, RGB_SAI, XXXXXXX, QK_MAKE, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F12, + OS_SWAP, COLEMAK, RGB_VAI, XXXXXXX, XXXXXXX, KC_MUTE, KC_MPLY, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, + _______, _______, _______, _______, _______, _______ + ) + + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌───────────────────────────────────────────────────────────┐ + │ t e m p l a t e p o l y d a c t y l │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ │ │ │ │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ │ │ │ │ │ ├─╯ ╰─┤ │ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ │ ││ ││ ││ │ │ │ │ │ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ │ │ │ ││ │ │ │ │ + └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ + + [_TEMPLATE] = LAYOUT_polydactyl( + //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) + + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌───────────────────────────────────────────────────────────┐ + │ t e m p l a t e k o n r a d │ + └───────────────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ │ │ │ │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ │ │ │ │ │ ├─╯ ╰─┤ │ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ │ ││ ││ ││ │ │ │ │ │ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤╰────────╯╰────────╯├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ │ │ │ │ │ │ │ + └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ + + [_TEMPLATE] = LAYOUT_konrad( + //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ) + + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ t e m p l a t e y u b i t s u m e │ + └─────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ │ │ │ │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ ├─╯ ╰─┤ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ ││ ││ ││ │ │ │ │ │ + └─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘ + │ │ │ │ ││ │ │ │ │ + └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ + + [_TEMPLATE] = LAYOUT_yubitsume( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ) + + + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ t e m p l a t e s a e g e w e r k │ + └─────────────────────────────────────────────────┘ + ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ + │ │ │ │ │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ ├─╯ ╰─┤ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ ││ ││ ││ │ │ │ │ │ + └─────────┴─────────┼─────────┼─────────┼─────────┤╰────────╯╰────────╯├─────────┼─────────┼─────────┼─────────┴─────────┘ + │ │ │ │ │ │ │ │ + └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ + + [_TEMPLATE] = LAYOUT_saegewerk( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ) + + */ +}; + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ H A P T I C F E E D B A C K │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +void keyboard_post_init_user(void) { + // Call the post init code. + #if HAPTIC_ENABLE + haptic_disable(); // disables per key haptic feedback by default + #endif //HAPTIC ENABLE +} + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ O L E D │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +#ifdef OLED_ENABLE + +// ┌───────────────────────────────────────────────────────────┐ +// │ d y n a m i c m a c r o │ +// └───────────────────────────────────────────────────────────┘ + +char layer_state_str[24]; +char o_text[24] = ""; +int dmacro_num = 0; + +#ifdef DYNAMIC_MACRO_ENABLE + char dmacro_text[4][24] = { "", "RECORDING", "STOP RECORDING", "PLAY RECORDING"}; + static uint16_t dmacro_timer; + const char PROGMEM rec_ico[] = {0xD1, 0xE1, 0}; + const char PROGMEM stop_ico[] = {0xD3, 0xE1, 0}; + const char PROGMEM play_ico[] = {0xD2, 0xE1, 0}; + + + // DYNMACRO RECORD ├─────────────────────────────────────────────────────────────┐ + void dynamic_macro_record_start_user(void) { + dmacro_num = 1; + return; + } + + // DYNMACRO STOP RECORDING ├─────────────────────────────────────────────────────┐ + void dynamic_macro_record_end_user(int8_t direction) { + dmacro_num = 2; + dmacro_timer = timer_read(); + return; + } + + // DYNMACRO PLAY RECORDING ├─────────────────────────────────────────────────────┐ + void dynamic_macro_play_user(int8_t direction) { + dmacro_num = 3; + dmacro_timer = timer_read(); + return; + } +#endif //DYNAMIC_MACRO_ENABLE + + +void matrix_scan_user(void) { + #ifdef DYNAMIC_MACRO_ENABLE + // DynMacroTimer + if(dmacro_num > 0){ + if (timer_elapsed(dmacro_timer) < 3000) { + strcpy ( o_text, dmacro_text[dmacro_num] ); + } + else { + if (dmacro_num == 1) { + strcpy ( o_text, dmacro_text[1] ); + } + else { + strcpy ( o_text, layer_state_str ); + dmacro_num = 0; + } + } + } + #endif //DYNAMIC_MACRO_ENABLE +} + + +// ┌───────────────────────────────────────────────────────────┐ +// │ o l e d g r a p h i c s │ +// └───────────────────────────────────────────────────────────┘ + +void render_os_lock_status(void) { + static const char PROGMEM sep_v[] = {0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0}; + static const char PROGMEM sep_h1[] = {0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0}; + static const char PROGMEM sep_h2[] = {0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0}; + static const char PROGMEM face_1[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0xE1, 0}; + static const char PROGMEM face_2[] = {0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xE1, 0}; + static const char PROGMEM os_m_1[] = {0x95, 0x96, 0}; + static const char PROGMEM os_m_2[] = {0xB5, 0xB6, 0}; + static const char PROGMEM os_w_1[] = {0x97, 0x98, 0}; + static const char PROGMEM os_w_2[] = {0xB7, 0xB8, 0}; + static const char PROGMEM s_lock[] = {0x8F, 0x90, 0}; + static const char PROGMEM n_lock[] = {0x91, 0x92, 0}; + static const char PROGMEM c_lock[] = {0x93, 0x94, 0}; + static const char PROGMEM b_lock[] = {0xE1, 0xE1, 0}; + #ifdef AUDIO_ENABLE + static const char PROGMEM aud_en[] = {0xAF, 0xB0, 0}; + static const char PROGMEM aud_di[] = {0xCF, 0xD0, 0}; + #endif + #ifdef HAPTIC_ENABLE + static const char PROGMEM hap_en[] = {0xB1, 0xB2, 0}; + #endif + +// os mode status ────────────────────────────────────────┐ + + oled_write_ln_P(sep_v, false); + + if (keymap_config.swap_lctl_lgui) { + oled_write_P(os_m_1, false); // ──── MAC + } else { + oled_write_P(os_w_1, false); // ──── WIN + } + + oled_write_P(sep_h1, false); + oled_write_P(face_1, false); + + if (keymap_config.swap_lctl_lgui) { + oled_write_P(os_m_2, false); // ──── MAC + } else { + oled_write_P(os_w_2, false); // ──── WIN + } + + oled_write_P(sep_h1, false); + oled_write_P(face_2, false); + oled_write_ln_P(sep_v, false); + + +// lock key layer status ─────────────────────────────────┐ + + led_t led_usb_state = host_keyboard_led_state(); + + if (led_usb_state.num_lock) { + oled_write_P(n_lock, false); // ──── NUMLOCK + } else { + oled_write_P(b_lock, false); + } + if (led_usb_state.caps_lock) { + oled_write_P(c_lock, false); // ─── CAPSLOCK + } else { + oled_write_P(b_lock, false); + } + if (led_usb_state.scroll_lock) { // ─ SCROLLLOCK + oled_write_P(s_lock, false); + } else { + oled_write_P(b_lock, false); + } + +// hardware feature status ──────────────────────────────┐ + + oled_write_P(sep_h2, false); + + #ifndef AUDIO_ENABLE + oled_write_P(b_lock, false); + #endif + #ifndef HAPTIC_ENABLE + oled_write_P(b_lock, false); + #endif + + #ifdef AUDIO_ENABLE // ────────────────── AUDIO + if (is_audio_on()) { + oled_write_P(aud_en, false); + } else { + oled_write_P(aud_di, false); + } + #endif // AUDIO ENABLE + + #ifdef HAPTIC_ENABLE // ─────────────── HAPTIC + oled_write_P(hap_en, false); + #endif // HAPTIC ENABLE +} + + +// layer status ──────────────────────────────────────────┐ + +int layerstate = 0; + +layer_state_t layer_state_set_kb(layer_state_t state) { + switch (get_highest_layer(layer_state | default_layer_state)) { + case 0: + strcpy ( layer_state_str, "BASE COLEMAK"); + break; + case 1: + strcpy ( layer_state_str, "BASE QWERTY"); + break; + case 2: + strcpy ( layer_state_str, "LOWER"); + break; + case 3: + strcpy ( layer_state_str, "RAISE"); + break; + case 4: + strcpy ( layer_state_str, "ADJUST"); + break; + default: + strcpy ( layer_state_str, "XXXXXX"); + } + if (dmacro_num < 1) { + strcpy ( o_text, layer_state_str ); + } + //return state; + return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); +} + + +// ┌───────────────────────────────────────────────────────────┐ +// │ w r i t e t o o l e d │ +// └───────────────────────────────────────────────────────────┘ + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + if (is_keyboard_master()) { // ────────────────────────── PRIMARY SIDE + + // layer status ──────────────────────────────────────────────────┐ + #ifdef DYNAMIC_MACRO_ENABLE + if(dmacro_num == 1){ oled_write_P(rec_ico, false); } + if(dmacro_num == 2){ oled_write_P(stop_ico, false); } + if(dmacro_num == 3){ oled_write_P(play_ico, false); } + #endif //DYNAMIC_MACRO_ENABLE + + oled_write_ln(o_text, false); + render_os_lock_status(); + + } else { // ─────────────────────────────────────────── SECONDARY SIDE + + // KLOR face ─────────────────────────────────────────────────────┐ + + static const char PROGMEM klor_face[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, + 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(klor_face, sizeof(klor_face)); + } + return false; +} +#endif // OLED_ENABLE + + + +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case SHT_T: + return TAPPING_TERM - 150; + case SHT_N: + return TAPPING_TERM - 150; + default: + return TAPPING_TERM; + } +} + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ M A C R O S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + + case OS_SWAP: + if (record->event.pressed) { + if (!keymap_config.swap_lctl_lgui) { + keymap_config.swap_lctl_lgui = true; // ─── MAC + #ifdef AUDIO_ENABLE + PLAY_SONG(mac_song); + #endif // AUDIO_ENABLE + } + else { + keymap_config.swap_lctl_lgui = false; // ─── WIN + #ifdef AUDIO_ENABLE + PLAY_SONG(winxp_song); + #endif // AUDIO_ENABLE + } + #ifdef HAPTIC_ENABLE + DRV_pulse(pulsing_strong); + #endif // HAPTIC_ENABLE + eeconfig_update_keymap(keymap_config.raw); + clear_keyboard(); // ──── clear to prevent stuck keys + return false; + } + + +// ┌───────────────────────────────────────────────────────────┐ +// │ l a y e r │ +// └───────────────────────────────────────────────────────────┘ + + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + #ifdef HAPTIC_ENABLE + DRV_pulse(transition_hum); + #endif // HAPTIC_ENABLE + } + return false; + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + #ifdef HAPTIC_ENABLE + DRV_pulse(transition_hum); + #endif // HAPTIC_ENABLE + } + return false; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + case ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + +// ┌───────────────────────────────────────────────────────────┐ +// │ q m k │ +// └───────────────────────────────────────────────────────────┘ + + case MAKE_H: + if (record->event.pressed) { + #ifdef KEYBOARD_klor_kb2040 + SEND_STRING ("qmk compile -kb klor/2040 -km default"); + #else + SEND_STRING ("qmk compile -kb klor -km default"); + #endif + tap_code(KC_ENTER); + } + break; + +// ┌───────────────────────────────────────────────────────────┐ +// │ p r o d u c t i v i t y │ +// └───────────────────────────────────────────────────────────┘ + + case KC_MPLY: + if (record->event.pressed) { + #ifdef HAPTIC_ENABLE + DRV_pulse(sharp_click); + #endif // HAPTIC_ENABL + } + break; + } + return true; +} + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ E N C O D E R │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +#ifdef ENCODER_ENABLE + +// ┌───────────────────────────────────────────────────────────┐ +// │ e n c o d e r L │ +// └───────────────────────────────────────────────────────────┘ + +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + +// ┌───────────────────────────────────────────────────────────┐ +// │ e n c o d e r R │ +// └───────────────────────────────────────────────────────────┘ + + } else if (index == 1) { + if(IS_LAYER_ON(_LOWER)){ + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + }else { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + } + return true; +} + +#endif // ENCODER_ENABLE + + + + +/* + + ▐█ ▟▛ ▐█ ▄▆▀▀▀▀▀▀▆▄ ▐█▀▀▀▀▀█▌ + ▐█ ▟▛ ▐█ ▟▛ ▜▙ ▐█ █▌ + ▐█ ▟▛ ▐█ ▐█ █▋▐█ █▌ + ▐█ ▟█▙ ▐█ ▐█ █▋▐█▀▀▜█▀▀▘ + ▐█▟▛ ▜▙ ▐█ ▜▙ ▟▛ ▐█ ▜▙ + ▐█▛ ▜▙ ▐█▄▄▄▄ ▀▜▆▄▄▄▄▆▛▀ ▐█ ▜▙ + + ▄██████████████▄ + ████████████████ + ▄██████▀ ▀████▀ ▀██████▄ + ███████▄ ▄████▄ ▄███████ + ███████████▀▀▀▀███████████ + ▀█████████▀ ▄▄ ▀█████████▀ + ████▀ ▄██▄ ▀████ + ████▄▄████▄▄████ + +*/ + + + diff --git a/keyboards/klor/keymaps/saegewerk/rules.mk b/keyboards/klor/keymaps/saegewerk/rules.mk new file mode 100644 index 00000000..cd458864 --- /dev/null +++ b/keyboards/klor/keymaps/saegewerk/rules.mk @@ -0,0 +1,8 @@ +EXTRAKEY_ENABLE = yes + +DYNAMIC_MACRO_ENABLE = no +COMBO_ENABLE = no +KEY_OVERRIDE_ENABLE = no + +#HAPTIC FEEBACK +HAPTIC_ENABLE = yes \ No newline at end of file diff --git a/qmk.json b/qmk.json index 8ed7b3c5..92211f97 100644 --- a/qmk.json +++ b/qmk.json @@ -9,7 +9,8 @@ ["bluebell/swoop", "t4corun"], ["barbellboards/rollow", "t4corun"], ["klor", "default"], - ["klor/2040", "default"] + ["klor/2040", "default"], + ["klor/2040", "saegewerk"] ] } \ No newline at end of file From 10fed13d0fdeba396158c1284fda1c035a209549 Mon Sep 17 00:00:00 2001 From: Victor Date: Tue, 14 May 2024 20:00:23 -0500 Subject: [PATCH 08/34] I think I fixed all the issues with klor basic keymap - Modernized Geist's repo - Converted to data driven json config, nearly emulating what geist had in default - still allowed Atmel and RP2040. Compiles for both - added default saegewerk and worked out haptic driver kinks - had to replace deprecated defines - Still testing and can't test everything - only have Saegewerk, not the other three layouts - only have RP2040 - Also missed soldering the encoder diodes - not going to test RGBlight - still need to add my keymap lol --- keyboards/klor/info.json | 1 + keyboards/klor/keymaps/default/keymap.c | 17 +- keyboards/klor/keymaps/geist/config.h | 97 --- keyboards/klor/keymaps/geist/keymap.c | 802 ---------------------- keyboards/klor/keymaps/geist/rules.mk | 17 - keyboards/klor/keymaps/saegewerk/keymap.c | 16 +- keyboards/klor/keymaps/saegewerk/rules.mk | 6 +- 7 files changed, 25 insertions(+), 931 deletions(-) delete mode 100644 keyboards/klor/keymaps/geist/config.h delete mode 100644 keyboards/klor/keymaps/geist/keymap.c delete mode 100644 keyboards/klor/keymaps/geist/rules.mk diff --git a/keyboards/klor/info.json b/keyboards/klor/info.json index 24e9b17d..14cd898c 100644 --- a/keyboards/klor/info.json +++ b/keyboards/klor/info.json @@ -25,6 +25,7 @@ "encoder": true, "extrakey": false, "grave_esc": false, + "haptic": false, "magic": false, "mousekey": false, "music": false, diff --git a/keyboards/klor/keymaps/default/keymap.c b/keyboards/klor/keymaps/default/keymap.c index bdb3b5df..b76d1b02 100644 --- a/keyboards/klor/keymaps/default/keymap.c +++ b/keyboards/klor/keymaps/default/keymap.c @@ -20,9 +20,12 @@ #include #include #include "klor.h" -//#ifdef HAPTIC_ENABLE -//#include "drivers/haptic/DRV2605L.h" -//#endif //HAPTIC ENABLE + +// this should be handled by common_rules.mk but the code doesn't work without it +#ifdef HAPTIC_ENABLE +#include "drivers/haptic/drv2605l.h" +#endif //HAPTIC ENABLE + // ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ @@ -616,7 +619,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #endif // AUDIO_ENABLE } #ifdef HAPTIC_ENABLE - DRV_pulse(pulsing_strong); + drv2605l_pulse(DRV2605L_EFFECT_PULSING_STRONG_1_100); #endif // HAPTIC_ENABLE eeconfig_update_keymap(keymap_config.raw); clear_keyboard(); // ──── clear to prevent stuck keys @@ -632,7 +635,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { set_single_persistent_default_layer(_COLEMAK); #ifdef HAPTIC_ENABLE - DRV_pulse(transition_hum); + drv2605l_pulse(DRV2605L_EFFECT_TRANSITION_HUM_1_100); #endif // HAPTIC_ENABLE } return false; @@ -640,7 +643,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { set_single_persistent_default_layer(_QWERTY); #ifdef HAPTIC_ENABLE - DRV_pulse(transition_hum); + drv2605l_pulse(DRV2605L_EFFECT_TRANSITION_HUM_1_100); #endif // HAPTIC_ENABLE } return false; @@ -692,7 +695,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case KC_MPLY: if (record->event.pressed) { #ifdef HAPTIC_ENABLE - DRV_pulse(sharp_click); + drv2605l_pulse(DRV2605L_EFFECT_SHARP_CLICK_100); #endif // HAPTIC_ENABL } break; diff --git a/keyboards/klor/keymaps/geist/config.h b/keyboards/klor/keymaps/geist/config.h deleted file mode 100644 index 06c77177..00000000 --- a/keyboards/klor/keymaps/geist/config.h +++ /dev/null @@ -1,97 +0,0 @@ -#pragma once - -/* The way how "handedness" is decided (which half is which), -see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness -for more options. -*/ - -#define MASTER_LEFT -// #define MASTER_RIGHT - - -//#define TAPPING_TERM 170 -#define TAPPING_TERM 170 - -// Prevent normal rollover on alphas from accidentally triggering mods. -#define IGNORE_MOD_TAP_INTERRUPT - -// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. -#define TAPPING_FORCE_HOLD - -// Auto Shift -#define NO_AUTO_SHIFT_ALPHA -#define AUTO_SHIFT_TIMEOUT TAPPING_TERM -#define AUTO_SHIFT_NO_SETUP - -#undef LOCKING_SUPPORT_ENABLE -#undef LOCKING_RESYNC_ENABLE -#define NO_ACTION_ONESHOT -//#define NO_ACTION_TAPPING -//#define NO_MUSIC_MODE - -#define COMBO_COUNT 1 - - -#ifdef POINTING_DEVICE_ENABLE -//# define POINTING_DEVICE_ROTATION_90 -# define SPLIT_POINTING_ENABLE -# define POINTING_DEVICE_RIGHT -# define POINTING_DEVICE_ROTATION_270 -#endif - -// RGB matrix support -#ifdef RGB_MATRIX_ENABLE -# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -// RGB Matrix Animation modes. Explicitly enabled -// For full list of effects, see: -// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effect - -//# define ENABLE_RGB_MATRIX_ALPHAS_MODS -# define ENABLE_RGB_MATRIX_SOLID_COLOR -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE -# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN -# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT -# define ENABLE_RGB_MATRIX_BREATHING -# define ENABLE_RGB_MATRIX_BAND_SAT -# define ENABLE_RGB_MATRIX_BAND_VAL -# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT -# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL -# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT -# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL -# define ENABLE_RGB_MATRIX_CYCLE_ALL -# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT -# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN -# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON -# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN -//# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL -# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL -# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL -# define ENABLE_RGB_MATRIX_DUAL_BEACON -# define ENABLE_RGB_MATRIX_RAINBOW_BEACON -# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS -//# define ENABLE_RGB_MATRIX_RAINDROPS -//# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS -# define ENABLE_RGB_MATRIX_HUE_BREATHING -# define ENABLE_RGB_MATRIX_HUE_PENDULUM -# define ENABLE_RGB_MATRIX_HUE_WAVE -//# define ENABLE_RGB_MATRIX_PIXEL_RAIN -//# define ENABLE_RGB_MATRIX_PIXEL_FLOW -# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL -// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined ├─────────────────────────────┐ -# define ENABLE_RGB_MATRIX_TYPING_HEATMAP -//# define ENABLE_RGB_MATRIX_DIGITAL_RAIN -// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined ├────────────┐ -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE -//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE -//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS -//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS -# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS -//# define ENABLE_RGB_MATRIX_SPLASH -# define ENABLE_RGB_MATRIX_MULTISPLASH -//# define ENABLE_RGB_MATRIX_SOLID_SPLASH -# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH -#endif - - diff --git a/keyboards/klor/keymaps/geist/keymap.c b/keyboards/klor/keymaps/geist/keymap.c deleted file mode 100644 index 909a82ec..00000000 --- a/keyboards/klor/keymaps/geist/keymap.c +++ /dev/null @@ -1,802 +0,0 @@ -/* - - █ █ █ ▄▄▄▀▀▀▀▀▀▄▄▄ █▀▀▀▀▀▀▀▀▀▀█ - █ █ █ ▄▀ ▀▄ █ █ - █ █ █ ▄▀ ▀▄ █ █ - █ █ █ █ █ █ █ - █ █ █ █ █ █ █ - █ █ █ █ █ █▄▄▄▄▄▄▄▄▄▄█ - █ █ █ █ █ █ █ █ - █ █ █ █ █ █ █ █ - █ █ █ █ ▀▄ ▄▀ █ █ - ██ █ █ ▀▄ ▄▀ █ █ - █ █ █▄▄▄▄▄▄▄▄ ▀▀▀▄▄▄▄▄▄▀▀▀ █ █ - - ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ - ┌─┐┌─╴╷┌──┬─ - │ ┐├─╴│└─┐│ - └─┘└─╴╵╶─┘╵ -*/ -#include QMK_KEYBOARD_H -#include -#include -#include "klor.h" -#ifdef HAPTIC_ENABLE -#include "drivers/haptic/DRV2605L.h" -#endif //HAPTIC ENABLE - - -// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ -// │ D E F I N I T I O N S │ -// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ -// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ - -// ┌───────────────────────────────────────────────────────────┐ -// │ d e f i n e l a y e r s │ -// └───────────────────────────────────────────────────────────┘ - -enum klor_layers { - /* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */ - _COLEMAK, - _QWERTY, - _LOWER, - _RAISE, - _ADJUST, -}; - -// ┌───────────────────────────────────────────────────────────┐ -// │ d e f i n e k e y c o d e s │ -// └───────────────────────────────────────────────────────────┘ - -enum custom_keycodes { - COLEMAK = SAFE_RANGE, - QWERTY, - LOWER, - RAISE, - ADJUST, - OS_SWAP, - WMAIL, - GMAIL, - GIPHY, - MAKE_H, - SNAP1, - SNAP2 -}; - -// ┌───────────────────────────────────────────────────────────┐ -// │ d e f i n e m a c r o n a m e s │ -// └───────────────────────────────────────────────────────────┘ - -// LEFT HAND HOME ROW MODS ├───────────────────────────────────┐ - -#define GUI_A MT(MOD_LGUI, KC_A) -#define ALT_R MT(MOD_LALT, KC_R) -#define CTL_S MT(MOD_LCTL, KC_S) -#define SHT_T MT(MOD_LSFT, KC_T) - -// RIGHT HAND HOME ROW MODS ├───────────────────────────────────┐ - -#define SHT_N MT(MOD_RSFT, KC_N) -#define CTL_E MT(MOD_LCTL, KC_E) -#define ALT_I MT(MOD_LALT, KC_I) -#define GUI_O MT(MOD_LGUI, KC_O) - -// ┌───────────────────────────────────────────────────────────┐ -// │ d e f i n e c o m b o s │ -// └───────────────────────────────────────────────────────────┘ - -const uint16_t PROGMEM esc_combo[] = {KC_TAB, KC_Q, COMBO_END}; -//const uint16_t PROGMEM save_combo[] = {KC_D, KC_S, COMBO_END}; -combo_t key_combos[COMBO_COUNT] = { - COMBO(esc_combo, KC_ESC) - //COMBO(save_combo, C(KC_S)) -}; - - -// ┌───────────────────────────────────────────────────────────┐ -// │ d e f i n e k e y o v e r r i d e s │ -// └───────────────────────────────────────────────────────────┘ - -const key_override_t sve_key_override = ko_make_basic(MOD_MASK_GUI, KC_S, C(KC_S)); - -// This globally defines all key overrides to be used ├───────────┐ -const key_override_t **key_overrides = (const key_override_t *[]){ - &sve_key_override, - NULL // Null terminate the array of overrides! -}; - - -// ┌───────────────────────────────────────────────────────────┐ -// │ d e f i n e s o u n d s │ -// └───────────────────────────────────────────────────────────┘ - -#ifdef AUDIO_ENABLE - #define WINXP_SOUND W__NOTE(_DS6), Q__NOTE(_DS5), H__NOTE(_AS5), H__NOTE(_GS5), H__NOTE(_DS5), H__NOTE(_DS6), H__NOTE(_AS5) - #define MAC_SOUND S__NOTE(_CS5), B__NOTE(_C5) - - float winxp_song[][2] = SONG(WINXP_SOUND); - float mac_song[][2] = SONG(MAC_SOUND); -#endif // AUDIO_ENABLE - -// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ -// │ K E Y M A P S │ -// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ -// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* - ┌───────────────────────────────────────────────────────────┐ - │ c o l e m a k │ - └───────────────────────────────────────────────────────────┘ - ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ - │ Q │ W │ F │ P │ G │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ J │ L │ U │ Y │ ; │ - ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ - │ TAB │ A │ R │ S │ T │ D ├─╯ ╰─┤ H │ N │ E │ I │ O │ " │ - ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ - │ DEL │ Z │ X │ C │ V │ B ││ SHIFT ││PLY/PSE ││ K │ M │ , │ . │ / │ SHIFT │ - └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ - │ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPCE │ - └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - - [_COLEMAK] = LAYOUT_polydactyl( - //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ - KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, - KC_TAB, GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, KC_QUOT, - KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_MPLY, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, - KC_DEL, LOWER, KC_SPC, KC_ESC, KC_LGUI, KC_ENT, RAISE, KC_BSPC - ), - /* - ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ - - ┌───────────────────────────────────────────────────────────┐ - │ q w e r t y │ - └───────────────────────────────────────────────────────────┘ - ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ - │ Q │ W │ E │ R │ T │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ Y │ U │ I │ O │ P │ - ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ - │ TAB │ A │ S │ D │ F │ G ├─╯ ╰─┤ H │ J │ K │ L │ ; │ " │ - ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ - │ DEL │ Z │ X │ C │ V │ B ││ SHIFT ││PLY/PSE ││ N │ M │ , │ . │ / │ SHIFT │ - └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ - │ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPACE │ - └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - - [_QWERTY] = LAYOUT_polydactyl( - //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ - KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - KC_DEL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LSFT, KC_MPLY, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, LOWER, KC_SPC, KC_LALT, KC_LGUI, KC_ENT, RAISE, KC_BSPC - ), - - /* - ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ - - ┌───────────────────────────────────────────────────────────┐ - │ l o w e r │ - └───────────────────────────────────────────────────────────┘ - ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ - │ CAPSLCK │ NUMLCK │ ↑ │ = │ { │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ } │ 7 │ 8 │ 9 │ + │ - ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ - │ ESC │ HOME │ ← │ ↓ │ → │ [ ├─╯ ╰─┤ ] │ 4 │ 5 │ 6 │ - │ ' │ - ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ - │ SCRNSHT │ END │ PG↑ │ SAVE │ PG↓ │ ( ││ MUTE ││PLY/PSE ││ ) │ 1 │ 2 │ 3 │ * │ ▼ │ - └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ - │ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ADJUST │ 0 │ - └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - - [_LOWER] = LAYOUT_polydactyl( - //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ - KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, - KC_ESC, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, KC_DQT, - SNAP2, KC_END, KC_PGUP, C(KC_S), KC_PGDN, KC_LPRN, KC_MUTE, KC_MPLY, KC_RPRN, KC_P1, KC_P2, KC_P3, KC_PAST, _______, - _______, _______, _______, RGB_MOD, RGB_MOD, _______, _______, KC_P0 - ), - /* - ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ - - ┌───────────────────────────────────────────────────────────┐ - │ r a i s e │ - └───────────────────────────────────────────────────────────┘ - ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ - │ ! │ @ │ # │ $ │ % │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ ^ │ & │ Ü │ ° │ / │ - ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ - │ GMX │ Ä │ è │ SZ │ é │ ├─╯ ╰─┤ │ ¥ │ € │ £ │ Ö │ │ - ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ - │ WEB │ ` │ ~ │ CUE │ │ ││ MUTE ││PLY/PSE ││ │ │ │ DM REC1 │ DM STOP │ DM PLY1 │ - └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ - │ GIPHY │ ADJUST │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │ - └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - - [_RAISE] = LAYOUT_polydactyl( - //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS, - GMAIL, RALT(KC_A),RALT(KC_F),RALT(KC_S),RALT(KC_G),XXXXXXX, XXXXXXX,LSFT(RALT(KC_4)),RALT(KC_5), RALT(KC_4), RALT(KC_O), XXXXXXX, - WMAIL, KC_GRV, LSFT(KC_GRV),RALT(KC_C),XXXXXXX,XXXXXXX, KC_MUTE, KC_MPLY, XXXXXXX, XXXXXXX, XXXXXXX, DM_REC1, DM_RSTP, DM_PLY1, - GIPHY, _______, _______, RGB_MOD, RGB_MOD, _______, _______, _______ - ), - /* - ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ - - ┌───────────────────────────────────────────────────────────┐ - │ a d j u s t │ - └───────────────────────────────────────────────────────────┘ - ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ - │ AUDIO │ HAPTIC │ │ │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ F7 │ F8 │ F9 │ F14 │ - ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ - │ RESET │ DEBUG │ QWERTY │ │ │ ├─╯ ╰─┤ │ F4 │ F5 │ F6 │ F12 │ F13 │ - ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ - │ MAKE │ OS SWAP │ COLEMAK │ │ │ ││ MUTE ││PLY/PSE ││ │ F1 │ F2 │ F3 │ F10 │ F11 │ - └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ - │ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │ - └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - - [_ADJUST] = LAYOUT_polydactyl( - //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ - AU_TOG, HPT_TOG, RGB_HUI, RGB_MOD, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F14, - QK_BOOT, DB_TOGG, QWERTY, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F12, KC_F13, - MAKE_H, OS_SWAP, COLEMAK, RGB_VAI, XXXXXXX, XXXXXXX, KC_MUTE, KC_MPLY, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, KC_F11, - _______, _______, _______, _______, _______, _______, _______, _______ - ) - - /* - ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ - - ┌───────────────────────────────────────────────────────────┐ - │ t e m p l a t e │ - └───────────────────────────────────────────────────────────┘ - ┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐ - │ │ │ │ │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │ - ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ - │ │ │ │ │ │ ├─╯ ╰─┤ │ │ │ │ │ │ - ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ - │ │ │ │ │ │ ││ ││ ││ │ │ │ │ │ │ - └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ - │ │ │ │ ││ │ │ │ │ - └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ - - [_TEMPLATE] = LAYOUT_polydactyl( - //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______ - )*/ -}; - - - - -// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ -// │ T R A C K B A L L │ -// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ -// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ - -#ifdef POINTING_DEVICE_ENABLE - -void pointing_device_init_user(void) { - set_auto_mouse_layer(_MOUSE); // only required if AUTO_MOUSE_DEFAULT_LAYER is not set to index of - set_auto_mouse_enable(true); // always required before the auto mouse feature will work -} - -report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { - if (scrolling_mode) { - mouse_report.h = mouse_report.x; - mouse_report.v = mouse_report.y; - mouse_report.x = 0; - mouse_report.y = 0; - } - return mouse_report; -} - -#endif //POINTING_DEVICE_ENABLE - - - - -// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ -// │ H A P T I C F E E D B A C K │ -// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ -// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ - -void keyboard_post_init_user(void) { - // Call the post init code. - #if HAPTIC_ENABLE - haptic_disable(); // disables per key haptic feedback by default - #endif //HAPTIC ENABLE - - #if RGB_MATRIX_ENABLE - rgblight_enable_noeeprom(); - //rgblight_sethsv_noeeprom(35, 255, 255); // set default RGB color to yellow - #endif //RGB_MATRIX_ENABLE -} - - - - -// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ -// │ O L E D │ -// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ -// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ - -#ifdef OLED_ENABLE - -// ┌───────────────────────────────────────────────────────────┐ -// │ d y n a m i c m a c r o │ -// └───────────────────────────────────────────────────────────┘ - -char layer_state_str[24]; -char o_text[24] = ""; -int dmacro_num = 0; - -#ifdef DYNAMIC_MACRO_ENABLE - char dmacro_text[4][24] = { "", "RECORDING", "STOP RECORDING", "PLAY RECORDING"}; - static uint16_t dmacro_timer; - const char PROGMEM rec_ico[] = {0xD1, 0xE1, 0}; - const char PROGMEM stop_ico[] = {0xD3, 0xE1, 0}; - const char PROGMEM play_ico[] = {0xD2, 0xE1, 0}; - - - // DYNMACRO RECORD ├─────────────────────────────────────────────────────────────┐ - void dynamic_macro_record_start_user(void) { - dmacro_num = 1; - return; - } - - // DYNMACRO STOP RECORDING ├─────────────────────────────────────────────────────┐ - void dynamic_macro_record_end_user(int8_t direction) { - dmacro_num = 2; - dmacro_timer = timer_read(); - return; - } - - // DYNMACRO PLAY RECORDING ├─────────────────────────────────────────────────────┐ - void dynamic_macro_play_user(int8_t direction) { - dmacro_num = 3; - dmacro_timer = timer_read(); - return; - } -#endif //DYNAMIC_MACRO_ENABLE - - -void matrix_scan_user(void) { - #ifdef DYNAMIC_MACRO_ENABLE - // DynMacroTimer - if(dmacro_num > 0){ - if (timer_elapsed(dmacro_timer) < 3000) { - strcpy ( o_text, dmacro_text[dmacro_num] ); - } - else { - if (dmacro_num == 1) { - strcpy ( o_text, dmacro_text[1] ); - } - else { - strcpy ( o_text, layer_state_str ); - dmacro_num = 0; - } - } - } - #endif //DYNAMIC_MACRO_ENABLE -} - - -// ┌───────────────────────────────────────────────────────────┐ -// │ o l e d g r a p h i c s │ -// └───────────────────────────────────────────────────────────┘ - -void render_os_lock_status(void) { - static const char PROGMEM sep_v[] = {0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0}; - static const char PROGMEM sep_h1[] = {0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0}; - static const char PROGMEM sep_h2[] = {0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0}; - static const char PROGMEM face_1[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0xE1, 0}; - static const char PROGMEM face_2[] = {0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xE1, 0}; - static const char PROGMEM os_m_1[] = {0x95, 0x96, 0}; - static const char PROGMEM os_m_2[] = {0xB5, 0xB6, 0}; - static const char PROGMEM os_w_1[] = {0x97, 0x98, 0}; - static const char PROGMEM os_w_2[] = {0xB7, 0xB8, 0}; - static const char PROGMEM s_lock[] = {0x8F, 0x90, 0}; - static const char PROGMEM n_lock[] = {0x91, 0x92, 0}; - static const char PROGMEM c_lock[] = {0x93, 0x94, 0}; - static const char PROGMEM b_lock[] = {0xE1, 0xE1, 0}; - #ifdef AUDIO_ENABLE - static const char PROGMEM aud_en[] = {0xAF, 0xB0, 0}; - static const char PROGMEM aud_di[] = {0xCF, 0xD0, 0}; - #endif - #ifdef HAPTIC_ENABLE - static const char PROGMEM hap_en[] = {0xB1, 0xB2, 0}; - #endif - -// os mode status ────────────────────────────────────────┐ - - oled_write_ln_P(sep_v, false); - - if (keymap_config.swap_lctl_lgui) { - oled_write_P(os_m_1, false); // ──── MAC - } else { - oled_write_P(os_w_1, false); // ──── WIN - } - - oled_write_P(sep_h1, false); - oled_write_P(face_1, false); - - if (keymap_config.swap_lctl_lgui) { - oled_write_P(os_m_2, false); // ──── MAC - } else { - oled_write_P(os_w_2, false); // ──── WIN - } - - oled_write_P(sep_h1, false); - oled_write_P(face_2, false); - oled_write_ln_P(sep_v, false); - - -// lock key layer status ─────────────────────────────────┐ - - led_t led_usb_state = host_keyboard_led_state(); - - if (led_usb_state.num_lock) { - oled_write_P(n_lock, false); // ──── NUMLOCK - } else { - oled_write_P(b_lock, false); - } - if (led_usb_state.caps_lock) { - oled_write_P(c_lock, false); // ─── CAPSLOCK - } else { - oled_write_P(b_lock, false); - } - if (led_usb_state.scroll_lock) { // ─ SCROLLLOCK - oled_write_P(s_lock, false); - } else { - oled_write_P(b_lock, false); - } - -// hardware feature status ──────────────────────────────┐ - - oled_write_P(sep_h2, false); - - #ifndef AUDIO_ENABLE - oled_write_P(b_lock, false); - #endif - #ifndef HAPTIC_ENABLE - oled_write_P(b_lock, false); - #endif - - #ifdef AUDIO_ENABLE // ────────────────── AUDIO - if (is_audio_on()) { - oled_write_P(aud_en, false); - } else { - oled_write_P(aud_di, false); - } - #endif // AUDIO ENABLE - - #ifdef HAPTIC_ENABLE // ─────────────── HAPTIC - oled_write_P(hap_en, false); - #endif // HAPTIC ENABLE -} - - -// layer status ──────────────────────────────────────────┐ - -int layerstate = 0; - -layer_state_t layer_state_set_kb(layer_state_t state) { - switch (get_highest_layer(layer_state | default_layer_state)) { - case 0: - strcpy ( layer_state_str, "BASE COLEMAK"); - break; - case 1: - strcpy ( layer_state_str, "BASE QWERTY"); - break; - case 2: - strcpy ( layer_state_str, "LOWER"); - break; - case 3: - strcpy ( layer_state_str, "RAISE"); - break; - case 4: - strcpy ( layer_state_str, "ADJUST"); - break; - default: - strcpy ( layer_state_str, "XXXXXX"); - } - if (dmacro_num < 1) { - strcpy ( o_text, layer_state_str ); - } - //return state; - return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); -} - -// ┌───────────────────────────────────────────────────────────┐ -// │ w r i t e t o o l e d │ -// └───────────────────────────────────────────────────────────┘ - -bool oled_task_kb(void) { - if (!oled_task_user()) { - return false; - } - if (is_keyboard_master()) { // ────────────────────────── PRIMARY SIDE - - // layer status ──────────────────────────────────────────────────┐ - #ifdef DYNAMIC_MACRO_ENABLE - if(dmacro_num == 1){ oled_write_P(rec_ico, false); } - if(dmacro_num == 2){ oled_write_P(stop_ico, false); } - if(dmacro_num == 3){ oled_write_P(play_ico, false); } - #endif //DYNAMIC_MACRO_ENABLE - - oled_write_ln(o_text, false); - render_os_lock_status(); - - } else { // ─────────────────────────────────────────── SECONDARY SIDE - - // KLOR face ─────────────────────────────────────────────────────┐ - - static const char PROGMEM klor_face[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, - 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, - 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - oled_write_raw_P(klor_face, sizeof(klor_face)); - } - return false; -} -#endif // OLED_ENABLE - - - -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case SHT_T: - return TAPPING_TERM - 150; - case SHT_N: - return TAPPING_TERM - 150; - default: - return TAPPING_TERM; - } -} - -// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ -// │ M A C R O S │ -// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ -// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ - - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - - case OS_SWAP: - if (record->event.pressed) { - if (!keymap_config.swap_lctl_lgui) { - keymap_config.swap_lctl_lgui = true; // ─── MAC - #ifdef AUDIO_ENABLE - PLAY_SONG(mac_song); - #endif // AUDIO_ENABLE - } - else { - keymap_config.swap_lctl_lgui = false; // ─── WIN - #ifdef AUDIO_ENABLE - PLAY_SONG(winxp_song); - #endif // AUDIO_ENABLE - } - #ifdef HAPTIC_ENABLE - DRV_pulse(pulsing_strong); - #endif // HAPTIC_ENABLE - eeconfig_update_keymap(keymap_config.raw); - clear_keyboard(); // ──── clear to prevent stuck keys - return false; - } - - -// ┌───────────────────────────────────────────────────────────┐ -// │ l a y e r │ -// └───────────────────────────────────────────────────────────┘ - - case COLEMAK: - if (record->event.pressed) { - set_single_persistent_default_layer(_COLEMAK); - #ifdef HAPTIC_ENABLE - DRV_pulse(transition_hum); - #endif // HAPTIC_ENABLE - } - return false; - case QWERTY: - if (record->event.pressed) { - set_single_persistent_default_layer(_QWERTY); - #ifdef HAPTIC_ENABLE - DRV_pulse(transition_hum); - #endif // HAPTIC_ENABLE - } - return false; - case LOWER: - if (record->event.pressed) { - layer_on(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_LOWER); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - case RAISE: - if (record->event.pressed) { - layer_on(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } else { - layer_off(_RAISE); - update_tri_layer(_LOWER, _RAISE, _ADJUST); - } - return false; - case ADJUST: - if (record->event.pressed) { - layer_on(_ADJUST); - } else { - layer_off(_ADJUST); - } - return false; - - -// ┌───────────────────────────────────────────────────────────┐ -// │ q m k │ -// └───────────────────────────────────────────────────────────┘ - - case MAKE_H: - if (record->event.pressed) { - #ifdef KEYBOARD_klor_2040 - SEND_STRING ("qmk compile -kb klor/2040 -km geist"); - #else - SEND_STRING ("qmk compile -kb klor -km geist"); - #endif - tap_code(KC_ENTER); - } - break; - -// ┌───────────────────────────────────────────────────────────┐ -// │ p r o d u c t i v i t y │ -// └───────────────────────────────────────────────────────────┘ - - case WMAIL: - if (record->event.pressed) { - SEND_STRING ("igit.igit@web.de"); - } - break; - - case GMAIL: - if (record->event.pressed) { - SEND_STRING ("igit@gmx.de"); - } - break; - - case GIPHY: - if (record->event.pressed) { - SEND_STRING ("@gif "); - } - break; - - case SNAP1: - if (record->event.pressed) { - if (keymap_config.swap_lctl_lgui) { - SEND_STRING(SS_LSFT(SS_LCMD("4"))); //MAC - } else { - SEND_STRING(SS_LWIN(SS_TAP(X_PSCR))); //WIN - } - } - break; - - case SNAP2: - if (record->event.pressed) { - if (keymap_config.swap_lctl_lgui) { - SEND_STRING(SS_LSFT(SS_LCMD(SS_LCTL("4")))); //MAC - } else { - SEND_STRING(SS_LSFT(SS_LWIN("S"))); //WIN - } - } - break; - - case KC_MPLY: - if (record->event.pressed) { - #ifdef HAPTIC_ENABLE - DRV_pulse(sharp_click); - #endif // HAPTIC_ENABL - } - break; - } - return true; -} - - -// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ -// │ E N C O D E R │ -// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ -// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ - -#ifdef ENCODER_ENABLE - -// ┌───────────────────────────────────────────────────────────┐ -// │ e n c o d e r L │ -// └───────────────────────────────────────────────────────────┘ - -bool encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { - if (clockwise) { - tap_code(KC_PGDN); - } else { - tap_code(KC_PGUP); - } - -// ┌───────────────────────────────────────────────────────────┐ -// │ e n c o d e r R │ -// └───────────────────────────────────────────────────────────┘ - - } else if (index == 1) { - if(IS_LAYER_ON(_LOWER)){ - if (clockwise) { - tap_code(KC_MNXT); - } else { - tap_code(KC_MPRV); - } - }else { - if (clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - } - } - return true; -} - -#endif // ENCODER_ENABLE - - - - -/* - - ▐█ ▟▛ ▐█ ▄▆▀▀▀▀▀▀▆▄ ▐█▀▀▀▀▀█▌ - ▐█ ▟▛ ▐█ ▟▛ ▜▙ ▐█ █▌ - ▐█ ▟▛ ▐█ ▐█ █▋▐█ █▌ - ▐█ ▟█▙ ▐█ ▐█ █▋▐█▀▀▜█▀▀▘ - ▐█▟▛ ▜▙ ▐█ ▜▙ ▟▛ ▐█ ▜▙ - ▐█▛ ▜▙ ▐█▄▄▄▄ ▀▜▆▄▄▄▄▆▛▀ ▐█ ▜▙ - - ▄██████████████▄ - ████████████████ - ▄██████▀ ▀████▀ ▀██████▄ - ███████▄ ▄████▄ ▄███████ - ███████████▀▀▀▀███████████ - ▀█████████▀ ▄▄ ▀█████████▀ - ████▀ ▄██▄ ▀████ - ████▄▄████▄▄████ - -*/ - - - diff --git a/keyboards/klor/keymaps/geist/rules.mk b/keyboards/klor/keymaps/geist/rules.mk deleted file mode 100644 index ae2604f7..00000000 --- a/keyboards/klor/keymaps/geist/rules.mk +++ /dev/null @@ -1,17 +0,0 @@ -OLED_ENABLE = yes -OLED_DRIVER = SSD1306 -ENCODER_ENABLE = yes -EXTRAKEY_ENABLE = yes -DYNAMIC_MACRO_ENABLE = yes -COMBO_ENABLE = yes -KEY_OVERRIDE_ENABLE = yes - -#HAPTIC FEEBACK -HAPTIC_ENABLE = yes - -#PER KEY RGB -RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE) - -#AUDIO -AUDIO_ENABLE = yes -MUSIC_ENABLE = yes \ No newline at end of file diff --git a/keyboards/klor/keymaps/saegewerk/keymap.c b/keyboards/klor/keymaps/saegewerk/keymap.c index 71d9efc2..092436a8 100644 --- a/keyboards/klor/keymaps/saegewerk/keymap.c +++ b/keyboards/klor/keymaps/saegewerk/keymap.c @@ -20,9 +20,11 @@ #include #include #include "klor.h" -//#ifdef HAPTIC_ENABLE -//#include "drivers/haptic/DRV2605L.h" -//#endif //HAPTIC ENABLE + +// this should be handled by common_rules.mk but the code doesn't work without it +#ifdef HAPTIC_ENABLE +#include "drivers/haptic/drv2605l.h" +#endif //HAPTIC ENABLE // ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ @@ -616,7 +618,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #endif // AUDIO_ENABLE } #ifdef HAPTIC_ENABLE - DRV_pulse(pulsing_strong); + drv2605l_pulse(DRV2605L_EFFECT_PULSING_STRONG_1_100); #endif // HAPTIC_ENABLE eeconfig_update_keymap(keymap_config.raw); clear_keyboard(); // ──── clear to prevent stuck keys @@ -632,7 +634,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { set_single_persistent_default_layer(_COLEMAK); #ifdef HAPTIC_ENABLE - DRV_pulse(transition_hum); + drv2605l_pulse(DRV2605L_EFFECT_TRANSITION_HUM_1_100); #endif // HAPTIC_ENABLE } return false; @@ -640,7 +642,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { set_single_persistent_default_layer(_QWERTY); #ifdef HAPTIC_ENABLE - DRV_pulse(transition_hum); + drv2605l_pulse(DRV2605L_EFFECT_TRANSITION_HUM_1_100); #endif // HAPTIC_ENABLE } return false; @@ -692,7 +694,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { case KC_MPLY: if (record->event.pressed) { #ifdef HAPTIC_ENABLE - DRV_pulse(sharp_click); + drv2605l_pulse(DRV2605L_EFFECT_SHARP_CLICK_100); #endif // HAPTIC_ENABL } break; diff --git a/keyboards/klor/keymaps/saegewerk/rules.mk b/keyboards/klor/keymaps/saegewerk/rules.mk index cd458864..441dc2ed 100644 --- a/keyboards/klor/keymaps/saegewerk/rules.mk +++ b/keyboards/klor/keymaps/saegewerk/rules.mk @@ -5,4 +5,8 @@ COMBO_ENABLE = no KEY_OVERRIDE_ENABLE = no #HAPTIC FEEBACK -HAPTIC_ENABLE = yes \ No newline at end of file +HAPTIC_ENABLE = yes + +RGB_MATRIX_ENABLE = yes + +MUSIC_ENABLE = yes \ No newline at end of file From 41a0204fc972e3bd4f6baebd9d75904d6e83514d Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 15 May 2024 07:52:23 -0500 Subject: [PATCH 09/34] Added Dynamic Layout selection - Cleanup unused code and updated documentation - add dynamic layout selection - Leveraged common_features.mk framework - Configure layout in keymap rules.mk - Will test more but it is ready to ship --- keyboards/klor/2040/rules.mk | 3 +- keyboards/klor/info.json | 49 +-- keyboards/klor/keymaps/default/keymap.c | 18 +- keyboards/klor/keymaps/default/rules.mk | 8 +- keyboards/klor/keymaps/saegewerk/keymap.c | 18 +- keyboards/klor/keymaps/saegewerk/rules.mk | 7 +- keyboards/klor/klor.c | 383 +++++++++++----------- keyboards/klor/post_rules.mk | 7 + keyboards/klor/readme.md | 19 +- keyboards/klor/rules.mk | 28 +- 10 files changed, 249 insertions(+), 291 deletions(-) create mode 100644 keyboards/klor/post_rules.mk diff --git a/keyboards/klor/2040/rules.mk b/keyboards/klor/2040/rules.mk index 0cc4589a..4637df5d 100644 --- a/keyboards/klor/2040/rules.mk +++ b/keyboards/klor/2040/rules.mk @@ -11,6 +11,5 @@ CONVERT_TO = promicro_rp2040 #CONVERT_TO = blok #CONVERT_TO = elite_pi -# AUDIO -AUDIO_ENABLE = yes +# AUDIO AUDIO_DRIVER = pwm_hardware diff --git a/keyboards/klor/info.json b/keyboards/klor/info.json index 14cd898c..aadf9a21 100644 --- a/keyboards/klor/info.json +++ b/keyboards/klor/info.json @@ -82,51 +82,7 @@ "sleep": true, "default": { "hue": 35 - }, - "layout": [ - {"matrix": [3, 4], "x": 102, "y": 63, "flags": 1}, - {"matrix": [3, 3], "x": 89, "y": 54, "flags": 1}, - {"matrix": [3, 2], "x": 74, "y": 49, "flags": 1}, - {"matrix": [2, 5], "x": 75, "y": 34, "flags": 4}, - {"matrix": [1, 5], "x": 75, "y": 21, "flags": 4}, - {"matrix": [0, 5], "x": 75, "y": 8, "flags": 4}, - {"matrix": [0, 4], "x": 60, "y": 6, "flags": 4}, - {"matrix": [1, 4], "x": 60, "y": 19, "flags": 4}, - {"matrix": [2, 4], "x": 60, "y": 32, "flags": 4}, - {"matrix": [3, 1], "x": 58, "y": 48, "flags": 1}, - {"matrix": [2, 3], "x": 46, "y": 25, "flags": 4}, - {"matrix": [1, 3], "x": 46, "y": 12, "flags": 4}, - {"matrix": [0, 3], "x": 46, "y": 0, "flags": 4}, - {"matrix": [0, 2], "x": 29, "y": 7, "flags": 4}, - {"matrix": [1, 2], "x": 30, "y": 20, "flags": 4}, - {"matrix": [2, 2], "x": 31, "y": 33, "flags": 4}, - {"matrix": [2, 1], "x": 17, "y": 42, "flags": 4}, - {"matrix": [1, 1], "x": 15, "y": 30, "flags": 4}, - {"matrix": [0, 1], "x": 13, "y": 17, "flags": 4}, - {"matrix": [1, 0], "x": 0, "y": 28, "flags": 1}, - {"matrix": [2, 0], "x": 3, "y": 41, "flags": 1}, - {"matrix": [7, 4], "x": 122, "y": 63, "flags": 1}, - {"matrix": [7, 3], "x": 135, "y": 54, "flags": 1}, - {"matrix": [7, 2], "x": 150, "y": 49, "flags": 1}, - {"matrix": [6, 5], "x": 149, "y": 34, "flags": 4}, - {"matrix": [5, 5], "x": 149, "y": 21, "flags": 4}, - {"matrix": [4, 5], "x": 149, "y": 8, "flags": 4}, - {"matrix": [4, 4], "x": 163, "y": 6, "flags": 4}, - {"matrix": [5, 4], "x": 163, "y": 19, "flags": 4}, - {"matrix": [6, 4], "x": 163, "y": 32, "flags": 4}, - {"matrix": [7, 1], "x": 166, "y": 48, "flags": 1}, - {"matrix": [6, 3], "x": 178, "y": 25, "flags": 4}, - {"matrix": [5, 3], "x": 178, "y": 12, "flags": 4}, - {"matrix": [4, 3], "x": 178, "y": 0, "flags": 4}, - {"matrix": [4, 2], "x": 195, "y": 7, "flags": 4}, - {"matrix": [5, 2], "x": 194, "y": 20, "flags": 4}, - {"matrix": [6, 2], "x": 193, "y": 33, "flags": 4}, - {"matrix": [4, 1], "x": 206, "y": 42, "flags": 4}, - {"matrix": [5, 1], "x": 209, "y": 30, "flags": 4}, - {"matrix": [6, 1], "x": 211, "y": 17, "flags": 4}, - {"matrix": [5, 0], "x": 224, "y": 28, "flags": 1}, - {"matrix": [6, 0], "x": 221, "y": 41, "flags": 1} - ] + } }, "ws2812": { "pin": "D3" @@ -134,9 +90,6 @@ "audio": { "voices": true }, - "layout_aliases": { - "LAYOUT": "LAYOUT_polydactyl" - }, "layouts": { "LAYOUT_konrad": { "layout": [ diff --git a/keyboards/klor/keymaps/default/keymap.c b/keyboards/klor/keymaps/default/keymap.c index b76d1b02..5f7605b1 100644 --- a/keyboards/klor/keymaps/default/keymap.c +++ b/keyboards/klor/keymaps/default/keymap.c @@ -114,7 +114,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPACE │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_QWERTY] = LAYOUT_polydactyl( + [_QWERTY] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, @@ -136,7 +136,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPCE │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_COLEMAK] = LAYOUT_polydactyl( + [_COLEMAK] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_TAB, GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, KC_QUOT, @@ -160,7 +160,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ADJUST │ 0 │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_LOWER] = LAYOUT_polydactyl( + [_LOWER] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_ESC, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, KC_DQT, @@ -183,7 +183,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ ADJUST │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_RAISE] = LAYOUT_polydactyl( + [_RAISE] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, @@ -206,7 +206,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_ADJUST] = LAYOUT_polydactyl( + [_ADJUST] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ AU_TOGG, HF_TOGG, RGB_HUI, RGB_MOD, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F14, QK_BOOT, DB_TOGG, QWERTY, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F12, KC_F13, @@ -230,7 +230,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ ││ │ │ │ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ - [_TEMPLATE] = LAYOUT_polydactyl( + [_TEMPLATE] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -253,7 +253,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ │ │ │ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ - [_TEMPLATE] = LAYOUT_konrad( + [_TEMPLATE] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -276,7 +276,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ ││ │ │ │ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ - [_TEMPLATE] = LAYOUT_yubitsume( + [_TEMPLATE] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -300,7 +300,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ │ │ │ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ - [_TEMPLATE] = LAYOUT_saegewerk( + [_TEMPLATE] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/klor/keymaps/default/rules.mk b/keyboards/klor/keymaps/default/rules.mk index e0f81bf4..8ce307e3 100644 --- a/keyboards/klor/keymaps/default/rules.mk +++ b/keyboards/klor/keymaps/default/rules.mk @@ -4,5 +4,9 @@ DYNAMIC_MACRO_ENABLE = no COMBO_ENABLE = no KEY_OVERRIDE_ENABLE = no -#HAPTIC FEEBACK -HAPTIC_ENABLE = no \ No newline at end of file +AUDIO_ENABLE = yes +MUSIC_ENABLE = yes +HAPTIC_ENABLE = no + +# Choose your layout +KLOR_LAYOUT = polydactyl \ No newline at end of file diff --git a/keyboards/klor/keymaps/saegewerk/keymap.c b/keyboards/klor/keymaps/saegewerk/keymap.c index 092436a8..4c5c7815 100644 --- a/keyboards/klor/keymaps/saegewerk/keymap.c +++ b/keyboards/klor/keymaps/saegewerk/keymap.c @@ -113,7 +113,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ │ ENTER │ RAISE │ BSPACE │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_QWERTY] = LAYOUT_saegewerk( + [_QWERTY] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, @@ -135,7 +135,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ │ ENTER │ RAISE │ BSPCE │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_COLEMAK] = LAYOUT_saegewerk( + [_COLEMAK] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, @@ -159,7 +159,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ │ ▼ │ ADJUST │ 0 │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_LOWER] = LAYOUT_saegewerk( + [_LOWER] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, @@ -182,7 +182,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ ADJUST │ ▼ │ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_RAISE] = LAYOUT_saegewerk( + [_RAISE] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, @@ -205,7 +205,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_ADJUST] = LAYOUT_saegewerk( + [_ADJUST] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ AU_TOGG, HF_TOGG, RGB_HUI, RGB_MOD, QK_BOOT, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F11, DB_TOGG, QWERTY, RGB_SAI, XXXXXXX, QK_MAKE, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F12, @@ -229,7 +229,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ ││ │ │ │ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ - [_TEMPLATE] = LAYOUT_polydactyl( + [_TEMPLATE] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -252,7 +252,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ │ │ │ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ - [_TEMPLATE] = LAYOUT_konrad( + [_TEMPLATE] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -275,7 +275,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ ││ │ │ │ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ - [_TEMPLATE] = LAYOUT_yubitsume( + [_TEMPLATE] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -299,7 +299,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ │ │ │ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ - [_TEMPLATE] = LAYOUT_saegewerk( + [_TEMPLATE] = LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/klor/keymaps/saegewerk/rules.mk b/keyboards/klor/keymaps/saegewerk/rules.mk index 441dc2ed..fb8a969b 100644 --- a/keyboards/klor/keymaps/saegewerk/rules.mk +++ b/keyboards/klor/keymaps/saegewerk/rules.mk @@ -4,9 +4,10 @@ DYNAMIC_MACRO_ENABLE = no COMBO_ENABLE = no KEY_OVERRIDE_ENABLE = no -#HAPTIC FEEBACK +AUDIO_ENABLE = yes +MUSIC_ENABLE = yes HAPTIC_ENABLE = yes - RGB_MATRIX_ENABLE = yes -MUSIC_ENABLE = yes \ No newline at end of file +# Choose your layout +KLOR_LAYOUT = saegewerk \ No newline at end of file diff --git a/keyboards/klor/klor.c b/keyboards/klor/klor.c index def4d16d..15691567 100644 --- a/keyboards/klor/klor.c +++ b/keyboards/klor/klor.c @@ -17,79 +17,80 @@ #include "klor.h" -#define LAYOUT_polydactyl( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ - L31, L32, L33, L34, R31, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { L10, L11, L12, L13, L14, L15 }, \ - { L20, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, L34, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { R15, R14, R13, R12, R11, R10 }, \ - { R25, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, R31, R30 }, \ - } - -#define LAYOUT_konrad( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ - L31, L32, L33, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { L10, L11, L12, L13, L14, L15 }, \ - { L20, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, ___, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { R15, R14, R13, R12, R11, R10 }, \ - { R25, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, ___, R30 }, \ - } - - -#define LAYOUT_yubitsume( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ - L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ - L31, L32, L33, L34, R31, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { ___, L11, L12, L13, L14, L15 }, \ - { ___, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, L34, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { ___, R14, R13, R12, R11, R10 }, \ - { ___, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, R31, R30 }, \ - } - - -#define LAYOUT_saegewerk( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ - L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ - L31, L32, L33, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { ___, L11, L12, L13, L14, L15 }, \ - { ___, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, ___, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { ___, R14, R13, R12, R11, R10 }, \ - { ___, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, ___, R30 }, \ - } - - -#define LAYOUT LAYOUT_polydactyl +#ifdef KLOR_POLYDACTL +# define LAYOUT LAYOUT_polydactyl +# define LAYOUT_polydactyl( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ + L31, L32, L33, L34, R31, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, L34, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, R31, R30 }, \ + } +#elif defined(KLOR_KONRAD) +# define LAYOUT LAYOUT_konrad +# define LAYOUT_konrad( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ + L31, L32, L33, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, ___, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, ___, R30 }, \ + } +#elif defined(KLOR_YUBITSUME) +# define LAYOUT LAYOUT_yubitsume +# define LAYOUT_yubitsume( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ + L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ + L31, L32, L33, L34, R31, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { ___, L11, L12, L13, L14, L15 }, \ + { ___, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, L34, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { ___, R14, R13, R12, R11, R10 }, \ + { ___, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, R31, R30 }, \ + } +#elif defined(KLOR_SAEGEWERK) +# define LAYOUT LAYOUT_saegewerk +# define LAYOUT_saegewerk( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ + L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ + L31, L32, L33, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { ___, L11, L12, L13, L14, L15 }, \ + { ___, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, ___, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { ___, R14, R13, R12, R11, R10 }, \ + { ___, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, ___, R30 }, \ + } +#endif //KLOR_POLYDACTL @@ -170,132 +171,135 @@ const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = // └────────────────┘ └────────────────┘ -// POLYDACTYL / YUBITSUME -// use this matrix if you use the polydactyl or yubitsume layout ────────────────────────────────────┐ -/* -led_config_t g_led_config = { { -//COL 00 01 02 03 04 05 ROW - { NO_LED, 18, 13, 12, 6, 5 },//00 - { 19, 17, 14, 11, 7, 4 },//01 - { 20, 16, 15, 10, 8, 3 },//02 - { NO_LED, 9, 2, 1, 0, NO_LED },//03 - { NO_LED, 37, 34, 33, 27, 26 },//00 - { 40, 38, 35, 32, 28, 25 },//01 - { 41, 39, 36, 31, 29, 24 },//02 - { NO_LED, 30, 23, 22, 21, NO_LED } //03 -}, { - //LEFT - //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ - { 102, 63 }, { 89, 54 }, { 74, 49 }, { 75, 34 }, { 75, 21 }, { 75, 8 }, { 60, 6 }, - //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ - { 60, 19 }, { 60, 32 }, { 58, 48 }, { 46, 25 }, { 46, 12 }, { 46, 0 }, { 29, 7 }, - //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ - { 30, 20 }, { 31, 33 }, { 17, 42 }, { 15, 30 }, { 13, 17 }, { 0, 28 }, { 3, 41 }, - //RIGHT - //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ - { 122, 63 }, { 135, 54 }, { 150, 49 }, { 149, 34 }, { 149, 21 }, { 149, 8 }, { 163, 6 }, - //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ - { 163, 19 }, { 163, 32 }, { 166, 48 }, { 178, 25 }, { 178, 12 }, { 178, 0 }, { 195, 7 }, - //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ - { 194, 20 }, { 193, 33 }, { 206, 42 }, { 209, 30 }, { 211, 17 }, { 224, 28 }, { 221, 41 } -}, { - //LEFT - 1, 1, 1, 4, 4, 4, 4, - 4, 4, 1, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 1, 1, - //RIGHT - 1, 1, 1, 4, 4, 4, 4, - 4, 4, 1, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 1, 1 -} }; + +# if defined (KLOR_POLYDACTL) || defined(KLOR_YUBITSUME) + // POLYDACTYL / YUBITSUME + // use this matrix if you use the polydactyl or yubitsume layout ────────────────────────────────────┐ + led_config_t g_led_config = { { + //COL 00 01 02 03 04 05 ROW + { NO_LED, 18, 13, 12, 6, 5 },//00 + { 19, 17, 14, 11, 7, 4 },//01 + { 20, 16, 15, 10, 8, 3 },//02 + { NO_LED, 9, 2, 1, 0, NO_LED },//03 + { NO_LED, 37, 34, 33, 27, 26 },//00 + { 40, 38, 35, 32, 28, 25 },//01 + { 41, 39, 36, 31, 29, 24 },//02 + { NO_LED, 30, 23, 22, 21, NO_LED } //03 + }, { + //LEFT + //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ + { 102, 63 }, { 89, 54 }, { 74, 49 }, { 75, 34 }, { 75, 21 }, { 75, 8 }, { 60, 6 }, + //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ + { 60, 19 }, { 60, 32 }, { 58, 48 }, { 46, 25 }, { 46, 12 }, { 46, 0 }, { 29, 7 }, + //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ + { 30, 20 }, { 31, 33 }, { 17, 42 }, { 15, 30 }, { 13, 17 }, { 0, 28 }, { 3, 41 }, + //RIGHT + //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ + { 122, 63 }, { 135, 54 }, { 150, 49 }, { 149, 34 }, { 149, 21 }, { 149, 8 }, { 163, 6 }, + //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ + { 163, 19 }, { 163, 32 }, { 166, 48 }, { 178, 25 }, { 178, 12 }, { 178, 0 }, { 195, 7 }, + //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ + { 194, 20 }, { 193, 33 }, { 206, 42 }, { 209, 30 }, { 211, 17 }, { 224, 28 }, { 221, 41 } + }, { + //LEFT + 1, 1, 1, 4, 4, 4, 4, + 4, 4, 1, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 1, 1, + //RIGHT + 1, 1, 1, 4, 4, 4, 4, + 4, 4, 1, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 1, 1 + } }; // ────────────────────────────────────────────────────────────────────────────────────────────────────┘ -*/ -/* -// KONRAD -// use this matrix if you use the konrad layout ───────────────────────────────────────────────────────┐ -led_config_t g_led_config = { { -//COL 00 01 02 03 04 05 ROW - { NO_LED, 17, 12, 11, 5, 4 },//00 - { 18, 16, 13, 10, 6, 3 },//01 - { 19, 15, 14, 9, 7, 2 },//02 - { NO_LED, 8, 1, 0, NO_LED, NO_LED },//03 - { NO_LED, 37, 32, 31, 25, 24 },//00 - { 38, 36, 33, 30, 26, 23 },//01 - { 39, 35, 34, 29, 27, 22 },//02 - { NO_LED, 28, 21, 20, NO_LED, NO_LED } //03 -}, { - //LEFT - //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ - { 89, 54 }, { 74, 49 }, { 75, 34 }, { 75, 21 }, { 75, 8 }, { 60, 6 }, - //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ - { 60, 19 }, { 60, 32 }, { 58, 48 }, { 46, 25 }, { 46, 12 }, { 46, 0 }, { 29, 7 }, - //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ - { 30, 20 }, { 31, 33 }, { 17, 42 }, { 15, 30 }, { 13, 17 }, { 0, 28 }, { 3, 41 }, - //RIGHT - //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ - { 135, 54 }, { 150, 49 }, { 149, 34 }, { 149, 21 }, { 149, 8 }, { 163, 6 }, - //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ - { 163, 19 }, { 163, 32 }, { 166, 48 }, { 178, 25 }, { 178, 12 }, { 178, 0 }, { 195, 7 }, - //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ - { 194, 20 }, { 193, 33 }, { 206, 42 }, { 209, 30 }, { 211, 17 }, { 224, 28 }, { 221, 41 } -}, { - //LEFT - 1, 1, 4, 4, 4, 4, - 4, 4, 1, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 1, 1, - //RIGHT - 1, 1, 4, 4, 4, 4, - 4, 4, 1, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 1, 1 -} }; + + +# elif defined(KLOR_KONRAD) + // KONRAD + // use this matrix if you use the konrad layout ───────────────────────────────────────────────────────┐ + led_config_t g_led_config = { { + //COL 00 01 02 03 04 05 ROW + { NO_LED, 17, 12, 11, 5, 4 },//00 + { 18, 16, 13, 10, 6, 3 },//01 + { 19, 15, 14, 9, 7, 2 },//02 + { NO_LED, 8, 1, 0, NO_LED, NO_LED },//03 + { NO_LED, 37, 32, 31, 25, 24 },//00 + { 38, 36, 33, 30, 26, 23 },//01 + { 39, 35, 34, 29, 27, 22 },//02 + { NO_LED, 28, 21, 20, NO_LED, NO_LED } //03 + }, { + //LEFT + //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ + { 89, 54 }, { 74, 49 }, { 75, 34 }, { 75, 21 }, { 75, 8 }, { 60, 6 }, + //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ + { 60, 19 }, { 60, 32 }, { 58, 48 }, { 46, 25 }, { 46, 12 }, { 46, 0 }, { 29, 7 }, + //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ + { 30, 20 }, { 31, 33 }, { 17, 42 }, { 15, 30 }, { 13, 17 }, { 0, 28 }, { 3, 41 }, + //RIGHT + //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ + { 135, 54 }, { 150, 49 }, { 149, 34 }, { 149, 21 }, { 149, 8 }, { 163, 6 }, + //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ + { 163, 19 }, { 163, 32 }, { 166, 48 }, { 178, 25 }, { 178, 12 }, { 178, 0 }, { 195, 7 }, + //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ + { 194, 20 }, { 193, 33 }, { 206, 42 }, { 209, 30 }, { 211, 17 }, { 224, 28 }, { 221, 41 } + }, { + //LEFT + 1, 1, 4, 4, 4, 4, + 4, 4, 1, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 1, 1, + //RIGHT + 1, 1, 4, 4, 4, 4, + 4, 4, 1, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 1, 1 + } }; // ────────────────────────────────────────────────────────────────────────────────────────────────────┘ -*/ -/* -// SAEGEWERK -// use this matrix if you use the saegewerk layout ────────────────────────────────────────────────────┐ -led_config_t g_led_config = { { -//COL 00 01 02 03 04 05 ROW - { NO_LED, 17, 12, 11, 5, 4 },//00 - { NO_LED, 16, 13, 10, 6, 3 },//01 - { NO_LED, 15, 14, 9, 7, 2 },//02 - { NO_LED, 8, 1, 0, NO_LED, NO_LED },//03 - { NO_LED, 35, 30, 29, 23, 22 },//00 - { NO_LED, 34, 31, 28, 24, 21 },//01 - { NO_LED, 33, 32, 27, 25, 20 },//02 - { NO_LED, 26, 19, 18, NO_LED, NO_LED } //03 -}, { - //LEFT - //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ - { 89, 54 }, { 74, 49 }, { 75, 34 }, { 75, 21 }, { 75, 8 }, { 60, 6 }, - //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ - { 60, 19 }, { 60, 32 }, { 58, 48 }, { 46, 25 }, { 46, 12 }, { 46, 0 }, { 29, 7 }, - //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ - { 30, 20 }, { 31, 33 }, { 17, 42 }, { 15, 30 }, { 13, 17 }, - //RIGHT - //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ - { 135, 54 }, { 150, 49 }, { 149, 34 }, { 149, 21 }, { 149, 8 }, { 163, 6 }, - //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ - { 163, 19 }, { 163, 32 }, { 166, 48 }, { 178, 25 }, { 178, 12 }, { 178, 0 }, { 195, 7 }, - //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ - { 194, 20 }, { 193, 33 }, { 206, 42 }, { 209, 30 }, { 211, 17 } -}, { - //LEFT - 1, 1, 4, 4, 4, 4, - 4, 4, 1, 4, 4, 4, 4, - 4, 4, 4, 4, 4, - //RIGHT - 1, 1, 4, 4, 4, 4, - 4, 4, 1, 4, 4, 4, 4, - 4, 4, 4, 4, 4 -} }; +# elif defined(KLOR_SAEGEWERK) + // SAEGEWERK + // use this matrix if you use the saegewerk layout ────────────────────────────────────────────────────┐ + led_config_t g_led_config = { { + //COL 00 01 02 03 04 05 ROW + { NO_LED, 17, 12, 11, 5, 4 },//00 + { NO_LED, 16, 13, 10, 6, 3 },//01 + { NO_LED, 15, 14, 9, 7, 2 },//02 + { NO_LED, 8, 1, 0, NO_LED, NO_LED },//03 + { NO_LED, 35, 30, 29, 23, 22 },//00 + { NO_LED, 34, 31, 28, 24, 21 },//01 + { NO_LED, 33, 32, 27, 25, 20 },//02 + { NO_LED, 26, 19, 18, NO_LED, NO_LED } //03 + }, { + //LEFT + //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ + { 89, 54 }, { 74, 49 }, { 75, 34 }, { 75, 21 }, { 75, 8 }, { 60, 6 }, + //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ + { 60, 19 }, { 60, 32 }, { 58, 48 }, { 46, 25 }, { 46, 12 }, { 46, 0 }, { 29, 7 }, + //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ + { 30, 20 }, { 31, 33 }, { 17, 42 }, { 15, 30 }, { 13, 17 }, + //RIGHT + //thumb1 ▼ thumb2 ▼ thumb3 ▼ C0 R3 ▼ C0 R2 ▼ C0 R1 ▼ C1 R1 ▼ + { 135, 54 }, { 150, 49 }, { 149, 34 }, { 149, 21 }, { 149, 8 }, { 163, 6 }, + //C1 R2 ▼ C1 R3 ▼ thumb4 ▼ C2 R3 ▼ C2 R2 ▼ C2 R1 ▼ C3 R1 ▼ + { 163, 19 }, { 163, 32 }, { 166, 48 }, { 178, 25 }, { 178, 12 }, { 178, 0 }, { 195, 7 }, + //C3 R2 ▼ C3 R3 ▼ C4 R3 ▼ C4 R2 ▼ C4 R1 ▼ C5 R2 ▼ C5 R3 ▼ + { 194, 20 }, { 193, 33 }, { 206, 42 }, { 209, 30 }, { 211, 17 } + }, { + //LEFT + 1, 1, 4, 4, 4, 4, + 4, 4, 1, 4, 4, 4, 4, + 4, 4, 4, 4, 4, + //RIGHT + 1, 1, 4, 4, 4, 4, + 4, 4, 1, 4, 4, 4, 4, + 4, 4, 4, 4, 4 + } }; // ────────────────────────────────────────────────────────────────────────────────────────────────────┘ -*/ + +# endif //KLOR_POLYDACTL || KLOR_YUBITSUME + void suspend_power_down_kb(void) { rgb_matrix_set_suspend_state(true); @@ -306,6 +310,7 @@ void suspend_wakeup_init_kb(void) { rgb_matrix_set_suspend_state(false); suspend_wakeup_init_user(); } + #endif //RGB_MATRIX_ENABLE diff --git a/keyboards/klor/post_rules.mk b/keyboards/klor/post_rules.mk new file mode 100644 index 00000000..d66744d5 --- /dev/null +++ b/keyboards/klor/post_rules.mk @@ -0,0 +1,7 @@ +VALID_KLOR_LAYOUTS := polydactyl konrad yubitsume saegewerk + +ifeq ($(filter $(KLOR_LAYOUT),$(VALID_KLOR_LAYOUTS)),) + $(call CATASTROPHIC_ERROR,Invalid KLOR_LAYOUT,KLOR_LAYOUT="$(KLOR_LAYOUT)" is not a valid Haptic driver) +else + OPT_DEFS += -DKLOR_$(strip $(shell echo $(KLOR_LAYOUT) | tr '[:lower:]' '[:upper:]')) +endif diff --git a/keyboards/klor/readme.md b/keyboards/klor/readme.md index 6632bcf2..c7e1f205 100644 --- a/keyboards/klor/readme.md +++ b/keyboards/klor/readme.md @@ -17,10 +17,23 @@ KLOR is 42 keys column-staggered split keyboard made by @geigeigeist. It supports a per key RGB matrix, encoders, OLED displays, haptic feedback, audio, a Pixart Paw3204 trackball and four different layouts, through brake off parts. It's schematics are based on the Sofle, while the layout is based on the Yacc46. -t4croun: this is my attempt at modernizing @geigeigeist's keymap. The repo has not been updated in a few years and QMK has introduced breaking changes. His repo can be found [here](https://github.com/GEIGEIGEIST/qmk-config-klor). Note: Focusing on defining my saegewerk configuration as that is what I have - You can use this command to compile the firmware `qmk compile -kb klor -km default` and this command if you want to compile the firmware for a RP2040 based MCU -`qmk compile -kb klor/2040 -km default` \ No newline at end of file +`qmk compile -kb klor/2040 -km default` + +## t4corun modernization + +this is my attempt at modernizing @geigeigeist's repo. It has not been updated in a few years and firmware cannot be built as-is as QMK has introduced breaking changes. @geigeigeist's repo can be found [here](https://github.com/GEIGEIGEIST/qmk-config-klor). Should work for all KLOR variations, but I tested against Saegwerk as that is the one I have + +Features + +- Can choose layout based on keymap rules.mk configuration. Before keyboard configuration would need to be changed +- Converted as much as possible to data driven configuration: `info.json` + +What I did not test + +- RGBLight +- Other variations (e.g.Polydactyl) +- Swap Hands \ No newline at end of file diff --git a/keyboards/klor/rules.mk b/keyboards/klor/rules.mk index 22ee7738..dd29fbe1 100644 --- a/keyboards/klor/rules.mk +++ b/keyboards/klor/rules.mk @@ -1,28 +1,4 @@ -# A number of these rules were moved into info.json - -# Build Options -# change yes to no to disable -# -#SWAP_HANDS_ENABLE = yes - -#OLED_ENABLE = yes +# Features are now defined in info.json when possible # HAPTIC FEEDBACK -HAPTIC_DRIVER = drv2605l - -# PER KEY RGB -#BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -#RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow -#RGB_MATRIX_ENABLE = no # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE) - -# SPACE SAVING -# EXTRAKEY_ENABLE = no -# AUDIO_ENABLE = no -# MUSIC_ENABLE = no -# LTO_ENABLE = no -# CONSOLE_ENABLE = no -# COMMAND_ENABLE = no -# MOUSEKEY_ENABLE = no -# SPACE_CADET_ENABLE = no -# GRAVE_ESC_ENABLE = no -# MAGIC_ENABLE = no +HAPTIC_DRIVER = drv2605l \ No newline at end of file From cd8e39822c359ec2f276146da780721175424189 Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 15 May 2024 08:02:21 -0500 Subject: [PATCH 10/34] Added debug statements --- keyboards/klor/post_rules.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/keyboards/klor/post_rules.mk b/keyboards/klor/post_rules.mk index d66744d5..feac41cf 100644 --- a/keyboards/klor/post_rules.mk +++ b/keyboards/klor/post_rules.mk @@ -5,3 +5,5 @@ ifeq ($(filter $(KLOR_LAYOUT),$(VALID_KLOR_LAYOUTS)),) else OPT_DEFS += -DKLOR_$(strip $(shell echo $(KLOR_LAYOUT) | tr '[:lower:]' '[:upper:]')) endif + +$(info $(OPT_DEFS)) \ No newline at end of file From 729d9f2353c1f21b49c51565f9cfed836db23a5d Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 15 May 2024 08:07:53 -0500 Subject: [PATCH 11/34] Had the layout defined wrong - To alias a function I needed to add the parameters part --- keyboards/klor/klor.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/keyboards/klor/klor.c b/keyboards/klor/klor.c index 15691567..1ac1643b 100644 --- a/keyboards/klor/klor.c +++ b/keyboards/klor/klor.c @@ -19,7 +19,6 @@ #ifdef KLOR_POLYDACTL -# define LAYOUT LAYOUT_polydactyl # define LAYOUT_polydactyl( \ L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ @@ -36,8 +35,8 @@ { R25, R24, R23, R22, R21, R20 }, \ { ___, R34, R33, R32, R31, R30 }, \ } +# define LAYOUT(...) LAYOUT_polydactyl(__VA_ARGS__) #elif defined(KLOR_KONRAD) -# define LAYOUT LAYOUT_konrad # define LAYOUT_konrad( \ L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ @@ -54,8 +53,8 @@ { R25, R24, R23, R22, R21, R20 }, \ { ___, R34, R33, R32, ___, R30 }, \ } +# define LAYOUT(...) LAYOUT_konrad(__VA_ARGS__) #elif defined(KLOR_YUBITSUME) -# define LAYOUT LAYOUT_yubitsume # define LAYOUT_yubitsume( \ L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ @@ -73,7 +72,6 @@ { ___, R34, R33, R32, R31, R30 }, \ } #elif defined(KLOR_SAEGEWERK) -# define LAYOUT LAYOUT_saegewerk # define LAYOUT_saegewerk( \ L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ @@ -90,6 +88,7 @@ { ___, R24, R23, R22, R21, R20 }, \ { ___, R34, R33, R32, ___, R30 }, \ } +# define LAYOUT(...) LAYOUT_saegewerk(__VA_ARGS__) #endif //KLOR_POLYDACTL From 383363e0d8e355c8691c0f7e8413fc64ea37d0d5 Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 15 May 2024 08:19:28 -0500 Subject: [PATCH 12/34] moved the layout back to klor.h --- keyboards/klor/klor.c | 75 ------------------------------------------ keyboards/klor/klor.h | 76 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 75 insertions(+), 76 deletions(-) diff --git a/keyboards/klor/klor.c b/keyboards/klor/klor.c index 1ac1643b..253818c2 100644 --- a/keyboards/klor/klor.c +++ b/keyboards/klor/klor.c @@ -18,81 +18,6 @@ #include "klor.h" -#ifdef KLOR_POLYDACTL -# define LAYOUT_polydactyl( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ - L31, L32, L33, L34, R31, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { L10, L11, L12, L13, L14, L15 }, \ - { L20, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, L34, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { R15, R14, R13, R12, R11, R10 }, \ - { R25, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, R31, R30 }, \ - } -# define LAYOUT(...) LAYOUT_polydactyl(__VA_ARGS__) -#elif defined(KLOR_KONRAD) -# define LAYOUT_konrad( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ - L31, L32, L33, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { L10, L11, L12, L13, L14, L15 }, \ - { L20, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, ___, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { R15, R14, R13, R12, R11, R10 }, \ - { R25, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, ___, R30 }, \ - } -# define LAYOUT(...) LAYOUT_konrad(__VA_ARGS__) -#elif defined(KLOR_YUBITSUME) -# define LAYOUT_yubitsume( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ - L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ - L31, L32, L33, L34, R31, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { ___, L11, L12, L13, L14, L15 }, \ - { ___, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, L34, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { ___, R14, R13, R12, R11, R10 }, \ - { ___, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, R31, R30 }, \ - } -#elif defined(KLOR_SAEGEWERK) -# define LAYOUT_saegewerk( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ - L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ - L31, L32, L33, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { ___, L11, L12, L13, L14, L15 }, \ - { ___, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, ___, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { ___, R14, R13, R12, R11, R10 }, \ - { ___, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, ___, R30 }, \ - } -# define LAYOUT(...) LAYOUT_saegewerk(__VA_ARGS__) -#endif //KLOR_POLYDACTL - - - oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return OLED_ROTATION_180; } diff --git a/keyboards/klor/klor.h b/keyboards/klor/klor.h index f087d80d..09eeb4e3 100644 --- a/keyboards/klor/klor.h +++ b/keyboards/klor/klor.h @@ -28,4 +28,78 @@ */ // readability -#define ___ KC_NO \ No newline at end of file +#define ___ KC_NO + +#ifdef KLOR_POLYDACTYL +# define LAYOUT_polydactyl( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ + L31, L32, L33, L34, R31, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, L34, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, R31, R30 }, \ + } +# define LAYOUT(...) LAYOUT_polydactyl(__VA_ARGS__) +#elif defined(KLOR_KONRAD) +# define LAYOUT_konrad( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ + L31, L32, L33, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, ___, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, ___, R30 }, \ + } +# define LAYOUT(...) LAYOUT_konrad(__VA_ARGS__) +#elif defined(KLOR_YUBITSUME) +# define LAYOUT_yubitsume( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ + L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ + L31, L32, L33, L34, R31, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { ___, L11, L12, L13, L14, L15 }, \ + { ___, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, L34, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { ___, R14, R13, R12, R11, R10 }, \ + { ___, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, R31, R30 }, \ + } +# define LAYOUT(...) LAYOUT_yubitsume(__VA_ARGS__) +#elif defined(KLOR_SAEGEWERK) +# define LAYOUT_saegewerk( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ + L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ + L31, L32, L33, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { ___, L11, L12, L13, L14, L15 }, \ + { ___, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, ___, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { ___, R14, R13, R12, R11, R10 }, \ + { ___, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, ___, R30 }, \ + } +# define LAYOUT(...) LAYOUT_saegewerk(__VA_ARGS__) +#endif //KLOR_POLYDACTL From e392568f09ac073b9cbdbbcb4c8a979d2380f19d Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 15 May 2024 08:34:21 -0500 Subject: [PATCH 13/34] had to move the layouts back - trying something in left field to make it work --- keyboards/klor/klor.c | 150 ++++++++++++++++++++++++++++++++++++++++++ keyboards/klor/klor.h | 76 +-------------------- 2 files changed, 151 insertions(+), 75 deletions(-) diff --git a/keyboards/klor/klor.c b/keyboards/klor/klor.c index 253818c2..3b8b8071 100644 --- a/keyboards/klor/klor.c +++ b/keyboards/klor/klor.c @@ -17,6 +17,156 @@ #include "klor.h" +#ifdef KLOR_POLYDACTYL +# define LAYOUT( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ + L31, L32, L33, L34, R31, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, L34, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, R31, R30 }, \ + } +//# define LAYOUT(...) LAYOUT_polydactyl(__VA_ARGS__) +#elif defined(KLOR_KONRAD) +# define LAYOUT_konrad( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ + L31, L32, L33, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, ___, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, ___, R30 }, \ + } +//# define LAYOUT(...) LAYOUT_konrad(__VA_ARGS__) +#elif defined(KLOR_YUBITSUME) +# define LAYOUT_yubitsume( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ + L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ + L31, L32, L33, L34, R31, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { ___, L11, L12, L13, L14, L15 }, \ + { ___, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, L34, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { ___, R14, R13, R12, R11, R10 }, \ + { ___, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, R31, R30 }, \ + } +//# define LAYOUT(...) LAYOUT_yubitsume(__VA_ARGS__) +#elif defined(KLOR_SAEGEWERK) +# define LAYOUT( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ + L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ + L31, L32, L33, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { ___, L11, L12, L13, L14, L15 }, \ + { ___, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, ___, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { ___, R14, R13, R12, R11, R10 }, \ + { ___, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, ___, R30 }, \ + } +//# define LAYOUT(...) LAYOUT_saegewerk(__VA_ARGS__) +#endif //KLOR_POLYDACTL + +/* +#ifdef KLOR_POLYDACTYL +# define LAYOUT_polydactyl( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ + L31, L32, L33, L34, R31, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, L34, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, R31, R30 }, \ + } +# define LAYOUT(...) LAYOUT_polydactyl(__VA_ARGS__) +#elif defined(KLOR_KONRAD) +# define LAYOUT_konrad( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ + L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ + L31, L32, L33, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, ___, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { R15, R14, R13, R12, R11, R10 }, \ + { R25, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, ___, R30 }, \ + } +# define LAYOUT(...) LAYOUT_konrad(__VA_ARGS__) +#elif defined(KLOR_YUBITSUME) +# define LAYOUT_yubitsume( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ + L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ + L31, L32, L33, L34, R31, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { ___, L11, L12, L13, L14, L15 }, \ + { ___, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, L34, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { ___, R14, R13, R12, R11, R10 }, \ + { ___, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, R31, R30 }, \ + } +# define LAYOUT(...) LAYOUT_yubitsume(__VA_ARGS__) +#elif defined(KLOR_SAEGEWERK) +# define LAYOUT_saegewerk( \ + L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ + L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ + L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ + L31, L32, L33, R32, R33, R34 \ + ) \ + { \ + { ___, L01, L02, L03, L04, L05 }, \ + { ___, L11, L12, L13, L14, L15 }, \ + { ___, L21, L22, L23, L24, L25 }, \ + { ___, L31, L32, L33, ___, L35 }, \ + { ___, R04, R03, R02, R01, R00 }, \ + { ___, R14, R13, R12, R11, R10 }, \ + { ___, R24, R23, R22, R21, R20 }, \ + { ___, R34, R33, R32, ___, R30 }, \ + } +# define LAYOUT(...) LAYOUT_saegewerk(__VA_ARGS__) +#endif //KLOR_POLYDACTL + +*/ oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return OLED_ROTATION_180; diff --git a/keyboards/klor/klor.h b/keyboards/klor/klor.h index 09eeb4e3..f087d80d 100644 --- a/keyboards/klor/klor.h +++ b/keyboards/klor/klor.h @@ -28,78 +28,4 @@ */ // readability -#define ___ KC_NO - -#ifdef KLOR_POLYDACTYL -# define LAYOUT_polydactyl( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ - L31, L32, L33, L34, R31, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { L10, L11, L12, L13, L14, L15 }, \ - { L20, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, L34, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { R15, R14, R13, R12, R11, R10 }, \ - { R25, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, R31, R30 }, \ - } -# define LAYOUT(...) LAYOUT_polydactyl(__VA_ARGS__) -#elif defined(KLOR_KONRAD) -# define LAYOUT_konrad( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ - L31, L32, L33, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { L10, L11, L12, L13, L14, L15 }, \ - { L20, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, ___, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { R15, R14, R13, R12, R11, R10 }, \ - { R25, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, ___, R30 }, \ - } -# define LAYOUT(...) LAYOUT_konrad(__VA_ARGS__) -#elif defined(KLOR_YUBITSUME) -# define LAYOUT_yubitsume( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ - L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ - L31, L32, L33, L34, R31, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { ___, L11, L12, L13, L14, L15 }, \ - { ___, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, L34, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { ___, R14, R13, R12, R11, R10 }, \ - { ___, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, R31, R30 }, \ - } -# define LAYOUT(...) LAYOUT_yubitsume(__VA_ARGS__) -#elif defined(KLOR_SAEGEWERK) -# define LAYOUT_saegewerk( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ - L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ - L31, L32, L33, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { ___, L11, L12, L13, L14, L15 }, \ - { ___, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, ___, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { ___, R14, R13, R12, R11, R10 }, \ - { ___, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, ___, R30 }, \ - } -# define LAYOUT(...) LAYOUT_saegewerk(__VA_ARGS__) -#endif //KLOR_POLYDACTL +#define ___ KC_NO \ No newline at end of file From a799835a1c07a1c3658277576659f7ddf0980753 Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 15 May 2024 08:40:20 -0500 Subject: [PATCH 14/34] Reverting some to test --- keyboards/klor/keymaps/default/keymap.c | 10 +++++----- keyboards/klor/klor.c | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboards/klor/keymaps/default/keymap.c b/keyboards/klor/keymaps/default/keymap.c index 5f7605b1..f830fc1f 100644 --- a/keyboards/klor/keymaps/default/keymap.c +++ b/keyboards/klor/keymaps/default/keymap.c @@ -114,7 +114,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPACE │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_QWERTY] = LAYOUT( + [_QWERTY] = LAYOUT_polydactyl( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, @@ -136,7 +136,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPCE │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_COLEMAK] = LAYOUT( + [_COLEMAK] = LAYOUT_polydactyl( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_TAB, GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, KC_QUOT, @@ -160,7 +160,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ADJUST │ 0 │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_LOWER] = LAYOUT( + [_LOWER] = LAYOUT_polydactyl( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_ESC, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, KC_DQT, @@ -183,7 +183,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ ADJUST │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_RAISE] = LAYOUT( + [_RAISE] = LAYOUT_polydactyl( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, @@ -206,7 +206,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_ADJUST] = LAYOUT( + [_ADJUST] = LAYOUT_polydactyl( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ AU_TOGG, HF_TOGG, RGB_HUI, RGB_MOD, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F14, QK_BOOT, DB_TOGG, QWERTY, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F12, KC_F13, diff --git a/keyboards/klor/klor.c b/keyboards/klor/klor.c index 3b8b8071..11d01994 100644 --- a/keyboards/klor/klor.c +++ b/keyboards/klor/klor.c @@ -18,7 +18,7 @@ #include "klor.h" #ifdef KLOR_POLYDACTYL -# define LAYOUT( \ +# define LAYOUT_polydactyl( \ L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ From 1300fefdac770185dd638e883c29e5b9d2b0ce8f Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 15 May 2024 08:45:40 -0500 Subject: [PATCH 15/34] Focusing on Saegewerk now - trying the wrapper again --- keyboards/klor/klor.c | 4 ++-- keyboards/klor/post_rules.mk | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/keyboards/klor/klor.c b/keyboards/klor/klor.c index 11d01994..7d71244a 100644 --- a/keyboards/klor/klor.c +++ b/keyboards/klor/klor.c @@ -72,7 +72,7 @@ } //# define LAYOUT(...) LAYOUT_yubitsume(__VA_ARGS__) #elif defined(KLOR_SAEGEWERK) -# define LAYOUT( \ +# define LAYOUT_saegewerk( \ L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ @@ -88,7 +88,7 @@ { ___, R24, R23, R22, R21, R20 }, \ { ___, R34, R33, R32, ___, R30 }, \ } -//# define LAYOUT(...) LAYOUT_saegewerk(__VA_ARGS__) +# define LAYOUT(...) LAYOUT_saegewerk(__VA_ARGS__) #endif //KLOR_POLYDACTL /* diff --git a/keyboards/klor/post_rules.mk b/keyboards/klor/post_rules.mk index feac41cf..1a3f8ff4 100644 --- a/keyboards/klor/post_rules.mk +++ b/keyboards/klor/post_rules.mk @@ -4,6 +4,4 @@ ifeq ($(filter $(KLOR_LAYOUT),$(VALID_KLOR_LAYOUTS)),) $(call CATASTROPHIC_ERROR,Invalid KLOR_LAYOUT,KLOR_LAYOUT="$(KLOR_LAYOUT)" is not a valid Haptic driver) else OPT_DEFS += -DKLOR_$(strip $(shell echo $(KLOR_LAYOUT) | tr '[:lower:]' '[:upper:]')) -endif - -$(info $(OPT_DEFS)) \ No newline at end of file +endif \ No newline at end of file From d06600da02ac6c804653764db88154a6bf009434 Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 15 May 2024 08:54:13 -0500 Subject: [PATCH 16/34] maybe LAYOUT is a keyword - changed to LAYOUT_KLOR --- keyboards/klor/keymaps/saegewerk/keymap.c | 10 +++++----- keyboards/klor/klor.c | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboards/klor/keymaps/saegewerk/keymap.c b/keyboards/klor/keymaps/saegewerk/keymap.c index 4c5c7815..4e661741 100644 --- a/keyboards/klor/keymaps/saegewerk/keymap.c +++ b/keyboards/klor/keymaps/saegewerk/keymap.c @@ -113,7 +113,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ │ ENTER │ RAISE │ BSPACE │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_QWERTY] = LAYOUT( + [_QWERTY] = LAYOUT_KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, @@ -135,7 +135,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ │ ENTER │ RAISE │ BSPCE │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_COLEMAK] = LAYOUT( + [_COLEMAK] = LAYOUT_KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, @@ -159,7 +159,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ │ ▼ │ ADJUST │ 0 │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_LOWER] = LAYOUT( + [_LOWER] = LAYOUT_KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, @@ -182,7 +182,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ ADJUST │ ▼ │ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_RAISE] = LAYOUT( + [_RAISE] = LAYOUT_KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, @@ -205,7 +205,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_ADJUST] = LAYOUT( + [_ADJUST] = LAYOUT_KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ AU_TOGG, HF_TOGG, RGB_HUI, RGB_MOD, QK_BOOT, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F11, DB_TOGG, QWERTY, RGB_SAI, XXXXXXX, QK_MAKE, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F12, diff --git a/keyboards/klor/klor.c b/keyboards/klor/klor.c index 7d71244a..5b4c7bea 100644 --- a/keyboards/klor/klor.c +++ b/keyboards/klor/klor.c @@ -88,7 +88,7 @@ { ___, R24, R23, R22, R21, R20 }, \ { ___, R34, R33, R32, ___, R30 }, \ } -# define LAYOUT(...) LAYOUT_saegewerk(__VA_ARGS__) +# define LAYOUT_KLOR(...) LAYOUT_saegewerk(__VA_ARGS__) #endif //KLOR_POLYDACTL /* From a80b4c97efbe8842bf6885303b6084581b92f8df Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 15 May 2024 09:01:21 -0500 Subject: [PATCH 17/34] Moving the alias to the keymap to try --- keyboards/klor/keymaps/saegewerk/keymap.c | 2 ++ keyboards/klor/klor.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/keyboards/klor/keymaps/saegewerk/keymap.c b/keyboards/klor/keymaps/saegewerk/keymap.c index 4e661741..cda73673 100644 --- a/keyboards/klor/keymaps/saegewerk/keymap.c +++ b/keyboards/klor/keymaps/saegewerk/keymap.c @@ -95,6 +95,8 @@ enum custom_keycodes { // └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ // ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ +#define LAYOUT_KLOR(...) LAYOUT_saegewerk(__VA_ARGS__) + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* diff --git a/keyboards/klor/klor.c b/keyboards/klor/klor.c index 5b4c7bea..923e1157 100644 --- a/keyboards/klor/klor.c +++ b/keyboards/klor/klor.c @@ -88,7 +88,7 @@ { ___, R24, R23, R22, R21, R20 }, \ { ___, R34, R33, R32, ___, R30 }, \ } -# define LAYOUT_KLOR(...) LAYOUT_saegewerk(__VA_ARGS__) +//# define LAYOUT_KLOR(...) LAYOUT_saegewerk(__VA_ARGS__) #endif //KLOR_POLYDACTL /* From 555c17e3cddfe4013381c97ff8a7f919995289b2 Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 15 May 2024 10:05:19 -0500 Subject: [PATCH 18/34] The last commit did work - so moving the alias to .h file --- keyboards/klor/keymaps/default/keymap.c | 10 +++++----- keyboards/klor/keymaps/saegewerk/keymap.c | 3 ++- keyboards/klor/klor.h | 13 ++++++++++++- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/keyboards/klor/keymaps/default/keymap.c b/keyboards/klor/keymaps/default/keymap.c index f830fc1f..b9ded793 100644 --- a/keyboards/klor/keymaps/default/keymap.c +++ b/keyboards/klor/keymaps/default/keymap.c @@ -114,7 +114,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPACE │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_QWERTY] = LAYOUT_polydactyl( + [_QWERTY] = LAYOUT_KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, @@ -136,7 +136,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPCE │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_COLEMAK] = LAYOUT_polydactyl( + [_COLEMAK] = LAYOUT_KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_TAB, GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, KC_QUOT, @@ -160,7 +160,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ADJUST │ 0 │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_LOWER] = LAYOUT_polydactyl( + [_LOWER] = LAYOUT_KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_ESC, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, KC_DQT, @@ -183,7 +183,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ ADJUST │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_RAISE] = LAYOUT_polydactyl( + [_RAISE] = LAYOUT_KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, @@ -206,7 +206,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_ADJUST] = LAYOUT_polydactyl( + [_ADJUST] = LAYOUT_KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ AU_TOGG, HF_TOGG, RGB_HUI, RGB_MOD, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F14, QK_BOOT, DB_TOGG, QWERTY, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F12, KC_F13, diff --git a/keyboards/klor/keymaps/saegewerk/keymap.c b/keyboards/klor/keymaps/saegewerk/keymap.c index cda73673..e9c23609 100644 --- a/keyboards/klor/keymaps/saegewerk/keymap.c +++ b/keyboards/klor/keymaps/saegewerk/keymap.c @@ -95,7 +95,8 @@ enum custom_keycodes { // └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ // ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ -#define LAYOUT_KLOR(...) LAYOUT_saegewerk(__VA_ARGS__) +//putting this here does make it work +//#define LAYOUT_KLOR(...) LAYOUT_saegewerk(__VA_ARGS__) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { diff --git a/keyboards/klor/klor.h b/keyboards/klor/klor.h index f087d80d..ae4aa8ab 100644 --- a/keyboards/klor/klor.h +++ b/keyboards/klor/klor.h @@ -28,4 +28,15 @@ */ // readability -#define ___ KC_NO \ No newline at end of file +#define ___ KC_NO + + +#ifdef KLOR_POLYDACTYL +# define LAYOUT_KLOR(...) LAYOUT_polydactyl(__VA_ARGS__) +#elif defined(KLOR_KONRAD) +# define LAYOUT_KLOR(...) LAYOUT_konrad(__VA_ARGS__) +#elif defined(KLOR_YUBITSUME) +# define LAYOUT_KLOR(...) LAYOUT_yubitsume(__VA_ARGS__) +#elif defined(KLOR_SAEGEWERK) +# define LAYOUT_KLOR(...) LAYOUT_saegewerk(__VA_ARGS__) +#endif //KLOR_POLYDACTL From 0c479c05025d739c5ba5572140061c97d6526021 Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 15 May 2024 23:07:32 -0500 Subject: [PATCH 19/34] Got everything working - can't have a layout macro start with LAYOUT. Now it's just KLOR(...) - Turn off extra features for AVR MCU in post_rules.mk. This helps all customizations remain in the keymap. - Updatd documentation --- keyboards/klor/keymaps/default/keymap.c | 18 ++--- keyboards/klor/keymaps/default/rules.mk | 2 + keyboards/klor/keymaps/saegewerk/keymap.c | 18 ++--- keyboards/klor/keymaps/saegewerk/rules.mk | 1 + keyboards/klor/klor.c | 85 ++--------------------- keyboards/klor/klor.h | 8 +-- keyboards/klor/post_rules.mk | 10 ++- keyboards/klor/readme.md | 1 + 8 files changed, 39 insertions(+), 104 deletions(-) diff --git a/keyboards/klor/keymaps/default/keymap.c b/keyboards/klor/keymaps/default/keymap.c index b9ded793..a15b4f79 100644 --- a/keyboards/klor/keymaps/default/keymap.c +++ b/keyboards/klor/keymaps/default/keymap.c @@ -114,7 +114,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPACE │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_QWERTY] = LAYOUT_KLOR( + [_QWERTY] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, @@ -136,7 +136,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPCE │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_COLEMAK] = LAYOUT_KLOR( + [_COLEMAK] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_TAB, GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, KC_QUOT, @@ -160,7 +160,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ADJUST │ 0 │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_LOWER] = LAYOUT_KLOR( + [_LOWER] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_ESC, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, KC_DQT, @@ -183,7 +183,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ ADJUST │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_RAISE] = LAYOUT_KLOR( + [_RAISE] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, @@ -206,7 +206,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_ADJUST] = LAYOUT_KLOR( + [_ADJUST] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ AU_TOGG, HF_TOGG, RGB_HUI, RGB_MOD, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F14, QK_BOOT, DB_TOGG, QWERTY, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F12, KC_F13, @@ -230,7 +230,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ ││ │ │ │ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ - [_TEMPLATE] = LAYOUT( + [_TEMPLATE] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -253,7 +253,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ │ │ │ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ - [_TEMPLATE] = LAYOUT( + [_TEMPLATE] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -276,7 +276,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ ││ │ │ │ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ - [_TEMPLATE] = LAYOUT( + [_TEMPLATE] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -300,7 +300,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ │ │ │ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ - [_TEMPLATE] = LAYOUT( + [_TEMPLATE] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/klor/keymaps/default/rules.mk b/keyboards/klor/keymaps/default/rules.mk index 8ce307e3..8589fb8c 100644 --- a/keyboards/klor/keymaps/default/rules.mk +++ b/keyboards/klor/keymaps/default/rules.mk @@ -4,9 +4,11 @@ DYNAMIC_MACRO_ENABLE = no COMBO_ENABLE = no KEY_OVERRIDE_ENABLE = no +# These features will be disabled in post_rules.mk if using an AVR MCU AUDIO_ENABLE = yes MUSIC_ENABLE = yes HAPTIC_ENABLE = no +RGB_MATRIX_ENABLE = no # Choose your layout KLOR_LAYOUT = polydactyl \ No newline at end of file diff --git a/keyboards/klor/keymaps/saegewerk/keymap.c b/keyboards/klor/keymaps/saegewerk/keymap.c index e9c23609..168454f7 100644 --- a/keyboards/klor/keymaps/saegewerk/keymap.c +++ b/keyboards/klor/keymaps/saegewerk/keymap.c @@ -116,7 +116,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ │ ENTER │ RAISE │ BSPACE │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_QWERTY] = LAYOUT_KLOR( + [_QWERTY] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, @@ -138,7 +138,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ │ ENTER │ RAISE │ BSPCE │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_COLEMAK] = LAYOUT_KLOR( + [_COLEMAK] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, @@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ │ ▼ │ ADJUST │ 0 │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_LOWER] = LAYOUT_KLOR( + [_LOWER] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, @@ -185,7 +185,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ ADJUST │ ▼ │ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_RAISE] = LAYOUT_KLOR( + [_RAISE] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, @@ -208,7 +208,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_ADJUST] = LAYOUT_KLOR( + [_ADJUST] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ AU_TOGG, HF_TOGG, RGB_HUI, RGB_MOD, QK_BOOT, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F11, DB_TOGG, QWERTY, RGB_SAI, XXXXXXX, QK_MAKE, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F12, @@ -232,7 +232,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ ││ │ │ │ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ - [_TEMPLATE] = LAYOUT( + [_TEMPLATE] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -255,7 +255,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ │ │ │ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ - [_TEMPLATE] = LAYOUT( + [_TEMPLATE] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -278,7 +278,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ ││ │ │ │ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ - [_TEMPLATE] = LAYOUT( + [_TEMPLATE] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -302,7 +302,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ │ │ │ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ - [_TEMPLATE] = LAYOUT( + [_TEMPLATE] = KLOR( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/klor/keymaps/saegewerk/rules.mk b/keyboards/klor/keymaps/saegewerk/rules.mk index fb8a969b..3c6c3e29 100644 --- a/keyboards/klor/keymaps/saegewerk/rules.mk +++ b/keyboards/klor/keymaps/saegewerk/rules.mk @@ -4,6 +4,7 @@ DYNAMIC_MACRO_ENABLE = no COMBO_ENABLE = no KEY_OVERRIDE_ENABLE = no +# These features will be disabled in post_rules.mk if using an AVR MCU AUDIO_ENABLE = yes MUSIC_ENABLE = yes HAPTIC_ENABLE = yes diff --git a/keyboards/klor/klor.c b/keyboards/klor/klor.c index 923e1157..f18a0754 100644 --- a/keyboards/klor/klor.c +++ b/keyboards/klor/klor.c @@ -34,7 +34,7 @@ { R25, R24, R23, R22, R21, R20 }, \ { ___, R34, R33, R32, R31, R30 }, \ } -//# define LAYOUT(...) LAYOUT_polydactyl(__VA_ARGS__) + #elif defined(KLOR_KONRAD) # define LAYOUT_konrad( \ L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ @@ -52,7 +52,7 @@ { R25, R24, R23, R22, R21, R20 }, \ { ___, R34, R33, R32, ___, R30 }, \ } -//# define LAYOUT(...) LAYOUT_konrad(__VA_ARGS__) + #elif defined(KLOR_YUBITSUME) # define LAYOUT_yubitsume( \ L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ @@ -70,7 +70,7 @@ { ___, R24, R23, R22, R21, R20 }, \ { ___, R34, R33, R32, R31, R30 }, \ } -//# define LAYOUT(...) LAYOUT_yubitsume(__VA_ARGS__) + #elif defined(KLOR_SAEGEWERK) # define LAYOUT_saegewerk( \ L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ @@ -88,85 +88,8 @@ { ___, R24, R23, R22, R21, R20 }, \ { ___, R34, R33, R32, ___, R30 }, \ } -//# define LAYOUT_KLOR(...) LAYOUT_saegewerk(__VA_ARGS__) #endif //KLOR_POLYDACTL -/* -#ifdef KLOR_POLYDACTYL -# define LAYOUT_polydactyl( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ - L31, L32, L33, L34, R31, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { L10, L11, L12, L13, L14, L15 }, \ - { L20, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, L34, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { R15, R14, R13, R12, R11, R10 }, \ - { R25, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, R31, R30 }, \ - } -# define LAYOUT(...) LAYOUT_polydactyl(__VA_ARGS__) -#elif defined(KLOR_KONRAD) -# define LAYOUT_konrad( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \ - L20, L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, R25, \ - L31, L32, L33, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { L10, L11, L12, L13, L14, L15 }, \ - { L20, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, ___, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { R15, R14, R13, R12, R11, R10 }, \ - { R25, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, ___, R30 }, \ - } -# define LAYOUT(...) LAYOUT_konrad(__VA_ARGS__) -#elif defined(KLOR_YUBITSUME) -# define LAYOUT_yubitsume( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ - L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ - L31, L32, L33, L34, R31, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { ___, L11, L12, L13, L14, L15 }, \ - { ___, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, L34, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { ___, R14, R13, R12, R11, R10 }, \ - { ___, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, R31, R30 }, \ - } -# define LAYOUT(...) LAYOUT_yubitsume(__VA_ARGS__) -#elif defined(KLOR_SAEGEWERK) -# define LAYOUT_saegewerk( \ - L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, \ - L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, \ - L21, L22, L23, L24, L25, L35, R30, R20, R21, R22, R23, R24, \ - L31, L32, L33, R32, R33, R34 \ - ) \ - { \ - { ___, L01, L02, L03, L04, L05 }, \ - { ___, L11, L12, L13, L14, L15 }, \ - { ___, L21, L22, L23, L24, L25 }, \ - { ___, L31, L32, L33, ___, L35 }, \ - { ___, R04, R03, R02, R01, R00 }, \ - { ___, R14, R13, R12, R11, R10 }, \ - { ___, R24, R23, R22, R21, R20 }, \ - { ___, R34, R33, R32, ___, R30 }, \ - } -# define LAYOUT(...) LAYOUT_saegewerk(__VA_ARGS__) -#endif //KLOR_POLYDACTL - -*/ oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return OLED_ROTATION_180; @@ -246,7 +169,7 @@ const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = -# if defined (KLOR_POLYDACTL) || defined(KLOR_YUBITSUME) +# if defined (KLOR_POLYDACTYL) || defined(KLOR_YUBITSUME) // POLYDACTYL / YUBITSUME // use this matrix if you use the polydactyl or yubitsume layout ────────────────────────────────────┐ led_config_t g_led_config = { { diff --git a/keyboards/klor/klor.h b/keyboards/klor/klor.h index ae4aa8ab..26248535 100644 --- a/keyboards/klor/klor.h +++ b/keyboards/klor/klor.h @@ -32,11 +32,11 @@ #ifdef KLOR_POLYDACTYL -# define LAYOUT_KLOR(...) LAYOUT_polydactyl(__VA_ARGS__) +# define KLOR(...) LAYOUT_polydactyl(__VA_ARGS__) #elif defined(KLOR_KONRAD) -# define LAYOUT_KLOR(...) LAYOUT_konrad(__VA_ARGS__) +# define KLOR(...) LAYOUT_konrad(__VA_ARGS__) #elif defined(KLOR_YUBITSUME) -# define LAYOUT_KLOR(...) LAYOUT_yubitsume(__VA_ARGS__) +# define KLOR(...) LAYOUT_yubitsume(__VA_ARGS__) #elif defined(KLOR_SAEGEWERK) -# define LAYOUT_KLOR(...) LAYOUT_saegewerk(__VA_ARGS__) +# define KLOR(...) LAYOUT_saegewerk(__VA_ARGS__) #endif //KLOR_POLYDACTL diff --git a/keyboards/klor/post_rules.mk b/keyboards/klor/post_rules.mk index 1a3f8ff4..d2e4f737 100644 --- a/keyboards/klor/post_rules.mk +++ b/keyboards/klor/post_rules.mk @@ -1,7 +1,15 @@ VALID_KLOR_LAYOUTS := polydactyl konrad yubitsume saegewerk ifeq ($(filter $(KLOR_LAYOUT),$(VALID_KLOR_LAYOUTS)),) - $(call CATASTROPHIC_ERROR,Invalid KLOR_LAYOUT,KLOR_LAYOUT="$(KLOR_LAYOUT)" is not a valid Haptic driver) + $(call CATASTROPHIC_ERROR,Invalid KLOR_LAYOUT,KLOR_LAYOUT="$(KLOR_LAYOUT)" is not a valid KLOR Layout) else OPT_DEFS += -DKLOR_$(strip $(shell echo $(KLOR_LAYOUT) | tr '[:lower:]' '[:upper:]')) +endif + +# Turn off features for AVR Processors due to memory size +ifeq ($(strip $(PLATFORM)),AVR) + AUDIO_ENABLE = no + MUSIC_ENABLE = no + HAPTIC_ENABLE = no + RGB_MATRIX_ENABLE = no endif \ No newline at end of file diff --git a/keyboards/klor/readme.md b/keyboards/klor/readme.md index c7e1f205..71d5e45f 100644 --- a/keyboards/klor/readme.md +++ b/keyboards/klor/readme.md @@ -31,6 +31,7 @@ Features - Can choose layout based on keymap rules.mk configuration. Before keyboard configuration would need to be changed - Converted as much as possible to data driven configuration: `info.json` +- the build will automatically turn off audio, haptics, and rgb matrix for AVR MCU. A user can configure all rules in the keymap rules.mk for RP2040 and not have to edit code just for AVR firmware What I did not test From 2123c10102883b38638a32ecb70cff699ce9b9ee Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 15 May 2024 23:24:49 -0500 Subject: [PATCH 20/34] Added my keymap to klor --- keyboards/klor/keymaps/default/keymap.c | 18 ++++----- keyboards/klor/keymaps/saegewerk/keymap.c | 20 +++++----- keyboards/klor/keymaps/t4corun/config.h | 1 + keyboards/klor/keymaps/t4corun/keymap.c | 48 +++++++++++++++++++++++ keyboards/klor/keymaps/t4corun/rules.mk | 11 ++++++ keyboards/klor/klor.h | 9 +++-- qmk.json | 3 +- 7 files changed, 85 insertions(+), 25 deletions(-) diff --git a/keyboards/klor/keymaps/default/keymap.c b/keyboards/klor/keymaps/default/keymap.c index a15b4f79..2e0ef826 100644 --- a/keyboards/klor/keymaps/default/keymap.c +++ b/keyboards/klor/keymaps/default/keymap.c @@ -114,7 +114,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPACE │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_QWERTY] = KLOR( + [_QWERTY] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, @@ -136,7 +136,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ ALT ││ CMD/WIN │ ENTER │ RAISE │ BSPCE │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_COLEMAK] = KLOR( + [_COLEMAK] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_TAB, GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, KC_QUOT, @@ -160,7 +160,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ADJUST │ 0 │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_LOWER] = KLOR( + [_LOWER] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_ESC, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, KC_DQT, @@ -183,7 +183,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ ADJUST │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_RAISE] = KLOR( + [_RAISE] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, @@ -206,7 +206,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ */ - [_ADJUST] = KLOR( + [_ADJUST] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ AU_TOGG, HF_TOGG, RGB_HUI, RGB_MOD, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F14, QK_BOOT, DB_TOGG, QWERTY, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F12, KC_F13, @@ -230,7 +230,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ ││ │ │ │ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ - [_TEMPLATE] = KLOR( + [_TEMPLATE] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -253,7 +253,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ │ │ │ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ - [_TEMPLATE] = KLOR( + [_TEMPLATE] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -276,7 +276,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ ││ │ │ │ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ - [_TEMPLATE] = KLOR( + [_TEMPLATE] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -300,7 +300,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ │ │ │ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ - [_TEMPLATE] = KLOR( + [_TEMPLATE] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/klor/keymaps/saegewerk/keymap.c b/keyboards/klor/keymaps/saegewerk/keymap.c index 168454f7..b3c78874 100644 --- a/keyboards/klor/keymaps/saegewerk/keymap.c +++ b/keyboards/klor/keymaps/saegewerk/keymap.c @@ -95,8 +95,6 @@ enum custom_keycodes { // └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ // ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ -//putting this here does make it work -//#define LAYOUT_KLOR(...) LAYOUT_saegewerk(__VA_ARGS__) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -116,7 +114,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ │ ENTER │ RAISE │ BSPACE │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_QWERTY] = KLOR( + [_QWERTY] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, @@ -138,7 +136,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ CTRL │ LOWER │ SPACE │ │ ENTER │ RAISE │ BSPCE │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_COLEMAK] = KLOR( + [_COLEMAK] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, @@ -162,7 +160,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ │ ▼ │ ADJUST │ 0 │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_LOWER] = KLOR( + [_LOWER] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, @@ -185,7 +183,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ ADJUST │ ▼ │ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_RAISE] = KLOR( + [_RAISE] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, @@ -208,7 +206,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ ▼ │ ▼ │ ▼ │ │ ▼ │ ▼ │ ▼ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */ - [_ADJUST] = KLOR( + [_ADJUST] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ AU_TOGG, HF_TOGG, RGB_HUI, RGB_MOD, QK_BOOT, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F11, DB_TOGG, QWERTY, RGB_SAI, XXXXXXX, QK_MAKE, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F12, @@ -232,7 +230,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ ││ │ │ │ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ - [_TEMPLATE] = KLOR( + [_TEMPLATE] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -255,7 +253,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ │ │ │ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ - [_TEMPLATE] = KLOR( + [_TEMPLATE] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -278,7 +276,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ ││ │ │ │ │ └─────────┴─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┴─────────┘ - [_TEMPLATE] = KLOR( + [_TEMPLATE] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -302,7 +300,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { │ │ │ │ │ │ │ │ └─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ - [_TEMPLATE] = KLOR( + [_TEMPLATE] = KLOR_LAYOUT( //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, diff --git a/keyboards/klor/keymaps/t4corun/config.h b/keyboards/klor/keymaps/t4corun/config.h index e69de29b..21481545 100644 --- a/keyboards/klor/keymaps/t4corun/config.h +++ b/keyboards/klor/keymaps/t4corun/config.h @@ -0,0 +1 @@ +# pragma once \ No newline at end of file diff --git a/keyboards/klor/keymaps/t4corun/keymap.c b/keyboards/klor/keymaps/t4corun/keymap.c index e69de29b..690aa5a7 100644 --- a/keyboards/klor/keymaps/t4corun/keymap.c +++ b/keyboards/klor/keymaps/t4corun/keymap.c @@ -0,0 +1,48 @@ +#include "t4corun.h" + +#define LAYOUT_klor_wrapper(...) KLOR_LAYOUT(__VA_ARGS__) + +#define LAYOUT_3x5_3_keymap( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, \ + k32, k33, k34, k35, k36, k37 \ +) \ +LAYOUT_klor_wrapper ( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \ + k20, k21, k22, k23, k24, k32, k37, k25, k26, k27, k28, k29, \ + KC_BTN1, k33, k34, k35, k36, KC_BTN4 \ +) + +#define KLOR(...) LAYOUT_3x5_3_keymap(__VA_ARGS__) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [_QWERTY] = KLOR(LAYER_QWERTY), + [_COLEMAK_DH] = KLOR(LAYER_COLEMAK_DH), + [_GAME] = KLOR(LAYER_GAME), + [_NAVIGATION] = KLOR(LAYER_NAVIGATION), + [_NUMBER] = KLOR(LAYER_NUMBER), + [_SYMBOL] = KLOR(LAYER_SYMBOL), + [_CONFIG] = KLOR(LAYER_CONFIG) + +}; + + +#if defined(ENCODER_MAP_ENABLE) + +/* These are horizontal encoders. Found I have to make it opposite the rotary encoders for it to feel intuitive*/ +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + + [_QWERTY] = { ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, + [_COLEMAK_DH] = { ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, + [_GAME] = { ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, + [_NAVIGATION] = { ENCODER_CCW_CW(ZOOMIN, ZOOMOUT), ENCODER_CCW_CW(___x___, ___x___) }, + [_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_RGHT, KC_LEFT) }, + [_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, + [_CONFIG] = { ENCODER_CCW_CW(BASELYR, RBSELYR), ENCODER_CCW_CW(TR_RMOD, TR_RRMD) } + +}; + +#endif \ No newline at end of file diff --git a/keyboards/klor/keymaps/t4corun/rules.mk b/keyboards/klor/keymaps/t4corun/rules.mk index e69de29b..9b44ea0d 100644 --- a/keyboards/klor/keymaps/t4corun/rules.mk +++ b/keyboards/klor/keymaps/t4corun/rules.mk @@ -0,0 +1,11 @@ +# override userspace defaults + + +# override keyboard defaults +# keyboards\klor\info.json +# keyboards\klor\rules.mk +# keyboards\klor\2040\rules.mk +AUDIO_ENABLE = yes +MUSIC_ENABLE = yes +HAPTIC_ENABLE = yes +RGB_MATRIX_ENABLE = yes \ No newline at end of file diff --git a/keyboards/klor/klor.h b/keyboards/klor/klor.h index 26248535..4ccc751a 100644 --- a/keyboards/klor/klor.h +++ b/keyboards/klor/klor.h @@ -31,12 +31,13 @@ #define ___ KC_NO +// it does not like it when the macro starts with LAYOUT... #ifdef KLOR_POLYDACTYL -# define KLOR(...) LAYOUT_polydactyl(__VA_ARGS__) +# define KLOR_LAYOUT(...) LAYOUT_polydactyl(__VA_ARGS__) #elif defined(KLOR_KONRAD) -# define KLOR(...) LAYOUT_konrad(__VA_ARGS__) +# define KLOR_LAYOUT(...) LAYOUT_konrad(__VA_ARGS__) #elif defined(KLOR_YUBITSUME) -# define KLOR(...) LAYOUT_yubitsume(__VA_ARGS__) +# define KLOR_LAYOUT(...) LAYOUT_yubitsume(__VA_ARGS__) #elif defined(KLOR_SAEGEWERK) -# define KLOR(...) LAYOUT_saegewerk(__VA_ARGS__) +# define KLOR_LAYOUT(...) LAYOUT_saegewerk(__VA_ARGS__) #endif //KLOR_POLYDACTL diff --git a/qmk.json b/qmk.json index 92211f97..87bf8394 100644 --- a/qmk.json +++ b/qmk.json @@ -8,7 +8,8 @@ ["planck/rev6", "t4corun"], ["bluebell/swoop", "t4corun"], ["barbellboards/rollow", "t4corun"], - ["klor", "default"], + ["klor/2040", "t4corun"], + ["klor", "default"],fd ["klor/2040", "default"], ["klor/2040", "saegewerk"] From 15e8c45d1560936e8ea377e56e592829cb416952 Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 15 May 2024 23:32:42 -0500 Subject: [PATCH 21/34] Fixed readme file error - renamed it - aded some example test so I can do another commit --- keyboards/klor/keymaps/t4corun/readmd.md | 0 keyboards/klor/keymaps/t4corun/readme.md | 1 + 2 files changed, 1 insertion(+) delete mode 100644 keyboards/klor/keymaps/t4corun/readmd.md create mode 100644 keyboards/klor/keymaps/t4corun/readme.md diff --git a/keyboards/klor/keymaps/t4corun/readmd.md b/keyboards/klor/keymaps/t4corun/readmd.md deleted file mode 100644 index e69de29b..00000000 diff --git a/keyboards/klor/keymaps/t4corun/readme.md b/keyboards/klor/keymaps/t4corun/readme.md new file mode 100644 index 00000000..2b98f8cf --- /dev/null +++ b/keyboards/klor/keymaps/t4corun/readme.md @@ -0,0 +1 @@ +This is my keymap \ No newline at end of file From f07b0203d060f863c986d0caf6f690d8ae9f8a64 Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 15 May 2024 23:44:17 -0500 Subject: [PATCH 22/34] Fixed bugs - fixed duplciate defines for KLOR LAYOUT - Typo in qmk.json --- keyboards/klor/keymaps/default/rules.mk | 2 +- keyboards/klor/keymaps/saegewerk/rules.mk | 2 +- keyboards/klor/keymaps/t4corun/rules.mk | 6 ++++-- keyboards/klor/post_rules.mk | 8 ++++---- qmk.json | 2 +- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/keyboards/klor/keymaps/default/rules.mk b/keyboards/klor/keymaps/default/rules.mk index 8589fb8c..6b62723a 100644 --- a/keyboards/klor/keymaps/default/rules.mk +++ b/keyboards/klor/keymaps/default/rules.mk @@ -11,4 +11,4 @@ HAPTIC_ENABLE = no RGB_MATRIX_ENABLE = no # Choose your layout -KLOR_LAYOUT = polydactyl \ No newline at end of file +KLOR_CONFIG = polydactyl \ No newline at end of file diff --git a/keyboards/klor/keymaps/saegewerk/rules.mk b/keyboards/klor/keymaps/saegewerk/rules.mk index 3c6c3e29..8d2f16c3 100644 --- a/keyboards/klor/keymaps/saegewerk/rules.mk +++ b/keyboards/klor/keymaps/saegewerk/rules.mk @@ -11,4 +11,4 @@ HAPTIC_ENABLE = yes RGB_MATRIX_ENABLE = yes # Choose your layout -KLOR_LAYOUT = saegewerk \ No newline at end of file +KLOR_CONFIG = saegewerk \ No newline at end of file diff --git a/keyboards/klor/keymaps/t4corun/rules.mk b/keyboards/klor/keymaps/t4corun/rules.mk index 9b44ea0d..9125104c 100644 --- a/keyboards/klor/keymaps/t4corun/rules.mk +++ b/keyboards/klor/keymaps/t4corun/rules.mk @@ -1,6 +1,5 @@ # override userspace defaults - # override keyboard defaults # keyboards\klor\info.json # keyboards\klor\rules.mk @@ -8,4 +7,7 @@ AUDIO_ENABLE = yes MUSIC_ENABLE = yes HAPTIC_ENABLE = yes -RGB_MATRIX_ENABLE = yes \ No newline at end of file +RGB_MATRIX_ENABLE = yes + +# Choose your layout +KLOR_CONFIG = saegewerk \ No newline at end of file diff --git a/keyboards/klor/post_rules.mk b/keyboards/klor/post_rules.mk index d2e4f737..edfbe8c7 100644 --- a/keyboards/klor/post_rules.mk +++ b/keyboards/klor/post_rules.mk @@ -1,9 +1,9 @@ -VALID_KLOR_LAYOUTS := polydactyl konrad yubitsume saegewerk +VALID_KLOR_CONFIG := polydactyl konrad yubitsume saegewerk -ifeq ($(filter $(KLOR_LAYOUT),$(VALID_KLOR_LAYOUTS)),) - $(call CATASTROPHIC_ERROR,Invalid KLOR_LAYOUT,KLOR_LAYOUT="$(KLOR_LAYOUT)" is not a valid KLOR Layout) +ifeq ($(filter $(KLOR_CONFIG),$(VALID_KLOR_CONFIG)),) + $(call CATASTROPHIC_ERROR,Invalid KLOR_LAYOUT,KLOR_LAYOUT="$(KLOR_CONFIG)" is not a valid KLOR Layout) else - OPT_DEFS += -DKLOR_$(strip $(shell echo $(KLOR_LAYOUT) | tr '[:lower:]' '[:upper:]')) + OPT_DEFS += -DKLOR_$(strip $(shell echo $(KLOR_CONFIG) | tr '[:lower:]' '[:upper:]')) endif # Turn off features for AVR Processors due to memory size diff --git a/qmk.json b/qmk.json index 87bf8394..48af71e4 100644 --- a/qmk.json +++ b/qmk.json @@ -9,7 +9,7 @@ ["bluebell/swoop", "t4corun"], ["barbellboards/rollow", "t4corun"], ["klor/2040", "t4corun"], - ["klor", "default"],fd + ["klor", "default"], ["klor/2040", "default"], ["klor/2040", "saegewerk"] From a1764f59acdf693562f8b37c41a3fae8989c1698 Mon Sep 17 00:00:00 2001 From: Victor Date: Fri, 24 May 2024 00:13:24 -0500 Subject: [PATCH 23/34] Klor Fix, Userspace Adds, Keymap tweaks - Updated Klor config for updated haptic defines - Music mode is now off for good - Added userspace config for haptics and audio - Went back to numpad 0 on the thumbs - Added haptic and audio keys on the config layer - removed all combos except drag scroll - Updated and added overrides for haptics/audio/Mousekeys --- keyboards/klor/config.h | 21 +++++---- keyboards/klor/keymaps/t4corun/rules.mk | 1 - users/t4corun/config.h | 8 ++++ users/t4corun/config/audio_config.h | 30 ++++++++++++ users/t4corun/config/combo_config.h | 2 +- users/t4corun/config/haptic_config.h | 17 +++++++ users/t4corun/config/rgbmatrix_config.h | 7 ++- users/t4corun/config/tapping_config.h | 1 + users/t4corun/features/combo.c | 28 +++++------ users/t4corun/features/combo.h | 62 +++++++++++-------------- users/t4corun/features/keyoverride.c | 23 +++++++-- users/t4corun/features/tapping.c | 11 +++++ users/t4corun/features/tapping.h | 2 + users/t4corun/rules.mk | 5 +- users/t4corun/t4corun.h | 45 ++++++++++++++---- 15 files changed, 188 insertions(+), 75 deletions(-) create mode 100644 users/t4corun/config/audio_config.h create mode 100644 users/t4corun/config/haptic_config.h create mode 100644 users/t4corun/features/tapping.c create mode 100644 users/t4corun/features/tapping.h diff --git a/keyboards/klor/config.h b/keyboards/klor/config.h index d67cf801..1d88248c 100644 --- a/keyboards/klor/config.h +++ b/keyboards/klor/config.h @@ -38,8 +38,9 @@ along with this program. If not, see . #ifdef AUDIO_ENABLE # define KLOR_SOUND W__NOTE(_DS0), W__NOTE(_DS1), H__NOTE(_DS2), H__NOTE(_DS3), Q__NOTE(_DS4), Q__NOTE(_DS5), E__NOTE(_DS6), E__NOTE(_DS7), S__NOTE(_DS8), Q__NOTE(_GS0) -# define STARTUP_SONG SONG(KLOR_SOUND) # define BYE_SOUND H__NOTE(_DS4), H__NOTE(_DS3), W__NOTE(_DS1) + +# define STARTUP_SONG SONG(KLOR_SOUND) # define GOODBYE_SONG SONG(BYE_SOUND) # define DEFAULT_LAYER_SONGS \ { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND) } @@ -49,15 +50,15 @@ along with this program. If not, see . // │ h a p t i c f e e d b a c k │ // └─────────────────────────────────────────────────┘ -#ifdef HAPTIC_ENABLE -# define FB_ERM_LRA 1 -# define FB_BRAKEFACTOR 3 // For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 -# define FB_LOOPGAIN 1 // For Low:0, Medium:1, High:2, Very High:3 -# define RATED_VOLTAGE 2 -# define V_PEAK 2.8 -# define V_RMS 2.0 -# define F_LRA 150 // resonance freq -# define DRV_GREETING alert_750ms +#if defined(HAPTIC_ENABLE) && defined(HAPTIC_DRV2605L) +# define DRV2605L_FB_ERM_LRA 1 +# define DRV2605L_FB_BRAKEFACTOR 3 // For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 +# define DRV2605L_FB_LOOPGAIN 1 // For Low:0, Medium:1, High:2, Very High:3 +# define DRV2605L_RATED_VOLTAGE 2 +# define DRV2605L_V_PEAK 2.8 +# define DRV2605L_V_RMS 2.0 +# define DRV2605L_F_LRA 150 // resonance freq +# define DRV2605L_GREETING DRV2605L_EFFECT_750_MS_ALERT_100 #endif // ┌─────────────────────────────────────────────────┐ diff --git a/keyboards/klor/keymaps/t4corun/rules.mk b/keyboards/klor/keymaps/t4corun/rules.mk index 9125104c..956e11ac 100644 --- a/keyboards/klor/keymaps/t4corun/rules.mk +++ b/keyboards/klor/keymaps/t4corun/rules.mk @@ -5,7 +5,6 @@ # keyboards\klor\rules.mk # keyboards\klor\2040\rules.mk AUDIO_ENABLE = yes -MUSIC_ENABLE = yes HAPTIC_ENABLE = yes RGB_MATRIX_ENABLE = yes diff --git a/users/t4corun/config.h b/users/t4corun/config.h index 312fdd42..8cce84d5 100644 --- a/users/t4corun/config.h +++ b/users/t4corun/config.h @@ -52,4 +52,12 @@ #if defined(OLED_ENABLE) # include "config/oled_config.h" +#endif + +#if defined(HAPTIC_ENABLE) +# include "config/haptic_config.h" +#endif + +#if defined(AUDIO_ENABLE) +# include "config/audio_config.h" #endif \ No newline at end of file diff --git a/users/t4corun/config/audio_config.h b/users/t4corun/config/audio_config.h new file mode 100644 index 00000000..46baa0b9 --- /dev/null +++ b/users/t4corun/config/audio_config.h @@ -0,0 +1,30 @@ +#pragma once + +/* Audio +* +* https://docs.qmk.fm/#/feature_audio +* https://docs.qmk.fm/#/squeezing_avr?id=audio-settings +* +*/ + +//Clear variables we plan to use that might be set elsewhere +#undef NO_MUSIC_MODE +#undef AUDIO_CLICKY +#undef STARTUP_SONG +#undef GOODBYE_SONG +#undef DEFAULT_LAYER_SONGS +#undef KLOR_SOUND + +//Set common configuration for all keyboards +#define KLOR_SOUND W__NOTE(_DS0), W__NOTE(_DS1), H__NOTE(_DS2), H__NOTE(_DS3), Q__NOTE(_DS4), Q__NOTE(_DS5), E__NOTE(_DS6), E__NOTE(_DS7), S__NOTE(_DS8), Q__NOTE(_GS0) +#define BYE_SOUND H__NOTE(_DS4), H__NOTE(_DS3), W__NOTE(_DS1) + +#define NO_MUSIC_MODE +#define AUDIO_CLICKY +#define STARTUP_SONG SONG(KLOR_SOUND) +#define GOODBYE_SONG SONG(BYE_SOUND) +#define DEFAULT_LAYER_SONGS \ + { SONG(QWERTY_SOUND) \ + ,SONG(COLEMAK_SOUND) \ + ,SONG(GUITAR_SOUND) \ + } diff --git a/users/t4corun/config/combo_config.h b/users/t4corun/config/combo_config.h index bf15c3bd..ba731e1f 100644 --- a/users/t4corun/config/combo_config.h +++ b/users/t4corun/config/combo_config.h @@ -22,5 +22,5 @@ #define COMBO_TERM 35 -#define COMBO_MUST_TAP_PER_COMBO +//#define COMBO_MUST_TAP_PER_COMBO #define COMBO_SHOULD_TRIGGER \ No newline at end of file diff --git a/users/t4corun/config/haptic_config.h b/users/t4corun/config/haptic_config.h new file mode 100644 index 00000000..bd1ef320 --- /dev/null +++ b/users/t4corun/config/haptic_config.h @@ -0,0 +1,17 @@ +#pragma once + +/* Haptic Feedback +* +* https://docs.qmk.fm/#/feature_haptic_feedback +* +*/ + +#if defined(HAPTIC_DRV2605L) +//Clear variables we plan to use that might be set elsewhere +# undef DRV2605L_GREETING +# undef DRV2605L_DEFAULT_MODE + +//Set common configuration for all keyboards +# define DRV2605L_GREETING DRV2605L_EFFECT_750_MS_ALERT_100 +# define DRV2605L_DEFAULT_MODE DRV2605L_EFFECT_STRONG_CLICK_1_100 +#endif //HAPTIC_DRV2605L \ No newline at end of file diff --git a/users/t4corun/config/rgbmatrix_config.h b/users/t4corun/config/rgbmatrix_config.h index 5612f3e1..adddafc3 100644 --- a/users/t4corun/config/rgbmatrix_config.h +++ b/users/t4corun/config/rgbmatrix_config.h @@ -139,7 +139,10 @@ #define RGB_MATRIX_DEFAULT_SPD 32 //Set per keyboard configuration -#if defined(KEYBOARD_bastardkb_charybdis_3x5) || defined(KEYBOARD_dztech_dz60rgb_v2_1) || defined(KEYBOARD_bluebell_swoop) +#if defined(KEYBOARD_bastardkb_charybdis_3x5) \ + || defined(KEYBOARD_dztech_dz60rgb_v2_1) \ + || defined(KEYBOARD_bluebell_swoop) \ + || defined(KEYBOARD_klor_2040) # define ENABLE_RGB_MATRIX_BREATHING # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL @@ -165,7 +168,7 @@ # define ENABLE_RGB_MATRIX_BREATHING # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN # define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_BREATHING -#endif //defined(KEYBOARD_bastardkb_charybdis_3x5) || defined(KEYBOARD_dztech_dz60rgb_v2_1) +#endif //KEYBOARD_bastardkb_charybdis_3x5... //heatmap specific settings #if defined(ENABLE_RGB_MATRIX_TYPING_HEATMAP) diff --git a/users/t4corun/config/tapping_config.h b/users/t4corun/config/tapping_config.h index ef891794..d3215835 100644 --- a/users/t4corun/config/tapping_config.h +++ b/users/t4corun/config/tapping_config.h @@ -27,6 +27,7 @@ #define WAIT_DELAY 5 //custom variable to configure time between taps #define TAPPING_TERM 175 +#define TAPPING_TERM_PER_KEY #define QUICK_TAP_TERM 120 diff --git a/users/t4corun/features/combo.c b/users/t4corun/features/combo.c index 38d17391..2ecdffe5 100644 --- a/users/t4corun/features/combo.c +++ b/users/t4corun/features/combo.c @@ -1,18 +1,18 @@ #include "combo.h" +/* bool get_combo_must_tap(uint16_t index, combo_t *combo) { switch (index) { -#if defined(MOUSEKEY_ENABLE) - case MOUSE_BUTTON3: - case MOUSE_BUTTON4: - case MOUSE_BUTTON5: - case MOUSE_DRGTOG: -#endif //MOUSEKEY_ENABLEdf +// case MOUSE_BUTTON3: +// case MOUSE_BUTTON4: +// case MOUSE_BUTTON5: +// case MOUSE_DRGTOG: + case KEY_ENT: - case KEY_TAB: +// case KEY_TAB: return true; default: @@ -20,7 +20,7 @@ bool get_combo_must_tap(uint16_t index, combo_t *combo) { } -} +} */ bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode, keyrecord_t *record) { @@ -29,11 +29,13 @@ bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode switch (combo_index) { - case MOUSE_BUTTON1: - case MOUSE_BUTTON2: - case MOUSE_BUTTON3: - case MOUSE_BUTTON4: - case MOUSE_BUTTON5: + +// case MOUSE_BUTTON1: +// case MOUSE_BUTTON2: +// case MOUSE_BUTTON3: +// case MOUSE_BUTTON4: +// case MOUSE_BUTTON5: + case MOUSE_DRGTOG: if ( get_highest_layer(layer_state | default_layer_state) > _DEFAULT_LAYER_1 ) return false; diff --git a/users/t4corun/features/combo.h b/users/t4corun/features/combo.h index b4790cd6..4ced55b4 100644 --- a/users/t4corun/features/combo.h +++ b/users/t4corun/features/combo.h @@ -2,39 +2,32 @@ #include "t4corun.h" - -#if defined(MOUSEKEY_ENABLE) -const uint16_t PROGMEM mou_btn1_combo[] = { KC_D, KC_F, COMBO_END }; -const uint16_t PROGMEM mou_btn2_combo[] = { KC_S, KC_D, COMBO_END }; -const uint16_t PROGMEM mou_btn3_combo[] = { KC_F, KC_G, COMBO_END }; -const uint16_t PROGMEM mou_btn4_combo[] = { KC_F, KC_R, COMBO_END }; -const uint16_t PROGMEM mou_btn5_combo[] = { KC_T, KC_G, COMBO_END }; +//const uint16_t PROGMEM mou_btn1_combo[] = { KC_D, KC_F, COMBO_END }; +//const uint16_t PROGMEM mou_btn2_combo[] = { KC_S, KC_D, COMBO_END }; +//const uint16_t PROGMEM mou_btn3_combo[] = { KC_F, KC_G, COMBO_END }; +//const uint16_t PROGMEM mou_btn4_combo[] = { KC_F, KC_R, COMBO_END }; +//const uint16_t PROGMEM mou_btn5_combo[] = { KC_T, KC_G, COMBO_END }; const uint16_t PROGMEM mou_drg_combo[] = { KC_X, KC_C, COMBO_END }; -#endif //MOUSEKEY_ENABLE -const uint16_t PROGMEM key_ent_combo[] = { KC_C, KC_V, COMBO_END }; -const uint16_t PROGMEM key_tab_combo[] = { KC_U, KC_I, COMBO_END }; -const uint16_t PROGMEM key_bspc_combo[] = { KC_M, TR_COMM, COMBO_END }; + +//const uint16_t PROGMEM key_ent_combo[] = { KC_C, KC_V, COMBO_END }; +//const uint16_t PROGMEM key_tab_combo[] = { KC_U, KC_I, COMBO_END }; +//const uint16_t PROGMEM key_bspc_combo[] = { KC_M, TR_COMM, COMBO_END }; enum combos { - -#if defined(MOUSEKEY_ENABLE) - MOUSE_BUTTON1, - MOUSE_BUTTON2, - MOUSE_BUTTON3, - MOUSE_BUTTON4, - MOUSE_BUTTON5, +// MOUSE_BUTTON1, +// MOUSE_BUTTON2, +// MOUSE_BUTTON3, +// MOUSE_BUTTON4, +// MOUSE_BUTTON5, MOUSE_DRGTOG, -#endif //MOUSEKEY_ENABLE - - KEY_ENT, - KEY_TAB, - KEY_BSPC, +// KEY_ENT, +// KEY_TAB, +// KEY_BSPC, COMBO_LENGTH - }; @@ -43,18 +36,15 @@ uint16_t COMBO_LEN = COMBO_LENGTH; combo_t key_combos[COMBO_LENGTH] = { +// [MOUSE_BUTTON1] = COMBO(mou_btn1_combo, KC_BTN1), +// [MOUSE_BUTTON2] = COMBO(mou_btn2_combo, KC_BTN2), +// [MOUSE_BUTTON3] = COMBO(mou_btn3_combo, KC_BTN3), +// [MOUSE_BUTTON4] = COMBO(mou_btn4_combo, KC_BTN4), +// [MOUSE_BUTTON5] = COMBO(mou_btn5_combo, KC_BTN5), + [MOUSE_DRGTOG] = COMBO(mou_drg_combo, TR_DRGS) -#if defined(MOUSEKEY_ENABLE) - [MOUSE_BUTTON1] = COMBO(mou_btn1_combo, KC_BTN1), - [MOUSE_BUTTON2] = COMBO(mou_btn2_combo, KC_BTN2), - [MOUSE_BUTTON3] = COMBO(mou_btn3_combo, KC_BTN3), - [MOUSE_BUTTON4] = COMBO(mou_btn4_combo, KC_BTN4), - [MOUSE_BUTTON5] = COMBO(mou_btn5_combo, KC_BTN5), - [MOUSE_DRGTOG] = COMBO(mou_drg_combo, TR_DRGS), -#endif //MOUSEKEY_ENABLE - - [KEY_ENT] = COMBO(key_ent_combo, KC_ENT), - [KEY_TAB] = COMBO(key_tab_combo, KC_TAB), - [KEY_BSPC] = COMBO(key_bspc_combo, KC_BSPC) +// [KEY_ENT] = COMBO(key_ent_combo, KC_ENT), +// [KEY_TAB] = COMBO(key_tab_combo, KC_TAB), +// [KEY_BSPC] = COMBO(key_bspc_combo, KC_BSPC) }; \ No newline at end of file diff --git a/users/t4corun/features/keyoverride.c b/users/t4corun/features/keyoverride.c index a21b2e28..60ea2b09 100644 --- a/users/t4corun/features/keyoverride.c +++ b/users/t4corun/features/keyoverride.c @@ -29,10 +29,17 @@ const key_override_t f10_override = ko_make_with_layers(MOD_MASK_CSA, K const key_override_t f11_override = ko_make_with_layers(MOD_MASK_CSA, KC_DOT, KC_F11, 1<<_NUMBER); const key_override_t f12_override = ko_make_with_layers(MOD_MASK_CSA, KC_MINS, KC_F12, 1<<_NUMBER); -const key_override_t mb1_override = ko_make_with_layers(MOD_MASK_CTRL, KC_BTN1, KC_PSCR, 1<<_NUMBER); -const key_override_t mb2_override = ko_make_with_layers(MOD_MASK_ALT, KC_BTN2, SC_FILE, 1<<_NUMBER); +const key_override_t mb2_override = ko_make_with_layers(MOD_MASK_CTRL, KC_BTN2, KC_BTN4, 1<<_NUMBER); +const key_override_t mb3_override = ko_make_with_layers(MOD_MASK_ALT, KC_BTN3, KC_BTN5, 1<<_NUMBER); +#if defined(HAPTIC_ENABLE) +const key_override_t hfnext_override = ko_make_with_layers(MOD_MASK_SHIFT, TR_HNXT, HF_PREV, 1<<_CONFIG); +const key_override_t hfconu_override = ko_make_with_layers(MOD_MASK_SHIFT, TR_HCNU, HF_COND, 1<<_CONFIG); +#endif //HAPTIC_ENABLE +#if defined(AUDIO_ENABLE) +const key_override_t ckup_override = ko_make_with_layers(MOD_MASK_SHIFT, CK_UP, CK_DOWN, 1<<_CONFIG); +#endif //AUDIO_ENABLE const key_override_t **key_overrides = (const key_override_t *[]) { @@ -50,8 +57,18 @@ const key_override_t **key_overrides = (const key_override_t *[]) { &f10_override, &f11_override, &f12_override, - &mb1_override, &mb2_override, + &mb3_override, + +#if defined(HAPTIC_ENABLE) + &hfnext_override, + &hfconu_override, +#endif //HAPTIC_ENABLE + +#if defined(AUDIO_ENABLE) + &ckup_override, +#endif //AUDIO_ENABLE + NULL // Null terminate the array of overrides! }; \ No newline at end of file diff --git a/users/t4corun/features/tapping.c b/users/t4corun/features/tapping.c new file mode 100644 index 00000000..8f74b616 --- /dev/null +++ b/users/t4corun/features/tapping.c @@ -0,0 +1,11 @@ +#include tapping.h + +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case NAV: + return TAPPING_TERM - 40; + + default: + return TAPPING_TERM; + } +} \ No newline at end of file diff --git a/users/t4corun/features/tapping.h b/users/t4corun/features/tapping.h new file mode 100644 index 00000000..2a576cc3 --- /dev/null +++ b/users/t4corun/features/tapping.h @@ -0,0 +1,2 @@ +#pragma once +#include "t4corun.h" \ No newline at end of file diff --git a/users/t4corun/rules.mk b/users/t4corun/rules.mk index 8100f634..e4d9e80a 100644 --- a/users/t4corun/rules.mk +++ b/users/t4corun/rules.mk @@ -25,20 +25,23 @@ POINTING_DEVICE_ENABLE ?= no OLED_ENABLE ?= no ENCODER_ENABLE ?= no ENCODER_MAP_ENABLE ?= no +HAPTIC_ENABLE ?= no +AUDIO_ENABLE ?= no # qmk features we will force EXTRAKEY_ENABLE = yes -AUDIO_ENABLE = no CAPS_WORD_ENABLE = yes MOUSEKEY_ENABLE = yes COMBO_ENABLE = yes KEY_OVERRIDE_ENABLE = yes +MUSIC_MODE = no # --------------------------------------------------------- # include my code that will be common across all my keyboards SRC += \ t4corun.c \ + features/tapping.c \ features/taphold.c \ features/capsword.c \ features/keyoverride.c \ diff --git a/users/t4corun/t4corun.h b/users/t4corun/t4corun.h index 76ddbc44..ee85be7b 100644 --- a/users/t4corun/t4corun.h +++ b/users/t4corun/t4corun.h @@ -47,7 +47,7 @@ enum keycodes { #define ___x___ KC_NO // momentary layer -#define NAV MO(_NAVIGATION) +#define NAV LT(_NAVIGATION, KC_0) #define NUM MO(_NUMBER) #define CONFIG MO(_CONFIG) @@ -152,6 +152,36 @@ enum keycodes { #endif //RGB_MATRIX_ENABLE || RGBLIGHT_ENABLE +#if defined(HAPTIC_ENABLE) +# define TR_HTOG HF_TOGG +# define TR_HFBK HF_FDBK +# define TR_HNXT HF_NEXT +# define TR_HCNU HF_CONU +# define TR_HRST HF_RST +#else +# define TR_HTOG ___x___ +# define TR_HFBK ___x___ +# define TR_HNXT ___x___ +# define TR_HCNU ___x___ +# define TR_HRST ___x___ +#endif //HAPTIC_ENABLe + + +#if defined(AUDIO_ENABLE) +# define TR_ATOG AU_TOGG +# define TR_CTOG CK_TOGG +# define TR_CKUP CK_UP +# define TR_CRST CK_RST +#else +# define TR_ATOG ___x___ +# define TR_CTOG ___x___ +# define TR_CKUP ___x___ +# define TR_CRST ___x___ +#endif //AUDIO_ENABLE + + + + #define _DEFAULT_LAYER_1 FIRST_DEFAULT_LAYER #define _DEFAULT_LAYER_2 (FIRST_DEFAULT_LAYER + 1) #define _DEFAULT_LAYER_3 (FIRST_DEFAULT_LAYER + 2) @@ -192,15 +222,15 @@ enum keycodes { #define LAYER_NAVIGATION \ - KC_ESC, KC_HOME, KC_UP, KC_END, KC_PGUP, ___x___, ___x___, ___x___, ___x___, CONFIG, \ - ___x___, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, ___x___, _SCAG_MODS________________________, \ - _UCCPR_L___________________________________, ___x___, KC_APP, TR_SNIP, TR_SDPI, TR_PDPI, \ + KC_ESC, KC_HOME, KC_UP, KC_END, KC_PGUP, ___x___, KC_APP, SC_FILE, SC_SNIP, CONFIG, \ + ___x___, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_BSPC, _SCAG_MODS________________________, \ + _UCCPR_L___________________________________, ___x___, KC_TAB, TR_SNIP, TR_SDPI, TR_PDPI, \ ZOOMRST, NUM, KC_ENT, _LAYER_TRANS_____________ #define LAYER_NUMBER \ KC_ESC, KC_BTN3, KC_BTN2, KC_BTN1, TR_GRV, ___x___, KC_7, KC_8, KC_9, KC_COMM, \ - _GACS_MODS________________________, TR_SCLN, KC_0, KC_4, KC_5, KC_6, KC_DOT, \ + _GACS_MODS________________________, TR_SCLN, KC_BSPC, KC_4, KC_5, KC_6, KC_DOT, \ _UCCPR_L___________________________________, ___x___, KC_1, KC_2, KC_3, KC_MINS, \ _LAYER_TRANS_____________, _BASE_R4_________________ @@ -213,8 +243,7 @@ enum keycodes { #define LAYER_CONFIG \ - _NONE_5____________________________________, ___x___, ___x___, EE_CLR, QK_BOOT, _______, \ - _NONE_5____________________________________, ___x___, TR_LSFT, ___x___, ___x___, TR_RMOD, \ + TR_HRST, TR_HCNU, TR_HNXT, TR_HFBK, TR_HTOG, ___x___, ___x___, EE_CLR, QK_BOOT, _______, \ + TR_CRST, TR_CKUP, TR_CTOG, ___x___, TR_ATOG, ___x___, TR_LSFT, ___x___, ___x___, TR_RMOD, \ KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY, TR_RTOG, TR_RHUI, TR_RSAI, TR_RVAI, TR_RSPI, \ BASELYR, TR_DMR1, TR_DMP1, ___x___, ___x___, TR_RTOG - From 03443736907a87a2052be4c89c0f9543a1b71613 Mon Sep 17 00:00:00 2001 From: Victor Date: Fri, 24 May 2024 00:18:47 -0500 Subject: [PATCH 24/34] Bug fixing - forgot to put quotes in the tapping include - REmoved some boards to compile --- qmk.json | 2 -- users/t4corun/features/tapping.c | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/qmk.json b/qmk.json index 48af71e4..af6e7139 100644 --- a/qmk.json +++ b/qmk.json @@ -9,8 +9,6 @@ ["bluebell/swoop", "t4corun"], ["barbellboards/rollow", "t4corun"], ["klor/2040", "t4corun"], - ["klor", "default"], - ["klor/2040", "default"], ["klor/2040", "saegewerk"] ] diff --git a/users/t4corun/features/tapping.c b/users/t4corun/features/tapping.c index 8f74b616..4fc7f71e 100644 --- a/users/t4corun/features/tapping.c +++ b/users/t4corun/features/tapping.c @@ -1,5 +1,6 @@ -#include tapping.h +#include "tapping.h" +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case NAV: From 90ea8d727a966c64e431ae82bbca800e70e5badf Mon Sep 17 00:00:00 2001 From: Victor Date: Fri, 24 May 2024 00:35:26 -0500 Subject: [PATCH 25/34] putting keyboard combos back - it felt too weird and clunky now I got used to combos --- users/t4corun/config/combo_config.h | 2 +- users/t4corun/features/combo.c | 9 ++++----- users/t4corun/features/combo.h | 18 +++++++++--------- users/t4corun/features/tapping.c | 1 - users/t4corun/t4corun.h | 8 ++++---- 5 files changed, 18 insertions(+), 20 deletions(-) diff --git a/users/t4corun/config/combo_config.h b/users/t4corun/config/combo_config.h index ba731e1f..bf15c3bd 100644 --- a/users/t4corun/config/combo_config.h +++ b/users/t4corun/config/combo_config.h @@ -22,5 +22,5 @@ #define COMBO_TERM 35 -//#define COMBO_MUST_TAP_PER_COMBO +#define COMBO_MUST_TAP_PER_COMBO #define COMBO_SHOULD_TRIGGER \ No newline at end of file diff --git a/users/t4corun/features/combo.c b/users/t4corun/features/combo.c index 2ecdffe5..199ca9b6 100644 --- a/users/t4corun/features/combo.c +++ b/users/t4corun/features/combo.c @@ -1,6 +1,6 @@ #include "combo.h" -/* + bool get_combo_must_tap(uint16_t index, combo_t *combo) { switch (index) { @@ -10,9 +10,8 @@ bool get_combo_must_tap(uint16_t index, combo_t *combo) { // case MOUSE_BUTTON5: // case MOUSE_DRGTOG: - case KEY_ENT: -// case KEY_TAB: + case KEY_TAB: return true; default: @@ -20,7 +19,7 @@ bool get_combo_must_tap(uint16_t index, combo_t *combo) { } -} */ +} bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode, keyrecord_t *record) { @@ -34,7 +33,7 @@ bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode // case MOUSE_BUTTON2: // case MOUSE_BUTTON3: // case MOUSE_BUTTON4: -// case MOUSE_BUTTON5: +df// case MOUSE_BUTTON5: case MOUSE_DRGTOG: if ( get_highest_layer(layer_state | default_layer_state) > _DEFAULT_LAYER_1 ) return false; diff --git a/users/t4corun/features/combo.h b/users/t4corun/features/combo.h index 4ced55b4..ef906a53 100644 --- a/users/t4corun/features/combo.h +++ b/users/t4corun/features/combo.h @@ -10,9 +10,9 @@ const uint16_t PROGMEM mou_drg_combo[] = { KC_X, KC_C, COMBO_END }; -//const uint16_t PROGMEM key_ent_combo[] = { KC_C, KC_V, COMBO_END }; -//const uint16_t PROGMEM key_tab_combo[] = { KC_U, KC_I, COMBO_END }; -//const uint16_t PROGMEM key_bspc_combo[] = { KC_M, TR_COMM, COMBO_END }; +const uint16_t PROGMEM key_ent_combo[] = { KC_C, KC_V, COMBO_END }; +const uint16_t PROGMEM key_tab_combo[] = { KC_M, TR_DOT, COMBO_END }; +const uint16_t PROGMEM key_bspc_combo[] = { KC_M, TR_COMM, COMBO_END }; @@ -24,9 +24,9 @@ enum combos { // MOUSE_BUTTON5, MOUSE_DRGTOG, -// KEY_ENT, -// KEY_TAB, -// KEY_BSPC, + KEY_ENT, + KEY_TAB, + KEY_BSPC, COMBO_LENGTH }; @@ -43,8 +43,8 @@ combo_t key_combos[COMBO_LENGTH] = { // [MOUSE_BUTTON5] = COMBO(mou_btn5_combo, KC_BTN5), [MOUSE_DRGTOG] = COMBO(mou_drg_combo, TR_DRGS) -// [KEY_ENT] = COMBO(key_ent_combo, KC_ENT), -// [KEY_TAB] = COMBO(key_tab_combo, KC_TAB), -// [KEY_BSPC] = COMBO(key_bspc_combo, KC_BSPC) + [KEY_ENT] = COMBO(key_ent_combo, KC_ENT), + [KEY_TAB] = COMBO(key_tab_combo, KC_TAB), + [KEY_BSPC] = COMBO(key_bspc_combo, KC_BSPC) }; \ No newline at end of file diff --git a/users/t4corun/features/tapping.c b/users/t4corun/features/tapping.c index 4fc7f71e..904e011e 100644 --- a/users/t4corun/features/tapping.c +++ b/users/t4corun/features/tapping.c @@ -1,6 +1,5 @@ #include "tapping.h" -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case NAV: diff --git a/users/t4corun/t4corun.h b/users/t4corun/t4corun.h index ee85be7b..00837552 100644 --- a/users/t4corun/t4corun.h +++ b/users/t4corun/t4corun.h @@ -222,15 +222,15 @@ enum keycodes { #define LAYER_NAVIGATION \ - KC_ESC, KC_HOME, KC_UP, KC_END, KC_PGUP, ___x___, KC_APP, SC_FILE, SC_SNIP, CONFIG, \ - ___x___, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_BSPC, _SCAG_MODS________________________, \ - _UCCPR_L___________________________________, ___x___, KC_TAB, TR_SNIP, TR_SDPI, TR_PDPI, \ + KC_ESC, KC_HOME, KC_UP, KC_END, KC_PGUP, ___x___, ___x___, fdSC_FILE, SC_SNIP, CONFIG, \ + ___x___, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, ___x___, _SCAG_MODS________________________, \ + _UCCPR_L___________________________________, ___x___, KC_APP, TR_SNIP, TR_SDPI, TR_PDPI, \ ZOOMRST, NUM, KC_ENT, _LAYER_TRANS_____________ #define LAYER_NUMBER \ KC_ESC, KC_BTN3, KC_BTN2, KC_BTN1, TR_GRV, ___x___, KC_7, KC_8, KC_9, KC_COMM, \ - _GACS_MODS________________________, TR_SCLN, KC_BSPC, KC_4, KC_5, KC_6, KC_DOT, \ + _GACS_MODS________________________, TR_SCLN, ___x___, KC_4, KC_5, KC_6, KC_DOT, \ _UCCPR_L___________________________________, ___x___, KC_1, KC_2, KC_3, KC_MINS, \ _LAYER_TRANS_____________, _BASE_R4_________________ From 878f111e74e7a7398486d9aeccd23e1d2587839b Mon Sep 17 00:00:00 2001 From: Victor Date: Fri, 24 May 2024 00:37:37 -0500 Subject: [PATCH 26/34] Fixing bugs - I got messed up when i removed the backspace and mouse button 1 combos --- users/t4corun/features/combo.c | 2 +- users/t4corun/features/combo.h | 2 +- users/t4corun/t4corun.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/users/t4corun/features/combo.c b/users/t4corun/features/combo.c index 199ca9b6..5ff81aaa 100644 --- a/users/t4corun/features/combo.c +++ b/users/t4corun/features/combo.c @@ -33,7 +33,7 @@ bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode // case MOUSE_BUTTON2: // case MOUSE_BUTTON3: // case MOUSE_BUTTON4: -df// case MOUSE_BUTTON5: +// case MOUSE_BUTTON5: case MOUSE_DRGTOG: if ( get_highest_layer(layer_state | default_layer_state) > _DEFAULT_LAYER_1 ) return false; diff --git a/users/t4corun/features/combo.h b/users/t4corun/features/combo.h index ef906a53..da6042e4 100644 --- a/users/t4corun/features/combo.h +++ b/users/t4corun/features/combo.h @@ -41,7 +41,7 @@ combo_t key_combos[COMBO_LENGTH] = { // [MOUSE_BUTTON3] = COMBO(mou_btn3_combo, KC_BTN3), // [MOUSE_BUTTON4] = COMBO(mou_btn4_combo, KC_BTN4), // [MOUSE_BUTTON5] = COMBO(mou_btn5_combo, KC_BTN5), - [MOUSE_DRGTOG] = COMBO(mou_drg_combo, TR_DRGS) + [MOUSE_DRGTOG] = COMBO(mou_drg_combo, TR_DRGS), [KEY_ENT] = COMBO(key_ent_combo, KC_ENT), [KEY_TAB] = COMBO(key_tab_combo, KC_TAB), diff --git a/users/t4corun/t4corun.h b/users/t4corun/t4corun.h index 00837552..4a568c9c 100644 --- a/users/t4corun/t4corun.h +++ b/users/t4corun/t4corun.h @@ -222,7 +222,7 @@ enum keycodes { #define LAYER_NAVIGATION \ - KC_ESC, KC_HOME, KC_UP, KC_END, KC_PGUP, ___x___, ___x___, fdSC_FILE, SC_SNIP, CONFIG, \ + KC_ESC, KC_HOME, KC_UP, KC_END, KC_PGUP, ___x___, ___x___, SC_FILE, SC_SNIP, CONFIG, \ ___x___, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, ___x___, _SCAG_MODS________________________, \ _UCCPR_L___________________________________, ___x___, KC_APP, TR_SNIP, TR_SDPI, TR_PDPI, \ ZOOMRST, NUM, KC_ENT, _LAYER_TRANS_____________ From 1a1a230c1c0f707b067e219d8c6224e84e8d6dec Mon Sep 17 00:00:00 2001 From: Victor Date: Fri, 24 May 2024 00:40:53 -0500 Subject: [PATCH 27/34] Tweaking tab combo - mostly for symmetry --- users/t4corun/features/combo.h | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/users/t4corun/features/combo.h b/users/t4corun/features/combo.h index da6042e4..10cacb58 100644 --- a/users/t4corun/features/combo.h +++ b/users/t4corun/features/combo.h @@ -11,9 +11,8 @@ const uint16_t PROGMEM mou_drg_combo[] = { KC_X, KC_C, COMBO_END }; const uint16_t PROGMEM key_ent_combo[] = { KC_C, KC_V, COMBO_END }; -const uint16_t PROGMEM key_tab_combo[] = { KC_M, TR_DOT, COMBO_END }; const uint16_t PROGMEM key_bspc_combo[] = { KC_M, TR_COMM, COMBO_END }; - +const uint16_t PROGMEM key_tab_combo[] = { TR_COMM, TR_DOT, COMBO_END }; enum combos { @@ -23,10 +22,9 @@ enum combos { // MOUSE_BUTTON4, // MOUSE_BUTTON5, MOUSE_DRGTOG, - KEY_ENT, - KEY_TAB, KEY_BSPC, + KEY_TAB, COMBO_LENGTH }; @@ -42,9 +40,7 @@ combo_t key_combos[COMBO_LENGTH] = { // [MOUSE_BUTTON4] = COMBO(mou_btn4_combo, KC_BTN4), // [MOUSE_BUTTON5] = COMBO(mou_btn5_combo, KC_BTN5), [MOUSE_DRGTOG] = COMBO(mou_drg_combo, TR_DRGS), - [KEY_ENT] = COMBO(key_ent_combo, KC_ENT), - [KEY_TAB] = COMBO(key_tab_combo, KC_TAB), - [KEY_BSPC] = COMBO(key_bspc_combo, KC_BSPC) - + [KEY_BSPC] = COMBO(key_bspc_combo, KC_BSPC), + [KEY_TAB] = COMBO(key_tab_combo, KC_TAB) }; \ No newline at end of file From 81b0596b0a65df142bab06eb37484cfb83bbf5cc Mon Sep 17 00:00:00 2001 From: Victor Date: Fri, 24 May 2024 21:09:00 -0500 Subject: [PATCH 28/34] Removing layer taps - Decided I didn't mind having 0 where it is and not having layer taps --- users/t4corun/config/tapping_config.h | 2 -- users/t4corun/features/tapping.c | 11 ----------- users/t4corun/features/tapping.h | 2 -- users/t4corun/rules.mk | 1 - users/t4corun/t4corun.h | 4 ++-- 5 files changed, 2 insertions(+), 18 deletions(-) delete mode 100644 users/t4corun/features/tapping.c delete mode 100644 users/t4corun/features/tapping.h diff --git a/users/t4corun/config/tapping_config.h b/users/t4corun/config/tapping_config.h index d3215835..4db8b6b4 100644 --- a/users/t4corun/config/tapping_config.h +++ b/users/t4corun/config/tapping_config.h @@ -13,7 +13,6 @@ #undef TAP_HOLD_CAPS_DELAY #undef TAPPING_TERM -#undef TAPPING_TERM_PER_KEY #undef QUICK_TAP_TERM @@ -27,7 +26,6 @@ #define WAIT_DELAY 5 //custom variable to configure time between taps #define TAPPING_TERM 175 -#define TAPPING_TERM_PER_KEY #define QUICK_TAP_TERM 120 diff --git a/users/t4corun/features/tapping.c b/users/t4corun/features/tapping.c deleted file mode 100644 index 904e011e..00000000 --- a/users/t4corun/features/tapping.c +++ /dev/null @@ -1,11 +0,0 @@ -#include "tapping.h" - -uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case NAV: - return TAPPING_TERM - 40; - - default: - return TAPPING_TERM; - } -} \ No newline at end of file diff --git a/users/t4corun/features/tapping.h b/users/t4corun/features/tapping.h deleted file mode 100644 index 2a576cc3..00000000 --- a/users/t4corun/features/tapping.h +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -#include "t4corun.h" \ No newline at end of file diff --git a/users/t4corun/rules.mk b/users/t4corun/rules.mk index e4d9e80a..5b249bb4 100644 --- a/users/t4corun/rules.mk +++ b/users/t4corun/rules.mk @@ -41,7 +41,6 @@ MUSIC_MODE = no SRC += \ t4corun.c \ - features/tapping.c \ features/taphold.c \ features/capsword.c \ features/keyoverride.c \ diff --git a/users/t4corun/t4corun.h b/users/t4corun/t4corun.h index 4a568c9c..267ac31c 100644 --- a/users/t4corun/t4corun.h +++ b/users/t4corun/t4corun.h @@ -47,7 +47,7 @@ enum keycodes { #define ___x___ KC_NO // momentary layer -#define NAV LT(_NAVIGATION, KC_0) +#define NAV MO(_NAVIGATION) #define NUM MO(_NUMBER) #define CONFIG MO(_CONFIG) @@ -230,7 +230,7 @@ enum keycodes { #define LAYER_NUMBER \ KC_ESC, KC_BTN3, KC_BTN2, KC_BTN1, TR_GRV, ___x___, KC_7, KC_8, KC_9, KC_COMM, \ - _GACS_MODS________________________, TR_SCLN, ___x___, KC_4, KC_5, KC_6, KC_DOT, \ + _GACS_MODS________________________, TR_SCLN, KC_0, KC_4, KC_5, KC_6, KC_DOT, \ _UCCPR_L___________________________________, ___x___, KC_1, KC_2, KC_3, KC_MINS, \ _LAYER_TRANS_____________, _BASE_R4_________________ From 18228623880eebb076cca9c6f65b54e0a91fe7d4 Mon Sep 17 00:00:00 2001 From: Victor <87155454+t4corun@users.noreply.github.com> Date: Fri, 24 May 2024 22:41:29 -0500 Subject: [PATCH 29/34] Starting on integrating KLOR OLED - Added default rotation - need to review the screen to know what the hex code means --- users/t4corun/features/oled.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/users/t4corun/features/oled.c b/users/t4corun/features/oled.c index d545be25..dc650840 100644 --- a/users/t4corun/features/oled.c +++ b/users/t4corun/features/oled.c @@ -98,9 +98,7 @@ void render_oled_main(void) { bool oled_task_user(void) { if (is_keyboard_master()) { - render_oled_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) - } else { #if defined(KEYBOARD_barbellboards_rollow) @@ -121,14 +119,14 @@ bool oled_task_user(void) { oled_rotation_t oled_init_user(oled_rotation_t rotation) { +#if defined(KEYBOARD_klor_2040) + return OLED_ROTATION_0; +#else if (is_keyboard_master()) { - return OLED_ROTATION_270; - } else { - - return OLED_ROTATION_0; - + return OLED_ROTATION_0; } +#endif } \ No newline at end of file From 7013d3981056d16e1df1c19f00f44efe0abd05c9 Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 27 May 2024 00:08:27 -0500 Subject: [PATCH 30/34] Made major changes to OLED - now I understand how the system works I can make my own fonts/graphics - overhauled the 32x128 OLED screen display. Will still tweak it --- users/t4corun/config/oled_config.h | 5 +- users/t4corun/features/oled.c | 143 ++++++++++++++---- users/t4corun/features/oled.h | 58 +++++-- users/t4corun/lib/font.c | 234 +++++++++++++++++++++++++++++ users/t4corun/t4corun.c | 3 +- 5 files changed, 397 insertions(+), 46 deletions(-) create mode 100644 users/t4corun/lib/font.c diff --git a/users/t4corun/config/oled_config.h b/users/t4corun/config/oled_config.h index 318165a7..972eff55 100644 --- a/users/t4corun/config/oled_config.h +++ b/users/t4corun/config/oled_config.h @@ -8,7 +8,8 @@ //Clear variables we plan to use that might be set elsewhere #undef OLED_TIMEOUT - +#undef OLED_FONT_H //Set common configuration for all keyboards -#define OLED_TIMEOUT 60000 //1 min \ No newline at end of file +#define OLED_TIMEOUT 60000 //1 min +#define OLED_FONT_H "./lib/font.c" \ No newline at end of file diff --git a/users/t4corun/features/oled.c b/users/t4corun/features/oled.c index dc650840..5dff072b 100644 --- a/users/t4corun/features/oled.c +++ b/users/t4corun/features/oled.c @@ -20,8 +20,6 @@ void render_qmk_logo(void) { void render_default_layer_state(void) { - oled_write_P(PSTR(OLED_RENDER_LAYOUT_NAME), false); - switch (get_highest_layer(default_layer_state)) { case _QWERTY: @@ -33,7 +31,7 @@ void render_default_layer_state(void) { break; case _GAME: - oled_write_P(PSTR(OLED_RENDER_LAYOUT_GAME), false); + oled_write_ln_P(PSTR(OLED_RENDER_LAYOUT_GAME), false); break; } @@ -43,23 +41,49 @@ void render_default_layer_state(void) { void render_layer_state(void) { - oled_write_P(PSTR(OLED_RENDER_LAYER_NAME), false); - oled_write_P(PSTR(OLED_RENDER_LAYER_BASE), get_highest_layer(layer_state) == FIRST_DEFAULT_LAYER); - oled_write_P(PSTR(OLED_RENDER_LAYER_NAVIGATION), get_highest_layer(layer_state) == _NAVIGATION); - oled_write_P(PSTR(OLED_RENDER_LAYER_NUMBER), get_highest_layer(layer_state) == _NUMBER); - oled_write_P(PSTR(OLED_RENDER_LAYER_SYMBOL), get_highest_layer(layer_state) == _SYMBOL); - oled_write_P(PSTR(OLED_RENDER_LAYER_CONFIG), get_highest_layer(layer_state) == _CONFIG); + switch (get_highest_layer(layer_state)) { + case _NAVIGATION: + oled_write_ln_P(PSTR(OLED_RENDER_LAYER_NAVIGATION), false); + break; + case _NUMBER: + oled_write_ln_P(PSTR(OLED_RENDER_LAYER_NUMBER), false); + break; + case _SYMBOL: + oled_write_ln_P(PSTR(OLED_RENDER_LAYER_SYMBOL), false); + break; + case _CONFIG: + oled_write_ln_P(PSTR(OLED_RENDER_LAYER_CONFIG), false); + break; + default: + oled_write_ln_P(PSTR(OLED_RENDER_LAYER_BASE), false); + break; + } } void render_keylock_status(void) { - oled_write_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("N"), host_keyboard_led_state().num_lock); - oled_write_P(PSTR("C"), host_keyboard_led_state().caps_lock || is_caps_word_on() ); - oled_write_ln_P(PSTR("S"), host_keyboard_led_state().scroll_lock ); + + 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 ); + } } @@ -69,18 +93,72 @@ void render_mod_status(void) { uint8_t current_mod = get_mods(); uint8_t current_osm = get_oneshot_mods(); - oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false); + oled_write_ln_P(PSTR(OLED_RENDER_MODS_NAME), false); oled_write_P(PSTR(" "), false); - bool isShift = (current_mod | current_osm) & MOD_MASK_SHIFT; - bool isCtrl = (current_mod | current_osm) & MOD_MASK_CTRL; - bool isAlt = (current_mod | current_osm) & MOD_MASK_ALT; - bool isGUI = (current_mod | current_osm) & MOD_MASK_GUI; + if( (current_mod | current_osm) & MOD_MASK_SHIFT ) { + oled_write_P(shift_on, false ); + }else { + oled_write_P(shift_off, false ); + } - oled_write_P(PSTR("S"), isShift ); - oled_write_P(PSTR("C"), isCtrl ); - oled_write_P(PSTR("A"), isAlt ); - oled_write_P(PSTR("G"), isGUI ); + if( (current_mod | current_osm) & MOD_MASK_CTRL ) { + oled_write_P(ctrl_on, false ); + }else { + oled_write_P(ctrl_off, 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 ); + } + +} + +void render_feature_status(void) { + +oled_write_ln_P(PSTR(OLED_RENDER_FEATURE_NAME), false); + +#if defined(RGB_MATRIX_ENABLE) + if (rgb_matrix_is_enabled()) { + oled_write_P(rgb_on, false); + } else { + oled_write_P(rgb_off, false); + } +#else + oled_write_P(rgb_off, false); +#endif + +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); + } + +#else + oled_write_P(audio_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); + } + +#else + oled_write_P(haptic_off, false); +#endif //AUDIO_ENABLE } @@ -88,9 +166,16 @@ void render_mod_status(void) { void render_oled_main(void) { render_default_layer_state(); - render_keylock_status(); - render_mod_status(); 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(); } @@ -119,14 +204,12 @@ bool oled_task_user(void) { oled_rotation_t oled_init_user(oled_rotation_t rotation) { -#if defined(KEYBOARD_klor_2040) - return OLED_ROTATION_0; -#else +#if !defined(KEYBOARD_klor_2040) if (is_keyboard_master()) { return OLED_ROTATION_270; - } else { - return OLED_ROTATION_0; } #endif -} \ No newline at end of file + return OLED_ROTATION_0; + +} diff --git a/users/t4corun/features/oled.h b/users/t4corun/features/oled.h index 2259e365..fe9e4e38 100644 --- a/users/t4corun/features/oled.h +++ b/users/t4corun/features/oled.h @@ -2,20 +2,20 @@ #include "t4corun.h" -#define OLED_RENDER_KEYLOCK_NAME "Lock:" -#define OLED_RENDER_MODS_NAME "Mods:" -#define OLED_RENDER_LAYOUT_NAME "Lyout" -#define OLED_RENDER_LAYOUT_QWERTY " qrty" -#define OLED_RENDER_LAYOUT_COLEMAK_DH " cmDH" -#define OLED_RENDER_LAYOUT_GAME " Game" +#define OLED_RENDER_KEYLOCK_NAME "Lock" +#define OLED_RENDER_MODS_NAME "Mods" +#define OLED_RENDER_FEATURE_NAME "Feat" -#define OLED_RENDER_LAYER_NAME "Layer" -#define OLED_RENDER_LAYER_BASE " Def " -#define OLED_RENDER_LAYER_NAVIGATION " Nav " -#define OLED_RENDER_LAYER_NUMBER " Num " -#define OLED_RENDER_LAYER_SYMBOL " Sym " -#define OLED_RENDER_LAYER_CONFIG " Cfg " +#define OLED_RENDER_LAYOUT_QWERTY "QWRTY" +#define OLED_RENDER_LAYOUT_COLEMAK_DH "CLMAK" +#define OLED_RENDER_LAYOUT_GAME "GAME" + +#define OLED_RENDER_LAYER_BASE " Def" +#define OLED_RENDER_LAYER_NAVIGATION " Nav" +#define OLED_RENDER_LAYER_NUMBER " Num" +#define OLED_RENDER_LAYER_SYMBOL " Sym" +#define OLED_RENDER_LAYER_CONFIG " Cfg" void render_crkbd_logo(void); void render_rollow_logo(void); @@ -24,10 +24,44 @@ 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[] = {0xDC, 0}; + +static const char PROGMEM caps_on[] = {0x93, 0}; +static const char PROGMEM caps_off[] = {0xD9, 0}; + +static const char PROGMEM scroll_on[] = {0x8F, 0}; +static const char PROGMEM scroll_off[] = {0xD8, 0}; + +static const char PROGMEM shift_on[] = {0x8F, 0}; +static const char PROGMEM shift_off[] = {0xD8, 0}; + +static const char PROGMEM ctrl_on[] = {0x93, 0}; +static const char PROGMEM ctrl_off[] = {0xD9, 0}; + +static const char PROGMEM alt_on[] = {0xD6, 0}; +static const char PROGMEM alt_off[] = {0xDA, 0}; + +static const char PROGMEM gui_on[] = {0xD7, 0}; +static const char PROGMEM gui_off[] = {0xDB, 0}; + +static const char PROGMEM rgb_on[] = {0xD4, 0xD5, 0}; +static const char PROGMEM rgb_off[] = {0xDD, 0xDE, 0};- + +static const char PROGMEM audio_on[] = {0xAF, 0xB0, 0}; +static const char PROGMEM audio_off[] = {0xCF, 0xD0, 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, diff --git a/users/t4corun/lib/font.c b/users/t4corun/lib/font.c new file mode 100644 index 00000000..181af05d --- /dev/null +++ b/users/t4corun/lib/font.c @@ -0,0 +1,234 @@ +// This is the KLOR font file modified +// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. +// See gfxfont.h for newer custom bitmap font info. + +#pragma once + +#include "progmem.h" + +static const unsigned char PROGMEM font[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, + 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, + 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, + 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, + 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, + 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, + 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, + 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, + 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, + 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x94, 0xB6, 0xFF, 0xB6, 0x94, 0x00, + 0x08, 0x0C, 0x7E, 0x0C, 0x08, 0x00, + 0x10, 0x30, 0x7E, 0x30, 0x10, 0x00, + 0x08, 0x08, 0x3E, 0x1C, 0x08, 0x00, + 0x08, 0x1C, 0x3E, 0x08, 0x08, 0x00, + 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, + 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, + 0x14, 0x3E, 0x14, 0x3E, 0x14, 0x00, + 0x2E, 0x2A, 0x7F, 0x2A, 0x3A, 0x00, + 0x20, 0x12, 0x08, 0x24, 0x02, 0x00, + 0x37, 0x49, 0x49, 0x37, 0x50, 0x00, + 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, + 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, + 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, + 0x7F, 0x51, 0x49, 0x45, 0x7F, 0x00, + 0x08, 0x04, 0x02, 0x7F, 0x00, 0x00, + 0x71, 0x49, 0x49, 0x49, 0x4F, 0x00, + 0x41, 0x41, 0x49, 0x49, 0x77, 0x00, + 0x0F, 0x10, 0x10, 0x10, 0x7F, 0x00, + 0x4F, 0x49, 0x49, 0x49, 0x71, 0x00, + 0x7E, 0x49, 0x49, 0x49, 0x70, 0x00, + 0x01, 0x01, 0x71, 0x09, 0x07, 0x00, + 0x77, 0x49, 0x49, 0x49, 0x77, 0x00, + 0x07, 0x49, 0x49, 0x49, 0x3F, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, + 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, + 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, + 0x01, 0x01, 0x59, 0x09, 0x0F, 0x00, + 0x7F, 0x41, 0x5D, 0x59, 0x4F, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x7F, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x76, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x41, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x7E, 0x00, + 0x7F, 0x49, 0x49, 0x49, 0x49, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x09, 0x00, + 0x7F, 0x41, 0x41, 0x49, 0x7B, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, + 0x70, 0x40, 0x40, 0x40, 0x7F, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x77, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x7F, 0x01, 0x1F, 0x01, 0x7F, 0x00, + 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, + 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00, + 0x7F, 0x09, 0x09, 0x09, 0x0F, 0x00, + 0x7F, 0x41, 0x71, 0x41, 0x7F, 0x00, + 0x7F, 0x09, 0x09, 0x19, 0x6F, 0x00, + 0x47, 0x49, 0x49, 0x49, 0x79, 0x00, + 0x01, 0x01, 0x7F, 0x01, 0x01, 0x00, + 0x7F, 0x40, 0x40, 0x40, 0x7F, 0x00, + 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, + 0x7F, 0x40, 0x7F, 0x40, 0x7F, 0x00, + 0x77, 0x08, 0x08, 0x08, 0x77, 0x00, + 0x4F, 0x48, 0x48, 0x48, 0x7F, 0x00, + 0x61, 0x51, 0x49, 0x45, 0x43, 0x00, + 0x00, 0x7F, 0x41, 0x41, 0x00, 0x00, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, + 0x00, 0x41, 0x41, 0x7F, 0x00, 0x00, + 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, + 0x00, 0x00, 0x07, 0x08, 0x00, 0x00, + 0x60, 0x54, 0x54, 0x54, 0x7C, 0x00, + 0x7F, 0x44, 0x44, 0x44, 0x78, 0x00, + 0x7C, 0x44, 0x44, 0x44, 0x44, 0x00, + 0x78, 0x44, 0x44, 0x44, 0x7F, 0x00, + 0x7C, 0x54, 0x54, 0x54, 0x5C, 0x00, + 0x08, 0x7F, 0x09, 0x09, 0x09, 0x00, + 0x38, 0xA4, 0xA4, 0xA4, 0xFC, 0x00, + 0x7F, 0x04, 0x04, 0x04, 0x78, 0x00, + 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, + 0x70, 0x40, 0x40, 0x7D, 0x00, 0x00, + 0x7F, 0x08, 0x08, 0x08, 0x76, 0x00, + 0x00, 0x00, 0x7F, 0x40, 0x00, 0x00, + 0x7C, 0x04, 0x7C, 0x04, 0x7C, 0x00, + 0x7C, 0x04, 0x04, 0x04, 0x78, 0x00, + 0x7C, 0x44, 0x44, 0x44, 0x7C, 0x00, + 0xFC, 0x24, 0x24, 0x24, 0x38, 0x00, + 0x38, 0x24, 0x24, 0x24, 0xFC, 0x00, + 0x7C, 0x04, 0x04, 0x04, 0x04, 0x00, + 0x5C, 0x54, 0x54, 0x54, 0x74, 0x00, + 0x04, 0x04, 0x7F, 0x04, 0x04, 0x00, + 0x7C, 0x40, 0x40, 0x40, 0x7C, 0x00, + 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, + 0x7C, 0x40, 0x7C, 0x40, 0x7C, 0x00, + 0x6C, 0x10, 0x10, 0x10, 0x6C, 0x00, + 0xBC, 0xA0, 0xA0, 0xA0, 0xFC, 0x00, + 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, + 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, + 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, + 0x00, 0x00, 0xE0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xFE, 0xFF, 0x9F, 0x0F, 0x0F, + 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, + 0x0F, 0x0F, 0x9F, 0xFF, 0xFE, 0xF0, + 0xF0, 0xF0, 0xF0, 0xE0, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0x10, 0x08, 0x04, 0x02, 0x02, + 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x02, 0x02, 0x02, 0x04, 0x08, + 0x10, 0xE0, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, + 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, + 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, 0x7F, 0x7F, 0x6B, 0x49, 0x08, + 0x49, 0x6B, 0x7F, 0x7F, 0x7F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, + 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, + 0x87, 0xE1, 0xF9, 0xF9, 0xE1, 0x87, + 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, + 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0xC0, 0x30, 0x0C, + 0x33, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xC0, 0x3F, 0x00, 0x00, 0x00, + 0xFF, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x38, 0xC8, 0x08, 0x08, 0x0F, + 0x7F, 0x43, 0x7F, 0x41, 0x7F, 0x47, + 0x7F, 0x43, 0x7F, 0x47, 0x7F, 0x00, + 0x7F, 0x5B, 0x5B, 0x6D, 0x6D, 0x5B, + 0x5B, 0x6D, 0x6D, 0x5B, 0x7F, 0x00, + 0x00, 0x24, 0x24, 0x24, 0x24, 0x24, + 0x24, 0x24, 0x24, 0x24, 0x00, 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, + 0x00, 0x00, 0x00, 0x14, 0x36, 0x77, + 0x36, 0x14, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, + 0x3F, 0x0C, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x0C, 0x30, 0x00, + 0x00, 0x00, 0x00, 0x3F, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x01, 0x02, 0x04, 0x08, 0x10, 0x10, + 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x10, 0x10, 0x10, 0x08, 0x04, + 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x0C, 0x30, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, + 0x1C, 0x3E, 0x3E, 0x3E, 0x1C, 0x00, + 0x3E, 0x1C, 0x1C, 0x08, 0x08, 0x00, + 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x00, + 0x7F, 0x41, 0x5F, 0x7F, 0x41, 0x55, + 0x7F, 0x41, 0x5D, 0x63, 0x7F, 0x00, + 0x7F, 0x43, 0x75, 0x75, 0x43, 0x7F, + 0x7F, 0x41, 0x5D, 0x55, 0x45, 0x7F, + 0x00, 0x2E, 0x2A, 0x2A, 0x3A, 0x00, + 0x00, 0x3E, 0x22, 0x22, 0x22, 0x00, + 0x00, 0x3C, 0x0A, 0x0A, 0x3C, 0x00, + 0x00, 0x3E, 0x22, 0x2A, 0x3A, 0x00, + 0x00, 0x3E, 0x04, 0x08, 0x3E, 0x00, + 0x00, 0x3E, 0x20, 0x00, 0x3E, 0x2A, + 0x22, 0x00, 0x3E, 0x22, 0x1C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; diff --git a/users/t4corun/t4corun.c b/users/t4corun/t4corun.c index 3c2055a7..f59b4316 100644 --- a/users/t4corun/t4corun.c +++ b/users/t4corun/t4corun.c @@ -4,8 +4,7 @@ static uint8_t current_base_layer = _DEFAULT_LAYER_1; layer_state_t layer_state_set_user(layer_state_t state) { - state = update_tri_layer_state(state, _NAVIGATION, _NUMBER, _SYMBOL); - return state; + return update_tri_layer_state(state, _NAVIGATION, _NUMBER, _SYMBOL);; } From b3d323769a7127cfe221362753a985aed765a8e4 Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 27 May 2024 22:24:37 -0500 Subject: [PATCH 31/34] OLED updates - tweaked 32x128 master side. Got the layout and symbols I wanted - trying to track the ploopy nano drag scroll so the OLED will work - added Luna pet skeleton to slave side. need to tweak it. --- users/t4corun/config/split_config.h | 3 + users/t4corun/features/oled.c | 178 +++++++++++++++++++++++++++- users/t4corun/features/oled.h | 47 ++++---- users/t4corun/lib/font.c | 101 ++++++++-------- users/t4corun/rules.mk | 1 + users/t4corun/t4corun.c | 70 ++++++++++- users/t4corun/t4corun.h | 7 ++ 7 files changed, 331 insertions(+), 76 deletions(-) diff --git a/users/t4corun/config/split_config.h b/users/t4corun/config/split_config.h index 3a68cfd9..f86d85e0 100644 --- a/users/t4corun/config/split_config.h +++ b/users/t4corun/config/split_config.h @@ -20,10 +20,13 @@ #undef SPLIT_OLED_ENABLE #undef SPLIT_ACTIVITY_ENABLE #undef SPLIT_USB_DETECT +#undef SPLIT_WPM_ENABLE //Set common configuration for all keyboards #define SPLIT_TRANSPORT_MIRROR #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 5dff072b..92a98587 100644 --- a/users/t4corun/features/oled.c +++ b/users/t4corun/features/oled.c @@ -1,4 +1,162 @@ #include "oled.h" + +/* KEYBOARD PET START */ + +/* settings */ +# define MIN_WALK_SPEED 10 +# define MIN_RUN_SPEED 40 + +/* 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 + +/* timers */ +uint32_t anim_timer = 0; + +/* current frame */ +uint8_t current_frame = 0; + +/* +bool isSneaking = false; +bool isJumping = false; +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(); + } +} + +/* KEYBOARD PET END */ + + + + + + + + + + + + + + + + + + + + + + void render_crkbd_logo(void) { @@ -108,6 +266,8 @@ void render_mod_status(void) { 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 { @@ -125,6 +285,7 @@ void render_mod_status(void) { 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()) { @@ -136,6 +297,12 @@ oled_write_ln_P(PSTR(OLED_RENDER_FEATURE_NAME), false); oled_write_P(rgb_off, false); #endif + if(drag_scroll_is_enabled()) { + oled_write_P(dragscr_on, false); + } else { + oled_write_P(dragscr_off, false); + } + oled_write_P(PSTR(" "), false); #if defined(AUDIO_ENABLE) @@ -191,7 +358,14 @@ bool oled_task_user(void) { #elif defined(KEYBOARD_crkbd) render_crkbd_logo(); #else - render_qmk_logo(); + //render_qmk_logo(); + + /* KEYBOARD PET RENDER START */ + + render_luna(0, 13); + + /* KEYBOARD PET RENDER END */ + #endif } @@ -210,6 +384,6 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { } #endif - return OLED_ROTATION_0; + return OLED_ROTATION_270; } diff --git a/users/t4corun/features/oled.h b/users/t4corun/features/oled.h index fe9e4e38..caa77abd 100644 --- a/users/t4corun/features/oled.h +++ b/users/t4corun/features/oled.h @@ -29,37 +29,40 @@ 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 sep_v32[] = {0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0}; -static const char PROGMEM num_on[] = {0x91, 0}; -static const char PROGMEM num_off[] = {0xDC, 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[] = {0xD9, 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[] = {0xD8, 0}; +static const char PROGMEM scroll_on[] = {0x8F, 0}; +static const char PROGMEM scroll_off[] = {0x8D, 0}; -static const char PROGMEM shift_on[] = {0x8F, 0}; -static const char PROGMEM shift_off[] = {0xD8, 0}; +static const char PROGMEM shift_on[] = {0x87, 0x88, 0}; +static const char PROGMEM shift_off[] = {0x85, 0x86, 0}; -static const char PROGMEM ctrl_on[] = {0x93, 0}; -static const char PROGMEM ctrl_off[] = {0xD9, 0}; +static const char PROGMEM ctrl_on[] = {0xAB, 0xAC, 0}; +static const char PROGMEM ctrl_off[] = {0xA9, 0xAA, 0}; -static const char PROGMEM alt_on[] = {0xD6, 0}; -static const char PROGMEM alt_off[] = {0xDA, 0}; +static const char PROGMEM alt_on[] = {0xA7, 0xA8, 0}; +static const char PROGMEM alt_off[] = {0xA5, 0xA6, 0}; -static const char PROGMEM gui_on[] = {0xD7, 0}; -static const char PROGMEM gui_off[] = {0xDB, 0}; +static const char PROGMEM gui_on[] = {0x8B, 0x8C, 0}; +static const char PROGMEM gui_off[] = {0x89, 0x8A, 0}; -static const char PROGMEM rgb_on[] = {0xD4, 0xD5, 0}; -static const char PROGMEM rgb_off[] = {0xDD, 0xDE, 0};- +static const char PROGMEM rgb_on[] = {0xC7, 0xC8, 0}; +static const char PROGMEM rgb_off[] = {0xC5, 0xC6, 0}; -static const char PROGMEM audio_on[] = {0xAF, 0xB0, 0}; -static const char PROGMEM audio_off[] = {0xCF, 0xD0, 0}; +static const char PROGMEM dragscr_on[] = {0xBD, 0xBE, 0}; +static const char PROGMEM dragscr_off[] = {0x9D, 0x9E, 0}; -static const char PROGMEM haptic_on[] = {0xB1, 0xB2, 0}; -static const char PROGMEM haptic_off[] = {0xB3, 0xB4, 0}; +static const char PROGMEM audio_on[] = {0xAF, 0xB0, 0}; +static const char PROGMEM audio_off[] = {0xCF, 0xD0, 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[] = { @@ -131,4 +134,4 @@ static const char PROGMEM rollow_logo[] = { // 128x32 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 diff --git a/users/t4corun/lib/font.c b/users/t4corun/lib/font.c index 181af05d..3c51406c 100644 --- a/users/t4corun/lib/font.c +++ b/users/t4corun/lib/font.c @@ -1,4 +1,3 @@ -// This is the KLOR font file modified // This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. // See gfxfont.h for newer custom bitmap font info. @@ -140,16 +139,16 @@ static const unsigned char PROGMEM font[] = { 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x0F, 0x0F, 0x9F, 0xFF, 0xFE, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xE0, 0x10, 0x08, 0x04, 0x02, 0x02, - 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x02, 0x02, 0x02, 0x04, 0x08, - 0x10, 0xE0, 0x00, 0x00, 0x00, 0x00, - 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, + 0x00, 0x00, 0x08, 0x0C, 0x7E, 0x7F, + 0x7E, 0x0C, 0x08, 0x00, 0x00, 0x00, + 0x7F, 0x7F, 0x77, 0x73, 0x01, 0x00, + 0x01, 0x73, 0x77, 0x7F, 0x7F, 0x00, + 0x00, 0x00, 0x77, 0x77, 0x77, 0x00, + 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, + 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, @@ -164,30 +163,30 @@ static const unsigned char PROGMEM font[] = { 0xFF, 0x1F, 0xDE, 0x1C, 0xF8, 0x00, 0xC0, 0xE2, 0xB4, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xB4, 0xE2, 0xC0, 0x00, - 0x7F, 0x7F, 0x7F, 0x6B, 0x49, 0x08, - 0x49, 0x6B, 0x7F, 0x7F, 0x7F, 0x00, + 0x7F, 0x01, 0x01, 0x01, 0x01, 0x3F, + 0x01, 0x01, 0x01, 0x01, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x87, 0xE1, 0xF9, 0xF9, 0xE1, 0x87, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0xC0, 0x30, 0x0C, - 0x33, 0xC0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, - 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xC0, 0x3F, 0x00, 0x00, 0x00, - 0xFF, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x38, 0xC8, 0x08, 0x08, 0x0F, + 0x00, 0x06, 0x06, 0x06, 0x0C, 0x18, + 0x30, 0x66, 0x66, 0x66, 0x00, 0x00, + 0x7F, 0x79, 0x79, 0x79, 0x73, 0x67, + 0x4F, 0x19, 0x19, 0x19, 0x7F, 0x00, + 0x00, 0x60, 0x70, 0x38, 0x1C, 0x0E, + 0x1C, 0x38, 0x70, 0x60, 0x00, 0x00, + 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, 0x43, 0x7F, 0x41, 0x7F, 0x47, - 0x7F, 0x43, 0x7F, 0x47, 0x7F, 0x00, + 0x7F, 0x43, 0x7F, 0x4F, 0x7F, 0x00, 0x7F, 0x5B, 0x5B, 0x6D, 0x6D, 0x5B, 0x5B, 0x6D, 0x6D, 0x5B, 0x7F, 0x00, - 0x00, 0x24, 0x24, 0x24, 0x24, 0x24, - 0x24, 0x24, 0x24, 0x24, 0x00, 0x00, + 0x00, 0x24, 0x24, 0x12, 0x12, 0x24, + 0x24, 0x12, 0x12, 0x24, 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x3F, 0x3F, 0x7F, 0x7F, 0x38, 0x10, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, @@ -196,39 +195,39 @@ static const unsigned char PROGMEM font[] = { 0x45, 0x40, 0x21, 0x14, 0x0F, 0x00, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x00, - 0x00, 0x00, 0x00, 0x14, 0x36, 0x77, - 0x36, 0x14, 0x00, 0x00, 0x00, 0x00, + 0x7F, 0x7F, 0x7F, 0x7F, 0x01, 0x3D, + 0x01, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, - 0x3F, 0x0C, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x0C, 0x30, 0x00, - 0x00, 0x00, 0x00, 0x3F, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x01, 0x02, 0x04, 0x08, 0x10, 0x10, - 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x10, 0x10, 0x10, 0x08, 0x04, - 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x0C, 0x30, - 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, - 0x00, 0x30, 0x00, 0x30, 0x00, 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, + 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, - 0x7F, 0x41, 0x5F, 0x7F, 0x41, 0x55, - 0x7F, 0x41, 0x5D, 0x63, 0x7F, 0x00, - 0x7F, 0x43, 0x75, 0x75, 0x43, 0x7F, - 0x7F, 0x41, 0x5D, 0x55, 0x45, 0x7F, - 0x00, 0x2E, 0x2A, 0x2A, 0x3A, 0x00, - 0x00, 0x3E, 0x22, 0x22, 0x22, 0x00, - 0x00, 0x3C, 0x0A, 0x0A, 0x3C, 0x00, - 0x00, 0x3E, 0x22, 0x2A, 0x3A, 0x00, - 0x00, 0x3E, 0x04, 0x08, 0x3E, 0x00, - 0x00, 0x3E, 0x20, 0x00, 0x3E, 0x2A, - 0x22, 0x00, 0x3E, 0x22, 0x1C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; diff --git a/users/t4corun/rules.mk b/users/t4corun/rules.mk index 5b249bb4..e8d1acb9 100644 --- a/users/t4corun/rules.mk +++ b/users/t4corun/rules.mk @@ -35,6 +35,7 @@ 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 diff --git a/users/t4corun/t4corun.c b/users/t4corun/t4corun.c index f59b4316..e271da19 100644 --- a/users/t4corun/t4corun.c +++ b/users/t4corun/t4corun.c @@ -1,6 +1,14 @@ #include "t4corun.h" -static uint8_t current_base_layer = _DEFAULT_LAYER_1; +static uint8_t current_base_layer = _DEFAULT_LAYER_1; +static bool drag_scroll_enabled = false; + + +/* Luna variables */ +static bool isSneaking = false; +static bool isJumping = false; +static bool showedJump = true; + layer_state_t layer_state_set_user(layer_state_t state) { @@ -8,10 +16,67 @@ layer_state_t layer_state_set_user(layer_state_t state) { } +bool drag_scroll_is_enabled(void) { + + /* + 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; +} + 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; + showedJump = false; + } else { + isJumping = false; + } + break; + + /* KEYBOARD PET STATUS END */ + + + case BASELYR: if (record->event.pressed) { @@ -39,6 +104,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // double_tap(KC_NUM, KC_NUM, WAIT_DELAY); double_tap(KC_NUM, WAIT_DELAY); + //I realize this may not work for the Charybdis nano + drag_scroll_enabled = !drag_scroll_enabled; + } return false; diff --git a/users/t4corun/t4corun.h b/users/t4corun/t4corun.h index 267ac31c..39099f61 100644 --- a/users/t4corun/t4corun.h +++ b/users/t4corun/t4corun.h @@ -2,6 +2,13 @@ #include QMK_KEYBOARD_H #include "features/taphold.h" +bool drag_scroll_is_enabled(void); + +bool isLunaSneaking(void); +bool isLunaJumping(void); +bool isLunaShowedJump(void); + +void setLunaShowedJump(bool state); enum layers { _QWERTY = 0, From 2036b62a89625561f0f479c1979717ae83c9cbb3 Mon Sep 17 00:00:00 2001 From: Victor Date: Tue, 28 May 2024 12:43:28 -0500 Subject: [PATCH 32/34] 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 --- keyboards/crkbd/keymaps/t4corun/rules.mk | 1 + users/t4corun/config.h | 6 +- users/t4corun/config/split_config.h | 10 +- users/t4corun/features/oled.c | 409 ++++++++--------------- users/t4corun/features/oled.h | 209 +++++++----- users/t4corun/lib/font.c | 100 +++--- users/t4corun/rules.mk | 19 +- users/t4corun/t4corun.c | 81 ++--- users/t4corun/t4corun.h | 7 +- 9 files changed, 347 insertions(+), 495 deletions(-) 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, From 3fa49a03d196040e8ee0c4ae8cad7a392fe35caa Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 5 Jun 2024 18:15:17 -0500 Subject: [PATCH 33/34] Backing up OLED32/64 work --- .../rollow/keymaps/t4corun/rules.mk | 1 + keyboards/klor/keymaps/t4corun/keymap.c | 13 +- keyboards/klor/keymaps/t4corun/rules.mk | 3 + qmk.json | 1 - users/t4corun/features/keyoverride.h | 1 + users/t4corun/features/luna.c | 71 +++++++++ users/t4corun/features/{oled.h => luna.h} | 120 +------------- users/t4corun/features/{oled.c => oled32.c} | 87 +--------- users/t4corun/features/oled32.h | 111 +++++++++++++ users/t4corun/features/oled64.c | 44 ++++++ users/t4corun/features/oled64.h | 149 ++++++++++++++++++ users/t4corun/rules.mk | 6 +- 12 files changed, 401 insertions(+), 206 deletions(-) create mode 100644 users/t4corun/features/luna.c rename users/t4corun/features/{oled.h => luna.h} (63%) rename users/t4corun/features/{oled.c => oled32.c} (70%) create mode 100644 users/t4corun/features/oled32.h create mode 100644 users/t4corun/features/oled64.c create mode 100644 users/t4corun/features/oled64.h diff --git a/keyboards/barbellboards/rollow/keymaps/t4corun/rules.mk b/keyboards/barbellboards/rollow/keymaps/t4corun/rules.mk index ef9cbaeb..fc0cdd7c 100644 --- a/keyboards/barbellboards/rollow/keymaps/t4corun/rules.mk +++ b/keyboards/barbellboards/rollow/keymaps/t4corun/rules.mk @@ -5,4 +5,5 @@ # keyboards\barbellboards\rollow\info.json # keyboards\barbellboards\rollow\rules.mk +LTO_ENABLE = no CONVERT_TO = promicro_rp2040 \ No newline at end of file diff --git a/keyboards/klor/keymaps/t4corun/keymap.c b/keyboards/klor/keymaps/t4corun/keymap.c index 690aa5a7..11db598d 100644 --- a/keyboards/klor/keymaps/t4corun/keymap.c +++ b/keyboards/klor/keymaps/t4corun/keymap.c @@ -32,16 +32,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) -/* These are horizontal encoders. Found I have to make it opposite the rotary encoders for it to feel intuitive*/ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [_QWERTY] = { ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, - [_COLEMAK_DH] = { ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, - [_GAME] = { ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) }, - [_NAVIGATION] = { ENCODER_CCW_CW(ZOOMIN, ZOOMOUT), ENCODER_CCW_CW(___x___, ___x___) }, - [_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_RGHT, KC_LEFT) }, + [_QWERTY] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_COLEMAK_DH] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_GAME] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_NAVIGATION] = { ENCODER_CCW_CW(ZOOMOUT, ZOOMIN), ENCODER_CCW_CW(___x___, ___x___) }, + [_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_LEFT, KC_RGHT) }, [_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, - [_CONFIG] = { ENCODER_CCW_CW(BASELYR, RBSELYR), ENCODER_CCW_CW(TR_RMOD, TR_RRMD) } + [_CONFIG] = { ENCODER_CCW_CW(RBSELYR, BASELYR), ENCODER_CCW_CW(TR_RRMD, TR_RMOD) } }; diff --git a/keyboards/klor/keymaps/t4corun/rules.mk b/keyboards/klor/keymaps/t4corun/rules.mk index 956e11ac..fabb46eb 100644 --- a/keyboards/klor/keymaps/t4corun/rules.mk +++ b/keyboards/klor/keymaps/t4corun/rules.mk @@ -1,5 +1,7 @@ # override userspace defaults +ENCODER_MAP_ENABLE = yes + # override keyboard defaults # keyboards\klor\info.json # keyboards\klor\rules.mk @@ -7,6 +9,7 @@ AUDIO_ENABLE = yes HAPTIC_ENABLE = yes RGB_MATRIX_ENABLE = yes +SWAP_HANDS_ENABLE = no # Choose your layout KLOR_CONFIG = saegewerk \ No newline at end of file diff --git a/qmk.json b/qmk.json index af6e7139..a9d451de 100644 --- a/qmk.json +++ b/qmk.json @@ -2,7 +2,6 @@ "userspace_version": "1.0", "build_targets": [ - ["ploopyco/trackball_nano", "lkbm"], ["crkbd/rev1", "t4corun"], ["bastardkb/charybdis/3x5/v2/splinky_3", "t4corun"], ["planck/rev6", "t4corun"], diff --git a/users/t4corun/features/keyoverride.h b/users/t4corun/features/keyoverride.h index 2a576cc3..8d56cfb9 100644 --- a/users/t4corun/features/keyoverride.h +++ b/users/t4corun/features/keyoverride.h @@ -1,2 +1,3 @@ #pragma once + #include "t4corun.h" \ No newline at end of file diff --git a/users/t4corun/features/luna.c b/users/t4corun/features/luna.c new file mode 100644 index 00000000..9650095a --- /dev/null +++ b/users/t4corun/features/luna.c @@ -0,0 +1,71 @@ +#include "luna.h" + +static uint32_t luna_anim_timer = 0; +static uint8_t luna_current_frame = 0; + +void render_luna(void) { + +#if OLED_TIMEOUT > 0 + // the animation prevents the normal timeout from occuring + if (last_input_activity_elapsed() > OLED_TIMEOUT && last_led_activity_elapsed() > OLED_TIMEOUT) { + oled_off(); + return; + } else { + oled_on(); + } +#endif //OLED_TIMEOUT + + if (timer_elapsed32(luna_anim_timer) > OLED_LUNA_ANIM_FRAME_DURATION) { + luna_anim_timer = timer_read32(); + animate_luna(OLED_LUNA_X, OLED_LUNA_Y); + } + +} + +void animate_luna(int LUNA_X, int LUNA_Y) { + + uint8_t current_mod = get_mods(); + uint8_t current_osm = get_oneshot_mods(); + + // Make Luna Jump when spacebar is pressed + // Only works when Luna is rendered on Master Slide + if (isLunaJumping() || !isJumpShown()) { + /* clear */ + oled_set_cursor(LUNA_X, LUNA_Y + 2); + oled_write(" ", false); + oled_set_cursor(LUNA_X, LUNA_Y - 1); + + setLunaJumped(); + } else { + /* clear */ + oled_set_cursor(LUNA_X, LUNA_Y - 1); + oled_write(" ", false); + oled_set_cursor(LUNA_X, LUNA_Y); + } + + luna_current_frame = (luna_current_frame + 1) % 2; + + // Animate based on status + if (host_keyboard_led_state().caps_lock || is_caps_word_on()) { + + oled_write_raw_P(bark[luna_current_frame], OLED_LUNA_ANIM_SIZE); + + } else if ((current_mod | current_osm) & MOD_MASK_CTRL) { + + oled_write_raw_P(sneak[luna_current_frame], OLED_LUNA_ANIM_SIZE); + + } else if (get_current_wpm() <= OLED_LUNA_MIN_WALK_SPEED) { + + oled_write_raw_P(sit[luna_current_frame], OLED_LUNA_ANIM_SIZE); + + } else if (get_current_wpm() <= OLED_LUNA_MIN_RUN_SPEED) { + + oled_write_raw_P(walk[luna_current_frame], OLED_LUNA_ANIM_SIZE); + + } else { + + oled_write_raw_P(run[luna_current_frame], OLED_LUNA_ANIM_SIZE); + + } + +} \ No newline at end of file diff --git a/users/t4corun/features/oled.h b/users/t4corun/features/luna.h similarity index 63% rename from users/t4corun/features/oled.h rename to users/t4corun/features/luna.h index 3ca91925..f55bfd6f 100644 --- a/users/t4corun/features/oled.h +++ b/users/t4corun/features/luna.h @@ -2,123 +2,9 @@ #include "t4corun.h" -#define OLED_RENDER_KEYLOCK_NAME "Lock" -#define OLED_RENDER_MODS_NAME "Mods" -#define OLED_RENDER_FEATURE_NAME "Feat" -#define OLED_RENDER_WPM_NAME "Wpm" - -#define OLED_RENDER_LAYOUT_QWERTY "QWRTY" -#define OLED_RENDER_LAYOUT_COLEMAK_DH "CLMAK" -#define OLED_RENDER_LAYOUT_GAME "GAME" - -#define OLED_RENDER_LAYER_BASE " Def" -#define OLED_RENDER_LAYER_NAVIGATION " Nav" -#define OLED_RENDER_LAYER_NUMBER " Num" -#define OLED_RENDER_LAYER_SYMBOL " Sym" -#define OLED_RENDER_LAYER_CONFIG " Cfg" - - // LUNA PET Variables -#if defined(WPM_ENABLE) -# define OLED_LUNA_X 0 -# define OLED_LUNA_Y 13 -# define OLED_LUNA_MIN_WALK_SPEED 10 -# define OLED_LUNA_MIN_RUN_SPEED 40 -# define OLED_LUNA_ANIM_FRAME_DURATION 200 // how long each frame lasts in ms -# define OLED_LUNA_ANIM_SIZE 96 // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024 - -void render_luna(void); -void animate_luna(int LUNA_X, int LUNA_Y); -#endif //WPM_ENABLE - - - -void render_default_layer_state(void); -void render_layer_state(void); -void render_keylock_status(void); -void render_mod_status(void); -void render_feature_status(void); -bool oled_task_user(void); -oled_rotation_t oled_init_user(oled_rotation_t rotation); - - -static const char PROGMEM scroll_off[] = {0x8D, 0}; -static const char PROGMEM scroll_on[] = {0x8E, 0}; - -static const char PROGMEM num_off[] = {0xAD, 0}; -static const char PROGMEM num_on[] = {0xAE, 0}; - -static const char PROGMEM caps_off[] = {0xCD, 0}; -static const char PROGMEM caps_on[] = {0xCE, 0}; - -static const char PROGMEM shift_off[] = {0x85, 0x86, 0}; -static const char PROGMEM shift_on[] = {0x87, 0x88, 0}; - -static const char PROGMEM ctrl_off[] = {0xA9, 0xAA, 0}; -static const char PROGMEM ctrl_on[] = {0xAB, 0xAC, 0}; - -static const char PROGMEM alt_off[] = {0xA5, 0xA6, 0}; -static const char PROGMEM alt_on[] = {0xA7, 0xA8, 0}; - -static const char PROGMEM gui_off[] = {0x89, 0x8A, 0}; -static const char PROGMEM gui_on[] = {0x8B, 0x8C, 0}; - -static const char PROGMEM rgb_off[] = {0xC5, 0xC6, 0}; -static const char PROGMEM rgb_on[] = {0xC7, 0xC8, 0}; - -static const char PROGMEM dragscr_off[] = {0xC9, 0xCA, 0}; -static const char PROGMEM dragscr_on[] = {0xCB, 0xCC, 0}; - -static const char PROGMEM sound_off[] = {0x8F, 0x90, 0}; -static const char PROGMEM sound_on[] = {0xAF, 0xB0, 0}; - -static const char PROGMEM haptic_off[] = {0x91, 0x92, 0}; -static const char PROGMEM haptic_on[] = {0xB1, 0xB2, 0}; - -static const char PROGMEM lyr_cfg[] = { - 0xE1, 0xD1, 0xD2, 0xD3, 0xE1, - 0xE1, 0xBA, 0xBB, 0xBC, 0xE1, - 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, - 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 -}; - -static const char PROGMEM lyr_sym[] = { - 0xE1, 0x97, 0x98, 0x99, 0xE1, - 0xE1, 0xDA, 0xDB, 0xDC, 0xE1, - 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, - 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 -}; - -static const char PROGMEM lyr_num[] = { - 0xE1, 0x97, 0x98, 0x99, 0xE1, - 0xE1, 0x9A, 0x9B, 0x9C, 0xE1, - 0xE1, 0xBA, 0xBB, 0xBC, 0xE1, - 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 -}; - -static const char PROGMEM lyr_nav[] = { - 0xE1, 0x97, 0x98, 0x99, 0xE1, - 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, - 0xE1, 0xDA, 0xDB, 0xDC, 0xE1, - 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 -}; - -static const char PROGMEM lyr_def[] = { - 0xE1, 0x97, 0x98, 0x99, 0xE1, - 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, - 0xE1, 0x9A, 0x9B, 0x9C, 0xE1, - 0xE1, 0xD4, 0xD5, 0xD6, 0xE1, 0x00 -}; - -static const char PROGMEM qmk_logo_small[] = { - 0xE1, 0x9D, 0x9E, 0x9F, 0xE1, - 0xE1, 0xBD, 0xBE, 0xBF, 0xE1, - 0xE1, 0xDD, 0xDE, 0xDF, 0xE1, 0x00 -}; - - - -#if defined(WPM_ENABLE) +void render_luna(void); +void animate_luna(int LUNA_X, int LUNA_Y); // Luna Sit static const char PROGMEM sit[2][OLED_LUNA_ANIM_SIZE] = { @@ -164,5 +50,3 @@ static const char PROGMEM sneak[2][OLED_LUNA_ANIM_SIZE] = { /* 'sneak2', 32x22px */ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04, 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,} }; - -#endif //WPM_ENABLE \ No newline at end of file diff --git a/users/t4corun/features/oled.c b/users/t4corun/features/oled32.c similarity index 70% rename from users/t4corun/features/oled.c rename to users/t4corun/features/oled32.c index 2b12d253..1aaba4fc 100644 --- a/users/t4corun/features/oled.c +++ b/users/t4corun/features/oled32.c @@ -1,84 +1,8 @@ -#include "oled.h" - -/* LUNA PET START */ +#include "oled32.h" #if defined(WPM_ENABLE) - -static uint32_t luna_anim_timer = 0; -static uint8_t luna_current_frame = 0; - -void render_luna(void) { - -#if OLED_TIMEOUT > 0 - // the animation prevents the normal timeout from occuring - if (last_input_activity_elapsed() > OLED_TIMEOUT && last_led_activity_elapsed() > OLED_TIMEOUT) { - oled_off(); - return; - } else { - oled_on(); - } -#endif //OLED_TIMEOUT - - if (timer_elapsed32(luna_anim_timer) > OLED_LUNA_ANIM_FRAME_DURATION) { - luna_anim_timer = timer_read32(); - animate_luna(OLED_LUNA_X, OLED_LUNA_Y); - } - -} - -void animate_luna(int LUNA_X, int LUNA_Y) { - - uint8_t current_mod = get_mods(); - uint8_t current_osm = get_oneshot_mods(); - - // Make Luna Jump when spacebar is pressed - // Only works when Luna is rendered on Master Slide - if (isLunaJumping() || !isJumpShown()) { - /* clear */ - oled_set_cursor(LUNA_X, LUNA_Y + 2); - oled_write(" ", false); - oled_set_cursor(LUNA_X, LUNA_Y - 1); - - setLunaJumped(); - } else { - /* clear */ - oled_set_cursor(LUNA_X, LUNA_Y - 1); - oled_write(" ", false); - oled_set_cursor(LUNA_X, LUNA_Y); - } - - luna_current_frame = (luna_current_frame + 1) % 2; - - // Animate based on status - if (host_keyboard_led_state().caps_lock || is_caps_word_on()) { - - oled_write_raw_P(bark[luna_current_frame], OLED_LUNA_ANIM_SIZE); - - } else if ((current_mod | current_osm) & MOD_MASK_CTRL) { - - oled_write_raw_P(sneak[luna_current_frame], OLED_LUNA_ANIM_SIZE); - - } else if (get_current_wpm() <= OLED_LUNA_MIN_WALK_SPEED) { - - oled_write_raw_P(sit[luna_current_frame], OLED_LUNA_ANIM_SIZE); - - } else if (get_current_wpm() <= OLED_LUNA_MIN_RUN_SPEED) { - - oled_write_raw_P(walk[luna_current_frame], OLED_LUNA_ANIM_SIZE); - - } else { - - oled_write_raw_P(run[luna_current_frame], OLED_LUNA_ANIM_SIZE); - - } - -} - -#endif //WPM_ENABLE - -/* KEYBOARD PET END */ - - + #include "luna.c" +#endif // Prints the current base layer @@ -246,5 +170,10 @@ bool oled_task_user(void) { oled_rotation_t oled_init_user(oled_rotation_t rotation) { + + //OLED_ROTATION_270 for Rollow/Corne/Swoop + //OLED_ROTATION_0 for KLOR + return OLED_ROTATION_270; + } diff --git a/users/t4corun/features/oled32.h b/users/t4corun/features/oled32.h new file mode 100644 index 00000000..6a3975a8 --- /dev/null +++ b/users/t4corun/features/oled32.h @@ -0,0 +1,111 @@ +#pragma once + +#include "t4corun.h" + +#define OLED_RENDER_KEYLOCK_NAME "Lock" +#define OLED_RENDER_MODS_NAME "Mods" +#define OLED_RENDER_FEATURE_NAME "Feat" +#define OLED_RENDER_WPM_NAME "Wpm" + +#define OLED_RENDER_LAYOUT_QWERTY "QWRTY" +#define OLED_RENDER_LAYOUT_COLEMAK_DH "CLMAK" +#define OLED_RENDER_LAYOUT_GAME "GAME" + +#define OLED_RENDER_LAYER_BASE " Def" +#define OLED_RENDER_LAYER_NAVIGATION " Nav" +#define OLED_RENDER_LAYER_NUMBER " Num" +#define OLED_RENDER_LAYER_SYMBOL " Sym" +#define OLED_RENDER_LAYER_CONFIG " Cfg" + +// LUNA PET Variables +#if defined(WPM_ENABLE) +# define OLED_LUNA_X 0 +# define OLED_LUNA_Y 13 +# define OLED_LUNA_MIN_WALK_SPEED 10 +# define OLED_LUNA_MIN_RUN_SPEED 40 +# define OLED_LUNA_ANIM_FRAME_DURATION 200 // how long each frame lasts in ms +# define OLED_LUNA_ANIM_SIZE 96 // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024 +#endif //WPM_ENABLE + + + +void render_default_layer_state(void); +void render_layer_state(void); +void render_keylock_status(void); +void render_mod_status(void); +void render_feature_status(void); + + +static const char PROGMEM scroll_off[] = {0x8D, 0}; +static const char PROGMEM scroll_on[] = {0x8E, 0}; + +static const char PROGMEM num_off[] = {0xAD, 0}; +static const char PROGMEM num_on[] = {0xAE, 0}; + +static const char PROGMEM caps_off[] = {0xCD, 0}; +static const char PROGMEM caps_on[] = {0xCE, 0}; + +static const char PROGMEM shift_off[] = {0x85, 0x86, 0}; +static const char PROGMEM shift_on[] = {0x87, 0x88, 0}; + +static const char PROGMEM ctrl_off[] = {0xA9, 0xAA, 0}; +static const char PROGMEM ctrl_on[] = {0xAB, 0xAC, 0}; + +static const char PROGMEM alt_off[] = {0xA5, 0xA6, 0}; +static const char PROGMEM alt_on[] = {0xA7, 0xA8, 0}; + +static const char PROGMEM gui_off[] = {0x89, 0x8A, 0}; +static const char PROGMEM gui_on[] = {0x8B, 0x8C, 0}; + +static const char PROGMEM rgb_off[] = {0xC5, 0xC6, 0}; +static const char PROGMEM rgb_on[] = {0xC7, 0xC8, 0}; + +static const char PROGMEM dragscr_off[] = {0xC9, 0xCA, 0}; +static const char PROGMEM dragscr_on[] = {0xCB, 0xCC, 0}; + +static const char PROGMEM sound_off[] = {0x8F, 0x90, 0}; +static const char PROGMEM sound_on[] = {0xAF, 0xB0, 0}; + +static const char PROGMEM haptic_off[] = {0x91, 0x92, 0}; +static const char PROGMEM haptic_on[] = {0xB1, 0xB2, 0}; + +static const char PROGMEM lyr_cfg[] = { + 0xE1, 0xD1, 0xD2, 0xD3, 0xE1, + 0xE1, 0xBA, 0xBB, 0xBC, 0xE1, + 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, + 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 +}; + +static const char PROGMEM lyr_sym[] = { + 0xE1, 0x97, 0x98, 0x99, 0xE1, + 0xE1, 0xDA, 0xDB, 0xDC, 0xE1, + 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, + 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 +}; + +static const char PROGMEM lyr_num[] = { + 0xE1, 0x97, 0x98, 0x99, 0xE1, + 0xE1, 0x9A, 0x9B, 0x9C, 0xE1, + 0xE1, 0xBA, 0xBB, 0xBC, 0xE1, + 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 +}; + +static const char PROGMEM lyr_nav[] = { + 0xE1, 0x97, 0x98, 0x99, 0xE1, + 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, + 0xE1, 0xDA, 0xDB, 0xDC, 0xE1, + 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 +}; + +static const char PROGMEM lyr_def[] = { + 0xE1, 0x97, 0x98, 0x99, 0xE1, + 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, + 0xE1, 0x9A, 0x9B, 0x9C, 0xE1, + 0xE1, 0xD4, 0xD5, 0xD6, 0xE1, 0x00 +}; + +static const char PROGMEM qmk_logo_small[] = { + 0xE1, 0x9D, 0x9E, 0x9F, 0xE1, + 0xE1, 0xBD, 0xBE, 0xBF, 0xE1, + 0xE1, 0xDD, 0xDE, 0xDF, 0xE1, 0x00 +}; \ No newline at end of file diff --git a/users/t4corun/features/oled64.c b/users/t4corun/features/oled64.c new file mode 100644 index 00000000..4c71e325 --- /dev/null +++ b/users/t4corun/features/oled64.c @@ -0,0 +1,44 @@ +#include "oled64.h" + +#if defined(WPM_ENABLE) + #include "luna.c" +#endif + + +// Coordinate the OLED rendering +bool oled_task_user(void) { + + if (is_keyboard_master()) { + /* + oled_write_P(PSTR("123456789012345678901"), true); + oled_write_ln_P(PSTR("2"), false); + oled_write_ln_P(PSTR("3"), false); + oled_write_ln_P(PSTR("4"), false); + oled_write_ln_P(PSTR("5"), false); + oled_write_ln_P(PSTR("6"), false); + oled_write_ln_P(PSTR("7"), false); + oled_write_ln_P(PSTR("8"), false); + //oled_write_ln_P(PSTR("9"), false); +*/ + +#if defined(WPM_ENABLE) + render_luna(); +#endif + + } else { + oled_write_raw_P(klor_face, sizeof(klor_face)); + } + + return false; + +} + + +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + + //OLED_ROTATION_270 for Rollow/Corne/Swoop + //OLED_ROTATION_180 for KLOR + + return OLED_ROTATION_270; + +} diff --git a/users/t4corun/features/oled64.h b/users/t4corun/features/oled64.h new file mode 100644 index 00000000..28ca0534 --- /dev/null +++ b/users/t4corun/features/oled64.h @@ -0,0 +1,149 @@ +#pragma once + +#include "t4corun.h" + +#define OLED_RENDER_KEYLOCK_NAME "Lock" +#define OLED_RENDER_MODS_NAME "Mods" +#define OLED_RENDER_FEATURE_NAME "Feat" +#define OLED_RENDER_WPM_NAME "Wpm" + +#define OLED_RENDER_LAYOUT_QWERTY "QWRTY" +#define OLED_RENDER_LAYOUT_COLEMAK_DH "CLMAK" +#define OLED_RENDER_LAYOUT_GAME "GAME" + +#define OLED_RENDER_LAYER_BASE " Def" +#define OLED_RENDER_LAYER_NAVIGATION " Nav" +#define OLED_RENDER_LAYER_NUMBER " Num" +#define OLED_RENDER_LAYER_SYMBOL " Sym" +#define OLED_RENDER_LAYER_CONFIG " Cfg" + +// LUNA PET Variables +#if defined(WPM_ENABLE) +# define OLED_LUNA_X 0 +# define OLED_LUNA_Y 5 +# define OLED_LUNA_MIN_WALK_SPEED 10 +# define OLED_LUNA_MIN_RUN_SPEED 40 +# define OLED_LUNA_ANIM_FRAME_DURATION 200 // how long each frame lasts in ms +# define OLED_LUNA_ANIM_SIZE 96 // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024 +#endif //WPM_ENABLE + +void render_default_layer_state(void); +void render_layer_state(void); +void render_keylock_status(void); +void render_mod_status(void); +void render_feature_status(void); + + +static const char PROGMEM scroll_off[] = {0x8D, 0}; +static const char PROGMEM scroll_on[] = {0x8E, 0}; + +static const char PROGMEM num_off[] = {0xAD, 0}; +static const char PROGMEM num_on[] = {0xAE, 0}; + +static const char PROGMEM caps_off[] = {0xCD, 0}; +static const char PROGMEM caps_on[] = {0xCE, 0}; + +static const char PROGMEM shift_off[] = {0x85, 0x86, 0}; +static const char PROGMEM shift_on[] = {0x87, 0x88, 0}; + +static const char PROGMEM ctrl_off[] = {0xA9, 0xAA, 0}; +static const char PROGMEM ctrl_on[] = {0xAB, 0xAC, 0}; + +static const char PROGMEM alt_off[] = {0xA5, 0xA6, 0}; +static const char PROGMEM alt_on[] = {0xA7, 0xA8, 0}; + +static const char PROGMEM gui_off[] = {0x89, 0x8A, 0}; +static const char PROGMEM gui_on[] = {0x8B, 0x8C, 0}; + +static const char PROGMEM rgb_off[] = {0xC5, 0xC6, 0}; +static const char PROGMEM rgb_on[] = {0xC7, 0xC8, 0}; + +static const char PROGMEM dragscr_off[] = {0xC9, 0xCA, 0}; +static const char PROGMEM dragscr_on[] = {0xCB, 0xCC, 0}; + +static const char PROGMEM sound_off[] = {0x8F, 0x90, 0}; +static const char PROGMEM sound_on[] = {0xAF, 0xB0, 0}; + +static const char PROGMEM haptic_off[] = {0x91, 0x92, 0}; +static const char PROGMEM haptic_on[] = {0xB1, 0xB2, 0}; + +static const char PROGMEM lyr_cfg[] = { + 0xE1, 0xD1, 0xD2, 0xD3, 0xE1, + 0xE1, 0xBA, 0xBB, 0xBC, 0xE1, + 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, + 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 +}; + +static const char PROGMEM lyr_sym[] = { + 0xE1, 0x97, 0x98, 0x99, 0xE1, + 0xE1, 0xDA, 0xDB, 0xDC, 0xE1, + 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, + 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 +}; + +static const char PROGMEM lyr_num[] = { + 0xE1, 0x97, 0x98, 0x99, 0xE1, + 0xE1, 0x9A, 0x9B, 0x9C, 0xE1, + 0xE1, 0xBA, 0xBB, 0xBC, 0xE1, + 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 +}; + +static const char PROGMEM lyr_nav[] = { + 0xE1, 0x97, 0x98, 0x99, 0xE1, + 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, + 0xE1, 0xDA, 0xDB, 0xDC, 0xE1, + 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 +}; + +static const char PROGMEM lyr_def[] = { + 0xE1, 0x97, 0x98, 0x99, 0xE1, + 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, + 0xE1, 0x9A, 0x9B, 0x9C, 0xE1, + 0xE1, 0xD4, 0xD5, 0xD6, 0xE1, 0x00 +}; + +static const char PROGMEM qmk_logo_small[] = { + 0xE1, 0x9D, 0x9E, 0x9F, 0xE1, + 0xE1, 0xBD, 0xBE, 0xBF, 0xE1, + 0xE1, 0xDD, 0xDE, 0xDF, 0xE1, 0x00 +}; + + +#if defined(KEYBOARD_klor) + +static const char PROGMEM klor_face[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, + 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +#endif // KEYBOARD_klor \ No newline at end of file diff --git a/users/t4corun/rules.mk b/users/t4corun/rules.mk index 09ebc8a7..98bdc39f 100644 --- a/users/t4corun/rules.mk +++ b/users/t4corun/rules.mk @@ -53,7 +53,11 @@ INTROSPECTION_KEYMAP_C += features/combo.c # include optional code for enabled features for each keyboard ifeq ($(strip $(OLED_ENABLE)), yes) - SRC += features/oled.c + ifeq ($(filter $(KEYBOARD), klor klor/2040),) + SRC += features/oled32.c + else + SRC += features/oled64.c + endif endif ifeq ($(strip $(AUDIO_ENABLE)), yes) From fff0ef034bdc0f9fcda9d463d2d844c860261384 Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 5 Jun 2024 22:34:49 -0500 Subject: [PATCH 34/34] Revising the OLED functionality - optimized by using the set cursor to position text vs using print statements - recombined the OLED code into one file - redid all the rendering methods so they can be reused between a vertical and horizontal display - Removed keyboard specific code in my rules.mk --- users/t4corun/features/{oled32.c => oled.c} | 171 +++++++++++++------- users/t4corun/features/{oled64.h => oled.h} | 45 ++++-- users/t4corun/features/oled32.h | 111 ------------- users/t4corun/features/oled64.c | 44 ----- users/t4corun/rules.mk | 6 +- 5 files changed, 143 insertions(+), 234 deletions(-) rename users/t4corun/features/{oled32.c => oled.c} (53%) rename users/t4corun/features/{oled64.h => oled.h} (86%) delete mode 100644 users/t4corun/features/oled32.h delete mode 100644 users/t4corun/features/oled64.c diff --git a/users/t4corun/features/oled32.c b/users/t4corun/features/oled.c similarity index 53% rename from users/t4corun/features/oled32.c rename to users/t4corun/features/oled.c index 1aaba4fc..292e54de 100644 --- a/users/t4corun/features/oled32.c +++ b/users/t4corun/features/oled.c @@ -1,52 +1,46 @@ -#include "oled32.h" +#include "oled.h" #if defined(WPM_ENABLE) #include "luna.c" #endif -// Prints the current base layer -// (e.g. Qwerty, Colemak DH, etc) -void render_default_layer_state(void) { +// Shows the currently enabled Layer name +void render_layer_state(void) { - switch (get_highest_layer(default_layer_state)) { - case _QWERTY: - oled_write_P(PSTR(OLED_RENDER_LAYOUT_QWERTY), false); + switch (get_highest_layer(layer_state)) { + case _NAVIGATION: + oled_write_P(PSTR(OLED_RENDER_LAYER_2), false); break; - case _COLEMAK_DH: - oled_write_P(PSTR(OLED_RENDER_LAYOUT_COLEMAK_DH), false); + case _NUMBER: + oled_write_P(PSTR(OLED_RENDER_LAYER_3), false); break; - case _GAME: - oled_write_ln_P(PSTR(OLED_RENDER_LAYOUT_GAME), false); + case _SYMBOL: + oled_write_P(PSTR(OLED_RENDER_LAYER_4), false); + break; + case _CONFIG: + oled_write_P(PSTR(OLED_RENDER_LAYER_5), false); + break; + default: + switch (get_highest_layer(default_layer_state)) { + case _DEFAULT_LAYER_2: + oled_write_P(PSTR(OLED_RENDER_DEFAULT_LAYER2), false); + break; + case _DEFAULT_LAYER_3: + oled_write_P(PSTR(OLED_RENDER_DEFAULT_LAYER3), false); + break; + default: + oled_write_P(PSTR(OLED_RENDER_DEFAULT_LAYER1), false); + break; + } break; } } -// Shows the currently enabled Layer name -// Also shows where on the layer stack it is -void render_layer_state(void) { +// Graphic to show which layer on the stack is enabled +void render_layer_state_graphic(void) { - switch (get_highest_layer(layer_state)) { - case _NAVIGATION: - oled_write_ln_P(PSTR(OLED_RENDER_LAYER_NAVIGATION), false); - break; - case _NUMBER: - oled_write_ln_P(PSTR(OLED_RENDER_LAYER_NUMBER), false); - break; - case _SYMBOL: - oled_write_ln_P(PSTR(OLED_RENDER_LAYER_SYMBOL), false); - break; - case _CONFIG: - oled_write_ln_P(PSTR(OLED_RENDER_LAYER_CONFIG), false); - break; - default: - oled_write_ln_P(PSTR(OLED_RENDER_LAYER_BASE), false); - break; - } - - oled_write_ln_P(PSTR(" "),false); - switch (get_highest_layer(layer_state)) { case _NAVIGATION: oled_write_P(lyr_nav, false ); @@ -68,42 +62,51 @@ void render_layer_state(void) { } // Shows the Host LED State (Num lock, caps lock , scroll lock) -void render_keylock_status(void) { +void render_keylock_status(bool vertical) { - oled_write_ln_P(PSTR(OLED_RENDER_KEYLOCK_NAME), false); - oled_write_P(PSTR(" "), false); + if (vertical) { + oled_write_ln_P(PSTR(OLED_RENDER_KEYLOCK_NAME), false); + oled_write_P(PSTR(" "), 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 ); + host_keyboard_led_state().scroll_lock ? oled_write_P(scroll_on, false ) : oled_write_P(scroll_off, false ); } - // Indicates which modifies are enabled -void render_mod_status(void) { +void render_mod_status(bool vertical) { uint8_t current_mod = get_mods(); uint8_t current_osm = get_oneshot_mods(); - oled_write_ln_P(PSTR(OLED_RENDER_MODS_NAME), false); - oled_write_P(PSTR(" "), false); + if (vertical) { + oled_write_ln_P(PSTR(OLED_RENDER_MODS_NAME), false); + oled_write_P(PSTR(" "), 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 (vertical) { + oled_write_P(PSTR(" "), 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); +// Indicates which features are turned on or off +void render_feature_status(bool vertical) { + + if (vertical) { + oled_write_ln_P(PSTR(OLED_RENDER_FEATURE_NAME), false); + oled_write_P(PSTR(" "), false); + } + #if defined(RGB_MATRIX_ENABLE) rgb_matrix_is_enabled() ? oled_write_P(rgb_on, false) : oled_write_P(rgb_off, false); @@ -114,7 +117,9 @@ oled_write_P(PSTR(" "), 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); + if (vertical) { + oled_write_P(PSTR(" "), false); + } #if defined(AUDIO_ENABLE) is_audio_on() ? oled_write_P(sound_on, false) : oled_write_P(sound_off, false); @@ -134,36 +139,80 @@ oled_write_P(PSTR(" "), false); // Coordinate the OLED rendering bool oled_task_user(void) { +#if defined(OLED_DISPLAY_128X64) + + if (is_keyboard_master()) { + + oled_set_cursor(0,0); + render_layer_state(); + + oled_set_cursor(0,1); + oled_write_P(sep_v, false); + + oled_set_cursor(0,4); + render_mod_status(false); + + oled_set_cursor(0,5); + oled_write_P(sep_v, false); + + oled_set_cursor(0,7); + render_keylock_status(false); + + oled_set_cursor(13,7); + render_feature_status(false); + + oled_set_cursor(15,3); + oled_write_P(klor_small_face_1, false); + + oled_set_cursor(15,4); + oled_write_P(klor_small_face_2, false); + } else { + + oled_set_cursor(0,0); + oled_write_raw_P(klor_face, sizeof(klor_face)); + + } + +#else //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_keylock_status(); + oled_set_cursor(0,0); + render_keylock_status(true); - oled_write_ln_P(PSTR(" "), false); - render_feature_status(); + oled_set_cursor(0,3); + render_feature_status(true); #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_set_cursor(0,7); + oled_write_P(PSTR(OLED_RENDER_WPM_NAME), false); + + oled_set_cursor(1,8); oled_write_P(get_u8_str(get_current_wpm(), ' '), false); render_luna(); + #endif //WPM_ENABLE } else { - render_default_layer_state(); + oled_set_cursor(0,0); render_layer_state(); - oled_write_ln_P(PSTR(" "), false); - render_mod_status(); + oled_set_cursor(0,2); + render_layer_state_graphic(); - oled_write_ln_P(PSTR(" "), false); + oled_set_cursor(0,7); + render_mod_status(true); + + oled_set_cursor(0,13); oled_write_P(qmk_logo_small, false); } +#endif + return false; } @@ -172,8 +221,12 @@ bool oled_task_user(void) { oled_rotation_t oled_init_user(oled_rotation_t rotation) { //OLED_ROTATION_270 for Rollow/Corne/Swoop - //OLED_ROTATION_0 for KLOR + //OLED_ROTATION_180 for KLOR +#if defined(OLED_DISPLAY_128X64) + return OLED_ROTATION_180; +#else return OLED_ROTATION_270; +#endif } diff --git a/users/t4corun/features/oled64.h b/users/t4corun/features/oled.h similarity index 86% rename from users/t4corun/features/oled64.h rename to users/t4corun/features/oled.h index 28ca0534..e86eb439 100644 --- a/users/t4corun/features/oled64.h +++ b/users/t4corun/features/oled.h @@ -7,31 +7,42 @@ #define OLED_RENDER_FEATURE_NAME "Feat" #define OLED_RENDER_WPM_NAME "Wpm" -#define OLED_RENDER_LAYOUT_QWERTY "QWRTY" -#define OLED_RENDER_LAYOUT_COLEMAK_DH "CLMAK" -#define OLED_RENDER_LAYOUT_GAME "GAME" +#if defined(OLED_DISPLAY_128X64) +# define OLED_RENDER_DEFAULT_LAYER1 "QWERTY " +# define OLED_RENDER_DEFAULT_LAYER2 "COLEMAK DH" +# define OLED_RENDER_DEFAULT_LAYER3 "GAME " -#define OLED_RENDER_LAYER_BASE " Def" -#define OLED_RENDER_LAYER_NAVIGATION " Nav" -#define OLED_RENDER_LAYER_NUMBER " Num" -#define OLED_RENDER_LAYER_SYMBOL " Sym" -#define OLED_RENDER_LAYER_CONFIG " Cfg" +# define OLED_RENDER_LAYER_2 "Navigation" +# define OLED_RENDER_LAYER_3 "Number " +# define OLED_RENDER_LAYER_4 "Symbol " +# define OLED_RENDER_LAYER_5 "Config " +#else +//128x32 are ? x 5 char wide +# define OLED_RENDER_DEFAULT_LAYER1 "Qwrty" +# define OLED_RENDER_DEFAULT_LAYER2 "Clmak" +# define OLED_RENDER_DEFAULT_LAYER3 "Game " + +# define OLED_RENDER_LAYER_2 " Nav " +# define OLED_RENDER_LAYER_3 " Num " +# define OLED_RENDER_LAYER_4 " Sym " +# define OLED_RENDER_LAYER_5 " Cfg " +#endif // LUNA PET Variables #if defined(WPM_ENABLE) # define OLED_LUNA_X 0 -# define OLED_LUNA_Y 5 +# define OLED_LUNA_Y 13 # define OLED_LUNA_MIN_WALK_SPEED 10 # define OLED_LUNA_MIN_RUN_SPEED 40 # define OLED_LUNA_ANIM_FRAME_DURATION 200 // how long each frame lasts in ms # define OLED_LUNA_ANIM_SIZE 96 // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024 #endif //WPM_ENABLE -void render_default_layer_state(void); void render_layer_state(void); -void render_keylock_status(void); -void render_mod_status(void); -void render_feature_status(void); +void render_layer_state_graphic(void); +void render_keylock_status(bool vertical); +void render_mod_status(bool vertical); +void render_feature_status(bool vertical); static const char PROGMEM scroll_off[] = {0x8D, 0}; @@ -108,8 +119,12 @@ static const char PROGMEM qmk_logo_small[] = { 0xE1, 0xDD, 0xDE, 0xDF, 0xE1, 0x00 }; +#if defined(OLED_DISPLAY_128X64) -#if defined(KEYBOARD_klor) +static const char PROGMEM sep_v[] = {0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0}; + +static const char PROGMEM klor_small_face_1[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0xE1, 0}; +static const char PROGMEM klor_small_face_2[] = {0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xE1, 0}; static const char PROGMEM klor_face[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -146,4 +161,4 @@ static const char PROGMEM klor_face[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; -#endif // KEYBOARD_klor \ No newline at end of file +#endif // OLED_DISPLAY_128X64 \ No newline at end of file diff --git a/users/t4corun/features/oled32.h b/users/t4corun/features/oled32.h deleted file mode 100644 index 6a3975a8..00000000 --- a/users/t4corun/features/oled32.h +++ /dev/null @@ -1,111 +0,0 @@ -#pragma once - -#include "t4corun.h" - -#define OLED_RENDER_KEYLOCK_NAME "Lock" -#define OLED_RENDER_MODS_NAME "Mods" -#define OLED_RENDER_FEATURE_NAME "Feat" -#define OLED_RENDER_WPM_NAME "Wpm" - -#define OLED_RENDER_LAYOUT_QWERTY "QWRTY" -#define OLED_RENDER_LAYOUT_COLEMAK_DH "CLMAK" -#define OLED_RENDER_LAYOUT_GAME "GAME" - -#define OLED_RENDER_LAYER_BASE " Def" -#define OLED_RENDER_LAYER_NAVIGATION " Nav" -#define OLED_RENDER_LAYER_NUMBER " Num" -#define OLED_RENDER_LAYER_SYMBOL " Sym" -#define OLED_RENDER_LAYER_CONFIG " Cfg" - -// LUNA PET Variables -#if defined(WPM_ENABLE) -# define OLED_LUNA_X 0 -# define OLED_LUNA_Y 13 -# define OLED_LUNA_MIN_WALK_SPEED 10 -# define OLED_LUNA_MIN_RUN_SPEED 40 -# define OLED_LUNA_ANIM_FRAME_DURATION 200 // how long each frame lasts in ms -# define OLED_LUNA_ANIM_SIZE 96 // number of bytes in array. If you change sprites, minimize for adequate firmware size. max is 1024 -#endif //WPM_ENABLE - - - -void render_default_layer_state(void); -void render_layer_state(void); -void render_keylock_status(void); -void render_mod_status(void); -void render_feature_status(void); - - -static const char PROGMEM scroll_off[] = {0x8D, 0}; -static const char PROGMEM scroll_on[] = {0x8E, 0}; - -static const char PROGMEM num_off[] = {0xAD, 0}; -static const char PROGMEM num_on[] = {0xAE, 0}; - -static const char PROGMEM caps_off[] = {0xCD, 0}; -static const char PROGMEM caps_on[] = {0xCE, 0}; - -static const char PROGMEM shift_off[] = {0x85, 0x86, 0}; -static const char PROGMEM shift_on[] = {0x87, 0x88, 0}; - -static const char PROGMEM ctrl_off[] = {0xA9, 0xAA, 0}; -static const char PROGMEM ctrl_on[] = {0xAB, 0xAC, 0}; - -static const char PROGMEM alt_off[] = {0xA5, 0xA6, 0}; -static const char PROGMEM alt_on[] = {0xA7, 0xA8, 0}; - -static const char PROGMEM gui_off[] = {0x89, 0x8A, 0}; -static const char PROGMEM gui_on[] = {0x8B, 0x8C, 0}; - -static const char PROGMEM rgb_off[] = {0xC5, 0xC6, 0}; -static const char PROGMEM rgb_on[] = {0xC7, 0xC8, 0}; - -static const char PROGMEM dragscr_off[] = {0xC9, 0xCA, 0}; -static const char PROGMEM dragscr_on[] = {0xCB, 0xCC, 0}; - -static const char PROGMEM sound_off[] = {0x8F, 0x90, 0}; -static const char PROGMEM sound_on[] = {0xAF, 0xB0, 0}; - -static const char PROGMEM haptic_off[] = {0x91, 0x92, 0}; -static const char PROGMEM haptic_on[] = {0xB1, 0xB2, 0}; - -static const char PROGMEM lyr_cfg[] = { - 0xE1, 0xD1, 0xD2, 0xD3, 0xE1, - 0xE1, 0xBA, 0xBB, 0xBC, 0xE1, - 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, - 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 -}; - -static const char PROGMEM lyr_sym[] = { - 0xE1, 0x97, 0x98, 0x99, 0xE1, - 0xE1, 0xDA, 0xDB, 0xDC, 0xE1, - 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, - 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 -}; - -static const char PROGMEM lyr_num[] = { - 0xE1, 0x97, 0x98, 0x99, 0xE1, - 0xE1, 0x9A, 0x9B, 0x9C, 0xE1, - 0xE1, 0xBA, 0xBB, 0xBC, 0xE1, - 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 -}; - -static const char PROGMEM lyr_nav[] = { - 0xE1, 0x97, 0x98, 0x99, 0xE1, - 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, - 0xE1, 0xDA, 0xDB, 0xDC, 0xE1, - 0xE1, 0xD7, 0xD8, 0xD9, 0xE1, 0x00 -}; - -static const char PROGMEM lyr_def[] = { - 0xE1, 0x97, 0x98, 0x99, 0xE1, - 0xE1, 0xB7, 0xB8, 0xB9, 0xE1, - 0xE1, 0x9A, 0x9B, 0x9C, 0xE1, - 0xE1, 0xD4, 0xD5, 0xD6, 0xE1, 0x00 -}; - -static const char PROGMEM qmk_logo_small[] = { - 0xE1, 0x9D, 0x9E, 0x9F, 0xE1, - 0xE1, 0xBD, 0xBE, 0xBF, 0xE1, - 0xE1, 0xDD, 0xDE, 0xDF, 0xE1, 0x00 -}; \ No newline at end of file diff --git a/users/t4corun/features/oled64.c b/users/t4corun/features/oled64.c deleted file mode 100644 index 4c71e325..00000000 --- a/users/t4corun/features/oled64.c +++ /dev/null @@ -1,44 +0,0 @@ -#include "oled64.h" - -#if defined(WPM_ENABLE) - #include "luna.c" -#endif - - -// Coordinate the OLED rendering -bool oled_task_user(void) { - - if (is_keyboard_master()) { - /* - oled_write_P(PSTR("123456789012345678901"), true); - oled_write_ln_P(PSTR("2"), false); - oled_write_ln_P(PSTR("3"), false); - oled_write_ln_P(PSTR("4"), false); - oled_write_ln_P(PSTR("5"), false); - oled_write_ln_P(PSTR("6"), false); - oled_write_ln_P(PSTR("7"), false); - oled_write_ln_P(PSTR("8"), false); - //oled_write_ln_P(PSTR("9"), false); -*/ - -#if defined(WPM_ENABLE) - render_luna(); -#endif - - } else { - oled_write_raw_P(klor_face, sizeof(klor_face)); - } - - return false; - -} - - -oled_rotation_t oled_init_user(oled_rotation_t rotation) { - - //OLED_ROTATION_270 for Rollow/Corne/Swoop - //OLED_ROTATION_180 for KLOR - - return OLED_ROTATION_270; - -} diff --git a/users/t4corun/rules.mk b/users/t4corun/rules.mk index 98bdc39f..09ebc8a7 100644 --- a/users/t4corun/rules.mk +++ b/users/t4corun/rules.mk @@ -53,11 +53,7 @@ INTROSPECTION_KEYMAP_C += features/combo.c # include optional code for enabled features for each keyboard ifeq ($(strip $(OLED_ENABLE)), yes) - ifeq ($(filter $(KEYBOARD), klor klor/2040),) - SRC += features/oled32.c - else - SRC += features/oled64.c - endif + SRC += features/oled.c endif ifeq ($(strip $(AUDIO_ENABLE)), yes)