~ruther/qmk_firmware

4e1c5887c5c08ebd2cf7868c8d9292aa728e7bf0 — Xelus22 4 years ago 6fd20ac
[Core] Refactor OLED to allow easy addition of other types  (#13454)

* add docs

* core changes

* update keyboards to new OLED

* updated users to new OLED

* update layouts to new OLED

* fixup docs

* drashna's suggestion

* fix up docs

* new keyboards with oled

* core split changes

* remaining keyboard files

* Fix The Helix keyboards oled options

* reflect develop

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: mtei <2170248+mtei@users.noreply.github.com>
500 files changed, 1579 insertions(+), 1387 deletions(-)

M common_features.mk
M docs/feature_oled_driver.md
R drivers/oled/{oled_driver => ssd1306_sh1106}.c
M keyboards/0xcb/1337/keymaps/conor/keymap.c
M keyboards/0xcb/1337/keymaps/default/keymap.c
M keyboards/0xcb/1337/keymaps/jakob/keymap.c
M keyboards/0xcb/1337/keymaps/via/keymap.c
M keyboards/0xcb/1337/rules.mk
M keyboards/0xcb/static/keymaps/default/keymap.c
M keyboards/0xcb/static/keymaps/via/keymap.c
M keyboards/0xcb/static/rules.mk
M keyboards/10bleoledhub/keymaps/default/keymap.c
M keyboards/10bleoledhub/keymaps/via/keymap.c
M keyboards/10bleoledhub/rules.mk
M keyboards/8pack/rules.mk
M keyboards/aeboards/ext65/keymaps/default/keymap.c
M keyboards/aeboards/ext65/keymaps/via/keymap.c
M keyboards/aeboards/ext65/keymaps/via/rules.mk
M keyboards/aeboards/ext65/rev2/rev2.c
M keyboards/aleblazer/zodiark/keymaps/default/config.h
M keyboards/aleblazer/zodiark/keymaps/default/keymap.c
M keyboards/aleblazer/zodiark/keymaps/slimoled/config.h
M keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c
M keyboards/aleblazer/zodiark/keymaps/via/config.h
M keyboards/aleblazer/zodiark/keymaps/via/oled.c
M keyboards/aleblazer/zodiark/rules.mk
M keyboards/anavi/macropad8/config.h
M keyboards/anavi/macropad8/keymaps/default/keymap.c
M keyboards/anavi/macropad8/keymaps/git/keymap.c
M keyboards/anavi/macropad8/keymaps/kicad/keymap.c
M keyboards/anavi/macropad8/keymaps/kodi/keymap.c
M keyboards/anavi/macropad8/keymaps/obs/keymap.c
M keyboards/anavi/macropad8/keymaps/zoom/keymap.c
M keyboards/anavi/macropad8/rules.mk
M keyboards/angel64/alpha/keymaps/default/keymap.c
M keyboards/angel64/rev1/keymaps/default/keymap.c
M keyboards/angel64/rev1/keymaps/kakunpc/keymap.c
M keyboards/angel64/rules.mk
M keyboards/aplyard/aplx6/rev2/keymaps/default/keymap.c
M keyboards/aplyard/aplx6/rev2/rules.mk
M keyboards/arabica37/keymaps/default/keymap.c
M keyboards/arabica37/keymaps/default/rules.mk
M keyboards/arch_36/keymaps/default/keymap.c
M keyboards/arch_36/keymaps/obosob/config.h
M keyboards/arch_36/keymaps/obosob/keymap.c
M keyboards/arch_36/rules.mk
M keyboards/basekeys/slice/keymaps/default/keymap.c
M keyboards/basekeys/slice/keymaps/default_split_left_space/keymap.c
M keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c
M keyboards/basekeys/slice/rev1_rgb/keymaps/via/keymap.c
M keyboards/basekeys/slice/rev1_rgb/rules.mk
M keyboards/boardsource/holiday/spooky/keymaps/rip_mx/keymap.c
M keyboards/boardsource/holiday/spooky/keymaps/rip_mx/rules.mk
M keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/keymap.c
M keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/rules.mk
M keyboards/boardsource/microdox/keymaps/cole/keymap.c
M keyboards/boardsource/microdox/keymaps/cole/rules.mk
M keyboards/boardsource/microdox/keymaps/via/keymap.c
M keyboards/boardsource/microdox/keymaps/via/rules.mk
M keyboards/business_card/alpha/keymaps/default/keymap.c
M keyboards/business_card/alpha/rules.mk
M keyboards/business_card/beta/keymaps/default/keymap.c
M keyboards/business_card/beta/rules.mk
M keyboards/cassette42/common/oled_helper.c
M keyboards/cassette42/common/oled_helper.h
M keyboards/cassette42/keymaps/default/keymap.c
M keyboards/cassette42/rules.mk
M keyboards/chidori/keymaps/oled_sample/keymap.c
M keyboards/chidori/keymaps/oled_sample/rules.mk
M keyboards/ckeys/washington/keymaps/default/keymap.c
M keyboards/ckeys/washington/rules.mk
M keyboards/claw44/keymaps/oled/keymap.c
M keyboards/claw44/keymaps/oled/rules.mk
M keyboards/claw44/rev1/rules.mk
M keyboards/crkbd/keymaps/armand1m/keymap.c
M keyboards/crkbd/keymaps/armand1m/rules.mk
M keyboards/crkbd/keymaps/curry/rules.mk
M keyboards/crkbd/keymaps/default/keymap.c
M keyboards/crkbd/keymaps/default/rules.mk
M keyboards/crkbd/keymaps/devdev/keymap.c
M keyboards/crkbd/keymaps/devdev/rules.mk
M keyboards/crkbd/keymaps/dsanchezseco/keymap.c
M keyboards/crkbd/keymaps/dsanchezseco/rules.mk
M keyboards/crkbd/keymaps/edvorakjp/oled.c
M keyboards/crkbd/keymaps/edvorakjp/rules.mk
M keyboards/crkbd/keymaps/gotham/keymap.c
M keyboards/crkbd/keymaps/gotham/rules.mk
M keyboards/crkbd/keymaps/kidbrazil/keymap.c
M keyboards/crkbd/keymaps/kidbrazil/rules.mk
M keyboards/crkbd/keymaps/mcrown/rules.mk
M keyboards/crkbd/keymaps/ninjonas/rules.mk
M keyboards/crkbd/keymaps/oled_sample/keymap.c
M keyboards/crkbd/keymaps/oled_sample/rules.mk
M keyboards/crkbd/keymaps/oo/keymap.c
M keyboards/crkbd/keymaps/oo/rules.mk
M keyboards/crkbd/keymaps/rjhilgefort/keymap.c
M keyboards/crkbd/keymaps/rjhilgefort/rules.mk
M keyboards/crkbd/keymaps/rpbaptist/config.h
M keyboards/crkbd/keymaps/rpbaptist/keymap.c
M keyboards/crkbd/keymaps/rpbaptist/rules.mk
M keyboards/crkbd/keymaps/snowe/rules.mk
M keyboards/crkbd/keymaps/soundmonster/keymap.c
M keyboards/crkbd/keymaps/soundmonster/rules.mk
M keyboards/crkbd/keymaps/sulrich/keymap.c
M keyboards/crkbd/keymaps/sulrich/rules.mk
M keyboards/crkbd/keymaps/vayashiko/keymap.c
M keyboards/crkbd/keymaps/via/keymap.c
M keyboards/crkbd/keymaps/via/rules.mk
M keyboards/crkbd/keymaps/xyverz/keymap.c
M keyboards/crkbd/keymaps/xyverz/rules.mk
M keyboards/dekunukem/duckypad/rules.mk
M keyboards/dmqdesign/spin/keymaps/gorbachev/keymap.c
M keyboards/dmqdesign/spin/keymaps/gorbachev/rules.mk
M keyboards/doodboard/duckboard/keymaps/default/keymap.c
M keyboards/doodboard/duckboard/rules.mk
M keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c
M keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c
M keyboards/doodboard/duckboard_r2/rules.mk
M keyboards/draculad/config.h
M keyboards/draculad/keymaps/default/keymap.c
M keyboards/draculad/keymaps/pimoroni/keymap.c
M keyboards/draculad/keymaps/pimoroni/rules.mk
M keyboards/draculad/rules.mk
M keyboards/dumbo/keymaps/default/keymap.c
M keyboards/dumbo/keymaps/default/rules.mk
M keyboards/dumbo/keymaps/trip-trap/keymap.c
M keyboards/dumbo/keymaps/trip-trap/rules.mk
M keyboards/gergo/keymaps/oled/keymap.c
M keyboards/gergo/keymaps/oled/rules.mk
M keyboards/getta25/keymaps/oled/keymap.c
M keyboards/getta25/keymaps/oled/rules.mk
M keyboards/getta25/rules.mk
M keyboards/halfcliff/halfcliff.c
M keyboards/halfcliff/rules.mk
M keyboards/handwired/amigopunk/keymaps/default/keymap.c
M keyboards/handwired/amigopunk/rules.mk
M keyboards/handwired/d48/keymaps/anderson/keymap.c
M keyboards/handwired/d48/keymaps/default/keymap.c
M keyboards/handwired/d48/rules.mk
M keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/rules.mk
M keyboards/handwired/marauder/keymaps/orvia/keymap.c
M keyboards/handwired/marauder/keymaps/orvia/rules.mk
M keyboards/handwired/myskeeb/rules.mk
M keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c
M keyboards/handwired/obuwunkunubi/spaget/rules.mk
M keyboards/handwired/onekey/keymaps/oled/rules.mk
M keyboards/handwired/owlet60/keymaps/oled_testing/keymap.c
M keyboards/handwired/owlet60/keymaps/oled_testing/rules.mk
M keyboards/handwired/owlet60/rules.mk
M keyboards/handwired/pill60/keymaps/default/keymap.c
M keyboards/handwired/pill60/rules.mk
M keyboards/handwired/riblee_f411/rules.mk
M keyboards/handwired/swiftrax/koalafications/keymaps/default/keymap.c
M keyboards/handwired/swiftrax/koalafications/keymaps/via/keymap.c
M keyboards/handwired/swiftrax/koalafications/rules.mk
M keyboards/handwired/swiftrax/the_galleon/keymaps/default/keymap.c
M keyboards/handwired/swiftrax/the_galleon/keymaps/via/keymap.c
M keyboards/handwired/swiftrax/the_galleon/rules.mk
M keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c
M keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/rules.mk
M keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c
M keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rules.mk
M keyboards/helix/pico/local_features.mk
M keyboards/helix/rev2/config.h
M keyboards/helix/rev2/keymaps/default/oled_display.c
M keyboards/helix/rev2/keymaps/edvorakjp/oled.c
M keyboards/helix/rev2/keymaps/five_rows/oled_display.c
M keyboards/helix/rev2/keymaps/five_rows/rules.mk
M keyboards/helix/rev2/keymaps/xulkal/rules.mk
M keyboards/helix/rev2/local_features.mk
M keyboards/helix/rev3_4rows/oled_display.c
M keyboards/helix/rev3_4rows/rules.mk
M keyboards/helix/rev3_5rows/keymaps/five_rows/oled_display.c
M keyboards/helix/rev3_5rows/keymaps/five_rows/rules.mk
M keyboards/helix/rev3_5rows/oled_display.c
M keyboards/helix/rev3_5rows/rules.mk
M keyboards/jagdpietr/drakon/drakon.c
M keyboards/jagdpietr/drakon/rules.mk
M keyboards/keybage/radpad/config.h
M keyboards/keybage/radpad/keymaps/default/keymap.c
M keyboards/keybage/radpad/rules.mk
M keyboards/keycapsss/kimiko/keymaps/default/keymap.c
M keyboards/keycapsss/kimiko/keymaps/default/rules.mk
M keyboards/keycapsss/plaid_pad/keymaps/default/keymap.c
M keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c
M keyboards/keycapsss/plaid_pad/keymaps/oled/rules.mk
M keyboards/keycapsss/plaid_pad/keymaps/via/keymap.c
M keyboards/keycapsss/plaid_pad/rev3/rules.mk
M keyboards/kikoslab/kl90/keymaps/default/keymap.c
M keyboards/kikoslab/kl90/keymaps/via/keymap.c
M keyboards/kikoslab/kl90/rules.mk
M keyboards/kingly_keys/romac/keymaps/boss566y/keymap.c
M keyboards/kingly_keys/romac/keymaps/boss566y/rules.mk
M keyboards/kingly_keys/romac_plus/keymaps/default/keymap.c
M keyboards/kingly_keys/romac_plus/rules.mk
M keyboards/kiwikey/wanderland/keymaps/stanrc85/keymap.c
M keyboards/kiwikey/wanderland/keymaps/stanrc85/rules.mk
M keyboards/knobgoblin/knobgoblin.c
M keyboards/knobgoblin/rules.mk
M keyboards/latinpad/keymaps/default/keymap.c
M keyboards/latinpad/keymaps/via/keymap.c
M keyboards/latinpad/rules.mk
M keyboards/latinpadble/keymaps/default/keymap.c
M keyboards/latinpadble/keymaps/via/keymap.c
M keyboards/latinpadble/rules.mk
M keyboards/lck75/lck75.c
M keyboards/lck75/rules.mk
M keyboards/le_chiffre/keymaps/default/keymap.c
M keyboards/le_chiffre/keymaps/via/keymap.c
M keyboards/le_chiffre/rules.mk
M keyboards/lily58/keymaps/barabas/keymap.c
M keyboards/lily58/keymaps/chuan/keymap.c
M keyboards/lily58/keymaps/curry/rules.mk
M keyboards/lily58/keymaps/cykedev/keymap.c
M keyboards/lily58/keymaps/cykedev/rules.mk
M keyboards/lily58/keymaps/datadavd/keymap.c
M keyboards/lily58/keymaps/default/keymap.c
M keyboards/lily58/keymaps/default/rules.mk
M keyboards/lily58/keymaps/drasbeck/keymap.c
M keyboards/lily58/keymaps/drasbeck/rules.mk
M keyboards/lily58/keymaps/lily58l/keymap.c
M keyboards/lily58/keymaps/mikefightsbears/keymap.c
M keyboards/lily58/keymaps/mikefightsbears/rules.mk
M keyboards/lily58/keymaps/muuko/keymap.c
M keyboards/lily58/keymaps/muuko/rules.mk
M keyboards/lily58/keymaps/narze/keymap.c
M keyboards/lily58/keymaps/ninjonas/rules.mk
M keyboards/lily58/keymaps/via/keymap.c
M keyboards/lily58/keymaps/via/rules.mk
M keyboards/lily58/keymaps/yshrsmz/keymap.c
M keyboards/lily58/keymaps/yshrsmz/rules.mk
M keyboards/lily58/keymaps/yuchi/keymap.c
M keyboards/lily58/keymaps/yuchi/rules.mk
M keyboards/lily58/rules.mk
M keyboards/marksard/rhymestone/common/oled_helper.c
M keyboards/marksard/rhymestone/common/oled_helper.h
M keyboards/marksard/rhymestone/keymaps/default/keymap.c
M keyboards/marksard/rhymestone/keymaps/default/rules.mk
M keyboards/marksard/rhymestone/keymaps/switch_tester/rules.mk
M keyboards/mechllama/g35/keymaps/default/keymap.c
M keyboards/mechllama/g35/rules.mk
M keyboards/mechwild/mercutio/keymaps/bongocat/keymap.c
M keyboards/mechwild/mercutio/keymaps/default/keymap.c
M keyboards/mechwild/mercutio/keymaps/fancy/keymap.c
M keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c
M keyboards/mechwild/mercutio/keymaps/via/keymap.c
M keyboards/mechwild/mercutio/rules.mk
M keyboards/mechwild/murphpad/keymaps/default/keymap.c
M keyboards/mechwild/murphpad/keymaps/via/keymap.c
M keyboards/mechwild/murphpad/rules.mk
M keyboards/merge/um70/keymaps/default/keymap.c
M keyboards/merge/um70/keymaps/via/keymap.c
M keyboards/merge/um70/rules.mk
M keyboards/misonoworks/chocolatebar/chocolatebar.c
M keyboards/misonoworks/chocolatebar/rules.mk
M keyboards/montsinger/rebound/rev3/keymaps/rossman360/keymap.c
M keyboards/montsinger/rebound/rev3/keymaps/rossman360/rules.mk
M keyboards/montsinger/rebound/rev4/keymaps/rossman360/keymap.c
M keyboards/montsinger/rebound/rev4/keymaps/rossman360/rules.mk
M keyboards/nafuda/rules.mk
M keyboards/naked48/rules.mk
M keyboards/naked60/rules.mk
M keyboards/naked64/rules.mk
M keyboards/nullbitsco/nibble/keymaps/oled/keymap.c
M keyboards/nullbitsco/nibble/keymaps/oled/rules.mk
M keyboards/nullbitsco/nibble/keymaps/oled_bongocat/animation_frames.h
M keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c
M keyboards/nullbitsco/nibble/keymaps/oled_bongocat/rules.mk
M keyboards/nullbitsco/nibble/keymaps/oled_status/config.h
M keyboards/nullbitsco/nibble/keymaps/oled_status/keymap.c
M keyboards/nullbitsco/nibble/keymaps/oled_status/rules.mk
M keyboards/nullbitsco/scramble/keymaps/oled/keymap.c
M keyboards/nullbitsco/scramble/keymaps/oled/rules.mk
M keyboards/palette1202/config.h
M keyboards/palette1202/keymaps/default/keymap.c
M keyboards/palette1202/keymaps/key-check/keymap.c
M keyboards/palette1202/lib/oled_helper.c
M keyboards/palette1202/lib/oled_helper.h
M keyboards/palette1202/palette1202.c
M keyboards/palette1202/rules.mk
M keyboards/pandora/rules.mk
M keyboards/pearlboards/pandora/rules.mk
M keyboards/pistachio_pro/rules.mk
M keyboards/planck/keymaps/rootiest/rules.mk
M keyboards/pteron36/rules.mk
M keyboards/rabbit_capture_plan/rules.mk
M keyboards/rainkeeb/rules.mk
M keyboards/ramonimbao/herringbone/pro/keymaps/default/keymap.c
M keyboards/ramonimbao/herringbone/pro/keymaps/iso/keymap.c
M keyboards/ramonimbao/herringbone/pro/keymaps/via/keymap.c
M keyboards/ramonimbao/herringbone/pro/rules.mk
M keyboards/rart/rart75m/rart75m.c
M keyboards/rart/rart75m/rules.mk
M keyboards/rart/rartand/keymaps/default/keymap.c
M keyboards/rart/rartand/keymaps/via/keymap.c
M keyboards/rart/rartand/rules.mk
M keyboards/rart/rartland/rartland.c
M keyboards/rart/rartland/rules.mk
M keyboards/rart/rartlice/keymaps/default/keymap.c
M keyboards/rart/rartlice/keymaps/via/keymap.c
M keyboards/rart/rartlice/rules.mk
M keyboards/rgbkb/mun/rules.mk
M keyboards/rgbkb/pan/keymaps/default/keymap.c
M keyboards/rgbkb/pan/rules.mk
M keyboards/rgbkb/sol/keymaps/brianweyer/keymap.c
M keyboards/rgbkb/sol/keymaps/brianweyer/rules.mk
M keyboards/rgbkb/sol/keymaps/danielhklein/keymap.c
M keyboards/rgbkb/sol/keymaps/default/keymap.c
M keyboards/rgbkb/sol/keymaps/default/readme.md
M keyboards/rgbkb/sol/keymaps/xulkal/rules.mk
M keyboards/rgbkb/sol/keymaps/xyverz/keymap.c
M keyboards/rgbkb/sol/keymaps/xyverz/rules.mk
M keyboards/rgbkb/sol/rev1/rules.mk
M keyboards/rgbkb/sol/rev2/config.h
M keyboards/rgbkb/sol/rev2/post_rules.mk
M keyboards/rgbkb/sol/rev2/rules.mk
M keyboards/rgbkb/zen/rev2/keymaps/default/keymap.c
M keyboards/rgbkb/zen/rev2/rev2.c
M keyboards/rgbkb/zen/rev2/rules.mk
M keyboards/rgbkb/zygomorph/keymaps/5x6pad/rules.mk
M keyboards/rgbkb/zygomorph/keymaps/default/readme.md
M keyboards/rgbkb/zygomorph/keymaps/default/rules.mk
M keyboards/rgbkb/zygomorph/keymaps/default_oled/keymap.c
M keyboards/rgbkb/zygomorph/keymaps/default_oled/rules.mk
M keyboards/rgbkb/zygomorph/keymaps/kageurufu/rules.mk
M keyboards/rgbkb/zygomorph/keymaps/xulkal/rules.mk
M keyboards/ristretto/ristretto.c
M keyboards/ristretto/rules.mk
M keyboards/rocketboard_16/keymaps/default/keymap.c
M keyboards/rocketboard_16/keymaps/via/keymap.c
M keyboards/rocketboard_16/rules.mk
M keyboards/rubi/rules.mk
M keyboards/sawnsprojects/satxri6key/keymaps/via/keymap.c
M keyboards/sawnsprojects/satxri6key/keymaps/via/rules.mk
M keyboards/sendyyeah/pix/keymaps/default/keymap.c
M keyboards/sendyyeah/pix/keymaps/via/keymap.c
M keyboards/sendyyeah/pix/rules.mk
M keyboards/setta21/keymaps/salicylic/keymap.c
M keyboards/setta21/keymaps/salicylic/rules.mk
M keyboards/setta21/rules.mk
M keyboards/sofle/keymaps/default/keymap.c
M keyboards/sofle/keymaps/default/rules.mk
M keyboards/sofle/keymaps/devdev/keymap.c
M keyboards/sofle/keymaps/devdev/rules.mk
M keyboards/sofle/keymaps/helltm/keymap.c
M keyboards/sofle/keymaps/helltm/rules.mk
M keyboards/sofle/keymaps/killmaster/keymap.c
M keyboards/sofle/keymaps/rgb_default/keymap.c
M keyboards/sofle/keymaps/rgb_default/rules.mk
M keyboards/sofle/keymaps/via/oled.c
M keyboards/sofle/keymaps/via/rules.mk
M keyboards/sofle/rev1/rules.mk
M keyboards/spaceman/pancake/rev2/rev2.c
M keyboards/spaceman/pancake/rev2/rules.mk
M keyboards/spacetime/rev1/rules.mk
M keyboards/spacetime/rev2/rules.mk
M keyboards/spacetime/rules.mk
M keyboards/splitkb/kyria/keymaps/asapjockey/config.h
M keyboards/splitkb/kyria/keymaps/asapjockey/keymap.c
M keyboards/splitkb/kyria/keymaps/asapjockey/rules.mk
M keyboards/splitkb/kyria/keymaps/benji/config.h
M keyboards/splitkb/kyria/keymaps/benji/keymap.c
M keyboards/splitkb/kyria/keymaps/benji/rules.mk
M keyboards/splitkb/kyria/keymaps/cjuniet/config.h
M keyboards/splitkb/kyria/keymaps/cjuniet/rules.mk
M keyboards/splitkb/kyria/keymaps/corodiak/config.h
M keyboards/splitkb/kyria/keymaps/corodiak/rules.mk
M keyboards/splitkb/kyria/keymaps/cwebster2/config.h
M keyboards/splitkb/kyria/keymaps/cwebster2/keymap.c
M keyboards/splitkb/kyria/keymaps/cwebster2/rules.mk
M keyboards/splitkb/kyria/keymaps/default/rules.mk
M keyboards/splitkb/kyria/keymaps/drashna/config.h
M keyboards/splitkb/kyria/keymaps/drashna/keymap.c
M keyboards/splitkb/kyria/keymaps/drashna/rules.mk
M keyboards/splitkb/kyria/keymaps/ghidalgo93/config.h
M keyboards/splitkb/kyria/keymaps/ghidalgo93/keymap.c
M keyboards/splitkb/kyria/keymaps/ghidalgo93/rules.mk
M keyboards/splitkb/kyria/keymaps/gotham/config.h
M keyboards/splitkb/kyria/keymaps/gotham/keymap.c
M keyboards/splitkb/kyria/keymaps/gotham/rules.mk
M keyboards/splitkb/kyria/keymaps/j-inc/config.h
M keyboards/splitkb/kyria/keymaps/j-inc/keymap.c
M keyboards/splitkb/kyria/keymaps/j-inc/rules.mk
M keyboards/splitkb/kyria/keymaps/jhelvy/config.h
M keyboards/splitkb/kyria/keymaps/jhelvy/keymap.c
M keyboards/splitkb/kyria/keymaps/jhelvy/rules.mk
M keyboards/splitkb/kyria/keymaps/kejadlen/config.h
M keyboards/splitkb/kyria/keymaps/kejadlen/rules.mk
M keyboards/splitkb/kyria/keymaps/mattir/config.h
M keyboards/splitkb/kyria/keymaps/mattir/keymap.c
M keyboards/splitkb/kyria/keymaps/mattir/rules.mk
M keyboards/splitkb/kyria/keymaps/mattir2/rules.mk
M keyboards/splitkb/kyria/keymaps/ninjonas/config.h
M keyboards/splitkb/kyria/keymaps/ninjonas/oled.c
M keyboards/splitkb/kyria/keymaps/ninjonas/rules.mk
M keyboards/splitkb/kyria/keymaps/pierrec83/config.h
M keyboards/splitkb/kyria/keymaps/pierrec83/rules.mk
M keyboards/splitkb/kyria/keymaps/plattfot/config.h
M keyboards/splitkb/kyria/keymaps/plattfot/keymap.c
M keyboards/splitkb/kyria/keymaps/plattfot/rules.mk
M keyboards/splitkb/kyria/keymaps/rmw/config.h
M keyboards/splitkb/kyria/keymaps/rmw/rules.mk
M keyboards/splitkb/kyria/keymaps/shinze/config.h
M keyboards/splitkb/kyria/keymaps/shinze/keymap.c
M keyboards/splitkb/kyria/keymaps/shinze/rules.mk
M keyboards/splitkb/kyria/keymaps/tessachka/config.h
M keyboards/splitkb/kyria/keymaps/tessachka/keymap.c
M keyboards/splitkb/kyria/keymaps/tessachka/rules.mk
M keyboards/splitkb/kyria/keymaps/thomasbaart/config.h
M keyboards/splitkb/kyria/keymaps/thomasbaart/keymap.c
M keyboards/splitkb/kyria/keymaps/thomasbaart/rules.mk
M keyboards/splitkb/kyria/keymaps/via/keymap.c
M keyboards/splitkb/kyria/keymaps/via/rules.mk
M keyboards/splitkb/kyria/keymaps/winternebs/config.h
M keyboards/splitkb/kyria/keymaps/winternebs/keymap.c
M keyboards/splitkb/kyria/keymaps/winternebs/rules.mk
M keyboards/splitkb/kyria/rev1/config.h
M keyboards/splitkb/kyria/rev1/rev1.c
M keyboards/splitkb/kyria/rev1/rules.mk
M keyboards/splitkb/zima/rules.mk
M keyboards/splitkb/zima/zima.c
M keyboards/suihankey/alpha/keymaps/default/keymap.c
M keyboards/suihankey/rev1/keymaps/default/keymap.c
M keyboards/suihankey/rules.mk
M keyboards/suihankey/split/rules.mk
M keyboards/takashicompany/endzone34/keymaps/default/keymap.c
M keyboards/takashicompany/endzone34/rules.mk
M keyboards/tau4/keymaps/default/keymap.c
M keyboards/tau4/rules.mk
M keyboards/tender/macrowo_pad/keymaps/default/keymap.c
M keyboards/tender/macrowo_pad/keymaps/default/rules.mk
M keyboards/tender/macrowo_pad/keymaps/via/keymap.c
M keyboards/tender/macrowo_pad/keymaps/via/rules.mk
M keyboards/tkc/m0lly/keymaps/default/keymap.c
M keyboards/tkc/m0lly/keymaps/via/keymap.c
M keyboards/tkc/m0lly/rules.mk
M keyboards/tkc/tkc1800/keymaps/default/keymap.c
M keyboards/tkc/tkc1800/keymaps/smt/keymap.c
M keyboards/tkc/tkc1800/keymaps/via/keymap.c
M keyboards/tkc/tkc1800/keymaps/wkl/keymap.c
M keyboards/tkc/tkc1800/keymaps/yanfali/keymap.c
M keyboards/tkc/tkc1800/keymaps/yanfali/rules.mk
M keyboards/tkc/tkc1800/rules.mk
M keyboards/tkw/grandiceps/keymaps/default/keymap.c
M keyboards/tkw/grandiceps/rules.mk
M keyboards/torn/bongocat.c
M keyboards/torn/rules.mk
M keyboards/treadstone48/common/oled_helper.c
M keyboards/treadstone48/common/oled_helper.h
M keyboards/treadstone48/keymaps/default/keymap.c
M keyboards/treadstone48/keymaps/default/rules.mk
M keyboards/treadstone48/keymaps/like_jis/keymap.c
M keyboards/treadstone48/keymaps/like_jis/rules.mk
M keyboards/treadstone48/rev1/keymaps/like_jis_rs/keymap.c
M keyboards/treadstone48/rev1/keymaps/like_jis_rs/rules.mk
M keyboards/treadstone48/rules.mk
M keyboards/ungodly/launch_pad/keymaps/default/keymap.c
M keyboards/ungodly/launch_pad/keymaps/via/keymap.c
M keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c
M keyboards/ungodly/launch_pad/rules.mk
M keyboards/uzu42/keymaps/default/keymap.c
M keyboards/uzu42/rules.mk
M keyboards/work_louder/work_board/work_board.c
M keyboards/yampad/keymaps/default/keymap.c
M keyboards/yampad/keymaps/traditional/keymap.c
M keyboards/yampad/rules.mk
M keyboards/yampad/yampad.c
M keyboards/yoichiro/lunakey_mini/keymaps/default/rules.mk
M keyboards/yoichiro/lunakey_mini/keymaps/via/rules.mk
M keyboards/zoo/wampus/rules.mk
M keyboards/zoo/wampus/wampus.c
M layouts/community/split_3x6_3/drashna/keymap.c
M layouts/community/split_3x6_3/drashna/rules.mk
M quantum/keyboard.c
M quantum/quantum.h
M quantum/split_common/transaction_id_define.h
M quantum/split_common/transactions.c
M quantum/split_common/transport.h
M show_options.mk
M users/curry/rules.mk
M users/drashna/config.h
M users/drashna/drashna.c
M users/drashna/drashna.h
M users/drashna/oled_stuff.c
M users/drashna/process_records.c
M users/drashna/rules.mk
M users/drashna/transport_sync.c
M users/ninjonas/oled.c
M users/ninjonas/process_records.c
M users/ninjonas/process_records.h
M users/riblee/riblee.c
M users/sethBarberee/sethBarberee.c
M users/snowe/oled_setup.c
M users/snowe/oled_setup.h
M users/snowe/readme_ocean_dream.md
M users/snowe/rules.mk
M users/snowe/snowe.h
M users/tominabox1/rules.mk
M users/tominabox1/tominabox1.c
M users/xulkal/rules.mk
M common_features.mk => common_features.mk +15 -5
@@ 592,11 592,21 @@ ifeq ($(strip $(HD44780_ENABLE)), yes)
    OPT_DEFS += -DHD44780_ENABLE
endif

ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
    OPT_DEFS += -DOLED_DRIVER_ENABLE
    COMMON_VPATH += $(DRIVER_PATH)/oled
    QUANTUM_LIB_SRC += i2c_master.c
    SRC += oled_driver.c
VALID_OLED_DRIVER_TYPES := SSD1306 custom
OLED_DRIVER ?= SSD1306
ifeq ($(strip $(OLED_ENABLE)), yes)
    ifeq ($(filter $(OLED_DRIVER),$(VALID_OLED_DRIVER_TYPES)),)
        $(error OLED_DRIVER="$(OLED_DRIVER)" is not a valid OLED driver)
    else
        OPT_DEFS += -DOLED_ENABLE
        COMMON_VPATH += $(DRIVER_PATH)/oled

        OPT_DEFS += -DOLED_DRIVER_$(strip $(shell echo $(OLED_DRIVER) | tr '[:lower:]' '[:upper:]'))
        ifeq ($(strip $(OLED_DRIVER)), SSD1306)
            SRC += ssd1306_sh1106.c
            QUANTUM_LIB_SRC += i2c_master.c
        endif
    endif
endif

ifeq ($(strip $(ST7565_ENABLE)), yes)

M docs/feature_oled_driver.md => docs/feature_oled_driver.md +13 -3
@@ 21,13 21,23 @@ Hardware configurations using Arm-based microcontrollers or different sizes of O
To enable the OLED feature, there are three steps. First, when compiling your keyboard, you'll need to add the following to your `rules.mk`:

```make
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
```

## OLED type
|OLED Driver        |Supported Device           |
|-------------------|---------------------------|
|SSD1306 (default)  |For both SSD1306 and SH1106|

e.g.
```make
OLED_DRIVER = SSD1306
```

Then in your `keymap.c` file, implement the OLED task call. This example assumes your keymap has three layers named `_QWERTY`, `_FN` and `_ADJ`:

```c
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
    // Host Keyboard Layer Status
    oled_write_P(PSTR("Layer: "), false);


@@ 114,7 124,7 @@ static void fade_display(void) {
In split keyboards, it is very common to have two OLED displays that each render different content and are oriented or flipped differently. You can do this by switching which content to render by using the return value from `is_keyboard_master()` or `is_keyboard_left()` found in `split_util.h`, e.g:

```c
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    if (!is_keyboard_master()) {
        return OLED_ROTATION_180;  // flips the display 180 degrees if offhand

R drivers/oled/oled_driver.c => drivers/oled/ssd1306_sh1106.c +0 -0
M keyboards/0xcb/1337/keymaps/conor/keymap.c => keyboards/0xcb/1337/keymaps/conor/keymap.c +1 -1
@@ 76,7 76,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
#endif

/* oled stuff :) */
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
uint16_t startup_timer;

oled_rotation_t oled_init_user(oled_rotation_t rotation) {

M keyboards/0xcb/1337/keymaps/default/keymap.c => keyboards/0xcb/1337/keymaps/default/keymap.c +1 -1
@@ 76,7 76,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
#endif

/* oled stuff :) */
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
uint16_t startup_timer;

oled_rotation_t oled_init_user(oled_rotation_t rotation) {

M keyboards/0xcb/1337/keymaps/jakob/keymap.c => keyboards/0xcb/1337/keymaps/jakob/keymap.c +1 -1
@@ 76,7 76,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
#endif

/* oled stuff :) */
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
uint16_t startup_timer;

oled_rotation_t oled_init_user(oled_rotation_t rotation) {

M keyboards/0xcb/1337/keymaps/via/keymap.c => keyboards/0xcb/1337/keymaps/via/keymap.c +1 -1
@@ 76,7 76,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
#endif

/* oled stuff :) */
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
uint16_t startup_timer;

oled_rotation_t oled_init_user(oled_rotation_t rotation) {

M keyboards/0xcb/1337/rules.mk => keyboards/0xcb/1337/rules.mk +2 -1
@@ 24,4 24,5 @@ AUDIO_ENABLE = no           # Audio output

ENCODER_ENABLE = yes
LTO_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/0xcb/static/keymaps/default/keymap.c => keyboards/0xcb/static/keymaps/default/keymap.c +1 -1
@@ 92,7 92,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
#endif

/* oled stuff :) */
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
uint16_t startup_timer = 0;

oled_rotation_t oled_init_user(oled_rotation_t rotation) {

M keyboards/0xcb/static/keymaps/via/keymap.c => keyboards/0xcb/static/keymaps/via/keymap.c +1 -1
@@ 92,7 92,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
#endif

/* oled stuff :) */
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
uint16_t startup_timer = 0;

oled_rotation_t oled_init_user(oled_rotation_t rotation) {

M keyboards/0xcb/static/rules.mk => keyboards/0xcb/static/rules.mk +2 -1
@@ 23,4 23,5 @@ AUDIO_ENABLE = no           # Audio output

ENCODER_ENABLE = yes
LTO_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/10bleoledhub/keymaps/default/keymap.c => keyboards/10bleoledhub/keymaps/default/keymap.c +1 -1
@@ 54,7 54,7 @@ static void render_logo(void) {
    oled_write_P(qmk_logo, false);
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) { render_logo(); }
#endif


M keyboards/10bleoledhub/keymaps/via/keymap.c => keyboards/10bleoledhub/keymaps/via/keymap.c +1 -1
@@ 54,7 54,7 @@ static void render_logo(void) {
    oled_write_P(qmk_logo, false);
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) { render_logo(); }
#endif


M keyboards/10bleoledhub/rules.mk => keyboards/10bleoledhub/rules.mk +2 -1
@@ 24,5 24,6 @@ RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
BLUETOOTH = AdafruitBLE
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes

M keyboards/8pack/rules.mk => keyboards/8pack/rules.mk +1 -1
@@ 24,6 24,6 @@ NKRO_ENABLE      = no  # USB Nkey Rollover - if this doesn't work, see here: htt
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE     = no
RGBLIGHT_ENABLE  = yes
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no

DEFAULT_FOLDER = 8pack/rev12

M keyboards/aeboards/ext65/keymaps/default/keymap.c => keyboards/aeboards/ext65/keymaps/default/keymap.c +1 -1
@@ 62,7 62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

void render_layer_state(void) {
    oled_write_ln(PSTR("LAYER"), false);

M keyboards/aeboards/ext65/keymaps/via/keymap.c => keyboards/aeboards/ext65/keymaps/via/keymap.c +1 -1
@@ 62,7 62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

void render_layer_state(void) {
    oled_write_ln(PSTR("LAYER"), false);

M keyboards/aeboards/ext65/keymaps/via/rules.mk => keyboards/aeboards/ext65/keymaps/via/rules.mk +2 -0
@@ 1,1 1,3 @@
VIA_ENABLE = yes
OLED_ENABLE = yes
# OLED_DRIVER = not a real thing

M keyboards/aeboards/ext65/rev2/rev2.c => keyboards/aeboards/ext65/rev2/rev2.c +1 -1
@@ 3,7 3,7 @@
// Tested and verified working on ext65rev2
void matrix_io_delay(void) { __asm__ volatile("nop\nnop\nnop\n"); }

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void board_init(void) {
  SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP;
  SYSCFG->CFGR1 &= ~(SYSCFG_CFGR1_SPI2_DMA_RMP);

M keyboards/aleblazer/zodiark/keymaps/default/config.h => keyboards/aleblazer/zodiark/keymaps/default/config.h +1 -1
@@ 16,7 16,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
  #define OLED_TIMEOUT 400000
#endif

M keyboards/aleblazer/zodiark/keymaps/default/keymap.c => keyboards/aleblazer/zodiark/keymaps/default/keymap.c +1 -1
@@ 70,7 70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
      )

};
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static void render_logo(void) {
    static const char PROGMEM qmk_logo[] = {

M keyboards/aleblazer/zodiark/keymaps/slimoled/config.h => keyboards/aleblazer/zodiark/keymaps/slimoled/config.h +1 -1
@@ 16,7 16,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X32
  #define OLED_TIMEOUT 400000
#endif

M keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c => keyboards/aleblazer/zodiark/keymaps/slimoled/keymap.c +1 -1
@@ 73,7 73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
      )

};
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static void render_logo(void) {
    static const char PROGMEM qmk_logo[] = {

M keyboards/aleblazer/zodiark/keymaps/via/config.h => keyboards/aleblazer/zodiark/keymaps/via/config.h +1 -1
@@ 16,7 16,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
  #define OLED_TIMEOUT 400000
#endif

M keyboards/aleblazer/zodiark/keymaps/via/oled.c => keyboards/aleblazer/zodiark/keymaps/via/oled.c +1 -1
@@ 12,7 12,7 @@ You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static void render_logo(void) {
    static const char PROGMEM qmk_logo[] = {

M keyboards/aleblazer/zodiark/rules.mk => keyboards/aleblazer/zodiark/rules.mk +2 -1
@@ 20,7 20,8 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
OLED_DRIVER_ENABLE = yes    # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C
ENCODER_ENABLE = yes
SPLIT_KEYBOARD = yes
LTO_ENABLE = yes

M keyboards/anavi/macropad8/config.h => keyboards/anavi/macropad8/config.h +1 -1
@@ 64,7 64,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#   define RGBLIGHT_LIMIT_VAL 255
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#   define OLED_DISPLAY_128X64
#   define OLED_TIMEOUT 60000
#   define OLED_FONT_H "keyboards/anavi/macropad8/glcdfont.c"

M keyboards/anavi/macropad8/keymaps/default/keymap.c => keyboards/anavi/macropad8/keymaps/default/keymap.c +1 -1
@@ 17,7 17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;  // flips the display 180 degrees if offhand
}

M keyboards/anavi/macropad8/keymaps/git/keymap.c => keyboards/anavi/macropad8/keymaps/git/keymap.c +1 -1
@@ 100,7 100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;  // flips the display 180 degrees if offhand
}

M keyboards/anavi/macropad8/keymaps/kicad/keymap.c => keyboards/anavi/macropad8/keymaps/kicad/keymap.c +2 -2
@@ 50,7 50,7 @@ const uint8_t RGBLED_RAINBOW_SWIRL_INTERVALS[] PROGMEM = {20, 10, 4};
 * F1 - zoom in
 * F2 - zoom out
 * F4 - zoom center
 * 
 *
 */

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {


@@ 70,7 70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;  // flips the display 180 degrees if offhand
}

M keyboards/anavi/macropad8/keymaps/kodi/keymap.c => keyboards/anavi/macropad8/keymaps/kodi/keymap.c +1 -1
@@ 36,7 36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;  // flips the display 180 degrees if offhand
}

M keyboards/anavi/macropad8/keymaps/obs/keymap.c => keyboards/anavi/macropad8/keymaps/obs/keymap.c +1 -1
@@ 53,7 53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;  // flips the display 180 degrees if offhand
}

M keyboards/anavi/macropad8/keymaps/zoom/keymap.c => keyboards/anavi/macropad8/keymaps/zoom/keymap.c +1 -1
@@ 52,7 52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;  // flips the display 180 degrees if offhand
}

M keyboards/anavi/macropad8/rules.mk => keyboards/anavi/macropad8/rules.mk +2 -1
@@ 24,7 24,8 @@ BACKLIGHT_ENABLE = yes       # Enable keyboard backlight functionality
AUDIO_ENABLE = no           # Audio output on port C6
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight.
OLED_DRIVER_ENABLE = yes     # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C
OLED_ENABLE = yes
OLED_DRIVER = SSD1306     # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C

# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend

M keyboards/angel64/alpha/keymaps/default/keymap.c => keyboards/angel64/alpha/keymaps/default/keymap.c +1 -1
@@ 37,7 37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        KC_NO, KC_NO, KC_NO, _______, KC_NO, _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO),
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
  oled_write_P(PSTR("Layer: "), false);
  switch (biton32(layer_state)) {

M keyboards/angel64/rev1/keymaps/default/keymap.c => keyboards/angel64/rev1/keymaps/default/keymap.c +1 -1
@@ 24,7 24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_APP, KC_RCTL),
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
  // Host Keyboard LED Status
  oled_write_P(IS_HOST_LED_ON(USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR("       "), false);

M keyboards/angel64/rev1/keymaps/kakunpc/keymap.c => keyboards/angel64/rev1/keymaps/kakunpc/keymap.c +1 -1
@@ 172,7 172,7 @@ void matrix_scan_user(void) {
#endif
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
  oled_write_P(PSTR("Layer: "), false);
  switch (biton32(layer_state)) {

M keyboards/angel64/rules.mk => keyboards/angel64/rules.mk +2 -1
@@ 28,7 28,8 @@ RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no           # Audio output on port C6
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
CUSTOM_MATRIX = yes

SRC += matrix.c

M keyboards/aplyard/aplx6/rev2/keymaps/default/keymap.c => keyboards/aplyard/aplx6/rev2/keymaps/default/keymap.c +1 -1
@@ 77,7 77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#if defined(OLED_DRIVER_ENABLE)
#if defined(OLED_ENABLE)
static void render_logo(void) {
    //Logo for _MEDIA
    static const char PROGMEM logo1[] = {

M keyboards/aplyard/aplx6/rev2/rules.mk => keyboards/aplyard/aplx6/rev2/rules.mk +2 -1
@@ 21,5 21,6 @@ RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
UNICODE_ENABLE = yes        # Unicode
OLED_DRIVER_ENABLE = yes    # Enable Support for Oled Display
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # Enable Support for Oled Display
ENCODER_ENABLE = yes        # Enable Support for Encoder

M keyboards/arabica37/keymaps/default/keymap.c => keyboards/arabica37/keymaps/default/keymap.c +1 -1
@@ 139,7 139,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    if (!is_keyboard_master()) {

M keyboards/arabica37/keymaps/default/rules.mk => keyboards/arabica37/keymaps/default/rules.mk +2 -1
@@ 1,1 1,2 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/arch_36/keymaps/default/keymap.c => keyboards/arch_36/keymaps/default/keymap.c +64 -64
@@ 122,7 122,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;


@@ 229,69 229,69 @@ static void render_status(void) {

static void render_logo(void) {
    static const char PROGMEM logo[] = {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x1c, 0x1c, 0x38, 0xf8, 
        0xf0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 
        0x03, 0x1f, 0x7f, 0xfe, 0xf0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 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, 0x87, 0x9f, 0x3f, 0xfc, 0xf0, 
        0xe0, 0xc0, 0x00, 0x01, 0x07, 0x0f, 0x3f, 0x3f, 0x7f, 0xfe, 0xfe, 0xee, 0xce, 0xfe, 0x8e, 0x0e, 
        0xfe, 0x8e, 0x0e, 0xfe, 0x8e, 0x0e, 0xfe, 0xfe, 0x7e, 0xee, 0xdc, 0x9c, 0x38, 0x78, 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, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf7, 0xe3, 0xc3, 0xc7, 0x8f, 0x0e, 0x1f, 
        0x1f, 0x3f, 0x7f, 0x7f, 0xfe, 0xfc, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 
        0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe7, 0xff, 0xdb, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 
        0x1f, 0xff, 0xfe, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xfc, 0xff, 0xff, 0x8f, 0x8f, 0x0f, 0x0f, 0x0f, 0x0f, 
        0x0e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0f, 0x0f, 0x0c, 0x08, 0x0f, 0x0c, 0x08, 
        0x0f, 0x0c, 0x08, 0x0f, 0x0c, 0x08, 0x0f, 0x0f, 0x0e, 0x07, 0x03, 0x01, 0x80, 0xc0, 0xe0, 0x40, 
        0x01, 0x03, 0x07, 0x1f, 0xfe, 0xfc, 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, 0xc0, 
        0xe0, 0xe0, 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, 0x01, 0xf3, 0xf3, 0xf3, 0x03, 0x03, 0x03, 0x03, 
        0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xf3, 0xff, 0xff, 0x9f, 0x8f, 0x80, 0x80, 0xc0, 0xf0, 0xfc, 
        0x7e, 0x1e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xce, 0xce, 0xef, 0x67, 0x67, 0x6f, 0x6f, 0xef, 0xee, 
        0xce, 0x8e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0x60, 
        0x20, 0x00, 0x00, 0x00, 0x00, 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, 0xfc, 0xff, 
        0xbf, 0x83, 0x8f, 0xff, 0xff, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe, 
        0x1c, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0x1c, 0x0e, 0x06, 
        0x06, 0x06, 0x06, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0c, 0x06, 0x06, 0x06, 
        0x0e, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31, 
        0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0xff, 
        0xef, 0xc7, 0x80, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x1b, 0x39, 0x70, 0xf0, 
        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, 0x00, 0x00, 0x30, 0x3f, 0x3f, 0x1f, 0x01, 
        0x01, 0x01, 0x01, 0x01, 0x07, 0x3f, 0x3f, 0x3c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1f, 0x1c, 0x38, 0x30, 
        0x30, 0x30, 0x30, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x3f, 
        0x1f, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x1f, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x1f, 
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x1c, 0x1c, 0x38, 0xf8,
        0xf0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00,
        0x03, 0x1f, 0x7f, 0xfe, 0xf0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 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, 0x87, 0x9f, 0x3f, 0xfc, 0xf0,
        0xe0, 0xc0, 0x00, 0x01, 0x07, 0x0f, 0x3f, 0x3f, 0x7f, 0xfe, 0xfe, 0xee, 0xce, 0xfe, 0x8e, 0x0e,
        0xfe, 0x8e, 0x0e, 0xfe, 0x8e, 0x0e, 0xfe, 0xfe, 0x7e, 0xee, 0xdc, 0x9c, 0x38, 0x78, 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,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf7, 0xe3, 0xc3, 0xc7, 0x8f, 0x0e, 0x1f,
        0x1f, 0x3f, 0x7f, 0x7f, 0xfe, 0xfc, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0,
        0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe7, 0xff, 0xdb, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03,
        0x1f, 0xff, 0xfe, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xfc, 0xff, 0xff, 0x8f, 0x8f, 0x0f, 0x0f, 0x0f, 0x0f,
        0x0e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0f, 0x0f, 0x0c, 0x08, 0x0f, 0x0c, 0x08,
        0x0f, 0x0c, 0x08, 0x0f, 0x0c, 0x08, 0x0f, 0x0f, 0x0e, 0x07, 0x03, 0x01, 0x80, 0xc0, 0xe0, 0x40,
        0x01, 0x03, 0x07, 0x1f, 0xfe, 0xfc, 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, 0xc0,
        0xe0, 0xe0, 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, 0x01, 0xf3, 0xf3, 0xf3, 0x03, 0x03, 0x03, 0x03,
        0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xf3, 0xff, 0xff, 0x9f, 0x8f, 0x80, 0x80, 0xc0, 0xf0, 0xfc,
        0x7e, 0x1e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xce, 0xce, 0xef, 0x67, 0x67, 0x6f, 0x6f, 0xef, 0xee,
        0xce, 0x8e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0x60,
        0x20, 0x00, 0x00, 0x00, 0x00, 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, 0xfc, 0xff,
        0xbf, 0x83, 0x8f, 0xff, 0xff, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xfe,
        0x1c, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0x1c, 0x0e, 0x06,
        0x06, 0x06, 0x06, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x0c, 0x06, 0x06, 0x06,
        0x0e, 0xfe, 0xfc, 0xf8, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x31,
        0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0xff,
        0xef, 0xc7, 0x80, 0x00, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x1b, 0x39, 0x70, 0xf0,
        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, 0x00, 0x00, 0x30, 0x3f, 0x3f, 0x1f, 0x01,
        0x01, 0x01, 0x01, 0x01, 0x07, 0x3f, 0x3f, 0x3c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1f, 0x1c, 0x38, 0x30,
        0x30, 0x30, 0x30, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x3f,
        0x1f, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x1f, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x1f,
        0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    };


M keyboards/arch_36/keymaps/obosob/config.h => keyboards/arch_36/keymaps/obosob/config.h +1 -1
@@ 16,7 16,7 @@

#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
#endif


M keyboards/arch_36/keymaps/obosob/keymap.c => keyboards/arch_36/keymaps/obosob/keymap.c +290 -290
@@ 67,9 67,9 @@ enum keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

//   Qwerty            ________                                                         ________
//            ________|      E |________                                       ________|      I |________ 
//            ________|      E |________                                       ________|      I |________
//           |      W |        |      R |________                     ________|      U |        |      O |
//   ________|        |________|        |      T |                   |      Y |        |________|        |________ 
//   ________|        |________|        |      T |                   |      Y |        |________|        |________
//  |      Q |________|      D |________|        |                   |        |________|      K |________|      P |
//  |        |      S |        |      F |________|                   |________|      J |        |      L |        |
//  |________|        |________|        |      G |                   |      H |        |________|        |________|


@@ 79,9 79,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//  |      Z |________|        |________|        |                   |        |________|        |________|      ? |
//  |        |                 |    Esc |________|                   |________|    Tab |                 |      / |
//  |________|                 | Ctrl   |  Enter |________   ________|  Space | Alt    |                 |________|
//                             |________| NUM    |  Del   | |   BkSp | NAV    |________|         
//                             |________| NUM    |  Del   | |   BkSp | NAV    |________|
//                                       ________| Shift  | | Shift  |________
//                                               |________| |________|        
//                                               |________| |________|

    [_QWERTY] = LAYOUT_split_3x5_3(
      KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                      KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,


@@ 90,9 90,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
                                 MY_ESC,  MY_ENT,  MY_DEL,  MY_BSPC, MY_SPC,  MY_TAB
    ),
//   Colemak (Mod-DH)  ________                                                         ________
//            ________|      F |________                                       ________|      U |________ 
//            ________|      F |________                                       ________|      U |________
//           |      W |        |      P |________                     ________|      L |        |      Y |
//   ________|        |________|        |      B |                   |      J |        |________|        |________ 
//   ________|        |________|        |      B |                   |      J |        |________|        |________
//  |      Q |________|      S |________|        |                   |        |________|      E |________|      : |
//  |        |      R |        |      T |________|                   |________|      N |        |      I |      ; |
//  |________|        |________|        |      G |                   |      K |        |________|        |________|


@@ 102,9 102,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//  |      Z |________|        |________|        |                   |        |________|        |________|      ? |
//  |        |                 |    Esc |________|                   |________|    Tab |                 |      / |
//  |________|                 | Ctrl   |  Enter |________   ________|  Space | Alt    |                 |________|
//                             |________| NUM    |  Del   | |   BkSp | NAV    |________|         
//                             |________| NUM    |  Del   | |   BkSp | NAV    |________|
//                                       ________| Shift  | | Shift  |________
//                                               |________| |________|        
//                                               |________| |________|

    [_COLMAK] = LAYOUT_split_3x5_3(
      KC_Q,    KC_W,    KC_F,    KC_P,    KC_B,                      KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN,


@@ 113,9 113,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
                                 MY_ESC,  MY_ENT,  MY_DEL,  MY_BSPC, MY_SPC,  MY_TAB
    ),
//   Number            ________                                                         ________
//            ________|     F3 |________                                       ________|      8 |________ 
//            ________|     F3 |________                                       ________|      8 |________
//           |     F2 |        |     F4 |________                     ________|      7 |        |      9 |
//   ________|        |________|        |        |                   |      + |        |________|        |________ 
//   ________|        |________|        |        |                   |      + |        |________|        |________
//  |     F1 |________|     F7 |________|        |                   |        |________|      5 |________|      / |
//  |        |     F6 |        |     F8 |________|                   |________|      4 |        |      6 |        |
//  |________|        |________|        |        |                   |      0 |        |________|        |________|


@@ 125,7 125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//  |     F9 |________|        |________|        |                   |        |________|        |________|      * |
//  |        |                 |        |________|                   |________|        |                 |        |
//  |________|                 |        |        |________   ________| ADJUST |        |                 |________|
//                             |________|  ****  |        | |        |        |________|         
//                             |________|  ****  |        | |        |        |________|
//                                      |________|        | |        |________|
//                                               |________| |________|
    [_NUM] = LAYOUT_split_3x5_3(


@@ 135,9 135,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
                                XXXXXXX, _______, XXXXXXX,  _______, _______, KC_0
    ),
//   Navigation        ________                                                          ________
//            ________|     OS |________                                        ________|   PgUp |________ 
//            ________|     OS |________                                        ________|   PgUp |________
//           |     OS |   Ctrl |     OS |________                      ________|   PgDn |        |    End |
//   ________|    Alt |________|  Shift | AltTab |                    |   Home |        |________|        |________ 
//   ________|    Alt |________|  Shift | AltTab |                    |   Home |        |________|        |________
//  |     OS |________|   Ctrl |________|        |                    |        |________|     Up |________| PrtScr |
//  |  Super |    Alt |        |  Shift |________|                    |________|   Down |        |  Right |        |
//  |________|        |________|        |        |                    |   Left |        |________|        |________|


@@ 147,19 147,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//  |        |________|        |________|        |                    |        |________|        |________|        |
//  |        |                 |        |________|                    |________|        |                 |        |
//  |________|                 |        | ADJUST |________    ________|        |        |                 |________|
//                             |________|        |        |  |        |  ****  |________|         
//                             |________|        |        |  |        |  ****  |________|
//                                      |________|        |  |        |________|
//                                               |________|  |________|        
    [_NAV] = LAYOUT_split_3x5_3(                                      
//                                               |________|  |________|
    [_NAV] = LAYOUT_split_3x5_3(
      OS_GUI,  OS_ALT,  OS_CTL,  OS_SFT,  XXXXXXX,                    KC_HOME, KC_PGDN, KC_PGUP, KC_END,  KC_PSCR,
      KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX,                    KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_INS,
      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                    XXXXXXX, AS_TAB,  A_TAB,   XXXXXXX, XXXXXXX,
                                 _______, _______, _______,  XXXXXXX, _______, XXXXXXX
      ),
//   Symbol            ________                                                          ________
//            ________|      { |________                                        ________|        |________ 
//            ________|      { |________                                        ________|        |________
//           |      > |        |      } |________                      ________|        |        |        |
//   ________|        |________|        |      ` |                    |        |        |________|        |________ 
//   ________|        |________|        |      ` |                    |        |        |________|        |________
//  |      < |________|      ( |________|        |                    |        |________|        |________|      | |
//  |        |      £ |        |      ) |________|                    |________|      - |        |      & |        |
//  |________|        |________|        |      ^ |                    |      _ |        |________|        |________|


@@ 169,20 169,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//  |      \ |________|        |________|        |                    |        |________|        |________|      # |
//  |        |                 |      ? |________|                    |________|      ! |                 |        |
//  |________|                 |        |      ' |________    ________|      . |        |                 |________|
//                             |________|        |      " |  |      , |        |________|         
//                             |________|        |      " |  |      , |        |________|
//                                      |________|        |  |        |________|
//                                               |________|  |________|                             
//                                                            
//                                               |________|  |________|
//
    [_SYM] = LAYOUT_split_3x5_3(
         KC_LT,   KC_GT,   KC_LCBR, KC_RCBR, KC_GRV,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NUPI,
         KC_ASTR, KC_HASH, KC_LPRN, KC_RPRN, KC_CIRC,                  KC_UNDS, KC_MINS, XXXXXXX, KC_AMPR, KC_PIPE,
         KC_NUBS, KC_DLR,  KC_LBRC, KC_RBRC, KC_DQUO,                  KC_EQL,  KC_PLUS, _______, KC_PERC, KC_NUHS,
                                    KC_QUES, KC_QUOT, KC_AT,  KC_COMM, KC_DOT,  KC_EXLM 
                                    KC_QUES, KC_QUOT, KC_AT,  KC_COMM, KC_DOT,  KC_EXLM
        ),
//    Miscellaneous    ________                                                          ________
//            ________|    {|} |________                                        ________|        |________ 
//            ________|    {|} |________                                        ________|        |________
//           |   </|> |        |    {|} |________                      ________|        |        |        |
//   ________|        |________|        |        |                    |        |        |________|        |________ 
//   ________|        |________|        |        |                    |        |        |________|        |________
//  |    <|> |________|    (|) |________|        |                    |        |________|        |________|        |
//  |        |        |        |    (|) |________|                    |________|        |        |        |        |
//  |________|        |________|        |        |                    |        |        |________|        |________|


@@ 192,7 192,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//  |        |________|        |________|        |                    |        |________|        |________|        |
//  |        |                 |    ?_^ |________|                    |________|    !_^ |                 |        |
//  |________|                 |        |    '|' |________    ________|    ._^ |        |                 |________|
//                             |________|        |    "|" |  |     ,_ |        |________|                  
//                             |________|        |    "|" |  |     ,_ |        |________|
//                                      |________|        |  |        |________|
//                                               |________|  |________|
//


@@ 203,9 203,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
                                   QUESSPC, QUOT,    DQUOT,    COMMSPC, DOTSPC,  EXLMSPC
        ),
//   Adjust            ________                                                          ________
//            ________|  RESET |________                                        ________|        |________ 
//            ________|  RESET |________                                        ________|        |________
//           |        | EEPROM |  RESET |________                      ________|        |        |        |
//   ________|        |________|        |        |                    |        |        |________|        |________ 
//   ________|        |________|        |        |                    |        |        |________|        |________
//  |        |________| RGB    |________|        |                    |        |________|        |________|        |
//  |        | RGB    | Hue+   | RGB    |________|                    |________|        |        |        |        |
//  |________| Toggle |________| Sat+   | RGB    |                    |        |        |________|        |________|


@@ 215,13 215,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//  |        |________|        |________| Bri-   |                    |        |________|        |________|        |
//  |        |                 |        |________|                    |________|        |                 |        |
//  |________|                 |        |        |________    ________|        |        |                 |________|
//                             |________|  ****  |        |  |        |  ****  |________|         
//                             |________|  ****  |        |  |        |  ****  |________|
//                                      |________|        |  |        |________|
//                                               |________|  |________|
    [_ADJUST] = LAYOUT_split_3x5_3(
        XXXXXXX, WOKE,    EEP_RST, RESET,   XXXXXXX,                     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 
        XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,                     XXXXXXX, QWERTY,  COLEMAK, XXXXXXX, XXXXXXX, 
        XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,                     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 
        XXXXXXX, WOKE,    EEP_RST, RESET,   XXXXXXX,                     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
        XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,                     XXXXXXX, QWERTY,  COLEMAK, XXXXXXX, XXXXXXX,
        XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,                     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
                                   XXXXXXX, XXXXXXX, XXXXXXX,   XXXXXXX, XXXXXXX, XXXXXXX
        ),
};


@@ 235,12 235,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
        case QWERTY:
            if (record->event.pressed) {
                set_single_persistent_default_layer(_QWERTY); 
                set_single_persistent_default_layer(_QWERTY);
            }
            return false;
        case COLEMAK:
            if (record->event.pressed) {
                set_single_persistent_default_layer(_COLMAK); 
                set_single_persistent_default_layer(_COLMAK);
            }
            return false;
        case SYM:


@@ 396,7 396,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
    return state;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

#define ANIM_NUM_FRAMES 4
#define ANIM_FRAME_DURATION 100


@@ 530,273 530,273 @@ static void render_logo(void) {
    static const char PROGMEM frame[ANIM_NUM_FRAMES][1024] = {
        {
            // leekspin: frame 0
            0xff, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0x7f, 0xf7, 0xde, 0x7c, 0xf1, 0xc6, 0x98, 0x21, 0x66, 0x9a, 
            0xc9, 0x24, 0x33, 0xcf, 0x2f, 0xfd, 0xff, 0x6b, 0x7f, 0x9d, 0x81, 0x76, 0x14, 0x81, 0x67, 0x0f, 
            0xfb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, 
            0xff, 0x6f, 0xfb, 0xdf, 0x77, 0xff, 0x0d, 0xe0, 0x3f, 0xc0, 0x0d, 0x37, 0xd0, 0x26, 0xa9, 0xd8, 
            0xc7, 0x1d, 0xf0, 0xff, 0xff, 0xf0, 0xc7, 0xb1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf1, 0xc6, 
            0xff, 0xf7, 0xf8, 0xf3, 0xcf, 0x90, 0xf7, 0xfc, 0xe3, 0x9b, 0x2e, 0xe2, 0xfc, 0x03, 0xfc, 0x7c, 
            0x83, 0x1b, 0x6c, 0xa5, 0xb3, 0x4e, 0x59, 0x64, 0x13, 0xdb, 0xae, 0x20, 0xdf, 0xff, 0xbb, 0xef, 
            0xff, 0xbb, 0xef, 0xdf, 0x7b, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0x7f, 0xf7, 0xdf, 0x7b, 0xef, 
            0xff, 0xff, 0xdd, 0x77, 0xff, 0xdd, 0x77, 0xff, 0xdd, 0x77, 0xff, 0xdd, 0x77, 0xfe, 0xdc, 0xf1, 
            0xcc, 0x23, 0x99, 0x64, 0x26, 0x98, 0x63, 0x0f, 0x30, 0xcc, 0x33, 0x24, 0xcd, 0x19, 0xe0, 0xff, 
            0xff, 0xde, 0x7b, 0xef, 0xbe, 0xfb, 0xef, 0xbe, 0xfb, 0x6f, 0xfe, 0xdb, 0x7f, 0xf6, 0xdf, 0xfd, 
            0xb7, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0xbd, 0x67, 0x48, 0x13, 0xfc, 0x85, 0xff, 0x5f, 0x3f, 
            0xb7, 0x97, 0xcf, 0xcb, 0xeb, 0xcf, 0x97, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
            0xef, 0x9f, 0xd7, 0xcf, 0xcb, 0xdf, 0xd7, 0xcf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xfe, 0xff, 0xf2, 
            0x07, 0xe9, 0x3e, 0x00, 0x35, 0xef, 0xc9, 0x1b, 0xc2, 0xbc, 0x37, 0xc0, 0xff, 0xbf, 0xfb, 0x6e, 
            0xef, 0xfb, 0xde, 0xf7, 0xb7, 0xfd, 0xef, 0xbd, 0xf7, 0x77, 0xdd, 0xff, 0xb7, 0xfd, 0xef, 0xbb, 
            0xff, 0xff, 0xdd, 0xf7, 0x7f, 0xdd, 0xf7, 0x7f, 0xdd, 0xf7, 0x7f, 0xdd, 0xf7, 0xbf, 0xed, 0xff, 
            0xdf, 0xf7, 0xf6, 0x7c, 0xf9, 0xb1, 0xe6, 0xcb, 0x18, 0xa4, 0xb3, 0x09, 0xfc, 0xff, 0xfb, 0x6f, 
            0xfe, 0xdf, 0xfb, 0xbf, 0xf7, 0x7e, 0xef, 0xfd, 0xb7, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0xb6, 0xff, 
            0x6d, 0xff, 0xdb, 0x7f, 0xf6, 0xdf, 0xf9, 0x21, 0x8e, 0xfb, 0x00, 0x7e, 0xc0, 0xff, 0xfe, 0xff, 
            0xf7, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x7f, 0x7f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 
            0x3f, 0x7f, 0x7f, 0x3f, 0x3f, 0x7f, 0x37, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc0, 
            0x6e, 0x3b, 0x09, 0xe0, 0x6f, 0x1a, 0x92, 0x64, 0x6d, 0x99, 0xf2, 0x7f, 0xef, 0xfd, 0xb7, 0xff, 
            0x7b, 0xde, 0xf7, 0xbf, 0xfb, 0x7e, 0xef, 0xbf, 0xff, 0xfb, 0xef, 0xbe, 0xfb, 0x6f, 0xfe, 0xdb, 
            0xff, 0xff, 0xfe, 0xf7, 0xbf, 0xfb, 0xff, 0xbf, 0xef, 0xfd, 0xdf, 0xf7, 0x7d, 0xff, 0xee, 0x7f, 
            0xf7, 0xbd, 0xff, 0xef, 0xfb, 0xbf, 0xfd, 0x77, 0xfe, 0xa0, 0xf9, 0xfe, 0xf0, 0xef, 0xbf, 0xf7, 
            0x7f, 0xfb, 0xde, 0xff, 0xbb, 0xff, 0xf7, 0xbe, 0xfb, 0xdf, 0xff, 0xfd, 0xb7, 0xfe, 0xef, 0x7f, 
            0xfb, 0xbf, 0xed, 0xff, 0xf7, 0xbe, 0xfb, 0xdf, 0xf0, 0x06, 0x98, 0xe7, 0x3c, 0x03, 0xcf, 0x2f, 
            0x1f, 0x9f, 0x7f, 0x7f, 0x7e, 0xf8, 0xf1, 0xe6, 0xf8, 0xc9, 0xca, 0xfa, 0xc8, 0xda, 0xf2, 0xcc, 
            0xd9, 0xf2, 0xe0, 0xed, 0xf1, 0xfa, 0xfc, 0x7f, 0x7f, 0x3f, 0xbf, 0x9f, 0x0f, 0xe3, 0x34, 0x8d, 
            0xe3, 0x18, 0x17, 0x85, 0xa0, 0x38, 0xcf, 0x13, 0xf8, 0xef, 0xdd, 0x7f, 0xff, 0xf7, 0xfd, 0xef, 
            0xbb, 0xff, 0x7f, 0xf7, 0xfd, 0xef, 0xbf, 0xfb, 0xee, 0xff, 0xff, 0xbb, 0xef, 0x7f, 0xfb, 0xee, 
            0xff, 0xff, 0xde, 0xf7, 0xff, 0xef, 0xbd, 0xff, 0xdb, 0xff, 0xfe, 0x77, 0x7f, 0xf7, 0xfd, 0x7f, 
            0xf7, 0xff, 0xdb, 0x7e, 0xff, 0xef, 0xfb, 0xff, 0xb7, 0xff, 0xc8, 0xff, 0xff, 0xff, 0xfc, 0x27, 
            0xff, 0xff, 0xff, 0xed, 0xbf, 0xfe, 0xf7, 0x7f, 0xfb, 0xdf, 0xfe, 0xf7, 0xdf, 0xff, 0xfd, 0x6f, 
            0xff, 0xbf, 0xfb, 0xff, 0xde, 0xff, 0xf7, 0xfd, 0xbf, 0x00, 0x77, 0x6c, 0x89, 0x11, 0x04, 0xa2, 
            0x08, 0x69, 0x46, 0x90, 0x02, 0x64, 0x94, 0x24, 0x09, 0x91, 0x85, 0x21, 0x09, 0xff, 0xf7, 0xdd, 
            0x3d, 0x37, 0x1d, 0x1d, 0x06, 0xc6, 0x07, 0x10, 0x20, 0x83, 0x84, 0x30, 0x66, 0x19, 0x92, 0x06, 
            0x40, 0x31, 0x0c, 0xc0, 0x14, 0xb7, 0x09, 0xfa, 0xff, 0xdf, 0xfb, 0xbf, 0xfd, 0xf7, 0xef, 0xef, 
            0xff, 0xdf, 0xf7, 0xff, 0x6e, 0xff, 0xff, 0xde, 0xf7, 0xff, 0x7e, 0xdb, 0xff, 0xb7, 0xff, 0xee, 
            0xff, 0xff, 0x7f, 0xf6, 0xdf, 0xfd, 0xff, 0xff, 0xef, 0xbb, 0xfe, 0x7f, 0xf7, 0xdf, 0xff, 0xf7, 
            0xdd, 0xff, 0xff, 0xbf, 0xed, 0xff, 0xfe, 0xef, 0x3f, 0xde, 0xee, 0xc9, 0xff, 0xff, 0xdf, 0xff, 
            0xc9, 0xff, 0x9e, 0xdf, 0xdf, 0xb7, 0xfd, 0xff, 0xef, 0xff, 0xfb, 0xef, 0xfd, 0xbf, 0xf7, 0xff, 
            0xbb, 0xef, 0xff, 0xfd, 0xff, 0xef, 0x7e, 0xff, 0xb1, 0x06, 0x7b, 0xc9, 0x00, 0x42, 0x98, 0x31, 
            0x46, 0x44, 0x38, 0x89, 0xc4, 0x30, 0x00, 0x42, 0x10, 0x84, 0x20, 0x08, 0x81, 0x03, 0x10, 0x80, 
            0x24, 0x00, 0x88, 0x21, 0x04, 0xc0, 0x08, 0xa1, 0x34, 0x4c, 0x03, 0x90, 0x46, 0x00, 0x30, 0xd1, 
            0x04, 0x69, 0x88, 0x30, 0x22, 0xcb, 0x04, 0x3f, 0xfb, 0xff, 0xfd, 0x6f, 0xfe, 0xf7, 0xbf, 0xfe, 
            0xdb, 0xff, 0xee, 0x7f, 0xf7, 0xbf, 0xfd, 0xef, 0x7e, 0xf7, 0xff, 0xdb, 0xff, 0xb7, 0xfe, 0x7b, 
            0xff, 0xff, 0xff, 0xbb, 0xef, 0xff, 0xf6, 0xff, 0xbf, 0xef, 0xff, 0xdf, 0xfd, 0x7f, 0xfe, 0xbf, 
            0xef, 0xfe, 0xff, 0xdf, 0xff, 0xfe, 0xff, 0xe4, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
            0xff, 0xff, 0xfe, 0xfb, 0x37, 0xfd, 0xfe, 0xff, 0xff, 0x6f, 0xff, 0xf6, 0xff, 0xbf, 0xfb, 0xdf, 
            0xff, 0xff, 0x77, 0x7f, 0x9d, 0x9f, 0x27, 0x21, 0xcc, 0x18, 0x63, 0x84, 0x80, 0x2a, 0x29, 0x44, 
            0x59, 0x43, 0x94, 0x34, 0x42, 0x49, 0x2c, 0x92, 0x92, 0x64, 0x0c, 0x80, 0xb8, 0x22, 0x86, 0x34, 
            0x48, 0x23, 0x34, 0x44, 0xc9, 0x18, 0x46, 0x09, 0x80, 0x72, 0x08, 0x61, 0x80, 0x9b, 0x12, 0x64, 
            0x8d, 0x90, 0x23, 0xa8, 0x26, 0x44, 0x59, 0x89, 0x24, 0xd3, 0x1f, 0xff, 0xfd, 0xef, 0xff, 0x7d, 
            0xef, 0xfe, 0xf7, 0xbf, 0xfb, 0xdf, 0x7d, 0xff, 0xf7, 0xbf, 0xfe, 0xdb, 0x7f, 0xfd, 0xff, 0xcf, 
            0xff, 0xff, 0xfb, 0xff, 0x7f, 0xff, 0xb6, 0xff, 0xff, 0xff, 0xfd, 0xb7, 0xff, 0xfb, 0xbf, 0xff, 
            0xef, 0xfb, 0x7e, 0xdf, 0xff, 0xf6, 0xff, 0xdf, 0xff, 0xed, 0xfb, 0xff, 0xef, 0x2f, 0xef, 0xef, 
            0xf7, 0xf7, 0x9f, 0xfb, 0xfc, 0xff, 0xf7, 0xdf, 0xbb, 0x7f, 0xff, 0xef, 0xfe, 0xf7, 0x1f, 0x07, 
            0xd1, 0x19, 0x22, 0x66, 0x44, 0x98, 0x8b, 0x21, 0x64, 0x1a, 0x42, 0xd4, 0x14, 0x23, 0xa8, 0x4d, 
            0x91, 0x92, 0x64, 0x25, 0x99, 0x44, 0x23, 0x88, 0x50, 0x96, 0xa3, 0x18, 0x44, 0x65, 0x99, 0x22, 
            0x8a, 0x69, 0x25, 0x86, 0xd8, 0x1d, 0xb7, 0x9a, 0x9e, 0x30, 0x8b, 0xe2, 0xcc, 0xd9, 0xe1, 0xfc, 
            0xee, 0xf8, 0xfe, 0xe1, 0xc9, 0x06, 0x98, 0x69, 0x22, 0x92, 0x4c, 0x23, 0xa7, 0x1f, 0x7d, 0xff, 
            0xff, 0xbf, 0xef, 0xfb, 0xbe, 0xef, 0x7f, 0xfb, 0xfe, 0x77, 0xff, 0xbf, 0xef, 0xfd, 0xf7, 0xff, 
            0xff, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0x7f, 0xf7, 0xde, 0x7c, 0xf1, 0xc6, 0x98, 0x21, 0x66, 0x9a,
            0xc9, 0x24, 0x33, 0xcf, 0x2f, 0xfd, 0xff, 0x6b, 0x7f, 0x9d, 0x81, 0x76, 0x14, 0x81, 0x67, 0x0f,
            0xfb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb, 0xff, 0xef, 0xbb,
            0xff, 0x6f, 0xfb, 0xdf, 0x77, 0xff, 0x0d, 0xe0, 0x3f, 0xc0, 0x0d, 0x37, 0xd0, 0x26, 0xa9, 0xd8,
            0xc7, 0x1d, 0xf0, 0xff, 0xff, 0xf0, 0xc7, 0xb1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf1, 0xc6,
            0xff, 0xf7, 0xf8, 0xf3, 0xcf, 0x90, 0xf7, 0xfc, 0xe3, 0x9b, 0x2e, 0xe2, 0xfc, 0x03, 0xfc, 0x7c,
            0x83, 0x1b, 0x6c, 0xa5, 0xb3, 0x4e, 0x59, 0x64, 0x13, 0xdb, 0xae, 0x20, 0xdf, 0xff, 0xbb, 0xef,
            0xff, 0xbb, 0xef, 0xdf, 0x7b, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0x7f, 0xf7, 0xdf, 0x7b, 0xef,
            0xff, 0xff, 0xdd, 0x77, 0xff, 0xdd, 0x77, 0xff, 0xdd, 0x77, 0xff, 0xdd, 0x77, 0xfe, 0xdc, 0xf1,
            0xcc, 0x23, 0x99, 0x64, 0x26, 0x98, 0x63, 0x0f, 0x30, 0xcc, 0x33, 0x24, 0xcd, 0x19, 0xe0, 0xff,
            0xff, 0xde, 0x7b, 0xef, 0xbe, 0xfb, 0xef, 0xbe, 0xfb, 0x6f, 0xfe, 0xdb, 0x7f, 0xf6, 0xdf, 0xfd,
            0xb7, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0xbd, 0x67, 0x48, 0x13, 0xfc, 0x85, 0xff, 0x5f, 0x3f,
            0xb7, 0x97, 0xcf, 0xcb, 0xeb, 0xcf, 0x97, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
            0xef, 0x9f, 0xd7, 0xcf, 0xcb, 0xdf, 0xd7, 0xcf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xfe, 0xff, 0xf2,
            0x07, 0xe9, 0x3e, 0x00, 0x35, 0xef, 0xc9, 0x1b, 0xc2, 0xbc, 0x37, 0xc0, 0xff, 0xbf, 0xfb, 0x6e,
            0xef, 0xfb, 0xde, 0xf7, 0xb7, 0xfd, 0xef, 0xbd, 0xf7, 0x77, 0xdd, 0xff, 0xb7, 0xfd, 0xef, 0xbb,
            0xff, 0xff, 0xdd, 0xf7, 0x7f, 0xdd, 0xf7, 0x7f, 0xdd, 0xf7, 0x7f, 0xdd, 0xf7, 0xbf, 0xed, 0xff,
            0xdf, 0xf7, 0xf6, 0x7c, 0xf9, 0xb1, 0xe6, 0xcb, 0x18, 0xa4, 0xb3, 0x09, 0xfc, 0xff, 0xfb, 0x6f,
            0xfe, 0xdf, 0xfb, 0xbf, 0xf7, 0x7e, 0xef, 0xfd, 0xb7, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0xb6, 0xff,
            0x6d, 0xff, 0xdb, 0x7f, 0xf6, 0xdf, 0xf9, 0x21, 0x8e, 0xfb, 0x00, 0x7e, 0xc0, 0xff, 0xfe, 0xff,
            0xf7, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x7f, 0x7f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
            0x3f, 0x7f, 0x7f, 0x3f, 0x3f, 0x7f, 0x37, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc0,
            0x6e, 0x3b, 0x09, 0xe0, 0x6f, 0x1a, 0x92, 0x64, 0x6d, 0x99, 0xf2, 0x7f, 0xef, 0xfd, 0xb7, 0xff,
            0x7b, 0xde, 0xf7, 0xbf, 0xfb, 0x7e, 0xef, 0xbf, 0xff, 0xfb, 0xef, 0xbe, 0xfb, 0x6f, 0xfe, 0xdb,
            0xff, 0xff, 0xfe, 0xf7, 0xbf, 0xfb, 0xff, 0xbf, 0xef, 0xfd, 0xdf, 0xf7, 0x7d, 0xff, 0xee, 0x7f,
            0xf7, 0xbd, 0xff, 0xef, 0xfb, 0xbf, 0xfd, 0x77, 0xfe, 0xa0, 0xf9, 0xfe, 0xf0, 0xef, 0xbf, 0xf7,
            0x7f, 0xfb, 0xde, 0xff, 0xbb, 0xff, 0xf7, 0xbe, 0xfb, 0xdf, 0xff, 0xfd, 0xb7, 0xfe, 0xef, 0x7f,
            0xfb, 0xbf, 0xed, 0xff, 0xf7, 0xbe, 0xfb, 0xdf, 0xf0, 0x06, 0x98, 0xe7, 0x3c, 0x03, 0xcf, 0x2f,
            0x1f, 0x9f, 0x7f, 0x7f, 0x7e, 0xf8, 0xf1, 0xe6, 0xf8, 0xc9, 0xca, 0xfa, 0xc8, 0xda, 0xf2, 0xcc,
            0xd9, 0xf2, 0xe0, 0xed, 0xf1, 0xfa, 0xfc, 0x7f, 0x7f, 0x3f, 0xbf, 0x9f, 0x0f, 0xe3, 0x34, 0x8d,
            0xe3, 0x18, 0x17, 0x85, 0xa0, 0x38, 0xcf, 0x13, 0xf8, 0xef, 0xdd, 0x7f, 0xff, 0xf7, 0xfd, 0xef,
            0xbb, 0xff, 0x7f, 0xf7, 0xfd, 0xef, 0xbf, 0xfb, 0xee, 0xff, 0xff, 0xbb, 0xef, 0x7f, 0xfb, 0xee,
            0xff, 0xff, 0xde, 0xf7, 0xff, 0xef, 0xbd, 0xff, 0xdb, 0xff, 0xfe, 0x77, 0x7f, 0xf7, 0xfd, 0x7f,
            0xf7, 0xff, 0xdb, 0x7e, 0xff, 0xef, 0xfb, 0xff, 0xb7, 0xff, 0xc8, 0xff, 0xff, 0xff, 0xfc, 0x27,
            0xff, 0xff, 0xff, 0xed, 0xbf, 0xfe, 0xf7, 0x7f, 0xfb, 0xdf, 0xfe, 0xf7, 0xdf, 0xff, 0xfd, 0x6f,
            0xff, 0xbf, 0xfb, 0xff, 0xde, 0xff, 0xf7, 0xfd, 0xbf, 0x00, 0x77, 0x6c, 0x89, 0x11, 0x04, 0xa2,
            0x08, 0x69, 0x46, 0x90, 0x02, 0x64, 0x94, 0x24, 0x09, 0x91, 0x85, 0x21, 0x09, 0xff, 0xf7, 0xdd,
            0x3d, 0x37, 0x1d, 0x1d, 0x06, 0xc6, 0x07, 0x10, 0x20, 0x83, 0x84, 0x30, 0x66, 0x19, 0x92, 0x06,
            0x40, 0x31, 0x0c, 0xc0, 0x14, 0xb7, 0x09, 0xfa, 0xff, 0xdf, 0xfb, 0xbf, 0xfd, 0xf7, 0xef, 0xef,
            0xff, 0xdf, 0xf7, 0xff, 0x6e, 0xff, 0xff, 0xde, 0xf7, 0xff, 0x7e, 0xdb, 0xff, 0xb7, 0xff, 0xee,
            0xff, 0xff, 0x7f, 0xf6, 0xdf, 0xfd, 0xff, 0xff, 0xef, 0xbb, 0xfe, 0x7f, 0xf7, 0xdf, 0xff, 0xf7,
            0xdd, 0xff, 0xff, 0xbf, 0xed, 0xff, 0xfe, 0xef, 0x3f, 0xde, 0xee, 0xc9, 0xff, 0xff, 0xdf, 0xff,
            0xc9, 0xff, 0x9e, 0xdf, 0xdf, 0xb7, 0xfd, 0xff, 0xef, 0xff, 0xfb, 0xef, 0xfd, 0xbf, 0xf7, 0xff,
            0xbb, 0xef, 0xff, 0xfd, 0xff, 0xef, 0x7e, 0xff, 0xb1, 0x06, 0x7b, 0xc9, 0x00, 0x42, 0x98, 0x31,
            0x46, 0x44, 0x38, 0x89, 0xc4, 0x30, 0x00, 0x42, 0x10, 0x84, 0x20, 0x08, 0x81, 0x03, 0x10, 0x80,
            0x24, 0x00, 0x88, 0x21, 0x04, 0xc0, 0x08, 0xa1, 0x34, 0x4c, 0x03, 0x90, 0x46, 0x00, 0x30, 0xd1,
            0x04, 0x69, 0x88, 0x30, 0x22, 0xcb, 0x04, 0x3f, 0xfb, 0xff, 0xfd, 0x6f, 0xfe, 0xf7, 0xbf, 0xfe,
            0xdb, 0xff, 0xee, 0x7f, 0xf7, 0xbf, 0xfd, 0xef, 0x7e, 0xf7, 0xff, 0xdb, 0xff, 0xb7, 0xfe, 0x7b,
            0xff, 0xff, 0xff, 0xbb, 0xef, 0xff, 0xf6, 0xff, 0xbf, 0xef, 0xff, 0xdf, 0xfd, 0x7f, 0xfe, 0xbf,
            0xef, 0xfe, 0xff, 0xdf, 0xff, 0xfe, 0xff, 0xe4, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
            0xff, 0xff, 0xfe, 0xfb, 0x37, 0xfd, 0xfe, 0xff, 0xff, 0x6f, 0xff, 0xf6, 0xff, 0xbf, 0xfb, 0xdf,
            0xff, 0xff, 0x77, 0x7f, 0x9d, 0x9f, 0x27, 0x21, 0xcc, 0x18, 0x63, 0x84, 0x80, 0x2a, 0x29, 0x44,
            0x59, 0x43, 0x94, 0x34, 0x42, 0x49, 0x2c, 0x92, 0x92, 0x64, 0x0c, 0x80, 0xb8, 0x22, 0x86, 0x34,
            0x48, 0x23, 0x34, 0x44, 0xc9, 0x18, 0x46, 0x09, 0x80, 0x72, 0x08, 0x61, 0x80, 0x9b, 0x12, 0x64,
            0x8d, 0x90, 0x23, 0xa8, 0x26, 0x44, 0x59, 0x89, 0x24, 0xd3, 0x1f, 0xff, 0xfd, 0xef, 0xff, 0x7d,
            0xef, 0xfe, 0xf7, 0xbf, 0xfb, 0xdf, 0x7d, 0xff, 0xf7, 0xbf, 0xfe, 0xdb, 0x7f, 0xfd, 0xff, 0xcf,
            0xff, 0xff, 0xfb, 0xff, 0x7f, 0xff, 0xb6, 0xff, 0xff, 0xff, 0xfd, 0xb7, 0xff, 0xfb, 0xbf, 0xff,
            0xef, 0xfb, 0x7e, 0xdf, 0xff, 0xf6, 0xff, 0xdf, 0xff, 0xed, 0xfb, 0xff, 0xef, 0x2f, 0xef, 0xef,
            0xf7, 0xf7, 0x9f, 0xfb, 0xfc, 0xff, 0xf7, 0xdf, 0xbb, 0x7f, 0xff, 0xef, 0xfe, 0xf7, 0x1f, 0x07,
            0xd1, 0x19, 0x22, 0x66, 0x44, 0x98, 0x8b, 0x21, 0x64, 0x1a, 0x42, 0xd4, 0x14, 0x23, 0xa8, 0x4d,
            0x91, 0x92, 0x64, 0x25, 0x99, 0x44, 0x23, 0x88, 0x50, 0x96, 0xa3, 0x18, 0x44, 0x65, 0x99, 0x22,
            0x8a, 0x69, 0x25, 0x86, 0xd8, 0x1d, 0xb7, 0x9a, 0x9e, 0x30, 0x8b, 0xe2, 0xcc, 0xd9, 0xe1, 0xfc,
            0xee, 0xf8, 0xfe, 0xe1, 0xc9, 0x06, 0x98, 0x69, 0x22, 0x92, 0x4c, 0x23, 0xa7, 0x1f, 0x7d, 0xff,
            0xff, 0xbf, 0xef, 0xfb, 0xbe, 0xef, 0x7f, 0xfb, 0xfe, 0x77, 0xff, 0xbf, 0xef, 0xfd, 0xf7, 0xff,

        },
        {
            // leekspin: frame 1
            0xff, 0xbf, 0xfb, 0xcf, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xff, 0xdf, 
            0x77, 0xff, 0xdb, 0xff, 0xb7, 0xff, 0xfb, 0x6f, 0xff, 0xff, 0xdd, 0xf7, 0xff, 0xff, 0xff, 0xbb, 
            0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0x6f, 0xff, 0xbb, 0xef, 
            0xff, 0xbb, 0xef, 0x7f, 0xdb, 0xff, 0x27, 0xd0, 0x5f, 0x60, 0x8d, 0x37, 0xe0, 0x8d, 0x31, 0xd8, 
            0xc7, 0x1d, 0xf0, 0xff, 0xff, 0xf0, 0xcf, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf9, 0xc1, 
            0xff, 0xfe, 0xf9, 0xe7, 0xcc, 0x91, 0xf7, 0xfc, 0xe3, 0x99, 0x2e, 0xe2, 0xfc, 0x03, 0xfc, 0x7c, 
            0x03, 0x3b, 0xec, 0x85, 0x33, 0x76, 0xcd, 0xa8, 0x23, 0x5b, 0xee, 0x20, 0x9f, 0xff, 0x7b, 0xef, 
            0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0xff, 0xb7, 
            0xff, 0xff, 0x76, 0xdf, 0xfd, 0x77, 0xde, 0xfb, 0xbf, 0xf6, 0xdf, 0xfd, 0xb7, 0xff, 0x6d, 0xff, 
            0xfe, 0xfb, 0xdf, 0xf6, 0xbf, 0xed, 0xff, 0xef, 0xbf, 0xf6, 0xff, 0xef, 0xfb, 0xbf, 0xee, 0xfb, 
            0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0x7b, 0xdf, 0xfd, 0xb7, 0xfe, 
            0xef, 0xbd, 0xf7, 0x7f, 0xed, 0xff, 0x00, 0x6e, 0xdb, 0x91, 0x24, 0xee, 0x09, 0xff, 0x5f, 0x3f, 
            0xa7, 0x9f, 0xcb, 0xcb, 0xef, 0xcb, 0x9f, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
            0xff, 0x8f, 0xd7, 0xdf, 0xcb, 0xcf, 0xd7, 0xdf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0xf0, 
            0x07, 0xb3, 0xec, 0x08, 0x33, 0xf7, 0x8c, 0x66, 0x11, 0xdb, 0x2e, 0xa0, 0xff, 0xdf, 0xf7, 0xbd, 
            0xef, 0xfe, 0xbb, 0xef, 0x7e, 0xdb, 0xff, 0xb6, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0xb6, 0xff, 0x6d, 
            0xff, 0xff, 0xb7, 0xfd, 0xef, 0xbb, 0xff, 0x6e, 0xfb, 0xdf, 0x76, 0xff, 0xdd, 0x77, 0xff, 0xef, 
            0xbf, 0xfb, 0xf6, 0x7f, 0xef, 0xff, 0x7f, 0xed, 0xfd, 0xf7, 0xbf, 0xff, 0xde, 0xf7, 0xfd, 0xbf, 
            0xf7, 0xde, 0xfb, 0xbf, 0xee, 0xfb, 0xdf, 0x76, 0xff, 0xed, 0xbf, 0xfb, 0x6f, 0xfe, 0xdb, 0xff, 
            0xb6, 0xff, 0xed, 0xbf, 0xfb, 0x6f, 0xfc, 0x83, 0x32, 0xde, 0x00, 0xbf, 0xc0, 0xff, 0xfe, 0xff, 
            0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
            0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc0, 
            0xde, 0x33, 0x0c, 0xe0, 0xb7, 0x1c, 0x85, 0x70, 0x6f, 0x8d, 0xf0, 0x7f, 0xdf, 0xf7, 0xfe, 0xbb, 
            0xef, 0x7f, 0xd9, 0xff, 0xbf, 0xf7, 0xff, 0x6f, 0xff, 0xfb, 0xff, 0xb6, 0xff, 0x6d, 0xff, 0xdb, 
            0xff, 0xff, 0xff, 0xed, 0xbf, 0xfb, 0xff, 0xdf, 0xf7, 0xfd, 0x7f, 0xef, 0xbb, 0xff, 0xdd, 0xff, 
            0x77, 0xfe, 0xef, 0xbb, 0xff, 0x7d, 0xef, 0xff, 0xb6, 0xff, 0xdd, 0xff, 0x7b, 0xde, 0xff, 0xed, 
            0x7f, 0xfb, 0xde, 0xff, 0xb7, 0xfd, 0xff, 0xdb, 0x7f, 0xfe, 0xbb, 0xef, 0x7f, 0xdb, 0xfe, 0xef, 
            0x7b, 0xfe, 0xef, 0x7d, 0xf7, 0xbf, 0xed, 0x7f, 0xf8, 0x02, 0xc6, 0xbd, 0x34, 0x47, 0x47, 0x9f, 
            0x1f, 0x3f, 0x3f, 0x7f, 0x7e, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff, 
            0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x3f, 0x7f, 0x9f, 0x9f, 0x0d, 0xe3, 0x3a, 0x8c, 
            0x63, 0x58, 0x17, 0x84, 0x21, 0xb8, 0xcf, 0x63, 0xd8, 0xff, 0xef, 0xbb, 0xff, 0xff, 0xfd, 0xf7, 
            0xdd, 0xff, 0xbf, 0x7b, 0xff, 0xf6, 0xdf, 0xff, 0xb7, 0xfd, 0xff, 0xef, 0x7d, 0xdf, 0xfb, 0xee, 
            0xff, 0xff, 0xbe, 0xef, 0xfb, 0x7f, 0xef, 0xbe, 0xfb, 0xff, 0x77, 0xff, 0xef, 0x7d, 0xff, 0xfb, 
            0xff, 0xed, 0xff, 0xdf, 0x7d, 0xef, 0xff, 0xf6, 0x7f, 0xdf, 0xfd, 0xb7, 0xff, 0xfb, 0xdf, 0xfd, 
            0xff, 0xb7, 0xff, 0xed, 0x7f, 0xfe, 0xb7, 0xff, 0xfb, 0xdf, 0xff, 0xf7, 0xff, 0xef, 0xff, 0x7d, 
            0xef, 0xff, 0xb7, 0xff, 0xfd, 0xff, 0xdf, 0x77, 0xff, 0x80, 0x36, 0xed, 0x09, 0x12, 0x44, 0x21, 
            0x0c, 0x51, 0x51, 0x86, 0x00, 0x58, 0x46, 0x30, 0x24, 0x85, 0x09, 0x21, 0x85, 0xff, 0x7b, 0xed, 
            0x3d, 0x1d, 0x1d, 0x47, 0x0e, 0x8e, 0x23, 0x00, 0x22, 0x02, 0xc4, 0xb0, 0x26, 0x19, 0x4c, 0x03, 
            0xc0, 0x18, 0x06, 0x60, 0x89, 0xbd, 0x02, 0xfa, 0xff, 0xff, 0xb6, 0xff, 0xfb, 0xbe, 0xf7, 0xf7, 
            0xdf, 0x7f, 0xf7, 0xff, 0x6f, 0xfe, 0xff, 0xdf, 0xfb, 0x6f, 0xfe, 0xdf, 0x7b, 0xff, 0xf7, 0xde, 
            0x23, 0xcf, 0x9f, 0x37, 0x7d, 0xff, 0xff, 0xf7, 0xff, 0xfb, 0x6f, 0xff, 0xdb, 0xff, 0xbf, 0xfe, 
            0xdb, 0xef, 0xff, 0xff, 0xb7, 0xfd, 0x7f, 0xff, 0xef, 0xfb, 0x7f, 0xf7, 0xbd, 0xff, 0xde, 0xdf, 
            0xfb, 0xdf, 0xde, 0xd7, 0xbf, 0xef, 0xfb, 0xf7, 0xfe, 0xfb, 0xfb, 0xfd, 0x7c, 0x7f, 0xfd, 0xfe, 
            0x7d, 0xfd, 0x9e, 0x62, 0x6f, 0xff, 0xff, 0x7f, 0xd2, 0x08, 0xef, 0x31, 0x00, 0x42, 0x48, 0x39, 
            0x86, 0x60, 0x0c, 0xd9, 0x90, 0x20, 0x02, 0x10, 0x44, 0x08, 0x02, 0x10, 0x40, 0x03, 0x11, 0x80, 
            0x20, 0x24, 0x81, 0x08, 0x42, 0x90, 0x04, 0xc1, 0x78, 0x06, 0x24, 0x09, 0x42, 0x40, 0x98, 0x22, 
            0x30, 0xc9, 0x88, 0x32, 0x44, 0x4d, 0x80, 0x3f, 0xff, 0xfe, 0xf7, 0x7f, 0xed, 0xbf, 0xfe, 0xf7, 
            0xbf, 0xfb, 0xdf, 0xfd, 0xef, 0x7f, 0xfb, 0xde, 0xff, 0xef, 0xfb, 0xbf, 0xff, 0x6d, 0xff, 0xf6, 
            0x92, 0x24, 0x65, 0x99, 0xc6, 0x30, 0x8b, 0x67, 0x37, 0x87, 0x6f, 0xff, 0xf5, 0x77, 0x7f, 0xfe, 
            0xff, 0xef, 0xfe, 0x7f, 0xf7, 0xed, 0x0f, 0xfe, 0xfe, 0xfb, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 
            0xff, 0xff, 0xff, 0xff, 0x7f, 0xb6, 0xec, 0xfe, 0xff, 0x7e, 0xef, 0xff, 0x7f, 0xf7, 0xff, 0xbf, 
            0xef, 0xff, 0xf7, 0x7f, 0x1f, 0x9f, 0x63, 0x03, 0xdc, 0x90, 0x23, 0x8a, 0x20, 0x05, 0xc9, 0x5a, 
            0x11, 0xa4, 0x8b, 0x30, 0x24, 0x4b, 0x48, 0x26, 0x34, 0xc1, 0x8c, 0x22, 0x98, 0x91, 0x66, 0x08, 
            0x32, 0xc4, 0x99, 0x12, 0x62, 0xcc, 0x00, 0x33, 0x04, 0xc0, 0x38, 0x83, 0x40, 0x96, 0x19, 0x61, 
            0x86, 0x18, 0x60, 0x93, 0x4c, 0x24, 0x93, 0x48, 0x6c, 0x83, 0x3f, 0xff, 0xfb, 0xff, 0xdd, 0xff, 
            0xf7, 0xfd, 0xff, 0xde, 0xf7, 0x7f, 0xfb, 0xbf, 0xee, 0xff, 0xbd, 0xf7, 0x7f, 0xfb, 0xff, 0xde, 
            0xfe, 0xff, 0xde, 0xfe, 0xfe, 0xfe, 0x6f, 0xfe, 0xff, 0xff, 0xff, 0xb7, 0xff, 0xdf, 0x7f, 0xff, 
            0xd7, 0xfd, 0xef, 0xff, 0x7d, 0xff, 0xdf, 0xff, 0xf5, 0x7f, 0xf7, 0xff, 0xef, 0xef, 0xe7, 0x7f, 
            0xfb, 0xfb, 0xfe, 0xfd, 0xff, 0xfb, 0xef, 0xfd, 0xdf, 0x7f, 0xff, 0xfb, 0xdf, 0xff, 0x0b, 0x07, 
            0x35, 0xc9, 0x48, 0x92, 0x93, 0x6c, 0x08, 0x93, 0xc4, 0x30, 0x46, 0x99, 0xa1, 0x26, 0x48, 0x8c, 
            0x33, 0xc4, 0x28, 0x0b, 0xd1, 0x34, 0x01, 0xc3, 0x18, 0x64, 0x86, 0x30, 0x4d, 0x90, 0xa6, 0x29, 
            0x49, 0x44, 0xb4, 0x83, 0x5a, 0x9c, 0x37, 0x56, 0x9e, 0x21, 0xcc, 0xd1, 0xd6, 0xe4, 0xc9, 0xfc, 
            0xec, 0xef, 0xf8, 0xe4, 0xc3, 0x19, 0xa4, 0x26, 0xd0, 0x0d, 0x24, 0xd3, 0x47, 0x1f, 0x7e, 0xff, 
            0xff, 0x6f, 0xff, 0xd9, 0xff, 0xbf, 0xe7, 0xff, 0xf9, 0x7f, 0xff, 0xdf, 0xdf, 0xf5, 0xff, 0xfb, 
            0xff, 0xbf, 0xfb, 0xcf, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xff, 0xdf,
            0x77, 0xff, 0xdb, 0xff, 0xb7, 0xff, 0xfb, 0x6f, 0xff, 0xff, 0xdd, 0xf7, 0xff, 0xff, 0xff, 0xbb,
            0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0x6f, 0xff, 0xbb, 0xef,
            0xff, 0xbb, 0xef, 0x7f, 0xdb, 0xff, 0x27, 0xd0, 0x5f, 0x60, 0x8d, 0x37, 0xe0, 0x8d, 0x31, 0xd8,
            0xc7, 0x1d, 0xf0, 0xff, 0xff, 0xf0, 0xcf, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf9, 0xc1,
            0xff, 0xfe, 0xf9, 0xe7, 0xcc, 0x91, 0xf7, 0xfc, 0xe3, 0x99, 0x2e, 0xe2, 0xfc, 0x03, 0xfc, 0x7c,
            0x03, 0x3b, 0xec, 0x85, 0x33, 0x76, 0xcd, 0xa8, 0x23, 0x5b, 0xee, 0x20, 0x9f, 0xff, 0x7b, 0xef,
            0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0xff, 0xb7,
            0xff, 0xff, 0x76, 0xdf, 0xfd, 0x77, 0xde, 0xfb, 0xbf, 0xf6, 0xdf, 0xfd, 0xb7, 0xff, 0x6d, 0xff,
            0xfe, 0xfb, 0xdf, 0xf6, 0xbf, 0xed, 0xff, 0xef, 0xbf, 0xf6, 0xff, 0xef, 0xfb, 0xbf, 0xee, 0xfb,
            0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0x7b, 0xdf, 0xfd, 0xb7, 0xfe,
            0xef, 0xbd, 0xf7, 0x7f, 0xed, 0xff, 0x00, 0x6e, 0xdb, 0x91, 0x24, 0xee, 0x09, 0xff, 0x5f, 0x3f,
            0xa7, 0x9f, 0xcb, 0xcb, 0xef, 0xcb, 0x9f, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
            0xff, 0x8f, 0xd7, 0xdf, 0xcb, 0xcf, 0xd7, 0xdf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0xf0,
            0x07, 0xb3, 0xec, 0x08, 0x33, 0xf7, 0x8c, 0x66, 0x11, 0xdb, 0x2e, 0xa0, 0xff, 0xdf, 0xf7, 0xbd,
            0xef, 0xfe, 0xbb, 0xef, 0x7e, 0xdb, 0xff, 0xb6, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0xb6, 0xff, 0x6d,
            0xff, 0xff, 0xb7, 0xfd, 0xef, 0xbb, 0xff, 0x6e, 0xfb, 0xdf, 0x76, 0xff, 0xdd, 0x77, 0xff, 0xef,
            0xbf, 0xfb, 0xf6, 0x7f, 0xef, 0xff, 0x7f, 0xed, 0xfd, 0xf7, 0xbf, 0xff, 0xde, 0xf7, 0xfd, 0xbf,
            0xf7, 0xde, 0xfb, 0xbf, 0xee, 0xfb, 0xdf, 0x76, 0xff, 0xed, 0xbf, 0xfb, 0x6f, 0xfe, 0xdb, 0xff,
            0xb6, 0xff, 0xed, 0xbf, 0xfb, 0x6f, 0xfc, 0x83, 0x32, 0xde, 0x00, 0xbf, 0xc0, 0xff, 0xfe, 0xff,
            0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
            0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc0,
            0xde, 0x33, 0x0c, 0xe0, 0xb7, 0x1c, 0x85, 0x70, 0x6f, 0x8d, 0xf0, 0x7f, 0xdf, 0xf7, 0xfe, 0xbb,
            0xef, 0x7f, 0xd9, 0xff, 0xbf, 0xf7, 0xff, 0x6f, 0xff, 0xfb, 0xff, 0xb6, 0xff, 0x6d, 0xff, 0xdb,
            0xff, 0xff, 0xff, 0xed, 0xbf, 0xfb, 0xff, 0xdf, 0xf7, 0xfd, 0x7f, 0xef, 0xbb, 0xff, 0xdd, 0xff,
            0x77, 0xfe, 0xef, 0xbb, 0xff, 0x7d, 0xef, 0xff, 0xb6, 0xff, 0xdd, 0xff, 0x7b, 0xde, 0xff, 0xed,
            0x7f, 0xfb, 0xde, 0xff, 0xb7, 0xfd, 0xff, 0xdb, 0x7f, 0xfe, 0xbb, 0xef, 0x7f, 0xdb, 0xfe, 0xef,
            0x7b, 0xfe, 0xef, 0x7d, 0xf7, 0xbf, 0xed, 0x7f, 0xf8, 0x02, 0xc6, 0xbd, 0x34, 0x47, 0x47, 0x9f,
            0x1f, 0x3f, 0x3f, 0x7f, 0x7e, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0xfd, 0xff, 0xfe, 0xff, 0xfd, 0xff,
            0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x3f, 0x7f, 0x9f, 0x9f, 0x0d, 0xe3, 0x3a, 0x8c,
            0x63, 0x58, 0x17, 0x84, 0x21, 0xb8, 0xcf, 0x63, 0xd8, 0xff, 0xef, 0xbb, 0xff, 0xff, 0xfd, 0xf7,
            0xdd, 0xff, 0xbf, 0x7b, 0xff, 0xf6, 0xdf, 0xff, 0xb7, 0xfd, 0xff, 0xef, 0x7d, 0xdf, 0xfb, 0xee,
            0xff, 0xff, 0xbe, 0xef, 0xfb, 0x7f, 0xef, 0xbe, 0xfb, 0xff, 0x77, 0xff, 0xef, 0x7d, 0xff, 0xfb,
            0xff, 0xed, 0xff, 0xdf, 0x7d, 0xef, 0xff, 0xf6, 0x7f, 0xdf, 0xfd, 0xb7, 0xff, 0xfb, 0xdf, 0xfd,
            0xff, 0xb7, 0xff, 0xed, 0x7f, 0xfe, 0xb7, 0xff, 0xfb, 0xdf, 0xff, 0xf7, 0xff, 0xef, 0xff, 0x7d,
            0xef, 0xff, 0xb7, 0xff, 0xfd, 0xff, 0xdf, 0x77, 0xff, 0x80, 0x36, 0xed, 0x09, 0x12, 0x44, 0x21,
            0x0c, 0x51, 0x51, 0x86, 0x00, 0x58, 0x46, 0x30, 0x24, 0x85, 0x09, 0x21, 0x85, 0xff, 0x7b, 0xed,
            0x3d, 0x1d, 0x1d, 0x47, 0x0e, 0x8e, 0x23, 0x00, 0x22, 0x02, 0xc4, 0xb0, 0x26, 0x19, 0x4c, 0x03,
            0xc0, 0x18, 0x06, 0x60, 0x89, 0xbd, 0x02, 0xfa, 0xff, 0xff, 0xb6, 0xff, 0xfb, 0xbe, 0xf7, 0xf7,
            0xdf, 0x7f, 0xf7, 0xff, 0x6f, 0xfe, 0xff, 0xdf, 0xfb, 0x6f, 0xfe, 0xdf, 0x7b, 0xff, 0xf7, 0xde,
            0x23, 0xcf, 0x9f, 0x37, 0x7d, 0xff, 0xff, 0xf7, 0xff, 0xfb, 0x6f, 0xff, 0xdb, 0xff, 0xbf, 0xfe,
            0xdb, 0xef, 0xff, 0xff, 0xb7, 0xfd, 0x7f, 0xff, 0xef, 0xfb, 0x7f, 0xf7, 0xbd, 0xff, 0xde, 0xdf,
            0xfb, 0xdf, 0xde, 0xd7, 0xbf, 0xef, 0xfb, 0xf7, 0xfe, 0xfb, 0xfb, 0xfd, 0x7c, 0x7f, 0xfd, 0xfe,
            0x7d, 0xfd, 0x9e, 0x62, 0x6f, 0xff, 0xff, 0x7f, 0xd2, 0x08, 0xef, 0x31, 0x00, 0x42, 0x48, 0x39,
            0x86, 0x60, 0x0c, 0xd9, 0x90, 0x20, 0x02, 0x10, 0x44, 0x08, 0x02, 0x10, 0x40, 0x03, 0x11, 0x80,
            0x20, 0x24, 0x81, 0x08, 0x42, 0x90, 0x04, 0xc1, 0x78, 0x06, 0x24, 0x09, 0x42, 0x40, 0x98, 0x22,
            0x30, 0xc9, 0x88, 0x32, 0x44, 0x4d, 0x80, 0x3f, 0xff, 0xfe, 0xf7, 0x7f, 0xed, 0xbf, 0xfe, 0xf7,
            0xbf, 0xfb, 0xdf, 0xfd, 0xef, 0x7f, 0xfb, 0xde, 0xff, 0xef, 0xfb, 0xbf, 0xff, 0x6d, 0xff, 0xf6,
            0x92, 0x24, 0x65, 0x99, 0xc6, 0x30, 0x8b, 0x67, 0x37, 0x87, 0x6f, 0xff, 0xf5, 0x77, 0x7f, 0xfe,
            0xff, 0xef, 0xfe, 0x7f, 0xf7, 0xed, 0x0f, 0xfe, 0xfe, 0xfb, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
            0xff, 0xff, 0xff, 0xff, 0x7f, 0xb6, 0xec, 0xfe, 0xff, 0x7e, 0xef, 0xff, 0x7f, 0xf7, 0xff, 0xbf,
            0xef, 0xff, 0xf7, 0x7f, 0x1f, 0x9f, 0x63, 0x03, 0xdc, 0x90, 0x23, 0x8a, 0x20, 0x05, 0xc9, 0x5a,
            0x11, 0xa4, 0x8b, 0x30, 0x24, 0x4b, 0x48, 0x26, 0x34, 0xc1, 0x8c, 0x22, 0x98, 0x91, 0x66, 0x08,
            0x32, 0xc4, 0x99, 0x12, 0x62, 0xcc, 0x00, 0x33, 0x04, 0xc0, 0x38, 0x83, 0x40, 0x96, 0x19, 0x61,
            0x86, 0x18, 0x60, 0x93, 0x4c, 0x24, 0x93, 0x48, 0x6c, 0x83, 0x3f, 0xff, 0xfb, 0xff, 0xdd, 0xff,
            0xf7, 0xfd, 0xff, 0xde, 0xf7, 0x7f, 0xfb, 0xbf, 0xee, 0xff, 0xbd, 0xf7, 0x7f, 0xfb, 0xff, 0xde,
            0xfe, 0xff, 0xde, 0xfe, 0xfe, 0xfe, 0x6f, 0xfe, 0xff, 0xff, 0xff, 0xb7, 0xff, 0xdf, 0x7f, 0xff,
            0xd7, 0xfd, 0xef, 0xff, 0x7d, 0xff, 0xdf, 0xff, 0xf5, 0x7f, 0xf7, 0xff, 0xef, 0xef, 0xe7, 0x7f,
            0xfb, 0xfb, 0xfe, 0xfd, 0xff, 0xfb, 0xef, 0xfd, 0xdf, 0x7f, 0xff, 0xfb, 0xdf, 0xff, 0x0b, 0x07,
            0x35, 0xc9, 0x48, 0x92, 0x93, 0x6c, 0x08, 0x93, 0xc4, 0x30, 0x46, 0x99, 0xa1, 0x26, 0x48, 0x8c,
            0x33, 0xc4, 0x28, 0x0b, 0xd1, 0x34, 0x01, 0xc3, 0x18, 0x64, 0x86, 0x30, 0x4d, 0x90, 0xa6, 0x29,
            0x49, 0x44, 0xb4, 0x83, 0x5a, 0x9c, 0x37, 0x56, 0x9e, 0x21, 0xcc, 0xd1, 0xd6, 0xe4, 0xc9, 0xfc,
            0xec, 0xef, 0xf8, 0xe4, 0xc3, 0x19, 0xa4, 0x26, 0xd0, 0x0d, 0x24, 0xd3, 0x47, 0x1f, 0x7e, 0xff,
            0xff, 0x6f, 0xff, 0xd9, 0xff, 0xbf, 0xe7, 0xff, 0xf9, 0x7f, 0xff, 0xdf, 0xdf, 0xf5, 0xff, 0xfb,

        },
        {
            // leekspin: frame 2
            0xff, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xff, 0xef, 
            0xbf, 0xfb, 0xdf, 0xf7, 0xbf, 0xfb, 0x7f, 0x7f, 0xdb, 0xff, 0xbf, 0xfb, 0xef, 0xff, 0x7f, 0xdf, 
            0xff, 0xf3, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 
            0xfb, 0xbf, 0xef, 0x7b, 0xdf, 0xf7, 0x2f, 0x60, 0xdf, 0x80, 0x2d, 0x57, 0xd0, 0x93, 0x24, 0xfc, 
            0xc3, 0x1b, 0xf4, 0xf7, 0xff, 0xf0, 0xcf, 0xb0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf9, 0xc1, 
            0xff, 0xfe, 0xf9, 0xe7, 0xcc, 0x91, 0xf7, 0xfc, 0xe3, 0x99, 0x2e, 0xe2, 0xfc, 0x03, 0xec, 0x7c, 
            0x93, 0x2b, 0x6c, 0x95, 0x53, 0xce, 0x39, 0xc4, 0x33, 0x6b, 0xce, 0x90, 0xbf, 0xef, 0xfb, 0xbf, 
            0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xed, 
            0xff, 0xff, 0xee, 0xbb, 0xff, 0x6e, 0xfb, 0xdf, 0x76, 0xff, 0xdd, 0xf7, 0xbf, 0xed, 0xff, 0xff, 
            0xee, 0xff, 0x75, 0xdf, 0xff, 0xf6, 0xdf, 0xff, 0xb7, 0xff, 0xfb, 0xef, 0xfd, 0xb7, 0xff, 0xdb, 
            0xfe, 0x6f, 0xfb, 0xbe, 0xef, 0xfb, 0xbe, 0xef, 0xfb, 0xbe, 0xef, 0xfb, 0xbe, 0xef, 0x7b, 0xde, 
            0xf7, 0x7d, 0xdf, 0xf7, 0xbd, 0xff, 0x00, 0xf7, 0x9c, 0x21, 0x27, 0xd8, 0x46, 0xff, 0x5f, 0x3f, 
            0xa7, 0x9f, 0xcb, 0xcb, 0xef, 0xcb, 0xdf, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
            0xef, 0x9f, 0xd7, 0xcf, 0xcb, 0xdf, 0xd7, 0xcf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0xf0, 
            0x07, 0x73, 0xdc, 0x01, 0x6e, 0x99, 0x73, 0x4e, 0x88, 0xf3, 0x1e, 0xc0, 0xff, 0x7f, 0xde, 0xf3, 
            0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0x7b, 0xdf, 0xf6, 0xbf, 0xed, 
            0xff, 0xff, 0x76, 0xdf, 0xfd, 0xb7, 0xff, 0xed, 0xbf, 0xfb, 0x6e, 0xff, 0xbd, 0xef, 0xfe, 0xf7, 
            0xbf, 0xfd, 0xf7, 0xdf, 0x7f, 0xff, 0xb7, 0xfc, 0xef, 0xff, 0xf7, 0xbf, 0xfa, 0xdf, 0xfd, 0xef, 
            0x7b, 0xff, 0xed, 0x7f, 0xde, 0xfb, 0xef, 0xbe, 0xfb, 0xdf, 0xf6, 0x7f, 0xdd, 0xf7, 0xbf, 0xed, 
            0xff, 0xbb, 0xef, 0x7e, 0xdb, 0xff, 0x76, 0xc0, 0x1d, 0x77, 0x00, 0x7f, 0xc0, 0xff, 0xfe, 0xff, 
            0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
            0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc0, 
            0xbb, 0x37, 0x04, 0xf0, 0xce, 0x39, 0x07, 0x70, 0xdd, 0x86, 0xf2, 0x7f, 0xdf, 0xf7, 0xfd, 0xbf, 
            0xef, 0x79, 0xff, 0xef, 0xfd, 0xdf, 0x7b, 0xef, 0xbf, 0xfd, 0xff, 0xfb, 0xdf, 0xf6, 0xbf, 0xed, 
            0xff, 0xff, 0xef, 0x7d, 0xff, 0xfb, 0xdf, 0xfd, 0xff, 0x6f, 0xfb, 0xbf, 0xfd, 0xef, 0x7e, 0xf7, 
            0xbf, 0xee, 0xfb, 0x7f, 0xdf, 0xfb, 0xbf, 0xfd, 0xef, 0xfe, 0xdf, 0xfb, 0xef, 0xfe, 0xbf, 0xed, 
            0xff, 0xf7, 0xbd, 0xff, 0x6f, 0xfb, 0xfe, 0xdf, 0xf7, 0xfd, 0xbf, 0xfb, 0x6f, 0xfe, 0xf7, 0xff, 
            0xdd, 0x7f, 0xfb, 0xef, 0xfd, 0xdf, 0x7b, 0xff, 0xe4, 0x09, 0xc9, 0xb6, 0x36, 0x4b, 0x47, 0x9f, 
            0x1f, 0x3f, 0x3f, 0x7f, 0x7f, 0xff, 0xfe, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xfd, 0xff, 0xfd, 0xff, 
            0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x3f, 0x3f, 0x9f, 0xdf, 0x0d, 0xa3, 0x3a, 0x4c, 
            0xe3, 0x18, 0x17, 0x06, 0x60, 0xd8, 0xcf, 0x33, 0xd8, 0xfe, 0xef, 0x7b, 0xdf, 0xff, 0x7f, 0xfd, 
            0xfd, 0xf7, 0xdf, 0xff, 0xbe, 0xfb, 0xff, 0xb7, 0xdf, 0xfd, 0xff, 0x6e, 0xff, 0xdd, 0xf7, 0xbe, 
            0xff, 0xff, 0xdd, 0xff, 0xef, 0x7b, 0xfe, 0xbf, 0xef, 0x7b, 0xff, 0xbd, 0x37, 0xff, 0xfb, 0x7f, 
            0xf7, 0xfd, 0xef, 0xff, 0xbb, 0xff, 0xf7, 0xfe, 0xdb, 0xff, 0xee, 0xff, 0xfb, 0xbe, 0xff, 0xef, 
            0xfb, 0x7e, 0xdf, 0xf7, 0xff, 0xbd, 0xff, 0xee, 0xff, 0xdb, 0xff, 0xf7, 0x7f, 0xff, 0xf7, 0xbe, 
            0xff, 0x77, 0xff, 0xbb, 0xfe, 0xff, 0xff, 0xb7, 0xff, 0x00, 0xb6, 0xed, 0x09, 0x02, 0x64, 0x81, 
            0x0c, 0x31, 0xc5, 0x48, 0x02, 0x24, 0x98, 0x62, 0x24, 0x05, 0x89, 0x21, 0x05, 0xff, 0xfb, 0x6d, 
            0x3d, 0x9d, 0x17, 0x1c, 0x4d, 0x07, 0x26, 0x80, 0x11, 0x41, 0x84, 0xb0, 0x66, 0x19, 0x0b, 0x82, 
            0x10, 0x64, 0x09, 0x90, 0xc6, 0x3b, 0x08, 0xf6, 0xff, 0xbf, 0xfb, 0xef, 0xff, 0xdd, 0xff, 0xbb, 
            0xff, 0x77, 0xf7, 0xbf, 0xfb, 0xfe, 0xb7, 0xff, 0xdf, 0xfd, 0xef, 0x7f, 0xdd, 0xf7, 0xff, 0x6d, 
            0xff, 0xff, 0x7b, 0xfe, 0xdf, 0xf7, 0xf7, 0x7d, 0xe9, 0xbe, 0xfe, 0xff, 0xff, 0xfd, 0xff, 0xf7, 
            0xfd, 0xcf, 0xff, 0x7f, 0xef, 0xbe, 0xfb, 0xdf, 0xbd, 0xbf, 0xbb, 0xbe, 0xff, 0xbf, 0xef, 0x7d, 
            0x77, 0xff, 0xff, 0xdb, 0xfe, 0xff, 0xef, 0x7b, 0xfe, 0xff, 0xbf, 0xfd, 0xef, 0xff, 0xfb, 0xef, 
            0xff, 0x7b, 0xff, 0xff, 0xfe, 0xbf, 0xef, 0xff, 0xd8, 0x03, 0xbd, 0x64, 0x00, 0x89, 0xa8, 0x22, 
            0x1c, 0xe1, 0x08, 0x56, 0x90, 0x20, 0x04, 0x90, 0x02, 0x20, 0x04, 0x10, 0x41, 0x03, 0x88, 0x20, 
            0x04, 0x40, 0x08, 0x81, 0x30, 0x02, 0x10, 0xc4, 0x30, 0x8e, 0x21, 0x08, 0x22, 0xc1, 0x18, 0xc0, 
            0x31, 0x0c, 0x60, 0x98, 0xc2, 0x23, 0x0c, 0x5f, 0xff, 0xfb, 0xef, 0xfe, 0x77, 0xfd, 0xff, 0xdb, 
            0xff, 0x6f, 0xfb, 0xbf, 0xfd, 0xef, 0xff, 0xdb, 0xfe, 0x7f, 0xf7, 0xdf, 0xfd, 0xef, 0xfb, 0xbf, 
            0xff, 0xff, 0xff, 0xf7, 0xff, 0xdd, 0xff, 0xef, 0xff, 0x7b, 0xff, 0xde, 0xff, 0xff, 0x7b, 0xff, 
            0xf7, 0xff, 0xef, 0xef, 0xde, 0x73, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
            0xff, 0xfe, 0xfe, 0xff, 0x89, 0xbf, 0xff, 0xbf, 0xf7, 0x7f, 0x7d, 0xff, 0xef, 0x7e, 0xff, 0xfb, 
            0xdf, 0xff, 0xef, 0x7d, 0x1f, 0x97, 0xa7, 0x21, 0x1c, 0xd0, 0x23, 0x0a, 0x40, 0x14, 0xa4, 0x93, 
            0x99, 0x24, 0x62, 0x8a, 0x19, 0x51, 0x46, 0xb0, 0x8c, 0x43, 0x18, 0xc4, 0x30, 0x26, 0xc4, 0x18, 
            0xc9, 0x26, 0x98, 0x41, 0x4c, 0xb3, 0x80, 0x0d, 0x02, 0x70, 0x88, 0x23, 0xc4, 0x10, 0x96, 0x64, 
            0x09, 0x93, 0x24, 0x68, 0x44, 0x95, 0x89, 0x6a, 0x10, 0xc7, 0x3f, 0xfb, 0xff, 0xff, 0x6e, 0xfb, 
            0xbf, 0xff, 0xfb, 0xef, 0xff, 0x76, 0xff, 0x9f, 0xfd, 0xdf, 0xff, 0xbb, 0xee, 0xff, 0x3d, 0xff, 
            0xff, 0xff, 0xde, 0xfb, 0xff, 0xff, 0xef, 0xbe, 0xff, 0xff, 0xff, 0x77, 0xfd, 0xff, 0xdf, 0xff, 
            0xfb, 0x7e, 0xdf, 0xf7, 0xff, 0xff, 0xfe, 0xdf, 0xfd, 0xfb, 0xfb, 0xf7, 0xdf, 0xd9, 0xbf, 0xbf, 
            0xd7, 0xf7, 0xfb, 0xfc, 0xff, 0xfb, 0xfb, 0xef, 0xb7, 0x7f, 0xff, 0xf7, 0xff, 0xee, 0x0f, 0x0e, 
            0xae, 0x6f, 0x8c, 0x90, 0x53, 0x8c, 0x28, 0x23, 0x99, 0x48, 0x66, 0x91, 0x19, 0x66, 0x48, 0x92, 
            0x94, 0x65, 0x24, 0x89, 0x69, 0x46, 0x12, 0xc4, 0x88, 0x32, 0x93, 0x4c, 0x48, 0x33, 0x84, 0x32, 
            0xca, 0x0c, 0xb1, 0x22, 0xce, 0x9c, 0x33, 0x96, 0xdf, 0x18, 0xa1, 0xe6, 0xd8, 0xc6, 0xf1, 0xf8, 
            0xee, 0xfd, 0xf9, 0xf2, 0xc2, 0x0c, 0x66, 0x90, 0x93, 0x4c, 0x48, 0x33, 0x87, 0x9f, 0x7f, 0xff, 
            0xff, 0xff, 0xd7, 0x7d, 0xfd, 0xf7, 0xdf, 0xfb, 0xbf, 0xfe, 0x7b, 0xdf, 0xff, 0xf7, 0xf7, 0xfd, 
            0xff, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xff, 0xef,
            0xbf, 0xfb, 0xdf, 0xf7, 0xbf, 0xfb, 0x7f, 0x7f, 0xdb, 0xff, 0xbf, 0xfb, 0xef, 0xff, 0x7f, 0xdf,
            0xff, 0xf3, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef,
            0xfb, 0xbf, 0xef, 0x7b, 0xdf, 0xf7, 0x2f, 0x60, 0xdf, 0x80, 0x2d, 0x57, 0xd0, 0x93, 0x24, 0xfc,
            0xc3, 0x1b, 0xf4, 0xf7, 0xff, 0xf0, 0xcf, 0xb0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf9, 0xc1,
            0xff, 0xfe, 0xf9, 0xe7, 0xcc, 0x91, 0xf7, 0xfc, 0xe3, 0x99, 0x2e, 0xe2, 0xfc, 0x03, 0xec, 0x7c,
            0x93, 0x2b, 0x6c, 0x95, 0x53, 0xce, 0x39, 0xc4, 0x33, 0x6b, 0xce, 0x90, 0xbf, 0xef, 0xfb, 0xbf,
            0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xef, 0xfb, 0xbf, 0xed,
            0xff, 0xff, 0xee, 0xbb, 0xff, 0x6e, 0xfb, 0xdf, 0x76, 0xff, 0xdd, 0xf7, 0xbf, 0xed, 0xff, 0xff,
            0xee, 0xff, 0x75, 0xdf, 0xff, 0xf6, 0xdf, 0xff, 0xb7, 0xff, 0xfb, 0xef, 0xfd, 0xb7, 0xff, 0xdb,
            0xfe, 0x6f, 0xfb, 0xbe, 0xef, 0xfb, 0xbe, 0xef, 0xfb, 0xbe, 0xef, 0xfb, 0xbe, 0xef, 0x7b, 0xde,
            0xf7, 0x7d, 0xdf, 0xf7, 0xbd, 0xff, 0x00, 0xf7, 0x9c, 0x21, 0x27, 0xd8, 0x46, 0xff, 0x5f, 0x3f,
            0xa7, 0x9f, 0xcb, 0xcb, 0xef, 0xcb, 0xdf, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
            0xef, 0x9f, 0xd7, 0xcf, 0xcb, 0xdf, 0xd7, 0xcf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xff, 0xff, 0xf0,
            0x07, 0x73, 0xdc, 0x01, 0x6e, 0x99, 0x73, 0x4e, 0x88, 0xf3, 0x1e, 0xc0, 0xff, 0x7f, 0xde, 0xf3,
            0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0xfb, 0xbf, 0xee, 0x7b, 0xdf, 0xf6, 0xbf, 0xed,
            0xff, 0xff, 0x76, 0xdf, 0xfd, 0xb7, 0xff, 0xed, 0xbf, 0xfb, 0x6e, 0xff, 0xbd, 0xef, 0xfe, 0xf7,
            0xbf, 0xfd, 0xf7, 0xdf, 0x7f, 0xff, 0xb7, 0xfc, 0xef, 0xff, 0xf7, 0xbf, 0xfa, 0xdf, 0xfd, 0xef,
            0x7b, 0xff, 0xed, 0x7f, 0xde, 0xfb, 0xef, 0xbe, 0xfb, 0xdf, 0xf6, 0x7f, 0xdd, 0xf7, 0xbf, 0xed,
            0xff, 0xbb, 0xef, 0x7e, 0xdb, 0xff, 0x76, 0xc0, 0x1d, 0x77, 0x00, 0x7f, 0xc0, 0xff, 0xfe, 0xff,
            0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
            0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc0,
            0xbb, 0x37, 0x04, 0xf0, 0xce, 0x39, 0x07, 0x70, 0xdd, 0x86, 0xf2, 0x7f, 0xdf, 0xf7, 0xfd, 0xbf,
            0xef, 0x79, 0xff, 0xef, 0xfd, 0xdf, 0x7b, 0xef, 0xbf, 0xfd, 0xff, 0xfb, 0xdf, 0xf6, 0xbf, 0xed,
            0xff, 0xff, 0xef, 0x7d, 0xff, 0xfb, 0xdf, 0xfd, 0xff, 0x6f, 0xfb, 0xbf, 0xfd, 0xef, 0x7e, 0xf7,
            0xbf, 0xee, 0xfb, 0x7f, 0xdf, 0xfb, 0xbf, 0xfd, 0xef, 0xfe, 0xdf, 0xfb, 0xef, 0xfe, 0xbf, 0xed,
            0xff, 0xf7, 0xbd, 0xff, 0x6f, 0xfb, 0xfe, 0xdf, 0xf7, 0xfd, 0xbf, 0xfb, 0x6f, 0xfe, 0xf7, 0xff,
            0xdd, 0x7f, 0xfb, 0xef, 0xfd, 0xdf, 0x7b, 0xff, 0xe4, 0x09, 0xc9, 0xb6, 0x36, 0x4b, 0x47, 0x9f,
            0x1f, 0x3f, 0x3f, 0x7f, 0x7f, 0xff, 0xfe, 0xfe, 0xff, 0xfd, 0xff, 0xfe, 0xfd, 0xff, 0xfd, 0xff,
            0xfe, 0xff, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x3f, 0x3f, 0x9f, 0xdf, 0x0d, 0xa3, 0x3a, 0x4c,
            0xe3, 0x18, 0x17, 0x06, 0x60, 0xd8, 0xcf, 0x33, 0xd8, 0xfe, 0xef, 0x7b, 0xdf, 0xff, 0x7f, 0xfd,
            0xfd, 0xf7, 0xdf, 0xff, 0xbe, 0xfb, 0xff, 0xb7, 0xdf, 0xfd, 0xff, 0x6e, 0xff, 0xdd, 0xf7, 0xbe,
            0xff, 0xff, 0xdd, 0xff, 0xef, 0x7b, 0xfe, 0xbf, 0xef, 0x7b, 0xff, 0xbd, 0x37, 0xff, 0xfb, 0x7f,
            0xf7, 0xfd, 0xef, 0xff, 0xbb, 0xff, 0xf7, 0xfe, 0xdb, 0xff, 0xee, 0xff, 0xfb, 0xbe, 0xff, 0xef,
            0xfb, 0x7e, 0xdf, 0xf7, 0xff, 0xbd, 0xff, 0xee, 0xff, 0xdb, 0xff, 0xf7, 0x7f, 0xff, 0xf7, 0xbe,
            0xff, 0x77, 0xff, 0xbb, 0xfe, 0xff, 0xff, 0xb7, 0xff, 0x00, 0xb6, 0xed, 0x09, 0x02, 0x64, 0x81,
            0x0c, 0x31, 0xc5, 0x48, 0x02, 0x24, 0x98, 0x62, 0x24, 0x05, 0x89, 0x21, 0x05, 0xff, 0xfb, 0x6d,
            0x3d, 0x9d, 0x17, 0x1c, 0x4d, 0x07, 0x26, 0x80, 0x11, 0x41, 0x84, 0xb0, 0x66, 0x19, 0x0b, 0x82,
            0x10, 0x64, 0x09, 0x90, 0xc6, 0x3b, 0x08, 0xf6, 0xff, 0xbf, 0xfb, 0xef, 0xff, 0xdd, 0xff, 0xbb,
            0xff, 0x77, 0xf7, 0xbf, 0xfb, 0xfe, 0xb7, 0xff, 0xdf, 0xfd, 0xef, 0x7f, 0xdd, 0xf7, 0xff, 0x6d,
            0xff, 0xff, 0x7b, 0xfe, 0xdf, 0xf7, 0xf7, 0x7d, 0xe9, 0xbe, 0xfe, 0xff, 0xff, 0xfd, 0xff, 0xf7,
            0xfd, 0xcf, 0xff, 0x7f, 0xef, 0xbe, 0xfb, 0xdf, 0xbd, 0xbf, 0xbb, 0xbe, 0xff, 0xbf, 0xef, 0x7d,
            0x77, 0xff, 0xff, 0xdb, 0xfe, 0xff, 0xef, 0x7b, 0xfe, 0xff, 0xbf, 0xfd, 0xef, 0xff, 0xfb, 0xef,
            0xff, 0x7b, 0xff, 0xff, 0xfe, 0xbf, 0xef, 0xff, 0xd8, 0x03, 0xbd, 0x64, 0x00, 0x89, 0xa8, 0x22,
            0x1c, 0xe1, 0x08, 0x56, 0x90, 0x20, 0x04, 0x90, 0x02, 0x20, 0x04, 0x10, 0x41, 0x03, 0x88, 0x20,
            0x04, 0x40, 0x08, 0x81, 0x30, 0x02, 0x10, 0xc4, 0x30, 0x8e, 0x21, 0x08, 0x22, 0xc1, 0x18, 0xc0,
            0x31, 0x0c, 0x60, 0x98, 0xc2, 0x23, 0x0c, 0x5f, 0xff, 0xfb, 0xef, 0xfe, 0x77, 0xfd, 0xff, 0xdb,
            0xff, 0x6f, 0xfb, 0xbf, 0xfd, 0xef, 0xff, 0xdb, 0xfe, 0x7f, 0xf7, 0xdf, 0xfd, 0xef, 0xfb, 0xbf,
            0xff, 0xff, 0xff, 0xf7, 0xff, 0xdd, 0xff, 0xef, 0xff, 0x7b, 0xff, 0xde, 0xff, 0xff, 0x7b, 0xff,
            0xf7, 0xff, 0xef, 0xef, 0xde, 0x73, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
            0xff, 0xfe, 0xfe, 0xff, 0x89, 0xbf, 0xff, 0xbf, 0xf7, 0x7f, 0x7d, 0xff, 0xef, 0x7e, 0xff, 0xfb,
            0xdf, 0xff, 0xef, 0x7d, 0x1f, 0x97, 0xa7, 0x21, 0x1c, 0xd0, 0x23, 0x0a, 0x40, 0x14, 0xa4, 0x93,
            0x99, 0x24, 0x62, 0x8a, 0x19, 0x51, 0x46, 0xb0, 0x8c, 0x43, 0x18, 0xc4, 0x30, 0x26, 0xc4, 0x18,
            0xc9, 0x26, 0x98, 0x41, 0x4c, 0xb3, 0x80, 0x0d, 0x02, 0x70, 0x88, 0x23, 0xc4, 0x10, 0x96, 0x64,
            0x09, 0x93, 0x24, 0x68, 0x44, 0x95, 0x89, 0x6a, 0x10, 0xc7, 0x3f, 0xfb, 0xff, 0xff, 0x6e, 0xfb,
            0xbf, 0xff, 0xfb, 0xef, 0xff, 0x76, 0xff, 0x9f, 0xfd, 0xdf, 0xff, 0xbb, 0xee, 0xff, 0x3d, 0xff,
            0xff, 0xff, 0xde, 0xfb, 0xff, 0xff, 0xef, 0xbe, 0xff, 0xff, 0xff, 0x77, 0xfd, 0xff, 0xdf, 0xff,
            0xfb, 0x7e, 0xdf, 0xf7, 0xff, 0xff, 0xfe, 0xdf, 0xfd, 0xfb, 0xfb, 0xf7, 0xdf, 0xd9, 0xbf, 0xbf,
            0xd7, 0xf7, 0xfb, 0xfc, 0xff, 0xfb, 0xfb, 0xef, 0xb7, 0x7f, 0xff, 0xf7, 0xff, 0xee, 0x0f, 0x0e,
            0xae, 0x6f, 0x8c, 0x90, 0x53, 0x8c, 0x28, 0x23, 0x99, 0x48, 0x66, 0x91, 0x19, 0x66, 0x48, 0x92,
            0x94, 0x65, 0x24, 0x89, 0x69, 0x46, 0x12, 0xc4, 0x88, 0x32, 0x93, 0x4c, 0x48, 0x33, 0x84, 0x32,
            0xca, 0x0c, 0xb1, 0x22, 0xce, 0x9c, 0x33, 0x96, 0xdf, 0x18, 0xa1, 0xe6, 0xd8, 0xc6, 0xf1, 0xf8,
            0xee, 0xfd, 0xf9, 0xf2, 0xc2, 0x0c, 0x66, 0x90, 0x93, 0x4c, 0x48, 0x33, 0x87, 0x9f, 0x7f, 0xff,
            0xff, 0xff, 0xd7, 0x7d, 0xfd, 0xf7, 0xdf, 0xfb, 0xbf, 0xfe, 0x7b, 0xdf, 0xff, 0xf7, 0xf7, 0xfd,
        },
        {
            // leekspin: frame 3
            0xff, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0x7f, 0xff, 0xff, 
            0xbb, 0xef, 0x7f, 0xdb, 0xff, 0xb7, 0xfd, 0x5d, 0x02, 0xb8, 0xc6, 0x12, 0x30, 0xc4, 0x32, 0x4a, 
            0x0c, 0xf1, 0xfd, 0xbf, 0xfb, 0x6d, 0xfb, 0xbb, 0x77, 0x77, 0xbb, 0xef, 0x6f, 0xfb, 0xcf, 0xdf, 
            0xbb, 0x6f, 0x7f, 0xdb, 0xff, 0xf7, 0x0f, 0xe0, 0x3f, 0xc0, 0x0d, 0xb7, 0xe0, 0x0d, 0xa9, 0xf8, 
            0xc7, 0x1d, 0xf0, 0xff, 0xff, 0xf0, 0xc7, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf1, 0xc6, 
            0xff, 0xf7, 0xf8, 0xf3, 0xcf, 0x90, 0xf7, 0xfc, 0xe3, 0x99, 0x2e, 0xe2, 0xfc, 0x03, 0xfc, 0x78, 
            0x13, 0x27, 0xec, 0x19, 0x53, 0xe6, 0x2d, 0xd8, 0x83, 0x3b, 0xee, 0x00, 0x7f, 0xff, 0xbb, 0xef, 
            0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0x7f, 0xdb, 0xff, 0xb7, 
            0xff, 0xfb, 0x6f, 0xfe, 0xdb, 0x7f, 0xf6, 0xdf, 0xfd, 0xb7, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0xf7, 
            0xff, 0xfd, 0x9f, 0xfb, 0xf7, 0xff, 0xbb, 0x00, 0x66, 0x99, 0x4c, 0x63, 0x99, 0x8c, 0x63, 0x7c, 
            0x1f, 0xce, 0x26, 0x35, 0xc9, 0x0b, 0x30, 0x4c, 0x83, 0xb0, 0xfc, 0x6f, 0xef, 0xdb, 0xbf, 0x6e, 
            0x7b, 0xdf, 0xf7, 0xbe, 0xee, 0xfd, 0x00, 0xd9, 0x7b, 0x02, 0x86, 0x7c, 0x09, 0xff, 0x5f, 0x3f, 
            0xa7, 0x9f, 0xcb, 0xcb, 0xef, 0xcb, 0xdb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
            0xef, 0x9f, 0xd7, 0xcf, 0xcb, 0xdf, 0xd7, 0xcf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xff, 0xfb, 0x72, 
            0x87, 0xb9, 0x6c, 0x03, 0x3b, 0xcc, 0xd3, 0x36, 0x88, 0xdb, 0x75, 0x84, 0xff, 0xfb, 0xef, 0xbe, 
            0xfb, 0xef, 0xfe, 0x7b, 0xef, 0xfe, 0xdb, 0xff, 0xb6, 0xff, 0xed, 0xbf, 0xfb, 0x6f, 0xfe, 0xdb, 
            0xff, 0xff, 0x77, 0xfd, 0xef, 0x7b, 0xff, 0xb6, 0xff, 0xed, 0x7f, 0xfb, 0xdf, 0xfe, 0xb7, 0xff, 
            0xee, 0xfe, 0xb7, 0xff, 0x7f, 0xef, 0xf9, 0x02, 0x66, 0x99, 0x92, 0x66, 0x49, 0x98, 0xa6, 0xb1, 
            0xcd, 0xe4, 0xf3, 0xf9, 0xbc, 0xef, 0xfd, 0xde, 0x77, 0xff, 0xed, 0xbb, 0xfb, 0xf6, 0x6f, 0x1f, 
            0x37, 0x4e, 0xce, 0x31, 0x93, 0x63, 0x4c, 0x84, 0x32, 0x59, 0x45, 0x22, 0xaa, 0xc8, 0xfe, 0xff, 
            0xf7, 0xf7, 0xdf, 0x7f, 0x3f, 0x3f, 0x7f, 0x7f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 
            0x7f, 0x3f, 0x7f, 0x7f, 0x3f, 0x3f, 0x77, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc4, 
            0xdd, 0x33, 0x82, 0xc8, 0x3f, 0x32, 0x82, 0xec, 0x33, 0x86, 0xf8, 0x7f, 0xf7, 0xdd, 0xff, 0xbb, 
            0xee, 0x7f, 0xdd, 0xf7, 0xff, 0xee, 0xbb, 0xff, 0xf7, 0xbf, 0xfe, 0xff, 0xed, 0xbf, 0xfb, 0x6e, 
            0xff, 0xff, 0xbf, 0xed, 0xff, 0xff, 0xb7, 0xff, 0xfd, 0xdf, 0xf7, 0xff, 0x6e, 0xfb, 0xff, 0xb7, 
            0xfe, 0xef, 0x7d, 0xf7, 0xbf, 0xfd, 0xdf, 0xf0, 0x06, 0x99, 0xe4, 0x26, 0xff, 0xfd, 0xdf, 0xff, 
            0xf6, 0xbf, 0xff, 0xee, 0xfb, 0x7f, 0xdd, 0xff, 0x37, 0x9f, 0xce, 0x27, 0x31, 0xcc, 0x62, 0x9b, 
            0x89, 0x26, 0xb2, 0x98, 0x71, 0x46, 0x9e, 0x1d, 0x70, 0x86, 0x89, 0x33, 0x94, 0x87, 0x2f, 0x4f, 
            0x1f, 0xbf, 0x3f, 0x7f, 0x7e, 0xf9, 0xe4, 0x60, 0xdb, 0xd8, 0xc6, 0xf8, 0xc9, 0xda, 0xf2, 0xcc, 
            0xc8, 0xf3, 0xf4, 0xe0, 0xfb, 0xf8, 0xfe, 0x7f, 0x7f, 0x3f, 0x9f, 0x5f, 0x0f, 0xc9, 0x72, 0x0e, 
            0xe1, 0x3c, 0x06, 0x09, 0x61, 0xb4, 0xd7, 0x4c, 0xf1, 0xbf, 0xff, 0xfd, 0xe7, 0xbf, 0xff, 0x7d, 
            0xf7, 0xff, 0xed, 0xff, 0xfe, 0xcf, 0xff, 0xbe, 0xf7, 0xdd, 0xff, 0xef, 0xfe, 0x7b, 0xdf, 0xf7, 
            0xff, 0xff, 0x7b, 0xdf, 0xfe, 0xfb, 0xdf, 0xfd, 0xef, 0xfe, 0xf7, 0xdf, 0xfb, 0xff, 0x76, 0xff, 
            0xef, 0xfd, 0xff, 0xf7, 0xdf, 0x7d, 0xff, 0xff, 0xb0, 0xbf, 0xff, 0xff, 0xf6, 0x9f, 0xff, 0xfb, 
            0xfe, 0xdf, 0xf7, 0xfd, 0x9f, 0xef, 0xf1, 0xf4, 0x66, 0xc9, 0xfc, 0xf3, 0xf9, 0xfc, 0xb6, 0xf8, 
            0xf1, 0xf6, 0xdc, 0xf1, 0xf2, 0xee, 0xf1, 0xf4, 0x64, 0x01, 0xb4, 0x26, 0x49, 0x10, 0x24, 0x81, 
            0x12, 0x94, 0x65, 0x08, 0x02, 0x64, 0x18, 0x42, 0x24, 0x19, 0x01, 0x85, 0x21, 0xbf, 0xff, 0x6d, 
            0x5d, 0x37, 0x1d, 0x1d, 0x86, 0x26, 0x07, 0x10, 0x40, 0x09, 0x21, 0xd2, 0x4c, 0x19, 0x42, 0x13, 
            0x40, 0x4c, 0x11, 0xc0, 0x0e, 0xbb, 0x80, 0xfe, 0xff, 0x6f, 0xfb, 0xbe, 0xf7, 0xdf, 0xfb, 0xff, 
            0xbd, 0xef, 0xfb, 0xff, 0xbd, 0xef, 0xfb, 0xff, 0xdf, 0xfb, 0xef, 0x7e, 0xf7, 0xbf, 0xff, 0x6d, 
            0xff, 0xff, 0xef, 0xfb, 0xbf, 0xfe, 0xef, 0x7b, 0xfe, 0xdf, 0xff, 0xf6, 0xdf, 0x7f, 0xf7, 0xdf, 
            0xfe, 0xfb, 0xdf, 0x77, 0xff, 0xef, 0xfd, 0xff, 0x6f, 0xfc, 0xa7, 0xbf, 0xff, 0xff, 0xd9, 0xdf, 
            0xbe, 0xbf, 0x77, 0x7e, 0xff, 0xdf, 0xfb, 0xfc, 0x7f, 0xdf, 0xff, 0xff, 0xbe, 0xfb, 0xff, 0xfd, 
            0xdf, 0xfe, 0xff, 0x7b, 0xfe, 0xbf, 0xff, 0xef, 0xd9, 0x11, 0xef, 0x28, 0x00, 0x41, 0x4c, 0x31, 
            0xc4, 0x0c, 0x68, 0x93, 0x10, 0x64, 0x01, 0x10, 0x04, 0x41, 0x10, 0x04, 0x00, 0x43, 0x11, 0x00, 
            0x88, 0x22, 0x00, 0x48, 0x82, 0x90, 0x11, 0xc4, 0x30, 0x0d, 0x43, 0x10, 0x24, 0xc1, 0x10, 0xb4, 
            0x81, 0x68, 0x24, 0x90, 0x4a, 0x2b, 0x80, 0x3f, 0xff, 0xdb, 0xff, 0xf7, 0xfd, 0xbf, 0xee, 0xff, 
            0x7b, 0xef, 0xbe, 0xff, 0xed, 0x7f, 0xf6, 0xbf, 0xfb, 0xfe, 0x6f, 0xff, 0xdb, 0xff, 0xfd, 0x6f, 
            0xff, 0xff, 0xfb, 0xfe, 0xef, 0xff, 0xbd, 0xff, 0xf7, 0xff, 0xbd, 0xff, 0xef, 0xff, 0xdf, 0xfe, 
            0xff, 0xbd, 0xff, 0xdf, 0xff, 0xff, 0xf7, 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
            0xff, 0xf9, 0xdf, 0x5f, 0xe6, 0xfd, 0xff, 0xff, 0xf7, 0xbf, 0xfb, 0xff, 0xfd, 0xdf, 0xfe, 0xff, 
            0xf7, 0xbd, 0xff, 0x5f, 0x37, 0x9f, 0x47, 0x61, 0x9c, 0x10, 0x63, 0x06, 0xc0, 0x09, 0x64, 0x93, 
            0x18, 0x66, 0x82, 0x59, 0x11, 0xa6, 0xa4, 0x19, 0x42, 0x32, 0x8c, 0x44, 0x20, 0x98, 0x47, 0x68, 
            0x08, 0xd2, 0x93, 0x24, 0x8c, 0x70, 0x02, 0x0d, 0xc0, 0x32, 0x08, 0xe1, 0x82, 0x0a, 0x3a, 0xc0, 
            0x16, 0x44, 0x61, 0x19, 0x46, 0xc8, 0x31, 0x06, 0xd8, 0x43, 0x3f, 0xfe, 0xff, 0xf7, 0xbd, 0xff, 
            0xdb, 0xff, 0xf7, 0xff, 0xfd, 0xbf, 0xef, 0xef, 0xff, 0x6d, 0xff, 0xf7, 0xfe, 0xfb, 0xaf, 0xff, 
            0xff, 0xff, 0xbe, 0xef, 0xfd, 0xff, 0xff, 0xdf, 0xfd, 0xff, 0x7f, 0xfb, 0xdf, 0xfe, 0xef, 0xfd, 
            0x7f, 0xff, 0xdb, 0xff, 0xfd, 0xdf, 0xfe, 0x7e, 0xfb, 0xef, 0xef, 0xdf, 0x9f, 0xff, 0xdf, 0xdf, 
            0x6f, 0xef, 0xf3, 0xfc, 0xfd, 0xff, 0xf7, 0xef, 0xbf, 0x7d, 0xff, 0xfe, 0xef, 0xdf, 0x1b, 0x26, 
            0x27, 0xc9, 0x98, 0x12, 0x63, 0x2c, 0x82, 0x5a, 0x41, 0x94, 0x93, 0x2c, 0x20, 0xd3, 0x8c, 0x24, 
            0x53, 0x48, 0x25, 0xb4, 0x83, 0x28, 0x24, 0xc5, 0x11, 0x52, 0x8c, 0x20, 0x9b, 0xa0, 0x26, 0x59, 
            0x82, 0x2a, 0x68, 0x86, 0x99, 0x5c, 0x37, 0x96, 0x5e, 0xb1, 0x84, 0xcc, 0xf1, 0xc6, 0xc9, 0xf8, 
            0xfe, 0xed, 0xf8, 0xeb, 0xc2, 0x14, 0x51, 0x4d, 0xa4, 0x92, 0x18, 0x63, 0x47, 0x9f, 0x3f, 0xff, 
            0xff, 0xff, 0xf7, 0xdc, 0xff, 0xbb, 0xff, 0xf6, 0xdf, 0x7f, 0xff, 0xde, 0xf7, 0xff, 0xfb, 0xfe 
            0xff, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0xef, 0xbf, 0xfb, 0x6f, 0xff, 0xdb, 0x7f, 0xff, 0xff,
            0xbb, 0xef, 0x7f, 0xdb, 0xff, 0xb7, 0xfd, 0x5d, 0x02, 0xb8, 0xc6, 0x12, 0x30, 0xc4, 0x32, 0x4a,
            0x0c, 0xf1, 0xfd, 0xbf, 0xfb, 0x6d, 0xfb, 0xbb, 0x77, 0x77, 0xbb, 0xef, 0x6f, 0xfb, 0xcf, 0xdf,
            0xbb, 0x6f, 0x7f, 0xdb, 0xff, 0xf7, 0x0f, 0xe0, 0x3f, 0xc0, 0x0d, 0xb7, 0xe0, 0x0d, 0xa9, 0xf8,
            0xc7, 0x1d, 0xf0, 0xff, 0xff, 0xf0, 0xc7, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf1, 0xc6,
            0xff, 0xf7, 0xf8, 0xf3, 0xcf, 0x90, 0xf7, 0xfc, 0xe3, 0x99, 0x2e, 0xe2, 0xfc, 0x03, 0xfc, 0x78,
            0x13, 0x27, 0xec, 0x19, 0x53, 0xe6, 0x2d, 0xd8, 0x83, 0x3b, 0xee, 0x00, 0x7f, 0xff, 0xbb, 0xef,
            0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0xff, 0xbb, 0xef, 0x7f, 0xdb, 0xff, 0xb7,
            0xff, 0xfb, 0x6f, 0xfe, 0xdb, 0x7f, 0xf6, 0xdf, 0xfd, 0xb7, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0xf7,
            0xff, 0xfd, 0x9f, 0xfb, 0xf7, 0xff, 0xbb, 0x00, 0x66, 0x99, 0x4c, 0x63, 0x99, 0x8c, 0x63, 0x7c,
            0x1f, 0xce, 0x26, 0x35, 0xc9, 0x0b, 0x30, 0x4c, 0x83, 0xb0, 0xfc, 0x6f, 0xef, 0xdb, 0xbf, 0x6e,
            0x7b, 0xdf, 0xf7, 0xbe, 0xee, 0xfd, 0x00, 0xd9, 0x7b, 0x02, 0x86, 0x7c, 0x09, 0xff, 0x5f, 0x3f,
            0xa7, 0x9f, 0xcb, 0xcb, 0xef, 0xcb, 0xdb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
            0xef, 0x9f, 0xd7, 0xcf, 0xcb, 0xdf, 0xd7, 0xcf, 0x8f, 0x3f, 0x1f, 0x7f, 0xff, 0xff, 0xfb, 0x72,
            0x87, 0xb9, 0x6c, 0x03, 0x3b, 0xcc, 0xd3, 0x36, 0x88, 0xdb, 0x75, 0x84, 0xff, 0xfb, 0xef, 0xbe,
            0xfb, 0xef, 0xfe, 0x7b, 0xef, 0xfe, 0xdb, 0xff, 0xb6, 0xff, 0xed, 0xbf, 0xfb, 0x6f, 0xfe, 0xdb,
            0xff, 0xff, 0x77, 0xfd, 0xef, 0x7b, 0xff, 0xb6, 0xff, 0xed, 0x7f, 0xfb, 0xdf, 0xfe, 0xb7, 0xff,
            0xee, 0xfe, 0xb7, 0xff, 0x7f, 0xef, 0xf9, 0x02, 0x66, 0x99, 0x92, 0x66, 0x49, 0x98, 0xa6, 0xb1,
            0xcd, 0xe4, 0xf3, 0xf9, 0xbc, 0xef, 0xfd, 0xde, 0x77, 0xff, 0xed, 0xbb, 0xfb, 0xf6, 0x6f, 0x1f,
            0x37, 0x4e, 0xce, 0x31, 0x93, 0x63, 0x4c, 0x84, 0x32, 0x59, 0x45, 0x22, 0xaa, 0xc8, 0xfe, 0xff,
            0xf7, 0xf7, 0xdf, 0x7f, 0x3f, 0x3f, 0x7f, 0x7f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
            0x7f, 0x3f, 0x7f, 0x7f, 0x3f, 0x3f, 0x77, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xef, 0x3f, 0xc4,
            0xdd, 0x33, 0x82, 0xc8, 0x3f, 0x32, 0x82, 0xec, 0x33, 0x86, 0xf8, 0x7f, 0xf7, 0xdd, 0xff, 0xbb,
            0xee, 0x7f, 0xdd, 0xf7, 0xff, 0xee, 0xbb, 0xff, 0xf7, 0xbf, 0xfe, 0xff, 0xed, 0xbf, 0xfb, 0x6e,
            0xff, 0xff, 0xbf, 0xed, 0xff, 0xff, 0xb7, 0xff, 0xfd, 0xdf, 0xf7, 0xff, 0x6e, 0xfb, 0xff, 0xb7,
            0xfe, 0xef, 0x7d, 0xf7, 0xbf, 0xfd, 0xdf, 0xf0, 0x06, 0x99, 0xe4, 0x26, 0xff, 0xfd, 0xdf, 0xff,
            0xf6, 0xbf, 0xff, 0xee, 0xfb, 0x7f, 0xdd, 0xff, 0x37, 0x9f, 0xce, 0x27, 0x31, 0xcc, 0x62, 0x9b,
            0x89, 0x26, 0xb2, 0x98, 0x71, 0x46, 0x9e, 0x1d, 0x70, 0x86, 0x89, 0x33, 0x94, 0x87, 0x2f, 0x4f,
            0x1f, 0xbf, 0x3f, 0x7f, 0x7e, 0xf9, 0xe4, 0x60, 0xdb, 0xd8, 0xc6, 0xf8, 0xc9, 0xda, 0xf2, 0xcc,
            0xc8, 0xf3, 0xf4, 0xe0, 0xfb, 0xf8, 0xfe, 0x7f, 0x7f, 0x3f, 0x9f, 0x5f, 0x0f, 0xc9, 0x72, 0x0e,
            0xe1, 0x3c, 0x06, 0x09, 0x61, 0xb4, 0xd7, 0x4c, 0xf1, 0xbf, 0xff, 0xfd, 0xe7, 0xbf, 0xff, 0x7d,
            0xf7, 0xff, 0xed, 0xff, 0xfe, 0xcf, 0xff, 0xbe, 0xf7, 0xdd, 0xff, 0xef, 0xfe, 0x7b, 0xdf, 0xf7,
            0xff, 0xff, 0x7b, 0xdf, 0xfe, 0xfb, 0xdf, 0xfd, 0xef, 0xfe, 0xf7, 0xdf, 0xfb, 0xff, 0x76, 0xff,
            0xef, 0xfd, 0xff, 0xf7, 0xdf, 0x7d, 0xff, 0xff, 0xb0, 0xbf, 0xff, 0xff, 0xf6, 0x9f, 0xff, 0xfb,
            0xfe, 0xdf, 0xf7, 0xfd, 0x9f, 0xef, 0xf1, 0xf4, 0x66, 0xc9, 0xfc, 0xf3, 0xf9, 0xfc, 0xb6, 0xf8,
            0xf1, 0xf6, 0xdc, 0xf1, 0xf2, 0xee, 0xf1, 0xf4, 0x64, 0x01, 0xb4, 0x26, 0x49, 0x10, 0x24, 0x81,
            0x12, 0x94, 0x65, 0x08, 0x02, 0x64, 0x18, 0x42, 0x24, 0x19, 0x01, 0x85, 0x21, 0xbf, 0xff, 0x6d,
            0x5d, 0x37, 0x1d, 0x1d, 0x86, 0x26, 0x07, 0x10, 0x40, 0x09, 0x21, 0xd2, 0x4c, 0x19, 0x42, 0x13,
            0x40, 0x4c, 0x11, 0xc0, 0x0e, 0xbb, 0x80, 0xfe, 0xff, 0x6f, 0xfb, 0xbe, 0xf7, 0xdf, 0xfb, 0xff,
            0xbd, 0xef, 0xfb, 0xff, 0xbd, 0xef, 0xfb, 0xff, 0xdf, 0xfb, 0xef, 0x7e, 0xf7, 0xbf, 0xff, 0x6d,
            0xff, 0xff, 0xef, 0xfb, 0xbf, 0xfe, 0xef, 0x7b, 0xfe, 0xdf, 0xff, 0xf6, 0xdf, 0x7f, 0xf7, 0xdf,
            0xfe, 0xfb, 0xdf, 0x77, 0xff, 0xef, 0xfd, 0xff, 0x6f, 0xfc, 0xa7, 0xbf, 0xff, 0xff, 0xd9, 0xdf,
            0xbe, 0xbf, 0x77, 0x7e, 0xff, 0xdf, 0xfb, 0xfc, 0x7f, 0xdf, 0xff, 0xff, 0xbe, 0xfb, 0xff, 0xfd,
            0xdf, 0xfe, 0xff, 0x7b, 0xfe, 0xbf, 0xff, 0xef, 0xd9, 0x11, 0xef, 0x28, 0x00, 0x41, 0x4c, 0x31,
            0xc4, 0x0c, 0x68, 0x93, 0x10, 0x64, 0x01, 0x10, 0x04, 0x41, 0x10, 0x04, 0x00, 0x43, 0x11, 0x00,
            0x88, 0x22, 0x00, 0x48, 0x82, 0x90, 0x11, 0xc4, 0x30, 0x0d, 0x43, 0x10, 0x24, 0xc1, 0x10, 0xb4,
            0x81, 0x68, 0x24, 0x90, 0x4a, 0x2b, 0x80, 0x3f, 0xff, 0xdb, 0xff, 0xf7, 0xfd, 0xbf, 0xee, 0xff,
            0x7b, 0xef, 0xbe, 0xff, 0xed, 0x7f, 0xf6, 0xbf, 0xfb, 0xfe, 0x6f, 0xff, 0xdb, 0xff, 0xfd, 0x6f,
            0xff, 0xff, 0xfb, 0xfe, 0xef, 0xff, 0xbd, 0xff, 0xf7, 0xff, 0xbd, 0xff, 0xef, 0xff, 0xdf, 0xfe,
            0xff, 0xbd, 0xff, 0xdf, 0xff, 0xff, 0xf7, 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
            0xff, 0xf9, 0xdf, 0x5f, 0xe6, 0xfd, 0xff, 0xff, 0xf7, 0xbf, 0xfb, 0xff, 0xfd, 0xdf, 0xfe, 0xff,
            0xf7, 0xbd, 0xff, 0x5f, 0x37, 0x9f, 0x47, 0x61, 0x9c, 0x10, 0x63, 0x06, 0xc0, 0x09, 0x64, 0x93,
            0x18, 0x66, 0x82, 0x59, 0x11, 0xa6, 0xa4, 0x19, 0x42, 0x32, 0x8c, 0x44, 0x20, 0x98, 0x47, 0x68,
            0x08, 0xd2, 0x93, 0x24, 0x8c, 0x70, 0x02, 0x0d, 0xc0, 0x32, 0x08, 0xe1, 0x82, 0x0a, 0x3a, 0xc0,
            0x16, 0x44, 0x61, 0x19, 0x46, 0xc8, 0x31, 0x06, 0xd8, 0x43, 0x3f, 0xfe, 0xff, 0xf7, 0xbd, 0xff,
            0xdb, 0xff, 0xf7, 0xff, 0xfd, 0xbf, 0xef, 0xef, 0xff, 0x6d, 0xff, 0xf7, 0xfe, 0xfb, 0xaf, 0xff,
            0xff, 0xff, 0xbe, 0xef, 0xfd, 0xff, 0xff, 0xdf, 0xfd, 0xff, 0x7f, 0xfb, 0xdf, 0xfe, 0xef, 0xfd,
            0x7f, 0xff, 0xdb, 0xff, 0xfd, 0xdf, 0xfe, 0x7e, 0xfb, 0xef, 0xef, 0xdf, 0x9f, 0xff, 0xdf, 0xdf,
            0x6f, 0xef, 0xf3, 0xfc, 0xfd, 0xff, 0xf7, 0xef, 0xbf, 0x7d, 0xff, 0xfe, 0xef, 0xdf, 0x1b, 0x26,
            0x27, 0xc9, 0x98, 0x12, 0x63, 0x2c, 0x82, 0x5a, 0x41, 0x94, 0x93, 0x2c, 0x20, 0xd3, 0x8c, 0x24,
            0x53, 0x48, 0x25, 0xb4, 0x83, 0x28, 0x24, 0xc5, 0x11, 0x52, 0x8c, 0x20, 0x9b, 0xa0, 0x26, 0x59,
            0x82, 0x2a, 0x68, 0x86, 0x99, 0x5c, 0x37, 0x96, 0x5e, 0xb1, 0x84, 0xcc, 0xf1, 0xc6, 0xc9, 0xf8,
            0xfe, 0xed, 0xf8, 0xeb, 0xc2, 0x14, 0x51, 0x4d, 0xa4, 0x92, 0x18, 0x63, 0x47, 0x9f, 0x3f, 0xff,
            0xff, 0xff, 0xf7, 0xdc, 0xff, 0xbb, 0xff, 0xf6, 0xdf, 0x7f, 0xff, 0xde, 0xf7, 0xff, 0xfb, 0xfe
        }
    };


M keyboards/arch_36/rules.mk => keyboards/arch_36/rules.mk +2 -1
@@ 18,7 18,8 @@ SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
NKRO_ENABLE = no            # USB Nkey Rollover
BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow
OLED_DRIVER_ENABLE = yes    # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # Enables the use of OLED displays
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
SPLIT_KEYBOARD = yes       # Split common

M keyboards/basekeys/slice/keymaps/default/keymap.c => keyboards/basekeys/slice/keymaps/default/keymap.c +1 -1
@@ 103,7 103,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  return result;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

const char *read_logo(void) {
  static char logo[] = {

M keyboards/basekeys/slice/keymaps/default_split_left_space/keymap.c => keyboards/basekeys/slice/keymaps/default_split_left_space/keymap.c +1 -1
@@ 103,7 103,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  return result;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

const char *read_logo(void) {
  static char logo[] = {

M keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c => keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c +1 -1
@@ 187,7 187,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  return result;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

const char *read_logo(void) {
  static char logo[] = {

M keyboards/basekeys/slice/rev1_rgb/keymaps/via/keymap.c => keyboards/basekeys/slice/rev1_rgb/keymaps/via/keymap.c +1 -1
@@ 84,7 84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static void render_qmk_logo(void) {
    static const char PROGMEM qmk_logo[] = {

M keyboards/basekeys/slice/rev1_rgb/rules.mk => keyboards/basekeys/slice/rev1_rgb/rules.mk +3 -2
@@ 27,7 27,8 @@ SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no            # USB Nkey Rollover
RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
OLED_DRIVER_ENABLE = yes     # Disable OLED driver.
OLED_ENABLE = yes
OLED_DRIVER = SSD1306     # Disable OLED driver.
UNICODE_ENABLE = no         # Unicode

LTO_ENABLE = yes
\ No newline at end of file
LTO_ENABLE = yes

M keyboards/boardsource/holiday/spooky/keymaps/rip_mx/keymap.c => keyboards/boardsource/holiday/spooky/keymaps/rip_mx/keymap.c +32 -32
@@ 27,44 27,44 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        RGB_MOD, KC_VOLD, KC_F1
    ),
};
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;
}

static void render_RIP(void) {
  static const char PROGMEM my_logo[] = {
0xff, 0xff, 0x07, 0x1e, 0x70, 0xc0, 0x00, 0x00, 0xe0, 0x78, 0x1e, 0x07, 0xff, 0xfe, 0x00, 0x00, 
0x00, 0x00, 0x03, 0x06, 0x1c, 0xb8, 0xf0, 0xe0, 0xb8, 0x1c, 0x0e, 0x07, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x3e, 0x66, 0x63, 0x63, 0x43, 0x43, 0xc3, 0xc2, 0x82, 
0x00, 0x00, 0x00, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0xc0, 0xf0, 0x30, 0xf0, 0x80, 0x00, 0x00, 0xc0, 
0xf0, 0x10, 0x00, 0x00, 0x00, 0xf3, 0xf3, 0x00, 0x00, 0x10, 0x18, 0xfe, 0x18, 0x10, 0x10, 0x10, 
0x00, 0x00, 0xc0, 0xe0, 0x30, 0x10, 0x18, 0x18, 0x18, 0x10, 0x10, 0x00, 0x00, 0x00, 0xff, 0xff, 
0x30, 0x10, 0x18, 0x18, 0x18, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0x90, 0x90, 0x98, 
0x98, 0x98, 0xb0, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x90, 0x98, 0x98, 0x18, 0x18, 0x10, 0x00, 
0x1f, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 
0x00, 0x10, 0x1c, 0x0e, 0x07, 0x01, 0x00, 0x00, 0x01, 0x07, 0x0e, 0x1c, 0x18, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x18, 0x18, 0x10, 0x10, 0x18, 0x18, 0x0d, 0x0f, 
0x03, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x1e, 0x1e, 0x07, 0x00, 0x00, 0x01, 0x0f, 0x1c, 0x1e, 0x07, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0c, 0x18, 0x18, 0x18, 
0x00, 0x00, 0x03, 0x0f, 0x0c, 0x18, 0x10, 0x10, 0x10, 0x18, 0x08, 0x00, 0x00, 0x00, 0x1f, 0x1f, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x08, 0x18, 0x10, 
0x10, 0x10, 0x18, 0x18, 0x08, 0x00, 0x00, 0x08, 0x18, 0x10, 0x11, 0x11, 0x11, 0x19, 0x0f, 0x0e, 
0x00, 0x30, 0x30, 0x10, 0x10, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf0, 
0x30, 0x10, 0x18, 0x18, 0x10, 0x70, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x40, 0xf0, 0xb0, 0x10, 0x18, 
0x18, 0x10, 0x30, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x70, 0x10, 0x18, 0x18, 0x10, 0x30, 
0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x10, 0x18, 0x18, 0x18, 
0x10, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0x30, 0x10, 0x18, 0x10, 0x30, 0xf0, 
0xe0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x10, 0x18, 0x18, 0x10, 0x30, 0xf0, 0xe0, 0x00, 0x00, 
0x00, 0x00, 0xc0, 0xe0, 0x30, 0x10, 0x18, 0x18, 0x10, 0x30, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc7, 
0xc4, 0x8c, 0x8c, 0xcc, 0xc4, 0x77, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x38, 0x7d, 0xc7, 0xc3, 0x82, 
0x82, 0xc3, 0xc7, 0x7d, 0x7c, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0x70, 0xc0, 0x80, 0x80, 0xc0, 0xc0, 
0x7f, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xf0, 0xd8, 0xcc, 
0xc6, 0xc3, 0xc1, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0x70, 0xc0, 0xc0, 0x80, 0xc0, 0xc0, 0x70, 
0x3f, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xd8, 0xcc, 0xcc, 0xc7, 0xc3, 0xc1, 0x00, 0x00, 
0xff, 0xff, 0x07, 0x1e, 0x70, 0xc0, 0x00, 0x00, 0xe0, 0x78, 0x1e, 0x07, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0x03, 0x06, 0x1c, 0xb8, 0xf0, 0xe0, 0xb8, 0x1c, 0x0e, 0x07, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x3e, 0x66, 0x63, 0x63, 0x43, 0x43, 0xc3, 0xc2, 0x82,
0x00, 0x00, 0x00, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0xc0, 0xf0, 0x30, 0xf0, 0x80, 0x00, 0x00, 0xc0,
0xf0, 0x10, 0x00, 0x00, 0x00, 0xf3, 0xf3, 0x00, 0x00, 0x10, 0x18, 0xfe, 0x18, 0x10, 0x10, 0x10,
0x00, 0x00, 0xc0, 0xe0, 0x30, 0x10, 0x18, 0x18, 0x18, 0x10, 0x10, 0x00, 0x00, 0x00, 0xff, 0xff,
0x30, 0x10, 0x18, 0x18, 0x18, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0x90, 0x90, 0x98,
0x98, 0x98, 0xb0, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x90, 0x98, 0x98, 0x18, 0x18, 0x10, 0x00,
0x1f, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00,
0x00, 0x10, 0x1c, 0x0e, 0x07, 0x01, 0x00, 0x00, 0x01, 0x07, 0x0e, 0x1c, 0x18, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x18, 0x18, 0x10, 0x10, 0x18, 0x18, 0x0d, 0x0f,
0x03, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x1e, 0x1e, 0x07, 0x00, 0x00, 0x01, 0x0f, 0x1c, 0x1e, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0c, 0x18, 0x18, 0x18,
0x00, 0x00, 0x03, 0x0f, 0x0c, 0x18, 0x10, 0x10, 0x10, 0x18, 0x08, 0x00, 0x00, 0x00, 0x1f, 0x1f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x08, 0x18, 0x10,
0x10, 0x10, 0x18, 0x18, 0x08, 0x00, 0x00, 0x08, 0x18, 0x10, 0x11, 0x11, 0x11, 0x19, 0x0f, 0x0e,
0x00, 0x30, 0x30, 0x10, 0x10, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf0,
0x30, 0x10, 0x18, 0x18, 0x10, 0x70, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x40, 0xf0, 0xb0, 0x10, 0x18,
0x18, 0x10, 0x30, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x70, 0x10, 0x18, 0x18, 0x10, 0x30,
0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x10, 0x18, 0x18, 0x18,
0x10, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0x30, 0x10, 0x18, 0x10, 0x30, 0xf0,
0xe0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x10, 0x18, 0x18, 0x10, 0x30, 0xf0, 0xe0, 0x00, 0x00,
0x00, 0x00, 0xc0, 0xe0, 0x30, 0x10, 0x18, 0x18, 0x10, 0x30, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc7,
0xc4, 0x8c, 0x8c, 0xcc, 0xc4, 0x77, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x38, 0x7d, 0xc7, 0xc3, 0x82,
0x82, 0xc3, 0xc7, 0x7d, 0x7c, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0x70, 0xc0, 0x80, 0x80, 0xc0, 0xc0,
0x7f, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xf0, 0xd8, 0xcc,
0xc6, 0xc3, 0xc1, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0x70, 0xc0, 0xc0, 0x80, 0xc0, 0xc0, 0x70,
0x3f, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xd8, 0xcc, 0xcc, 0xc7, 0xc3, 0xc1, 0x00, 0x00,
0x00, 0x00, 0x3f, 0x7f, 0xe0, 0xc0, 0x80, 0x80, 0xc0, 0x60, 0x7f, 0x1f, 0x00, 0x00, 0x00, 0x00
 };


M keyboards/boardsource/holiday/spooky/keymaps/rip_mx/rules.mk => keyboards/boardsource/holiday/spooky/keymaps/rip_mx/rules.mk +2 -1
@@ 1,1 1,2 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/keymap.c => keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/keymap.c +32 -32
@@ 27,44 27,44 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        RGB_MOD, KC_3,KC_4
    ),
};
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;
}

static void render_RIP(void) {
  static const char PROGMEM my_logo[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x08, 0x04, 
0x04, 0x7c, 0xfc, 0xf0, 0x00, 0x00, 0x40, 0x20, 0xf0, 0x7c, 0x06, 0x00, 0x41, 0xc0, 0x00, 0x00, 
0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0xc0, 0x00, 
0x00, 0x00, 0xe0, 0x60, 0x00, 0x80, 0x40, 0x20, 0x20, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x3c, 0x02, 
0x01, 0xc1, 0xf8, 0x0e, 0x00, 0x01, 0xc0, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x50, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08, 
0x03, 0x00, 0x00, 0x0f, 0x06, 0x01, 0x00, 0x1e, 0x1f, 0x10, 0x00, 0x00, 0x1e, 0x1f, 0x08, 0xc0, 
0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1e, 0x11, 0x08, 0x04, 0x1e, 0x11, 0x00, 
0x08, 0x06, 0x01, 0x00, 0x1e, 0x19, 0x08, 0x00, 0x1e, 0x0b, 0x08, 0x00, 0x1f, 0x1b, 0x08, 0x00, 
0x18, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x12, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x19, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 
0x84, 0x84, 0x84, 0xcc, 0x38, 0x00, 0x00, 0x00, 0xf0, 0x18, 0x04, 0x05, 0x0f, 0x79, 0xe1, 0x00, 
0x00, 0x00, 0xc0, 0x78, 0x0c, 0x00, 0x00, 0x0c, 0x84, 0x84, 0xcc, 0xf8, 0x30, 0x00, 0x00, 0xe0, 
0xf8, 0x0c, 0x04, 0x04, 0x0c, 0xf8, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x00, 0x00, 0x08, 0x0c, 
0x04, 0x04, 0xcc, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x18, 0x0c, 0x04, 0x0c, 0x18, 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, 0x00, 0x10, 
0x10, 0x10, 0x10, 0x19, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x18, 0x10, 0x10, 0x18, 0x0f, 0x07, 0x00, 
0x20, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x18, 0x10, 0x10, 0x10, 0x10, 0x1d, 0x0f, 0x00, 0x00, 0x03, 
0x0f, 0x18, 0x10, 0x10, 0x18, 0x0f, 0x00, 0x00, 0x38, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x18, 0x1c, 
0x16, 0x13, 0x10, 0x10, 0x00, 0x00, 0x00, 0x07, 0x1c, 0x10, 0x10, 0x10, 0x0c, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x08, 0x04,
0x04, 0x7c, 0xfc, 0xf0, 0x00, 0x00, 0x40, 0x20, 0xf0, 0x7c, 0x06, 0x00, 0x41, 0xc0, 0x00, 0x00,
0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0xc0, 0x00,
0x00, 0x00, 0xe0, 0x60, 0x00, 0x80, 0x40, 0x20, 0x20, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x3c, 0x02,
0x01, 0xc1, 0xf8, 0x0e, 0x00, 0x01, 0xc0, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x50, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x08,
0x03, 0x00, 0x00, 0x0f, 0x06, 0x01, 0x00, 0x1e, 0x1f, 0x10, 0x00, 0x00, 0x1e, 0x1f, 0x08, 0xc0,
0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1e, 0x11, 0x08, 0x04, 0x1e, 0x11, 0x00,
0x08, 0x06, 0x01, 0x00, 0x1e, 0x19, 0x08, 0x00, 0x1e, 0x0b, 0x08, 0x00, 0x1f, 0x1b, 0x08, 0x00,
0x18, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x12, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x19, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
0x84, 0x84, 0x84, 0xcc, 0x38, 0x00, 0x00, 0x00, 0xf0, 0x18, 0x04, 0x05, 0x0f, 0x79, 0xe1, 0x00,
0x00, 0x00, 0xc0, 0x78, 0x0c, 0x00, 0x00, 0x0c, 0x84, 0x84, 0xcc, 0xf8, 0x30, 0x00, 0x00, 0xe0,
0xf8, 0x0c, 0x04, 0x04, 0x0c, 0xf8, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x00, 0x00, 0x08, 0x0c,
0x04, 0x04, 0xcc, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x18, 0x0c, 0x04, 0x0c, 0x18, 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, 0x00, 0x10,
0x10, 0x10, 0x10, 0x19, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x18, 0x10, 0x10, 0x18, 0x0f, 0x07, 0x00,
0x20, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x18, 0x10, 0x10, 0x10, 0x10, 0x1d, 0x0f, 0x00, 0x00, 0x03,
0x0f, 0x18, 0x10, 0x10, 0x18, 0x0f, 0x00, 0x00, 0x38, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x18, 0x1c,
0x16, 0x13, 0x10, 0x10, 0x00, 0x00, 0x00, 0x07, 0x1c, 0x10, 0x10, 0x10, 0x0c, 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
  };


M keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/rules.mk => keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/rules.mk +2 -1
@@ 1,1 1,2 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/boardsource/microdox/keymaps/cole/keymap.c => keyboards/boardsource/microdox/keymaps/cole/keymap.c +13 -13
@@ 38,27 38,27 @@ enum layers {


const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  [_QWERTY] = LAYOUT_split_3x5_3( 
        KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,             KC_Y,    KC_U,    KC_I,    KC_O,   KC_P,  
      CTRL_A,    KC_S,    KC_D,    KC_F,    KC_G,             KC_H,    KC_J,    KC_K,    KC_L, KC_CTSC, 
     SHFT_Z,    KC_X,    KC_C,    KC_V,    KC_B,             KC_N,    KC_M, KC_COMM,  KC_DOT, SHIFT_SLASH, 
  [_QWERTY] = LAYOUT_split_3x5_3(
        KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,             KC_Y,    KC_U,    KC_I,    KC_O,   KC_P,
      CTRL_A,    KC_S,    KC_D,    KC_F,    KC_G,             KC_H,    KC_J,    KC_K,    KC_L, KC_CTSC,
     SHFT_Z,    KC_X,    KC_C,    KC_V,    KC_B,             KC_N,    KC_M, KC_COMM,  KC_DOT, SHIFT_SLASH,
                       MO(_LOWER),KC_LGUI, RASE_ENT,       RASE_BACK, LOWER_SPC, KC_TAB
    ),
  [_RAISE] = LAYOUT_split_3x5_3( 
        KC_1,    KC_2,    KC_3,    KC_4,    KC_5,           KC_6,    KC_7,    KC_8,    KC_9,    KC_0, 
      KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,            KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT, KC_QUOT, 
     KC_LSFT, KC_GRV, PREVWINDOW, NEXTWINDOW, XXXXXXX,           KC_MINS,  KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, 
  [_RAISE] = LAYOUT_split_3x5_3(
        KC_1,    KC_2,    KC_3,    KC_4,    KC_5,           KC_6,    KC_7,    KC_8,    KC_9,    KC_0,
      KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,            KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT, KC_QUOT,
     KC_LSFT, KC_GRV, PREVWINDOW, NEXTWINDOW, XXXXXXX,           KC_MINS,  KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
                         _______, KC_LGUI, KC_ENT,           KC_BSPC,  KC_SPC, _______
                         ),
  [_LOWER] = LAYOUT_split_3x5_3( 
  [_LOWER] = LAYOUT_split_3x5_3(
       KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,             KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
       KC_ESC,   XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG,            KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT, KC_DQT, 
       KC_ESC,   KC_TILD, PREVWINDOW, NEXTWINDOW, RGB_MODE_FORWARD,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, 
       KC_ESC,   XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG,            KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT, KC_DQT,
       KC_ESC,   KC_TILD, PREVWINDOW, NEXTWINDOW, RGB_MODE_FORWARD,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
                            _______,  KC_LGUI,  KC_ENT,         KC_BSPC,  KC_SPC, _______
                            )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (is_keyboard_master())
    return OLED_ROTATION_180;


@@ 73,7 73,7 @@ static void render_logo(void) {
    0
  };
  oled_write_P(qmk_logo, false);
}                                                                                 
}

static void render_status(void) {
   switch (get_highest_layer(layer_state)) {

M keyboards/boardsource/microdox/keymaps/cole/rules.mk => keyboards/boardsource/microdox/keymaps/cole/rules.mk +2 -1
@@ 1,1 1,2 @@
OLED_DRIVER_ENABLE = yes
\ No newline at end of file
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/boardsource/microdox/keymaps/via/keymap.c => keyboards/boardsource/microdox/keymaps/via/keymap.c +1 -1
@@ 46,7 46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (is_keyboard_master())
    return OLED_ROTATION_180;

M keyboards/boardsource/microdox/keymaps/via/rules.mk => keyboards/boardsource/microdox/keymaps/via/rules.mk +2 -1
@@ 1,4 1,5 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
VIA_ENABLE = yes
EXTRAKEY_ENABLE = yes
RGBLIGHT_ENABLE = yes

M keyboards/business_card/alpha/keymaps/default/keymap.c => keyboards/business_card/alpha/keymaps/default/keymap.c +1 -1
@@ 35,7 35,7 @@ void keyboard_post_init_user(void) {
    rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_MOOD);
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
static void render_logo(void) {
    static const char PROGMEM qmk_logo[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
                                            0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,

M keyboards/business_card/alpha/rules.mk => keyboards/business_card/alpha/rules.mk +2 -1
@@ 28,4 28,5 @@ RGBLIGHT_ENABLE = yes        # Enable keyboard RGB underglow
UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no           # Audio output on port C6
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/business_card/beta/keymaps/default/keymap.c => keyboards/business_card/beta/keymaps/default/keymap.c +1 -1
@@ 38,7 38,7 @@ void led_set_user(uint8_t usb_led) {}

void keyboard_post_init_user(void) {}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
static void render_logo(void) {
    static const char PROGMEM qmk_logo[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
                                            0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,

M keyboards/business_card/beta/rules.mk => keyboards/business_card/beta/rules.mk +2 -1
@@ 28,4 28,5 @@ RGBLIGHT_ENABLE = yes        # Enable keyboard RGB underglow
UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no           # Audio output on port C6
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/cassette42/common/oled_helper.c => keyboards/cassette42/common/oled_helper.c +1 -1
@@ 1,4 1,4 @@
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    include QMK_KEYBOARD_H
#    include <stdio.h>
#    include <string.h>

M keyboards/cassette42/common/oled_helper.h => keyboards/cassette42/common/oled_helper.h +2 -2
@@ 1,4 1,4 @@
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

void render_logo(void);



@@ 19,4 19,4 @@ void render_led_status(void);
#    define UPDATE_LED_STATUS()
#    define RENDER_LED_STATUS(a)

#endif
\ No newline at end of file
#endif

M keyboards/cassette42/keymaps/default/keymap.c => keyboards/cassette42/keymaps/default/keymap.c +1 -1
@@ 64,7 64,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    include <stdio.h>
#    include <string.h>


M keyboards/cassette42/rules.mk => keyboards/cassette42/rules.mk +2 -1
@@ 21,6 21,7 @@ RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

SRC += ./common/oled_helper.c

M keyboards/chidori/keymaps/oled_sample/keymap.c => keyboards/chidori/keymaps/oled_sample/keymap.c +1 -1
@@ 181,7 181,7 @@ bool led_update_user(led_t led_state) {
    return false;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

void oled_write_layer_state(void) {
    oled_write_P(PSTR("Layer: "), false);

M keyboards/chidori/keymaps/oled_sample/rules.mk => keyboards/chidori/keymaps/oled_sample/rules.mk +2 -1
@@ 1,2 1,3 @@
# Enable SSD1306 OLED
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/ckeys/washington/keymaps/default/keymap.c => keyboards/ckeys/washington/keymaps/default/keymap.c +1 -1
@@ 58,7 58,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
  // Host Keyboard Layer Status
  oled_write_P(PSTR("Layer: "), false);

M keyboards/ckeys/washington/rules.mk => keyboards/ckeys/washington/rules.mk +2 -1
@@ 28,4 28,5 @@ RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no           # Audio output on port C6
ENCODER_ENABLE = yes        # Enable support for encoders
OLED_DRIVER_ENABLE = yes    # Enable support for OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # Enable support for OLED displays

M keyboards/claw44/keymaps/oled/keymap.c => keyboards/claw44/keymaps/oled/keymap.c +1 -1
@@ 84,7 84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    ),
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

void render_layer_state(void) {
    switch (get_highest_layer(layer_state)) {

M keyboards/claw44/keymaps/oled/rules.mk => keyboards/claw44/keymaps/oled/rules.mk +2 -1
@@ 1,1 1,2 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/claw44/rev1/rules.mk => keyboards/claw44/rev1/rules.mk +1 -1
@@ 15,5 15,5 @@ SWAP_HANDS_ENABLE = no      # Enable one-hand typing
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend

OLED_DRIVER_ENABLE = no     # Add OLED displays support
OLED_ENABLE = no     # Add OLED displays support
SPLIT_KEYBOARD = yes

M keyboards/crkbd/keymaps/armand1m/keymap.c => keyboards/crkbd/keymaps/armand1m/keymap.c +2 -2
@@ 67,7 67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  ),
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {

  if (!is_keyboard_master()) {


@@ 133,4 133,4 @@ void oled_render_amsterdam_flag(void) {
void oled_task_user(void) {
    oled_render_amsterdam_flag();
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE

M keyboards/crkbd/keymaps/armand1m/rules.mk => keyboards/crkbd/keymaps/armand1m/rules.mk +2 -1
@@ 1,1 1,2 @@
OLED_DRIVER_ENABLE  = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/crkbd/keymaps/curry/rules.mk => keyboards/crkbd/keymaps/curry/rules.mk +1 -1
@@ 10,7 10,7 @@ COMMAND_ENABLE          = no
RGBLIGHT_ENABLE         = no
RGB_MATRIX_ENABLE       = yes

OLED_DRIVER_ENABLE      = yes
OLED_ENABLE     = yes

BOOTLOADER              = atmel-dfu
SPLIT_TRANSPORT         = mirror

M keyboards/crkbd/keymaps/default/keymap.c => keyboards/crkbd/keymaps/default/keymap.c +2 -2
@@ 70,7 70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_master()) {
    return OLED_ROTATION_180;  // flips the display 180 degrees if offhand


@@ 172,4 172,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  }
  return true;
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE

M keyboards/crkbd/keymaps/default/rules.mk => keyboards/crkbd/keymaps/default/rules.mk +2 -1
@@ 1,1 1,2 @@
OLED_DRIVER_ENABLE  = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/crkbd/keymaps/devdev/keymap.c => keyboards/crkbd/keymaps/devdev/keymap.c +70 -70
@@ 1,18 1,18 @@
/* Copyright 2020 Dane Evans
  * 
  * This program is free software: you can redistribute it and/or modify 
  * it under the terms of the GNU General Public License as published by 
  * the Free Software Foundation, either version 2 of the License, or 
  * (at your option) any later version. 
  * 
  * This program is distributed in the hope that it will be useful, 
  * but WITHOUT ANY WARRANTY; without even the implied warranty of 
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  * GNU General Public License for more details. 
  * 
  * You should have received a copy of the GNU General Public License 
  * along with this program.  If not, see <http://www.gnu.org/licenses/>. 
  */ 
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation, either version 2 of the License, or
  * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */

// CRKBD



@@ 20,12 20,12 @@


char layer_state_str[24];
 
 


  enum userspace_layers {
    _DEFAULTS = 0,
	_COLEMAK = 0,
	_COLEMAKDH, 
	_COLEMAKDH,
    _QWERTY,
    _NUM,
    _SYM,


@@ 33,37 33,37 @@ char layer_state_str[24];
    _NUMPAD,
	_SWITCH,
    _MOVE,
    

};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
	
		// colemak 

		// colemak
	[_COLEMAK] = LAYOUT(
	//,-----------------------------------------------------.                    ,-----------------------------------------------------.
	    LT(_NUMPAD,KC_TAB), 	KC_Q, 	 KC_W, 	  KC_F,    KC_P,    KC_G, 		 LT(_SWITCH,KC_J),    KC_L,    KC_U,    KC_Y, KC_SCLN, KC_BSPC,
	//|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
	    KC_LSFT,    KC_A,    KC_R,    KC_S,    KC_T,    KC_D, 						  KC_H,    KC_N,    KC_E,    KC_I,LT(_NUMPAD,KC_O),KC_QUOT,
	//|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|		
	//|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
		KC_LCTL,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B, 						  KC_K,    KC_M, KC_COMM,  KC_DOT, KC_SLSH, KC_RSFT,
	//|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
										 KC_LGUI,   MO(_NUM),  KC_SPC, 	KC_ENT,    MO(_SYM), KC_LALT
										//`--------------------------'  `--------------------------'
	),
	

			// colemak DH
	[_COLEMAKDH] = LAYOUT(
	//,-----------------------------------------------------.                    ,-----------------------------------------------------.
	    LT(_NUMPAD,KC_TAB), 	KC_Q, 	 KC_W, 	  KC_F,    KC_P,    KC_B, 					LT(_SWITCH,KC_J),    KC_L,    KC_U,    KC_Y, KC_SCLN, KC_BSPC,
	//|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
	    KC_LSFT,    KC_A,    KC_R,    KC_S,    KC_T,    KC_G, 						  KC_M,    KC_N,    KC_E,    KC_I,LT(_NUMPAD,KC_O),KC_QUOT,
	//|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|		
	//|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
		KC_LCTL,    KC_Z,    KC_X,    KC_C,    KC_D,    KC_V, 						  KC_K,    KC_H, KC_COMM,  KC_DOT, KC_SLSH, KC_RSFT,
	//|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
										 KC_LGUI,   MO(_NUM),  KC_SPC, 	KC_ENT,    MO(_SYM), KC_LALT 
										 KC_LGUI,   MO(_NUM),  KC_SPC, 	KC_ENT,    MO(_SYM), KC_LALT
										//`--------------------------'  `--------------------------'
	),
	

	// qwerty
	[_QWERTY] = LAYOUT(
	//,-----------------------------------------------------.                    ,-----------------------------------------------------.


@@ 77,9 77,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
									   //`--------------------------'  `--------------------------'
	),

										   
										   
	// numbers  - L thumb 


	// numbers  - L thumb
	[_NUM] = LAYOUT(
	//,-----------------------------------------------------.                    ,-----------------------------------------------------.
	     KC_ESC,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5, 					      KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC,


@@ 91,8 91,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
											KC_TRNS, KC_TRNS,  KC_TRNS,     KC_TRNS,   MO(_COMMAND), KC_TRNS
										//`--------------------------'  `--------------------------'
	),
	
	// symbols  - R thumb 

	// symbols  - R thumb
	[_SYM] = LAYOUT(
	//,-----------------------------------------------------.                    ,-----------------------------------------------------.
	     KC_ESC, KC_EXLM,   KC_AT, KC_HASH,  KC_DLR, KC_PERC, 					   KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,


@@ 104,8 104,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
											KC_TRNS,   MO(_COMMAND),  KC_TRNS,     KC_TRNS, KC_TRNS, KC_TRNS
										//`--------------------------'  `--------------------------'
	),
	
	// commands - both thumbs 

	// commands - both thumbs
	[_COMMAND] = LAYOUT(
	//,-----------------------------------------------------.                    ,-----------------------------------------------------.
	      RESET,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5, 						 KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,   KC_NO,


@@ 114,24 114,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
	//|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
		RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,   KC_NO,   DF(2), 					     KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
	//|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
										    KC_TRNS, KC_TRNS,  KC_TRNS,     KC_TRNS, KC_TRNS, KC_TRNS 
										    KC_TRNS, KC_TRNS,  KC_TRNS,     KC_TRNS, KC_TRNS, KC_TRNS
										//`--------------------------'  `--------------------------'
	),
	
	// numpad 

	// numpad
	[_NUMPAD] = LAYOUT(
	//,-----------------------------------------------------.                    ,-----------------------------------------------------.
	LT(0,KC_NO),   KC_NO,   KC_NO,   KC_NO,   KC_NO, KC_NO, 					   KC_CIRC,   KC_P7,   KC_P8,   KC_P9, KC_ASTR, KC_BSPC,
	//|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
	      KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO, 					   KC_MINS,   KC_P4,   KC_P5,   KC_P6,  KC_EQL,  KC_DEL,
	//|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|	  
	//|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
		  KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO, 					   KC_PLUS,   KC_P1,   KC_P2,   KC_P3, KC_SLSH,   KC_NO,
	//|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|		  
	//|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
									   OSM(MOD_MEH),   KC_NO,   KC_TRNS,     KC_ENT,   KC_P0,  KC_PDOT
										//`--------------------------'  `--------------------------'
	),	  
		  
	// layer switcher 
	),

	// layer switcher
	[_SWITCH] = LAYOUT(
	//,-----------------------------------------------------.                    ,-----------------------------------------------------.
	      TO(0),   TO(1),   TO(2),   TO(3),   TO(4),   TO(5), 					     KC_NO,   TO(7),   KC_NO,   KC_NO,   KC_NO,   RESET,


@@ 139,62 139,62 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
	      KC_NO,   KC_NO, KC_BRIU,   KC_NO,   KC_NO,   KC_NO, 						 KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO, EEP_RST,
	//|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
		KC_SYSTEM_SLEEP,   KC_NO, KC_BRID,   KC_NO,   KC_NO,   KC_NO, 						 KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,
	//|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|		  		
	//|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
											  KC_NO,   KC_NO,   KC_NO,      KC_NO,   KC_NO,   KC_NO
										//`--------------------------'  `--------------------------'
	
	),		  
		  
	// amovement 

	),

	// amovement
	[_MOVE] = LAYOUT(
	//,-----------------------------------------------------.                    ,-----------------------------------------------------.
	LT(0,KC_NO),   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO, 					   KC_HOME,  KC_UP,  KC_PGUP,   KC_NO,   KC_NO,   KC_NO,
	//|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
	      KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO, 					   KC_LEFT,  KC_ENT, KC_RGHT,   KC_NO,   KC_NO,   KC_NO,
	//|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|	  		 
	//|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
		 KC_APP,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO, 						KC_END, KC_DOWN, KC_PGDN,  KC_DEL,   KC_NO,   KC_NO,
	//|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|		  
		                                      KC_NO,   KC_NO,   KC_NO,    KC_TRNS,   KC_NO,   KC_NO 
	//|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
		                                      KC_NO,   KC_NO,   KC_NO,    KC_TRNS,   KC_NO,   KC_NO
										//`--------------------------'  `--------------------------'
	)

};


// it appears that these are different to the board numbering. 
// when you specify n here, it lightss up n+1 on the board diagram - actually may be an entirely different pattern 
// it appears that these are different to the board numbering.
// when you specify n here, it lightss up n+1 on the board diagram - actually may be an entirely different pattern

// _QWERTY,
// Light on inner column and underglow 
// Light on inner column and underglow
const rgblight_segment_t PROGMEM layer_qwerty_lights[] = RGBLIGHT_LAYER_SEGMENTS(
    {0, 10, HSV_AZURE}
);

// _COLEMAKDH,
// Light on inner column and underglow 
// Light on inner column and underglow
const rgblight_segment_t PROGMEM layer_colemakdh_lights[] = RGBLIGHT_LAYER_SEGMENTS(
    {0, 10, HSV_RED}
);

// _NUM,
// Light on inner column and underglow 
// Light on inner column and underglow
const rgblight_segment_t PROGMEM layer_num_lights[] = RGBLIGHT_LAYER_SEGMENTS(
    {0, 10, HSV_TEAL}
);
// _SYMBOL,
// Light on inner column and underglow 
// Light on inner column and underglow
const rgblight_segment_t PROGMEM layer_symbol_lights[] = RGBLIGHT_LAYER_SEGMENTS(
    {0, 10, HSV_BLUE}
);
// _COMMAND,
// Light on inner column and underglow 
// Light on inner column and underglow
const rgblight_segment_t PROGMEM layer_command_lights[] = RGBLIGHT_LAYER_SEGMENTS(
    {0, 10, HSV_PURPLE}
);


//_NUMPAD
//havent worked out how to do each side individually either 
//havent worked out how to do each side individually either
const rgblight_segment_t PROGMEM layer_numpad_lights[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 10, HSV_ORANGE}
);


@@ 206,13 206,13 @@ const rgblight_segment_t PROGMEM layer_numpad_rh_lights[] = RGBLIGHT_LAYER_SEGME
);

// _MOVE,
// Light on inner column and underglow 
// Light on inner column and underglow
const rgblight_segment_t PROGMEM layer_move_lights[] = RGBLIGHT_LAYER_SEGMENTS(
    {0, 10, HSV_PINK}
);

// _SWITCHER   // light up top row
const rgblight_segment_t PROGMEM layer_switcher_lights[] = RGBLIGHT_LAYER_SEGMENTS( 
const rgblight_segment_t PROGMEM layer_switcher_lights[] = RGBLIGHT_LAYER_SEGMENTS(
    {0, 6, HSV_GREEN},
	{9, 2, HSV_GREEN},
	{17, 2, HSV_GREEN},


@@ 222,12 222,12 @@ const rgblight_segment_t PROGMEM layer_switcher_lights[] = RGBLIGHT_LAYER_SEGMEN

// Now define the array of layers. Later layers take precedence
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
    layer_qwerty_lights, 
    layer_qwerty_lights,
	layer_colemakdh_lights,
	layer_num_lights,// overrides layer 1
	layer_symbol_lights,
    layer_command_lights,       
	layer_numpad_lights, 
    layer_command_lights,
	layer_numpad_lights,
	layer_numpad_rh_lights,
	layer_move_lights,
	layer_switcher_lights  // Overrides other layers


@@ 236,7 236,7 @@ const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
void keyboard_post_init_user(void) {
    // Enable the LED layers
    rgblight_layers = my_rgb_layers;
	rgblight_mode(10);// haven't found a way to set this in a more useful way 
	rgblight_mode(10);// haven't found a way to set this in a more useful way

}



@@ 244,7 244,7 @@ void keyboard_post_init_user(void) {
layer_state_t layer_state_set_user(layer_state_t state) {
	rgblight_set_layer_state(0, layer_state_cmp(state, _DEFAULTS) && layer_state_cmp(default_layer_state,_QWERTY));
	rgblight_set_layer_state(1, layer_state_cmp(state, _DEFAULTS) && layer_state_cmp(default_layer_state,_QWERTY));
	

	rgblight_set_layer_state(2, layer_state_cmp(state, _NUM));
	rgblight_set_layer_state(3, layer_state_cmp(state, _SYM));
	rgblight_set_layer_state(4, layer_state_cmp(state, _COMMAND));


@@ 266,7 266,7 @@ bool led_update_user(led_t led_state) {


//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_master()) {
    return OLED_ROTATION_180;  // flips the display 180 degrees if offhand


@@ 288,7 288,7 @@ const char *read_mode_icon(bool swap);


void oled_render_layer_state(void) {
  char string [24]; 
  char string [24];
  switch (get_highest_layer(default_layer_state|layer_state))
  {
      case _QWERTY:


@@ 296,10 296,10 @@ void oled_render_layer_state(void) {
        break;
      case _COLEMAK:
        oled_write_ln_P(PSTR("Layer: COLEMAK"),false);
        break;    
        break;
      case _COLEMAKDH:
        oled_write_ln_P(PSTR("Layer: COLEMAKDH"),false);
        break;    
        break;
      case _NUM:
        oled_write_ln_P(PSTR("Layer: Numbers"),false);
        break;


@@ 311,13 311,13 @@ void oled_render_layer_state(void) {
        break;
      case _NUMPAD:
        oled_write_ln_P(PSTR("Layer: Numpad"),false);
        break;	
        break;
      case _MOVE:
        oled_write_ln_P(PSTR("Layer: Movement"),false);
        break;
      case _SWITCH:
        oled_write_ln_P(PSTR("Layer: Layer Switch"),false);
        break;		
        break;
      default:
        snprintf(string, sizeof(string), "%ld",layer_state);
        oled_write_P(PSTR("Layer: Undef-"),false);


@@ 407,4 407,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  }
  return true;
}
#endif // OLED_DRIVER_ENABLE
\ No newline at end of file
#endif // OLED_ENABLE

M keyboards/crkbd/keymaps/devdev/rules.mk => keyboards/crkbd/keymaps/devdev/rules.mk +2 -1
@@ 1,4 1,5 @@
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
RGBLIGHT_ENABLE = yes
OLED_DRIVER_ENABLE = yes
\ No newline at end of file
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/crkbd/keymaps/dsanchezseco/keymap.c => keyboards/crkbd/keymaps/dsanchezseco/keymap.c +1 -1
@@ 75,7 75,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
  return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_left())
    return OLED_ROTATION_180;  // flips the display 180 to see it from my side

M keyboards/crkbd/keymaps/dsanchezseco/rules.mk => keyboards/crkbd/keymaps/dsanchezseco/rules.mk +1 -1
@@ 3,7 3,7 @@
SRC += ./logo_reader.c

# enable OLED displays
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no

# enable media keys
EXTRAKEY_ENABLE = yes

M keyboards/crkbd/keymaps/edvorakjp/oled.c => keyboards/crkbd/keymaps/edvorakjp/oled.c +2 -2
@@ 2,7 2,7 @@
#include <string.h>
#include "oled.h"

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void render_host_led_state(void) { oled_write(read_host_led_state(), false); }

void render_layer_state(void) {


@@ 52,4 52,4 @@ void oled_task_user(void) {
        render_logo();
    }
}
#endif  // OLED_DRIVER_ENABLE
#endif  // OLED_ENABLE

M keyboards/crkbd/keymaps/edvorakjp/rules.mk => keyboards/crkbd/keymaps/edvorakjp/rules.mk +2 -1
@@ 16,7 16,8 @@ BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight.
SWAP_HANDS_ENABLE = no      # Enable one-hand typing
TAP_DANCE_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend

M keyboards/crkbd/keymaps/gotham/keymap.c => keyboards/crkbd/keymaps/gotham/keymap.c +2 -2
@@ 1,7 1,7 @@
#include QMK_KEYBOARD_H
#include "keycodes.h"

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    include "oled.c"
#endif



@@ 78,7 78,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
#endif

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
    if (record->event.pressed) {
        oled_timer = timer_read();
        add_keylog(keycode);

M keyboards/crkbd/keymaps/gotham/rules.mk => keyboards/crkbd/keymaps/gotham/rules.mk +2 -1
@@ 2,5 2,6 @@ MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = yes
AUDIO_ENABLE = yes
RGBLIGHT_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
LTO_ENABLE = yes

M keyboards/crkbd/keymaps/kidbrazil/keymap.c => keyboards/crkbd/keymaps/kidbrazil/keymap.c +2 -2
@@ 73,7 73,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
      default:
          // Use process_record_keymap to reset timer on all other keypresses to awaken from idle.
          if (record->event.pressed) {
              #ifdef OLED_DRIVER_ENABLE
              #ifdef OLED_ENABLE
                  oled_timer = timer_read32();
              #endif
              // Restore LEDs if they are enabled by user


@@ 125,7 125,7 @@ void matrix_scan_user(void) {
     }
}
// [OLED Configuration] ------------------------------------------------------//
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
// Init Oled and Rotate....
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    if (!is_keyboard_master())

M keyboards/crkbd/keymaps/kidbrazil/rules.mk => keyboards/crkbd/keymaps/kidbrazil/rules.mk +2 -1
@@ 5,7 5,8 @@ AUDIO_ENABLE = no           # Audio output on port C6
MOUSEKEY_ENABLE = no
RGBLIGHT_ENABLE = no
RGB_MATRIX_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

# If you want to change the display of OLED, you need to change here
SRC +=  logo_reader.c \

M keyboards/crkbd/keymaps/mcrown/rules.mk => keyboards/crkbd/keymaps/mcrown/rules.mk +3 -2
@@ 5,8 5,9 @@
#
MOUSEKEY_ENABLE = no        # Mouse keys(+4700)
EXTRAKEY_ENABLE = no        # Audio control and System control(+450)
RGB_MATRIX_ENABLE = yes     # Enable RGB Matrix. 
OLED_DRIVER_ENABLE = yes
RGB_MATRIX_ENABLE = yes     # Enable RGB Matrix.
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = yes    # Breathing sleep LED during USB suspend

M keyboards/crkbd/keymaps/ninjonas/rules.mk => keyboards/crkbd/keymaps/ninjonas/rules.mk +2 -1
@@ 1,6 1,7 @@
RGB_MATRIX_ENABLE = yes
MOUSEKEY_ENABLE = no
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
LTO_ENABLE = yes

# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE

M keyboards/crkbd/keymaps/oled_sample/keymap.c => keyboards/crkbd/keymaps/oled_sample/keymap.c +1 -1
@@ 74,7 74,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
}


#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    if (is_keyboard_master()) {
        return OLED_ROTATION_270;

M keyboards/crkbd/keymaps/oled_sample/rules.mk => keyboards/crkbd/keymaps/oled_sample/rules.mk +2 -1
@@ 4,4 4,5 @@
#   the appropriate keymap folder that will get included automatically
#
RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight.
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/crkbd/keymaps/oo/keymap.c => keyboards/crkbd/keymaps/oo/keymap.c +2 -2
@@ 60,7 60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};


#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#include <stdio.h>
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_master()) {


@@ 163,4 163,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  }
  return true;
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE

M keyboards/crkbd/keymaps/oo/rules.mk => keyboards/crkbd/keymaps/oo/rules.mk +2 -1
@@ 1,1 1,2 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/crkbd/keymaps/rjhilgefort/keymap.c => keyboards/crkbd/keymaps/rjhilgefort/keymap.c +2 -2
@@ 103,7 103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    include <stdio.h>

oled_rotation_t oled_init_user(oled_rotation_t rotation) {


@@ 219,4 219,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  }
  return true;
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE

M keyboards/crkbd/keymaps/rjhilgefort/rules.mk => keyboards/crkbd/keymaps/rjhilgefort/rules.mk +2 -1
@@ 4,4 4,5 @@ BOOTLOADER = atmel-dfu
# https://www.reddit.com/r/olkb/comments/9pyc0u/qmk_media_keys_are_not_working/
EXTRAKEY_ENABLE = yes

OLED_DRIVER_ENABLE  = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/crkbd/keymaps/rpbaptist/config.h => keyboards/crkbd/keymaps/rpbaptist/config.h +1 -1
@@ 25,7 25,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
/* Select hand configuration */
#define EE_HANDS

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    undef SSD1306OLED
#    define OLED_TIMEOUT 600000
#endif

M keyboards/crkbd/keymaps/rpbaptist/keymap.c => keyboards/crkbd/keymaps/rpbaptist/keymap.c +1 -1
@@ 180,7 180,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
    return state;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    if (is_keyboard_master()) {
        return OLED_ROTATION_270;

M keyboards/crkbd/keymaps/rpbaptist/rules.mk => keyboards/crkbd/keymaps/rpbaptist/rules.mk +2 -1
@@ 28,7 28,8 @@ SLEEP_LED_ENABLE   = no    # Breathing sleep LED during USB suspend

BOOTLOADER       = qmk-dfu

OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

ifeq ($(strip $(THEME)), godspeed)
    OPT_DEFS += -DTHEME_GODSPEED

M keyboards/crkbd/keymaps/snowe/rules.mk => keyboards/crkbd/keymaps/snowe/rules.mk +2 -1
@@ 13,7 13,8 @@ UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
SWAP_HANDS_ENABLE = no      # Enable one-hand typing
RGBLIGHT_TWINKLE = no
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
RGB_MATRIX_ENABLE = yes

OCEAN_DREAM_ENABLE = yes

M keyboards/crkbd/keymaps/soundmonster/keymap.c => keyboards/crkbd/keymaps/soundmonster/keymap.c +3 -3
@@ 7,7 7,7 @@ extern keymap_config_t keymap_config;
extern rgblight_config_t rgblight_config;
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
static uint32_t oled_timer = 0;
#endif



@@ 102,7 102,7 @@ void matrix_init_user(void) {
    #endif
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }

void render_space(void) {


@@ 319,7 319,7 @@ void oled_task_user(void) {
#endif
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  if (record->event.pressed) {
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
        oled_timer = timer_read32();
#endif
    // set_timelog();

M keyboards/crkbd/keymaps/soundmonster/rules.mk => keyboards/crkbd/keymaps/soundmonster/rules.mk +2 -1
@@ 2,5 2,6 @@ RGBLIGHT_ENABLE    = no
RGB_MATRIX_ENABLE  = yes
MOUSEKEY_ENABLE    = no
NKRO_ENABLE        = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306


M keyboards/crkbd/keymaps/sulrich/keymap.c => keyboards/crkbd/keymaps/sulrich/keymap.c +2 -2
@@ 57,7 57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_master()) {
    return OLED_ROTATION_180;  // flips the display 180 degrees if offhand


@@ 152,5 152,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  }
  return true;
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE


M keyboards/crkbd/keymaps/sulrich/rules.mk => keyboards/crkbd/keymaps/sulrich/rules.mk +2 -1
@@ 1,2 1,3 @@
EXTRAKEY_ENABLE = yes
OLED_DRIVER_ENABLE  = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/crkbd/keymaps/vayashiko/keymap.c => keyboards/crkbd/keymaps/vayashiko/keymap.c +2 -2
@@ 77,7 77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_master) {
    return OLED_ROTATION_180;  // flips the display 180 degrees if offhand


@@ 179,4 179,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  }
  return true;
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE

M keyboards/crkbd/keymaps/via/keymap.c => keyboards/crkbd/keymaps/via/keymap.c +2 -2
@@ 69,7 69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#include <stdio.h>

oled_rotation_t oled_init_user(oled_rotation_t rotation) {


@@ 173,4 173,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  }
  return true;
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE

M keyboards/crkbd/keymaps/via/rules.mk => keyboards/crkbd/keymaps/via/rules.mk +2 -1
@@ 1,5 1,6 @@
MOUSEKEY_ENABLE     = no     # Mouse keys
RGBLIGHT_ENABLE     = yes    # Enable WS2812 RGB underlight.
VIA_ENABLE          = yes         # Enable VIA
OLED_DRIVER_ENABLE  = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
LTO_ENABLE          = yes

M keyboards/crkbd/keymaps/xyverz/keymap.c => keyboards/crkbd/keymaps/xyverz/keymap.c +2 -2
@@ 100,7 100,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
  return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_master()) {
    return OLED_ROTATION_180;  // flips the display 180 degrees if offhand


@@ 202,4 202,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  }
  return true;
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE

M keyboards/crkbd/keymaps/xyverz/rules.mk => keyboards/crkbd/keymaps/xyverz/rules.mk +2 -1
@@ 1,1 1,2 @@
OLED_DRIVER_ENABLE  = yes
\ No newline at end of file
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/dekunukem/duckypad/rules.mk => keyboards/dekunukem/duckypad/rules.mk +2 -1
@@ 25,4 25,5 @@ WS2812_DRIVER = bitbang
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812

OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/dmqdesign/spin/keymaps/gorbachev/keymap.c => keyboards/dmqdesign/spin/keymaps/gorbachev/keymap.c +1 -1
@@ 160,7 160,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { //This will run every 
    return state;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static const char *ANIMATION_NAMES[] = {
	"unknown",

M keyboards/dmqdesign/spin/keymaps/gorbachev/rules.mk => keyboards/dmqdesign/spin/keymaps/gorbachev/rules.mk +2 -1
@@ 1,3 1,4 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
MOUSEKEY_ENABLE    = no
MIDI_ENABLE        = no

M keyboards/doodboard/duckboard/keymaps/default/keymap.c => keyboards/doodboard/duckboard/keymaps/default/keymap.c +1 -1
@@ 50,7 50,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}


#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }



M keyboards/doodboard/duckboard/rules.mk => keyboards/doodboard/duckboard/rules.mk +2 -1
@@ 22,4 22,5 @@ BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output

ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c => keyboards/doodboard/duckboard_r2/keymaps/default/keymap.c +1 -1
@@ 50,7 50,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}


#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }



M keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c => keyboards/doodboard/duckboard_r2/keymaps/via/keymap.c +1 -1
@@ 57,7 57,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}


#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }



M keyboards/doodboard/duckboard_r2/rules.mk => keyboards/doodboard/duckboard_r2/rules.mk +2 -1
@@ 22,4 22,5 @@ BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output

ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/draculad/config.h => keyboards/draculad/config.h +2 -2
@@ 39,7 39,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define USE_SERIAL
#define SOFT_SERIAL_PIN D2

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
  #define OLED_TIMEOUT 30000
#endif


@@ 66,4 66,4 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.

#define EE_HANDS

#define LAYER_STATE_8BIT
\ No newline at end of file
#define LAYER_STATE_8BIT

M keyboards/draculad/keymaps/default/keymap.c => keyboards/draculad/keymaps/default/keymap.c +1 -1
@@ 63,7 63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE


oled_rotation_t oled_init_user(oled_rotation_t rotation) {

M keyboards/draculad/keymaps/pimoroni/keymap.c => keyboards/draculad/keymaps/pimoroni/keymap.c +1 -1
@@ 77,7 77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};


#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE


oled_rotation_t oled_init_user(oled_rotation_t rotation) {

M keyboards/draculad/keymaps/pimoroni/rules.mk => keyboards/draculad/keymaps/pimoroni/rules.mk +2 -1
@@ 2,5 2,6 @@
POINTING_DEVICE_ENABLE = yes
SRC += drivers/sensors/pimoroni_trackball.c
QUANTUM_LIB_SRC += i2c_master.c
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
MOUSEKEY_ENABLE = no

M keyboards/draculad/rules.mk => keyboards/draculad/rules.mk +2 -1
@@ 21,7 21,8 @@ RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
SPLIT_KEYBOARD = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
WPM_ENABLE = yes
ENCODER_ENABLE = yes
LTO_ENABLE = yes

M keyboards/dumbo/keymaps/default/keymap.c => keyboards/dumbo/keymaps/default/keymap.c +1 -1
@@ 130,7 130,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
    return update_tri_layer_state(state, _NN, _MS, _SP);
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static void render_logo(void) {
    static const char PROGMEM qmk_logo[] = {

M keyboards/dumbo/keymaps/default/rules.mk => keyboards/dumbo/keymaps/default/rules.mk +2 -1
@@ 1,2 1,3 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # Enables the use of one or more encoders

M keyboards/dumbo/keymaps/trip-trap/keymap.c => keyboards/dumbo/keymaps/trip-trap/keymap.c +1 -1
@@ 207,7 207,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
    return update_tri_layer_state(state, _NN, _MS, _SP);
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
char wpm_str[10];

// static void render_logo(void) {

M keyboards/dumbo/keymaps/trip-trap/rules.mk => keyboards/dumbo/keymaps/trip-trap/rules.mk +2 -1
@@ 1,3 1,4 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # Enables the use of one or more encoders
WPM_ENABLE = yes

M keyboards/gergo/keymaps/oled/keymap.c => keyboards/gergo/keymaps/oled/keymap.c +1 -1
@@ 125,7 125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    )
 */

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
	return OLED_ROTATION_180;
}

M keyboards/gergo/keymaps/oled/rules.mk => keyboards/gergo/keymaps/oled/rules.mk +2 -1
@@ 7,7 7,8 @@ BALLER = no 			# Enable to ball out
BALLSTEP = 20  			# Multiple in px to move, multiplied by layer number
SCROLLSTEP = 1 			# Lines to scroll with ball
MOUSEKEY_ENABLE = yes  		# Mouse keys, needed for baller
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
LOCAL_GLCDFONT = yes

#Debug options

M keyboards/getta25/keymaps/oled/keymap.c => keyboards/getta25/keymaps/oled/keymap.c +7 -7
@@ 1,7 1,7 @@
#include QMK_KEYBOARD_H
#include "keymap_jp.h"

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
static uint32_t        oled_timer = 0;
#endif



@@ 38,7 38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
      //|--------+--------+--------+--------+--------|
            KC_P1,   KC_P2,   KC_P3,           KC_DEL,
      //|--------+--------+--------+--------+--------|
LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT,KC_BSPC 
LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT,KC_BSPC
      //`--------------------------------------------'
  ),



@@ 54,7 54,7 @@ LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT,KC_BSPC
      //|--------+--------+--------+--------+--------|
          XXXXXXX, KC_DOWN, XXXXXXX,          _______,
      //|--------+--------+--------+--------+--------|
       MO(_ARROW),       MO(_MACRO), _______, _______ 
       MO(_ARROW),       MO(_MACRO), _______, _______
      //`--------------------------------------------'
  ),



@@ 70,7 70,7 @@ LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT,KC_BSPC
      //|--------+--------+--------+--------+--------|
           KC_F11,  KC_F12,   KC_F3,          _______,
      //|--------+--------+--------+--------+--------|
          _______,          _______, JP_RPRN, _______ 
          _______,          _______, JP_RPRN, _______
      //`--------------------------------------------'
  ),



@@ 86,7 86,7 @@ LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT,KC_BSPC
      //|--------+--------+--------+--------+--------|
          RGB_VAD, RGB_VAI, XXXXXXX,          _______,
      //|--------+--------+--------+--------+--------|
          _______,          _______, RGB_MOD, _______ 
          _______,          _______, RGB_MOD, _______
      //`--------------------------------------------'
  )
};


@@ 118,7 118,7 @@ int RGB_current_mode;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  bool result = false;
  if (record->event.pressed) {
     #ifdef OLED_DRIVER_ENABLE
     #ifdef OLED_ENABLE
        oled_timer = timer_read32();
     #endif
  }


@@ 156,7 156,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  return result;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }

void render_layer_state(void) {

M keyboards/getta25/keymaps/oled/rules.mk => keyboards/getta25/keymaps/oled/rules.mk +2 -1
@@ 1,1 1,2 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/getta25/rules.mk => keyboards/getta25/rules.mk +2 -2
@@ 24,8 24,8 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
AUDIO_ENABLE = no           # Audio output on port C6
UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight. 
OLED_DRIVER_ENABLE = no
RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight.
OLED_ENABLE = no
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend


M keyboards/halfcliff/halfcliff.c => keyboards/halfcliff/halfcliff.c +1 -1
@@ 16,7 16,7 @@

#include "halfcliff.h"

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

// Defines names for use in layer keycodes and the keymap
enum layer_names {

M keyboards/halfcliff/rules.mk => keyboards/halfcliff/rules.mk +1 -1
@@ 24,6 24,6 @@ SPLIT_KEYBOARD = yes
ENCODER_ENABLE = no
POINTING_DEVICE_ENABLE = no
CUSTOM_MATRIX = yes
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no

SRC += matrix.c

M keyboards/handwired/amigopunk/keymaps/default/keymap.c => keyboards/handwired/amigopunk/keymaps/default/keymap.c +1 -1
@@ 46,7 46,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static void render_amigopunk_logo(void) {
    static const char PROGMEM amigopunk_logo[] = {

M keyboards/handwired/amigopunk/rules.mk => keyboards/handwired/amigopunk/rules.mk +2 -1
@@ 21,4 21,5 @@ RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/handwired/d48/keymaps/anderson/keymap.c => keyboards/handwired/d48/keymaps/anderson/keymap.c +1 -1
@@ 246,7 246,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_0;
}

M keyboards/handwired/d48/keymaps/default/keymap.c => keyboards/handwired/d48/keymaps/default/keymap.c +1 -1
@@ 191,7 191,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_0;
}

M keyboards/handwired/d48/rules.mk => keyboards/handwired/d48/rules.mk +2 -1
@@ 20,7 20,8 @@ AUDIO_ENABLE = yes
USE_I2C = no
RGBLIGHT_ENABLE = yes
ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
UNICODE_ENABLE = yes

SRC += ds1307.c taphold.c

M keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/rules.mk => keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/rules.mk +2 -1
@@ 1,4 1,5 @@
KEY_LOCK_ENABLE = yes
CONSOLE_ENABLE = no
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes

M keyboards/handwired/marauder/keymaps/orvia/keymap.c => keyboards/handwired/marauder/keymaps/orvia/keymap.c +1 -1
@@ 57,7 57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};


#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
// WPM-responsive animation stuff here
#    define IDLE_FRAMES 5
#    define IDLE_SPEED 20  // below this wpm value your animation will idle

M keyboards/handwired/marauder/keymaps/orvia/rules.mk => keyboards/handwired/marauder/keymaps/orvia/rules.mk +2 -1
@@ 1,3 1,4 @@
VIA_ENABLE = yes
OLED_DRIVER_ENABLE = yes    # OLED Driver Enable
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # OLED Driver Enable
WPM_ENABLE = yes			# WPM counting Enable

M keyboards/handwired/myskeeb/rules.mk => keyboards/handwired/myskeeb/rules.mk +2 -1
@@ 28,6 28,7 @@ BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no           # Audio output on port C6
UNICODE_ENABLE = no         # Unicode
SPLIT_KEYBOARD = yes        # Enables split keyboard support
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
NO_USB_STARTUP_CHECK = yes
TAP_DANCE_ENABLE = yes

M keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c => keyboards/handwired/obuwunkunubi/spaget/keymaps/default/keymap.c +1 -1
@@ 341,7 341,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
void matrix_init_user(void) {
    set_unicode_input_mode(UC_WINC);
};
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
  oled_write_P(PSTR("       spaget v1\n\n"), false);


M keyboards/handwired/obuwunkunubi/spaget/rules.mk => keyboards/handwired/obuwunkunubi/spaget/rules.mk +2 -1
@@ 28,6 28,7 @@ BLUETOOTH_ENABLE = no    # Enable Bluetooth with the Adafruit EZ-Key HID
SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
AUDIO_ENABLE = no        # Audio output on port C6

OLED_DRIVER_ENABLE = yes # Enable OLED display support
OLED_ENABLE = yes
OLED_DRIVER = SSD1306 # Enable OLED display support
ENCODER_ENABLE = yes     # Enable encoder support


M keyboards/handwired/onekey/keymaps/oled/rules.mk => keyboards/handwired/onekey/keymaps/oled/rules.mk +2 -1
@@ 1,2 1,3 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
TAP_DANCE_ENABLE = yes

M keyboards/handwired/owlet60/keymaps/oled_testing/keymap.c => keyboards/handwired/owlet60/keymaps/oled_testing/keymap.c +1 -1
@@ 73,7 73,7 @@ void led_set_user(uint8_t usb_led) {

}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  //return OLED_ROTATION_180;
  return OLED_ROTATION_180;

M keyboards/handwired/owlet60/keymaps/oled_testing/rules.mk => keyboards/handwired/owlet60/keymaps/oled_testing/rules.mk +2 -1
@@ 1,1 1,2 @@
OLED_DRIVER_ENABLE = yes
\ No newline at end of file
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/handwired/owlet60/rules.mk => keyboards/handwired/owlet60/rules.mk +1 -1
@@ 29,7 29,7 @@ UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no           # Audio output on port C6
CUSTOM_MATRIX = yes
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no

SRC += matrix.c


M keyboards/handwired/pill60/keymaps/default/keymap.c => keyboards/handwired/pill60/keymaps/default/keymap.c +1 -1
@@ 41,7 41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    ),
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static void render_oled(void) {
    oled_write_P(PSTR("Pill60"), false);

M keyboards/handwired/pill60/rules.mk => keyboards/handwired/pill60/rules.mk +2 -1
@@ 15,7 15,8 @@ BACKLIGHT_DRIVER = software
RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes

DEFAULT_FOLDER = handwired/pill60/bluepill

M keyboards/handwired/riblee_f411/rules.mk => keyboards/handwired/riblee_f411/rules.mk +2 -1
@@ 25,5 25,6 @@ AUDIO_ENABLE = no           # Audio output

LAYOUTS = ortho_5x12

OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
RAW_ENABLE = yes

M keyboards/handwired/swiftrax/koalafications/keymaps/default/keymap.c => keyboards/handwired/swiftrax/koalafications/keymaps/default/keymap.c +15 -15
@@ 25,14 25,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    KC_LSFT, KC_Z   , KC_X   , KC_C   , KC_V   , KC_B    ,KC_N   , KC_M   , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,                   KC_UP  , KC_END ,
    KC_LCTL, KC_LGUI, KC_LALT,                           KC_SPC ,          KC_RALT, KC_RGUI, KC_RCTL,                    KC_LEFT, KC_DOWN, KC_RGHT),
   [1] = LAYOUT_all(
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______, _______,
    _______, _______, _______,                   _______,          _______, _______, _______,                            _______, _______, _______),
    [2] = LAYOUT_all(
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______,


@@ 40,7 40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    _______, _______, _______,                   _______,          _______, _______, _______,                            _______, _______, _______)
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_0;


@@ 60,36 60,36 @@ static void render_anim(void){
    static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
        {
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,252,  6,  1,  1,  1,  2,  4, 15,  0,  0,  0,  0, 12, 30, 30, 12,  0,  0, 16, 48, 48, 16,  0,  0, 24, 60, 60, 24,  0,  0,248,  4,  4, 12, 16, 96,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,252,  6,  1,  1,  1,  2,  4, 15,  0,  0,  0,  0, 12, 30, 30, 12,  0,  0, 16, 48, 48, 16,  0,  0, 24, 60, 60, 24,  0,  0,248,  4,  4, 12, 16, 96,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  3,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  6,  7,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  7,  4,  4, 12,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64,
        64,
        },
        {
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,252,  6,  1,  1,  1,  2,  4, 15,  0,  0,  0,  0, 12, 30, 30, 12,  0,  0, 16, 56, 56, 16,  0,  0, 24, 60, 60, 24,  0,  0,128, 64,  0,  0,  0,  0,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,252,  6,  1,  1,  1,  2,  4, 15,  0,  0,  0,  0, 12, 30, 30, 12,  0,  0, 16, 56, 56, 16,  0,  0, 24, 60, 60, 24,  0,  0,128, 64,  0,  0,  0,  0,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  3,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 18, 18, 18, 18,130, 71, 24, 32, 32, 32, 32, 16, 12,  4, 36, 36, 68, 68,  7,  4,  4, 12,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64,
        64,
        },
        {
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,128, 96, 16, 31,  0,  0,  0,  0,  8,  8,  8,  8,  0,  0, 16, 16, 16, 16,  0,  0,  8,  8,  8,  8,  0,  0,128, 64,  0,  0,  0,  0,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,128, 96, 16, 31,  0,  0,  0,  0,  8,  8,  8,  8,  0,  0, 16, 16, 16, 16,  0,  0,  8,  8,  8,  8,  0,  0,128, 64,  0,  0,  0,  0,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1, 17, 17,  9,  9,  9,193, 39,  8, 16, 16, 16, 16,  8, 36, 66,130,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 18, 18, 18, 18,146, 71, 24, 32, 32, 32, 32, 16, 12,  4, 36, 36, 68, 68,  7,  4,  4, 12,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64,
        64,
        },
        {
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,128, 96, 16, 31,  0,  0,  0,  0, 12, 30, 30, 12,  0,  0, 16, 32, 32, 16,  0,  0, 24, 60, 60, 24,  0,  0,128, 64,  0,  0,  0,  0,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,128, 96, 16, 31,  0,  0,  0,  0, 12, 30, 30, 12,  0,  0, 16, 32, 32, 16,  0,  0, 24, 60, 60, 24,  0,  0,128, 64,  0,  0,  0,  0,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  7,  8, 16, 16, 16, 16,  8,  4,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  7, 24, 32, 32, 32, 32, 16, 12,  4,  4,  4,  4,  4,  7,  4,  4, 12,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64,
        64,
        },
        {
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,128, 96, 16, 31,  0,  0,  0,  0, 12, 30, 30, 12,  0,  0,  8, 24, 24,  8,  0,  0, 24, 60, 60, 24,  0,  0,128, 64,  0,  0,  0,  0,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,128, 96, 16, 31,  0,  0,  0,  0, 12, 30, 30, 12,  0,  0,  8, 24, 24,  8,  0,  0, 24, 60, 60, 24,  0,  0,128, 64,  0,  0,  0,  0,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  7,  8, 16, 16, 16, 16,  8,  4,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  7, 24, 32, 32, 32, 32, 16, 12,  4,  4,  4,  4,  4,  7,  4,  4, 12,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64,
        64,
        }


@@ 106,7 106,7 @@ static void render_anim(void){
            animation_phase();
        }
        anim_sleep = timer_read32();
    } 
    }
    else {
        if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT)
            oled_off();


@@ 122,4 122,4 @@ static void render_anim(void){
void oled_task_user(void) {
    render_anim();
}
#endif
\ No newline at end of file
#endif

M keyboards/handwired/swiftrax/koalafications/keymaps/via/keymap.c => keyboards/handwired/swiftrax/koalafications/keymaps/via/keymap.c +15 -15
@@ 25,14 25,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    KC_LSFT, KC_Z   , KC_X   , KC_C   , KC_V   , KC_B    ,KC_N   , KC_M   , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,                   KC_UP  , KC_END ,
    KC_LCTL, KC_LGUI, KC_LALT,                           KC_SPC ,          KC_RALT, KC_RGUI, KC_RCTL,                    KC_LEFT, KC_DOWN, KC_RGHT),
   [1] = LAYOUT_all(
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______, _______,
    _______, _______, _______,                   _______,          _______, _______, _______,                            _______, _______, _______),
    [2] = LAYOUT_all(
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,                   _______,


@@ 40,7 40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    _______, _______, _______,                   _______,          _______, _______, _______,                            _______, _______, _______)
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_0;


@@ 60,36 60,36 @@ static void render_anim(void){
    static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
        {
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,128, 96, 16, 31,  0,  0,  0,  0, 12, 30, 30, 12,  0,  0,  8, 24, 24,  8,  0,  0, 24, 60, 60, 24,  0,  0,128, 64,  0,  0,  0,  0,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,128, 96, 16, 31,  0,  0,  0,  0, 12, 30, 30, 12,  0,  0,  8, 24, 24,  8,  0,  0, 24, 60, 60, 24,  0,  0,128, 64,  0,  0,  0,  0,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  7,  8, 16, 16, 16, 16,  8,  4,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  7, 24, 32, 32, 32, 32, 16, 12,  4,  4,  4,  4,  4,  7,  4,  4, 12,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64,
        64,
        },
        {
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,128, 96, 16, 31,  0,  0,  0,  0, 12, 30, 30, 12,  0,  0, 16, 32, 32, 16,  0,  0, 24, 60, 60, 24,  0,  0,128, 64,  0,  0,  0,  0,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,128, 96, 16, 31,  0,  0,  0,  0, 12, 30, 30, 12,  0,  0, 16, 32, 32, 16,  0,  0, 24, 60, 60, 24,  0,  0,128, 64,  0,  0,  0,  0,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  7,  8, 16, 16, 16, 16,  8,  4,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  7, 24, 32, 32, 32, 32, 16, 12,  4,  4,  4,  4,  4,  7,  4,  4, 12,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64,
        64,
        },
        {
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,128, 96, 16, 31,  0,  0,  0,  0,  8,  8,  8,  8,  0,  0, 16, 16, 16, 16,  0,  0,  8,  8,  8,  8,  0,  0,128, 64,  0,  0,  0,  0,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,128, 96, 16, 31,  0,  0,  0,  0,  8,  8,  8,  8,  0,  0, 16, 16, 16, 16,  0,  0,  8,  8,  8,  8,  0,  0,128, 64,  0,  0,  0,  0,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1, 17, 17,  9,  9,  9,193, 39,  8, 16, 16, 16, 16,  8, 36, 66,130,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 18, 18, 18, 18,146, 71, 24, 32, 32, 32, 32, 16, 12,  4, 36, 36, 68, 68,  7,  4,  4, 12,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64,
        64,
        },
        {
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,252,  6,  1,  1,  1,  2,  4, 15,  0,  0,  0,  0, 12, 30, 30, 12,  0,  0, 16, 56, 56, 16,  0,  0, 24, 60, 60, 24,  0,  0,128, 64,  0,  0,  0,  0,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,252,  6,  1,  1,  1,  2,  4, 15,  0,  0,  0,  0, 12, 30, 30, 12,  0,  0, 16, 56, 56, 16,  0,  0, 24, 60, 60, 24,  0,  0,128, 64,  0,  0,  0,  0,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  3,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 18, 18, 18, 18,130, 71, 24, 32, 32, 32, 32, 16, 12,  4, 36, 36, 68, 68,  7,  4,  4, 12,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64,
        64,
        },
        {
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,252,  6,  1,  1,  1,  2,  4, 15,  0,  0,  0,  0, 12, 30, 30, 12,  0,  0, 16, 48, 48, 16,  0,  0, 24, 60, 60, 24,  0,  0,248,  4,  4, 12, 16, 96,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128,192, 32, 16, 16,  8,  4,  3,  0,  0,  1,  2,  4,  4,  8,  8,  8,  8,  8,  8,  8, 16, 16, 16, 16, 16,  8,  8,  4,  2,  2,126,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,252,  6,  1,  1,  1,  2,  4, 15,  0,  0,  0,  0, 12, 30, 30, 12,  0,  0, 16, 48, 48, 16,  0,  0, 24, 60, 60, 24,  0,  0,248,  4,  4, 12, 16, 96,  0,  0,  0, 15, 48, 96,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  3,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  6,  7,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  7,  4,  4, 12,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8, 24, 16, 16, 16, 16, 16, 16, 16, 16, 16, 48, 32, 32, 32, 32, 32, 32, 96, 64,
        64,
        }


@@ 106,7 106,7 @@ static void render_anim(void){
            animation_phase();
        }
        anim_sleep = timer_read32();
    } 
    }
    else {
        if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT)
            oled_off();


@@ 122,4 122,4 @@ static void render_anim(void){
void oled_task_user(void) {
    render_anim();
}
#endif
\ No newline at end of file
#endif

M keyboards/handwired/swiftrax/koalafications/rules.mk => keyboards/handwired/swiftrax/koalafications/rules.mk +2 -1
@@ 20,5 20,6 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
WPM_ENABLE = yes

M keyboards/handwired/swiftrax/the_galleon/keymaps/default/keymap.c => keyboards/handwired/swiftrax/the_galleon/keymaps/default/keymap.c +21 -21
@@ 18,32 18,32 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

[0] = LAYOUT_all(
    KC_MUTE,  KC_F13,  KC_F14,  KC_F15,  KC_F16, KC_F17, KC_F18, KC_F19, KC_F20,  KC_F21, KC_F22,  KC_F23,    KC_F24,                         KC_MPRV, KC_VOLU, KC_VOLD, KC_MNXT, 
    KC_ESC,   KC_F1,   KC_F2,   KC_F3,   KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,   KC_F9,  KC_F10,  KC_F11,    KC_F12,                         KC_HOME, KC_PGUP, KC_PGDN, KC_END, 
    KC_GRV,   KC_1,    KC_2,    KC_3,    KC_4,   KC_5,   KC_6,   KC_7,   KC_8,    KC_9,   KC_0,    KC_MINS,   KC_EQL,   KC_BSPC,  KC_DEL,     KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, 
    KC_TAB,   KC_Q,    KC_W,    KC_E,    KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,    KC_O,   KC_P,    KC_LBRC,   KC_RBRC,  KC_BSLS,              KC_P7,   KC_P8,   KC_P9,   KC_PPLS, 
    KC_CAPS,  KC_A,    KC_S,    KC_D,    KC_F,   KC_G,   KC_H,   KC_J,   KC_K,    KC_L,   KC_SCLN, KC_QUOT,   KC_ENT,                         KC_P4,   KC_P5,   KC_P6,   KC_PPLS,   
    KC_LSFT,  KC_Z,    KC_X,    KC_C,    KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,             KC_UP,                KC_P1,   KC_P2,   KC_P3,   KC_PENT, 
    KC_LCTL,  KC_LGUI, KC_LALT,                  KC_SPC,                 KC_RALT, KC_RGUI, KC_RCTL,            KC_LEFT, KC_DOWN, KC_RGHT,              KC_P0,   KC_PDOT, KC_PENT), 
    KC_MUTE,  KC_F13,  KC_F14,  KC_F15,  KC_F16, KC_F17, KC_F18, KC_F19, KC_F20,  KC_F21, KC_F22,  KC_F23,    KC_F24,                         KC_MPRV, KC_VOLU, KC_VOLD, KC_MNXT,
    KC_ESC,   KC_F1,   KC_F2,   KC_F3,   KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,   KC_F9,  KC_F10,  KC_F11,    KC_F12,                         KC_HOME, KC_PGUP, KC_PGDN, KC_END,
    KC_GRV,   KC_1,    KC_2,    KC_3,    KC_4,   KC_5,   KC_6,   KC_7,   KC_8,    KC_9,   KC_0,    KC_MINS,   KC_EQL,   KC_BSPC,  KC_DEL,     KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
    KC_TAB,   KC_Q,    KC_W,    KC_E,    KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,    KC_O,   KC_P,    KC_LBRC,   KC_RBRC,  KC_BSLS,              KC_P7,   KC_P8,   KC_P9,   KC_PPLS,
    KC_CAPS,  KC_A,    KC_S,    KC_D,    KC_F,   KC_G,   KC_H,   KC_J,   KC_K,    KC_L,   KC_SCLN, KC_QUOT,   KC_ENT,                         KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
    KC_LSFT,  KC_Z,    KC_X,    KC_C,    KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,             KC_UP,                KC_P1,   KC_P2,   KC_P3,   KC_PENT,
    KC_LCTL,  KC_LGUI, KC_LALT,                  KC_SPC,                 KC_RALT, KC_RGUI, KC_RCTL,            KC_LEFT, KC_DOWN, KC_RGHT,              KC_P0,   KC_PDOT, KC_PENT),
[1] = LAYOUT_all(
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______, 
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______, 
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   _______,  _______,        _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   _______,                  _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______,   
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                      _______,         _______,  _______,  _______,  _______,
    _______,  _______,  _______,                      _______,                                _______,  _______,  _______,            _______,  _______,  _______,         _______,  _______,  _______), 
    _______,  _______,  _______,                      _______,                                _______,  _______,  _______,            _______,  _______,  _______,         _______,  _______,  _______),
[2] = LAYOUT_all(
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______, 
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______, 
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   _______,  _______,        _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   _______,                  _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______,   
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                      _______,         _______,  _______,  _______,  _______,
    _______,  _______,  _______,                      _______,                                _______,  _______,  _______,            _______,  _______,  _______,         _______,  _______,  _______), 
    _______,  _______,  _______,                      _______,                                _______,  _______,  _______,            _______,  _______,  _______,         _______,  _______,  _______),
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_0;


@@ 63,14 63,14 @@ static void render_anim(void){
    static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
        {
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  7, 12, 56,224,128,  0,128,128,192,192,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 64,128,  0,  8, 48, 64,  0, 24,224,  0,  0,  0,192, 32,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128, 64,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,130,132, 72, 72,  8,192,225,242,248,252,252,252,252,248,240,225,192,  4,  2, 34, 18,  9,  8,  8,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 48, 24, 14,  3, 28,112,255,255,255,255,255,255,255,  0,  0,  0,  0,  0,  0,  0,255,255,254,252,252,252,124, 62, 30, 15,  7,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1, 17, 16, 16,  8,136, 64, 35,  7, 15,159, 63, 63, 63,191, 31, 15,  7,  3, 96,128,  2, 18, 33, 33, 65,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128, 64,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,130,132, 72, 72,  8,192,225,242,248,252,252,252,252,248,240,225,192,  4,  2, 34, 18,  9,  8,  8,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 48, 24, 14,  3, 28,112,255,255,255,255,255,255,255,  0,  0,  0,  0,  0,  0,  0,255,255,254,252,252,252,124, 62, 30, 15,  7,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1, 17, 16, 16,  8,136, 64, 35,  7, 15,159, 63, 63, 63,191, 31, 15,  7,  3, 96,128,  2, 18, 33, 33, 65,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192, 96, 56,  8,  7,  3,  7,  7, 15, 15, 31,112,  0,  0,  0,  0,  0,  0,  0,  3,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0, 12,  2,  1,  0,  0,  0,  1,  6,  8,  0,  0,  0,  0,  1,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        },
        {
        0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  2,  4,  4,  8, 48,224,128,  0,128,128,192,192,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 64,128,  8, 48, 64,  0, 24,224,  0,  0,  0,192, 32,  0,  0,  0,  0,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 32, 34, 34, 34, 68, 68,  4,192,225,242,248,252,252,252,252,248,241,224,192,  2,  1, 17,  9,132,132,132,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 64, 32, 16,  8, 20,114,255,255,255,255,255,255,255,  0,  0,  0,  0,  0,  0,  0,127,255,254,252,124, 60, 28, 30, 14,  7,  3,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  8,  8,  8,  4,132, 64, 35,  7,143, 31, 63, 63, 63, 63, 31, 15,  7,  3, 96,128,  1, 17, 32, 32, 64,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 32, 34, 34, 34, 68, 68,  4,192,225,242,248,252,252,252,252,248,241,224,192,  2,  1, 17,  9,132,132,132,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 64, 32, 16,  8, 20,114,255,255,255,255,255,255,255,  0,  0,  0,  0,  0,  0,  0,127,255,254,252,124, 60, 28, 30, 14,  7,  3,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  8,  8,  8,  4,132, 64, 35,  7,143, 31, 63, 63, 63, 63, 31, 15,  7,  3, 96,128,  1, 17, 32, 32, 64,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,127,131,  7,  7, 15, 15, 31,112,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0, 12,  2,  1,  0,  0,  0,  0,  7,  8,  0,  0,  0,  0,  0,  1,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        }
    };


@@ 86,7 86,7 @@ static void render_anim(void){
            animation_phase();
        }
        anim_sleep = timer_read32();
    } 
    }
    else {
        if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT)
            oled_off();

M keyboards/handwired/swiftrax/the_galleon/keymaps/via/keymap.c => keyboards/handwired/swiftrax/the_galleon/keymaps/via/keymap.c +21 -21
@@ 18,32 18,32 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

[0] = LAYOUT_all(
    KC_MUTE,  KC_F13,  KC_F14,  KC_F15,  KC_F16, KC_F17, KC_F18, KC_F19, KC_F20,  KC_F21, KC_F22,  KC_F23,    KC_F24,                         KC_MPRV, KC_VOLU, KC_VOLD, KC_MNXT, 
    KC_ESC,   KC_F1,   KC_F2,   KC_F3,   KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,   KC_F9,  KC_F10,  KC_F11,    KC_F12,                         KC_HOME, KC_PGUP, KC_PGDN, KC_END, 
    KC_GRV,   KC_1,    KC_2,    KC_3,    KC_4,   KC_5,   KC_6,   KC_7,   KC_8,    KC_9,   KC_0,    KC_MINS,   KC_EQL,   KC_BSPC,  KC_DEL,     KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, 
    KC_TAB,   KC_Q,    KC_W,    KC_E,    KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,    KC_O,   KC_P,    KC_LBRC,   KC_RBRC,  KC_BSLS,              KC_P7,   KC_P8,   KC_P9,   KC_PPLS, 
    KC_CAPS,  KC_A,    KC_S,    KC_D,    KC_F,   KC_G,   KC_H,   KC_J,   KC_K,    KC_L,   KC_SCLN, KC_QUOT,   KC_ENT,                         KC_P4,   KC_P5,   KC_P6,   KC_PPLS,   
    KC_LSFT,  KC_Z,    KC_X,    KC_C,    KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,             KC_UP,                KC_P1,   KC_P2,   KC_P3,   KC_PENT, 
    KC_LCTL,  KC_LGUI, KC_LALT,                  KC_SPC,                 KC_RALT, KC_RGUI, KC_RCTL,            KC_LEFT, KC_DOWN, KC_RGHT,              KC_P0,   KC_PDOT, KC_PENT), 
    KC_MUTE,  KC_F13,  KC_F14,  KC_F15,  KC_F16, KC_F17, KC_F18, KC_F19, KC_F20,  KC_F21, KC_F22,  KC_F23,    KC_F24,                         KC_MPRV, KC_VOLU, KC_VOLD, KC_MNXT,
    KC_ESC,   KC_F1,   KC_F2,   KC_F3,   KC_F4,  KC_F5,  KC_F6,  KC_F7,  KC_F8,   KC_F9,  KC_F10,  KC_F11,    KC_F12,                         KC_HOME, KC_PGUP, KC_PGDN, KC_END,
    KC_GRV,   KC_1,    KC_2,    KC_3,    KC_4,   KC_5,   KC_6,   KC_7,   KC_8,    KC_9,   KC_0,    KC_MINS,   KC_EQL,   KC_BSPC,  KC_DEL,     KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
    KC_TAB,   KC_Q,    KC_W,    KC_E,    KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,    KC_O,   KC_P,    KC_LBRC,   KC_RBRC,  KC_BSLS,              KC_P7,   KC_P8,   KC_P9,   KC_PPLS,
    KC_CAPS,  KC_A,    KC_S,    KC_D,    KC_F,   KC_G,   KC_H,   KC_J,   KC_K,    KC_L,   KC_SCLN, KC_QUOT,   KC_ENT,                         KC_P4,   KC_P5,   KC_P6,   KC_PPLS,
    KC_LSFT,  KC_Z,    KC_X,    KC_C,    KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,             KC_UP,                KC_P1,   KC_P2,   KC_P3,   KC_PENT,
    KC_LCTL,  KC_LGUI, KC_LALT,                  KC_SPC,                 KC_RALT, KC_RGUI, KC_RCTL,            KC_LEFT, KC_DOWN, KC_RGHT,              KC_P0,   KC_PDOT, KC_PENT),
[1] = LAYOUT_all(
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______, 
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______, 
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   _______,  _______,        _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   _______,                  _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______,   
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                      _______,         _______,  _______,  _______,  _______,
    _______,  _______,  _______,                      _______,                                _______,  _______,  _______,            _______,  _______,  _______,         _______,  _______,  _______), 
    _______,  _______,  _______,                      _______,                                _______,  _______,  _______,            _______,  _______,  _______,         _______,  _______,  _______),
[2] = LAYOUT_all(
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______, 
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______, 
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   _______,  _______,        _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,   _______,                  _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______,   
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                             _______,  _______,  _______,  _______,
    _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,                      _______,         _______,  _______,  _______,  _______,
    _______,  _______,  _______,                      _______,                                _______,  _______,  _______,            _______,  _______,  _______,         _______,  _______,  _______), 
    _______,  _______,  _______,                      _______,                                _______,  _______,  _______,            _______,  _______,  _______,         _______,  _______,  _______),
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_0;


@@ 63,14 63,14 @@ static void render_anim(void){
    static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
        {
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  7, 12, 56,224,128,  0,128,128,192,192,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 64,128,  0,  8, 48, 64,  0, 24,224,  0,  0,  0,192, 32,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128, 64,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,130,132, 72, 72,  8,192,225,242,248,252,252,252,252,248,240,225,192,  4,  2, 34, 18,  9,  8,  8,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 48, 24, 14,  3, 28,112,255,255,255,255,255,255,255,  0,  0,  0,  0,  0,  0,  0,255,255,254,252,252,252,124, 62, 30, 15,  7,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1, 17, 16, 16,  8,136, 64, 35,  7, 15,159, 63, 63, 63,191, 31, 15,  7,  3, 96,128,  2, 18, 33, 33, 65,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,128, 64,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,130,132, 72, 72,  8,192,225,242,248,252,252,252,252,248,240,225,192,  4,  2, 34, 18,  9,  8,  8,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 48, 24, 14,  3, 28,112,255,255,255,255,255,255,255,  0,  0,  0,  0,  0,  0,  0,255,255,254,252,252,252,124, 62, 30, 15,  7,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1, 17, 16, 16,  8,136, 64, 35,  7, 15,159, 63, 63, 63,191, 31, 15,  7,  3, 96,128,  2, 18, 33, 33, 65,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192, 96, 56,  8,  7,  3,  7,  7, 15, 15, 31,112,  0,  0,  0,  0,  0,  0,  0,  3,  1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0, 12,  2,  1,  0,  0,  0,  1,  6,  8,  0,  0,  0,  0,  1,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        },
        {
        0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  2,  4,  4,  8, 48,224,128,  0,128,128,192,192,192,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 64,128,  8, 48, 64,  0, 24,224,  0,  0,  0,192, 32,  0,  0,  0,  0,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 32, 34, 34, 34, 68, 68,  4,192,225,242,248,252,252,252,252,248,241,224,192,  2,  1, 17,  9,132,132,132,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 64, 32, 16,  8, 20,114,255,255,255,255,255,255,255,  0,  0,  0,  0,  0,  0,  0,127,255,254,252,124, 60, 28, 30, 14,  7,  3,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  8,  8,  8,  4,132, 64, 35,  7,143, 31, 63, 63, 63, 63, 31, 15,  7,  3, 96,128,  1, 17, 32, 32, 64,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,255,255,255,255,255,255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 32, 34, 34, 34, 68, 68,  4,192,225,242,248,252,252,252,252,248,241,224,192,  2,  1, 17,  9,132,132,132,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 64, 32, 16,  8, 20,114,255,255,255,255,255,255,255,  0,  0,  0,  0,  0,  0,  0,127,255,254,252,124, 60, 28, 30, 14,  7,  3,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  8,  8,  8,  4,132, 64, 35,  7,143, 31, 63, 63, 63, 63, 31, 15,  7,  3, 96,128,  1, 17, 32, 32, 64,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,127,131,  7,  7, 15, 15, 31,112,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  0, 12,  2,  1,  0,  0,  0,  0,  7,  8,  0,  0,  0,  0,  0,  1,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        }
    };


@@ 86,7 86,7 @@ static void render_anim(void){
            animation_phase();
        }
        anim_sleep = timer_read32();
    } 
    }
    else {
        if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT)
            oled_off();

M keyboards/handwired/swiftrax/the_galleon/rules.mk => keyboards/handwired/swiftrax/the_galleon/rules.mk +2 -1
@@ 21,4 21,5 @@ RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
ENCODER_ENABLE = no         # Rotary Encoder
OLED_DRIVER_ENABLE = yes    # I2C OLED
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # I2C OLED

M keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c => keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/keymap.c +1 -1
@@ 139,7 139,7 @@ void process_mouse_user(report_mouse_t* mouse_report, int8_t x, int8_t y) {
        mouse_report->x = x;
        mouse_report->y = y;
    }
#    ifdef OLED_DRIVER_ENABLE
#    ifdef OLED_ENABLE
    if (x || y) oled_timer = timer_read32();
#    endif
}

M keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/rules.mk => keyboards/handwired/tractyl_manuform/4x6_right/keymaps/drashna/rules.mk +1 -1
@@ 4,6 4,6 @@ HAPTIC_ENABLE                = no
COMMAND_ENABLE               = no
TAP_DANCE_ENABLE             = yes
UNICODE_ENABLE               = yes
OLED_DRIVER_ENABLE           = yes
OLED_ENABLE          = yes
WPM_ENABLE                   = yes
# DEBOUNCE_TYPE = sym_eager_pk

M keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c => keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c +1 -1
@@ 172,7 172,7 @@ bool            tap_toggling          = false;
void process_mouse_user(report_mouse_t* mouse_report, int8_t x, int8_t y) {
    if (x != 0 && y != 0) {
        mouse_timer = timer_read();
#    ifdef OLED_DRIVER_ENABLE
#    ifdef OLED_ENABLE
        oled_timer = timer_read32();
#    endif
        if (timer_elapsed(mouse_debounce_timer) > TAP_CHECK) {

M keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rules.mk => keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/rules.mk +1 -1
@@ 5,7 5,7 @@ HAPTIC_ENABLE                = no
COMMAND_ENABLE               = no
TAP_DANCE_ENABLE             = yes
UNICODE_ENABLE               = yes
OLED_DRIVER_ENABLE           = yes
OLED_ENABLE          = yes
WPM_ENABLE                   = yes
ENCODER_ENABLE               = yes
ENCODER_MAP_ENABLE           = yes

M keyboards/helix/pico/local_features.mk => keyboards/helix/pico/local_features.mk +2 -1
@@ 138,7 138,6 @@ ifneq ($(strip $(SHOW_HELIX_OPTIONS)),)
  $(eval $(call HELIX_CUSTOMISE_MSG))
  ifneq ($(strip $(SHOW_VERBOSE_INFO)),)
     $(info -- RGBLIGHT_ENABLE    = $(RGBLIGHT_ENABLE))
     $(info -- OLED_DRIVER_ENABLE = $(OLED_DRIVER_ENABLE))
     $(info -- CONSOLE_ENABLE     = $(CONSOLE_ENABLE))
     $(info -- OPT_DEFS           = $(OPT_DEFS))
     $(info -- SPLIT_KEYBOARD     = $(SPLIT_KEYBOARD))


@@ 146,3 145,5 @@ ifneq ($(strip $(SHOW_HELIX_OPTIONS)),)
     $(info )
  endif
endif

OLED_ENABLE = no # disable OLED in TOP/common_features.mk

M keyboards/helix/rev2/config.h => keyboards/helix/rev2/config.h +2 -2
@@ 42,8 42,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
// #define EE_HANDS

// Helix keyboard OLED support
//      see ./rules.mk: OLED_ENABLE=yes or no
#ifdef OLED_ENABLE
//      see ./local_features.mk: OLED_SELECT=local
#ifdef OLED_LOCAL_ENABLE
  #define SSD1306OLED
#endif


M keyboards/helix/rev2/keymaps/default/oled_display.c => keyboards/helix/rev2/keymaps/default/oled_display.c +2 -2
@@ 36,9 36,9 @@ enum layer_number {
};

//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
#if defined(SSD1306OLED) || defined(OLED_DRIVER_ENABLE)
#if defined(SSD1306OLED) || defined(OLED_ENABLE)

#    if defined(OLED_DRIVER_ENABLE)
#    if defined(OLED_ENABLE)
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    if (is_keyboard_master()) {
        return OLED_ROTATION_0;

M keyboards/helix/rev2/keymaps/edvorakjp/oled.c => keyboards/helix/rev2/keymaps/edvorakjp/oled.c +2 -2
@@ 2,7 2,7 @@
#include <string.h>
#include "oled.h"

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void render_host_led_state(void) {
    char    led_state_str[24];
    uint8_t leds = host_keyboard_leds();


@@ 65,4 65,4 @@ void oled_task_user(void) {
        render_logo();
    }
}
#endif  // OLED_DRIVER_ENABLE
#endif  // OLED_ENABLE

M keyboards/helix/rev2/keymaps/five_rows/oled_display.c => keyboards/helix/rev2/keymaps/five_rows/oled_display.c +2 -2
@@ 35,9 35,9 @@ void init_helix_oled(void) {
}

//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
#if defined(SSD1306OLED) || defined(OLED_DRIVER_ENABLE)
#if defined(SSD1306OLED) || defined(OLED_ENABLE)

#    if defined(OLED_DRIVER_ENABLE)
#    if defined(OLED_ENABLE)
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    if (is_keyboard_master()) {
        return OLED_ROTATION_0;

M keyboards/helix/rev2/keymaps/five_rows/rules.mk => keyboards/helix/rev2/keymaps/five_rows/rules.mk +0 -1
@@ 31,7 31,6 @@ ifneq ($(strip $(HELIX)),)
    $(if $(SHOW_PARCE),$(info parse -$1-))  #debug
    ifeq ($(strip $1),dispoff)
        OLED_ENABLE = no
        OLED_DRIVER_ENABLE = no
        LED_BACK_ENABLE = no
        LED_UNDERGLOW_ENABLE = no
    endif

M keyboards/helix/rev2/keymaps/xulkal/rules.mk => keyboards/helix/rev2/keymaps/xulkal/rules.mk +2 -1
@@ 4,7 4,8 @@ OPT_DEFS += -DRGBLIGHT_ANIMATIONS
# Helix specific define for correct RGBLED_NUM
OPT_DEFS += -DRGBLED_BACK

OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
# Helix specific font file
OPT_DEFS += -DOLED_FONT_H=\"common/glcdfont.c\"
# Xulkal specific oled define

M keyboards/helix/rev2/local_features.mk => keyboards/helix/rev2/local_features.mk +7 -3
@@ 156,17 156,20 @@ endif

ifeq ($(strip $(OLED_ENABLE)), yes)
    ifeq ($(strip $(OLED_SELECT)),core)
        OLED_DRIVER_ENABLE = yes
        OLED_ENABLE = yes
        OLED_DRIVER = SSD1306
        ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
           OPT_DEFS += -DOLED_FONT_H=\<helixfont.h\>
        else
           OPT_DEFS += -DOLED_FONT_H=\"common/glcdfont.c\"
        endif
    else
        OLED_ENABLE = no # disable OLED in TOP/common_features.mk
        OLED_LOCAL_ENABLE = yes
        SRC += local_drivers/i2c.c
        SRC += local_drivers/ssd1306.c
        KEYBOARD_PATHS += $(HELIX_TOP_DIR)/local_drivers
        OPT_DEFS += -DOLED_ENABLE
        OPT_DEFS += -DOLED_LOCAL_ENABLE
        ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
            OPT_DEFS += -DLOCAL_GLCDFONT
        endif


@@ 177,7 180,8 @@ ifneq ($(strip $(SHOW_HELIX_OPTIONS)),)
  $(eval $(call HELIX_CUSTOMISE_MSG))
  ifneq ($(strip $(SHOW_VERBOSE_INFO)),)
     $(info -- RGBLIGHT_ENABLE    = $(RGBLIGHT_ENABLE))
     $(info -- OLED_DRIVER_ENABLE = $(OLED_DRIVER_ENABLE))
     $(info -- OLED_DRIVER        = $(OLED_DRIVER))
     $(info -- OLED_LOCAL_ENABLE  = $(OLED_LOCAL_ENABLE))
     $(info -- CONSOLE_ENABLE     = $(CONSOLE_ENABLE))
     $(info -- OPT_DEFS           = $(OPT_DEFS))
     $(info -- SPLIT_KEYBOARD     = $(SPLIT_KEYBOARD))

M keyboards/helix/rev3_4rows/oled_display.c => keyboards/helix/rev3_4rows/oled_display.c +1 -1
@@ 35,7 35,7 @@ enum layer_names {
  _ADJUST
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

void render_status(void) {


M keyboards/helix/rev3_4rows/rules.mk => keyboards/helix/rev3_4rows/rules.mk +2 -1
@@ 3,7 3,8 @@ RGBLIGHT_ENABLE = yes   # Enable keyboard RGB underglow
SPLIT_KEYBOARD = yes
RGB_MATRIX_ENABLE = no
RGB_MATRIX_DRIVER = WS2812
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes
DIP_SWITCH_ENABLE = no
LTO_ENABLE = yes

M keyboards/helix/rev3_5rows/keymaps/five_rows/oled_display.c => keyboards/helix/rev3_5rows/keymaps/five_rows/oled_display.c +2 -2
@@ 35,9 35,9 @@ void init_helix_oled(void) {
}

//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
#if defined(SSD1306OLED) || defined(OLED_DRIVER_ENABLE)
#if defined(SSD1306OLED) || defined(OLED_ENABLE)

#    if defined(OLED_DRIVER_ENABLE)
#    if defined(OLED_ENABLE)
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    if (is_keyboard_master()) {
        return OLED_ROTATION_0;

M keyboards/helix/rev3_5rows/keymaps/five_rows/rules.mk => keyboards/helix/rev3_5rows/keymaps/five_rows/rules.mk +2 -2
@@ 19,7 19,7 @@ ifneq ($(strip $(HELIX)),)
    # parse 'dispoff', 'consle', 'back', 'oled', 'no-ani', 'mini-ani', 'lto', 'no-lto', 'no-enc', 'scan'
    $(if $(SHOW_PARCE),$(info parse .$1.))  #debug
    ifeq ($(strip $1),dispoff)
        OLED_DRIVER_ENABLE = no
        OLED_ENABLE = no
        RGBLIGHT_ENABLE = no
    endif
    ifeq ($(strip $1),console)


@@ 38,7 38,7 @@ ifneq ($(strip $(HELIX)),)
        ENCODER_ENABLE = no
    endif
    ifeq ($(strip $1),oled)
        OLED_DRIVER_ENABLE = yes
        OLED_ENABLE = yes
    endif
    ifeq ($(strip $1),back)
        RGBLIGHT_ENABLE = yes

M keyboards/helix/rev3_5rows/oled_display.c => keyboards/helix/rev3_5rows/oled_display.c +1 -1
@@ 35,7 35,7 @@ enum layer_names {
  _ADJUST
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

void render_status(void) {


M keyboards/helix/rev3_5rows/rules.mk => keyboards/helix/rev3_5rows/rules.mk +2 -1
@@ 3,7 3,8 @@ RGBLIGHT_ENABLE = yes   # Enable keyboard RGB underglow
SPLIT_KEYBOARD = yes
RGB_MATRIX_ENABLE = no
RGB_MATRIX_DRIVER = WS2812
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes
DIP_SWITCH_ENABLE = no
LTO_ENABLE = yes

M keyboards/jagdpietr/drakon/drakon.c => keyboards/jagdpietr/drakon/drakon.c +1 -1
@@ 28,7 28,7 @@ bool encoder_update_kb(uint8_t index, bool clockwise) {
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

// Defines names for use in layer keycodes and the keymap
enum Layer_names {

M keyboards/jagdpietr/drakon/rules.mk => keyboards/jagdpietr/drakon/rules.mk +2 -1
@@ 23,5 23,6 @@ AUDIO_ENABLE = no           # Audio output

LTO_ENABLE = yes
WPM_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes

M keyboards/keybage/radpad/config.h => keyboards/keybage/radpad/config.h +1 -1
@@ 61,7 61,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define BOOTMAGIC_LITE_COLUMN 3

/* OLED Configuration */
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
    #define OLED_TIMEOUT	    60000
    #define OLED_LOGO_TIMEOUT   3000  // How long (in ms) the logo appears at start up
#endif

M keyboards/keybage/radpad/keymaps/default/keymap.c => keyboards/keybage/radpad/keymaps/default/keymap.c +1 -1
@@ 54,7 54,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
static uint32_t oled_logo_timer = 0;
bool oled_logo_cleared = false; // Set to true if you don't want a logo at all


M keyboards/keybage/radpad/rules.mk => keyboards/keybage/radpad/rules.mk +2 -1
@@ 21,5 21,6 @@ RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
LTO_ENABLE = yes

M keyboards/keycapsss/kimiko/keymaps/default/keymap.c => keyboards/keycapsss/kimiko/keymaps/default/keymap.c +1 -1
@@ 122,7 122,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
    return state;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    if (is_keyboard_master()) {
        return OLED_ROTATION_270;

M keyboards/keycapsss/kimiko/keymaps/default/rules.mk => keyboards/keycapsss/kimiko/keymaps/default/rules.mk +2 -1
@@ 1,4 1,5 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # ENables the use of one or more encoders
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow


M keyboards/keycapsss/plaid_pad/keymaps/default/keymap.c => keyboards/keycapsss/plaid_pad/keymaps/default/keymap.c +1 -1
@@ 34,7 34,7 @@ void keyboard_post_init_user(void) {


// Rev3 and above only
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
  oled_write_ln_P(PSTR("Plaid-Pad ///////////"), false);
}

M keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c => keyboards/keycapsss/plaid_pad/keymaps/oled/keymap.c +1 -1
@@ 98,7 98,7 @@ void process_combo_event(uint16_t combo_index, bool pressed) {
  }
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

void render_space(void) {
  oled_write_P(PSTR("     "), false);

M keyboards/keycapsss/plaid_pad/keymaps/oled/rules.mk => keyboards/keycapsss/plaid_pad/keymaps/oled/rules.mk +2 -1
@@ 1,2 1,3 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
COMBO_ENABLE = yes

M keyboards/keycapsss/plaid_pad/keymaps/via/keymap.c => keyboards/keycapsss/plaid_pad/keymaps/via/keymap.c +1 -1
@@ 61,7 61,7 @@ void keyboard_post_init_user(void) {


// Rev3 and above only
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
  oled_write_ln_P(PSTR("Plaid-Pad ///////////"), false);
}

M keyboards/keycapsss/plaid_pad/rev3/rules.mk => keyboards/keycapsss/plaid_pad/rev3/rules.mk +2 -1
@@ 1,2 1,3 @@
ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays

M keyboards/kikoslab/kl90/keymaps/default/keymap.c => keyboards/kikoslab/kl90/keymaps/default/keymap.c +1 -1
@@ 61,7 61,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_0;

M keyboards/kikoslab/kl90/keymaps/via/keymap.c => keyboards/kikoslab/kl90/keymaps/via/keymap.c +1 -1
@@ 61,7 61,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_0;

M keyboards/kikoslab/kl90/rules.mk => keyboards/kikoslab/kl90/rules.mk +2 -1
@@ 21,4 21,5 @@ RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/kingly_keys/romac/keymaps/boss566y/keymap.c => keyboards/kingly_keys/romac/keymaps/boss566y/keymap.c +2 -2
@@ 71,9 71,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {



#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_270; 
    return OLED_ROTATION_270;
}

void oled_task_user(void) {

M keyboards/kingly_keys/romac/keymaps/boss566y/rules.mk => keyboards/kingly_keys/romac/keymaps/boss566y/rules.mk +2 -1
@@ 1,3 1,4 @@
VIA_ENABLE = yes
BOOTLOADER = qmk-dfu
OLED_DRIVER_ENABLE = yes    # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C
\ No newline at end of file
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C

M keyboards/kingly_keys/romac_plus/keymaps/default/keymap.c => keyboards/kingly_keys/romac_plus/keymaps/default/keymap.c +2 -2
@@ 27,7 27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
		KC_1, KC_2, KC_3,
		MO(1), KC_0, KC_DOT
	),
  

	[FN] = LAYOUT(
		KC_TRNS, KC_HOME, KC_PGUP,
		KC_TRNS, KC_END, KC_PGDN,


@@ 36,7 36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
	)
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_270;  // flips the display 180 degrees if offhand
}

M keyboards/kingly_keys/romac_plus/rules.mk => keyboards/kingly_keys/romac_plus/rules.mk +2 -1
@@ 27,4 27,5 @@ UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no           # Audio output on port C6
ENCODER_ENABLE = yes        # Enable support for EC11 Rotary Encoder
OLED_DRIVER_ENABLE = yes    # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C

M keyboards/kiwikey/wanderland/keymaps/stanrc85/keymap.c => keyboards/kiwikey/wanderland/keymaps/stanrc85/keymap.c +1 -1
@@ 50,7 50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
  static const char PROGMEM qmk_logo[] = {
        0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,

M keyboards/kiwikey/wanderland/keymaps/stanrc85/rules.mk => keyboards/kiwikey/wanderland/keymaps/stanrc85/rules.mk +2 -1
@@ 1,1 1,2 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/knobgoblin/knobgoblin.c => keyboards/knobgoblin/knobgoblin.c +1 -1
@@ 38,7 38,7 @@ bool encoder_update_kb(uint8_t index, bool clockwise) {
}
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
/* rotate screen for proper orentation*/
__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }


M keyboards/knobgoblin/rules.mk => keyboards/knobgoblin/rules.mk +2 -1
@@ 22,4 22,5 @@ BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output

ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/latinpad/keymaps/default/keymap.c => keyboards/latinpad/keymaps/default/keymap.c +1 -1
@@ 48,7 48,7 @@ static void render_logo(void) {
    oled_write_P(qmk_logo, false);
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) { render_logo(); }
#endif


M keyboards/latinpad/keymaps/via/keymap.c => keyboards/latinpad/keymaps/via/keymap.c +1 -1
@@ 46,7 46,7 @@ static void render_logo(void) {
    oled_write_P(qmk_logo, false);
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) { render_logo(); }
#endif


M keyboards/latinpad/rules.mk => keyboards/latinpad/rules.mk +2 -1
@@ 23,7 23,8 @@ NKRO_ENABLE = no            # USB Nkey Rollover - if this doesn't work, see here
BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812

M keyboards/latinpadble/keymaps/default/keymap.c => keyboards/latinpadble/keymaps/default/keymap.c +1 -1
@@ 34,7 34,7 @@ static void render_logo(void) {
    oled_write_P(qmk_logo, false);
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) { render_logo(); }
#endif


M keyboards/latinpadble/keymaps/via/keymap.c => keyboards/latinpadble/keymaps/via/keymap.c +1 -1
@@ 63,7 63,7 @@ static void render_logo(void) {
    oled_write_P(qmk_logo, false);
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) { render_logo(); }
#endif


M keyboards/latinpadble/rules.mk => keyboards/latinpadble/rules.mk +2 -1
@@ 25,5 25,6 @@ BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output

BLUETOOTH = AdafruitBLE
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes

M keyboards/lck75/lck75.c => keyboards/lck75/lck75.c +1 -1
@@ 32,7 32,7 @@ bool encoder_update_kb(uint8_t index, bool clockwise) {
#define TAP_SPEED 40
#define ANIM_FRAME_DURATION 200
#define ANIM_SIZE 512
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;
}

M keyboards/lck75/rules.mk => keyboards/lck75/rules.mk +3 -2
@@ 24,8 24,9 @@ RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
UNICODE_ENABLE = yes
OLED_DRIVER_ENABLE = yes
ENCODER_ENABLE = yes   
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes
WPM_ENABLE = yes
LTO_ENABLE = no
AUTO_SHIFT_ENABLE = no

M keyboards/le_chiffre/keymaps/default/keymap.c => keyboards/le_chiffre/keymaps/default/keymap.c +1 -1
@@ 90,7 90,7 @@ combo_t key_combos[COMBO_COUNT] = {
};
#endif

#ifdef OLED_DRIVER_ENABLE  //Special thanks to Sickbabies for this great OLED widget!
#ifdef OLED_ENABLE  //Special thanks to Sickbabies for this great OLED widget!
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_90;  // rotates for proper orientation
}

M keyboards/le_chiffre/keymaps/via/keymap.c => keyboards/le_chiffre/keymaps/via/keymap.c +1 -1
@@ 49,7 49,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
    return true;
}

#ifdef OLED_DRIVER_ENABLE  //Special thanks to Sickbabies for this great OLED widget!
#ifdef OLED_ENABLE  //Special thanks to Sickbabies for this great OLED widget!
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_90;  // rotates for proper orientation
}

M keyboards/le_chiffre/rules.mk => keyboards/le_chiffre/rules.mk +1 -1
@@ 19,7 19,7 @@ NKRO_ENABLE = yes           # USB Nkey Rollover
RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
TAP_DANCE_ENABLE = no
ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
LTO_ENABLE = yes

M keyboards/lily58/keymaps/barabas/keymap.c => keyboards/lily58/keymaps/barabas/keymap.c +4 -4
@@ 124,8 124,8 @@ void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
    }
}

// SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk
#ifdef OLED_DRIVER_ENABLE
// SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    if (!is_keyboard_master()) return OLED_ROTATION_180;  // flips the display 180 degrees if offhand


@@ 180,11 180,11 @@ void oled_task_user(void) {
        oled_write(read_logo(), false);
    }
}
#endif  // OLED_DRIVER_ENABLE
#endif  // OLED_ENABLE

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    if (record->event.pressed) {
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
        set_keylog(keycode, record);
#endif
    }

M keyboards/lily58/keymaps/chuan/keymap.c => keyboards/lily58/keymaps/chuan/keymap.c +2 -2
@@ 130,7 130,7 @@ void matrix_init_user(void) {
    #endif
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_master())


@@ 169,7 169,7 @@ void oled_task_user(void) {
    // oled_write_ln(encoder_debug, false);
  }
}
#endif //OLED_DRIVER_ENABLE
#endif //OLED_ENABLE

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  if (record->event.pressed) {

M keyboards/lily58/keymaps/curry/rules.mk => keyboards/lily58/keymaps/curry/rules.mk +1 -1
@@ 10,7 10,7 @@ COMMAND_ENABLE          = no
RGBLIGHT_ENABLE         = no
RGB_MATRIX_ENABLE       = no

OLED_DRIVER_ENABLE      = yes
OLED_ENABLE     = yes

BOOTLOADER              = atmel-dfu
SPLIT_TRANSPORT         = mirror

M keyboards/lily58/keymaps/cykedev/keymap.c => keyboards/lily58/keymaps/cykedev/keymap.c +2 -2
@@ 105,7 105,7 @@ bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) {
    }
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_master())
    return OLED_ROTATION_180;


@@ 117,5 117,5 @@ const char *read_logo(void);
void oled_task_user(void) {
  oled_write_ln(read_logo(), false);
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE


M keyboards/lily58/keymaps/cykedev/rules.mk => keyboards/lily58/keymaps/cykedev/rules.mk +2 -2
@@ 1,9 1,9 @@
AUTO_SHIFT_ENABLE = no
OLED_DRIVER_ENABLE= yes
OLED_ENABLE= yes

EXTRAKEY_ENABLE = yes

SRC +=  ./lib/logo_reader.c 
SRC +=  ./lib/logo_reader.c
#         ./lib/keylogger.c \
#         ./lib/mode_icon_reader.c \
#         ./lib/timelogger.c \

M keyboards/lily58/keymaps/datadavd/keymap.c => keyboards/lily58/keymaps/datadavd/keymap.c +4 -4
@@ 114,8 114,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};

//SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk
#ifdef OLED_DRIVER_ENABLE
//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_master())


@@ 226,11 226,11 @@ void oled_task_user(void) {
    render_lfc_logo();
  }
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  if (record->event.pressed) {
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#endif
  }
  return true;

M keyboards/lily58/keymaps/default/keymap.c => keyboards/lily58/keymaps/default/keymap.c +4 -4
@@ 101,8 101,8 @@ layer_state_t layer_state_set_user(layer_state_t state) {
  return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}

//SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk
#ifdef OLED_DRIVER_ENABLE
//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_master())


@@ 135,11 135,11 @@ void oled_task_user(void) {
    oled_write(read_logo(), false);
  }
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  if (record->event.pressed) {
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
    set_keylog(keycode, record);
#endif
    // set_timelog();

M keyboards/lily58/keymaps/default/rules.mk => keyboards/lily58/keymaps/default/rules.mk +2 -2
@@ 13,9 13,9 @@ MIDI_ENABLE = no            # MIDI controls
AUDIO_ENABLE = no           # Audio output on port C6
UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no       # Enable WS2812 RGB underlight. 
RGBLIGHT_ENABLE = no       # Enable WS2812 RGB underlight.
SWAP_HANDS_ENABLE = no      # Enable one-hand typing
OLED_DRIVER_ENABLE= yes     # OLED display
OLED_ENABLE= yes     # OLED display

# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend

M keyboards/lily58/keymaps/drasbeck/keymap.c => keyboards/lily58/keymaps/drasbeck/keymap.c +4 -4
@@ 71,8 71,8 @@ void matrix_init_user(void) {
#endif
}

//SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk
#ifdef OLED_DRIVER_ENABLE
//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_master())


@@ 105,11 105,11 @@ void oled_task_user(void) {
    oled_write(read_logo(), false);
  }
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  if (record->event.pressed) {
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
    set_keylog(keycode, record);
#endif
    // set_timelog();

M keyboards/lily58/keymaps/drasbeck/rules.mk => keyboards/lily58/keymaps/drasbeck/rules.mk +2 -1
@@ 12,7 12,8 @@ AUDIO_ENABLE = no           # Audio output
BLUETOOTH_ENABLE = no       # Enable Bluetooth
RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
SWAP_HANDS_ENABLE = no      # Enable one-hand typing
OLED_DRIVER_ENABLE = yes    # OLED display
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # OLED display
ENCODER_ENABLE = yes        # Enable encoder

# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE

M keyboards/lily58/keymaps/lily58l/keymap.c => keyboards/lily58/keymaps/lily58l/keymap.c +3 -3
@@ 126,8 126,8 @@ layer_state_t layer_state_set_user(layer_state_t state) {
    return state;
}

//SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk
#ifdef OLED_DRIVER_ENABLE
//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    if (is_keyboard_master()) {


@@ 286,7 286,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    }
    return true;
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE


// Rotary encoder related code

M keyboards/lily58/keymaps/mikefightsbears/keymap.c => keyboards/lily58/keymaps/mikefightsbears/keymap.c +6 -6
@@ 60,7 60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 * |------+------+------+------+------+------|                    |------+------+------+------+------+------|
 * |      |      | left |  dn  | rght |      |-------.    ,-------|      | home | pgdn | end  |      | INS  |
 * |------+------+------+------+------+------|       |    |       |------+------+------+------+------+------|
 * |      |      |      |      |      |      |-------|    |-------|      | mute | prev | next | play |  
 * |      |      |      |      |      |      |-------|    |-------|      | mute | prev | next | play |
 * `-----------------------------------------/       /     \      \-----------------------------------------'
 *                   |      |      |      | /       /       \      \  |      | vol- | vol+ |
 *                   |      |      |      |/       /         \      \ |      |      |      |


@@ 81,7 81,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 * |------+------+------+------+------+------|                    |------+------+------+------+------+------|
 * |      |      | left |  dn  | rght |      |-------.    ,-------|      | home | pgdn | end  |      | INS  |
 * |------+------+------+------+------+------|       |    |       |------+------+------+------+------+------|
 * |      |      |      |      |      |      |-------|    |-------|      | mute | prev | next | play |  
 * |      |      |      |      |      |      |-------|    |-------|      | mute | prev | next | play |
 * `-----------------------------------------/       /     \      \-----------------------------------------'
 *                   |      |      |      | /       /       \      \  |      | vol- | vol+ |
 *                   |      |      |      |/       /         \      \ |      |      |      |


@@ 135,8 135,8 @@ void matrix_init_user(void) {
    #endif
}

//SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk
#ifdef OLED_DRIVER_ENABLE
//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_master())


@@ 169,11 169,11 @@ void oled_task_user(void) {
    oled_write(read_logo(), false);
  }
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  if (record->event.pressed) {
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
    set_keylog(keycode, record);
#endif
    // set_timelog();

M keyboards/lily58/keymaps/mikefightsbears/rules.mk => keyboards/lily58/keymaps/mikefightsbears/rules.mk +2 -2
@@ 4,9 4,9 @@
#
EXTRAKEY_ENABLE = yes       # Audio control and System control
NKRO_ENABLE = yes           # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight. 
RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight.
SWAP_HANDS_ENABLE = no      # Enable one-hand typing
OLED_DRIVER_ENABLE= yes     # OLED display
OLED_ENABLE= yes     # OLED display

# If you want to change the display of OLED, you need to change here
SRC +=  ./lib/rgb_state_reader.c \

M keyboards/lily58/keymaps/muuko/keymap.c => keyboards/lily58/keymaps/muuko/keymap.c +1 -1
@@ 58,7 58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
	if (!is_keyboard_master()) return OLED_ROTATION_180;
    else return rotation;

M keyboards/lily58/keymaps/muuko/rules.mk => keyboards/lily58/keymaps/muuko/rules.mk +2 -1
@@ 1,4 1,5 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
WPM_ENABLE = yes
EXTRAKEY_ENABLE = yes
COMBO_ENABLE = yes

M keyboards/lily58/keymaps/narze/keymap.c => keyboards/lily58/keymaps/narze/keymap.c +3 -3
@@ 277,7 277,7 @@ void matrix_init_user(void) {
    #endif
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_master())


@@ 315,7 315,7 @@ void oled_task_user(void) {
  }
}

#endif //OLED_DRIVER_ENABLE
#endif //OLED_ENABLE

#ifdef SWAP_HANDS_ENABLE
__attribute__ ((weak))


@@ 337,7 337,7 @@ const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  if (record->event.pressed) {
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
    set_keylog(keycode, record);
#endif
    // set_timelog();

M keyboards/lily58/keymaps/ninjonas/rules.mk => keyboards/lily58/keymaps/ninjonas/rules.mk +2 -1
@@ 1,2 1,3 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
LTO_ENABLE = yes

M keyboards/lily58/keymaps/via/keymap.c => keyboards/lily58/keymaps/via/keymap.c +3 -3
@@ 120,7 120,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_master())


@@ 215,12 215,12 @@ void oled_task_user(void) {
      render_logo();
  }
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE


bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  if (record->event.pressed) {
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
    set_keylog(keycode, record);
#endif
    // set_timelog();

M keyboards/lily58/keymaps/via/rules.mk => keyboards/lily58/keymaps/via/rules.mk +2 -1
@@ 1,4 1,5 @@
VIA_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes

M keyboards/lily58/keymaps/yshrsmz/keymap.c => keyboards/lily58/keymaps/yshrsmz/keymap.c +4 -4
@@ 137,8 137,8 @@ void matrix_init_user(void) {
    #endif
}

//SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk
#ifdef OLED_DRIVER_ENABLE
//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_master())


@@ 171,11 171,11 @@ void oled_task_user(void) {
    oled_write(read_logo(), false);
  }
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  if (record->event.pressed) {
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
    set_keylog(keycode, record);
#endif
    // set_timelog();

M keyboards/lily58/keymaps/yshrsmz/rules.mk => keyboards/lily58/keymaps/yshrsmz/rules.mk +1 -1
@@ 1,6 1,6 @@
RGBLIGHT_ENABLE = no       # Enable WS2812 RGB underlight.
AUTO_SHIFT_ENABLE = yes
OLED_DRIVER_ENABLE= yes     # OLED display
OLED_ENABLE= yes     # OLED display

# If you want to change the display of OLED, you need to change here
SRC +=  ./lib/rgb_state_reader.c \

M keyboards/lily58/keymaps/yuchi/keymap.c => keyboards/lily58/keymaps/yuchi/keymap.c +4 -4
@@ 119,8 119,8 @@ void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
  }
}

//SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk
#ifdef OLED_DRIVER_ENABLE
//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_master())


@@ 153,11 153,11 @@ void oled_task_user(void) {
    oled_write(read_logo(), false);
  }
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  if (record->event.pressed) {
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
    set_keylog(keycode, record);
#endif
    // set_timelog();

M keyboards/lily58/keymaps/yuchi/rules.mk => keyboards/lily58/keymaps/yuchi/rules.mk +1 -1
@@ 15,7 15,7 @@ UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no       # Enable WS2812 RGB underlight.
SWAP_HANDS_ENABLE = no      # Enable one-hand typing
OLED_DRIVER_ENABLE= yes     # OLED display
OLED_ENABLE= yes     # OLED display

# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend

M keyboards/lily58/rules.mk => keyboards/lily58/rules.mk +2 -1
@@ 28,7 28,8 @@ BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no       # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
OLED_DRIVER_ENABLE = yes    # OLED display
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # OLED display
SPLIT_KEYBOARD = yes

DEFAULT_FOLDER = lily58/rev1

M keyboards/marksard/rhymestone/common/oled_helper.c => keyboards/marksard/rhymestone/common/oled_helper.c +1 -1
@@ 1,4 1,4 @@
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#include QMK_KEYBOARD_H
#include <stdio.h>
#include <string.h>

M keyboards/marksard/rhymestone/common/oled_helper.h => keyboards/marksard/rhymestone/common/oled_helper.h +1 -1
@@ 1,4 1,4 @@
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

void render_logo(void);
void render_lock_status(void);

M keyboards/marksard/rhymestone/keymaps/default/keymap.c => keyboards/marksard/rhymestone/keymaps/default/keymap.c +1 -1
@@ 95,7 95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#define L_ADJUST (1<<_ADJUST)
#define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER)

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#include <stdio.h>
#include <string.h>


M keyboards/marksard/rhymestone/keymaps/default/rules.mk => keyboards/marksard/rhymestone/keymaps/default/rules.mk +1 -1
@@ 2,7 2,7 @@ MOUSEKEY_ENABLE = yes       # Mouse keys
TAP_DANCE_ENABLE = no

RGBLIGHT_ENABLE = yes        # Enable keyboard RGB underglow
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no
LTO_ENABLE = yes

# If you want to change the display of OLED, you need to change here

M keyboards/marksard/rhymestone/keymaps/switch_tester/rules.mk => keyboards/marksard/rhymestone/keymaps/switch_tester/rules.mk +1 -1
@@ 2,6 2,6 @@ MOUSEKEY_ENABLE = no       # Mouse keys
TAP_DANCE_ENABLE = no

RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no
LTO_ENABLE = yes
RGB_MATRIX_ENABLE = yes

M keyboards/mechllama/g35/keymaps/default/keymap.c => keyboards/mechllama/g35/keymaps/default/keymap.c +1 -1
@@ 51,7 51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    ),
};

#if defined(OLED_DRIVER_ENABLE)
#if defined(OLED_ENABLE)
const char* get_layer_name(uint8_t layer) {
    switch (layer) {
        case _BASE:

M keyboards/mechllama/g35/rules.mk => keyboards/mechllama/g35/rules.mk +2 -1
@@ 12,7 12,8 @@ MCU = atmega32u4
BOOTLOADER = atmel-dfu

NKRO_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
RGBLIGHT_ENABLE = yes

DEFAULT_FOLDER = mechllama/g35/v2

M keyboards/mechwild/mercutio/keymaps/bongocat/keymap.c => keyboards/mechwild/mercutio/keymaps/bongocat/keymap.c +1 -1
@@ 80,7 80,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;  // flips the display 180 degrees
}

M keyboards/mechwild/mercutio/keymaps/default/keymap.c => keyboards/mechwild/mercutio/keymaps/default/keymap.c +1 -1
@@ 61,7 61,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;  // flips the display 180 degrees if offhand
}

M keyboards/mechwild/mercutio/keymaps/fancy/keymap.c => keyboards/mechwild/mercutio/keymaps/fancy/keymap.c +2 -2
@@ 50,7 50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#ifdef ENCODER_ENABLE       // Encoder Functionality
    uint8_t selected_layer = 0;
    bool encoder_update_user(uint8_t index, bool clockwise) {
        #ifdef OLED_DRIVER_ENABLE
        #ifdef OLED_ENABLE
            oled_clear();
            oled_render();
        #endif


@@ 76,7 76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    }
#endif

#ifdef OLED_DRIVER_ENABLE   // OLED Functionality
#ifdef OLED_ENABLE   // OLED Functionality
    oled_rotation_t oled_init_user(oled_rotation_t rotation) {
        return OLED_ROTATION_180;       // flips the display 180 degrees if offhand
    }

M keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c => keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c +2 -2
@@ 109,7 109,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
    uint8_t selected_layer = 0;

    bool encoder_update_user(uint8_t index, bool clockwise) {
        #ifdef OLED_DRIVER_ENABLE
        #ifdef OLED_ENABLE
            oled_clear();
            oled_render();
        #endif


@@ 172,7 172,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
    }
#endif

#ifdef OLED_DRIVER_ENABLE   // OLED Functionality
#ifdef OLED_ENABLE   // OLED Functionality
    oled_rotation_t oled_init_user(oled_rotation_t rotation) {
        return OLED_ROTATION_180;       // flips the display 180 degrees if offhand
    }

M keyboards/mechwild/mercutio/keymaps/via/keymap.c => keyboards/mechwild/mercutio/keymaps/via/keymap.c +1 -1
@@ 61,7 61,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;  // flips the display 180 degrees if offhand
}

M keyboards/mechwild/mercutio/rules.mk => keyboards/mechwild/mercutio/rules.mk +2 -1
@@ 21,4 21,5 @@ RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = yes
\ No newline at end of file
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/mechwild/murphpad/keymaps/default/keymap.c => keyboards/mechwild/murphpad/keymaps/default/keymap.c +3 -3
@@ 56,7 56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        _______,  _______, _______, _______, _______,
        _______,  _______, _______, _______, _______,
        _______,  _______, _______, _______, _______,
						   

                  _______, _______, _______

    ),


@@ 67,7 67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        _______,  _______, _______, _______, _______,
        _______,  _______, _______, _______, _______,
        _______,  _______, _______, _______, _______,
    

                  _______, _______, _______

    )


@@ 95,7 95,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
	oled_rotation_t oled_init_user(oled_rotation_t rotation) {
		return OLED_ROTATION_270;       // flips the display 270 degrees
	}

M keyboards/mechwild/murphpad/keymaps/via/keymap.c => keyboards/mechwild/murphpad/keymaps/via/keymap.c +6 -6
@@ 32,18 32,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        KC_MUTE,  KC_P4,   KC_P5,   KC_P6,   _______,
        MO(_FN1), KC_P1,   KC_P2,   KC_P3,   KC_PENT,
        KC_BSPC,  KC_P0,   _______, KC_PDOT, _______,
		

				          KC_F5,   KC_F6,   KC_F7

    ),
    [_FN1] = LAYOUT(
                 _______,  _______, _______, _______,				
                 _______,  _______, _______, _______,
                 _______,  _______, _______, _______,
                 RGB_HUD,  RGB_SPI, RGB_HUI, _______,
        _______, RGB_RMOD, RGB_TOG, RGB_MOD, _______,
        _______, RGB_VAD,  RGB_SPD, RGB_VAI, _______,
        _______, RGB_SAD,  _______, RGB_SAI, _______,
		

                 _______,  _______, _______

    ),


@@ 54,7 54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        _______,  _______, _______, _______, _______,
        _______,  _______, _______, _______, _______,
        _______,  _______, _______, _______, _______,
						   

                  _______, _______, _______

    ),


@@ 65,7 65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
        _______,  _______, _______, _______, _______,
        _______,  _______, _______, _______, _______,
        _______,  _______, _______, _______, _______,
		

                  _______, _______, _______

    )


@@ 93,7 93,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
	oled_rotation_t oled_init_user(oled_rotation_t rotation) {
		return OLED_ROTATION_270;       // flips the display 270 degrees
	}

M keyboards/mechwild/murphpad/rules.mk => keyboards/mechwild/murphpad/rules.mk +2 -1
@@ 21,4 21,5 @@ RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
ENCODER_ENABLE = yes        # Enable encoder
OLED_DRIVER_ENABLE = yes    # Enable OLED Screen
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # Enable OLED Screen

M keyboards/merge/um70/keymaps/default/keymap.c => keyboards/merge/um70/keymaps/default/keymap.c +1 -1
@@ 89,7 89,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}


#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void suspend_power_down_user(void) {
    oled_off();
}

M keyboards/merge/um70/keymaps/via/keymap.c => keyboards/merge/um70/keymaps/via/keymap.c +1 -1
@@ 88,7 88,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}


#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void suspend_power_down_user(void) {
    oled_off();
}

M keyboards/merge/um70/rules.mk => keyboards/merge/um70/rules.mk +2 -1
@@ 22,4 22,5 @@ BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
ENCODER_ENABLE = yes
SPLIT_KEYBOARD = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/misonoworks/chocolatebar/chocolatebar.c => keyboards/misonoworks/chocolatebar/chocolatebar.c +1 -1
@@ 17,7 17,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.

#include "chocolatebar.h"

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_270;  // flips the display 180 degrees if offhand
}

M keyboards/misonoworks/chocolatebar/rules.mk => keyboards/misonoworks/chocolatebar/rules.mk +2 -1
@@ 21,4 21,5 @@ RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
ENCODER_ENABLE = no
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/montsinger/rebound/rev3/keymaps/rossman360/keymap.c => keyboards/montsinger/rebound/rev3/keymaps/rossman360/keymap.c +1 -1
@@ 74,7 74,7 @@ case _BASE:
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
    // Host Keyboard Layer Status
    oled_write_P(PSTR(""), false);

M keyboards/montsinger/rebound/rev3/keymaps/rossman360/rules.mk => keyboards/montsinger/rebound/rev3/keymaps/rossman360/rules.mk +1 -1
@@ 1,4 1,4 @@
MOUSEKEY_ENABLE = no       # Mouse keys
CONSOLE_ENABLE = no       # Console for debug
COMMAND_ENABLE = no        # Commands for debug and configuration
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no

M keyboards/montsinger/rebound/rev4/keymaps/rossman360/keymap.c => keyboards/montsinger/rebound/rev4/keymaps/rossman360/keymap.c +1 -1
@@ 83,7 83,7 @@ case _DEL:
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
    // Host Keyboard Layer Status
    oled_write_P(PSTR(""), false);

M keyboards/montsinger/rebound/rev4/keymaps/rossman360/rules.mk => keyboards/montsinger/rebound/rev4/keymaps/rossman360/rules.mk +1 -1
@@ 1,4 1,4 @@
MOUSEKEY_ENABLE = no
CONSOLE_ENABLE = no
COMMAND_ENABLE = no
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no

M keyboards/nafuda/rules.mk => keyboards/nafuda/rules.mk +2 -2
@@ 24,9 24,9 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
AUDIO_ENABLE = no           # Audio output on port C6
UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight. 
RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight.
TAP_DANCE_ENABLE = no
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend


M keyboards/naked48/rules.mk => keyboards/naked48/rules.mk +2 -2
@@ 25,8 25,8 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
AUDIO_ENABLE = no           # Audio output on port C6
UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight. 
OLED_DRIVER_ENABLE = no
RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight.
OLED_ENABLE = no
# USE_I2C = yes
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend

M keyboards/naked60/rules.mk => keyboards/naked60/rules.mk +2 -2
@@ 25,8 25,8 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
AUDIO_ENABLE = no           # Audio output on port C6
UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight. 
OLED_DRIVER_ENABLE = no
RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.
OLED_ENABLE = no
USE_I2C = no
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend

M keyboards/naked64/rules.mk => keyboards/naked64/rules.mk +2 -2
@@ 24,9 24,9 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
AUDIO_ENABLE = no           # Audio output on port C6
UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight. 
RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight.
TAP_DANCE_ENABLE = no
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no
USE_I2C = no
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend

M keyboards/nullbitsco/nibble/keymaps/oled/keymap.c => keyboards/nullbitsco/nibble/keymaps/oled/keymap.c +1 -1
@@ 41,7 41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    ),
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }

static void render_logo(void) {

M keyboards/nullbitsco/nibble/keymaps/oled/rules.mk => keyboards/nullbitsco/nibble/keymaps/oled/rules.mk +2 -1
@@ 1,1 1,2 @@
OLED_DRIVER_ENABLE = yes
\ No newline at end of file
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/nullbitsco/nibble/keymaps/oled_bongocat/animation_frames.h => keyboards/nullbitsco/nibble/keymaps/oled_bongocat/animation_frames.h +2 -2
@@ 14,7 14,7 @@
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
#pragma once
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

// Enable OLED bitmpa compression selectively.
#define USE_OLED_BITMAP_COMPRESSION


@@ 401,4 401,4 @@ static const char PROGMEM tap_frames[NUM_TAP_FRAMES][NUM_OLED_BYTES] = {
    },
  };
#endif //USE_BITMAP_COMPRESSION
#endif //OLED_DRIVER_ENABLE
\ No newline at end of file
#endif //OLED_ENABLE

M keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c => keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c +3 -3
@@ 86,7 86,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#define IDLE_FRAME_DURATION 200 // Idle animation iteration rate in ms

oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }


@@ 173,7 173,7 @@ void oled_task_user(void) {

// Animate tap
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    #ifdef OLED_DRIVER_ENABLE
    #ifdef OLED_ENABLE
    // Check if non-mod
    if ((keycode >= KC_A && keycode <= KC_0) || (keycode >= KC_TAB && keycode <= KC_SLASH)) {
        if (record->event.pressed) {


@@ 192,7 192,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
        case PROG:
          if (record->event.pressed) {
            rgblight_disable_noeeprom();
            #ifdef OLED_DRIVER_ENABLE
            #ifdef OLED_ENABLE
            oled_off();
            #endif
            bootloader_jump();

M keyboards/nullbitsco/nibble/keymaps/oled_bongocat/rules.mk => keyboards/nullbitsco/nibble/keymaps/oled_bongocat/rules.mk +3 -2
@@ 1,3 1,4 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
WPM_ENABLE = yes
VIA_ENABLE = yes
\ No newline at end of file
VIA_ENABLE = yes

M keyboards/nullbitsco/nibble/keymaps/oled_status/config.h => keyboards/nullbitsco/nibble/keymaps/oled_status/config.h +1 -1
@@ 16,6 16,6 @@
#pragma once

// Referenced custom font
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    define OLED_FONT_H "keyboards/nullbitsco/nibble/keymaps/oled_status/glcdfont.c"
#endif

M keyboards/nullbitsco/nibble/keymaps/oled_status/keymap.c => keyboards/nullbitsco/nibble/keymaps/oled_status/keymap.c +5 -5
@@ 15,7 15,7 @@
 */
#include QMK_KEYBOARD_H

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    include "oled_display.h"
#endif



@@ 44,7 44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
// clang-format on

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    oled_timer = timer_read32();
    set_oled_mode(OLED_MODE_IDLE);


@@ 66,7 66,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {
        case RGB_TOG:
            if (record->event.pressed) {
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
                process_record_keymap_oled(keycode);
#endif
            }


@@ 82,12 82,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
bool encoder_update_user(uint8_t index, bool clockwise) {
    if (clockwise) {
        tap_code(KC_VOLU);
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
        process_record_encoder_oled(KC_VOLU);
#endif
    } else {
        tap_code(KC_VOLD);
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
        process_record_encoder_oled(KC_VOLD);
#endif
    }

M keyboards/nullbitsco/nibble/keymaps/oled_status/rules.mk => keyboards/nullbitsco/nibble/keymaps/oled_status/rules.mk +3 -2
@@ 1,7 1,8 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
WPM_ENABLE = yes
VIA_ENABLE = yes

ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
ifeq ($(strip $(OLED_ENABLE)), yes)
	SRC += oled_display.c
endif

M keyboards/nullbitsco/scramble/keymaps/oled/keymap.c => keyboards/nullbitsco/scramble/keymaps/oled/keymap.c +1 -1
@@ 28,7 28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
static void render_logo(void) {
    static const char PROGMEM nullbits_logo[] = {
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

M keyboards/nullbitsco/scramble/keymaps/oled/rules.mk => keyboards/nullbitsco/scramble/keymaps/oled/rules.mk +2 -1
@@ 1,1 1,2 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/palette1202/config.h => keyboards/palette1202/config.h +1 -1
@@ 48,7 48,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define DEBOUNCE 5

/* Register custom font file */
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_FONT_H "lib/glcdfont.c"
#endif


M keyboards/palette1202/keymaps/default/keymap.c => keyboards/palette1202/keymaps/default/keymap.c +3 -3
@@ 14,7 14,7 @@
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
#include QMK_KEYBOARD_H
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #include <string.h>
  #include "lib/oled_helper.h"
#endif


@@ 273,7 273,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}

// OLED Display
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
  // get layer Number
  uint8_t currentDefault = get_highest_layer(default_layer_state);


@@ 327,4 327,4 @@ void oled_task_user(void) {
    render_row(3, "    ");
  }
}
#endif // #ifdef OLED_DRIVER_ENABLE
#endif // #ifdef OLED_ENABLE

M keyboards/palette1202/keymaps/key-check/keymap.c => keyboards/palette1202/keymaps/key-check/keymap.c +3 -3
@@ 14,7 14,7 @@
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
#include QMK_KEYBOARD_H
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #include <string.h>
  #include "lib/oled_helper.h"
#endif


@@ 141,11 141,11 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}

// OLED Display
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
  render_row(0, "TEST");
  render_row(1, "test");
  render_row(2, "TEST");
  render_row(3, "test");
}
#endif // #ifdef OLED_DRIVER_ENABLE
#endif // #ifdef OLED_ENABLE

M keyboards/palette1202/lib/oled_helper.c => keyboards/palette1202/lib/oled_helper.c +1 -1
@@ 1,4 1,4 @@
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#include QMK_KEYBOARD_H
#include <stdio.h>
#include <string.h>

M keyboards/palette1202/lib/oled_helper.h => keyboards/palette1202/lib/oled_helper.h +3 -3
@@ 1,7 1,7 @@
#pragma once
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

void render_row(int row, const char* status);

#endif /* #ifdef OLED_DRIVER_ENABLE */
  
#endif /* #ifdef OLED_ENABLE */


M keyboards/palette1202/palette1202.c => keyboards/palette1202/palette1202.c +1 -2
@@ 16,9 16,8 @@
#include "palette1202.h"

// initialize OLED if OLED is enabled
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;
  }
#endif
  
\ No newline at end of file

M keyboards/palette1202/rules.mk => keyboards/palette1202/rules.mk +2 -1
@@ 28,7 28,8 @@ RGBLIGHT_ENABLE    = no     # Enable keyboard RGB underglow
BLUETOOTH_ENABLE   = no     # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE       = no     # Audio output on port C6
ENCODER_ENABLE     = yes    # Enable support for rotary encoders
OLED_DRIVER_ENABLE = yes    # Enable support for OLED display
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # Enable support for OLED display

# Additional code
SRC += lib/oled_helper.c  # Adding OLED

M keyboards/pandora/rules.mk => keyboards/pandora/rules.mk +1 -1
@@ 22,4 22,4 @@ BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
DIP_SWITCH_ENABLE = yes
ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = no      # Future release
OLED_ENABLE = no      # Future release

M keyboards/pearlboards/pandora/rules.mk => keyboards/pearlboards/pandora/rules.mk +1 -1
@@ 22,5 22,5 @@ BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
DIP_SWITCH_ENABLE = yes
ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = no      # Future release
OLED_ENABLE = no      # Future release
LTO_ENABLE = yes

M keyboards/pistachio_pro/rules.mk => keyboards/pistachio_pro/rules.mk +3 -2
@@ 20,9 20,10 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
OLED_DRIVER_ENABLE  = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes

CUSTOM_MATRIX = lite
SRC += matrix.c
SRC += ./lib/bme280.c
\ No newline at end of file
SRC += ./lib/bme280.c

M keyboards/planck/keymaps/rootiest/rules.mk => keyboards/planck/keymaps/rootiest/rules.mk +2 -1
@@ 1,6 1,7 @@
SRC += muse.c
ENCODER_ENABLE = yes # Enables basic encoder support
OLED_DRIVER_ENABLE = yes # Enables support for OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306 # Enables support for OLED displays
# UNICODE_ENABLE = yes # Allow inputting basic unicode characters
UNICODEMAP_ENABLE = yes # Enable use of Unicode mapping array
# UCIS_ENABLE = yes # Another method for generating Unicode characters via maps

M keyboards/pteron36/rules.mk => keyboards/pteron36/rules.mk +1 -1
@@ 21,7 21,7 @@ RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output

OLED_DRIVER_ENABLE = no    # OLED display; work in progress to add support. will be update in future.
OLED_ENABLE = no    # OLED display; work in progress to add support. will be update in future.
SPLIT_KEYBOARD = yes

LAYOUTS = split_3x5_3

M keyboards/rabbit_capture_plan/rules.mk => keyboards/rabbit_capture_plan/rules.mk +1 -1
@@ 21,4 21,4 @@ RGBLIGHT_ENABLE = yes        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
SPLIT_KEYBOARD = yes
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no

M keyboards/rainkeeb/rules.mk => keyboards/rainkeeb/rules.mk +2 -1
@@ 19,7 19,8 @@ AUDIO_ENABLE = no
RGBLIGHT_ENABLE = no

# OLED enable
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

# Encoder enable
ENCODER_ENABLE = yes

M keyboards/ramonimbao/herringbone/pro/keymaps/default/keymap.c => keyboards/ramonimbao/herringbone/pro/keymaps/default/keymap.c +1 -1
@@ 28,7 28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    ),
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
uint32_t anim_timer = 0;
uint32_t anim_sleep = 0;
uint8_t current_frame = 0;

M keyboards/ramonimbao/herringbone/pro/keymaps/iso/keymap.c => keyboards/ramonimbao/herringbone/pro/keymaps/iso/keymap.c +1 -1
@@ 28,7 28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    ),
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
uint32_t anim_timer = 0;
uint32_t anim_sleep = 0;
uint8_t current_frame = 0;

M keyboards/ramonimbao/herringbone/pro/keymaps/via/keymap.c => keyboards/ramonimbao/herringbone/pro/keymaps/via/keymap.c +1 -1
@@ 76,7 76,7 @@ void matrix_scan_user(void) {
    }
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
uint32_t anim_timer = 0;
uint32_t anim_sleep = 0;
uint8_t current_frame = 0;

M keyboards/ramonimbao/herringbone/pro/rules.mk => keyboards/ramonimbao/herringbone/pro/rules.mk +2 -1
@@ 24,7 24,8 @@ RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
WPM_ENABLE = yes
LTO_ENABLE = yes


M keyboards/rart/rart75m/rart75m.c => keyboards/rart/rart75m/rart75m.c +2 -2
@@ 30,7 30,7 @@ bool encoder_update_kb(uint8_t index, bool clockwise) {
}
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
__attribute__((weak)) void oled_task_user(void) {
    // Host Keyboard Layer Status
    oled_write_P(PSTR("R A R T 7 5 M\nLayer: "), false);


@@ 54,4 54,4 @@ __attribute__((weak)) void oled_task_user(void) {
    oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR("    "), false);
}

#endif
\ No newline at end of file
#endif

M keyboards/rart/rart75m/rules.mk => keyboards/rart/rart75m/rules.mk +3 -2
@@ 21,5 21,6 @@ RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
UNICODE_ENABLE = yes
OLED_DRIVER_ENABLE = yes
ENCODER_ENABLE = yes
\ No newline at end of file
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes

M keyboards/rart/rartand/keymaps/default/keymap.c => keyboards/rart/rartand/keymaps/default/keymap.c +3 -3
@@ 16,11 16,11 @@

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

  [0] = LAYOUT_all(    
  [0] = LAYOUT_all(
        KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSPC,
        KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,          KC_ENT,
        KC_LSFT, KC_SLSH, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_RSFT, KC_UP,   KC_BSLS,
        KC_LCTL, KC_LGUI, KC_LALT,          KC_SPC,      MO(1),        KC_SPC,           MO(2),   KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT        
        KC_LCTL, KC_LGUI, KC_LALT,          KC_SPC,      MO(1),        KC_SPC,           MO(2),   KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
  ),

  [1] = LAYOUT_all(


@@ 46,7 46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
    // Host Keyboard Layer Status
    oled_write_P(PSTR("* R A R T A N D *\n  Powered by QMK\nLayer: "), false);

M keyboards/rart/rartand/keymaps/via/keymap.c => keyboards/rart/rartand/keymaps/via/keymap.c +3 -3
@@ 16,11 16,11 @@

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

  [0] = LAYOUT_all(    
  [0] = LAYOUT_all(
        KC_ESC,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSPC,
        KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,          KC_ENT,
        KC_LSFT, KC_SLSH, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_RSFT, KC_UP,   KC_BSLS,
        KC_LCTL, KC_LGUI, KC_LALT,          KC_SPC,      MO(1),        KC_SPC,           MO(2),   KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT        
        KC_LCTL, KC_LGUI, KC_LALT,          KC_SPC,      MO(1),        KC_SPC,           MO(2),   KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
  ),

  [1] = LAYOUT_all(


@@ 46,7 46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
    // Host Keyboard Layer Status
    oled_write_P(PSTR("* R A R T A N D *\n  Powered by QMK\nLayer: "), false);

M keyboards/rart/rartand/rules.mk => keyboards/rart/rartand/rules.mk +2 -1
@@ 20,4 20,5 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/rart/rartland/rartland.c => keyboards/rart/rartland/rartland.c +1 -1
@@ 30,7 30,7 @@ bool encoder_update_kb(uint8_t index, bool clockwise) {
}
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
__attribute__((weak)) void oled_task_user(void) {
    // Host Keyboard Layer Status
    oled_write_P(PSTR("R A R T L A N D\nLayer: "), false);

M keyboards/rart/rartland/rules.mk => keyboards/rart/rartland/rules.mk +2 -1
@@ 24,7 24,8 @@ RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
UNICODE_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes

LAYOUTS = 65_ansi 65_iso

M keyboards/rart/rartlice/keymaps/default/keymap.c => keyboards/rart/rartlice/keymaps/default/keymap.c +2 -2
@@ 31,10 31,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
                 _______, _______,  _______, _______, _______, _______, KC_P1,   KC_P2,   KC_P3,   _______, _______, _______,          _______,
                 _______,           _______,          _______, _______,          _______,          _______,          _______, _______, _______
    ),
  

};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
    // Host Keyboard Layer Status
    oled_write_P(PSTR("R A R T L I C E\nLayer: "), false);

M keyboards/rart/rartlice/keymaps/via/keymap.c => keyboards/rart/rartlice/keymaps/via/keymap.c +2 -2
@@ 45,10 45,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
                 _______, _______,  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          _______,
                 _______,           _______,          _______, _______,          _______,          _______,          _______, _______, _______
    ),
  

};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
    // Host Keyboard Layer Status
    oled_write_P(PSTR("* R A R T L I C E *\n  Powered by QMK\nLayer: "), false);

M keyboards/rart/rartlice/rules.mk => keyboards/rart/rartlice/rules.mk +2 -1
@@ 21,7 21,8 @@ RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
WS2812_DRIVER = spi
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE

M keyboards/rgbkb/mun/rules.mk => keyboards/rgbkb/mun/rules.mk +3 -2
@@ 27,7 27,8 @@ RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend

OLED_DRIVER_ENABLE = yes    # Enable the OLED Driver
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # Enable the OLED Driver

ENCODER_ENABLE = yes



@@ 42,4 43,4 @@ OPT_DEFS += -Ikeyboards/rgbkb/common
# matrix optimisations
SRC += matrix.c

DEFAULT_FOLDER = rgbkb/mun/rev1
\ No newline at end of file
DEFAULT_FOLDER = rgbkb/mun/rev1

M keyboards/rgbkb/pan/keymaps/default/keymap.c => keyboards/rgbkb/pan/keymaps/default/keymap.c +1 -1
@@ 70,7 70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
    // Host Keyboard Layer Status
    oled_write_P(PSTR("RGBKB Pan\n"), false);

M keyboards/rgbkb/pan/rules.mk => keyboards/rgbkb/pan/rules.mk +2 -1
@@ 16,7 16,8 @@ RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
WS2812_DRIVER = bitbang
ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

# RGB layout selection
RGB_ENCODERS = yes # For RGB encoders, solder on both WS2811 chips

M keyboards/rgbkb/sol/keymaps/brianweyer/keymap.c => keyboards/rgbkb/sol/keymaps/brianweyer/keymap.c +1 -1
@@ 196,7 196,7 @@ void matrix_init_user(void) {


// OLED Driver Logic
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!is_keyboard_master())

M keyboards/rgbkb/sol/keymaps/brianweyer/rules.mk => keyboards/rgbkb/sol/keymaps/brianweyer/rules.mk +1 -1
@@ 4,7 4,7 @@
LED_MIRRORED            = no        # Mirror LEDs across halves (enable DIP 1 on slave, and DIP 2 and 3 on master)

# Misc
OLED_DRIVER_ENABLE      = yes       # Enable the OLED Driver
OLED_ENABLE     = yes       # Enable the OLED Driver




M keyboards/rgbkb/sol/keymaps/danielhklein/keymap.c => keyboards/rgbkb/sol/keymaps/danielhklein/keymap.c +1 -1
@@ 261,7 261,7 @@ void matrix_init_user(void) {


// OLED Driver Logic
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (!has_usb())

M keyboards/rgbkb/sol/keymaps/default/keymap.c => keyboards/rgbkb/sol/keymaps/default/keymap.c +1 -1
@@ 298,7 298,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}

// OLED Driver Logic
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (is_keyboard_master())
    return OLED_ROTATION_270;

M keyboards/rgbkb/sol/keymaps/default/readme.md => keyboards/rgbkb/sol/keymaps/default/readme.md +1 -1
@@ 92,7 92,7 @@ RGBLIGHT_FULL_POWER = no    # Allow maximum RGB brightness. Otherwise, limited t
UNICODE_ENABLE = no         # Unicode
SWAP_HANDS_ENABLE = no      # Enable one-hand typing

OLED_DRIVER_ENABLE = no     # Enable the OLED Driver (+5000)
OLED_ENABLE = no     # Enable the OLED Driver (+5000)
IOS_DEVICE_ENABLE = no      # Limit max brightness to connect to IOS device (iPad,iPhone)



M keyboards/rgbkb/sol/keymaps/xulkal/rules.mk => keyboards/rgbkb/sol/keymaps/xulkal/rules.mk +1 -1
@@ 9,7 9,7 @@ FULLHAND_ENABLE         = no        # Enables the additional 24 Full Hand LEDs
SF_ENABLE               = no        # Enables the additional 38 Starfighter LEDs

# Misc
OLED_DRIVER_ENABLE      = yes       # Enable the OLED Driver
OLED_ENABLE     = yes       # Enable the OLED Driver

# Not using the encoder for rev1
ifeq ($(strip $(KEYBOARD)), rgbkb/sol/rev1)

M keyboards/rgbkb/sol/keymaps/xyverz/keymap.c => keyboards/rgbkb/sol/keymaps/xyverz/keymap.c +1 -1
@@ 279,7 279,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
#endif

// OLED Driver Logic
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
 oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  if (is_keyboard_master())
    return OLED_ROTATION_270;

M keyboards/rgbkb/sol/keymaps/xyverz/rules.mk => keyboards/rgbkb/sol/keymaps/xyverz/rules.mk +3 -2
@@ 24,7 24,8 @@ OLED_ENABLE = no            # OLED_ENABLE
IOS_DEVICE_ENABLE = no      # Limit max brightness to connect to IOS device (iPad,iPhone)
DEFAULT_FOLDER = rgbkb/sol/rev1
ENCODER_ENABLE = no
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

# Do not edit past here



@@ 51,4 52,4 @@ endif

ifeq ($(strip $(LED_MIRRORED)), yes)
    OPT_DEFS += -DLED_MIRRORED
endif
\ No newline at end of file
endif

M keyboards/rgbkb/sol/rev1/rules.mk => keyboards/rgbkb/sol/rev1/rules.mk +1 -1
@@ 25,5 25,5 @@ RGBLIGHT_FULL_POWER     = no        # Allow maximum RGB brightness for RGBLIGHT 
IOS_DEVICE_ENABLE       = no        # Limit max brightness to connect to IOS device (iPad,iPhone)

# Misc
OLED_DRIVER_ENABLE      = no        # Enable the OLED Driver
OLED_ENABLE     = no        # Enable the OLED Driver
SWAP_HANDS_ENABLE       = no        # Enable one-hand typing

M keyboards/rgbkb/sol/rev2/config.h => keyboards/rgbkb/sol/rev2/config.h +1 -1
@@ 64,7 64,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#define ENCODERS_PAD_A { D2 }
#define ENCODERS_PAD_B { D6 }
#else
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
    #error Extra encoders cannot be enabled at the same time as the OLED Driver as they use the same pins.
#endif
#define ENCODERS_PAD_A { D2, D1, B0 }

M keyboards/rgbkb/sol/rev2/post_rules.mk => keyboards/rgbkb/sol/rev2/post_rules.mk +1 -1
@@ 28,7 28,7 @@ ifeq ($(strip $(EXTRA_ENCODERS_ENABLE)), yes)
    OPT_DEFS += -DEXTRA_ENCODERS_ENABLE
endif

ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
ifeq ($(strip $(OLED_ENABLE)), yes)
    ifeq ($(strip $(ENCODER_ENABLE)), yes)
        ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
            ifneq ($(strip $(RGB_OLED_MENU)), no)

M keyboards/rgbkb/sol/rev2/rules.mk => keyboards/rgbkb/sol/rev2/rules.mk +2 -2
@@ 27,8 27,8 @@ SF_ENABLE               = no        # Enables the additional 38 Starfighter LEDs
IOS_DEVICE_ENABLE       = no        # Limit max brightness to connect to IOS device (iPad,iPhone)

# Misc
OLED_DRIVER_ENABLE      = no        # Enable the OLED Driver
EXTRA_ENCODERS_ENABLE   = no        # Enables 3 encoders per side (up from 1, not compatible with OLED_DRIVER_ENABLE)
OLED_ENABLE     = no        # Enable the OLED Driver
EXTRA_ENCODERS_ENABLE   = no        # Enables 3 encoders per side (up from 1, not compatible with OLED_ENABLE)
SWAP_HANDS_ENABLE       = no        # Enable one-hand typing
LTO_ENABLE = yes # Enable Link Time Optimizations greatly reducing firmware size by disabling the old Macros and Functions features


M keyboards/rgbkb/zen/rev2/keymaps/default/keymap.c => keyboards/rgbkb/zen/rev2/keymaps/default/keymap.c +1 -1
@@ 103,7 103,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}


#if OLED_DRIVER_ENABLE
#if OLED_ENABLE
const char* layer_name_user(uint32_t layer) {
  switch (layer) {
    case _QWERTY:

M keyboards/rgbkb/zen/rev2/rev2.c => keyboards/rgbkb/zen/rev2/rev2.c +1 -1
@@ 1,6 1,6 @@
#include "rev2.h"

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#include "split_util.h"
#include "oled_driver.h"


M keyboards/rgbkb/zen/rev2/rules.mk => keyboards/rgbkb/zen/rev2/rules.mk +2 -2
@@ 1,9 1,9 @@
ENCODER_ENABLE = yes

OLED_DRIVER_ENABLE = no
OLED_ENABLE = no

# Setup so that OLED can be turned on/off easily
ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
ifeq ($(strip $(OLED_ENABLE)), yes)
  # Custom local font file
  OPT_DEFS += -DOLED_FONT_H=\"common/glcdfont.c\"
endif

M keyboards/rgbkb/zygomorph/keymaps/5x6pad/rules.mk => keyboards/rgbkb/zygomorph/keymaps/5x6pad/rules.mk +1 -1
@@ 17,7 17,7 @@ RGBLIGHT_FULL_POWER = yes   # Allow maximum RGB brightness. Otherwise, limited t
UNICODE_ENABLE = no         # Unicode
SWAP_HANDS_ENABLE = no      # Enable one-hand typing
ENCODER_ENABLE = yes        # Enable rotary encoder
OLED_DRIVER_ENABLE = no     # Enable the OLED Driver
OLED_ENABLE = no     # Enable the OLED Driver
IOS_DEVICE_ENABLE = no      # Limit max brightness to connect to IOS device (iPad,iPhone)
LTO_ENABLE = no      # Enable optimizations to reduce firmware size. Also disables action macros and functions.


M keyboards/rgbkb/zygomorph/keymaps/default/readme.md => keyboards/rgbkb/zygomorph/keymaps/default/readme.md +2 -1
@@ 98,7 98,8 @@ RGBLIGHT_FULL_POWER = yes   # Allow maximum RGB brightness. Otherwise, limited t
UNICODE_ENABLE = no         # Unicode
SWAP_HANDS_ENABLE = no      # Enable one-hand typing
ENCODER_ENABLE = yes        # Enable rotary encoder (+90)
OLED_DRIVER_ENABLE = yes    # Enable the OLED Driver (+5000)
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # Enable the OLED Driver (+5000)
IOS_DEVICE_ENABLE = no      # Limit max brightness to connect to IOS device (iPad,iPhone)



M keyboards/rgbkb/zygomorph/keymaps/default/rules.mk => keyboards/rgbkb/zygomorph/keymaps/default/rules.mk +1 -1
@@ 17,7 17,7 @@ RGBLIGHT_FULL_POWER = yes   # Allow maximum RGB brightness. Otherwise, limited t
UNICODE_ENABLE = no         # Unicode
SWAP_HANDS_ENABLE = no      # Enable one-hand typing
ENCODER_ENABLE = yes        # Enable rotary encoder
OLED_DRIVER_ENABLE = no     # Enable the OLED Driver
OLED_ENABLE = no     # Enable the OLED Driver
IOS_DEVICE_ENABLE = no      # Limit max brightness to connect to IOS device (iPad,iPhone)
LTO_ENABLE = no      # Enable optimizations to reduce firmware size. Also disables action macros and functions.


M keyboards/rgbkb/zygomorph/keymaps/default_oled/keymap.c => keyboards/rgbkb/zygomorph/keymaps/default_oled/keymap.c +1 -1
@@ 169,7 169,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {


// SSD1306 OLED driver logic
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static void render_logo(void) {
  static const char PROGMEM rgbkb_logo[] = {

M keyboards/rgbkb/zygomorph/keymaps/default_oled/rules.mk => keyboards/rgbkb/zygomorph/keymaps/default_oled/rules.mk +2 -1
@@ 17,7 17,8 @@ RGBLIGHT_FULL_POWER = yes   # Allow maximum RGB brightness. Otherwise, limited t
UNICODE_ENABLE = no         # Unicode
SWAP_HANDS_ENABLE = no      # Enable one-hand typing
ENCODER_ENABLE = yes        # Enable rotary encoder
OLED_DRIVER_ENABLE = yes    # Enable the OLED Driver
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # Enable the OLED Driver
IOS_DEVICE_ENABLE = no      # Limit max brightness to connect to IOS device (iPad,iPhone)
LTO_ENABLE = yes     # Enable optimizations to reduce firmware size. Also disables action macros and functions.


M keyboards/rgbkb/zygomorph/keymaps/kageurufu/rules.mk => keyboards/rgbkb/zygomorph/keymaps/kageurufu/rules.mk +1 -1
@@ 17,7 17,7 @@ RGBLIGHT_FULL_POWER = yes   # Allow maximum RGB brightness. Otherwise, limited t
UNICODE_ENABLE = no         # Unicode
SWAP_HANDS_ENABLE = no      # Enable one-hand typing
ENCODER_ENABLE = yes        # Enable rotary encoder
OLED_DRIVER_ENABLE = no     # Enable the OLED Driver
OLED_ENABLE = no     # Enable the OLED Driver
IOS_DEVICE_ENABLE = no      # Limit max brightness to connect to IOS device (iPad,iPhone)

# Do not edit past here

M keyboards/rgbkb/zygomorph/keymaps/xulkal/rules.mk => keyboards/rgbkb/zygomorph/keymaps/xulkal/rules.mk +1 -1
@@ 19,7 19,7 @@ RGBLIGHT_FULL_POWER = yes   # Allow maximum RGB brightness. Otherwise, limited t
UNICODE_ENABLE = no         # Unicode
SWAP_HANDS_ENABLE = no      # Enable one-hand typing
ENCODER_ENABLE = no         # Enable rotary encoder
OLED_DRIVER_ENABLE = no     # Enable the OLED Driver
OLED_ENABLE = no     # Enable the OLED Driver
IOS_DEVICE_ENABLE = no      # Limit max brightness to connect to IOS device (iPad,iPhone)
LTO_ENABLE = no      # Enable optimizations to reduce firmware size. Also disables action macros and functions.


M keyboards/ristretto/ristretto.c => keyboards/ristretto/ristretto.c +14 -14
@@ 1,17 1,17 @@
/* Copyright 2021 Brandon Lewis
  * 
  * This program is free software: you can redistribute it and/or modify 
  * it under the terms of the GNU General Public License as published by 
  * the Free Software Foundation, either version 2 of the License, or 
  * (at your option) any later version. 
  * 
  * This program is distributed in the hope that it will be useful, 
  * but WITHOUT ANY WARRANTY; without even the implied warranty of 
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  * GNU General Public License for more details. 
  * 
  * You should have received a copy of the GNU General Public License 
  * along with this program.  If not, see <http://www.gnu.org/licenses/>. 
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation, either version 2 of the License, or
  * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */

#include "ristretto.h"


@@ 35,7 35,7 @@ bool encoder_update_kb(uint8_t index, bool clockwise) {
	return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
	return OLED_ROTATION_270;
}

M keyboards/ristretto/rules.mk => keyboards/ristretto/rules.mk +2 -1
@@ 21,5 21,6 @@ RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
WAIT_FOR_USB = yes

M keyboards/rocketboard_16/keymaps/default/keymap.c => keyboards/rocketboard_16/keymaps/default/keymap.c +1 -1
@@ 54,7 54,7 @@ bool encoder_update_user(uint8_t index, bool clockwise){
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static void render_logo(void) {
    static const char PROGMEM qmk_logo[] = {

M keyboards/rocketboard_16/keymaps/via/keymap.c => keyboards/rocketboard_16/keymaps/via/keymap.c +1 -1
@@ 54,7 54,7 @@ bool encoder_update_user(uint8_t index, bool clockwise){
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static void render_logo(void) {
    static const char PROGMEM qmk_logo[] = {

M keyboards/rocketboard_16/rules.mk => keyboards/rocketboard_16/rules.mk +2 -1
@@ 20,7 20,8 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes       # Enable keyboard RGB backlit keys
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes

# Enter lower-power sleep mode when on the ChibiOS idle thread

M keyboards/rubi/rules.mk => keyboards/rubi/rules.mk +2 -1
@@ 20,7 20,8 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes

SRC += lib/oled.c \

M keyboards/sawnsprojects/satxri6key/keymaps/via/keymap.c => keyboards/sawnsprojects/satxri6key/keymaps/via/keymap.c +8 -8
@@ 19,23 19,23 @@ char wpm_str[4];

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    [0] = LAYOUT(
        

        KC_ESC,  KC_GRV,  TO(1),
        KC_Z,  KC_X,  KC_C      ),

    [1] = LAYOUT(
        

        KC_TRNS, KC_TRNS, TO(0),
        KC_TRNS, KC_TRNS, KC_TRNS      ),
    [2] = LAYOUT(
        

        KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS      ),
    [3] = LAYOUT(
        

        KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS      ),
    



};


@@ 43,10 43,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// based on https://github.com/qmk/qmk_firmware/blob/master/keyboards/kyria/keymaps/j-inc/keymap.c

// In your rules.mk make sure you have:
// OLED_DRIVER_ENABLE = yes
// OLED_ENABLE = yes
// WPM_ENABLE = yes

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
// WPM-responsive animation stuff here
#    define IDLE_FRAMES 5
#    define IDLE_SPEED 20  // below this wpm value your animation will idle


@@ 161,4 161,4 @@ void oled_task_user(void) {
    oled_set_cursor(0, 1);
    oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR("       "), false);
}
#endif
\ No newline at end of file
#endif

M keyboards/sawnsprojects/satxri6key/keymaps/via/rules.mk => keyboards/sawnsprojects/satxri6key/keymaps/via/rules.mk +2 -2
@@ 1,5 1,5 @@
VIA_ENABLE = yes
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no
WPM_ENABLE = no
RGBLIGHT_ENABLE = yes
LTO_ENABLE = no
\ No newline at end of file
LTO_ENABLE = no

M keyboards/sendyyeah/pix/keymaps/default/keymap.c => keyboards/sendyyeah/pix/keymaps/default/keymap.c +1 -1
@@ 69,7 69,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;

M keyboards/sendyyeah/pix/keymaps/via/keymap.c => keyboards/sendyyeah/pix/keymaps/via/keymap.c +1 -1
@@ 69,7 69,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;

M keyboards/sendyyeah/pix/rules.mk => keyboards/sendyyeah/pix/rules.mk +2 -1
@@ 21,4 21,5 @@ RGBLIGHT_ENABLE = no       # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/setta21/keymaps/salicylic/keymap.c => keyboards/setta21/keymaps/salicylic/keymap.c +14 -14
@@ 9,7 9,7 @@ extern rgblight_config_t rgblight_config;

extern uint8_t is_master;

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
static uint32_t        oled_timer = 0;
#endif



@@ 40,11 40,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
      //|--------+--------+--------+--------|
          KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
      //|--------+--------+--------+--------|
            KC_P7,   KC_P8,   KC_P9,         
            KC_P7,   KC_P8,   KC_P9,
      //|--------+--------+--------+--------|
            KC_P4,   KC_P5,   KC_P6, KC_PPLS,
      //|--------+--------+--------+--------|
            KC_P1,   KC_P2,   KC_P3,         
            KC_P1,   KC_P2,   KC_P3,
      //|--------+--------+--------+--------|
LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT
      //`-----------------------------------'


@@ 56,13 56,13 @@ LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT
      //|--------+--------+--------+--------|
          XXXXXXX, _______, _______, _______,
      //|--------+--------+--------+--------|
          XXXXXXX,   KC_UP, XXXXXXX,         
          XXXXXXX,   KC_UP, XXXXXXX,
      //|--------+--------+--------+--------|
          KC_LEFT, KC_DOWN,KC_RIGHT, _______,
      //|--------+--------+--------+--------|
          XXXXXXX, KC_DOWN, XXXXXXX,         
          XXXXXXX, KC_DOWN, XXXXXXX,
      //|--------+--------+--------+--------|
       MO(_ARROW),       MO(_MACRO), _______ 
       MO(_ARROW),       MO(_MACRO), _______
      //`-----------------------------------'
  ),



@@ 72,13 72,13 @@ LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT
      //|--------+--------+--------+--------|
         SEND_MIN,SEND_MAX,SEND_CIF,SEND_AVE,
      //|--------+--------+--------+--------|
            KC_F7,   KC_F8,   KC_F9,         
            KC_F7,   KC_F8,   KC_F9,
      //|--------+--------+--------+--------|
            KC_F4,   KC_F5,   KC_F6,SEND_SUM,
      //|--------+--------+--------+--------|
           KC_F11,  KC_F12,   KC_F3,         
           KC_F11,  KC_F12,   KC_F3,
      //|--------+--------+--------+--------|
          _______,          _______, JP_RPRN 
          _______,          _______, JP_RPRN
      //`-----------------------------------'
  ),



@@ 88,13 88,13 @@ LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT
      //|--------+--------+--------+--------|
          XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
      //|--------+--------+--------+--------|
          RGB_SAD, RGB_SAI, XXXXXXX,         
          RGB_SAD, RGB_SAI, XXXXXXX,
      //|--------+--------+--------+--------|
          RGB_HUD, RGB_HUI, XXXXXXX, RGB_TOG,
      //|--------+--------+--------+--------|
          RGB_VAD, RGB_VAI, XXXXXXX,         
          RGB_VAD, RGB_VAI, XXXXXXX,
      //|--------+--------+--------+--------|
          _______,          _______, RGB_MOD 
          _______,          _______, RGB_MOD
      //`-----------------------------------'
  )
};


@@ 109,7 109,7 @@ int RGB_current_mode;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  bool result = false;
  if (record->event.pressed) {
     #ifdef OLED_DRIVER_ENABLE
     #ifdef OLED_ENABLE
        oled_timer = timer_read32();
     #endif
  }


@@ 163,7 163,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  return result;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_0; }



M keyboards/setta21/keymaps/salicylic/rules.mk => keyboards/setta21/keymaps/salicylic/rules.mk +2 -1
@@ 1,3 1,4 @@
RGBLIGHT_ENABLE = no
RGB_MATRIX_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/setta21/rules.mk => keyboards/setta21/rules.mk +2 -2
@@ 24,9 24,9 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
AUDIO_ENABLE = no           # Audio output on port C6
UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight. 
RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight.
TAP_DANCE_ENABLE = no
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no
USE_I2C = no
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend

M keyboards/sofle/keymaps/default/keymap.c => keyboards/sofle/keymaps/default/keymap.c +1 -1
@@ 135,7 135,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static void render_logo(void) {
    static const char PROGMEM qmk_logo[] = {

M keyboards/sofle/keymaps/default/rules.mk => keyboards/sofle/keymaps/default/rules.mk +2 -1
@@ 1,5 1,6 @@

OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes
CONSOLE_ENABLE = yes
EXTRAKEY_ENABLE = yes

M keyboards/sofle/keymaps/devdev/keymap.c => keyboards/sofle/keymaps/devdev/keymap.c +1 -1
@@ 393,7 393,7 @@ void keyboard_post_init_user(void) {
}
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static void render_logo(void) {
    static const char PROGMEM qmk_logo[] = {

M keyboards/sofle/keymaps/devdev/rules.mk => keyboards/sofle/keymaps/devdev/rules.mk +2 -1
@@ 4,4 4,5 @@ CONSOLE_ENABLE = yes
RGBLIGHT_ENABLE = yes
ENCODER_ENABLE = yes
LTO_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/sofle/keymaps/helltm/keymap.c => keyboards/sofle/keymaps/helltm/keymap.c +1 -1
@@ 157,7 157,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
// clang-format on

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

/* 32 * 32 logo */
static void render_logo(void) {

M keyboards/sofle/keymaps/helltm/rules.mk => keyboards/sofle/keymaps/helltm/rules.mk +2 -1
@@ 1,4 1,5 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes
CONSOLE_ENABLE = yes
EXTRAKEY_ENABLE = yes

M keyboards/sofle/keymaps/killmaster/keymap.c => keyboards/sofle/keymaps/killmaster/keymap.c +2 -2
@@ 127,7 127,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static void render_logo(void) {
    static const char PROGMEM bananas_logo[] = {


@@ 221,7 221,7 @@ void oled_task_user(void) {



#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    switch (keycode) {

M keyboards/sofle/keymaps/rgb_default/keymap.c => keyboards/sofle/keymaps/rgb_default/keymap.c +1 -1
@@ 393,7 393,7 @@ void keyboard_post_init_user(void) {
}
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static void render_logo(void) {
    static const char PROGMEM qmk_logo[] = {

M keyboards/sofle/keymaps/rgb_default/rules.mk => keyboards/sofle/keymaps/rgb_default/rules.mk +2 -1
@@ 4,4 4,5 @@ CONSOLE_ENABLE = yes
RGBLIGHT_ENABLE = yes
ENCODER_ENABLE = yes
LTO_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/sofle/keymaps/via/oled.c => keyboards/sofle/keymaps/via/oled.c +16 -16
@@ 1,23 1,23 @@
 /* Copyright 2020 Josef Adamcik
  * Modification for VIA support and RGB underglow by Jens Bonk-Wiltfang
  * 
  * This program is free software: you can redistribute it and/or modify 
  * it under the terms of the GNU General Public License as published by 
  * the Free Software Foundation, either version 2 of the License, or 
  * (at your option) any later version. 
  * 
  * This program is distributed in the hope that it will be useful, 
  * but WITHOUT ANY WARRANTY; without even the implied warranty of 
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  * GNU General Public License for more details. 
  * 
  * You should have received a copy of the GNU General Public License 
  * along with this program.  If not, see <http://www.gnu.org/licenses/>. 
  */ 
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation, either version 2 of the License, or
  * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */

//Sets up what the OLED screens display.

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static void render_logo(void) {
    static const char PROGMEM qmk_logo[] = {


@@ 81,4 81,4 @@ void oled_task_user(void) {
    }
}

#endif
\ No newline at end of file
#endif

M keyboards/sofle/keymaps/via/rules.mk => keyboards/sofle/keymaps/via/rules.mk +3 -2
@@ 1,7 1,8 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes
CONSOLE_ENABLE = no
EXTRAKEY_ENABLE = yes
VIA_ENABLE = yes
LTO_ENABLE = yes
RGBLIGHT_ENABLE = yes
\ No newline at end of file
RGBLIGHT_ENABLE = yes

M keyboards/sofle/rev1/rules.mk => keyboards/sofle/rev1/rules.mk +2 -1
@@ 1,2 1,3 @@
ENCODER_ENABLE = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/spaceman/pancake/rev2/rev2.c => keyboards/spaceman/pancake/rev2/rev2.c +2 -2
@@ 16,7 16,7 @@
#include "rev2.h"


#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_270;
}


@@ 26,7 26,7 @@ __attribute__((weak)) void oled_task_user(void) {
        0x22, 0x22, 0x00, 0x3c, 0x0a, 0x3c, 0x00, 0x3e, 0x08, 0x36, 0x00, 0x3e, 0x2a, 0x22, 0x00, 0x00,
        0x00, 0x30, 0xc8, 0x84, 0x84, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x19, 0x1d,
        0x1d, 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x84, 0x84, 0xc8, 0x30, 0x00,
        0x00, 0x63, 0x94, 0x08, 0x08, 0x11, 0x71, 0x17, 0x13, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x62, 
        0x00, 0x63, 0x94, 0x08, 0x08, 0x11, 0x71, 0x17, 0x13, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x62,
        0xe2, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x31, 0x08, 0x08, 0x94, 0x63, 0x00,
        0x00, 0x00, 0x03, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
        0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x06, 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00 };

M keyboards/spaceman/pancake/rev2/rules.mk => keyboards/spaceman/pancake/rev2/rules.mk +2 -1
@@ 20,6 20,7 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

LAYOUTS = ortho_4x12

M keyboards/spacetime/rev1/rules.mk => keyboards/spacetime/rev1/rules.mk +1 -1
@@ 1,1 1,1 @@
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no

M keyboards/spacetime/rev2/rules.mk => keyboards/spacetime/rev2/rules.mk +2 -1
@@ 1,1 1,2 @@
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/spacetime/rules.mk => keyboards/spacetime/rules.mk +1 -1
@@ 28,7 28,7 @@ RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no           # Audio output on port C6
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no

# Enable generic behavior for split boards
SPLIT_KEYBOARD = yes

M keyboards/splitkb/kyria/keymaps/asapjockey/config.h => keyboards/splitkb/kyria/keymaps/asapjockey/config.h +2 -2
@@ 16,7 16,7 @@

#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
#endif



@@ 44,4 44,4 @@
#define EE_HANDS

// Allows media codes to properly register in macros and rotary encoder code
#define TAP_CODE_DELAY 10
\ No newline at end of file
#define TAP_CODE_DELAY 10

M keyboards/splitkb/kyria/keymaps/asapjockey/keymap.c => keyboards/splitkb/kyria/keymaps/asapjockey/keymap.c +1 -1
@@ 184,7 184,7 @@ void matrix_scan_user(void) {
    }
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
	return OLED_ROTATION_180;
}

M keyboards/splitkb/kyria/keymaps/asapjockey/rules.mk => keyboards/splitkb/kyria/keymaps/asapjockey/rules.mk +2 -1
@@ 1,4 1,5 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow
LEADER_ENABLE = yes        # Enable the Leader Key feature

M keyboards/splitkb/kyria/keymaps/benji/config.h => keyboards/splitkb/kyria/keymaps/benji/config.h +1 -1
@@ 16,7 16,7 @@

#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
  #define OLED_FONT_H "keyboards/splitkb/kyria/keymaps/benji/glcdfont.c"
#endif

M keyboards/splitkb/kyria/keymaps/benji/keymap.c => keyboards/splitkb/kyria/keymaps/benji/keymap.c +1 -1
@@ 129,7 129,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
    return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;
}

M keyboards/splitkb/kyria/keymaps/benji/rules.mk => keyboards/splitkb/kyria/keymaps/benji/rules.mk +3 -2
@@ 1,3 1,4 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow
\ No newline at end of file
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow

M keyboards/splitkb/kyria/keymaps/cjuniet/config.h => keyboards/splitkb/kyria/keymaps/cjuniet/config.h +1 -1
@@ 16,7 16,7 @@

#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
  #define OLED_FONT_H "users/cjuniet/glcdfont.c"
#endif

M keyboards/splitkb/kyria/keymaps/cjuniet/rules.mk => keyboards/splitkb/kyria/keymaps/cjuniet/rules.mk +2 -1
@@ 2,5 2,6 @@ ENCODER_ENABLE     = no
EXTRAKEY_ENABLE    = yes
LEADER_ENABLE      = yes
MOUSEKEY_ENABLE    = yes
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
RGBLIGHT_ENABLE    = no

M keyboards/splitkb/kyria/keymaps/corodiak/config.h => keyboards/splitkb/kyria/keymaps/corodiak/config.h +1 -1
@@ 16,7 16,7 @@

#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
#endif


M keyboards/splitkb/kyria/keymaps/corodiak/rules.mk => keyboards/splitkb/kyria/keymaps/corodiak/rules.mk +2 -1
@@ 1,4 1,5 @@
# OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
# OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
# ENCODER_ENABLE = yes       # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow
LEADER_ENABLE = yes        # Enables the Leader shortcut funtionality

M keyboards/splitkb/kyria/keymaps/cwebster2/config.h => keyboards/splitkb/kyria/keymaps/cwebster2/config.h +1 -1
@@ 16,7 16,7 @@

#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
#endif


M keyboards/splitkb/kyria/keymaps/cwebster2/keymap.c => keyboards/splitkb/kyria/keymaps/cwebster2/keymap.c +1 -1
@@ 242,7 242,7 @@ bool led_update_user(led_t led_state) {
}
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void suspend_power_down_user() {
    oled_clear();
    oled_off();

M keyboards/splitkb/kyria/keymaps/cwebster2/rules.mk => keyboards/splitkb/kyria/keymaps/cwebster2/rules.mk +2 -1
@@ 1,4 1,5 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow
RAW_ENABLE = yes
WPM_ENABLE = yes

M keyboards/splitkb/kyria/keymaps/default/rules.mk => keyboards/splitkb/kyria/keymaps/default/rules.mk +2 -1
@@ 1,3 1,4 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow

M keyboards/splitkb/kyria/keymaps/drashna/config.h => keyboards/splitkb/kyria/keymaps/drashna/config.h +1 -1
@@ 18,7 18,7 @@

#define EE_HANDS

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    define OLED_DISPLAY_128X64
#endif


M keyboards/splitkb/kyria/keymaps/drashna/keymap.c => keyboards/splitkb/kyria/keymaps/drashna/keymap.c +1 -1
@@ 120,7 120,7 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
#endif
// clang-format on

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_keymap(oled_rotation_t rotation) { return OLED_ROTATION_180; }
#endif


M keyboards/splitkb/kyria/keymaps/drashna/rules.mk => keyboards/splitkb/kyria/keymaps/drashna/rules.mk +2 -1
@@ 1,4 1,5 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # ENables the use of one or more encoders
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow
RGBLIGHT_STARTUP_ANIMATION = no

M keyboards/splitkb/kyria/keymaps/ghidalgo93/config.h => keyboards/splitkb/kyria/keymaps/ghidalgo93/config.h +1 -1
@@ 16,7 16,7 @@

#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
#endif


M keyboards/splitkb/kyria/keymaps/ghidalgo93/keymap.c => keyboards/splitkb/kyria/keymaps/ghidalgo93/keymap.c +1 -1
@@ 152,7 152,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
}


#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
	return OLED_ROTATION_180;
}

M keyboards/splitkb/kyria/keymaps/ghidalgo93/rules.mk => keyboards/splitkb/kyria/keymaps/ghidalgo93/rules.mk +2 -1
@@ 1,4 1,5 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # Enables the use of one or more encoders
RGBLIGHT_ENABLE = no       # Enable keyboard RGB underglow
AUTO_SHIFT_ENABLE = yes    # Enable auto shift

M keyboards/splitkb/kyria/keymaps/gotham/config.h => keyboards/splitkb/kyria/keymaps/gotham/config.h +1 -1
@@ 24,7 24,7 @@
// Speed up slave half startup
#define SPLIT_USB_TIMEOUT 1000

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    define OLED_DISPLAY_128X64
#    define OLED_TIMEOUT 10000
#endif

M keyboards/splitkb/kyria/keymaps/gotham/keymap.c => keyboards/splitkb/kyria/keymaps/gotham/keymap.c +4 -4
@@ 22,7 22,7 @@
#    include "encoder_utils.h"
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    include "oled_utils.h"
#endif



@@ 103,7 103,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }

void oled_task_user(void) { render_status(); }


@@ 113,12 113,12 @@ void oled_task_user(void) { render_status(); }
bool encoder_update_user(uint8_t index, bool clockwise) {
    if (index == 0) {
        encoder_action(get_encoder_mode(true), clockwise);
#    ifdef OLED_DRIVER_ENABLE
#    ifdef OLED_ENABLE
        oled_on();
#    endif
    } else if (index == 1) {
        encoder_action(get_encoder_mode(false), clockwise);
#    ifdef OLED_DRIVER_ENABLE
#    ifdef OLED_ENABLE
        oled_on();
#    endif
    }

M keyboards/splitkb/kyria/keymaps/gotham/rules.mk => keyboards/splitkb/kyria/keymaps/gotham/rules.mk +3 -2
@@ 2,14 2,15 @@ CONSOLE_ENABLE     = yes  # Console for debug
ENCODER_ENABLE     = yes  # ENables the use of one or more encoders
RGBLIGHT_ENABLE    = yes  # Enable keyboard RGB underglow
MOUSEKEY_ENABLE    = no   # Mouse keys
OLED_DRIVER_ENABLE = yes  # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306  # Enables the use of OLED displays
THUMBSTICK_ENABLE  = yes  # Enables analog thumbstick code

ifeq ($(strip $(ENCODER_ENABLE)), yes)
	SRC += encoder_utils.c
endif

ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
ifeq ($(strip $(OLED_ENABLE)), yes)
	SRC += oled_utils.c
endif


M keyboards/splitkb/kyria/keymaps/j-inc/config.h => keyboards/splitkb/kyria/keymaps/j-inc/config.h +1 -1
@@ 16,7 16,7 @@

#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
  #define OLED_TIMEOUT 300000
#endif

M keyboards/splitkb/kyria/keymaps/j-inc/keymap.c => keyboards/splitkb/kyria/keymaps/j-inc/keymap.c +1 -1
@@ 156,7 156,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
    return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
	return OLED_ROTATION_180;

M keyboards/splitkb/kyria/keymaps/j-inc/rules.mk => keyboards/splitkb/kyria/keymaps/j-inc/rules.mk +2 -1
@@ 1,4 1,5 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow
RGBLIGHT_ANIMATIONS = yes

M keyboards/splitkb/kyria/keymaps/jhelvy/config.h => keyboards/splitkb/kyria/keymaps/jhelvy/config.h +1 -1
@@ 16,7 16,7 @@

#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
#endif


M keyboards/splitkb/kyria/keymaps/jhelvy/keymap.c => keyboards/splitkb/kyria/keymaps/jhelvy/keymap.c +1 -1
@@ 104,7 104,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    return true;
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
	return OLED_ROTATION_180;
}

M keyboards/splitkb/kyria/keymaps/jhelvy/rules.mk => keyboards/splitkb/kyria/keymaps/jhelvy/rules.mk +2 -1
@@ 1,5 1,6 @@
AUTO_SHIFT_ENABLE = yes # Autoshift by holding down a key
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # Enables the use of one or more encoders
RGBLIGHT_ENABLE = no      # Enable keyboard RGB underglow
LEADER_ENABLE = no        # Enable the Leader Key feature

M keyboards/splitkb/kyria/keymaps/kejadlen/config.h => keyboards/splitkb/kyria/keymaps/kejadlen/config.h +1 -1
@@ 16,7 16,7 @@

#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
    #define OLED_DISPLAY_128X64
#endif


M keyboards/splitkb/kyria/keymaps/kejadlen/rules.mk => keyboards/splitkb/kyria/keymaps/kejadlen/rules.mk +1 -1
@@ 1,4 1,4 @@
OLED_DRIVER_ENABLE = no   # Enables the use of OLED displays
OLED_ENABLE = no   # Enables the use of OLED displays
ENCODER_ENABLE = no       # Enables the use of one or more encoders
RGBLIGHT_ENABLE = no      # Enable keyboard RGB underglow
LEADER_ENABLE = no        # Enable the Leader Key feature

M keyboards/splitkb/kyria/keymaps/mattir/config.h => keyboards/splitkb/kyria/keymaps/mattir/config.h +1 -1
@@ 16,7 16,7 @@

#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    define OLED_DISPLAY_128X64
#    define OLED_TIMEOUT 300000
#    define OLED_UPDATE_INTERVAL 30

M keyboards/splitkb/kyria/keymaps/mattir/keymap.c => keyboards/splitkb/kyria/keymaps/mattir/keymap.c +1 -1
@@ 82,7 82,7 @@ void matrix_scan_user(void) {
  }
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
  return OLED_ROTATION_180;
}

M keyboards/splitkb/kyria/keymaps/mattir/rules.mk => keyboards/splitkb/kyria/keymaps/mattir/rules.mk +2 -1
@@ 1,4 1,5 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow
LEADER_ENABLE = yes        # Enables the use of the leader key

M keyboards/splitkb/kyria/keymaps/mattir2/rules.mk => keyboards/splitkb/kyria/keymaps/mattir2/rules.mk +1 -1
@@ 1,4 1,4 @@
OLED_DRIVER_ENABLE = no    # Enables the use of OLED displays
OLED_ENABLE = no    # Enables the use of OLED displays
ENCODER_ENABLE = no        # Enables the use of one or more encoders
RGBLIGHT_ENABLE = no       # Enable keyboard RGB underglow
LEADER_ENABLE = yes        # Enables the use of the leader key

M keyboards/splitkb/kyria/keymaps/ninjonas/config.h => keyboards/splitkb/kyria/keymaps/ninjonas/config.h +1 -1
@@ 18,7 18,7 @@

#define TAPPING_TERM 200

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
  #define OLED_TIMEOUT 15000
#endif

M keyboards/splitkb/kyria/keymaps/ninjonas/oled.c => keyboards/splitkb/kyria/keymaps/ninjonas/oled.c +81 -81
@@ 15,7 15,7 @@
 */
#include "ninjonas.h"

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }

static void render_logo(void) {


@@ 24,69 24,69 @@ static void render_logo(void) {
    // Image Dimensions: 128x64
    // Code Output Format: Plain Bytes
    // Draw Mode: Vertical, 1 bit per pixel
0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x00, 0x00, 0xe0, 
0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x80, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 
0xe0, 0x00, 0x60, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00, 
0xc0, 0xe0, 0xe0, 0xe0, 0x20, 0x60, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 
0xe0, 0x00, 0x00, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 
0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0xe0, 0xe0, 0xfc, 0xfe, 
0xfe, 0xfe, 0xee, 0xee, 0x0e, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 
0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 
0x00, 0x00, 0x79, 0xfd, 0xfd, 0xfd, 0xec, 0xee, 0x76, 0x7f, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 
0x07, 0x3f, 0xff, 0xfc, 0xf8, 0xff, 0x7f, 0x07, 0x0f, 0x7f, 0xff, 0xf8, 0xfc, 0xff, 0x3f, 0x07, 
0x00, 0x00, 0x00, 0x03, 0x1f, 0xff, 0xfe, 0xf0, 0xff, 0x7f, 0x0f, 0x07, 0x3f, 0xff, 0xfc, 0xf8, 
0xff, 0x7f, 0x0f, 0x01, 0x00, 0x00, 0x01, 0x0f, 0x3f, 0xff, 0xfe, 0xf8, 0xff, 0xff, 0x1f, 0x03, 
0x00, 0x00, 0x1f, 0x7f, 0x7f, 0xff, 0xf6, 0xe6, 0xe6, 0xf7, 0xf7, 0x77, 0x37, 0x17, 0x00, 0x30, 
0x79, 0xfd, 0xfd, 0xfd, 0xee, 0xee, 0x76, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 
0xff, 0xff, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x7f, 0xff, 0xf1, 0xe0, 0xe0, 0xff, 0xff, 0x7f, 0x3f, 
0x0e, 0x00, 0x0e, 0x3f, 0x7f, 0xff, 0xff, 0xe0, 0xe0, 0xe1, 0xff, 0x7f, 0x7f, 0x3f, 0x04, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 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, 0xc0, 0xc0, 0xc0, 
0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x3c, 0xfc, 0xfc, 0xfc, 0xc0, 0x00, 0xe0, 0xfc, 0xfc, 0x7c, 0x1c, 0x00, 0xf0, 0xf8, 
0xf8, 0xfc, 0xdc, 0xdc, 0xdc, 0xfc, 0xfc, 0xf8, 0xf0, 0xe0, 0x00, 0x00, 0x30, 0xb8, 0xbc, 0xbc, 
0xdc, 0xdc, 0xdc, 0xfc, 0xfc, 0xf8, 0xf0, 0x00, 0x1c, 0x1c, 0xff, 0xff, 0xff, 0xff, 0x1d, 0x1d, 
0x00, 0xf0, 0xf8, 0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0xfc, 0xfc, 0xf8, 0xf0, 0xc0, 0x00, 0xe0, 0xf0, 
0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0x3c, 0xfc, 0xf8, 0xf8, 0xe0, 0x00, 0x00, 0x20, 0xb8, 0xbc, 0xbc, 
0xbc, 0xdc, 0xdc, 0xfc, 0xfc, 0xfc, 0xf8, 0xe0, 0x00, 0x0c, 0x7c, 0xfc, 0xfc, 0xc0, 0x00, 0xe0, 
0xfc, 0xfc, 0xfc, 0xfc, 0xf0, 0x80, 0x00, 0xf8, 0xfc, 0xfc, 0x3c, 0x04, 0x0c, 0x7c, 0xfc, 0xfc, 
0xf0, 0x00, 0xc0, 0xfc, 0xfc, 0x7c, 0xfc, 0xf8, 0xc0, 0x00, 0xf0, 0xfc, 0xfc, 0x7c, 0x0c, 0x00, 
0x00, 0x00, 0xc0, 0xc1, 0xc7, 0xff, 0xff, 0xff, 0x7f, 0x1f, 0x03, 0x00, 0x00, 0x00, 0x07, 0x0f, 
0x1f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1e, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x06, 0x0f, 0x1f, 0x1f, 0x1f, 
0x1d, 0x1d, 0x0e, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 
0x00, 0x07, 0x0f, 0x0f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1f, 0x1f, 0x0f, 0x07, 0x01, 0x00, 0x03, 0x07, 
0x0f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1e, 0x1f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x0f, 0x1f, 0x1f, 0x1f, 
0x1d, 0x1d, 0x0c, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x03, 0x1f, 0x1f, 0x1e, 0x1f, 
0x0f, 0x01, 0x00, 0x07, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 
0x1f, 0x1e, 0x1f, 0x1f, 0x03, 0x00, 0x03, 0x1f, 0x1f, 0x1e, 0x1f, 0x0f, 0x01, 0x00, 0x00, 0x00, 
0x00, 0x80, 0xc1, 0xf1, 0xf9, 0xf9, 0xf9, 0xb8, 0xb8, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 
0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 
0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 
0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 
0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x7c, 0xfe, 0xff, 0xff, 0xc7, 0x83, 0x83, 
0xc7, 0xff, 0xff, 0xff, 0x7c, 0x00, 0x00, 0x7c, 0xff, 0xff, 0xff, 0xc7, 0x83, 0x83, 0xc7, 0xff, 
0xff, 0xfe, 0x7c, 0x00, 0xc0, 0xe6, 0xf7, 0xf7, 0xf7, 0xbb, 0xbb, 0xdb, 0xff, 0xff, 0xff, 0xfe, 
0x00, 0x00, 0x03, 0x1f, 0xff, 0xff, 0xf0, 0xe0, 0xfe, 0xff, 0x1f, 0x3f, 0xff, 0xfe, 0xe0, 0xf0, 
0xff, 0xff, 0x1f, 0x03, 0x00, 0x01, 0x0f, 0x7f, 0xff, 0xf8, 0xc0, 0xfc, 0xff, 0x3f, 0x1f, 0xff, 
0xfe, 0xf0, 0xe0, 0xff, 0xff, 0x3f, 0x07, 0x00, 0x01, 0x07, 0x3f, 0xff, 0xff, 0xf8, 0xe0, 0xfc, 
0xff, 0x7f, 0x0f, 0x03, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xdb, 0x9b, 0x9b, 0xdf, 0xdf, 0xdf, 0xde, 
0x1c, 0x00, 0xc0, 0xe6, 0xf7, 0xf7, 0xf7, 0xbb, 0xbb, 0xdb, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 
0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 
0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 
0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x03, 0x03, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 
0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x3f, 0x3f, 0x1f, 0x0f, 
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 
0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x00, 0x00, 0xe0,
0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x80, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00, 0xe0, 0xe0, 0xe0,
0xe0, 0x00, 0x60, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0x80, 0x00, 0x00,
0xc0, 0xe0, 0xe0, 0xe0, 0x20, 0x60, 0xe0, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0xe0,
0xe0, 0x00, 0x00, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0x00, 0x00, 0x00,
0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0xe0, 0xe0, 0xfc, 0xfe,
0xfe, 0xfe, 0xee, 0xee, 0x0e, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80,
0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x00,
0x00, 0x00, 0x79, 0xfd, 0xfd, 0xfd, 0xec, 0xee, 0x76, 0x7f, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00,
0x07, 0x3f, 0xff, 0xfc, 0xf8, 0xff, 0x7f, 0x07, 0x0f, 0x7f, 0xff, 0xf8, 0xfc, 0xff, 0x3f, 0x07,
0x00, 0x00, 0x00, 0x03, 0x1f, 0xff, 0xfe, 0xf0, 0xff, 0x7f, 0x0f, 0x07, 0x3f, 0xff, 0xfc, 0xf8,
0xff, 0x7f, 0x0f, 0x01, 0x00, 0x00, 0x01, 0x0f, 0x3f, 0xff, 0xfe, 0xf8, 0xff, 0xff, 0x1f, 0x03,
0x00, 0x00, 0x1f, 0x7f, 0x7f, 0xff, 0xf6, 0xe6, 0xe6, 0xf7, 0xf7, 0x77, 0x37, 0x17, 0x00, 0x30,
0x79, 0xfd, 0xfd, 0xfd, 0xee, 0xee, 0x76, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x7f, 0xff, 0xf1, 0xe0, 0xe0, 0xff, 0xff, 0x7f, 0x3f,
0x0e, 0x00, 0x0e, 0x3f, 0x7f, 0xff, 0xff, 0xe0, 0xe0, 0xe1, 0xff, 0x7f, 0x7f, 0x3f, 0x04, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 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, 0xc0, 0xc0, 0xc0,
0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x3c, 0xfc, 0xfc, 0xfc, 0xc0, 0x00, 0xe0, 0xfc, 0xfc, 0x7c, 0x1c, 0x00, 0xf0, 0xf8,
0xf8, 0xfc, 0xdc, 0xdc, 0xdc, 0xfc, 0xfc, 0xf8, 0xf0, 0xe0, 0x00, 0x00, 0x30, 0xb8, 0xbc, 0xbc,
0xdc, 0xdc, 0xdc, 0xfc, 0xfc, 0xf8, 0xf0, 0x00, 0x1c, 0x1c, 0xff, 0xff, 0xff, 0xff, 0x1d, 0x1d,
0x00, 0xf0, 0xf8, 0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0xfc, 0xfc, 0xf8, 0xf0, 0xc0, 0x00, 0xe0, 0xf0,
0xf8, 0xfc, 0x3c, 0x1c, 0x1c, 0x3c, 0xfc, 0xf8, 0xf8, 0xe0, 0x00, 0x00, 0x20, 0xb8, 0xbc, 0xbc,
0xbc, 0xdc, 0xdc, 0xfc, 0xfc, 0xfc, 0xf8, 0xe0, 0x00, 0x0c, 0x7c, 0xfc, 0xfc, 0xc0, 0x00, 0xe0,
0xfc, 0xfc, 0xfc, 0xfc, 0xf0, 0x80, 0x00, 0xf8, 0xfc, 0xfc, 0x3c, 0x04, 0x0c, 0x7c, 0xfc, 0xfc,
0xf0, 0x00, 0xc0, 0xfc, 0xfc, 0x7c, 0xfc, 0xf8, 0xc0, 0x00, 0xf0, 0xfc, 0xfc, 0x7c, 0x0c, 0x00,
0x00, 0x00, 0xc0, 0xc1, 0xc7, 0xff, 0xff, 0xff, 0x7f, 0x1f, 0x03, 0x00, 0x00, 0x00, 0x07, 0x0f,
0x1f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1e, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x06, 0x0f, 0x1f, 0x1f, 0x1f,
0x1d, 0x1d, 0x0e, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00,
0x00, 0x07, 0x0f, 0x0f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1f, 0x1f, 0x0f, 0x07, 0x01, 0x00, 0x03, 0x07,
0x0f, 0x1f, 0x1e, 0x1c, 0x1c, 0x1e, 0x1f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x0f, 0x1f, 0x1f, 0x1f,
0x1d, 0x1d, 0x0c, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x03, 0x1f, 0x1f, 0x1e, 0x1f,
0x0f, 0x01, 0x00, 0x07, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f,
0x1f, 0x1e, 0x1f, 0x1f, 0x03, 0x00, 0x03, 0x1f, 0x1f, 0x1e, 0x1f, 0x0f, 0x01, 0x00, 0x00, 0x00,
0x00, 0x80, 0xc1, 0xf1, 0xf9, 0xf9, 0xf9, 0xb8, 0xb8, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80,
0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80,
0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x7c, 0xfe, 0xff, 0xff, 0xc7, 0x83, 0x83,
0xc7, 0xff, 0xff, 0xff, 0x7c, 0x00, 0x00, 0x7c, 0xff, 0xff, 0xff, 0xc7, 0x83, 0x83, 0xc7, 0xff,
0xff, 0xfe, 0x7c, 0x00, 0xc0, 0xe6, 0xf7, 0xf7, 0xf7, 0xbb, 0xbb, 0xdb, 0xff, 0xff, 0xff, 0xfe,
0x00, 0x00, 0x03, 0x1f, 0xff, 0xff, 0xf0, 0xe0, 0xfe, 0xff, 0x1f, 0x3f, 0xff, 0xfe, 0xe0, 0xf0,
0xff, 0xff, 0x1f, 0x03, 0x00, 0x01, 0x0f, 0x7f, 0xff, 0xf8, 0xc0, 0xfc, 0xff, 0x3f, 0x1f, 0xff,
0xfe, 0xf0, 0xe0, 0xff, 0xff, 0x3f, 0x07, 0x00, 0x01, 0x07, 0x3f, 0xff, 0xff, 0xf8, 0xe0, 0xfc,
0xff, 0x7f, 0x0f, 0x03, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xdb, 0x9b, 0x9b, 0xdf, 0xdf, 0xdf, 0xde,
0x1c, 0x00, 0xc0, 0xe6, 0xf7, 0xf7, 0xf7, 0xbb, 0xbb, 0xdb, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00,
0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x03, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00,
0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x3f, 0x3f, 0x1f, 0x0f,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00,
0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00
    };
    oled_write_raw_P(logo, sizeof(logo));


@@ 125,32 125,32 @@ void render_layout_state(void) {
        oled_write_ln_P(PSTR("Undefined"), false);
  }
}
#ifdef ENCODER_ENABLE   
#ifdef ENCODER_ENABLE
static void render_encoder_state(void) {
    oled_write_P(PSTR("\nEnc: "), false);
    bool lower = layer_state_is(_LOWER) & !layer_state_is(_ADJUST);
    bool raise = layer_state_is(_RAISE) & !layer_state_is(_ADJUST);
    bool adjust = layer_state_is(_ADJUST);

    if(lower){ 
    if(lower){
      oled_write_P(PSTR("APPSW"), left_encoder_rotated);
      oled_slash_separator();
      oled_write_P(PSTR("UPDN"), right_encoder_rotated);
    } else if(raise){ 
    } else if(raise){
      oled_write_P(PSTR("PGUD"), left_encoder_rotated);
      oled_slash_separator();
      oled_write_P(PSTR("TABSW"), right_encoder_rotated);
    } else if(adjust){ 
    } else if(adjust){
      oled_write_P(PSTR("RHUE"), left_encoder_rotated);
      oled_slash_separator();
      oled_write_P(PSTR("RBRI"), right_encoder_rotated);
    } else { 
    } else {
      oled_write_P(PSTR("BRI"), left_encoder_rotated);
      oled_slash_separator();
      oled_write_P(PSTR("VOL"), right_encoder_rotated);
    }

    if (timer_elapsed(encoder_rotated_timer) > 200) {  
    if (timer_elapsed(encoder_rotated_timer) > 200) {
      left_encoder_rotated = false;
      right_encoder_rotated = false;
    }


@@ 164,16 164,16 @@ static void render_layer_state(void) {
    bool adjust = layer_state_is(_ADJUST);
    bool numpad = layer_state_is(_NUMPAD);

    if(lower){ 
      oled_write_P(PSTR(" Lower "), true); 
    } else if(raise){ 
      oled_write_P(PSTR(" Raise "), true); 
    } else if(adjust){ 
      oled_write_P(PSTR(" Adjust "), true); 
    if(lower){
      oled_write_P(PSTR(" Lower "), true);
    } else if(raise){
      oled_write_P(PSTR(" Raise "), true);
    } else if(adjust){
      oled_write_P(PSTR(" Adjust "), true);
    } else if(numpad) {
      oled_write_P(PSTR(" Numpad "), true); 
    } else { 
      oled_write_P(PSTR(" Default"), false); 
      oled_write_P(PSTR(" Numpad "), true);
    } else {
      oled_write_P(PSTR(" Default"), false);
    }
}



@@ 191,7 191,7 @@ void render_mod_state(uint8_t modifiers) {
static void render_status(void) {
  render_qmk_logo();
  render_layout_state();
  #ifdef ENCODER_ENABLE   
  #ifdef ENCODER_ENABLE
  render_encoder_state();
  #endif
  render_layer_state();


@@ 206,4 206,4 @@ void oled_task_user(void) {
        oled_scroll_left();
    }
}
#endif
\ No newline at end of file
#endif

M keyboards/splitkb/kyria/keymaps/ninjonas/rules.mk => keyboards/splitkb/kyria/keymaps/ninjonas/rules.mk +2 -1
@@ 1,4 1,5 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow
LTO_ENABLE = yes

M keyboards/splitkb/kyria/keymaps/pierrec83/config.h => keyboards/splitkb/kyria/keymaps/pierrec83/config.h +1 -1
@@ 16,7 16,7 @@

#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
#endif


M keyboards/splitkb/kyria/keymaps/pierrec83/rules.mk => keyboards/splitkb/kyria/keymaps/pierrec83/rules.mk +1 -1
@@ 1,4 1,4 @@
OLED_DRIVER_ENABLE = no   # Enables the use of OLED displays
OLED_ENABLE = no   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # ENables the use of one or more encoders
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow


M keyboards/splitkb/kyria/keymaps/plattfot/config.h => keyboards/splitkb/kyria/keymaps/plattfot/config.h +1 -1
@@ 17,7 17,7 @@

#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
#endif


M keyboards/splitkb/kyria/keymaps/plattfot/keymap.c => keyboards/splitkb/kyria/keymaps/plattfot/keymap.c +1 -1
@@ 259,7 259,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {

//layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); }

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }

// clang-format off

M keyboards/splitkb/kyria/keymaps/plattfot/rules.mk => keyboards/splitkb/kyria/keymaps/plattfot/rules.mk +2 -1
@@ 1,4 1,5 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow
LEADER_ENABLE = yes        # Enable the Leader Key feature

M keyboards/splitkb/kyria/keymaps/rmw/config.h => keyboards/splitkb/kyria/keymaps/rmw/config.h +1 -1
@@ 18,7 18,7 @@

#define MACOSX

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
#endif


M keyboards/splitkb/kyria/keymaps/rmw/rules.mk => keyboards/splitkb/kyria/keymaps/rmw/rules.mk +1 -1
@@ 1,4 1,4 @@
OLED_DRIVER_ENABLE = no   # Enables the use of OLED displays
OLED_ENABLE = no   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow
TAP_DANCE_ENABLE=yes	   # Enables Tap Dance

M keyboards/splitkb/kyria/keymaps/shinze/config.h => keyboards/splitkb/kyria/keymaps/shinze/config.h +1 -1
@@ 16,7 16,7 @@

#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
#endif


M keyboards/splitkb/kyria/keymaps/shinze/keymap.c => keyboards/splitkb/kyria/keymaps/shinze/keymap.c +1 -1
@@ 157,7 157,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
    return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_180;
}

M keyboards/splitkb/kyria/keymaps/shinze/rules.mk => keyboards/splitkb/kyria/keymaps/shinze/rules.mk +2 -1
@@ 1,3 1,4 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow

M keyboards/splitkb/kyria/keymaps/tessachka/config.h => keyboards/splitkb/kyria/keymaps/tessachka/config.h +1 -1
@@ 16,7 16,7 @@

#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
#endif


M keyboards/splitkb/kyria/keymaps/tessachka/keymap.c => keyboards/splitkb/kyria/keymaps/tessachka/keymap.c +3 -3
@@ 29,7 29,7 @@ enum custom_keycodes {
};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 
/*
 * Base Layer: QWERTY
 *
 * ,-------------------------------------------.                              ,-------------------------------------------.


@@ 137,7 137,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {

// bool process_record_user(uint16_t keycode, keyrecord_t *record) {
//     switch (keycode) {
//         case MyCustomKeycode: 
//         case MyCustomKeycode:
//             if (record->event.pressed) {
//                 // What to do if the button was pressed
//             } else {


@@ 148,7 148,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
//     return true;
// }

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
	return OLED_ROTATION_180;
}

M keyboards/splitkb/kyria/keymaps/tessachka/rules.mk => keyboards/splitkb/kyria/keymaps/tessachka/rules.mk +2 -1
@@ 1,3 1,4 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow
MOUSEKEY_ENABLE = yes

M keyboards/splitkb/kyria/keymaps/thomasbaart/config.h => keyboards/splitkb/kyria/keymaps/thomasbaart/config.h +1 -1
@@ 16,7 16,7 @@

#pragma once

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
#endif


M keyboards/splitkb/kyria/keymaps/thomasbaart/keymap.c => keyboards/splitkb/kyria/keymaps/thomasbaart/keymap.c +1 -1
@@ 236,7 236,7 @@ void matrix_scan_user(void) {
    }
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
	return OLED_ROTATION_180;
}

M keyboards/splitkb/kyria/keymaps/thomasbaart/rules.mk => keyboards/splitkb/kyria/keymaps/thomasbaart/rules.mk +2 -1
@@ 1,4 1,5 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow
LEADER_ENABLE = yes        # Enable the Leader Key feature

M keyboards/splitkb/kyria/keymaps/via/keymap.c => keyboards/splitkb/kyria/keymaps/via/keymap.c +1 -1
@@ 190,7 190,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
};
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
    if (is_keyboard_master()) {
        // QMK Logo and version information

M keyboards/splitkb/kyria/keymaps/via/rules.mk => keyboards/splitkb/kyria/keymaps/via/rules.mk +2 -1
@@ 1,4 1,5 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # Enables the use of one or more encoders
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow
VIA_ENABLE = yes

M keyboards/splitkb/kyria/keymaps/winternebs/config.h => keyboards/splitkb/kyria/keymaps/winternebs/config.h +1 -1
@@ 17,7 17,7 @@

#define OLED_FONT_H "keyboards/splitkb/kyria/keymaps/winternebs/glcdfont.c"
#define OLED_FONT_END 127
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
  #define OLED_DISPLAY_128X64
#endif


M keyboards/splitkb/kyria/keymaps/winternebs/keymap.c => keyboards/splitkb/kyria/keymaps/winternebs/keymap.c +3 -3
@@ 189,7 189,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
    return true;
}
#endif
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
bool left = false;
bool right = false;
bool lastl = false;


@@ 200,7 200,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
	#ifdef CONSOLE_ENABLE
	uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u, total: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.key.col + 10 * record->event.key.row);
	#endif
	#ifdef OLED_DRIVER_ENABLE
	#ifdef OLED_ENABLE
	if(record->event.pressed){
		uint8_t n = record->event.key.col + 10 * record->event.key.row;
		if (n<40) {


@@ 250,7 250,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {

}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
	return OLED_ROTATION_180;
}

M keyboards/splitkb/kyria/keymaps/winternebs/rules.mk => keyboards/splitkb/kyria/keymaps/winternebs/rules.mk +3 -2
@@ 1,5 1,6 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # Enables the use of one or more 
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # Enables the use of one or more
NKRO_ENABLE = yes
WPM_ENABLE = yes
CONSOLE_ENABLE = no     # Console for debug

M keyboards/splitkb/kyria/rev1/config.h => keyboards/splitkb/kyria/rev1/config.h +1 -1
@@ 69,7 69,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    define OLED_DISPLAY_128X64
#    define SPLIT_OLED_ENABLE
#endif

M keyboards/splitkb/kyria/rev1/rev1.c => keyboards/splitkb/kyria/rev1/rev1.c +1 -1
@@ 55,7 55,7 @@ led_config_t g_led_config = { {
} };
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }

__attribute__((weak)) void oled_task_user(void) {

M keyboards/splitkb/kyria/rev1/rules.mk => keyboards/splitkb/kyria/rev1/rules.mk +2 -1
@@ 1,4 1,5 @@
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
ENCODER_ENABLE = yes       # ENables the use of one or more encoders
RGBLIGHT_ENABLE = yes      # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = no     # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE)

M keyboards/splitkb/zima/rules.mk => keyboards/splitkb/zima/rules.mk +2 -1
@@ 22,7 22,8 @@ BLUETOOTH_ENABLE = no      # Enable Bluetooth
AUDIO_ENABLE = yes         # Audio output

ENCODER_ENABLE = yes       # ENables the use of one or more encoders
OLED_DRIVER_ENABLE = yes   # Enables the use of OLED displays
OLED_ENABLE = yes
OLED_DRIVER = SSD1306   # Enables the use of OLED displays
HAPTIC_ENABLE += DRV2605L  # Supported but not included by defaut

LTO_ENABLE = yes

M keyboards/splitkb/zima/zima.c => keyboards/splitkb/zima/zima.c +2 -2
@@ 21,7 21,7 @@
extern haptic_config_t haptic_config;
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
static bool is_asleep = false;
static uint32_t oled_timer;



@@ 94,7 94,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) {

#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
#    ifdef OLED_DRIVER_ENABLE
#    ifdef OLED_ENABLE
    oled_timer = timer_read32();
#    endif
#    if defined(AUDIO_ENABLE) && defined(AUDIO_CLICKY)

M keyboards/suihankey/alpha/keymaps/default/keymap.c => keyboards/suihankey/alpha/keymaps/default/keymap.c +1 -1
@@ 71,7 71,7 @@ void led_set_user(uint8_t usb_led) {

}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
  oled_write_P(PSTR("Layer: "), false);
  switch (biton32(layer_state)) {

M keyboards/suihankey/rev1/keymaps/default/keymap.c => keyboards/suihankey/rev1/keymaps/default/keymap.c +1 -1
@@ 71,7 71,7 @@ void led_set_user(uint8_t usb_led) {

}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
  oled_write_P(PSTR("Layer: "), false);
  switch (biton32(layer_state)) {

M keyboards/suihankey/rules.mk => keyboards/suihankey/rules.mk +2 -1
@@ 28,7 28,8 @@ RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no           # Audio output on port C6
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
SPLIT_KEYBOARD = no

DEFAULT_FOLDER = suihankey/rev1

M keyboards/suihankey/split/rules.mk => keyboards/suihankey/split/rules.mk +1 -1
@@ 1,4 1,4 @@
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no
SPLIT_KEYBOARD = yes

DEFAULT_FOLDER = suihankey/split/rev1

M keyboards/takashicompany/endzone34/keymaps/default/keymap.c => keyboards/takashicompany/endzone34/keymaps/default/keymap.c +22 -22
@@ 18,27 18,27 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

    LAYOUT(
        LT(2, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, 
        KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, KC_H, KC_J, LT(2, KC_K), KC_L, KC_ENT, 
        SFT_T(KC_Z), GUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, CTL_T(KC_DOT), KC_BSPC, 
        LT(2, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
        KC_A, KC_S, LT(2, KC_D), KC_F, KC_G, KC_H, KC_J, LT(2, KC_K), KC_L, KC_ENT,
        SFT_T(KC_Z), GUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, CTL_T(KC_DOT), KC_BSPC,
        ALT_T(KC_LANG2), SFT_T(KC_TAB), KC_SPC, LT(1, KC_LANG1)),

    LAYOUT(
        KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, 
        CTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, 
        KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL, 
        KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
        CTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN,
        KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),

    LAYOUT(
        KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, 
        KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, 
        KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_TRNS, KC_LANG1, KC_NO, MO(3), KC_DEL, 
        KC_ESC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO,
        KC_LCTL, KC_TRNS, KC_QUES, KC_EXLM, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
        KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_TRNS, KC_LANG1, KC_NO, MO(3), KC_DEL,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),

    LAYOUT(
        RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, 
        RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, 
        RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_F11, KC_F12, KC_CAPS, KC_NO, KC_NO, 
        RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
        RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
        RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, RGB_M_T, KC_F11, KC_F12, KC_CAPS, KC_NO, KC_NO,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};



@@ 59,18 59,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static void render_logo(void) {
    

    static const char PROGMEM my_logo[] = {
        0x00, 0x00, 0x00, 0xff, 0x01, 0x01, 0x39, 0x29, 0x29, 0x29, 0x29, 0x29, 0xe9, 0x0f, 0x00, 0x00, 
        0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf8, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00, 
        0x80, 0x80, 0x80, 0xbf, 0xa0, 0xa0, 0xa7, 0xa5, 0xa5, 0xa5, 0xa5, 0x25, 0x25, 0x3c, 0x00, 0x1f, 
        0x20, 0x3e, 0x02, 0x3e, 0x20, 0x1f, 0x20, 0x2e, 0x2a, 0x2e, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, 
        0x87, 0x44, 0x24, 0x14, 0x0c, 0x00, 0xc0, 0xa0, 0x90, 0x88, 0x87, 0x00, 0xe0, 0x10, 0xd0, 0x50, 
        0xd0, 0x10, 0xe0, 0x10, 0xd0, 0x50, 0xd0, 0x10, 0xe0, 0x10, 0xd0, 0x50, 0x50, 0x10, 0xf0, 0x00, 
        0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x00, 0x03, 0x04, 0x05, 0x05, 
        0x00, 0x00, 0x00, 0xff, 0x01, 0x01, 0x39, 0x29, 0x29, 0x29, 0x29, 0x29, 0xe9, 0x0f, 0x00, 0x00,
        0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf8, 0x08, 0xf8, 0x00, 0x00, 0x00, 0x00,
        0x80, 0x80, 0x80, 0xbf, 0xa0, 0xa0, 0xa7, 0xa5, 0xa5, 0xa5, 0xa5, 0x25, 0x25, 0x3c, 0x00, 0x1f,
        0x20, 0x3e, 0x02, 0x3e, 0x20, 0x1f, 0x20, 0x2e, 0x2a, 0x2e, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00,
        0x87, 0x44, 0x24, 0x14, 0x0c, 0x00, 0xc0, 0xa0, 0x90, 0x88, 0x87, 0x00, 0xe0, 0x10, 0xd0, 0x50,
        0xd0, 0x10, 0xe0, 0x10, 0xd0, 0x50, 0xd0, 0x10, 0xe0, 0x10, 0xd0, 0x50, 0x50, 0x10, 0xf0, 0x00,
        0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x00, 0x03, 0x04, 0x05, 0x05,
        0x05, 0x04, 0x03, 0x04, 0x07, 0x00, 0x07, 0x04, 0x03, 0x04, 0x05, 0x05, 0x05, 0x05, 0x07, 0x00
    };



@@ 107,6 107,6 @@ void oled_task_user(void) {
    count_str[0] =  m / 10 ? '0' + m / 10 : ' ';

    oled_write_ln(count_str, false);
    

}
#endif

M keyboards/takashicompany/endzone34/rules.mk => keyboards/takashicompany/endzone34/rules.mk +2 -1
@@ 20,4 20,5 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/tau4/keymaps/default/keymap.c => keyboards/tau4/keymaps/default/keymap.c +1 -1
@@ 113,7 113,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}


#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static void render_status(void) {
    oled_write_P(PSTR("Tau.4 v1.0\n\n"), false);

M keyboards/tau4/rules.mk => keyboards/tau4/rules.mk +2 -1
@@ 21,7 21,8 @@ RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
ENCODER_ENABLE = yes        # Rotary Encoder support
OLED_DRIVER_ENABLE = yes    # OLED display support
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # OLED display support
# EEPROM_DRIVER ?= i2c        # Driver for external EEPROM chip
# This is currently not working due to QMK not officially supporting the chip used on the Tau4, I am working on a fix.


M keyboards/tender/macrowo_pad/keymaps/default/keymap.c => keyboards/tender/macrowo_pad/keymaps/default/keymap.c +3 -3
@@ 39,15 39,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
	[0] = LAYOUT(
		SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,
		SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,              SAY_OWO,   SAY_OWO,   SAY_OWO),
  

	[1] = LAYOUT(
    KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,
    KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,              KC_TRNS,   KC_TRNS,   KC_TRNS)
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_270;  
    return OLED_ROTATION_270;
}

void oled_task_user(void) {

M keyboards/tender/macrowo_pad/keymaps/default/rules.mk => keyboards/tender/macrowo_pad/keymaps/default/rules.mk +2 -1
@@ 1,1 1,2 @@
OLED_DRIVER_ENABLE = yes    # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C
\ No newline at end of file
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C

M keyboards/tender/macrowo_pad/keymaps/via/keymap.c => keyboards/tender/macrowo_pad/keymaps/via/keymap.c +3 -3
@@ 39,7 39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
	[0] = LAYOUT(
		SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,
		SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,   SAY_OWO,              SAY_OWO,   SAY_OWO,   SAY_OWO),
  

	[1] = LAYOUT(
    KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,
    KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,              KC_TRNS,   KC_TRNS,   KC_TRNS),


@@ 53,9 53,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,              KC_TRNS,   KC_TRNS,   KC_TRNS)
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_270;  
    return OLED_ROTATION_270;
}

void oled_task_user(void) {

M keyboards/tender/macrowo_pad/keymaps/via/rules.mk => keyboards/tender/macrowo_pad/keymaps/via/rules.mk +2 -1
@@ 1,2 1,3 @@
VIA_ENABLE = yes
OLED_DRIVER_ENABLE = yes    # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C
OLED_ENABLE = yes
OLED_DRIVER = SSD1306    # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C

M keyboards/tkc/m0lly/keymaps/default/keymap.c => keyboards/tkc/m0lly/keymaps/default/keymap.c +2 -2
@@ 67,7 67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
    oled_write_P(PSTR("M0lly\n"),false);



@@ 92,4 92,4 @@ void oled_task_user(void) {
    oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR("    "), false);
    oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR("    "), false);
}
#endif
\ No newline at end of file
#endif

M keyboards/tkc/m0lly/keymaps/via/keymap.c => keyboards/tkc/m0lly/keymaps/via/keymap.c +1 -1
@@ 85,7 85,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    )
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
    oled_write_P(PSTR("M0lly\n"),false);


M keyboards/tkc/m0lly/rules.mk => keyboards/tkc/m0lly/rules.mk +2 -1
@@ 20,4 20,5 @@ BACKLIGHT_ENABLE = yes      # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/tkc/tkc1800/keymaps/default/keymap.c => keyboards/tkc/tkc1800/keymaps/default/keymap.c +3 -3
@@ 13,7 13,7 @@
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 

#include QMK_KEYBOARD_H

//Layers


@@ 79,7 79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};


#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
    oled_write_P(PSTR("TKC1800\n"),false);
	// Host Keyboard Layer Status


@@ 103,4 103,4 @@ void oled_task_user(void) {
    oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR("    "), false);
    oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR("    "), false);
}
#endif
\ No newline at end of file
#endif

M keyboards/tkc/tkc1800/keymaps/smt/keymap.c => keyboards/tkc/tkc1800/keymaps/smt/keymap.c +2 -2
@@ 144,7 144,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
    oled_write_P(PSTR("TKC1800\n"),false);
	// Host Keyboard Layer Status


@@ 174,4 174,4 @@ void oled_task_user(void) {
    oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR("    "), false);
    oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR("    "), false);
}
#endif
\ No newline at end of file
#endif

M keyboards/tkc/tkc1800/keymaps/via/keymap.c => keyboards/tkc/tkc1800/keymaps/via/keymap.c +2 -2
@@ 97,7 97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  ),
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
    oled_write_P(PSTR("TKC1800\n"),false);
	// Host Keyboard Layer Status


@@ 127,4 127,4 @@ void oled_task_user(void) {
    oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR("    "), false);
    oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR("    "), false);
}
#endif
\ No newline at end of file
#endif

M keyboards/tkc/tkc1800/keymaps/wkl/keymap.c => keyboards/tkc/tkc1800/keymaps/wkl/keymap.c +3 -3
@@ 13,7 13,7 @@
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 

#include QMK_KEYBOARD_H

//Layers


@@ 61,7 61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  ),
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
    oled_write_P(PSTR("TKC1800\n"),false);
	// Host Keyboard Layer Status


@@ 85,4 85,4 @@ void oled_task_user(void) {
    oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR("    "), false);
    oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR("    "), false);
}
#endif
\ No newline at end of file
#endif

M keyboards/tkc/tkc1800/keymaps/yanfali/keymap.c => keyboards/tkc/tkc1800/keymaps/yanfali/keymap.c +3 -3
@@ 13,7 13,7 @@
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 

#include QMK_KEYBOARD_H

//Layers


@@ 61,7 61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
	),
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
    oled_write_P(PSTR("TKC1800\n"),false);
	// Host Keyboard Layer Status


@@ 85,4 85,4 @@ void oled_task_user(void) {
    oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR("    "), false);
    oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR("    "), false);
}
#endif
\ No newline at end of file
#endif

M keyboards/tkc/tkc1800/keymaps/yanfali/rules.mk => keyboards/tkc/tkc1800/keymaps/yanfali/rules.mk +1 -1
@@ 1,1 1,1 @@
OLED_DRIVER_ENABLE = no
OLED_ENABLE = no

M keyboards/tkc/tkc1800/rules.mk => keyboards/tkc/tkc1800/rules.mk +2 -1
@@ 29,4 29,5 @@ RGBLIGHT_ENABLE = yes       # Enable WS2812 RGB underlight. Do not enable this w
UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
AUDIO_ENABLE = no           # Audio output on port C6
OLED_DRIVER_ENABLE = yes
\ No newline at end of file
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

M keyboards/tkw/grandiceps/keymaps/default/keymap.c => keyboards/tkw/grandiceps/keymaps/default/keymap.c +1 -1
@@ 315,7 315,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    return true;
}

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
static void render_logo(void) {
  static const char PROGMEM my_logo[] = {
    // 'protea', 128x32px

M keyboards/tkw/grandiceps/rules.mk => keyboards/tkw/grandiceps/rules.mk +2 -1
@@ 25,6 25,7 @@ KEYBOARD_SHARED_EP = yes    # Free up some extra endpoints - needed if console+m

SPLIT_KEYBOARD = yes
SERIAL_DRIVER = usart
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
WS2812_DRIVER = pwm
OPT_DEFS += -DSTM32_DMA_REQUIRED=TRUE

M keyboards/torn/bongocat.c => keyboards/torn/bongocat.c +1 -1
@@ 16,7 16,7 @@
 */
#include QMK_KEYBOARD_H

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

#define ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0]))


M keyboards/torn/rules.mk => keyboards/torn/rules.mk +2 -1
@@ 17,7 17,8 @@ SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
ENCODER_ENABLE = yes        # Enable rotary encoder
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
WPM_ENABLE = yes
CUSTOM_MATRIX = lite


M keyboards/treadstone48/common/oled_helper.c => keyboards/treadstone48/common/oled_helper.c +1 -1
@@ 1,4 1,4 @@
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#include QMK_KEYBOARD_H
#include <stdio.h>
#include <string.h>

M keyboards/treadstone48/common/oled_helper.h => keyboards/treadstone48/common/oled_helper.h +1 -1
@@ 1,4 1,4 @@
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

void render_logo(void);
void update_key_status(uint16_t keycode, keyrecord_t *record);

M keyboards/treadstone48/keymaps/default/keymap.c => keyboards/treadstone48/keymaps/default/keymap.c +1 -1
@@ 103,7 103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#define L_ADJUST (1<<_ADJUST)
#define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER)

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#include <stdio.h>
#include <string.h>


M keyboards/treadstone48/keymaps/default/rules.mk => keyboards/treadstone48/keymaps/default/rules.mk +2 -1
@@ 1,7 1,8 @@
MOUSEKEY_ENABLE = yes       # Mouse keys

RGBLIGHT_ENABLE = yes        # Enable keyboard RGB underglow
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
LTO_ENABLE = yes

# If you want to change the display of OLED, you need to change here

M keyboards/treadstone48/keymaps/like_jis/keymap.c => keyboards/treadstone48/keymaps/like_jis/keymap.c +1 -1
@@ 103,7 103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#define L_ADJUST (1<<_ADJUST)
#define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER)

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#include <stdio.h>
#include <string.h>


M keyboards/treadstone48/keymaps/like_jis/rules.mk => keyboards/treadstone48/keymaps/like_jis/rules.mk +2 -1
@@ 1,7 1,8 @@
MOUSEKEY_ENABLE = yes       # Mouse keys

RGBLIGHT_ENABLE = yes        # Enable keyboard RGB underglow
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
LTO_ENABLE = yes

# If you want to change the display of OLED, you need to change here

M keyboards/treadstone48/rev1/keymaps/like_jis_rs/keymap.c => keyboards/treadstone48/rev1/keymaps/like_jis_rs/keymap.c +1 -1
@@ 153,7 153,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#define L_ADJUST (1<<_ADJUST)
#define L_ADJUST_TRI (L_ADJUST|L_RAISE|L_LOWER)

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#include <stdio.h>
#include <string.h>


M keyboards/treadstone48/rev1/keymaps/like_jis_rs/rules.mk => keyboards/treadstone48/rev1/keymaps/like_jis_rs/rules.mk +2 -1
@@ 1,7 1,8 @@
MOUSEKEY_ENABLE = yes       # Mouse keys

RGBLIGHT_ENABLE = yes        # Enable keyboard RGB underglow
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
LTO_ENABLE = yes

# If you use connection the Rhymestone, please enable RS_EXTRA_LED

M keyboards/treadstone48/rules.mk => keyboards/treadstone48/rules.mk +2 -1
@@ 31,6 31,7 @@ MOUSEKEY_ENABLE = yes       # Mouse keys
TAP_DANCE_ENABLE = no

RGBLIGHT_ENABLE = yes        # Enable keyboard RGB underglow
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306

DEFAULT_FOLDER = treadstone48/rev1

M keyboards/ungodly/launch_pad/keymaps/default/keymap.c => keyboards/ungodly/launch_pad/keymaps/default/keymap.c +2 -1
@@ 150,7 150,8 @@ void matrix_scan_user(void) {
}

// 0.91" OLED, 128x32 resolution
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
	return OLED_ROTATION_180;
}

M keyboards/ungodly/launch_pad/keymaps/via/keymap.c => keyboards/ungodly/launch_pad/keymaps/via/keymap.c +1 -1
@@ 150,7 150,7 @@ void matrix_scan_user(void) {
}

// 0.91" OLED, 128x32 resolution
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
	return OLED_ROTATION_180;
}

M keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c => keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c +1 -1
@@ 126,7 126,7 @@ void matrix_scan_user(void) {
}

// 0.91" OLED, 128x32 resolution
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
	return OLED_ROTATION_180;
}

M keyboards/ungodly/launch_pad/rules.mk => keyboards/ungodly/launch_pad/rules.mk +3 -2
@@ 20,8 20,9 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
MIDI_ENABLE = yes           # MIDI support
OLED_DRIVER_ENABLE = yes
MIDI_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
ENCODER_ENABLE = yes
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812

M keyboards/uzu42/keymaps/default/keymap.c => keyboards/uzu42/keymaps/default/keymap.c +4 -4
@@ 105,8 105,8 @@ void matrix_init_user(void) {
    #endif
}

//SSD1306 OLED update loop, make sure to enable OLED_DRIVER_ENABLE=yes in rules.mk
#ifdef OLED_DRIVER_ENABLE
//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk
#ifdef OLED_ENABLE

#define L_BASE 0
#define L_LOWER (1 << 1)


@@ 210,11 210,11 @@ void oled_task_user(void) {
    oled_write(read_logo(), false);
  }
}
#endif // OLED_DRIVER_ENABLE
#endif // OLED_ENABLE

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  if (record->event.pressed) {
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
    set_keylog(keycode, record);
#endif
    // set_timelog();

M keyboards/uzu42/rules.mk => keyboards/uzu42/rules.mk +2 -2
@@ 25,10 25,10 @@ BACKLIGHT_ENABLE = no      # Enable keyboard backlight functionality
AUDIO_ENABLE = no           # Audio output on port C6
UNICODE_ENABLE = no         # Unicode
BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no       # Enable WS2812 RGB underlight. 
RGBLIGHT_ENABLE = no       # Enable WS2812 RGB underlight.
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
OLED_DRIVER_ENABLE = no      # OLED display
OLED_ENABLE = no      # OLED display
SPLIT_KEYBOARD = yes

DEFAULT_FOLDER = uzu42/rev1

M keyboards/work_louder/work_board/work_board.c => keyboards/work_louder/work_board/work_board.c +1 -1
@@ 28,7 28,7 @@ bool encoder_update_kb(uint8_t index, bool clockwise) {
}
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    ifdef RGB_MATRIX_ENABLE
#        error Cannot run OLED and Per Key RGB at the same time due to pin conflicts
#    endif

M keyboards/yampad/keymaps/default/keymap.c => keyboards/yampad/keymaps/default/keymap.c +1 -1
@@ 116,7 116,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  return true;
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_270;  // flips the display 270 degrees

M keyboards/yampad/keymaps/traditional/keymap.c => keyboards/yampad/keymaps/traditional/keymap.c +2 -2
@@ 19,7 19,7 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/    
*/

#include QMK_KEYBOARD_H



@@ 116,7 116,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  return true;
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_270;  // flips the display 270 degrees

M keyboards/yampad/rules.mk => keyboards/yampad/rules.mk +2 -1
@@ 20,5 20,6 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
DEBOUNCE_TYPE = sym_eager_pk

M keyboards/yampad/yampad.c => keyboards/yampad/yampad.c +3 -3
@@ 1,4 1,4 @@
    

/* Copyright 2019
 *
 * This program is free software: you can redistribute it and/or modify


@@ 16,13 16,13 @@
 */
#include "yampad.h"

#if defined(OLED_DRIVER_ENABLE)
#if defined(OLED_ENABLE)
__attribute__((weak))
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    return OLED_ROTATION_270;  // flips the display 270 degrees
}

__attribute__((weak)) 
__attribute__((weak))
void oled_task_user(void) {
  // Host Keyboard Layer Status
  oled_write_P(PSTR("Layer"), false);

M keyboards/yoichiro/lunakey_mini/keymaps/default/rules.mk => keyboards/yoichiro/lunakey_mini/keymaps/default/rules.mk +1 -1
@@ 1,3 1,3 @@
RGBLIGHT_ENABLE = no         # Enable keyboard RGB Underglow
AUDIO_ENABLE = no            # Enable Audio output
OLED_DRIVER_ENABLE = no      # Enable OLED Display
OLED_ENABLE = no      # Enable OLED Display

M keyboards/yoichiro/lunakey_mini/keymaps/via/rules.mk => keyboards/yoichiro/lunakey_mini/keymaps/via/rules.mk +1 -1
@@ 1,5 1,5 @@
RGBLIGHT_ENABLE = yes        # Enable keyboard RGB Underglow
AUDIO_ENABLE = no            # Enable Audio output
OLED_DRIVER_ENABLE = no      # Enable OLED Display
OLED_ENABLE = no      # Enable OLED Display
VIA_ENABLE = yes             # Enable VIA support
LTO_ENABLE = yes             # CFLAGS=flto

M keyboards/zoo/wampus/rules.mk => keyboards/zoo/wampus/rules.mk +1 -1
@@ 21,7 21,7 @@ RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
WS2812_DRIVER = spi         # RGB underglow driver configuration
BLUETOOTH_ENABLE = no       # Enable Bluetooth
AUDIO_ENABLE = no           # Audio output
OLED_DRIVER_ENABLE = no     # Enables the use of OLED displays
OLED_ENABLE = no     # Enables the use of OLED displays

# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE

M keyboards/zoo/wampus/wampus.c => keyboards/zoo/wampus/wampus.c +1 -1
@@ 15,7 15,7 @@
 */

#include "wampus.h"
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

void board_init(void) {
    SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP;

M layouts/community/split_3x6_3/drashna/keymap.c => layouts/community/split_3x6_3/drashna/keymap.c +1 -1
@@ 95,7 95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
// clang-format on

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_keymap(oled_rotation_t rotation) { return OLED_ROTATION_270; }
#endif


M layouts/community/split_3x6_3/drashna/rules.mk => layouts/community/split_3x6_3/drashna/rules.mk +1 -1
@@ 20,7 20,7 @@ SWAP_HANDS_ENABLE          = no  # Enable one-hand typing
SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend

ifeq ($(strip $(KEYBOARD)), crkbd/rev1)
    OLED_DRIVER_ENABLE = yes
    OLED_ENABLE = yes
    RGB_MATRIX_ENABLE = yes
    HAPTIC_ENABLE = no
    BOOTLOADER = qmk-dfu

M quantum/keyboard.c => quantum/keyboard.c +3 -3
@@ 82,7 82,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#ifdef QWIIC_ENABLE
#    include "qwiic.h"
#endif
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    include "oled_driver.h"
#endif
#ifdef ST7565_ENABLE


@@ 319,7 319,7 @@ void keyboard_init(void) {
#ifdef QWIIC_ENABLE
    qwiic_init();
#endif
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
    oled_init(OLED_ROTATION_0);
#endif
#ifdef ST7565_ENABLE


@@ 477,7 477,7 @@ MATRIX_LOOP_END:
    qwiic_task();
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
    oled_task();
#    ifndef OLED_DISABLE_TIMEOUT
    // Wake up oled if user is using those fabulous keys or spinning those encoders!

M quantum/quantum.h => quantum/quantum.h +1 -1
@@ 164,7 164,7 @@ extern layer_state_t layer_state;
#    include "process_haptic.h"
#endif

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    include "oled_driver.h"
#endif


M quantum/split_common/transaction_id_define.h => quantum/split_common/transaction_id_define.h +2 -2
@@ 70,9 70,9 @@ enum serial_transaction_id {
    PUT_WPM,
#endif  // defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE)

#if defined(OLED_DRIVER_ENABLE) && defined(SPLIT_OLED_ENABLE)
#if defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE)
    PUT_OLED,
#endif  // defined(OLED_DRIVER_ENABLE) && defined(SPLIT_OLED_ENABLE)
#endif  // defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE)

#if defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE)
    PUT_ST7565,

M quantum/split_common/transactions.c => quantum/split_common/transactions.c +2 -2
@@ 519,7 519,7 @@ static void wpm_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave_
////////////////////////////////////////////////////
// OLED

#if defined(OLED_DRIVER_ENABLE) && defined(SPLIT_OLED_ENABLE)
#if defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE)

static bool oled_handlers_master(matrix_row_t master_matrix[], matrix_row_t slave_matrix[]) {
    static uint32_t last_update        = 0;


@@ 539,7 539,7 @@ static void oled_handlers_slave(matrix_row_t master_matrix[], matrix_row_t slave
#    define TRANSACTIONS_OLED_SLAVE()       TRANSACTION_HANDLER_SLAVE(oled)
#    define TRANSACTIONS_OLED_REGISTRATIONS [PUT_OLED] = trans_initiator2target_initializer(current_oled_state),

#else  // defined(OLED_DRIVER_ENABLE) && defined(SPLIT_OLED_ENABLE)
#else  // defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE)

#    define TRANSACTIONS_OLED_MASTER()
#    define TRANSACTIONS_OLED_SLAVE()

M quantum/split_common/transport.h => quantum/split_common/transport.h +2 -2
@@ 165,9 165,9 @@ typedef struct _split_shared_memory_t {
    uint8_t current_wpm;
#endif  // defined(WPM_ENABLE) && defined(SPLIT_WPM_ENABLE)

#if defined(OLED_DRIVER_ENABLE) && defined(SPLIT_OLED_ENABLE)
#if defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE)
    uint8_t current_oled_state;
#endif  // defined(OLED_DRIVER_ENABLE) && defined(SPLIT_OLED_ENABLE)
#endif  // defined(OLED_ENABLE) && defined(SPLIT_OLED_ENABLE)

#if defined(ST7565_ENABLE) && defined(SPLIT_ST7565_ENABLE)
    uint8_t current_st7565_state;

M show_options.mk => show_options.mk +1 -1
@@ 50,8 50,8 @@ OTHER_OPTION_NAMES = \
  STENO_ENABLE \
  TAP_DANCE_ENABLE \
  VIRTSER_ENABLE \
  OLED_DRIVER_ENABLE \
  OLED_ENABLE \
  OLED_DRIVER \
  LED_BACK_ENABLE \
  LED_UNDERGLOW_ENABLE \
  LED_ANIMATIONS \

M users/curry/rules.mk => users/curry/rules.mk +1 -1
@@ 24,7 24,7 @@ ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
    SRC += tap_dances.c
endif

ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
ifeq ($(strip $(OLED_ENABLE)), yes)
    SRC += oled.c
endif


M users/drashna/config.h => users/drashna/config.h +1 -1
@@ 140,7 140,7 @@
#    define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_REST_MODE
#endif  // RGB_MATRIX_ENABLE

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    ifdef SPLIT_KEYBOARD
#        define OLED_UPDATE_INTERVAL 60
#    else

M users/drashna/drashna.c => users/drashna/drashna.c +3 -2
@@ 114,8 114,9 @@ void                       shutdown_user(void) {
}

__attribute__((weak)) void suspend_power_down_keymap(void) {}
void                       suspend_power_down_user(void) {
#ifdef OLED_DRIVER_ENABLE

void suspend_power_down_user(void) {
#ifdef OLED_ENABLE
    oled_off();
#endif
    suspend_power_down_keymap();

M users/drashna/drashna.h => users/drashna/drashna.h +1 -1
@@ 29,7 29,7 @@
#if defined(RGB_MATRIX_ENABLE)
#    include "rgb_matrix_stuff.h"
#endif
#if defined(OLED_DRIVER_ENABLE)
#if defined(OLED_ENABLE)
#    include "oled_stuff.h"
#endif
#if defined(PIMORONI_TRACKBALL_ENABLE)

M users/drashna/oled_stuff.c => users/drashna/oled_stuff.c +1 -1
@@ 70,7 70,7 @@ void add_keylog(uint16_t keycode) {

bool process_record_user_oled(uint16_t keycode, keyrecord_t *record) {
    if (record->event.pressed) {
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
        oled_timer = timer_read32();
        add_keylog(keycode);
#endif

M users/drashna/process_records.c => users/drashna/process_records.c +1 -1
@@ 29,7 29,7 @@ bool                       process_record_user(uint16_t keycode, keyrecord_t *re
#ifdef KEYLOGGER_ENABLE
    uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %b, time: %5u, int: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);
#endif  // KEYLOGGER_ENABLE
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
    process_record_user_oled(keycode, record);
#endif  // OLED


M users/drashna/rules.mk => users/drashna/rules.mk +1 -1
@@ 64,7 64,7 @@ ifeq ($(strip $(PROTOCOL)), VUSB)
endif

CUSTOM_OLED_DRIVER ?= yes
ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
ifeq ($(strip $(OLED_ENABLE)), yes)
    ifeq ($(strip $(CUSTOM_OLED_DRIVER)), yes)
        SRC += oled_stuff.c
        OPT_DEFS += -DCUSTOM_OLED_DRIVER_CODE

M users/drashna/transport_sync.c => users/drashna/transport_sync.c +11 -0
@@ 71,6 71,10 @@ void keyboard_post_init_transport_sync(void) {

void user_transport_update(void) {
    if (is_keyboard_master()) {
#    ifdef OLED_ENABLE
        user_state.oled_on = is_oled_on();
#    endif

        transport_keymap_config    = keymap_config.raw;
        transport_userspace_config = userspace_config.raw;
#ifdef AUDIO_ENABLE


@@ 85,6 89,13 @@ void user_transport_update(void) {
#endif

    } else {
#    ifdef OLED_ENABLE
        if (user_state.oled_on) {
            oled_on();
        } else {
            oled_off();
        }
#    endif
        keymap_config.raw    = transport_keymap_config;
        userspace_config.raw = transport_userspace_config;
#ifdef UNICODE_ENABLE

M users/ninjonas/oled.c => users/ninjonas/oled.c +10 -10
@@ 2,7 2,7 @@
#include <stdio.h>
#include "ninjonas.h"

#if defined(OLED_DRIVER_ENABLE) & !defined(KEYBOARD_kyria_rev1)
#if defined(OLED_ENABLE) & !defined(KEYBOARD_kyria_rev1)

static uint32_t oled_timer = 0;



@@ 49,16 49,16 @@ void render_layer_state(void) {
  bool adjust = layer_state_is(_ADJUST);
  bool numpad = layer_state_is(_NUMPAD);

  if(lower){ 
    oled_write_P(PSTR(" Lower "), true); 
  } else if(raise){ 
    oled_write_P(PSTR(" Raise "), true); 
  } else if(adjust){ 
      oled_write_P(PSTR(" Adjust "), true); 
  if(lower){
    oled_write_P(PSTR(" Lower "), true);
  } else if(raise){
    oled_write_P(PSTR(" Raise "), true);
  } else if(adjust){
      oled_write_P(PSTR(" Adjust "), true);
  } else if(numpad) {
      oled_write_P(PSTR(" Numpad "), true); 
  } else { 
    oled_write_P(PSTR(" Default"), false); 
      oled_write_P(PSTR(" Numpad "), true);
  } else {
    oled_write_P(PSTR(" Default"), false);
  }
}


M users/ninjonas/process_records.c => users/ninjonas/process_records.c +2 -2
@@ 6,7 6,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true;
__attribute__((weak))
bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; }

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
__attribute__((weak))
bool process_record_oled(uint16_t keycode, keyrecord_t *record) { return true; }
#endif


@@ 110,7 110,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  }

  return process_record_keymap(keycode, record) && process_record_secrets(keycode, record)
         #ifdef OLED_DRIVER_ENABLE
         #ifdef OLED_ENABLE
         && process_record_oled(keycode, record)
         #endif
         ; // Close return

M users/ninjonas/process_records.h => users/ninjonas/process_records.h +1 -1
@@ 25,6 25,6 @@ enum custom_keycodes {

bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
bool process_record_oled(uint16_t keycode, keyrecord_t *record);
#endif

M users/riblee/riblee.c => users/riblee/riblee.c +2 -2
@@ 173,7 173,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    return true;
};

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

static char receive_buffer[128] = {};
static uint8_t receive_buffer_length = 0;


@@ 227,4 227,4 @@ void raw_hid_receive(uint8_t *data, uint8_t length) {

#endif

#endif
\ No newline at end of file
#endif

M users/sethBarberee/sethBarberee.c => users/sethBarberee/sethBarberee.c +1 -1
@@ 58,7 58,7 @@ void keyboard_post_init_user(void)
__attribute__((weak)) void suspend_power_down_keymap(void) {}

void suspend_power_down_user(void) {
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
    oled_off();
#endif
    suspend_power_down_keymap();

M users/snowe/oled_setup.c => users/snowe/oled_setup.c +2 -2
@@ 16,7 16,7 @@
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE

#    include QMK_KEYBOARD_H
#    include "quantum.h"


@@ 138,4 138,4 @@ void oled_task_user(void) {
    }
}

#endif  // OLED_DRIVER_ENABLE
#endif  // OLED_ENABLE

M users/snowe/oled_setup.h => users/snowe/oled_setup.h +2 -2
@@ 18,7 18,7 @@
#pragma once

#include "quantum.h"
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    include "oled_driver.h"
#    define OLED_RENDER_WPM_COUNTER " WPM: "
#endif


@@ 27,4 27,4 @@
#endif
#ifdef OCEAN_DREAM_ENABLE
#    include "ocean_dream.h"
#endif
\ No newline at end of file
#endif

M users/snowe/readme_ocean_dream.md => users/snowe/readme_ocean_dream.md +3 -2
@@ 41,7 41,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
```
4. In your `rules.mk` to make it easier to turn the animation on/off, add
```makefile
ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
ifeq ($(strip $(OLED_ENABLE)), yes)
    #... your code here...

    ifdef OCEAN_DREAM_ENABLE


@@ 59,7 59,8 @@ endif

You're done! Now you can enable **Ocean Dream** by simply turning on the OLED feature
```makefile
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
```

And if you want to disable it without turning off the OLED Driver you can simply set 

M users/snowe/rules.mk => users/snowe/rules.mk +1 -1
@@ 1,6 1,6 @@


ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
ifeq ($(strip $(OLED_ENABLE)), yes)
    SRC += oled_setup.c

	ifdef OCEAN_DREAM_ENABLE

M users/snowe/snowe.h => users/snowe/snowe.h +1 -1
@@ 35,7 35,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
//#if defined(RGB_MATRIX_ENABLE)
//#    include "rgb_matrix_stuff.h"
//#endif
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
#    include "oled_setup.h"
#endif


M users/tominabox1/rules.mk => users/tominabox1/rules.mk +2 -1
@@ 11,7 11,8 @@ ifeq ($(strip $(KEYBOARD)), crkbd/rev1)
RGB_MATRIX_ENABLE = yes
EXTRAFLAGS += -flto
BOOTLOADER = qmk-dfu
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
endif

ifeq ($(strip $(KEYBOARD)), lazydesigners/dimple)

M users/tominabox1/tominabox1.c => users/tominabox1/tominabox1.c +3 -3
@@ 172,10 172,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  #endif

    if (record->event.pressed) {
      #ifdef OLED_DRIVER_ENABLE
      #ifdef OLED_ENABLE
        oled_timer = timer_read();
        oled_on();
        #endif // OLED_DRIVER_ENABLE
        #endif // OLED_ENABLE
    switch (keycode) {
            case KC_BBB:
                if (record->event.pressed) {


@@ 193,7 193,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {

}
#ifdef KEYBOARD_crkbd_rev1
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void render_logo(void) {
    static const char PROGMEM logo[] = {
        0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,

M users/xulkal/rules.mk => users/xulkal/rules.mk +1 -1
@@ 27,6 27,6 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
  SRC += custom_rgb.c
endif

ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
ifeq ($(strip $(OLED_ENABLE)), yes)
  SRC += custom_oled.c
endif