forked from mfulz_github/qmk_firmware
		
	Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
		
						commit
						1cdea7f530
					
				@ -1,4 +1,4 @@
 | 
				
			|||||||
/* Copyright 2020 Kyle McCreery 
 | 
					/* Copyright 2021 Kyle McCreery 
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * This program is free software: you can redistribute it and/or modify 
 | 
					 * 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 
 | 
					 * it under the terms of the GNU General Public License as published by 
 | 
				
			||||||
@ -40,7 +40,7 @@
 | 
				
			|||||||
#define ENCODERS_PAD_B { B5 }
 | 
					#define ENCODERS_PAD_B { B5 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* encoder resolution */
 | 
					/* encoder resolution */
 | 
				
			||||||
#define ENCODER_RESOLUTION 2
 | 
					#define ENCODER_RESOLUTION 4
 | 
				
			||||||
#define TAP_CODE_DELAY 10
 | 
					#define TAP_CODE_DELAY 10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* COL2ROW or ROW2COL */
 | 
					/* COL2ROW or ROW2COL */
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										197
									
								
								keyboards/mechwild/mercutio/keymaps/bongocat/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										197
									
								
								keyboards/mechwild/mercutio/keymaps/bongocat/keymap.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,197 @@
 | 
				
			|||||||
 | 
					/* Copyright 2021 Kyle McCreery 
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * 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 <stdio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// OLED setup for bongocat
 | 
				
			||||||
 | 
					#define IDLE_FRAMES 5
 | 
				
			||||||
 | 
					#define IDLE_SPEED 30
 | 
				
			||||||
 | 
					#define TAP_FRAMES 2
 | 
				
			||||||
 | 
					#define TAP_SPEED 40
 | 
				
			||||||
 | 
					#define ANIM_FRAME_DURATION 200
 | 
				
			||||||
 | 
					#define ANIM_SIZE 512
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static long int oled_timeout = 600000; // 10 minutes
 | 
				
			||||||
 | 
					bool gui_on = true;
 | 
				
			||||||
 | 
					char wpm_str[10];
 | 
				
			||||||
 | 
					uint32_t anim_timer = 0;
 | 
				
			||||||
 | 
					uint32_t anim_sleep = 0;
 | 
				
			||||||
 | 
					uint8_t current_idle_frame = 0;
 | 
				
			||||||
 | 
					uint8_t current_tap_frame = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 | 
					  [0] = LAYOUT_all(
 | 
				
			||||||
 | 
					                                                                                                                  KC_MUTE,
 | 
				
			||||||
 | 
					      KC_TAB,           KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, 
 | 
				
			||||||
 | 
					      MO(1),            KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    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_LCTL, KC_LGUI, KC_LALT,          KC_SPC,  KC_SPC,           KC_SPC,           KC_RALT, MO(2),            KC_RCTL ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [1] = LAYOUT_all(
 | 
				
			||||||
 | 
					                                                                                                                  KC_TRNS,
 | 
				
			||||||
 | 
					  	  KC_ESC,           KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL,
 | 
				
			||||||
 | 
					  	  KC_TRNS,          KC_TRNS, KC_GRV,  KC_BSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SCLN, KC_TRNS, KC_QUOT,
 | 
				
			||||||
 | 
					  	  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_SLSH,          KC_UP, 
 | 
				
			||||||
 | 
					  	  KC_TRNS, KC_TRNS, KC_TRNS,          KC_HOME, KC_TRNS,          KC_END,           KC_LEFT, KC_DOWN,          KC_RIGHT ),
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  [2] = LAYOUT_all(
 | 
				
			||||||
 | 
					                                                                                                                  KC_TRNS,  
 | 
				
			||||||
 | 
					  	  KC_TRNS,          KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS,
 | 
				
			||||||
 | 
					  	  KC_CAPS,          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, 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 ),
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					  [3] = LAYOUT_all(
 | 
				
			||||||
 | 
					                                                                                                                  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, 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, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,          KC_TRNS,          KC_TRNS, KC_TRNS,          KC_TRNS )
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef ENCODER_ENABLE
 | 
				
			||||||
 | 
					void encoder_update_user(uint8_t index, bool clockwise) {
 | 
				
			||||||
 | 
					    switch (index) {
 | 
				
			||||||
 | 
					        case 0:
 | 
				
			||||||
 | 
					            if (clockwise) {
 | 
				
			||||||
 | 
					                tap_code(KC_VOLU);
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                tap_code(KC_VOLD);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef OLED_DRIVER_ENABLE
 | 
				
			||||||
 | 
					oled_rotation_t oled_init_user(oled_rotation_t rotation) {
 | 
				
			||||||
 | 
					    return OLED_ROTATION_180;  // flips the display 180 degrees
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void render_anim(void) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Idle animation
 | 
				
			||||||
 | 
					    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,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
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Prep animation
 | 
				
			||||||
 | 
					    static const char PROGMEM prep[][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,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
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Typing animation
 | 
				
			||||||
 | 
					    static const char PROGMEM tap[TAP_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,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
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void animation_phase(void) {
 | 
				
			||||||
 | 
					        if (get_current_wpm() <=IDLE_SPEED) {
 | 
				
			||||||
 | 
					            current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
 | 
				
			||||||
 | 
					            oled_write_raw_P(idle[abs((IDLE_FRAMES-1)-current_idle_frame)], ANIM_SIZE);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (get_current_wpm() >IDLE_SPEED && get_current_wpm() <TAP_SPEED) {
 | 
				
			||||||
 | 
					            oled_write_raw_P(prep[0], ANIM_SIZE);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (get_current_wpm() >=TAP_SPEED) {
 | 
				
			||||||
 | 
					            current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
 | 
				
			||||||
 | 
					            oled_write_raw_P(tap[abs((TAP_FRAMES-1)-current_tap_frame)], ANIM_SIZE);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if (get_current_wpm() != 000) {
 | 
				
			||||||
 | 
					        oled_on();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
 | 
				
			||||||
 | 
					            anim_timer = timer_read32();
 | 
				
			||||||
 | 
					            animation_phase();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        anim_sleep = timer_read32();
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        if (timer_elapsed32(anim_sleep) > oled_timeout) {
 | 
				
			||||||
 | 
					            oled_off();
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
 | 
				
			||||||
 | 
					                anim_timer = timer_read32();
 | 
				
			||||||
 | 
					                animation_phase();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void oled_task_user(void) {
 | 
				
			||||||
 | 
					        render_anim();
 | 
				
			||||||
 | 
					        oled_set_cursor(0,4);
 | 
				
			||||||
 | 
					        sprintf(wpm_str, "WPM: %03d", get_current_wpm());
 | 
				
			||||||
 | 
					        oled_write(wpm_str, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
							
								
								
									
										2
									
								
								keyboards/mechwild/mercutio/keymaps/bongocat/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								keyboards/mechwild/mercutio/keymaps/bongocat/rules.mk
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					WPM_ENABLE = yes
 | 
				
			||||||
 | 
					VIA_ENABLE = yes
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
/* Copyright 2020 Kyle McCreery 
 | 
					/* Copyright 2021 Kyle McCreery 
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * This program is free software: you can redistribute it and/or modify 
 | 
					 * 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 
 | 
					 * it under the terms of the GNU General Public License as published by 
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
/* Copyright 2020 Kyle McCreery 
 | 
					/* Copyright 2021 Kyle McCreery 
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * This program is free software: you can redistribute it and/or modify 
 | 
					 * 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 
 | 
					 * it under the terms of the GNU General Public License as published by 
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										20
									
								
								keyboards/mechwild/mercutio/keymaps/fancy/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								keyboards/mechwild/mercutio/keymaps/fancy/config.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					/* Copyright 2021 Kyle McCreery 
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * 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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Define custom font */
 | 
				
			||||||
 | 
					#define OLED_FONT_H "keyboards/mechwild/mercutio/lib/mercutiofont.c"
 | 
				
			||||||
							
								
								
									
										167
									
								
								keyboards/mechwild/mercutio/keymaps/fancy/keymap.c
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										167
									
								
								keyboards/mechwild/mercutio/keymaps/fancy/keymap.c
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,167 @@
 | 
				
			|||||||
 | 
					/* Copyright 2021 Kyle McCreery 
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * 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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
				
			||||||
 | 
					[0] = LAYOUT_all(
 | 
				
			||||||
 | 
					                                                                                                                KC_MUTE,
 | 
				
			||||||
 | 
					    KC_TAB,           KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, 
 | 
				
			||||||
 | 
					    MO(1),            KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    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_LCTL, KC_LGUI, KC_LALT,          KC_SPC,  KC_SPC,           KC_SPC,           KC_RALT, MO(2),            KC_RCTL ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  [1] = LAYOUT_all(
 | 
				
			||||||
 | 
					                                                                                                                KC_TRNS,
 | 
				
			||||||
 | 
					    KC_ESC,           KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL,
 | 
				
			||||||
 | 
					    KC_TRNS,          KC_TRNS, KC_GRV,  KC_BSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_SCLN, KC_TRNS, KC_QUOT,
 | 
				
			||||||
 | 
					    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_SLSH,          KC_UP, 
 | 
				
			||||||
 | 
					    KC_TRNS, KC_TRNS, KC_TRNS,          KC_HOME, KC_TRNS,          KC_END,           KC_LEFT, KC_DOWN,          KC_RIGHT ),
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  [2] = LAYOUT_all(
 | 
				
			||||||
 | 
					                                                                                                                KC_TRNS,  
 | 
				
			||||||
 | 
					    KC_TRNS,          KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS,
 | 
				
			||||||
 | 
					    KC_CAPS,          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, 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 ),
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					  [3] = LAYOUT_all(
 | 
				
			||||||
 | 
					                                                                                                                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, 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, KC_TRNS, KC_TRNS,          KC_TRNS, KC_TRNS,          KC_TRNS,          KC_TRNS, KC_TRNS,          KC_TRNS )
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef ENCODER_ENABLE       // Encoder Functionality
 | 
				
			||||||
 | 
					    uint8_t selected_layer = 0;
 | 
				
			||||||
 | 
					    void encoder_update_user(uint8_t index, bool clockwise) {
 | 
				
			||||||
 | 
					        #ifdef OLED_DRIVER_ENABLE
 | 
				
			||||||
 | 
					            oled_clear();
 | 
				
			||||||
 | 
					            oled_render();
 | 
				
			||||||
 | 
					        #endif
 | 
				
			||||||
 | 
					        switch (index) {
 | 
				
			||||||
 | 
					            case 0:         // This is the only encoder right now, keeping for consistency
 | 
				
			||||||
 | 
					                if ( clockwise ) {
 | 
				
			||||||
 | 
					                    if ( selected_layer  < 3 && keyboard_report->mods & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers
 | 
				
			||||||
 | 
					                        selected_layer ++;
 | 
				
			||||||
 | 
					                        layer_move(selected_layer);
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        tap_code(KC_VOLU);                                                   // Otherwise it just changes volume
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                } else if ( !clockwise ) {
 | 
				
			||||||
 | 
					                    if ( selected_layer  > 0 && keyboard_report->mods & MOD_BIT(KC_LSFT) ){
 | 
				
			||||||
 | 
					                        selected_layer --;
 | 
				
			||||||
 | 
					                        layer_move(selected_layer);
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        tap_code(KC_VOLD);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef OLED_DRIVER_ENABLE   // OLED Functionality
 | 
				
			||||||
 | 
					    oled_rotation_t oled_init_user(oled_rotation_t rotation) {
 | 
				
			||||||
 | 
					        return OLED_ROTATION_180;       // flips the display 180 degrees if offhand
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    bool clear_screen = false;          // used to manage singular screen clears to prevent display glitch
 | 
				
			||||||
 | 
					    static void render_name(void) {     // Render Mercutio Script Text
 | 
				
			||||||
 | 
					        static const char PROGMEM mercutio_name[] = {
 | 
				
			||||||
 | 
					            0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0x95, 0xB5, 0x96, 0xD5, 0xB6, 0xB6, 
 | 
				
			||||||
 | 
					            0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
 | 
				
			||||||
 | 
					            0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
 | 
				
			||||||
 | 
					            0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        oled_write_P(mercutio_name, false);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    static void render_logo(void) {     // Render MechWild "MW" Logo
 | 
				
			||||||
 | 
					        static const char PROGMEM logo_1[] = {0x97, 0x98, 0x99, 0x9A,0x00};
 | 
				
			||||||
 | 
					        static const char PROGMEM logo_2[] = {0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0x00};
 | 
				
			||||||
 | 
					        static const char PROGMEM logo_3[] = {0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xB6, 0x00};
 | 
				
			||||||
 | 
					        static const char PROGMEM logo_4[] = {0xB6, 0xB6, 0xB6, 0x9B, 0x9C, 0x9D, 0x9E, 0x00};
 | 
				
			||||||
 | 
					        oled_set_cursor(0,0);
 | 
				
			||||||
 | 
					        oled_write_P(logo_1, false);
 | 
				
			||||||
 | 
					        oled_set_cursor(0,1);
 | 
				
			||||||
 | 
					        oled_write_P(logo_2, false);
 | 
				
			||||||
 | 
					        oled_set_cursor(0,2);
 | 
				
			||||||
 | 
					        oled_write_P(logo_3, false);
 | 
				
			||||||
 | 
					        oled_set_cursor(0,3);
 | 
				
			||||||
 | 
					        oled_write_P(logo_4, false);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void oled_task_user(void) {
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if ( IS_HOST_LED_OFF(USB_LED_NUM_LOCK) && IS_HOST_LED_OFF(USB_LED_CAPS_LOCK) && selected_layer == 0 && get_highest_layer(layer_state) == 0 ) {
 | 
				
			||||||
 | 
					            render_name();
 | 
				
			||||||
 | 
					            clear_screen = true;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            if (clear_screen == true) {
 | 
				
			||||||
 | 
					                oled_clear();
 | 
				
			||||||
 | 
					                oled_render();
 | 
				
			||||||
 | 
					                clear_screen = false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            render_logo();
 | 
				
			||||||
 | 
					            oled_set_cursor(8,2);
 | 
				
			||||||
 | 
					            switch(selected_layer){
 | 
				
			||||||
 | 
					                case 0:
 | 
				
			||||||
 | 
					                    oled_write_P(PSTR("Lock Layer 0"), false);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case 1:
 | 
				
			||||||
 | 
					                    oled_write_P(PSTR("Lock Layer 1"), false);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case 2:
 | 
				
			||||||
 | 
					                    oled_write_P(PSTR("Lock Layer 2"), false);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case 3:
 | 
				
			||||||
 | 
					                    oled_write_P(PSTR("Lock Layer 3"), false);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                default:
 | 
				
			||||||
 | 
					                    oled_write_P(PSTR("Lock Layer ?"), false);    // Should never display, here as a catchall
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            oled_set_cursor(8,3);
 | 
				
			||||||
 | 
					            if (get_highest_layer(layer_state) == selected_layer) {
 | 
				
			||||||
 | 
					                oled_write_P(PSTR("            "), false);
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                switch (get_highest_layer(layer_state)) {
 | 
				
			||||||
 | 
					                    case 0:
 | 
				
			||||||
 | 
					                        oled_write_P(PSTR("Temp Layer 0"), false);
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    case 1:
 | 
				
			||||||
 | 
					                        oled_write_P(PSTR("Temp Layer 1"), false);
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    case 2:
 | 
				
			||||||
 | 
					                        oled_write_P(PSTR("Temp Layer 2"), false);
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    case 3:
 | 
				
			||||||
 | 
					                        oled_write_P(PSTR("Temp Layer 3"), false);
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    default:
 | 
				
			||||||
 | 
					                        oled_write_P(PSTR("Temp Layer ?"), false);    // Should never display, here as a catchall
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            led_t led_state = host_keyboard_led_state();
 | 
				
			||||||
 | 
					            oled_set_cursor(8,0);
 | 
				
			||||||
 | 
					            oled_write_P(led_state.scroll_lock ? PSTR("SCRLK") : PSTR("     "), false);
 | 
				
			||||||
 | 
					            oled_set_cursor(8,1);
 | 
				
			||||||
 | 
					            oled_write_P(led_state.num_lock ? PSTR("NLCK ") : PSTR("     "), false);
 | 
				
			||||||
 | 
					            oled_write_P(led_state.caps_lock ? PSTR("CAPS ") : PSTR("     "), false);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
							
								
								
									
										2
									
								
								keyboards/mechwild/mercutio/keymaps/fancy/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								keyboards/mechwild/mercutio/keymaps/fancy/rules.mk
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					VIA_ENABLE = yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
/* Copyright 2020 Kyle McCreery 
 | 
					/* Copyright 2021 Kyle McCreery 
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * This program is free software: you can redistribute it and/or modify 
 | 
					 * 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 
 | 
					 * it under the terms of the GNU General Public License as published by 
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
/* Copyright 2020 Kyle McCreery 
 | 
					/* Copyright 2021 Kyle McCreery 
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * This program is free software: you can redistribute it and/or modify 
 | 
					 * 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 
 | 
					 * it under the terms of the GNU General Public License as published by 
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
/* Copyright 2020 Kyle McCreery 
 | 
					/* Copyright 2021 Kyle McCreery 
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * This program is free software: you can redistribute it and/or modify 
 | 
					 * 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 
 | 
					 * it under the terms of the GNU General Public License as published by 
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
/* Copyright 2020 Kyle McCreery 
 | 
					/* Copyright 2021 Kyle McCreery 
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 * This program is free software: you can redistribute it and/or modify 
 | 
					 * 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 
 | 
					 * it under the terms of the GNU General Public License as published by 
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										0
									
								
								keyboards/mechwild/mercutio/rules.mk
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								keyboards/mechwild/mercutio/rules.mk
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user