Selaa lähdekoodia

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
capsense
Jacob Alexander 8 vuotta sitten
vanhempi
commit
9c52fb32fa

+ 0
- 9
Macro/PartialMap/macro.h Näytä tiedosto







// ----- 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 ----- // ----- Functions -----


void Macro_analogState( uint8_t scanCode, uint8_t state ); void Macro_analogState( uint8_t scanCode, uint8_t state );

+ 10
- 1
Output/pjrcUSB/arm/usb_dev.c Näytä tiedosto

// Project Includes // Project Includes
#include <Lib/OutputLib.h> #include <Lib/OutputLib.h>
#include <print.h> #include <print.h>
#include <kll_defs.h>


// Local Includes // Local Includes
#include "usb_dev.h" #include "usb_dev.h"


void usb_device_reload() 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 // MCHCK
#if defined(_mk20dx128vlf5_) #if defined(_mk20dx128vlf5_)


PORTA_PCR3 = PORT_PCR_PFE | PORT_PCR_MUX(1); // Internal pull-up PORTA_PCR3 = PORT_PCR_PFE | PORT_PCR_MUX(1); // Internal pull-up


// Check for jumper // Check for jumper
if ( GPIOA_PDIR & (1<<3) )
if ( GPIOA_PDIR & (1<<3) && flashModeEnabled_define != 0 )
{ {
print( NL ); print( NL );
warn_print("Security jumper not present, cancelling firmware reload..."); warn_print("Security jumper not present, cancelling firmware reload...");

+ 12
- 3
Output/pjrcUSB/capabilities.kll Näytä tiedosto

Name = pjrcUSBCapabilities; Name = pjrcUSBCapabilities;
Version = 0.5;
Version = 0.6;
Author = "HaaTa (Jacob Alexander) 2014-2015"; Author = "HaaTa (Jacob Alexander) 2014-2015";
KLL = 0.3b;
KLL = 0.3c;


# Modified Date # Modified Date
Date = 2015-07-12;
Date = 2015-08-21;




# Output capabilities # Output capabilities
keyboardLocale => KeyboardLocale_define; keyboardLocale => KeyboardLocale_define;
keyboardLocale = 0; 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();


+ 13
- 0
Output/pjrcUSB/output_com.c Näytä tiedosto

} }
} }


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 ----- // ----- Functions -----

+ 0
- 14
Output/pjrcUSB/output_com.h Näytä tiedosto







// ----- 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 ----- // ----- Functions -----


void Output_setup(); void Output_setup();

+ 44
- 0
Output/uartOut/arm/uart_serial.c Näytä tiedosto

// Project Includes // Project Includes
#include <Lib/OutputLib.h> #include <Lib/OutputLib.h>
#include <Lib/Interrupts.h> #include <Lib/Interrupts.h>
#include <print.h>
#include <kll_defs.h>


// Local Includes // Local Includes
#include "uart_serial.h" #include "uart_serial.h"


void uart_device_reload() 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"); asm volatile("bkpt");
#endif
} }



+ 11
- 2
Output/uartOut/capabilities.kll Näytä tiedosto

Name = uartOutCapabilities; Name = uartOutCapabilities;
Version = 0.1;
Version = 0.2;
Author = "HaaTa (Jacob Alexander) 2014"; Author = "HaaTa (Jacob Alexander) 2014";
KLL = 0.3; KLL = 0.3;


# Modified Date # Modified Date
Date = 2014-09-27;
Date = 2014-08-21;




# Capabilties available to the uartOut output module # Capabilties available to the uartOut output module
usbKeyOut => Output_usbCodeSend_capability( usbCode : 1 ); 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();


+ 13
- 0
Output/uartOut/output_com.c Näytä tiedosto

} }
} }


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 ----- // ----- Functions -----

+ 13
- 0
Output/usbMuxUart/output_com.c Näytä tiedosto

} }
} }


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 ----- // ----- Functions -----

+ 16
- 16
Scan/MDErgo1/leftHand.kll Näytä tiedosto

Name = MDErgo1 Right Hand;
Name = MDErgo1 Left Hand;
Version = 0.1; Version = 0.1;
Author = "HaaTa (Jacob Alexander) 2015"; Author = "HaaTa (Jacob Alexander) 2015";
KLL = 0.3c; KLL = 0.3c;




# Top Row # Top Row
S0x02 : U"6";
S0x02 : U"Esc";
S0x03 : U"5"; S0x03 : U"5";
S0x04 : U"4"; S0x04 : U"4";
S0x05 : U"3"; S0x05 : U"3";
S0x06 : U"2"; S0x06 : U"2";
S0x07 : U"1"; S0x07 : U"1";
S0x08 : U"Esc";
S0x08 : U"Equals";


# Top-Middle Row # Top-Middle Row
S0x0B : U"F4";
S0x0B : U"Function1";
S0x0C : U"T"; S0x0C : U"T";
S0x0D : U"R"; S0x0D : U"R";
S0x0E : U"E"; S0x0E : U"E";
S0x0F : U"W"; S0x0F : U"W";
S0x10 : U"Q"; S0x10 : U"Q";
S0x11 : U"Tab";
S0x11 : U"Backslash";


# Middle Row # Middle Row
S0x15 : U"G"; S0x15 : U"G";
S0x17 : U"D"; S0x17 : U"D";
S0x18 : U"S"; S0x18 : U"S";
S0x19 : U"A"; S0x19 : U"A";
S0x1A : U"Function1";
S0x1A : U"Tab";


# Top Thumb Cluster # Top Thumb Cluster
S0x1B : U"Home";
S0x1C : U"End";
S0x1B : U"LAlt";
S0x1C : U"LCtrl";


# Bottom-Middle Row # Bottom-Middle Row
S0x1D : U"F5";
S0x1D : U"Function2";
S0x1E : U"B"; S0x1E : U"B";
S0x1F : U"V"; S0x1F : U"V";
S0x20 : U"C"; S0x20 : U"C";
S0x23 : U"Left Shift"; S0x23 : U"Left Shift";


# Bottom Thumb Cluster # Bottom Thumb Cluster
S0x24 : U"Left Alt";
S0x25 : U"Left Ctrl";
S0x24 : U"Home";
S0x25 : U"End";
S0x26 : U"Delete"; S0x26 : U"Delete";
S0x27 : U"Space";
S0x27 : U"Backspace";


# Bottom Row # Bottom Row
S0x28 : U"Function5"; 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";



+ 16
- 17
Scan/MDErgo1/rightHand.kll Näytä tiedosto





# Top Row # 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 # Top-Middle Row
S0x0B : U"PageUp";
S0x0B : U"Left Brace";
S0x0C : U"Y"; S0x0C : U"Y";
S0x0D : U"U"; S0x0D : U"U";
S0x0E : U"I"; S0x0E : U"I";
S0x0F : U"O"; S0x0F : U"O";
S0x10 : U"P"; S0x10 : U"P";
S0x11 : U"BackSlash";
S0x11 : U"Right Brace";


# Middle Row # Middle Row
S0x15 : U"H"; S0x15 : U"H";
S0x1A : U"Quote"; S0x1A : U"Quote";


# Top Thumb Cluster # Top Thumb Cluster
S0x1B : U"PrintScreen";
S0x1C : U"Insert";
S0x1B : U"RAlt";
S0x1C : U"RCtrl";


# Bottom-Middle Row # Bottom-Middle Row
S0x1D : U"PageDown";
S0x1D : U"Function7";
S0x1E : U"N"; S0x1E : U"N";
S0x1F : U"M"; S0x1F : U"M";
S0x20 : U"Comma"; S0x20 : U"Comma";
S0x23 : U"Right Shift"; S0x23 : U"Right Shift";


# Bottom Thumb Cluster # Bottom Thumb Cluster
S0x24 : U"Right Alt";
S0x25 : U"Right Ctrl";
S0x24 : U"PageUp";
S0x25 : U"PageDown";
S0x26 : U"Enter"; S0x26 : U"Enter";
S0x27 : U"Function2";
S0x27 : U"Space";


# Bottom Row # Bottom Row
S0x28 : U"Left"; S0x28 : U"Left";
S0x29 : U"Down"; S0x29 : U"Down";
S0x2A : U"Up"; S0x2A : U"Up";
S0x2B : U"Right"; S0x2B : U"Right";
S0x2C : U"Function4";

S0x2C : U"RGui";