Fixing default ErgoDox layout and adding FlashMode button
- Adds proper flashMode support for all keyboards and microcontrollers (usb and serial) - flashModeEnabled must be set to 1 otherwise it will only show an error * This is on purpose (somewhat dangerous feature as it allows remote flashing) - Capability cleanup
This commit is contained in:
		
							parent
							
								
									1cbc175551
								
							
						
					
					
						commit
						9c52fb32fa
					
				
					 11 changed files with 148 additions and 62 deletions
				
			
		|  | @ -23,15 +23,6 @@ | |||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // ----- Capabilities -----
 | ||||
| 
 | ||||
| void Macro_layerState_capability( uint8_t state, uint8_t stateType, uint8_t *args ); | ||||
| void Macro_layerLatch_capability( uint8_t state, uint8_t stateType, uint8_t *args ); | ||||
| void Macro_layerLock_capability( uint8_t state, uint8_t stateType, uint8_t *args ); | ||||
| void Macro_layerShift_capability( uint8_t state, uint8_t stateType, uint8_t *args ); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // ----- Functions -----
 | ||||
| 
 | ||||
| void Macro_analogState( uint8_t scanCode, uint8_t state ); | ||||
|  |  | |||
|  | @ -34,6 +34,7 @@ | |||
| // Project Includes
 | ||||
| #include <Lib/OutputLib.h> | ||||
| #include <print.h> | ||||
| #include <kll_defs.h> | ||||
| 
 | ||||
| // Local Includes
 | ||||
| #include "usb_dev.h" | ||||
|  | @ -872,6 +873,14 @@ void usb_tx( uint32_t endpoint, usb_packet_t *packet ) | |||
| 
 | ||||
| void usb_device_reload() | ||||
| { | ||||
| 	if ( flashModeEnabled_define == 0 ) | ||||
| 	{ | ||||
| 		print( NL ); | ||||
| 		warn_print("flashModeEnabled not set, cancelling firmware reload..."); | ||||
| 		info_msg("Set flashModeEnabled to 1 in your kll configuration."); | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| // MCHCK
 | ||||
| #if defined(_mk20dx128vlf5_) | ||||
| 
 | ||||
|  | @ -882,7 +891,7 @@ void usb_device_reload() | |||
| 	PORTA_PCR3 = PORT_PCR_PFE | PORT_PCR_MUX(1); // Internal pull-up
 | ||||
| 
 | ||||
| 	// Check for jumper
 | ||||
| 	if ( GPIOA_PDIR & (1<<3) ) | ||||
| 	if ( GPIOA_PDIR & (1<<3) && flashModeEnabled_define != 0 ) | ||||
| 	{ | ||||
| 		print( NL ); | ||||
| 		warn_print("Security jumper not present, cancelling firmware reload..."); | ||||
|  |  | |||
|  | @ -1,10 +1,10 @@ | |||
| Name = pjrcUSBCapabilities; | ||||
| Version = 0.5; | ||||
| Version = 0.6; | ||||
| Author = "HaaTa (Jacob Alexander) 2014-2015"; | ||||
| KLL = 0.3b; | ||||
| KLL = 0.3c; | ||||
| 
 | ||||
| # Modified Date | ||||
| Date = 2015-07-12; | ||||
| Date = 2015-08-21; | ||||
| 
 | ||||
| 
 | ||||
| # Output capabilities | ||||
|  | @ -21,3 +21,12 @@ kbdProtocolNKRO => Output_kbdProtocolNKRO_capability(); | |||
| keyboardLocale => KeyboardLocale_define; | ||||
| keyboardLocale = 0; | ||||
| 
 | ||||
| # Bootloader Mode capability | ||||
| # XXX | ||||
| # By default this is disabled on purpose | ||||
| # It is a large security hazard | ||||
| flashModeEnabled => flashModeEnabled_define; | ||||
| flashModeEnabled = 0; | ||||
| 
 | ||||
| flashMode => Output_flashMode_capability(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -484,6 +484,19 @@ void Output_usbCodeSend_capability( uint8_t state, uint8_t stateType, uint8_t *a | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| void Output_flashMode_capability( uint8_t state, uint8_t stateType, uint8_t *args ) | ||||
| { | ||||
| 	// Display capability name
 | ||||
| 	if ( stateType == 0xFF && state == 0xFF ) | ||||
| 	{ | ||||
| 		print("Output_flashMode(usbCode)"); | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	// Start flash mode
 | ||||
| 	Output_firmwareReload(); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // ----- Functions -----
 | ||||
|  |  | |||
|  | @ -84,20 +84,6 @@ extern          uint8_t  Output_DebugMode; // 0 - Debug disabled, 1 - Debug enab | |||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // ----- Capabilities -----
 | ||||
| 
 | ||||
| // Output capabilities
 | ||||
| void Output_consCtrlSend_capability( uint8_t state, uint8_t stateType, uint8_t *args ); | ||||
| void Output_noneSend_capability( uint8_t state, uint8_t stateType, uint8_t *args ); | ||||
| void Output_sysCtrlSend_capability( uint8_t state, uint8_t stateType, uint8_t *args ); | ||||
| void Output_usbCodeSend_capability( uint8_t state, uint8_t stateType, uint8_t *args ); | ||||
| 
 | ||||
| // Configuration capabilities
 | ||||
| void Output_kbdProtocolBoot_capability( uint8_t state, uint8_t stateType, uint8_t *args ); | ||||
| void Output_kbdProtocolNKRO_capability( uint8_t state, uint8_t stateType, uint8_t *args ); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // ----- Functions -----
 | ||||
| 
 | ||||
| void Output_setup(); | ||||
|  |  | |||
|  | @ -27,6 +27,8 @@ | |||
| // Project Includes
 | ||||
| #include <Lib/OutputLib.h> | ||||
| #include <Lib/Interrupts.h> | ||||
| #include <print.h> | ||||
| #include <kll_defs.h> | ||||
| 
 | ||||
| // Local Includes
 | ||||
| #include "uart_serial.h" | ||||
|  | @ -325,6 +327,48 @@ void uart_serial_flush_output() | |||
| 
 | ||||
| void uart_device_reload() | ||||
| { | ||||
| 	if ( flashModeEnabled_define == 0 ) | ||||
| 	{ | ||||
| 		print( NL ); | ||||
| 		warn_print("flashModeEnabled not set, cancelling firmware reload..."); | ||||
| 		info_msg("Set flashModeEnabled to 1 in your kll configuration."); | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| // MCHCK
 | ||||
| #if defined(_mk20dx128vlf5_) | ||||
| 
 | ||||
| 	// MCHCK Kiibohd Variant
 | ||||
| 	// Check to see if PTA3 (has a pull-up) is connected to GND (usually via jumper)
 | ||||
| 	// Only allow reload if the jumper is present (security)
 | ||||
| 	GPIOA_PDDR &= ~(1<<3); // Input
 | ||||
| 	PORTA_PCR3 = PORT_PCR_PFE | PORT_PCR_MUX(1); // Internal pull-up
 | ||||
| 
 | ||||
| 	// Check for jumper
 | ||||
| 	if ( GPIOA_PDIR & (1<<3) && flashModeEnabled_define != 0 ) | ||||
| 	{ | ||||
| 		print( NL ); | ||||
| 		warn_print("Security jumper not present, cancelling firmware reload..."); | ||||
| 		info_msg("Replace jumper on middle 2 pins, or manually press the firmware reload button."); | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		// Copies variable into the VBAT register, must be identical to the variable in the bootloader to jump to the bootloader flash mode
 | ||||
| 		for ( int pos = 0; pos < sizeof(sys_reset_to_loader_magic); pos++ ) | ||||
| 			(&VBAT)[ pos ] = sys_reset_to_loader_magic[ pos ]; | ||||
| 		SOFTWARE_RESET(); | ||||
| 	} | ||||
| 
 | ||||
| // Kiibohd mk20dx256vlh7
 | ||||
| #elif defined(_mk20dx256vlh7_) | ||||
| 	// Copies variable into the VBAT register, must be identical to the variable in the bootloader to jump to the bootloader flash mode
 | ||||
| 	for ( int pos = 0; pos < sizeof(sys_reset_to_loader_magic); pos++ ) | ||||
| 		(&VBAT)[ pos ] = sys_reset_to_loader_magic[ pos ]; | ||||
| 	SOFTWARE_RESET(); | ||||
| 
 | ||||
| // Teensy 3.0 and 3.1
 | ||||
| #else | ||||
| 	asm volatile("bkpt"); | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,12 +1,21 @@ | |||
| Name = uartOutCapabilities; | ||||
| Version = 0.1; | ||||
| Version = 0.2; | ||||
| Author = "HaaTa (Jacob Alexander) 2014"; | ||||
| KLL = 0.3; | ||||
| 
 | ||||
| # Modified Date | ||||
| Date = 2014-09-27; | ||||
| Date = 2014-08-21; | ||||
| 
 | ||||
| 
 | ||||
| # Capabilties available to the uartOut output module | ||||
| usbKeyOut   => Output_usbCodeSend_capability( usbCode : 1 ); | ||||
| 
 | ||||
| # Bootloader Mode capability | ||||
| # XXX | ||||
| # By default this is disabled on purpose | ||||
| # It is a large security hazard | ||||
| flashModeEnabled => flashModeEnabled_define; | ||||
| flashModeEnabled = 0; | ||||
| 
 | ||||
| flashMode => Output_flashMode_capability(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -129,6 +129,19 @@ void Output_usbCodeSend_capability( uint8_t state, uint8_t stateType, uint8_t *a | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| void Output_flashMode_capability( uint8_t state, uint8_t stateType, uint8_t *args ) | ||||
| { | ||||
| 	// Display capability name
 | ||||
| 	if ( stateType == 0xFF && state == 0xFF ) | ||||
| 	{ | ||||
| 		print("Output_flashMode(usbCode)"); | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	// Start flash mode
 | ||||
| 	Output_firmwareReload(); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // ----- Functions -----
 | ||||
|  |  | |||
|  | @ -490,6 +490,19 @@ void Output_usbCodeSend_capability( uint8_t state, uint8_t stateType, uint8_t *a | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| void Output_flashMode_capability( uint8_t state, uint8_t stateType, uint8_t *args ) | ||||
| { | ||||
| 	// Display capability name
 | ||||
| 	if ( stateType == 0xFF && state == 0xFF ) | ||||
| 	{ | ||||
| 		print("Output_flashMode(usbCode)"); | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	// Start flash mode
 | ||||
| 	Output_firmwareReload(); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // ----- Functions -----
 | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| Name = MDErgo1 Right Hand; | ||||
| Name = MDErgo1 Left Hand; | ||||
| Version = 0.1; | ||||
| Author = "HaaTa (Jacob Alexander) 2015"; | ||||
| KLL = 0.3c; | ||||
|  | @ -8,22 +8,22 @@ Date = 2015-08-06; | |||
| 
 | ||||
| 
 | ||||
| # Top Row | ||||
| S0x02 : U"6"; | ||||
| S0x02 : U"Esc"; | ||||
| S0x03 : U"5"; | ||||
| S0x04 : U"4"; | ||||
| S0x05 : U"3"; | ||||
| S0x06 : U"2"; | ||||
| S0x07 : U"1"; | ||||
| S0x08 : U"Esc"; | ||||
| S0x08 : U"Equals"; | ||||
| 
 | ||||
| # Top-Middle Row | ||||
| S0x0B : U"F4"; | ||||
| S0x0B : U"Function1"; | ||||
| S0x0C : U"T"; | ||||
| S0x0D : U"R"; | ||||
| S0x0E : U"E"; | ||||
| S0x0F : U"W"; | ||||
| S0x10 : U"Q"; | ||||
| S0x11 : U"Tab"; | ||||
| S0x11 : U"Backslash"; | ||||
| 
 | ||||
| # Middle Row | ||||
| S0x15 : U"G"; | ||||
|  | @ -31,14 +31,14 @@ S0x16 : U"F"; | |||
| S0x17 : U"D"; | ||||
| S0x18 : U"S"; | ||||
| S0x19 : U"A"; | ||||
| S0x1A : U"Function1"; | ||||
| S0x1A : U"Tab"; | ||||
| 
 | ||||
| # Top Thumb Cluster | ||||
| S0x1B : U"Home"; | ||||
| S0x1C : U"End"; | ||||
| S0x1B : U"LAlt"; | ||||
| S0x1C : U"LCtrl"; | ||||
| 
 | ||||
| # Bottom-Middle Row | ||||
| S0x1D : U"F5"; | ||||
| S0x1D : U"Function2"; | ||||
| S0x1E : U"B"; | ||||
| S0x1F : U"V"; | ||||
| S0x20 : U"C"; | ||||
|  | @ -47,15 +47,15 @@ S0x22 : U"Z"; | |||
| S0x23 : U"Left Shift"; | ||||
| 
 | ||||
| # Bottom Thumb Cluster | ||||
| S0x24 : U"Left Alt"; | ||||
| S0x25 : U"Left Ctrl"; | ||||
| S0x24 : U"Home"; | ||||
| S0x25 : U"End"; | ||||
| S0x26 : U"Delete"; | ||||
| S0x27 : U"Space"; | ||||
| S0x27 : U"Backspace"; | ||||
| 
 | ||||
| # Bottom Row | ||||
| S0x28 : U"Function5"; | ||||
| S0x29 : U"Backtick"; | ||||
| S0x2A : U"Right Brace"; | ||||
| S0x2B : U"Left Brace"; | ||||
| S0x2C : U"Function3"; | ||||
| S0x29 : U"Function4"; | ||||
| S0x2A : U"Function3"; | ||||
| S0x2B : U"Backtick"; | ||||
| S0x2C : U"LGui"; | ||||
| 
 | ||||
|  |  | |||
|  | @ -8,22 +8,22 @@ Date = 2015-08-06; | |||
| 
 | ||||
| 
 | ||||
| # Top Row | ||||
| S0x02 : U"7"; | ||||
| S0x03 : U"8"; | ||||
| S0x04 : U"9"; | ||||
| S0x05 : U"0"; | ||||
| S0x06 : U"Minus"; | ||||
| S0x07 : U"Equal"; | ||||
| S0x08 : U"Backspace"; | ||||
| S0x02 : U"Function6"; | ||||
| S0x03 : U"6"; | ||||
| S0x04 : U"7"; | ||||
| S0x05 : U"8"; | ||||
| S0x06 : U"9"; | ||||
| S0x07 : U"0"; | ||||
| S0x08 : U"Minus"; | ||||
| 
 | ||||
| # Top-Middle Row | ||||
| S0x0B : U"PageUp"; | ||||
| S0x0B : U"Left Brace"; | ||||
| S0x0C : U"Y"; | ||||
| S0x0D : U"U"; | ||||
| S0x0E : U"I"; | ||||
| S0x0F : U"O"; | ||||
| S0x10 : U"P"; | ||||
| S0x11 : U"BackSlash"; | ||||
| S0x11 : U"Right Brace"; | ||||
| 
 | ||||
| # Middle Row | ||||
| S0x15 : U"H"; | ||||
|  | @ -34,11 +34,11 @@ S0x19 : U"Semicolon"; | |||
| S0x1A : U"Quote"; | ||||
| 
 | ||||
| # Top Thumb Cluster | ||||
| S0x1B : U"PrintScreen"; | ||||
| S0x1C : U"Insert"; | ||||
| S0x1B : U"RAlt"; | ||||
| S0x1C : U"RCtrl"; | ||||
| 
 | ||||
| # Bottom-Middle Row | ||||
| S0x1D : U"PageDown"; | ||||
| S0x1D : U"Function7"; | ||||
| S0x1E : U"N"; | ||||
| S0x1F : U"M"; | ||||
| S0x20 : U"Comma"; | ||||
|  | @ -47,16 +47,15 @@ S0x22 : U"Slash"; | |||
| S0x23 : U"Right Shift"; | ||||
| 
 | ||||
| # Bottom Thumb Cluster | ||||
| S0x24 : U"Right Alt"; | ||||
| S0x25 : U"Right Ctrl"; | ||||
| S0x24 : U"PageUp"; | ||||
| S0x25 : U"PageDown"; | ||||
| S0x26 : U"Enter"; | ||||
| S0x27 : U"Function2"; | ||||
| S0x27 : U"Space"; | ||||
| 
 | ||||
| # Bottom Row | ||||
| S0x28 : U"Left"; | ||||
| S0x29 : U"Down"; | ||||
| S0x2A : U"Up"; | ||||
| S0x2B : U"Right"; | ||||
| S0x2C : U"Function4"; | ||||
| 
 | ||||
| S0x2C : U"RGui"; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jacob Alexander
						Jacob Alexander