X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=backends%2Fkiibohd.py;h=b29c465bb158832afb12fa92db9e421b10e91f08;hb=1454611c7b9b4b930566a8fbf1783c66924f142b;hp=47415a75a1f33b014c75b23692ae71b5c09a2153;hpb=81231a708e4a530c4877284ea13fbe2c3d120c99;p=kiibohd-kll.git diff --git a/backends/kiibohd.py b/backends/kiibohd.py index 47415a7..b29c465 100644 --- a/backends/kiibohd.py +++ b/backends/kiibohd.py @@ -65,8 +65,28 @@ class Backend: return "usbKeyOut"; + def layerInformation( self, name, date, author ): + self.fill_dict['Information'] += "// Name: {0}\n".format( "TODO" ) + self.fill_dict['Information'] += "// Version: {0}\n".format( "TODO" ) + self.fill_dict['Information'] += "// Date: {0}\n".format( "TODO" ) + self.fill_dict['Information'] += "// Author: {0}\n".format( "TODO" ) + + # Processes content for fill tags and does any needed dataset calculations def process( self, capabilities, macros ): + ## Information ## + # TODO + self.fill_dict['Information'] = "// This file was generated by the kll compiler, DO NOT EDIT.\n" + self.fill_dict['Information'] += "// Generation Date: {0}\n".format( "TODO" ) + self.fill_dict['Information'] += "// Compiler arguments: {0}\n".format( "TODO" ) + self.fill_dict['Information'] += "// KLL Backend: {0}\n".format( "TODO" ) + self.fill_dict['Information'] += "// KLL Git Rev: {0}\n".format( "TODO" ) + self.fill_dict['Information'] += "//\n" + self.fill_dict['Information'] += "// - Base Layer -\n" + self.fill_dict['Information'] += "// - Default Layer -\n" + self.fill_dict['Information'] += "// - Partial Layers -\n" + + ## Capabilities ## self.fill_dict['CapabilitiesList'] = "const Capability CapabilitiesList[] = {\n" @@ -109,7 +129,7 @@ class Backend: ## Result Macro List ## - self.fill_dict['ResultMacroList'] = "ResultMacro ResultMacroList[] = {\n" + self.fill_dict['ResultMacroList'] = "const ResultMacro ResultMacroList[] = {\n" # Iterate through each of the result macros for result in range( 0, len( macros.resultsIndexSorted ) ): @@ -117,6 +137,10 @@ class Backend: self.fill_dict['ResultMacroList'] += "};" + ## Result Macro Record ## + self.fill_dict['ResultMacroRecord'] = "ResultMacroRecord ResultMacroRecordList[ ResultMacroNum ];" + + ## Trigger Macros ## self.fill_dict['TriggerMacros'] = "" @@ -144,7 +168,7 @@ class Backend: ## Trigger Macro List ## - self.fill_dict['TriggerMacroList'] = "TriggerMacro TriggerMacroList[] = {\n" + self.fill_dict['TriggerMacroList'] = "const TriggerMacro TriggerMacroList[] = {\n" # Iterate through each of the trigger macros for trigger in range( 0, len( macros.triggersIndexSorted ) ): @@ -153,16 +177,20 @@ class Backend: self.fill_dict['TriggerMacroList'] += "};" + ## Trigger Macro Record ## + self.fill_dict['TriggerMacroRecord'] = "TriggerMacroRecord TriggerMacroRecordList[ TriggerMacroNum ];" + + ## Max Scan Code ## self.fill_dict['MaxScanCode'] = "#define MaxScanCode 0x{0:X}".format( macros.overallMaxScanCode ) ## Default Layer and Default Layer Scan Map ## self.fill_dict['DefaultLayerTriggerList'] = "" - self.fill_dict['DefaultLayerScanMap'] = "const unsigned int *default_scanMap[] = {\n" + 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( 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 ] ) ) @@ -178,36 +206,57 @@ class Backend: self.fill_dict['DefaultLayerScanMap'] = self.fill_dict['DefaultLayerScanMap'][:-2] # Remove last comma and space self.fill_dict['DefaultLayerScanMap'] += "\n};" - #print( self.fill_dict['DefaultLayerTriggerList'] ) - #print( self.fill_dict['DefaultLayerScanMap'] ) - - ## Partial Layers ## + ## Partial Layers and Partial Layer Scan Maps ## self.fill_dict['PartialLayerTriggerLists'] = "" - # TODO - #print( self.fill_dict['PartialLayerTriggerLists'] ) + self.fill_dict['PartialLayerScanMaps'] = "" + # Iterate over each of the layers, excluding the default layer + for layer in range( 1, len( macros.triggerList ) ): + # Prepare each layer + self.fill_dict['PartialLayerScanMaps'] += "// Partial Layer {0}\n".format( layer ) + self.fill_dict['PartialLayerScanMaps'] += "const nat_ptr_t *layer{0}_scanMap[] = {{\n".format( layer ) + self.fill_dict['PartialLayerTriggerLists'] += "// Partial Layer {0}\n".format( layer ) - ## Partial Layer Scan Maps ## - self.fill_dict['PartialLayerScanMaps'] = "" - # TODO - #print( self.fill_dict['PartialLayerScanMaps'] ) + # Iterate over triggerList and generate a C trigger array for the layer + for triggerList in range( macros.firstScanCode[ layer ], len( macros.triggerList[ layer ] ) ): + # Generate ScanCode index and triggerList length + self.fill_dict['PartialLayerTriggerLists'] += "Define_TL( layer{0}, 0x{1:02X} ) = {{ {2}".format( layer, triggerList, len( macros.triggerList[ layer ][ triggerList ] ) ) + + # Add scanCode trigger list to Default Layer Scan Map + self.fill_dict['PartialLayerScanMaps'] += "layer{0}_tl_0x{1:02X}, ".format( layer, triggerList ) + + # Add each item of the trigger list + for trigger in macros.triggerList[ layer ][ triggerList ]: + self.fill_dict['PartialLayerTriggerLists'] += ", {0}".format( trigger ) + + self.fill_dict['PartialLayerTriggerLists'] += " };\n" + self.fill_dict['PartialLayerTriggerLists'] += "\n" + self.fill_dict['PartialLayerScanMaps'] = self.fill_dict['PartialLayerScanMaps'][:-2] # Remove last comma and space + self.fill_dict['PartialLayerScanMaps'] += "\n};\n\n" + self.fill_dict['PartialLayerTriggerLists'] = self.fill_dict['PartialLayerTriggerLists'][:-2] # Remove last 2 newlines + self.fill_dict['PartialLayerScanMaps'] = self.fill_dict['PartialLayerScanMaps'][:-2] # Remove last 2 newlines ## Layer Index List ## - self.fill_dict['LayerIndexList'] = "Layer LayerIndex[] = {\n" + self.fill_dict['LayerIndexList'] = "const Layer LayerIndex[] = {\n" # Iterate over each layer, adding it to the list for layer in range( 0, len( macros.triggerList ) ): + # Lookup first scancode in map + firstScanCode = macros.firstScanCode[ layer ] + # Default map is a special case, always the first index + # TODO Fix names if layer == 0: - self.fill_dict['LayerIndexList'] += '\tLayer_IN( default_scanMap, "DefaultMap" ),\n' + self.fill_dict['LayerIndexList'] += '\tLayer_IN( default_scanMap, "DefaultMap", 0x{0:02X} ),\n'.format( firstScanCode ) else: - # TODO Partial Layer - pass + self.fill_dict['LayerIndexList'] += '\tLayer_IN( layer{0}_scanMap, "Layer {0}", 0x{1:02X} ),\n'.format( layer, firstScanCode ) self.fill_dict['LayerIndexList'] += "};" - #print( self.fill_dict['LayerIndexList'] ) + + ## Layer State ## + self.fill_dict['LayerState'] = "uint8_t LayerState[ LayerNum ];" # Generates the output keymap with fill tags filled