X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Macro%2FPartialMap%2Fmacro.c;h=bc2d7d68643078ae25f04d55869398e0948c2baa;hb=216b1513026e45e44794f15cfa4d02ff1c9d49f4;hp=5f2cf77cea4b1abae6c01e2fc23ff73cf05a1939;hpb=2922fce0f72268b823226268ee9f64f165779621;p=kiibohd-controller.git diff --git a/Macro/PartialMap/macro.c b/Macro/PartialMap/macro.c index 5f2cf77..bc2d7d6 100644 --- a/Macro/PartialMap/macro.c +++ b/Macro/PartialMap/macro.c @@ -41,6 +41,7 @@ void cliFunc_capSelect ( char* args ); void cliFunc_keyHold ( char* args ); void cliFunc_keyPress ( char* args ); void cliFunc_keyRelease( char* args ); +void cliFunc_layerDebug( char* args ); void cliFunc_layerList ( char* args ); void cliFunc_layerState( char* args ); void cliFunc_macroDebug( char* args ); @@ -86,6 +87,7 @@ CLIDict_Entry( capSelect, "Triggers the specified capabilities. First two args CLIDict_Entry( keyHold, "Send key-hold events to the macro module. Duplicates have undefined behaviour." NL "\t\t\033[35mS10\033[0m Scancode 0x0A" ); CLIDict_Entry( keyPress, "Send key-press events to the macro module. Duplicates have undefined behaviour." NL "\t\t\033[35mS10\033[0m Scancode 0x0A" ); CLIDict_Entry( keyRelease, "Send key-release event to macro module. Duplicates have undefined behaviour." NL "\t\t\033[35mS10\033[0m Scancode 0x0A" ); +CLIDict_Entry( layerDebug, "Layer debug mode. Shows layer stack and any changes." ); CLIDict_Entry( layerList, "List available layers." ); CLIDict_Entry( layerState, "Modify specified indexed layer state ." NL "\t\t\033[35mL2\033[0m Indexed Layer 0x02" NL "\t\t0 Off, 1 Shift, 2 Latch, 4 Lock States" ); CLIDict_Entry( macroDebug, "Disables/Enables sending USB keycodes to the Output Module and prints U/K codes." ); @@ -100,6 +102,7 @@ CLIDict_Def( macroCLIDict, "Macro Module Commands" ) = { CLIDict_Item( keyHold ), CLIDict_Item( keyPress ), CLIDict_Item( keyRelease ), + CLIDict_Item( layerDebug ), CLIDict_Item( layerList ), CLIDict_Item( layerState ), CLIDict_Item( macroDebug ), @@ -111,6 +114,9 @@ CLIDict_Def( macroCLIDict, "Macro Module Commands" ) = { }; +// Layer debug flag - If set, displays any changes to layers and the full layer stack on change +uint8_t layerDebugMode = 0; + // Macro debug flag - If set, clears the USB Buffers after signalling processing completion uint8_t macroDebugMode = 0; @@ -204,6 +210,30 @@ void Macro_layerState( uint8_t state, uint8_t stateType, uint16_t layer, uint8_t // Reduce LayerIndexStack size macroLayerIndexStackSize--; } + + // Layer Debug Mode + if ( layerDebugMode ) + { + dbug_msg("Layer "); + + // Iterate over each of the layers displaying the state as a hex value + for ( uint16_t index = 0; index < LayerNum; index++ ) + { + printHex_op( LayerState[ index ], 0 ); + } + + // Always show the default layer (it's always 0) + print(" 0"); + + // Iterate over the layer stack starting from the bottom of the stack + for ( uint16_t index = macroLayerIndexStackSize; index > 0; index-- ) + { + print(":"); + printHex_op( macroLayerIndexStack[ index - 1 ], 0 ); + } + + print( NL ); + } } // Modifies the specified Layer control byte @@ -393,6 +423,16 @@ nat_ptr_t *Macro_layerLookup( TriggerGuide *guide, uint8_t latch_expire ) } +// Update the scancode using a list of TriggerGuides +// TODO Handle led state and analog +inline void Macro_triggerState( void *triggers, uint8_t num ) +{ + // Copy each of the TriggerGuides to the TriggerListBuffer + for ( uint8_t c = 0; c < num; c++ ) + macroTriggerListBuffer[ macroTriggerListBufferSize++ ] = ((TriggerGuide*)triggers)[ c ]; +} + + // Update the scancode key state // States: // * 0x00 - Off @@ -1194,6 +1234,16 @@ void cliFunc_keyRelease( char* args ) } } +void cliFunc_layerDebug( char *args ) +{ + // Toggle layer debug mode + layerDebugMode = layerDebugMode ? 0 : 1; + + print( NL ); + info_msg("Layer Debug Mode: "); + printInt8( layerDebugMode ); +} + void cliFunc_layerList( char* args ) { print( NL );