aboutsummaryrefslogtreecommitdiff
path: root/keyboards/nullbitsco
diff options
context:
space:
mode:
authorJay Greco <jayv.greco@gmail.com>2021-06-23 19:22:42 -0700
committerGitHub <noreply@github.com>2021-06-24 12:22:42 +1000
commit0ec6d6daf73825e9801e030497c011637fd606df (patch)
treebfc0651588f2a49173937ab6b7d94f3193c42c8f /keyboards/nullbitsco
parent909d9c228fb03750170aa7ca49ea10d08a6e1113 (diff)
downloadqmk_firmware-0ec6d6daf73825e9801e030497c011637fd606df.tar.gz
qmk_firmware-0ec6d6daf73825e9801e030497c011637fd606df.zip
Update oled_bongocat to match VIA keymap (#12875)
* Update to match VIA keymap * Update with feedback from PR
Diffstat (limited to 'keyboards/nullbitsco')
-rw-r--r--keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c148
1 files changed, 126 insertions, 22 deletions
diff --git a/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c b/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c
index d1ddd3bcb..1d8559627 100644
--- a/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c
+++ b/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c
@@ -21,28 +21,60 @@
21 21
22 22
23enum layer_names { 23enum layer_names {
24 _MA, 24 _BASE,
25 _FN 25 _VIA1,
26 _VIA2,
27 _VIA3
26}; 28};
27 29
30#define KC_DISC_MUTE KC_F23
31#define KC_DISC_DEAF KC_F24
32
28enum custom_keycodes { 33enum custom_keycodes {
29 KC_CUST = SAFE_RANGE, 34 PROG = USER00,
35 DISC_MUTE,
36 DISC_DEAF,
37 SUPER_ALT_TAB,
38 _NUM_CUST_KCS,
30}; 39};
31 40
41// Macro variables
42bool is_alt_tab_active = false;
43uint16_t alt_tab_timer = 0;
44bool muted = false;
45bool deafened = false;
46
32const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 47const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
33 [_MA] = LAYOUT_ansi( 48 [_BASE] = LAYOUT_all(
34 KC_ESC, 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_HOME, 49 KC_GESC, 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_HOME,
35 KC_F13, 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_DEL, 50 KC_F13, 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_DEL,
36 KC_F14, 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_PGUP, 51 KC_F14, 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_PGUP,
37 KC_F15, 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_PGDN, 52 KC_F15, KC_LSFT, KC_NUBS, 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_PGDN,
38 KC_F16, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT 53 KC_F16, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_VIA1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
39 ), 54 ),
40 [_FN] = LAYOUT_ansi( 55
41 RESET, 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_END, 56 [_VIA1] = LAYOUT_all(
42 RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 57 RESET, 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_END,
43 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 58 RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
44 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 59 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
45 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 60 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
61 _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
62 ),
63
64 [_VIA2] = LAYOUT_all(
65 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
66 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
67 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
68 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
69 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
70 ),
71
72 [_VIA3] = LAYOUT_all(
73 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
74 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
75 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
76 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
77 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
46 ), 78 ),
47 79
48}; 80};
@@ -59,7 +91,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
59#ifdef OLED_DRIVER_ENABLE 91#ifdef OLED_DRIVER_ENABLE
60#define IDLE_FRAME_DURATION 200 // Idle animation iteration rate in ms 92#define IDLE_FRAME_DURATION 200 // Idle animation iteration rate in ms
61 93
62oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_90; } 94oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }
63 95
64uint32_t anim_timer = 0; 96uint32_t anim_timer = 0;
65uint32_t anim_sleep = 0; 97uint32_t anim_sleep = 0;
@@ -126,8 +158,17 @@ static void render_anim(void) {
126 } 158 }
127} 159}
128 160
161void oled_task_user(void) {
162 render_anim();
163 oled_set_cursor(0, 14);
164 sprintf(wpm_str, ">%04d", get_current_wpm());
165 oled_write_ln(wpm_str, false);
166}
167#endif
168
129// Animate tap 169// Animate tap
130bool process_record_user(uint16_t keycode, keyrecord_t *record) { 170bool process_record_user(uint16_t keycode, keyrecord_t *record) {
171 #ifdef OLED_DRIVER_ENABLE
131 // Check if non-mod 172 // Check if non-mod
132 if ((keycode >= KC_A && keycode <= KC_0) || (keycode >= KC_TAB && keycode <= KC_SLASH)) { 173 if ((keycode >= KC_A && keycode <= KC_0) || (keycode >= KC_TAB && keycode <= KC_SLASH)) {
133 if (record->event.pressed) { 174 if (record->event.pressed) {
@@ -140,13 +181,76 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
140 #endif 181 #endif
141 } 182 }
142 } 183 }
184 #endif
185
186 switch(keycode) {
187 case PROG:
188 if (record->event.pressed) {
189 rgblight_disable_noeeprom();
190 #ifdef OLED_DRIVER_ENABLE
191 oled_off();
192 #endif
193 bootloader_jump();
194 }
195 break;
196
197 case DISC_MUTE:
198 if (record->event.pressed) {
199 tap_code(KC_DISC_MUTE);
200 if (!rgblight_is_enabled()) break;
201
202 if (muted) {
203 rgblight_enable_noeeprom();
204 } else {
205 rgblight_timer_disable();
206 uint8_t val = rgblight_get_val();
207 rgblight_sethsv_range(255, 255, val, 0, 1);
208 }
209 muted = !muted;
210 }
211 break;
212
213 case DISC_DEAF:
214 if (record->event.pressed) {
215 tap_code(KC_DISC_DEAF);
216 if (!rgblight_is_enabled()) break;
217
218 if (deafened) {
219 rgblight_enable_noeeprom();
220 } else {
221 rgblight_timer_disable();
222 uint8_t val = rgblight_get_val();
223 rgblight_sethsv_range(255, 255, val, 0, RGBLED_NUM-1);
224 }
225 deafened = !deafened;
226 }
227 break;
228
229 case SUPER_ALT_TAB:
230 if (record->event.pressed) {
231 if (!is_alt_tab_active) {
232 is_alt_tab_active = true;
233 register_code(KC_LALT);
234 }
235 alt_tab_timer = timer_read();
236 register_code(KC_TAB);
237 } else {
238 unregister_code(KC_TAB);
239 }
240 break;
241
242 default:
243 break;
244 }
245
143 return true; 246 return true;
144} 247}
145 248
146void oled_task_user(void) { 249void matrix_scan_user(void) {
147 render_anim(); 250 if (is_alt_tab_active) {
148 oled_set_cursor(0, 14); 251 if (timer_elapsed(alt_tab_timer) > 1000) {
149 sprintf(wpm_str, ">%04d", get_current_wpm()); 252 unregister_code(KC_LALT);
150 oled_write_ln(wpm_str, false); 253 is_alt_tab_active = false;
254 }
255 }
151} 256}
152#endif