aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGianluca D'Abrosca <63099818+dbrglc@users.noreply.github.com>2022-01-10 10:13:35 +0100
committerGitHub <noreply@github.com>2022-01-10 01:13:35 -0800
commitd9e5a5f2dbbc99516e5b81776c2130cceab6691b (patch)
tree102377a454d53445b07ccf059e40dfb6b0ec873b
parent7c186ebb974b4bbadbb74a7610bab5d2f66d030e (diff)
downloadqmk_firmware-d9e5a5f2dbbc99516e5b81776c2130cceab6691b.tar.gz
qmk_firmware-d9e5a5f2dbbc99516e5b81776c2130cceab6691b.zip
[Keymap] bongocat_wpm_responsive for lily58 (#14922)
* Adding the keymap of the wpm responsive bongocat * Update keyboards/lily58/keymaps/bongocat_wpm_responsive/config.h * Update keyboards/lily58/keymaps/bongocat_wpm_responsive/config.h * Update keyboards/lily58/keymaps/bongocat_wpm_responsive/rules.mk * Update keyboards/lily58/keymaps/bongocat_wpm_responsive/config.h * Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c * Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c * Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c * Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c * Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c * Adding the License * Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c * Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c * Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c * Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c * Update keyboards/lily58/keymaps/bongocat_wpm_responsive/rules.mk * Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c * Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c
-rw-r--r--keyboards/lily58/keymaps/bongocat_wpm_responsive/config.h49
-rw-r--r--keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c334
-rw-r--r--keyboards/lily58/keymaps/bongocat_wpm_responsive/readme.md23
-rw-r--r--keyboards/lily58/keymaps/bongocat_wpm_responsive/rules.mk11
4 files changed, 417 insertions, 0 deletions
diff --git a/keyboards/lily58/keymaps/bongocat_wpm_responsive/config.h b/keyboards/lily58/keymaps/bongocat_wpm_responsive/config.h
new file mode 100644
index 000000000..09248850f
--- /dev/null
+++ b/keyboards/lily58/keymaps/bongocat_wpm_responsive/config.h
@@ -0,0 +1,49 @@
1/*
2 This is the c configuration file for the keymap
3
4 Copyright 2012 Jun Wako <wakojun@gmail.com>
5 Copyright 2015 Jack Humbert
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 2 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21 #pragma once
22
23 //#define USE_MATRIX_I2C
24
25 /* Select hand configuration */
26
27 // #define MASTER_LEFT
28 #define MASTER_LEFT
29 // #define EE_HANDS
30
31 #define TAPPING_FORCE_HOLD
32 #define TAPPING_TERM 200
33
34 #undef RGBLED_NUM
35#define RGBLIGHT_EFFECT_BREATHING
36#define RGBLIGHT_EFFECT_RAINBOW_MOOD
37#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
38#define RGBLIGHT_EFFECT_SNAKE
39#define RGBLIGHT_EFFECT_KNIGHT
40#define RGBLIGHT_EFFECT_CHRISTMAS
41#define RGBLIGHT_EFFECT_STATIC_GRADIENT
42#define RGBLIGHT_EFFECT_RGB_TEST
43#define RGBLIGHT_EFFECT_ALTERNATING
44#define RGBLIGHT_EFFECT_TWINKLE
45 #define RGBLED_NUM 27
46 #define RGBLIGHT_LIMIT_VAL 120
47 #define RGBLIGHT_HUE_STEP 10
48 #define RGBLIGHT_SAT_STEP 17
49 #define RGBLIGHT_VAL_STEP 17
diff --git a/keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c b/keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c
new file mode 100644
index 000000000..f93e9050c
--- /dev/null
+++ b/keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c
@@ -0,0 +1,334 @@
1/* Copyright 2021 (@dbrglc)
2*
3* This program is free software: you can redistribute it and/or modify
4* it under the terms of the GNU General Public License as published by
5* the Free Software Foundation, either version 2 of the License, or
6* (at your option) any later version.
7*
8* This program is distributed in the hope that it will be useful,
9* but WITHOUT ANY WARRANTY; without even the implied warranty of
10* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11* GNU General Public License for more details.
12*
13* You should have received a copy of the GNU General Public License
14* along with this program. If not, see <http://www.gnu.org/licenses/>.
15*/
16
17#include QMK_KEYBOARD_H
18
19
20enum custom_layers {
21 _QWERTY,
22 _LOWER,
23 _RAISE,
24 _ADJUST,
25};
26
27enum custom_keycodes {
28 QWERTY = SAFE_RANGE,
29 LOWER,
30 RAISE,
31 ADJUST,
32};
33
34
35const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
36
37/* QWERTY
38 * ,-----------------------------------------. ,-----------------------------------------.
39 * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = |
40 * |------+------+------+------+------+------| |------+------+------+------+------+------|
41 * | Tab | Q | W | E | R | T | | Y | U | I | O | P | - |
42 * |------+------+------+------+------+------| |------+------+------+------+------+------|
43 * |CANC | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
44 * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
45 * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
46 * `-----------------------------------------/ / \ \-----------------------------------------'
47 * | LCTRL| LAlt | LGUI | /Space / \Enter \ |BackSP| RAISE |LOWER |
48 * | | | |/ / \ \ | | | |
49 * `----------------------------' '------''--------------------'
50 */
51
52 [_QWERTY] = LAYOUT(
53 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
54 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
55 KC_DEL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
56 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
57 KC_LCTRL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, KC_BSPC, RAISE, LOWER
58),
59/* LOWER
60 * ,-----------------------------------------. ,-----------------------------------------.
61 * | | | | | | | | | | | | | |
62 * |------+------+------+------+------+------| |------+------+------+------+------+------|
63 * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
64 * |------+------+------+------+------+------| |------+------+------+------+------+------|
65 * | ` | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | - |
66 * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
67 * | | | | | | |-------| |-------| | _ | + | { | } | | |
68 * `-----------------------------------------/ / \ \-----------------------------------------'
69 * | LCTRL| LAlt | LGUI | /Space / \Enter \ |BackSP| RAISE |LOWER |
70 * | | | |/ / \ \ | | | |
71 * `----------------------------' '------''--------------------'
72 */
73
74[_LOWER] = LAYOUT(
75 _______, _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______,
76 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
77 KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD,
78 _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
79 _______, _______, _______, _______, _______, _______, _______, _______
80),
81/* RAISE
82 * ,-----------------------------------------. ,-----------------------------------------.
83 * | | | | | | | | | | | | | |
84 * |------+------+------+------+------+------| |------+------+------+------+------+------|
85 * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
86 * |------+------+------+------+------+------| |------+------+------+------+------+------|
87 * | F1 | F2 | F3 | F4 | F5 | F6 |-------. ,-------| | Left | Down | Up |Right | |
88 * |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
89 * | F7 | F8 | F9 | F10 | F11 | F12 |-------| |-------| + | - | = | [ | ] | \ |
90 * `-----------------------------------------/ / \ \-----------------------------------------'
91 * | LCTRL| LAlt | LGUI | /Space / \Enter \ |BackSP| RAISE |LOWER |
92 * | | | |/ / \ \ | | | |
93 * `----------------------------' '------''--------------------'
94 */
95
96[_RAISE] = LAYOUT(
97 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
98 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
99 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX,
100 KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PLUS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
101 _______, _______, _______, _______, _______, _______, _______, _______
102),
103/* ADJUST
104 * ,-----------------------------------------. ,-----------------------------------------.
105 * | | | | | | | | | | | | | |
106 * |------+------+------+------+------+------| |------+------+------+------+------+------|
107 * | | | | | | | | | | | | | |
108 * |------+------+------+------+------+------| |------+------+------+------+------+------|
109 * | | | | | | |-------. ,-------| | |RGB ON| HUE+ | SAT+ | VAL+ |
110 * |------+------+------+------+------+------| | | |------+------+------+------+------+------|
111 * | | | | | | |-------| |-------| | | MODE | HUE- | SAT- | VAL- |
112 * `-----------------------------------------/ / \ \-----------------------------------------'
113 * | LCTRL| LAlt | LGUI | /Space / \Enter \ |BackSP| RAISE |LOWER |
114 * | | | |/ / \ \ | | | |
115 * `----------------------------' '------''--------------------'
116 */
117
118 [_ADJUST] = LAYOUT(
119 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
120 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
121 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
122 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
123 _______, _______, _______, _______, _______, _______, _______, _______
124 )
125};
126
127//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk
128#ifdef OLED_ENABLE
129
130oled_rotation_t oled_init_user(oled_rotation_t rotation) {
131 if (!is_keyboard_master())
132 return OLED_ROTATION_180; // flips the display 180 degrees if offhand
133 return rotation;
134}
135
136// When you add source files to SRC in rules.mk, you can use functions.
137const char *read_layer_state(void);
138const char *read_logo(void);
139void set_keylog(uint16_t keycode, keyrecord_t *record);
140const char *read_keylog(void);
141const char *read_keylogs(void);
142
143// const char *read_mode_icon(bool swap);
144// const char *read_host_led_state(void);
145// void set_timelog(void);
146// const char *read_timelog(void);
147
148char wpm_str[16];
149
150// WPM-responsive animation stuff here
151#define IDLE_FRAMES 5
152#define IDLE_SPEED 40 // below this wpm value your animation will idle
153
154// #define PREP_FRAMES 1 // uncomment if >1
155
156#define TAP_FRAMES 2
157#define TAP_SPEED 60 // above this wpm value typing animation to triggere
158
159#define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
160#define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, may need fixing
161#define ANIM_SIZE 640 // number of bytes in array, minimize for adequate firmware size, max is 1024
162
163uint16_t anim_timer = 0;
164uint16_t anim_sleep = 0;
165uint8_t current_idle_frame = 0;
166uint8_t current_tap_frame = 0;
167
168//
169// Render right OLED display animation
170//
171static void render_anim(void) {
172
173 // Idle animation
174 static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
175 {
176 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,
177 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,
178 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
179 },
180
181 {
182 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,
183 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,
184 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
185 },
186
187 {
188 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,
189 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,
190 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
191 },
192
193 {
194 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,
195 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,
196 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
197 },
198
199 {
200 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,
201 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,
202 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
203 }
204 };
205
206 // Prep animation
207 static const char PROGMEM prep[][ANIM_SIZE] = {
208
209 {
210 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,
211 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,
212 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
213 }
214
215 };
216
217 // Typing animation
218 static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
219
220 {
221 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,
222 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,
223 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
224 },
225
226 {
227 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,
228 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,
229 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
230 }
231
232 };
233
234 //assumes 1 frame prep stage
235 void animation_phase(void) {
236 if(get_current_wpm() <=IDLE_SPEED){
237 current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
238 oled_clear();
239 oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE);
240 }
241 if(get_current_wpm() >IDLE_SPEED && get_current_wpm() <TAP_SPEED){
242 oled_clear();
243 // oled_write_raw_P(prep[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1
244 oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1
245 }
246 if(get_current_wpm() >=TAP_SPEED){
247 current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
248 oled_clear();
249 oled_write_raw_P(tap[abs((TAP_FRAMES-1)-current_tap_frame)], ANIM_SIZE);
250 }
251 }
252 if(get_current_wpm() != 0) {
253 if(timer_elapsed(anim_timer) > ANIM_FRAME_DURATION) {
254 anim_timer = timer_read();
255 animation_phase();
256 }
257 anim_sleep = timer_read();
258 } else {
259 if(timer_elapsed(anim_timer) > ANIM_FRAME_DURATION) {
260 anim_timer = timer_read();
261 animation_phase();
262 }
263 if(timer_elapsed(anim_sleep) > SLEEP_TIMER) {
264// oled_off();
265 }
266 }
267}
268
269void oled_task_user(void) {
270 if (is_keyboard_master()) {
271 oled_set_cursor(0,1);
272 uint8_t n = get_current_wpm();
273 char wpm_counter[4];
274 wpm_counter[3] = '\0';
275 wpm_counter[2] = '0' + n % 10;
276 wpm_counter[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
277 wpm_counter[0] = n / 10 ? '0' + n / 10 : ' ';
278 oled_write_P(PSTR("WPM: "), false);
279 oled_write(wpm_counter, false);
280 oled_set_cursor(0,3); {
281 oled_write_ln(read_layer_state(), false);
282 }
283 } else {
284 render_anim();
285 }
286}
287#endif // OLED_DRIVER_ENABLE
288
289bool process_record_user(uint16_t keycode, keyrecord_t *record) {
290 if (record->event.pressed) {
291#ifdef OLED_ENABLE
292 set_keylog(keycode, record);
293#endif
294 // set_timelog();
295 }
296
297 switch (keycode) {
298 case QWERTY:
299 if (record->event.pressed) {
300 set_single_persistent_default_layer(_QWERTY);
301 }
302 return false;
303 break;
304 case LOWER:
305 if (record->event.pressed) {
306 layer_on(_LOWER);
307 update_tri_layer(_LOWER, _RAISE, _ADJUST);
308 } else {
309 layer_off(_LOWER);
310 update_tri_layer(_LOWER, _RAISE, _ADJUST);
311 }
312 return false;
313 break;
314 case RAISE:
315 if (record->event.pressed) {
316 layer_on(_RAISE);
317 update_tri_layer(_LOWER, _RAISE, _ADJUST);
318 } else {
319 layer_off(_RAISE);
320 update_tri_layer(_LOWER, _RAISE, _ADJUST);
321 }
322 return false;
323 break;
324 case ADJUST:
325 if (record->event.pressed) {
326 layer_on(_ADJUST);
327 } else {
328 layer_off(_ADJUST);
329 }
330 return false;
331 break;
332 }
333 return true;
334}
diff --git a/keyboards/lily58/keymaps/bongocat_wpm_responsive/readme.md b/keyboards/lily58/keymaps/bongocat_wpm_responsive/readme.md
new file mode 100644
index 000000000..2bcd7e87f
--- /dev/null
+++ b/keyboards/lily58/keymaps/bongocat_wpm_responsive/readme.md
@@ -0,0 +1,23 @@
1# Responsive Bongo Cat layout for Lily58 :drum: :smile_cat:
2
3This split ergo layout follows the layout of another ergo split keyboard with the following changes:
4
5* I put the space on the Left thumb and the Enter on the right thumb :thumbsup:
6
7* Near the thumbs there are all my most used keys as a Mac User :computer:
8
9* I edit the Bongo Cat to be responsive to the Word Per Minutes that you are writing :scream_cat:
10
11## Layers
12
13### Default layer
14
15![Default layer layout](https://i.imgur.com/padJXr2.png)
16
17### Raise layer
18
19![Raise layer layout](https://i.imgur.com/iqQDUXD.png)
20
21### Lower layer
22
23![Lower layer layout](https://i.imgur.com/EzNU2hq.png) \ No newline at end of file
diff --git a/keyboards/lily58/keymaps/bongocat_wpm_responsive/rules.mk b/keyboards/lily58/keymaps/bongocat_wpm_responsive/rules.mk
new file mode 100644
index 000000000..787d72e3f
--- /dev/null
+++ b/keyboards/lily58/keymaps/bongocat_wpm_responsive/rules.mk
@@ -0,0 +1,11 @@
1WPM_ENABLE = yes
2LTO_ENABLE = yes
3
4 # If you want to change the display of OLED, you need to change here
5 SRC += ./lib/rgb_state_reader.c \
6 ./lib/layer_state_reader.c \
7 ./lib/logo_reader.c \
8 ./lib/keylogger.c \
9 # ./lib/mode_icon_reader.c \
10 # ./lib/host_led_state_reader.c \
11 # ./lib/timelogger.c \ \ No newline at end of file