[Keymap] Personal keymap for crkbd (#16546)
This commit is contained in:
		
							parent
							
								
									c5c5d37e08
								
							
						
					
					
						commit
						6ab5a7d048
					
				
					 4 changed files with 444 additions and 0 deletions
				
			
		
							
								
								
									
										24
									
								
								keyboards/crkbd/keymaps/jpe230/config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								keyboards/crkbd/keymaps/jpe230/config.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | ||||||
|  | /*
 | ||||||
|  | This is the c configuration file for the keymap | ||||||
|  | 
 | ||||||
|  | Copyright 2012 Jun Wako <wakojun@gmail.com> | ||||||
|  | Copyright 2015 Jack Humbert | ||||||
|  | Copyright 2022 Jose Pablo Ramirez <jp.ramangulo@gmail.com> | ||||||
|  | 
 | ||||||
|  | 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 SPLIT_WPM_ENABLE | ||||||
							
								
								
									
										399
									
								
								keyboards/crkbd/keymaps/jpe230/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										399
									
								
								keyboards/crkbd/keymaps/jpe230/keymap.c
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,399 @@ | ||||||
|  | /*
 | ||||||
|  | Copyright 2019 @foostan | ||||||
|  | Copyright 2020 Drashna Jaelre <@drashna> | ||||||
|  | Copyright 2022 Jose Pablo Ramirez <jp.ramangulo@gmail.com> | ||||||
|  | 
 | ||||||
|  | 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 | ||||||
|  | 
 | ||||||
|  | #ifdef VIA_ENABLE | ||||||
|  |     #define USER_START USER00 | ||||||
|  | #else | ||||||
|  |     #define USER_START SAFE_RANGE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | // Keycode to toggle Sarcasm Mode
 | ||||||
|  | enum custom_keycodes { | ||||||
|  |     KC_SCASM = USER_START | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||||
|  |   [0] = LAYOUT_split_3x6_3( | ||||||
|  |   //,-----------------------------------------------------.                    ,-----------------------------------------------------.
 | ||||||
|  |        KC_TAB,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                         KC_Y,    KC_U,    KC_I,    KC_O,   KC_P,  KC_BSPC, | ||||||
|  |   //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | ||||||
|  |       KC_LCTL,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                         KC_H,    KC_J,    KC_K,    KC_L, KC_SCLN, KC_QUOT, | ||||||
|  |   //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | ||||||
|  |       KC_LSFT,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                         KC_N,    KC_M, KC_COMM,  KC_DOT, KC_SLSH,  KC_ESC, | ||||||
|  |   //|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
 | ||||||
|  |                                           KC_LGUI,   MO(1),  KC_ENT,     KC_SPC,   MO(2), KC_RALT | ||||||
|  |                                       //`--------------------------'  `--------------------------'
 | ||||||
|  | 
 | ||||||
|  |   ), | ||||||
|  | 
 | ||||||
|  |   [1] = LAYOUT_split_3x6_3( | ||||||
|  |   //,-----------------------------------------------------.                    ,-----------------------------------------------------.
 | ||||||
|  |        KC_TAB,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                         KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC, | ||||||
|  |   //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | ||||||
|  |       KC_CAPS, _______, _______, _______, _______, _______,                      _______,   KC_UP, _______, _______, _______, _______, | ||||||
|  |   //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | ||||||
|  |       KC_LSFT, _______, _______, _______, _______, _______,                      KC_LEFT, KC_DOWN,KC_RIGHT, _______, _______, _______, | ||||||
|  |   //|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
 | ||||||
|  |                                           KC_LGUI, _______, _______,   _______,   MO(3), KC_RALT | ||||||
|  |                                       //`--------------------------'  `--------------------------'
 | ||||||
|  |   ), | ||||||
|  | 
 | ||||||
|  |   [2] = LAYOUT_split_3x6_3( | ||||||
|  |   //,-----------------------------------------------------.                    ,-----------------------------------------------------.
 | ||||||
|  |        KC_TAB, KC_EXLM,   KC_AT, KC_HASH,  KC_DLR, KC_PERC,                      KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, | ||||||
|  |   //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | ||||||
|  |       KC_CAPS, _______, _______, _______, _______, _______,                      KC_MINS,  KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,  KC_GRV, | ||||||
|  |   //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | ||||||
|  |       KC_LSFT, _______, _______, _______, _______, _______,                      KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD, | ||||||
|  |   //|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
 | ||||||
|  |                                           KC_LGUI,   MO(3), _______,      TG(3), _______, KC_RALT | ||||||
|  |                                       //`--------------------------'  `--------------------------'
 | ||||||
|  |   ), | ||||||
|  | 
 | ||||||
|  |   [3] = LAYOUT_split_3x6_3( | ||||||
|  |   //,-----------------------------------------------------.                    ,-----------------------------------------------------.
 | ||||||
|  |       KC_MUTE, KC_WBAK, KC_WFWD,   KC_F7,   KC_F8,   KC_F9,                      _______,    KC_7,    KC_8,    KC_9, _______, RESET, | ||||||
|  |   //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | ||||||
|  |       KC_VOLU, _______, KC_MNXT,   KC_F6,   KC_F5,   KC_F6,                      _______,    KC_6,    KC_5,    KC_4, _______, _______, | ||||||
|  |   //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
 | ||||||
|  |       KC_VOLD, KC_MPRV, KC_MNXT,   KC_F1,   KC_F2,   KC_F3,                      _______,    KC_1,    KC_2,    KC_3, _______, _______, | ||||||
|  |   //|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
 | ||||||
|  |                                           KC_LGUI, _______,KC_SCASM,      TG(3), _______, KC_RALT | ||||||
|  |                                       //`--------------------------'  `--------------------------'
 | ||||||
|  |   ) | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #ifdef OLED_ENABLE | ||||||
|  | oled_rotation_t oled_init_user(oled_rotation_t rotation) { | ||||||
|  |   return rotation; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #define L_BASE 0 | ||||||
|  | #define L_LOWER 2 | ||||||
|  | #define L_RAISE 4 | ||||||
|  | #define L_ADJUST 8 | ||||||
|  | 
 | ||||||
|  | void oled_render_layer_state(void) { | ||||||
|  |     oled_write_P(PSTR("Layer: "), false); | ||||||
|  |     switch (layer_state) { | ||||||
|  |         case L_BASE: | ||||||
|  |             oled_write_ln_P(PSTR("Default"), false); | ||||||
|  |             break; | ||||||
|  |         case L_LOWER: | ||||||
|  |             oled_write_ln_P(PSTR("Lower"), false); | ||||||
|  |             break; | ||||||
|  |         case L_RAISE: | ||||||
|  |             oled_write_ln_P(PSTR("Raise"), false); | ||||||
|  |             break; | ||||||
|  |         case L_ADJUST: | ||||||
|  |         case L_ADJUST|L_LOWER: | ||||||
|  |         case L_ADJUST|L_RAISE: | ||||||
|  |         case L_ADJUST|L_LOWER|L_RAISE: | ||||||
|  |             oled_write_ln_P(PSTR("Adjust"), false); | ||||||
|  |             break; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | static char logged_char = ' '; | ||||||
|  | static uint8_t logged_row = 0, logged_col = 0; | ||||||
|  | static uint16_t logged_keycode = 0; | ||||||
|  | 
 | ||||||
|  | const char code_to_name[60] = { | ||||||
|  |     ' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', | ||||||
|  |     'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', | ||||||
|  |     'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', | ||||||
|  |     '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', | ||||||
|  |     'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', | ||||||
|  |     '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '}; | ||||||
|  | 
 | ||||||
|  | void set_keylog(uint16_t keycode, keyrecord_t *record) { | ||||||
|  |     if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || | ||||||
|  |         (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) { keycode = keycode & 0xFF; } | ||||||
|  |     if (keycode < 60) { | ||||||
|  |         logged_char = code_to_name[keycode]; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // update keylog
 | ||||||
|  |     logged_row = record->event.key.row; | ||||||
|  |     logged_col = record->event.key.col; | ||||||
|  |     logged_keycode = keycode; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void oled_render_keylog(void) { | ||||||
|  |     oled_write(get_u8_str(logged_row, '0'), false); | ||||||
|  |     oled_write_P(PSTR(":"), false); | ||||||
|  |     oled_write(get_u8_str(logged_col, '0'), false); | ||||||
|  |     oled_write_P(PSTR(", "), false); | ||||||
|  |     oled_write(get_u16_str(logged_keycode, ' '), false); | ||||||
|  |     oled_write_P(PSTR(" : "), false); | ||||||
|  |     oled_write((const char *)&logged_char, false); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void render_bootmagic_status(bool status) { | ||||||
|  |     /* Show Ctrl-Gui Swap options */ | ||||||
|  |     static const char PROGMEM logo[][2][3] = { | ||||||
|  |         {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}, | ||||||
|  |         {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, | ||||||
|  |     }; | ||||||
|  |     if (status) { | ||||||
|  |         oled_write_ln_P(logo[0][0], false); | ||||||
|  |         oled_write_ln_P(logo[0][1], false); | ||||||
|  |     } else { | ||||||
|  |         oled_write_ln_P(logo[1][0], false); | ||||||
|  |         oled_write_ln_P(logo[1][1], false); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // frame 0, 128x32px
 | ||||||
|  | const char PROGMEM cat_frame_0 [] PROGMEM = { | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0xc0, | ||||||
|  | 	0x60, 0x60, 0x60, 0x60, 0x40, 0x40, 0xc0, 0xc0, 0xc0, 0x70, 0x38, 0x18, 0xec, 0x3c, 0x02, 0x02, | ||||||
|  | 	0x7a, 0x7a, 0xf2, 0xf2, 0x06, 0x04, 0x04, 0x0c, 0x0e, 0x0a, 0x1f, 0xfd, 0xf9, 0x39, 0x0f, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0xff, 0xff, 0x03, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xfc, 0xff, 0x01, 0x08, 0x3c, 0x00, | ||||||
|  | 	0x00, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x7e, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xf0, 0xff, 0xff, 0x80, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x87, 0x83, 0xc0, 0x80, 0x88, | ||||||
|  | 	0x1e, 0x1e, 0x0f, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0xc0, 0xe0, 0xfe, 0x87, 0xbe, 0xf0, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0f, | ||||||
|  | 	0x12, 0x34, 0x34, 0x34, 0x34, 0x1e, 0x0e, 0x06, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 | ||||||
|  | }; | ||||||
|  | // frame 1, 128x32px
 | ||||||
|  | const char PROGMEM cat_frame_1 [] PROGMEM = { | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0x60, | ||||||
|  | 	0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x60, 0xe0, 0xf0, 0x90, | ||||||
|  | 	0x18, 0x08, 0x08, 0x88, 0x88, 0x98, 0x10, 0x10, 0x30, 0x30, 0x70, 0xf8, 0x08, 0x88, 0xf8, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0xff, 0xff, 0x01, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0x04, 0x06, 0x07, 0x03, 0x01, | ||||||
|  | 	0xc0, 0x00, 0x00, 0x87, 0x87, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1f, 0xf0, 0x00, | ||||||
|  | 	0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xf0, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf8, 0xff, 0xff, 0xc0, 0x80, | ||||||
|  | 	0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x10, 0x30, 0xf0, 0xe0, 0x00, | ||||||
|  | 	0x01, 0x00, 0x60, 0xf0, 0xf0, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xfc, 0xc7, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x06, | ||||||
|  | 	0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x06, 0x02, 0x02, 0x07, 0x07, 0x07, 0x04, 0x07, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 | ||||||
|  | }; | ||||||
|  | // frame 2, 128x32px
 | ||||||
|  | const char PROGMEM cat_frame_2 [] PROGMEM = { | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0x60, 0x30, | ||||||
|  | 	0x38, 0x18, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0x78, 0x48, 0x78, 0xc0, 0x80, 0xc0, 0x40, 0x40, | ||||||
|  | 	0x40, 0x40, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x03, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x20, 0xf0, 0x80, 0x80, 0x60, 0x18, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1c, 0x3c, | ||||||
|  | 	0x7c, 0x38, 0x00, 0x00, 0x00, 0x01, 0x01, 0x07, 0x06, 0x3c, 0xff, 0xc3, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xff, 0xff, 0xf0, 0x80, 0x00, | ||||||
|  | 	0x00, 0x80, 0x80, 0x80, 0x00, 0x01, 0x00, 0x1e, 0x7f, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, | ||||||
|  | 	0x8c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, | ||||||
|  | 	0x01, 0x01, 0x00, 0x01, 0x01, 0x0f, 0x18, 0x10, 0x18, 0x0f, 0x0e, 0x18, 0x10, 0x30, 0x27, 0x2f, | ||||||
|  | 	0x2f, 0x27, 0x20, 0x30, 0x10, 0x10, 0x10, 0x30, 0x3c, 0x2d, 0x27, 0x3c, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | const char* cat_frames[3] = { | ||||||
|  | 	cat_frame_0, | ||||||
|  | 	cat_frame_1, | ||||||
|  | 	cat_frame_2 | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define FRAME_SIZE 528 | ||||||
|  | 
 | ||||||
|  | static int      current_frame = 0; | ||||||
|  | static uint32_t frame_timer = 0; | ||||||
|  | static uint32_t anim_sleep = 0; | ||||||
|  | static uint8_t  anim_speed = 120; | ||||||
|  | 
 | ||||||
|  | void oled_render_logo(void) { | ||||||
|  | 
 | ||||||
|  |     if(get_current_wpm() != 000) { | ||||||
|  |         oled_on(); | ||||||
|  |         int8_t wpm_speed = (int8_t)(get_current_wpm() / 2); | ||||||
|  |         if(wpm_speed < 100) | ||||||
|  |         { | ||||||
|  |             anim_speed = 120 - wpm_speed; | ||||||
|  |         } | ||||||
|  |         if(timer_elapsed32(frame_timer) > anim_speed) { | ||||||
|  |             frame_timer = timer_read32();  // resets timer
 | ||||||
|  |             current_frame = (current_frame + 1) % 3; | ||||||
|  |         } | ||||||
|  |         oled_write_raw_P(cat_frames[current_frame], FRAME_SIZE); | ||||||
|  |         anim_sleep = timer_read32(); | ||||||
|  |     } else { | ||||||
|  |         anim_speed = 150; | ||||||
|  |         if(timer_elapsed32(anim_sleep) > OLED_TIMEOUT) { | ||||||
|  |             oled_off(); | ||||||
|  |         } else { | ||||||
|  |              if(timer_elapsed32(frame_timer) > anim_speed) { | ||||||
|  |                 frame_timer = timer_read32();  // resets timer
 | ||||||
|  |                 current_frame = (current_frame + 1) % 3; | ||||||
|  |             } | ||||||
|  |             oled_write_raw_P(cat_frames[current_frame], FRAME_SIZE); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool oled_task_user(void) { | ||||||
|  |     if (is_keyboard_master()) { | ||||||
|  |         oled_render_layer_state(); | ||||||
|  |         oled_render_keylog(); | ||||||
|  |     } else { | ||||||
|  |         oled_render_logo(); | ||||||
|  |     } | ||||||
|  |     return false; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #endif // OLED_ENABLE
 | ||||||
|  | 
 | ||||||
|  | // saRcASm MOde
 | ||||||
|  | bool tog_sarcasm = false; | ||||||
|  | bool uppercase = false; | ||||||
|  | uint8_t prev_upper = 0; | ||||||
|  | uint8_t prev_lower = 0; | ||||||
|  | 
 | ||||||
|  | bool process_record_sarcasm(uint16_t keycode, keyrecord_t *record) { | ||||||
|  |     if (keycode == KC_ENTER && record->event.pressed) { | ||||||
|  |         uppercase = false; | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if (uppercase == false && record->event.pressed)  { // Dont start with an uppercase letter on new line
 | ||||||
|  |         uppercase = true; | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if((KC_A <= keycode) && (keycode <= KC_Z)) { | ||||||
|  |         if ( record->event.pressed ) { | ||||||
|  |             bool press = rand() % 2; | ||||||
|  | 
 | ||||||
|  |             if (prev_upper > 2) {           // if more than 3 lower's in a row print upper
 | ||||||
|  |                 prev_upper = 0; | ||||||
|  |                 press = false; | ||||||
|  |             } else if (prev_lower > 2) {    // if more than 3 upper's in a row print lower
 | ||||||
|  |                 prev_lower = 0; | ||||||
|  |                 press = true; | ||||||
|  |             } | ||||||
|  |             if (press) { | ||||||
|  |                 prev_upper++; | ||||||
|  |                 tap_code16(S(keycode)); | ||||||
|  |                 clear_mods(); | ||||||
|  |             } else { | ||||||
|  |                 prev_lower++; | ||||||
|  |                 tap_code16(keycode); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return true; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||||||
|  | 
 | ||||||
|  | #ifdef OLED_ENABLE | ||||||
|  |     if (record->event.pressed) { | ||||||
|  |         set_keylog(keycode, record); | ||||||
|  |     } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  |     switch (keycode) { | ||||||
|  |         case KC_SCASM: | ||||||
|  |             if (record->event.pressed) { | ||||||
|  |                 tog_sarcasm = !tog_sarcasm; | ||||||
|  | 
 | ||||||
|  |                 if (tog_sarcasm) | ||||||
|  |                     dprint("Enabling saRCaSm ModE\n"); | ||||||
|  |                 else | ||||||
|  |                     dprint("Disabling saRCaSm ModE\n"); | ||||||
|  | 
 | ||||||
|  |                 uppercase = false; | ||||||
|  |                 prev_upper = 0; | ||||||
|  |                 prev_lower = 0; | ||||||
|  |             } | ||||||
|  |             return false; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     if (tog_sarcasm) { | ||||||
|  |         return process_record_sarcasm(keycode, record); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return true; | ||||||
|  | } | ||||||
							
								
								
									
										15
									
								
								keyboards/crkbd/keymaps/jpe230/readme.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								keyboards/crkbd/keymaps/jpe230/readme.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | ||||||
|  | # Jpe230's CRKBD Layout | ||||||
|  | 
 | ||||||
|  | ## Layers | ||||||
|  | The four layers: | ||||||
|  | - BASE Layer: QWERTY | ||||||
|  | - LOWER Layer: Numbers + Arrows | ||||||
|  | - RAISE Layer: Symbols | ||||||
|  | - ADJUST Layer: Numpad + Media Keys + Fn keys | ||||||
|  | 
 | ||||||
|  | ## OLED | ||||||
|  | -Master: Renders layer state + keylog | ||||||
|  | -Slave : Renders an animation of a cat that varies its animation speed based on the current WPM | ||||||
|  | 
 | ||||||
|  | ## Flashing | ||||||
|  | Flash using `qmk compile -kb crkbd -km jpe230` for Pro Micro | ||||||
							
								
								
									
										6
									
								
								keyboards/crkbd/keymaps/jpe230/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								keyboards/crkbd/keymaps/jpe230/rules.mk
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | ||||||
|  | MOUSEKEY_ENABLE = yes | ||||||
|  | OLED_ENABLE     = yes | ||||||
|  | OLED_DRIVER     = SSD1306 | ||||||
|  | LTO_ENABLE      = yes | ||||||
|  | WPM_ENABLE      = yes | ||||||
|  | VIA_ENABLE      = yes | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 jpe230
						jpe230