X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=backends%2Fkiibohd.py;h=70fd58c8e7c97dae0a121c36ed6223cf4fc974ca;hb=a0b768211af354188b833e29ccf5ae18f2bbfb31;hp=c03f853def63d41e45b14c1ca1c24aed508b3e5d;hpb=d05f7ae8204841268e44d4c199416c3c0da4dd33;p=kiibohd-kll.git diff --git a/backends/kiibohd.py b/backends/kiibohd.py index c03f853..70fd58c 100644 --- a/backends/kiibohd.py +++ b/backends/kiibohd.py @@ -123,21 +123,26 @@ class Backend( BackendBase ): # Iterate through defines and lookup the variables for define in variables.defines.keys(): if define in variables.overallVariables.keys(): - self.fill_dict['Defines'] += "\n#define {0} {1}".format( variables.defines[ define ], variables.overallVariables[ define ] ) + self.fill_dict['Defines'] += "\n#define {0} {1}".format( variables.defines[ define ], variables.overallVariables[ define ].replace( '\n', ' \\\n' ) ) else: print( "{0} '{1}' not defined...".format( WARNING, define ) ) ## Capabilities ## + self.fill_dict['CapabilitiesFuncDecl'] = "" self.fill_dict['CapabilitiesList'] = "const Capability CapabilitiesList[] = {\n" + self.fill_dict['CapabilitiesIndices'] = "typedef enum CapabilityIndex {\n" # Keys are pre-sorted for key in capabilities.keys(): funcName = capabilities.funcName( key ) argByteWidth = capabilities.totalArgBytes( key ) self.fill_dict['CapabilitiesList'] += "\t{{ {0}, {1} }},\n".format( funcName, argByteWidth ) + self.fill_dict['CapabilitiesFuncDecl'] += "void {0}( uint8_t state, uint8_t stateType, uint8_t *args );\n".format( funcName ) + self.fill_dict['CapabilitiesIndices'] += "\t{0}_index,\n".format( funcName ) self.fill_dict['CapabilitiesList'] += "};" + self.fill_dict['CapabilitiesIndices'] += "} CapabilityIndex;" ## Results Macros ## @@ -219,13 +224,17 @@ class Backend( BackendBase ): # Add the trigger macro scan code guide # See kiibohd controller Macros/PartialMap/kll.h for exact formatting details - for sequence in range( 0, len( macros.triggersIndexSorted[ trigger ][ 0 ] ) ): + for sequence in range( 0, len( macros.triggersIndexSorted[ trigger ][0] ) ): # For each combo in the sequence, add the length of the combo self.fill_dict['TriggerMacros'] += "{0}, ".format( len( macros.triggersIndexSorted[ trigger ][0][ sequence ] ) ) # For each combo, add the key type, key state and scan code - for combo in range( 0, len( macros.triggersIndexSorted[ trigger ][ 0 ][ sequence ] ) ): - triggerItem = macros.triggersIndexSorted[ trigger ][ 0 ][ sequence ][ combo ] + for combo in range( 0, len( macros.triggersIndexSorted[ trigger ][0][ sequence ] ) ): + triggerItemId = macros.triggersIndexSorted[ trigger ][0][ sequence ][ combo ] + + # Lookup triggerItem in ScanCodeStore + triggerItemObj = macros.scanCodeStore[ triggerItemId ] + triggerItem = triggerItemObj.offset( macros.interconnectOffset ) # TODO Add support for Analog keys # TODO Add support for LED states @@ -254,21 +263,32 @@ class Backend( BackendBase ): self.fill_dict['MaxScanCode'] = "#define MaxScanCode 0x{0:X}".format( macros.overallMaxScanCode ) + ## Interconnect ScanCode Offset List ## + self.fill_dict['ScanCodeInterconnectOffsetList'] = "const uint8_t InterconnectOffsetList[] = {\n" + for offset in range( 0, len( macros.interconnectOffset ) ): + self.fill_dict['ScanCodeInterconnectOffsetList'] += "\t0x{0:02X},\n".format( macros.interconnectOffset[ offset ] ) + self.fill_dict['ScanCodeInterconnectOffsetList'] += "};" + + + ## Max Interconnect Nodes ## + self.fill_dict['InterconnectNodeMax'] = "#define InterconnectNodeMax 0x{0:X}\n".format( len( macros.interconnectOffset ) ) + + ## Default Layer and Default Layer Scan Map ## self.fill_dict['DefaultLayerTriggerList'] = "" self.fill_dict['DefaultLayerScanMap'] = "const nat_ptr_t *default_scanMap[] = {\n" # Iterate over triggerList and generate a C trigger array for the default map and default map array - for triggerList in range( macros.firstScanCode[ 0 ], len( macros.triggerList[ 0 ] ) ): + for triggerList in range( macros.firstScanCode[0], len( macros.triggerList[0] ) ): # Generate ScanCode index and triggerList length - self.fill_dict['DefaultLayerTriggerList'] += "Define_TL( default, 0x{0:02X} ) = {{ {1}".format( triggerList, len( macros.triggerList[ 0 ][ triggerList ] ) ) + self.fill_dict['DefaultLayerTriggerList'] += "Define_TL( default, 0x{0:02X} ) = {{ {1}".format( triggerList, len( macros.triggerList[0][ triggerList ] ) ) # Add scanCode trigger list to Default Layer Scan Map self.fill_dict['DefaultLayerScanMap'] += "default_tl_0x{0:02X}, ".format( triggerList ) # Add each item of the trigger list - for trigger in macros.triggerList[ 0 ][ triggerList ]: - self.fill_dict['DefaultLayerTriggerList'] += ", {0}".format( trigger ) + for triggerItem in macros.triggerList[0][ triggerList ]: + self.fill_dict['DefaultLayerTriggerList'] += ", {0}".format( triggerItem ) self.fill_dict['DefaultLayerTriggerList'] += " };\n" self.fill_dict['DefaultLayerTriggerList'] = self.fill_dict['DefaultLayerTriggerList'][:-1] # Remove last newline