mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-30 21:02:32 +01:00 
			
		
		
		
	Keymap: Update to drashna keymaps and userspace (#3992)
* Enabled unicode support and send_unicode function * Unicode cleanup * More unicode tweaking * Update EEPROM stuff * Account for keyboard macros * Switch Equal to Plus on Ergodox * more tweaks * Minor Unicode tweaks * Correct matrix printing for keylogger * Fix unicode functions * Fix unicode mode set since it actually uses EEPROM * Re-add DISABLE_LEADER * Ergodox is easier to hit the tapping term, fix that * Fix stupid type on unicode mode check * Preliminary CRKBD/HeliDox support * Fixes to Helidox * Cleanup userspace from old merge stuff * Remove CCCV sounds * Make Mode NOEEPROM Again
This commit is contained in:
		
							parent
							
								
									f5ae3760c6
								
							
						
					
					
						commit
						1512a6bfd4
					
				
							
								
								
									
										43
									
								
								keyboards/crkbd/keymaps/drashna/config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								keyboards/crkbd/keymaps/drashna/config.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | |||||||
|  | /*
 | ||||||
|  | This is the c configuration file for the keymap | ||||||
|  | 
 | ||||||
|  | Copyright 2012 Jun Wako <wakojun@gmail.com> | ||||||
|  | Copyright 2015 Jack Humbert | ||||||
|  | 
 | ||||||
|  | This program is free software: you can redistribute it and/or modify | ||||||
|  | it under the terms of the GNU General Public License as published by | ||||||
|  | the Free Software Foundation, either version 2 of the License, or | ||||||
|  | (at your option) any later version. | ||||||
|  | 
 | ||||||
|  | This program is distributed in the hope that it will be useful, | ||||||
|  | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  | GNU General Public License for more details. | ||||||
|  | 
 | ||||||
|  | You should have received a copy of the GNU General Public License | ||||||
|  | along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* Select hand configuration */ | ||||||
|  | 
 | ||||||
|  | // #define MASTER_LEFT
 | ||||||
|  | // #define MASTER_RIGHT
 | ||||||
|  | #define EE_HANDS | ||||||
|  | 
 | ||||||
|  | #define SSD1306OLED | ||||||
|  | 
 | ||||||
|  | #define USE_SERIAL_PD2 | ||||||
|  | 
 | ||||||
|  | // #define TAPPING_FORCE_HOLD
 | ||||||
|  | // #define TAPPING_TERM 100
 | ||||||
|  | 
 | ||||||
|  | #undef RGBLED_NUM | ||||||
|  | #define RGBLIGHT_ANIMATIONS | ||||||
|  | #define RGBLED_NUM 27 | ||||||
|  | #define RGBLIGHT_LIMIT_VAL 120 | ||||||
|  | #define RGBLIGHT_HUE_STEP 10 | ||||||
|  | #define RGBLIGHT_SAT_STEP 17 | ||||||
|  | #define RGBLIGHT_VAL_STEP 17 | ||||||
							
								
								
									
										244
									
								
								keyboards/crkbd/keymaps/drashna/glcdfont.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										244
									
								
								keyboards/crkbd/keymaps/drashna/glcdfont.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,244 @@ | |||||||
|  | // This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
 | ||||||
|  | // See gfxfont.h for newer custom bitmap font info.
 | ||||||
|  | 
 | ||||||
|  | #ifndef FONT5X7_H | ||||||
|  | #define FONT5X7_H | ||||||
|  | 
 | ||||||
|  | #ifdef __AVR__ | ||||||
|  |  #include <avr/io.h> | ||||||
|  |  #include <avr/pgmspace.h> | ||||||
|  | #elif defined(ESP8266) | ||||||
|  |  #include <pgmspace.h> | ||||||
|  | #else | ||||||
|  |  #define PROGMEM | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | // Standard ASCII 5x7 font
 | ||||||
|  | 
 | ||||||
|  | static const unsigned char font[] PROGMEM = { | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, | ||||||
|  | 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, | ||||||
|  | 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, | ||||||
|  | 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, | ||||||
|  | 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, | ||||||
|  | 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, | ||||||
|  | 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, | ||||||
|  | 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, | ||||||
|  | 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, | ||||||
|  | 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, | ||||||
|  | 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, | ||||||
|  | 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, | ||||||
|  | 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, | ||||||
|  | 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, | ||||||
|  | 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, | ||||||
|  | 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, | ||||||
|  | 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, | ||||||
|  | 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, | ||||||
|  | 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, | ||||||
|  | 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, | ||||||
|  | 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, | ||||||
|  | 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, | ||||||
|  | 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, | ||||||
|  | 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, | ||||||
|  | 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, | ||||||
|  | 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, | ||||||
|  | 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, | ||||||
|  | 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, | ||||||
|  | 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, | ||||||
|  | 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, | ||||||
|  | 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, | ||||||
|  | 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, | ||||||
|  | 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, | ||||||
|  | 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, | ||||||
|  | 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, | ||||||
|  | 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, | ||||||
|  | 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, | ||||||
|  | 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, | ||||||
|  | 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, | ||||||
|  | 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, | ||||||
|  | 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, | ||||||
|  | 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, | ||||||
|  | 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, | ||||||
|  | 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, | ||||||
|  | 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, | ||||||
|  | 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, | ||||||
|  | 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, | ||||||
|  | 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, | ||||||
|  | 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, | ||||||
|  | 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, | ||||||
|  | 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, | ||||||
|  | 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, | ||||||
|  | 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, | ||||||
|  | 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, | ||||||
|  | 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, | ||||||
|  | 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, | ||||||
|  | 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, | ||||||
|  | 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, | ||||||
|  | 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, | ||||||
|  | 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, | ||||||
|  | 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, | ||||||
|  | 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, | ||||||
|  | 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, | ||||||
|  | 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, | ||||||
|  | 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, | ||||||
|  | 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, | ||||||
|  | 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, | ||||||
|  | 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, | ||||||
|  | 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, | ||||||
|  | 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, | ||||||
|  | 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, | ||||||
|  | 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, | ||||||
|  | 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, | ||||||
|  | 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, | ||||||
|  | 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, | ||||||
|  | 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, | ||||||
|  | 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, | ||||||
|  | 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, | ||||||
|  | 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, | ||||||
|  | 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, | ||||||
|  | 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, | ||||||
|  | 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, | ||||||
|  | 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, | ||||||
|  | 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, | ||||||
|  | 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, | ||||||
|  | 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, | ||||||
|  | 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, | ||||||
|  | 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, | ||||||
|  | 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, | ||||||
|  | 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, | ||||||
|  | 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, | ||||||
|  | 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, | ||||||
|  | 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, | ||||||
|  | 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, | ||||||
|  | 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, | ||||||
|  | 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, | ||||||
|  | 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, | ||||||
|  | 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00, | ||||||
|  | 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, | ||||||
|  | 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, | ||||||
|  | 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, | ||||||
|  | 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, | ||||||
|  | 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, | ||||||
|  | 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, | ||||||
|  | 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, | ||||||
|  | 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, | ||||||
|  | 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00, | ||||||
|  | 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00, | ||||||
|  | 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, | ||||||
|  | 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, | ||||||
|  | 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, | ||||||
|  | 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, | ||||||
|  | 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, | ||||||
|  | 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, | ||||||
|  | 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, | ||||||
|  | 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, | ||||||
|  | 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, | ||||||
|  | 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, | ||||||
|  | 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, | ||||||
|  | 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x0E, 0x3F, 0xFF, 0xFF, | ||||||
|  | 0xFF, 0xFF, 0xFE, 0xE0, 0x80, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x1E, 0xBE, | ||||||
|  | 0x7F, 0xFF, 0xFF, 0xFE, 0xFE, 0xF0, | ||||||
|  | 0xE0, 0xC0, 0x80, 0x00, 0x0E, 0xEF, | ||||||
|  | 0xDF, 0xDE, 0xBE, 0x3C, 0x38, 0x70, | ||||||
|  | 0xE0, 0xDD, 0xBB, 0x7B, 0x07, 0x0E, | ||||||
|  | 0x0E, 0x0C, 0x98, 0xF0, 0xE0, 0xF0, | ||||||
|  | 0xF0, 0xF8, 0x78, 0x3C, 0x1C, 0x1E, | ||||||
|  | 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, | ||||||
|  | 0x1F, 0xFE, 0xFE, 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, | ||||||
|  | 0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, | ||||||
|  | 0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, | ||||||
|  | 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, | ||||||
|  | 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, | ||||||
|  | 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, | ||||||
|  | 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, | ||||||
|  | 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, | ||||||
|  | 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 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, 0x03, | ||||||
|  | 0x0F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFE, | ||||||
|  | 0xF8, 0xF0, 0xE0, 0xC0, 0x80, 0x7F, | ||||||
|  | 0xFF, 0xFE, 0xFD, 0xFB, 0x1B, 0x07, | ||||||
|  | 0x07, 0x0F, 0x1F, 0x1F, 0x1E, 0x1D, | ||||||
|  | 0x0B, 0x07, 0x01, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, | ||||||
|  | 0xF8, 0xFE, 0xFF, 0xFF, 0x1F, 0x07, | ||||||
|  | 0x01, 0x01, 0x01, 0x03, 0x06, 0x06, | ||||||
|  | 0x0C, 0x0C, 0x08, 0x0C, 0x0C, 0x0E, | ||||||
|  | 0x07, 0x83, 0xC1, 0xE0, 0x70, 0x30, | ||||||
|  | 0x18, 0x1C, 0x7C, 0xCC, 0x8C, 0xDC, | ||||||
|  | 0xF8, 0xC0, 0xE0, 0xE0, 0x70, 0xB8, | ||||||
|  | 0xF0, 0x60, 0x00, 0x00, 0x80, 0xC0, | ||||||
|  | 0xE0, 0xF0, 0x70, 0xF8, 0xFC, 0xFC, | ||||||
|  | 0x3C, 0x30, 0x38, 0xF8, 0xF8, 0xF8, | ||||||
|  | 0x78, 0x00, 0x80, 0x80, 0xC0, 0xE0, | ||||||
|  | 0x70, 0x38, 0x38, 0x9C, 0xDC, 0xFC, | ||||||
|  | 0x7C, 0x38, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, | ||||||
|  | 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, | ||||||
|  | 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, | ||||||
|  | 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, | ||||||
|  | 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, | ||||||
|  | 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, | ||||||
|  | 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, | ||||||
|  | 0x0F, 0x7F, 0x0F, 0x00, 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, 0x01, 0x03, 0x07, | ||||||
|  | 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, | ||||||
|  | 0x7E, 0x7D, 0x3B, 0x17, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, | ||||||
|  | 0x0F, 0x1F, 0x3F, 0x3F, 0x7E, 0x7C, | ||||||
|  | 0x78, 0x70, 0x70, 0x70, 0x70, 0x70, | ||||||
|  | 0x70, 0x78, 0x38, 0x18, 0x1C, 0x0E, | ||||||
|  | 0x07, 0x0F, 0x1F, 0x3F, 0x3C, 0x38, | ||||||
|  | 0x38, 0x18, 0x0C, 0x06, 0x03, 0x01, | ||||||
|  | 0x01, 0x01, 0x01, 0x0E, 0x1F, 0x1F, | ||||||
|  | 0x1C, 0x1C, 0x1E, 0x0F, 0x0F, 0x03, | ||||||
|  | 0x1D, 0x0E, 0x07, 0x03, 0x01, 0x00, | ||||||
|  | 0x00, 0x0E, 0x1F, 0x1F, 0x1D, 0x1E, | ||||||
|  | 0x0F, 0x07, 0x03, 0x03, 0x0F, 0x1F, | ||||||
|  | 0x1F, 0x19, 0x19, 0x19, 0x19, 0x0C, | ||||||
|  | 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | }; | ||||||
|  | #endif // FONT5X7_H
 | ||||||
							
								
								
									
										173
									
								
								keyboards/crkbd/keymaps/drashna/keymap.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										173
									
								
								keyboards/crkbd/keymaps/drashna/keymap.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,173 @@ | |||||||
|  | #include QMK_KEYBOARD_H | ||||||
|  | #include "drashna.h" | ||||||
|  | #ifdef PROTOCOL_LUFA | ||||||
|  |   #include "lufa.h" | ||||||
|  |   #include "split_util.h" | ||||||
|  | #endif | ||||||
|  | #ifdef SSD1306OLED | ||||||
|  |   #include "ssd1306.h" | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | extern keymap_config_t keymap_config; | ||||||
|  | extern uint8_t is_master; | ||||||
|  | 
 | ||||||
|  | #ifdef RGBLIGHT_ENABLE | ||||||
|  | //Following line allows macro to read current RGB settings
 | ||||||
|  | extern rgblight_config_t rgblight_config; | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | enum crkbd_keycodes { | ||||||
|  |   RGBRST = NEW_SAFE_RANGE | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||||
|  |   [_QWERTY] = LAYOUT_wrapper( | ||||||
|  |     KC_ESC,  _________________QWERTY_L1_________________,                    _________________QWERTY_R1_________________, KC_BSPC, | ||||||
|  |     KC_TAB,  _________________QWERTY_L2_________________,                    _________________QWERTY_R2_________________, KC_QUOT, | ||||||
|  |     KC_MLSF, _________________QWERTY_L3_________________,                    _________________QWERTY_R3_________________, KC_MRSF, | ||||||
|  |                            LT(_LOWER,KC_GRV), KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE | ||||||
|  |   ), | ||||||
|  |   [_COLEMAK] = LAYOUT_wrapper( | ||||||
|  |     KC_ESC,  _________________QWERTY_L1_________________,                    _________________QWERTY_R1_________________, KC_BSPC, | ||||||
|  |     KC_TAB,  _________________QWERTY_L2_________________,                    _________________QWERTY_R2_________________, KC_QUOT, | ||||||
|  |     KC_MLSF, _________________QWERTY_L3_________________,                    _________________QWERTY_R3_________________, KC_MRSF, | ||||||
|  |                            LT(_LOWER,KC_GRV), KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE | ||||||
|  |   ), | ||||||
|  |   [_DVORAK] = LAYOUT_wrapper( | ||||||
|  |     KC_ESC,  _________________QWERTY_L1_________________,                    _________________QWERTY_R1_________________, KC_BSPC, | ||||||
|  |     KC_TAB,  _________________QWERTY_L2_________________,                    _________________QWERTY_R2_________________, KC_QUOT, | ||||||
|  |     KC_MLSF, _________________QWERTY_L3_________________,                    _________________QWERTY_R3_________________, KC_MRSF, | ||||||
|  |                            LT(_LOWER,KC_GRV), KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE | ||||||
|  |   ), | ||||||
|  |   [_WORKMAN] = LAYOUT_wrapper( | ||||||
|  |     KC_ESC,  _________________QWERTY_L1_________________,                    _________________QWERTY_R1_________________, KC_BSPC, | ||||||
|  |     KC_TAB,  _________________QWERTY_L2_________________,                    _________________QWERTY_R2_________________, KC_QUOT, | ||||||
|  |     KC_MLSF, _________________QWERTY_L3_________________,                    _________________QWERTY_R3_________________, KC_MRSF, | ||||||
|  |                            LT(_LOWER,KC_GRV), KC_SPC,  KC_BSPC,         KC_DEL,  KC_ENT,  RAISE | ||||||
|  |   ), | ||||||
|  | 
 | ||||||
|  |   [_MODS] = LAYOUT_wrapper( | ||||||
|  |       _______, _______, _______, _______, _______, _______,                  _______, _______, _______, _______, _______, _______, | ||||||
|  |       _______, _______, _______, _______, _______, _______,                  _______, _______, _______, _______, _______, _______, | ||||||
|  |       KC_LSFT, _______, _______, _______, _______, _______,                  _______, _______, _______, _______, _______, KC_RSFT, | ||||||
|  |                                      _______, _______, _______,        _______, _______, _______ | ||||||
|  |   ), | ||||||
|  | 
 | ||||||
|  |   [_LOWER] = LAYOUT_wrapper( | ||||||
|  |     KC_TILD, _________________LOWER_L1__________________,                    _________________LOWER_R1__________________, KC_BSPC, | ||||||
|  |     KC_F11,  _________________LOWER_L2__________________,                    _________________LOWER_R2__________________, KC_PIPE, | ||||||
|  |     KC_F12,  _________________LOWER_L3__________________,                    _________________LOWER_R3__________________, _______, | ||||||
|  |                                      _______, _______, _______,        _______, _______, _______ | ||||||
|  |   ), | ||||||
|  | 
 | ||||||
|  |   [_RAISE] = LAYOUT_wrapper( \ | ||||||
|  |     KC_GRV,  _________________RAISE_L1__________________,                    _________________RAISE_R1__________________, KC_BSPC, | ||||||
|  |     _______, _________________RAISE_L2__________________,                    _________________RAISE_R2__________________, KC_BSLS, | ||||||
|  |     _______, _________________RAISE_L3__________________,                    _________________RAISE_R3__________________, _______, | ||||||
|  |                                      _______, _______, _______,        _______, _______, _______                              //`--------------------'  `--------------------'
 | ||||||
|  |   ), | ||||||
|  | 
 | ||||||
|  |   [_ADJUST] = LAYOUT_wrapper( \ | ||||||
|  |     KC_MAKE, _________________ADJUST_L1_________________,                    _________________ADJUST_R1_________________, KC_RESET, | ||||||
|  |     VRSN,    _________________ADJUST_L2_________________,                    _________________ADJUST_R2_________________, EPRM, | ||||||
|  |     TG_MODS, _________________ADJUST_L3_________________,                    _________________ADJUST_R3_________________, KC_MPLY, | ||||||
|  |                                      _______, _______, _______,        _______, _______, _______ | ||||||
|  |   ) | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | int RGB_current_mode; | ||||||
|  | 
 | ||||||
|  | void matrix_init_keymap(void) { | ||||||
|  |     #ifdef RGBLIGHT_ENABLE | ||||||
|  |       RGB_current_mode = rgblight_config.mode; | ||||||
|  |     #endif | ||||||
|  |     //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
 | ||||||
|  |     #ifdef SSD1306OLED | ||||||
|  |         iota_gfx_init(!has_usb());   // turns on the display
 | ||||||
|  |     #endif | ||||||
|  | 
 | ||||||
|  |   DDRD &= ~(1<<5); | ||||||
|  |   PORTD &= ~(1<<5); | ||||||
|  | 
 | ||||||
|  |   DDRB &= ~(1<<0); | ||||||
|  |   PORTB &= ~(1<<0);} | ||||||
|  | 
 | ||||||
|  | //SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
 | ||||||
|  | #ifdef SSD1306OLED | ||||||
|  | 
 | ||||||
|  | // When add source files to SRC in rules.mk, you can use functions.
 | ||||||
|  | const char *read_layer_state(void); | ||||||
|  | const char *read_logo(void); | ||||||
|  | void set_keylog(uint16_t keycode, keyrecord_t *record); | ||||||
|  | const char *read_keylog(void); | ||||||
|  | const char *read_keylogs(void); | ||||||
|  | 
 | ||||||
|  | // const char *read_mode_icon(bool swap);
 | ||||||
|  | // const char *read_host_led_state(void);
 | ||||||
|  | // void set_timelog(void);
 | ||||||
|  | // const char *read_timelog(void);
 | ||||||
|  | 
 | ||||||
|  | void matrix_scan_keymap(void) { | ||||||
|  |    iota_gfx_task(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void matrix_render_user(struct CharacterMatrix *matrix) { | ||||||
|  |   if (is_master) { | ||||||
|  |     // If you want to change the display of OLED, you need to change here
 | ||||||
|  |     matrix_write_ln(matrix, read_layer_state()); | ||||||
|  |     matrix_write_ln(matrix, read_keylog()); | ||||||
|  |     matrix_write_ln(matrix, read_keylogs()); | ||||||
|  |     //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
 | ||||||
|  |     //matrix_write_ln(matrix, read_host_led_state());
 | ||||||
|  |     //matrix_write_ln(matrix, read_timelog());
 | ||||||
|  |   } else { | ||||||
|  |     matrix_write(matrix, read_logo()); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) { | ||||||
|  |   if (memcmp(dest->display, source->display, sizeof(dest->display))) { | ||||||
|  |     memcpy(dest->display, source->display, sizeof(dest->display)); | ||||||
|  |     dest->dirty = true; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void iota_gfx_task_user(void) { | ||||||
|  |   struct CharacterMatrix matrix; | ||||||
|  |   matrix_clear(&matrix); | ||||||
|  |   matrix_render_user(&matrix); | ||||||
|  |   matrix_update(&display, &matrix); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { | ||||||
|  |   if (record->event.pressed) { | ||||||
|  |     set_keylog(keycode, record); | ||||||
|  |     // set_timelog();
 | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   switch (keycode) { | ||||||
|  |     case RGB_MOD: | ||||||
|  |       #ifdef RGBLIGHT_ENABLE | ||||||
|  |         if (record->event.pressed) { | ||||||
|  |           rgblight_mode_noeeprom(RGB_current_mode); | ||||||
|  |           rgblight_step(); | ||||||
|  |           RGB_current_mode = rgblight_config.mode; | ||||||
|  |         } | ||||||
|  |       #endif | ||||||
|  |       return false; | ||||||
|  |       break; | ||||||
|  |     case RGBRST: | ||||||
|  |       #ifdef RGBLIGHT_ENABLE | ||||||
|  |         if (record->event.pressed) { | ||||||
|  |           eeconfig_update_rgblight_default(); | ||||||
|  |           rgblight_enable(); | ||||||
|  |           RGB_current_mode = rgblight_config.mode; | ||||||
|  |         } | ||||||
|  |       #endif | ||||||
|  |       break; | ||||||
|  |   } | ||||||
|  |   return true; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
							
								
								
									
										30
									
								
								keyboards/crkbd/keymaps/drashna/rules.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								keyboards/crkbd/keymaps/drashna/rules.mk
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | |||||||
|  | 
 | ||||||
|  | # Build Options
 | ||||||
|  | #   change to "no" to disable the options, or define them in the Makefile in
 | ||||||
|  | #   the appropriate keymap folder that will get included automatically
 | ||||||
|  | #
 | ||||||
|  | BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000) | ||||||
|  | MOUSEKEY_ENABLE = no       # Mouse keys(+4700) | ||||||
|  | EXTRAKEY_ENABLE = yes       # Audio control and System control(+450) | ||||||
|  | CONSOLE_ENABLE = no         # Console for debug(+400) | ||||||
|  | COMMAND_ENABLE = no        # Commands for debug and configuration | ||||||
|  | NKRO_ENABLE = yes             # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | ||||||
|  | BACKLIGHT_ENABLE = no      # Enable keyboard backlight functionality | ||||||
|  | MIDI_ENABLE = no            # MIDI controls | ||||||
|  | AUDIO_ENABLE = no           # Audio output on port C6 | ||||||
|  | UNICODE_ENABLE = no         # Unicode | ||||||
|  | BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID | ||||||
|  | RGBLIGHT_ENABLE = yes        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time. | ||||||
|  | SWAP_HANDS_ENABLE = no        # Enable one-hand typing | ||||||
|  | 
 | ||||||
|  | # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 | ||||||
|  | SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend | ||||||
|  | 
 | ||||||
|  | # If you want to change the display of OLED, you need to change here
 | ||||||
|  | SRC +=  ./lib/rgb_state_reader.c \
 | ||||||
|  |         ./lib/layer_state_reader.c \
 | ||||||
|  |         ./lib/logo_reader.c \
 | ||||||
|  |         ./lib/keylogger.c \
 | ||||||
|  |         # ./lib/mode_icon_reader.c \ | ||||||
|  |         # ./lib/host_led_state_reader.c \ | ||||||
|  |         # ./lib/timelogger.c \ | ||||||
| @ -57,11 +57,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
|  */ |  */ | ||||||
|   [_QWERTY] = LAYOUT_ergodox_pretty_wrapper( |   [_QWERTY] = LAYOUT_ergodox_pretty_wrapper( | ||||||
|         // left hand                                                                       // right hand
 |         // left hand                                                                       // right hand
 | ||||||
|              KC_EQL,  ________________NUMBER_LEFT________________, _______,                 _______, ________________NUMBER_RIGHT_______________, KC_MINS, |              KC_ESC,  ________________NUMBER_LEFT________________, UC_FLIP,                 UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, | ||||||
|              KC_TAB,  _________________QWERTY_L1_________________, TG(_DIABLO),         TG(_DIABLO), _________________QWERTY_R1_________________, KC_BSLS, |              KC_TAB,  _________________QWERTY_L1_________________, TG(_DIABLO),         TG(_DIABLO), _________________QWERTY_R1_________________, KC_BSLS, | ||||||
|              KC_C1R3, _________________QWERTY_L2_________________,                                   _________________QWERTY_R2_________________, KC_QUOT, |              KC_C1R3, _________________QWERTY_L2_________________,                                   _________________QWERTY_R2_________________, KC_QUOT, | ||||||
|              KC_MLSF, _________________QWERTY_L3_________________, TG(_GAMEPAD),       TG(_GAMEPAD), _________________QWERTY_R3_________________, KC_MRSF, |              KC_MLSF, _________________QWERTY_L3_________________, TG(_GAMEPAD),       TG(_GAMEPAD), _________________QWERTY_R3_________________, KC_MRSF, | ||||||
|              KC_GRV,  ___________ERGODOX_BOTTOM_LEFT_____________,                                   ___________ERGODOX_BOTTOM_RIGHT____________, KC_NO, |              KC_GRV,  ___________ERGODOX_BOTTOM_LEFT_____________,                                   ___________ERGODOX_BOTTOM_RIGHT____________, UC_IRNY, | ||||||
|                                                     __________________ERGODOX_THUMB_CLUSTER_____________________ |                                                     __________________ERGODOX_THUMB_CLUSTER_____________________ | ||||||
|     ), |     ), | ||||||
| /* Keymap 0: COLEMAK layer
 | /* Keymap 0: COLEMAK layer
 | ||||||
| @ -89,11 +89,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
| // Otherwise, it needs KC_*
 | // Otherwise, it needs KC_*
 | ||||||
|   [_COLEMAK] = LAYOUT_ergodox_pretty_wrapper( |   [_COLEMAK] = LAYOUT_ergodox_pretty_wrapper( | ||||||
|         // left hand                                                                       // right hand
 |         // left hand                                                                       // right hand
 | ||||||
|              KC_EQL,  ________________NUMBER_LEFT________________, _______,                 _______, ________________NUMBER_RIGHT_______________, KC_MINS, |              KC_ESC,  ________________NUMBER_LEFT________________, UC_FLIP,                 UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, | ||||||
|              KC_TAB,  _________________COLEMAK_L1________________, TG(_DIABLO),         TG(_DIABLO), _________________COLEMAK_R1________________, KC_BSLS, |              KC_TAB,  _________________COLEMAK_L1________________, TG(_DIABLO),         TG(_DIABLO), _________________COLEMAK_R1________________, KC_BSLS, | ||||||
|              KC_C1R3, _________________COLEMAK_L2________________,                                   _________________COLEMAK_R2________________, KC_QUOT, |              KC_C1R3, _________________COLEMAK_L2________________,                                   _________________COLEMAK_R2________________, KC_QUOT, | ||||||
|              KC_MLSF, _________________COLEMAK_L3________________, TG(_GAMEPAD),       TG(_GAMEPAD), _________________COLEMAK_R3________________, KC_MRSF, |              KC_MLSF, _________________COLEMAK_L3________________, TG(_GAMEPAD),       TG(_GAMEPAD), _________________COLEMAK_R3________________, KC_MRSF, | ||||||
|              KC_GRV,  ___________ERGODOX_BOTTOM_LEFT_____________,                                   ___________ERGODOX_BOTTOM_RIGHT____________, KC_NO, |              KC_GRV,  ___________ERGODOX_BOTTOM_LEFT_____________,                                   ___________ERGODOX_BOTTOM_RIGHT____________, UC_IRNY, | ||||||
|                                                     __________________ERGODOX_THUMB_CLUSTER_____________________ |                                                     __________________ERGODOX_THUMB_CLUSTER_____________________ | ||||||
|     ), |     ), | ||||||
| /* Keymap 0: DVORAK Layout
 | /* Keymap 0: DVORAK Layout
 | ||||||
| @ -121,11 +121,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
| // Otherwise, it needs KC_*
 | // Otherwise, it needs KC_*
 | ||||||
|   [_DVORAK] = LAYOUT_ergodox_pretty_wrapper( |   [_DVORAK] = LAYOUT_ergodox_pretty_wrapper( | ||||||
|         // left hand        // right hand
 |         // left hand        // right hand
 | ||||||
|              KC_EQL,  ________________NUMBER_LEFT________________, _______,                 _______, ________________NUMBER_RIGHT_______________, KC_BSLS, |              KC_ESC,  ________________NUMBER_LEFT________________, UC_FLIP,                 UC_TABL, ________________NUMBER_RIGHT_______________, KC_BSLS, | ||||||
|              KC_TAB,  _________________DVORAK_L1_________________, TG(_DIABLO),         TG(_DIABLO), _________________DVORAK_R1_________________, KC_SLSH, |              KC_TAB,  _________________DVORAK_L1_________________, TG(_DIABLO),         TG(_DIABLO), _________________DVORAK_R1_________________, KC_SLSH, | ||||||
|              KC_C1R3, _________________DVORAK_L2_________________,                                   _________________DVORAK_R2_________________, KC_MINS, |              KC_C1R3, _________________DVORAK_L2_________________,                                   _________________DVORAK_R2_________________, KC_MINS, | ||||||
|              KC_MLSF, _________________DVORAK_L3_________________, TG(_GAMEPAD),       TG(_GAMEPAD), _________________DVORAK_R3_________________, KC_MRSF, |              KC_MLSF, _________________DVORAK_L3_________________, TG(_GAMEPAD),       TG(_GAMEPAD), _________________DVORAK_R3_________________, KC_MRSF, | ||||||
|              KC_GRV,  ___________ERGODOX_BOTTOM_LEFT_____________,                                   ___________ERGODOX_BOTTOM_RIGHT____________, KC_NO, |              KC_GRV,  ___________ERGODOX_BOTTOM_LEFT_____________,                                   ___________ERGODOX_BOTTOM_RIGHT____________, UC_IRNY, | ||||||
|                                                     __________________ERGODOX_THUMB_CLUSTER_____________________ |                                                     __________________ERGODOX_THUMB_CLUSTER_____________________ | ||||||
|     ), |     ), | ||||||
| /* Keymap 0: WORKMAN layer
 | /* Keymap 0: WORKMAN layer
 | ||||||
| @ -153,11 +153,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
| // Otherwise, it needs KC_*
 | // Otherwise, it needs KC_*
 | ||||||
|   [_WORKMAN] = LAYOUT_ergodox_pretty_wrapper( |   [_WORKMAN] = LAYOUT_ergodox_pretty_wrapper( | ||||||
|         // left hand
 |         // left hand
 | ||||||
|              KC_EQL,  ________________NUMBER_LEFT________________, _______,                 _______, ________________NUMBER_RIGHT_______________, KC_MINS, |              KC_ESC,  ________________NUMBER_LEFT________________, UC_FLIP,                 UC_TABL, ________________NUMBER_RIGHT_______________, KC_MINS, | ||||||
|              KC_TAB,  _________________WORKMAN_L1________________, TG(_DIABLO),         TG(_DIABLO), _________________WORKMAN_R1________________, KC_BSLS, |              KC_TAB,  _________________WORKMAN_L1________________, TG(_DIABLO),         TG(_DIABLO), _________________WORKMAN_R1________________, KC_BSLS, | ||||||
|              KC_C1R3, _________________WORKMAN_L2________________,                                   _________________WORKMAN_R2________________, KC_QUOT, |              KC_C1R3, _________________WORKMAN_L2________________,                                   _________________WORKMAN_R2________________, KC_QUOT, | ||||||
|              KC_MLSF, _________________WORKMAN_L3________________, TG(_GAMEPAD),       TG(_GAMEPAD), _________________WORKMAN_R3________________, KC_MRSF, |              KC_MLSF, _________________WORKMAN_L3________________, TG(_GAMEPAD),       TG(_GAMEPAD), _________________WORKMAN_R3________________, KC_MRSF, | ||||||
|              KC_GRV,  ___________ERGODOX_BOTTOM_LEFT_____________,                                   ___________ERGODOX_BOTTOM_RIGHT____________, KC_NO, |              KC_GRV,  ___________ERGODOX_BOTTOM_LEFT_____________,                                   ___________ERGODOX_BOTTOM_RIGHT____________, UC_IRNY, | ||||||
|                                                     __________________ERGODOX_THUMB_CLUSTER_____________________ |                                                     __________________ERGODOX_THUMB_CLUSTER_____________________ | ||||||
|     ), |     ), | ||||||
| 
 | 
 | ||||||
| @ -197,7 +197,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
|  */ |  */ | ||||||
|   [_GAMEPAD] = LAYOUT_ergodox_pretty_wrapper( |   [_GAMEPAD] = LAYOUT_ergodox_pretty_wrapper( | ||||||
|              KC_ESC,  KC_NO,   KC_1,    KC_2,    KC_3, HYPR(KC_Q), HYPR(KC_GRV),            KC_TRNS, KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_NO,   KC_NO, |              KC_ESC,  KC_NO,   KC_1,    KC_2,    KC_3, HYPR(KC_Q), HYPR(KC_GRV),            KC_TRNS, KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_NO,   KC_NO, | ||||||
|              KC_F1,   KC_K,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                    KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO, |              KC_F1,   KC_K,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                    UC_SHRG, UC_DISA,   KC_NO,   KC_NO,   KC_NO,   KC_NO,   KC_NO, | ||||||
|              KC_TAB,  KC_G,    KC_A,    KC_S,    KC_D,    KC_F,                                      KC_I,    KC_O,    KC_NO,   KC_NO,   KC_NO,   KC_NO, |              KC_TAB,  KC_G,    KC_A,    KC_S,    KC_D,    KC_F,                                      KC_I,    KC_O,    KC_NO,   KC_NO,   KC_NO,   KC_NO, | ||||||
|              KC_LCTL, KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_TRNS,            TG(_GAMEPAD), KC_N,    KC_M,    KC_NO,   KC_NO,   KC_NO,   KC_NO, |              KC_LCTL, KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_TRNS,            TG(_GAMEPAD), KC_N,    KC_M,    KC_NO,   KC_NO,   KC_NO,   KC_NO, | ||||||
|              KC_GRV,  KC_U,    KC_I,    KC_Y,    KC_T,                                                        KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_NO, |              KC_GRV,  KC_U,    KC_I,    KC_Y,    KC_T,                                                        KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_NO, | ||||||
|  | |||||||
| @ -8,8 +8,8 @@ endif | |||||||
| CONSOLE_ENABLE    = no | CONSOLE_ENABLE    = no | ||||||
| BOOTMAGIC_ENABLE  = yes | BOOTMAGIC_ENABLE  = yes | ||||||
| 
 | 
 | ||||||
| UNICODE_ENABLE    = no | UNICODE_ENABLE    = yes | ||||||
| UNICDOEMAP_ENABLE = yes | UNICDOEMAP_ENABLE = no | ||||||
| 
 | 
 | ||||||
| MACROS_ENABLED    = no | MACROS_ENABLED    = no | ||||||
| RGBLIGHT_TWINKLE  = no | RGBLIGHT_TWINKLE  = no | ||||||
|  | |||||||
| @ -55,7 +55,11 @@ | |||||||
| #ifdef TAPPING_TERM | #ifdef TAPPING_TERM | ||||||
| #undef TAPPING_TERM | #undef TAPPING_TERM | ||||||
| #endif // TAPPING_TERM
 | #endif // TAPPING_TERM
 | ||||||
| #define TAPPING_TERM 175 | #ifdef KEYBOARD_ergodox_ez | ||||||
|  |   #define TAPPING_TERM 185 | ||||||
|  | #else | ||||||
|  |   #define TAPPING_TERM 175 | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| // Disable action_get_macro and fn_actions, since we don't use these
 | // Disable action_get_macro and fn_actions, since we don't use these
 | ||||||
| @ -63,4 +67,8 @@ | |||||||
| #define NO_ACTION_MACRO | #define NO_ACTION_MACRO | ||||||
| #define NO_ACTION_FUNCTION | #define NO_ACTION_FUNCTION | ||||||
| 
 | 
 | ||||||
|  | #define DISABLE_LEADER | ||||||
|  | 
 | ||||||
| #define MACRO_TIMER 5 | #define MACRO_TIMER 5 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | |||||||
| @ -21,6 +21,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
| 
 | 
 | ||||||
| userspace_config_t userspace_config; | userspace_config_t userspace_config; | ||||||
| 
 | 
 | ||||||
|  | uint16_t copy_paste_timer; | ||||||
| //  Helper Functions
 | //  Helper Functions
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -131,7 +132,7 @@ void led_set_keymap(uint8_t usb_led) {} | |||||||
| // Call user matrix init, set default RGB colors and then
 | // Call user matrix init, set default RGB colors and then
 | ||||||
| // call the keymap's init function
 | // call the keymap's init function
 | ||||||
| void matrix_init_user(void) { | void matrix_init_user(void) { | ||||||
|   userspace_config.raw = eeprom_read_byte(EECONFIG_USERSPACE); |   userspace_config.raw = eeprom_read_dword(EECONFIG_USERSPACE); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| #ifdef BOOTLOADER_CATERINA | #ifdef BOOTLOADER_CATERINA | ||||||
| @ -143,7 +144,9 @@ void matrix_init_user(void) { | |||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE)) | #if (defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE)) | ||||||
| 	set_unicode_input_mode(UC_WINC); |   if (eeprom_read_byte(EECONFIG_UNICODEMODE) != UC_WIN) { | ||||||
|  |     set_unicode_input_mode(UC_WIN); | ||||||
|  |   } | ||||||
| #endif //UNICODE_ENABLE
 | #endif //UNICODE_ENABLE
 | ||||||
|   matrix_init_keymap(); |   matrix_init_keymap(); | ||||||
| } | } | ||||||
| @ -173,17 +176,12 @@ void shutdown_user (void) { | |||||||
|   shutdown_keymap(); |   shutdown_keymap(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void suspend_power_down_user(void) | void suspend_power_down_user(void) { | ||||||
| { |  | ||||||
|     suspend_power_down_keymap(); |     suspend_power_down_keymap(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void suspend_wakeup_init_user(void) | void suspend_wakeup_init_user(void) { | ||||||
| { |  | ||||||
|   suspend_wakeup_init_keymap(); |   suspend_wakeup_init_keymap(); | ||||||
|   #ifdef KEYBOARD_ergodox_ez |  | ||||||
|   wait_ms(10); |  | ||||||
|   #endif |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -216,7 +214,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||||
| 
 | 
 | ||||||
|   // If console is enabled, it will print the matrix position and status of each key pressed
 |   // If console is enabled, it will print the matrix position and status of each key pressed
 | ||||||
| #ifdef KEYLOGGER_ENABLE | #ifdef KEYLOGGER_ENABLE | ||||||
|   xprintf("KL: row: %u, column: %u, pressed: %u\n", record->event.key.col, record->event.key.row, record->event.pressed); |   #if defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_iris_rev2) | ||||||
|  |     xprintf("KL: col: %u, row: %u, pressed: %u\n", record->event.key.row, record->event.key.col, record->event.pressed); | ||||||
|  |   #else | ||||||
|  |     xprintf("KL: col: %u, row: %u, pressed: %u\n", record->event.key.col, record->event.key.row, record->event.pressed); | ||||||
|  |   #endif | ||||||
| #endif //KEYLOGGER_ENABLE
 | #endif //KEYLOGGER_ENABLE
 | ||||||
| 
 | 
 | ||||||
|   switch (keycode) { |   switch (keycode) { | ||||||
| @ -249,7 +251,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||||
|   case KC_MAKE:  // Compiles the firmware, and adds the flash command based on keyboard bootloader
 |   case KC_MAKE:  // Compiles the firmware, and adds the flash command based on keyboard bootloader
 | ||||||
|     if (!record->event.pressed) { |     if (!record->event.pressed) { | ||||||
|       send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP |       send_string_with_delay_P(PSTR("make " QMK_KEYBOARD ":" QMK_KEYMAP | ||||||
| #if  (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU)) | #if defined(__ARM__) | ||||||
|  |                    ":dfu-util" | ||||||
|  | #elif defined(BOOTLOADER_DFU) | ||||||
|                    ":dfu" |                    ":dfu" | ||||||
| #elif defined(BOOTLOADER_HALFKAY) | #elif defined(BOOTLOADER_HALFKAY) | ||||||
|                    ":teensy" |                    ":teensy" | ||||||
| @ -291,7 +295,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||||
| // to save on firmware space, since it's limited.
 | // to save on firmware space, since it's limited.
 | ||||||
| #ifdef MACROS_ENABLED | #ifdef MACROS_ENABLED | ||||||
|   case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros
 |   case KC_OVERWATCH: // Toggle's if we hit "ENTER" or "BACKSPACE" to input macros
 | ||||||
|     if (record->event.pressed) { userspace_config.is_overwatch ^= 1; eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw); } |     if (record->event.pressed) { userspace_config.is_overwatch ^= 1; eeprom_update_dword(EECONFIG_USERSPACE, userspace_config.raw); } | ||||||
| #ifdef RGBLIGHT_ENABLE | #ifdef RGBLIGHT_ENABLE | ||||||
|     userspace_config.is_overwatch ? rgblight_mode_noeeprom(17) : rgblight_mode_noeeprom(18); |     userspace_config.is_overwatch ? rgblight_mode_noeeprom(17) : rgblight_mode_noeeprom(18); | ||||||
| #endif //RGBLIGHT_ENABLE
 | #endif //RGBLIGHT_ENABLE
 | ||||||
| @ -342,45 +346,40 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||||
|         register_code(KC_LCTL); |         register_code(KC_LCTL); | ||||||
|         tap(KC_C); |         tap(KC_C); | ||||||
|         unregister_code(KC_LCTL); |         unregister_code(KC_LCTL); | ||||||
| #ifdef AUDIO_ENABLE |  | ||||||
|         PLAY_SONG(tone_copy); |  | ||||||
| #endif |  | ||||||
|       } else {                                // Tap, paste
 |       } else {                                // Tap, paste
 | ||||||
|         register_code(KC_LCTL); |         register_code(KC_LCTL); | ||||||
|         tap(KC_V); |         tap(KC_V); | ||||||
|         unregister_code(KC_LCTL); |         unregister_code(KC_LCTL); | ||||||
| #ifdef AUDIO_ENABLE |  | ||||||
|         PLAY_SONG(tone_paste); |  | ||||||
| #endif |  | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     return false; |     return false; | ||||||
|     break; |     break; | ||||||
| #ifdef UNICODE_ENABLE | #ifdef UNICODE_ENABLE | ||||||
|   case UC_FLIP: // (╯°□°)╯ ︵ ┻━┻
 |   case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻━┻
 | ||||||
|     if (record->event.pressed) { |     if (record->event.pressed) { | ||||||
|       register_code(KC_RSFT); |       send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B"); | ||||||
|       tap(KC_9); |  | ||||||
|       unregister_code(KC_RSFT); |  | ||||||
|       process_unicode((0x256F | QK_UNICODE), record); // Arm
 |  | ||||||
|       process_unicode((0x00B0 | QK_UNICODE), record); // Eye
 |  | ||||||
|       process_unicode((0x25A1 | QK_UNICODE), record); // Mouth
 |  | ||||||
|       process_unicode((0x00B0 | QK_UNICODE), record); // Eye
 |  | ||||||
|       register_code(KC_RSFT); |  | ||||||
|       tap(KC_0); |  | ||||||
|       unregister_code(KC_RSFT); |  | ||||||
|       process_unicode((0x256F | QK_UNICODE), record); // Arm
 |  | ||||||
|       tap(KC_SPC); |  | ||||||
|       process_unicode((0x0361 | QK_UNICODE), record); // Flippy
 |  | ||||||
|       tap(KC_SPC); |  | ||||||
|       process_unicode((0x253B | QK_UNICODE), record); // Table
 |  | ||||||
|       process_unicode((0x2501 | QK_UNICODE), record); // Table
 |  | ||||||
|       process_unicode((0x253B | QK_UNICODE), record); // Table
 |  | ||||||
|     } |     } | ||||||
|     return false; |     return false; | ||||||
|     break; |     break; | ||||||
| #endif // UNICODE_ENABLE
 |   case UC_TABL: // ┬─┬ノ( º _ ºノ)
 | ||||||
| 
 |     if (record->event.pressed) { | ||||||
|  |       send_unicode_hex_string("252C 2500 252C 30CE 0028 0020 00BA 0020 005F 0020 00BA 30CE 0029"); | ||||||
|  |     } | ||||||
|  |     return false; | ||||||
|  |     break; | ||||||
|  |   case UC_SHRG: // ¯\_(ツ)_/¯
 | ||||||
|  |     if (record->event.pressed) { | ||||||
|  |       send_unicode_hex_string("00AF 005C 005F 0028 30C4 0029 005F 002F 00AF"); | ||||||
|  |     } | ||||||
|  |     return false; | ||||||
|  |     break; | ||||||
|  |   case UC_DISA: // ಠ_ಠ
 | ||||||
|  |     if (record->event.pressed) { | ||||||
|  |       send_unicode_hex_string("0CA0 005F 0CA0"); | ||||||
|  |     } | ||||||
|  |     return false; | ||||||
|  |     break; | ||||||
|  | #endif | ||||||
|   } |   } | ||||||
|   return process_record_keymap(keycode, record) && |   return process_record_keymap(keycode, record) && | ||||||
| #ifdef RGBLIGHT_ENABLE | #ifdef RGBLIGHT_ENABLE | ||||||
|  | |||||||
| @ -19,9 +19,13 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
| #include "quantum.h" | #include "quantum.h" | ||||||
| #include "version.h" | #include "version.h" | ||||||
| #include "eeprom.h" | #include "eeprom.h" | ||||||
|  | #include "send_unicode.h" | ||||||
|  | 
 | ||||||
| #ifdef RGB_MATRIX_ENABLE | #ifdef RGB_MATRIX_ENABLE | ||||||
| #include "rgb_matrix.h" | #include "rgb_matrix.h" | ||||||
| #endif | #endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| // Define layer names
 | // Define layer names
 | ||||||
| enum userspace_layers { | enum userspace_layers { | ||||||
|   _QWERTY = 0, |   _QWERTY = 0, | ||||||
| @ -59,19 +63,26 @@ inline void tap(uint16_t keycode){ register_code(keycode); unregister_code(keyco | |||||||
| bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed); | bool mod_key_press_timer (uint16_t code, uint16_t mod_code, bool pressed); | ||||||
| bool mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer); | bool mod_key_press (uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer); | ||||||
| 
 | 
 | ||||||
| #define EECONFIG_USERSPACE (uint8_t *)19 | #define EECONFIG_USERSPACE (uint32_t *)19 | ||||||
| 
 | 
 | ||||||
| typedef union { | typedef union { | ||||||
|   uint8_t raw; |   uint32_t raw; | ||||||
|   struct { |   struct { | ||||||
|     bool     rgb_layer_change :1; |     bool     rgb_layer_change :1; | ||||||
|     bool     is_overwatch     :1; |     bool     is_overwatch     :1; | ||||||
|     bool     nuke_switch      :1; |     bool     nuke_switch      :1; | ||||||
|  |     uint8_t  unicode_mod      :4; | ||||||
|   }; |   }; | ||||||
| } userspace_config_t; | } userspace_config_t; | ||||||
| 
 | 
 | ||||||
|  | #if defined(KEYMAP_SAFE_RANGE) | ||||||
|  |   #define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE | ||||||
|  | #else | ||||||
|  |   #define PLACEHOLDER_SAFE_RANGE SAFE_RANGE | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| enum userspace_custom_keycodes { | enum userspace_custom_keycodes { | ||||||
|   EPRM = SAFE_RANGE, // Resets EEPROM do defaults (as in eeconfig_init)
 |   EPRM = PLACEHOLDER_SAFE_RANGE, // Resets EEPROM do defaults (as in eeconfig_init)
 | ||||||
|   VRSN,              // Prints QMK Firmware and board info
 |   VRSN,              // Prints QMK Firmware and board info
 | ||||||
|   KC_QWERTY,         // Sets default layer to QWERTY
 |   KC_QWERTY,         // Sets default layer to QWERTY
 | ||||||
|   KC_COLEMAK,        // Sets default layer to COLEMAK
 |   KC_COLEMAK,        // Sets default layer to COLEMAK
 | ||||||
| @ -99,13 +110,14 @@ enum userspace_custom_keycodes { | |||||||
|   KC_SECRET_5,       // test5
 |   KC_SECRET_5,       // test5
 | ||||||
|   KC_CCCV,           // Hold to copy, tap to paste
 |   KC_CCCV,           // Hold to copy, tap to paste
 | ||||||
|   KC_NUKE,           // NUCLEAR LAUNCH DETECTED!!!
 |   KC_NUKE,           // NUCLEAR LAUNCH DETECTED!!!
 | ||||||
| 
 |   UC_FLIP,           // (ಠ痊ಠ)┻━┻
 | ||||||
| #ifdef UNICODE_ENABLE |   UC_TABL,           // ┬─┬ノ( º _ ºノ)
 | ||||||
|   UC_FLIP,           // Table flip (not working?)
 |   UC_SHRG,           // ¯\_(ツ)_/¯
 | ||||||
| #endif //UNICODE_ENABLE
 |   UC_DISA,           // ಠ_ಠ
 | ||||||
|   NEW_SAFE_RANGE     //use "NEWPLACEHOLDER for keymap specific codes
 |   NEW_SAFE_RANGE     //use "NEWPLACEHOLDER for keymap specific codes
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| #define LOWER MO(_LOWER) | #define LOWER MO(_LOWER) | ||||||
| #define RAISE MO(_RAISE) | #define RAISE MO(_RAISE) | ||||||
| #define ADJUST MO(_ADJUST) | #define ADJUST MO(_ADJUST) | ||||||
| @ -153,6 +165,8 @@ enum userspace_custom_keycodes { | |||||||
| 
 | 
 | ||||||
| #define MG_NKRO MAGIC_TOGGLE_NKRO | #define MG_NKRO MAGIC_TOGGLE_NKRO | ||||||
| 
 | 
 | ||||||
|  | #define UC_IRNY UC(0x2E2E) | ||||||
|  | #define UC_CLUE UC(0x203D) | ||||||
| 
 | 
 | ||||||
| #ifdef TAP_DANCE_ENABLE | #ifdef TAP_DANCE_ENABLE | ||||||
| enum { | enum { | ||||||
|  | |||||||
| @ -230,7 +230,7 @@ bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) { | |||||||
|     if (record->event.pressed) { |     if (record->event.pressed) { | ||||||
|       userspace_config.rgb_layer_change ^= 1; |       userspace_config.rgb_layer_change ^= 1; | ||||||
|       xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change); |       xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change); | ||||||
|       eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw); |       eeprom_update_dword(EECONFIG_USERSPACE, userspace_config.raw); | ||||||
|       if (userspace_config.rgb_layer_change) { |       if (userspace_config.rgb_layer_change) { | ||||||
|         layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
 |         layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
 | ||||||
|       } |       } | ||||||
| @ -243,7 +243,7 @@ bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) { | |||||||
|       if (userspace_config.rgb_layer_change) { |       if (userspace_config.rgb_layer_change) { | ||||||
|         userspace_config.rgb_layer_change = false; |         userspace_config.rgb_layer_change = false; | ||||||
|         xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change); |         xprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change); | ||||||
|         eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw); |         eeprom_update_dword(EECONFIG_USERSPACE, userspace_config.raw); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     return true; break; |     return true; break; | ||||||
| @ -273,6 +273,7 @@ void matrix_init_rgb(void) { | |||||||
|       default: |       default: | ||||||
|         rgblight_sethsv_noeeprom_cyan(); break; |         rgblight_sethsv_noeeprom_cyan(); break; | ||||||
|     } |     } | ||||||
|  |     rgblight_mode_noeeprom(1); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,4 +1,3 @@ | |||||||
| 
 |  | ||||||
| SRC += drashna.c | SRC += drashna.c | ||||||
| 
 | 
 | ||||||
| ifneq ("$(wildcard $(USER_PATH)/secrets.c)","") | ifneq ("$(wildcard $(USER_PATH)/secrets.c)","") | ||||||
| @ -9,7 +8,7 @@ ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) | |||||||
|   SRC += tap_dances.c |   SRC += tap_dances.c | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
| EXTRAFLAGS        += -flto | EXTRAFLAGS += -flto | ||||||
| 
 | 
 | ||||||
| ifeq ($(strip $(NO_SECRETS)), yes) | ifeq ($(strip $(NO_SECRETS)), yes) | ||||||
|     OPT_DEFS += -DNO_SECRETS |     OPT_DEFS += -DNO_SECRETS | ||||||
| @ -37,3 +36,7 @@ ifdef CONSOLE_ENABLE | |||||||
|     OPT_DEFS += -DKEYLOGGER_ENABLE |     OPT_DEFS += -DKEYLOGGER_ENABLE | ||||||
|   endif |   endif | ||||||
| endif | endif | ||||||
|  | 
 | ||||||
|  | ifeq ($(strip $(UNICODE_ENABLE)), yes) | ||||||
|  |   SRC += send_unicode.c | ||||||
|  | endif | ||||||
|  | |||||||
							
								
								
									
										58
									
								
								users/drashna/send_unicode.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								users/drashna/send_unicode.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,58 @@ | |||||||
|  | // Written by konstantin: vomindoraan
 | ||||||
|  | #include "send_unicode.h" | ||||||
|  | #include <ctype.h> | ||||||
|  | #include <string.h> | ||||||
|  | 
 | ||||||
|  | __attribute__((weak)) | ||||||
|  | void send_unicode_hex_string(const char* str) { | ||||||
|  |   if (!str) { return; } // Safety net
 | ||||||
|  | 
 | ||||||
|  |   while (*str) { | ||||||
|  |     // Find the next code point (token) in the string
 | ||||||
|  |     for (; *str == ' '; str++); | ||||||
|  |     size_t n = strcspn(str, " "); // Length of the current token
 | ||||||
|  |     char code_point[n+1]; | ||||||
|  |     strncpy(code_point, str, n); | ||||||
|  |     code_point[n] = '\0'; // Make sure it's null-terminated
 | ||||||
|  | 
 | ||||||
|  |     // Normalize the code point: make all hex digits lowercase
 | ||||||
|  |     for (char *p = code_point; *p; p++) { | ||||||
|  |       *p = tolower((unsigned char)*p); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // Send the code point as a Unicode input string
 | ||||||
|  |     unicode_input_start(); | ||||||
|  |     send_string(code_point); | ||||||
|  |     unicode_input_finish(); | ||||||
|  | 
 | ||||||
|  |     str += n; // Move to the first ' ' (or '\0') after the current token
 | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // (ノಠ痊ಠ)ノ彡┻━┻
 | ||||||
|  | //   send_unicode_hex_string("0028 30CE 0CA0 75CA 0CA0 0029 30CE 5F61 253B 2501 253B");
 | ||||||
|  | 
 | ||||||
|  | //Old code
 | ||||||
|  | // (╯°□°)╯ ︵ ┻━┻
 | ||||||
|  |       #if 0 | ||||||
|  |       register_code(KC_RSFT); | ||||||
|  |       tap(KC_9); | ||||||
|  |       unregister_code(KC_RSFT); | ||||||
|  |       process_unicode((0x256F | QK_UNICODE), record); // Arm
 | ||||||
|  |       process_unicode((0x00B0 | QK_UNICODE), record); // Eye
 | ||||||
|  |       process_unicode((0x25A1 | QK_UNICODE), record); // Mouth
 | ||||||
|  |       process_unicode((0x00B0 | QK_UNICODE), record); // Eye
 | ||||||
|  |       register_code(KC_RSFT); | ||||||
|  |       tap(KC_0); | ||||||
|  |       unregister_code(KC_RSFT); | ||||||
|  |       process_unicode((0x256F | QK_UNICODE), record); // Arm
 | ||||||
|  |       tap(KC_SPC); | ||||||
|  |       process_unicode((0x0361 | QK_UNICODE), record); // Flippy
 | ||||||
|  |       tap(KC_SPC); | ||||||
|  |       process_unicode((0x253B | QK_UNICODE), record); // Table
 | ||||||
|  |       process_unicode((0x2501 | QK_UNICODE), record); // Table
 | ||||||
|  |       process_unicode((0x253B | QK_UNICODE), record); // Table
 | ||||||
|  |       #endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // If you need a good converter: https://r12a.github.io/app-conversion/
 | ||||||
| @ -1,10 +1,11 @@ | |||||||
| #ifndef UNICODE_USERSPACE_H | #pragma once | ||||||
| #define UNICODE_USERSPACE_H |  | ||||||
| 
 | 
 | ||||||
|  | #include "quantum.h" | ||||||
| 
 | 
 | ||||||
|  | void send_unicode_hex_string(const char* str); | ||||||
| 
 | 
 | ||||||
| /* use X(n) to call the  */ | /* use X(n) to call the  */ | ||||||
| 
 | #ifdef UNICODEMAP_ENABLE | ||||||
| enum unicode_name { | enum unicode_name { | ||||||
|   THINK, // thinking face 🤔
 |   THINK, // thinking face 🤔
 | ||||||
|   GRIN, // grinning face 😊
 |   GRIN, // grinning face 😊
 | ||||||
| @ -67,5 +68,4 @@ const uint32_t PROGMEM unicode_map[] = { | |||||||
|   [IRONY]     = 0x02E2E, |   [IRONY]     = 0x02E2E, | ||||||
|   [DEGREE]    = 0x000B0 |   [DEGREE]    = 0x000B0 | ||||||
|  }; |  }; | ||||||
| 
 | #endif // UNICODEMAP_ENABLE
 | ||||||
|  #endif |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Drashna Jaelre
						Drashna Jaelre