def make_scanCode( token ):
scanCode = int( token[1:], 0 )
# Check size, to make sure it's valid
- if scanCode > 0xFF:
- print ( "{0} ScanCode value {1} is larger than 255".format( ERROR, scanCode ) )
- raise
+ # XXX Add better check that takes symbolic names into account (i.e. U"Latch5")
+ #if scanCode > 0xFF:
+ # print ( "{0} ScanCode value {1} is larger than 255".format( ERROR, scanCode ) )
+ # raise
return scanCode
def make_hidCode( type, token ):
hidCode = int( token, 0 )
# Check size if a USB Code, to make sure it's valid
- if type == 'USBCode' and hidCode > 0xFF:
- print ( "{0} USBCode value {1} is larger than 255".format( ERROR, hidCode ) )
- raise
+ # XXX Add better check that takes symbolic names into account (i.e. U"Latch5")
+ #if type == 'USBCode' and hidCode > 0xFF:
+ # print ( "{0} USBCode value {1} is larger than 255".format( ERROR, hidCode ) )
+ # raise
# Return a tuple, identifying which type it is
if type == 'USBCode':
( ":", 0x01 ),
( "^", -0x10 ),
( "_", -0x18 ),
- ( "{}|", -0x1E ),
- ( "~", -0x20 ),
+ ( "{}|~", -0x1E ),
( "@", -0x32 ),
( "?", -0x38 ),
)
for sequence in range( 0, len( items[ variant ] ) ):
for combo in range( 0, len( items[ variant ][ sequence ] ) ):
if items[ variant ][ sequence ][ combo ][0] in backend.requiredCapabilities.keys():
- # Use backend capability name and a single argument
- items[ variant ][ sequence ][ combo ] = tuple(
- [ backend.capabilityLookup( items[ variant ][ sequence ][ combo ][0] ),
- tuple( [ hid_lookup_dictionary[ items[ variant ][ sequence ][ combo ] ] ] ) ]
- )
+ try:
+ # Use backend capability name and a single argument
+ items[ variant ][ sequence ][ combo ] = tuple(
+ [ backend.capabilityLookup( items[ variant ][ sequence ][ combo ][0] ),
+ tuple( [ hid_lookup_dictionary[ items[ variant ][ sequence ][ combo ] ] ] ) ]
+ )
+ except KeyError:
+ print ( "{0} {1} is an invalid HID lookup value".format( ERROR, items[ variant ][ sequence ][ combo ] ) )
+ sys.exit( 1 )
return items
+# Convert tuple of tuples to list of lists
+def listit( t ):
+ return list( map( listit, t ) ) if isinstance( t, ( list, tuple ) ) else t
+
+# Convert list of lists to tuple of tuples
+def tupleit( t ):
+ return tuple( map( tupleit, t ) ) if isinstance( t, ( tuple, list ) ) else t
+
+
## Evaluation Rules
def eval_scanCode( triggers, operator, results ):
triggers = tuple( tuple( tuple( sequence ) for sequence in variant ) for variant in triggers )
results = tuple( tuple( tuple( sequence ) for sequence in variant ) for variant in results )
+ # Lookup interconnect id (Current file scope)
+ # Default to 0 if not specified
+ if 'ConnectId' not in variables_dict.overallVariables.keys():
+ id_num = 0
+ else:
+ id_num = int( variables_dict.overallVariables['ConnectId'] )
+
# Iterate over all combinations of triggers and results
- for trigger in triggers:
+ for sequence in triggers:
+ # Convert tuple of tuples to list of lists so each element can be modified
+ trigger = listit( sequence )
+
+ # Create ScanCode entries for trigger
+ for seq_index, combo in enumerate( sequence ):
+ for com_index, scancode in enumerate( combo ):
+ trigger[ seq_index ][ com_index ] = macros_map.scanCodeStore.append( ScanCode( scancode, id_num ) )
+
+ # Convert back to a tuple of tuples
+ trigger = tupleit( trigger )
+
for result in results:
# Append Case
if operator == ":+":