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
@ -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";
|
||||
|
||||
|
Reference in New Issue
Block a user