]> git.donarmstrong.com Git - kiibohd-kll.git/blobdiff - backends/kiibohd.py
Adding support for multi-line defines
[kiibohd-kll.git] / backends / kiibohd.py
index 44daad8fc07ddf4699c4e037988fa96486d384dc..9f47150451cb706fae115ac54f31be92d83e190f 100644 (file)
@@ -123,7 +123,7 @@ 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 ) )
 
@@ -168,16 +168,23 @@ class Backend( BackendBase ):
 
                                        # Add each of the arguments of the capability
                                        for arg in range( 0, len( resultItem[1] ) ):
-                                               # If this is a CONSUMER_ element, needs to be split into 2 elements
-                                               if isinstance( resultItem[1][ arg ], str ) and re.match( '^CONSUMER_', resultItem[1][ arg ] ):
-                                                       tag = resultItem[1][ arg ].split( '_', 1 )[1]
-                                                       if '_' in tag:
-                                                               tag = tag.replace( '_', '' )
-                                                       lookupNum = kll_hid_lookup_dictionary['ConsCode'][ tag ][1]
-                                                       byteForm = lookupNum.to_bytes( 2, byteorder='little' ) # XXX Yes, little endian from how the uC structs work
-                                                       self.fill_dict['ResultMacros'] += "{0}, {1}, ".format( *byteForm )
-                                               else:
-                                                       self.fill_dict['ResultMacros'] += "{0}, ".format( resultItem[1][ arg ] )
+                                               # Special cases
+                                               if isinstance( resultItem[1][ arg ], str ):
+                                                       # If this is a CONSUMER_ element, needs to be split into 2 elements
+                                                       if re.match( '^CONSUMER_', resultItem[1][ arg ] ):
+                                                               tag = resultItem[1][ arg ].split( '_', 1 )[1]
+                                                               if '_' in tag:
+                                                                       tag = tag.replace( '_', '' )
+                                                               lookupNum = kll_hid_lookup_dictionary['ConsCode'][ tag ][1]
+                                                               byteForm = lookupNum.to_bytes( 2, byteorder='little' ) # XXX Yes, little endian from how the uC structs work
+                                                               self.fill_dict['ResultMacros'] += "{0}, {1}, ".format( *byteForm )
+                                                               continue
+
+                                                       # None, fall-through disable
+                                                       elif resultItem[0] is self.capabilityLookup('NONE'):
+                                                               continue
+
+                                               self.fill_dict['ResultMacros'] += "{0}, ".format( resultItem[1][ arg ] )
 
                        # If sequence is longer than 1, append a sequence spacer at the end of the sequence
                        # Required by USB to end at sequence without holding the key down