summaryrefslogtreecommitdiff
path: root/keyboards/lily58
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/lily58')
-rw-r--r--keyboards/lily58/keymaps/muppetjones/README.md13
-rw-r--r--keyboards/lily58/keymaps/muppetjones/config.h44
-rw-r--r--keyboards/lily58/keymaps/muppetjones/features/bongo_cat.c127
-rw-r--r--keyboards/lily58/keymaps/muppetjones/features/bongo_cat.h14
-rw-r--r--keyboards/lily58/keymaps/muppetjones/keymap.c240
-rw-r--r--keyboards/lily58/keymaps/muppetjones/rules.mk17
6 files changed, 455 insertions, 0 deletions
diff --git a/keyboards/lily58/keymaps/muppetjones/README.md b/keyboards/lily58/keymaps/muppetjones/README.md
new file mode 100644
index 0000000000..38cea9cfc2
--- /dev/null
+++ b/keyboards/lily58/keymaps/muppetjones/README.md
@@ -0,0 +1,13 @@
+# Lily58
+
+```shell
+qmk compile -kb lily58/rev1 -km muppetjones
+```
+
+```
+qmk flash -kb lily58/rev1 -km muppetjones -bl avrdude-split-left
+```
+
+```
+qmk flash -kb lily58/rev1 -km muppetjones -bl avrdude-split-right
+```
diff --git a/keyboards/lily58/keymaps/muppetjones/config.h b/keyboards/lily58/keymaps/muppetjones/config.h
new file mode 100644
index 0000000000..bee5ee45da
--- /dev/null
+++ b/keyboards/lily58/keymaps/muppetjones/config.h
@@ -0,0 +1,44 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+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/>.
+*/
+
+#pragma once
+
+/* Select hand configuration */
+
+// 1 minute
+#ifdef OLED_ENABLE
+# define OLED_TIMEOUT 60000
+#endif
+
+
+// Change "hold" time (default is 200 ms)
+#define TAPPING_TERM 200
+
+// Prevent normal rollover on alphas from accidentally triggering mods.
+#define IGNORE_MOD_TAP_INTERRUPT
+
+// Enable rapid switch from tap to hold, disables double tap hold auto-repeat.
+#define TAPPING_FORCE_HOLD
+
+#undef RGBLED_NUM
+
+// Allows to use either side as the master. Look at the documentation for info:
+// https://docs.qmk.fm/#/config_options?id=setting-handedness
+#define EE_HANDS
diff --git a/keyboards/lily58/keymaps/muppetjones/features/bongo_cat.c b/keyboards/lily58/keymaps/muppetjones/features/bongo_cat.c
new file mode 100644
index 0000000000..23f6493efc
--- /dev/null
+++ b/keyboards/lily58/keymaps/muppetjones/features/bongo_cat.c
@@ -0,0 +1,127 @@
+/**
+ * BONGO CAT!
+
+WPM-responsive animation of bongo cat!
+
+Source:
+ https://github.com/qmk/qmk_firmware/blob/master/keyboards/kyria/keymaps/j-inc/keymap.c
+*/
+
+#include QMK_KEYBOARD_H
+
+#ifdef OLED_ENABLE
+
+# define IDLE_FRAMES 5
+# define IDLE_SPEED 30 // below this wpm value your animation will idle
+
+// #define PREP_FRAMES 1 // uncomment if >1
+
+# define TAP_FRAMES 2
+# define TAP_SPEED 40 // above this wpm value typing animation to triggere
+
+# define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
+// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing
+# define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024
+
+uint32_t anim_timer = 0;
+uint32_t anim_sleep = 0;
+uint8_t current_idle_frame = 0;
+// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1
+uint8_t current_tap_frame = 0;
+
+/* Animation */
+
+static const char PROGMEM ANIM_IDLE[IDLE_FRAMES][ANIM_SIZE] = {
+ // clang-format off
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,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,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,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,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,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,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,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,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,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,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,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,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,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,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
+ 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,64,64,64,64,32,32,32,32,16,8,4,2,2,4,24,96,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,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,0,0,0,0,0,0,0,60,194,1,1,2,2,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,0,129,130,130,132,8,16,32,64,128,0,0,0,0,128,128,128,128,64,64,64,64,32,
+ 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,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,128,112,25,6,0,0,0,0,0,0,0,24,24,24,27,3,0,64,160,34,36,20,18,18,18,11,8,8,8,8,5,5,9,9,16,16,16,16,16,17,15,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,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,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,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,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,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,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,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,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
+ 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ },
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,64,32,32,32,32,16,16,16,16,8,8,4,2,2,2,4,56,64,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,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,0,0,0,0,0,0,0,28,226,1,1,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64,
+ 32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,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,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,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,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ }
+ // clang-format on
+};
+
+// Prep animation
+static const char PROGMEM ANIM_PREP[][ANIM_SIZE] = {
+ // clang-format off
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,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,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,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,
+ 64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,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,128,112,12,3,0,0,24,6,5,152,153,132,195,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,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,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ }
+ // clang-format on
+};
+
+// Typing animation
+static const char PROGMEM ANIM_TAP[TAP_FRAMES][ANIM_SIZE] = {
+ // clang-format off
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,248,248,248,248,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,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,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,1,2,4,8,16,32,67,135,7,1,0,184,188,190,159,
+ 95,95,79,76,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,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,128,112,12,3,0,0,24,6,5,152,153,132,67,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,61,124,252,252,252,252,252,60,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,
+ 1,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,1,3,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,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,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,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,64,64,32,
+ 32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,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,128,112,12,3,0,0,0,0,0,0,0,0,0,0,1,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,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,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,122,122,121,121,121,121,57,49,2,2,4,4,8,8,8,136,136,135,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
+ }
+ // clang-format on
+};
+
+/* Functions */
+
+
+void animation_phase(uint8_t wpm) {
+ // NOTE: Optimized the conditional. We don't need to recheck each.
+ // NOTE: Move this and the animation outside of the function.
+
+ if (IDLE_SPEED >= wpm) {
+ current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
+ oled_write_raw_P(ANIM_IDLE[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE);
+ } else if (TAP_SPEED > wpm) {
+ oled_write_raw_P(ANIM_PREP[0], ANIM_SIZE);
+ } else {
+ current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
+ oled_write_raw_P(ANIM_TAP[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE);
+ }
+}
+
+// Images credit j-inc(/James Incandenza) and pixelbenny. Credit to obosob for initial animation approach.
+void render_bongo_cat(void) {
+ const uint8_t curr_wpm = get_current_wpm();
+
+ if (curr_wpm > 000) {
+ oled_on();
+ anim_sleep = timer_read32();
+ } else if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
+ oled_off();
+ return;
+ }
+
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animation_phase(curr_wpm);
+ }
+}
+
+#endif
diff --git a/keyboards/lily58/keymaps/muppetjones/features/bongo_cat.h b/keyboards/lily58/keymaps/muppetjones/features/bongo_cat.h
new file mode 100644
index 0000000000..1025ccfa1b
--- /dev/null
+++ b/keyboards/lily58/keymaps/muppetjones/features/bongo_cat.h
@@ -0,0 +1,14 @@
+/**
+ * BONGO CAT!
+
+WPM-responsive animation of bongo cat!
+
+Source:
+ https://github.com/qmk/qmk_firmware/blob/master/keyboards/kyria/keymaps/j-inc/keymap.c
+*/
+
+#pragma once
+
+const char *wpm_state(void);
+void animation_phase(uint8_t wpm);
+void render_bongo_cat(void);
diff --git a/keyboards/lily58/keymaps/muppetjones/keymap.c b/keyboards/lily58/keymaps/muppetjones/keymap.c
new file mode 100644
index 0000000000..6e02482289
--- /dev/null
+++ b/keyboards/lily58/keymaps/muppetjones/keymap.c
@@ -0,0 +1,240 @@
+/* Copyright 2020 Stephen J. Bush
+ *
+ * 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 QMK_KEYBOARD_H
+#include "muppetjones.h"
+#include "features/bongo_cat.h"
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+
+/*
+ * qmk compile -kb lily58/rev1 -km muppetjones
+ */
+
+// GACS (Lower)
+#define HR_LBRC LCTL_T(KC_LBRC)
+#define HR_RBRC LSFT_T(KC_RBRC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ // clang-format off
+
+/* Colemak DH
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BADJ |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | Q | W | F | P | B | | J | L | U | Y | ; | Bksp |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Esc | A | R | S | T | G |-------. ,-------| M | N | E | I | O | ' |
+ * |------+------+------+------+------+------| Raise | | Lower |------+------+------+------+------+------|
+ * |LShift| Z | X | C | D | V |-------| |-------| K | H | , | . | / |Enter |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | Alt | LGUI |LOWER | /Space / \Space \ |RAISE | Ctrl | RGUI |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+[_CLMK_DH] = LAYOUT_wrapper(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_CAPS, __BLANK____________________________________, KC_BSPC,
+ KC_CAPS, __COLEMAK_MOD_DH_L1________________________, __COLEMAK_MOD_DH_R1_W_QUOT_________________, KC_BSPC,
+ HY_ESC, __COLEMAK_MOD_DH_L2_W_GACS_________________, __COLEMAK_MOD_DH_R2_W_SCAG_________________, KC_QUOT,
+ TD_LAYR, __COLEMAK_MOD_DH_L3_W_SFTV_________________, KC_CAPS, KC_TAB, __COLEMAK_MOD_DH_R3________________________, KC_SFTENT,
+ XXXXXXX, XXXXXXX, HY_ESC, LOW_ENT, NAV_SPC, HY_BSPC, XXXXXXX, XXXXXXX
+),
+
+/* QWERTY
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | | Y | U | I | O | P | - |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * |LCTRL | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
+ * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+[_QWERTY] = LAYOUT_wrapper(
+ _______, __BLANK____________________________________, __BLANK____________________________________, _______,
+ _______, __QWERTY_L1________________________________, __QWERTY_R1________________________________, _______,
+ _______, __QWERTY_L2________________________________, __QWERTY_R2________________________________, _______,
+ _______, __QWERTY_L3________________________________, _______, _______, __QWERTY_R3________________________________, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+),
+[_MOUSE] = LAYOUT_wrapper(
+ _______, __BLANK____________________________________, __BLANK____________________________________, _______,
+ _______, __BLANK____________________________________, __BLANK____________________________________, _______,
+ _______, __BLANK____________________________________, __BLANK____________________________________, _______,
+ _______, __BLANK____________________________________, _______, _______, __BLANK____________________________________, _______,
+ KC_BTN1, __BLANK____________________________________, _______, KC_BTN2
+),
+
+/* LOWER
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | | Mute | Vol- | Vol+ | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ~ | | | ` | | ( | | ) | 7 | 8 | 9 | \ | Bksp |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | GUI | ALT | _ | - | { |-------. ,-------| } | 4 | 5 | 6 | * | ` |
+ * |------+------+------+------+------+------| | | |------+------+------+------+------+------|
+ * | | | | + | = | [ |-------| |-------| ] | 1 | 2 | 3 | | |Enter |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | | |LOWER | / / \ \ | 0 | . | = |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+[_LOWER] = LAYOUT_wrapper(
+ _______, __BLANK____________________________________, __BLANK____________________________________, _______,
+ _______, __SYMBOLS_L1_______________________________, __NUMPAD_R1________________________________, _______,
+ _______, __SYMBOLS_L2_______________________________, __NUMPAD_R2________________________________, KC_COMM,
+ _______, __SYMBOLS_L3_______________________________, _______, _______, __NUMPAD_R3________________________________, KC_DOT,
+ _______, _______, _______, _______, KC_SPC, KC_0, KC_DOT, _______
+),
+/* RAISE
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | |MS_A_0|MS_A_1|MS_A_2| | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | |MS_W_U| | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | GUI | ALT | CTL | SFT |MS_W_D|-------. ,-------| | Left | Down | Up |Right | |
+ * |------+------+------+------+------+------|MS_W_L | |MS_W_R |------+------+------+------+------+------|
+ * | | MS_L | MS_D | MS_U | MS_R | |-------| |-------| |MS_W_L|MS_W_D|MS_W_U|MS_W_R| |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | | | MS_2 | / MS_1 / \ \ |RAISE | | |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ // */
+
+[_RAISE] = LAYOUT_wrapper(
+ _______, __BLANK____________________________________, __BLANK____________________________________, _______,
+ _______, __SYMBOLS_L1_______________________________, __NAV_R1___________________________________, _______,
+ _______, __SYMBOLS_L2_______________________________, __NAV_R2___________________________________, _______,
+ _______, __SYMBOLS_L3_______________________________, _______, _______, __NAV_R3___________________________________, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+),
+[_NAV] = LAYOUT_wrapper(
+ _______, __BLANK____________________________________, __BLANK____________________________________, _______,
+ _______, __VIM_L1___________________________________, __NAV_R1___________________________________, _______,
+ _______, __BLANK_W_GACS_____________________________, __NAV_R2___________________________________, _______,
+ _______, __BLANK____________________________________, _______, _______, __NAV_R3___________________________________, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* ADJUST
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | Reset| | | | | | Reset| | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | |-------. ,-------| | |RGB ON| HUE+ | SAT+ | VAL+ |
+ * |------+------+------+------+------+------| | | |------+------+------+------+------+------|
+ * | | | | | | |-------| |-------| | | MODE | HUE- | SAT- | VAL- |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+[_ADJUST] = LAYOUT_wrapper(
+ _______, __BLANK____________________________________, _______, CLMK_DH, QWERTY, _______, _______, _______,
+ RESET, __ADJUST_L1________________________________, __MEDIA_R1_________________________________, _______,
+ _______, __ADJUST_L2________________________________, __MEDIA_R2_________________________________, _______,
+ _______, __ADJUST_L3________________________________, _______, _______, __MEDIA_R3_________________________________, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+ // clang-format on
+};
+
+// SSD1306 OLED update loop, make sure to enable OLED_DRIVER_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
+ return rotation;
+}
+
+// When you add source files to SRC in rules.mk, you can use functions.
+const char *read_layer_state_user(void);
+void set_keylog(uint16_t keycode, keyrecord_t *record);
+const char *read_keylog(void);
+const char *read_keylogs(void);
+
+char layer_state_str[24];
+
+const char *read_layer_state_user(void) {
+ // NOTE;
+ switch (get_highest_layer(layer_state)) {
+ case _CLMK_DH:
+ return "Layer: Colemak";
+ break;
+ case _QWERTY:
+ return "Layer: QWERTY ";
+ break;
+ case _MOUSE:
+ return "Layer: Mouse ";
+ break;
+ case _LOWER:
+ return "Layer: Lower ";
+ break;
+ case _RAISE:
+ return "Layer: Raise ";
+ break;
+ case _NAV:
+ return "Layer: Nav ";
+ break;
+ case _ADJUST:
+ return "Layer: Adjust ";
+ break;
+ default:
+ break;
+ }
+
+ char *layer_state_str = "Layer: Und- ";
+ layer_state_str[10] = '0' + layer_state % 10;
+ return layer_state_str;
+}
+
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
+ // If you want to change the display of OLED, you need to change here
+ oled_write_ln(read_layer_state_user(), false);
+ oled_write_ln(read_keylog(), false);
+ oled_write_ln(read_keylogs(), false);
+ } else {
+ render_bongo_cat();
+ oled_set_cursor(0, 6);
+ oled_write_P(PSTR("WPM: "), false);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ }
+ return false;
+}
+#endif // OLED_DRIVER_ENABLE
+
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+#ifdef OLED_ENABLE
+ set_keylog(keycode, record);
+#endif
+ // set_timelog();
+ }
+
+ // Regular user keycode case statement
+ switch (keycode) {
+ default:
+ return true;
+ }
+
+ return true;
+}
diff --git a/keyboards/lily58/keymaps/muppetjones/rules.mk b/keyboards/lily58/keymaps/muppetjones/rules.mk
new file mode 100644
index 0000000000..1323bea893
--- /dev/null
+++ b/keyboards/lily58/keymaps/muppetjones/rules.mk
@@ -0,0 +1,17 @@
+OLED_ENABLE= yes # OLED display
+WPM_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+EXTRAKEY_ENABLE = yes
+
+# If you want to change the display of OLED, you need to change here
+# SRC += ./lib/rgb_state_reader.c
+SRC += ./lib/layer_state_reader.c
+SRC += ./lib/logo_reader.c
+SRC += ./lib/keylogger.c
+SRC += ./features/bongo_cat.c
+
+# Reduce firmware size
+# https://thomasbaart.nl/2018/12/01/reducing-firmware-size-in-qmk/
+# also requires in config.h
+LTO_ENABLE = yes