Fixed multi-byte capability arguments.
- Little endian byte conversion required (has to do with struct assignment rather than architecture)
This commit is contained in:
parent
bbf2c3ffaf
commit
eb5bf66d71
@ -9,7 +9,10 @@ Date = 2014-09-07;
|
|||||||
|
|
||||||
# MOVE THIS SECTION to another file
|
# MOVE THIS SECTION to another file
|
||||||
usbKeyOut => Output_usbCodeSend_capability( usbCode : 1 );
|
usbKeyOut => Output_usbCodeSend_capability( usbCode : 1 );
|
||||||
layerState => Macro_layerState_capability( layer: 2, state : 1 );
|
layerState => Macro_layerState_capability( layer : 2, state : 1 );
|
||||||
|
layerLatch => Macro_layerLatch_capability( layer : 2 );
|
||||||
|
layerLock => Macro_layerLock_capability( layer : 2 );
|
||||||
|
layerShift => Macro_layerShift_capability( layer : 2 );
|
||||||
# END SECTION
|
# END SECTION
|
||||||
|
|
||||||
|
|
||||||
@ -77,3 +80,10 @@ S0x3C : U"Function3"; # Right Blank Key 1
|
|||||||
S0x3D : U"Function4"; # Right Blank Key 2
|
S0x3D : U"Function4"; # Right Blank Key 2
|
||||||
S0x3E : U"BackTick";
|
S0x3E : U"BackTick";
|
||||||
|
|
||||||
|
# TODO MOVE
|
||||||
|
# Function Layer Assignments
|
||||||
|
U"Function1" : layerShift( 1 );
|
||||||
|
U"Function2" : layerShift( 1 );
|
||||||
|
U"Function3" : layerShift( 1 );
|
||||||
|
U"Function4" : layerShift( 1 );
|
||||||
|
|
||||||
|
19
kll.py
19
kll.py
@ -107,7 +107,7 @@ def processCommandLineArgs():
|
|||||||
defaultFiles = args.default
|
defaultFiles = args.default
|
||||||
partialFileSets = args.partial
|
partialFileSets = args.partial
|
||||||
if defaultFiles is None:
|
if defaultFiles is None:
|
||||||
partialFileSets = []
|
defaultFiles = []
|
||||||
if partialFileSets is None:
|
if partialFileSets is None:
|
||||||
partialFileSets = [[]]
|
partialFileSets = [[]]
|
||||||
|
|
||||||
@ -321,6 +321,21 @@ def oneLayerFlatten( items ):
|
|||||||
|
|
||||||
return mainList
|
return mainList
|
||||||
|
|
||||||
|
# Capability arguments may need to be expanded (e.g. 1 16 bit argument needs to be 2 8 bit arguments for the state machine)
|
||||||
|
def capArgExpander( items ):
|
||||||
|
newArgs = []
|
||||||
|
# For each defined argument in the capability definition
|
||||||
|
for arg in range( 0, len( capabilities_dict[ items[0] ][1] ) ):
|
||||||
|
argLen = capabilities_dict[ items[0] ][1][ arg ][1]
|
||||||
|
num = items[1][ arg ]
|
||||||
|
byteForm = num.to_bytes( argLen, byteorder='little' ) # XXX Yes, little endian from how the uC structs work
|
||||||
|
|
||||||
|
# For each sub-argument, split into byte-sized chunks
|
||||||
|
for byte in range( 0, argLen ):
|
||||||
|
newArgs.append( byteForm[ byte ] )
|
||||||
|
|
||||||
|
return tuple( [ items[0], tuple( newArgs ) ] )
|
||||||
|
|
||||||
# Expand ranges of values in the 3rd dimension of the list, to a list of 2nd lists
|
# Expand ranges of values in the 3rd dimension of the list, to a list of 2nd lists
|
||||||
# i.e. [ sequence, [ combo, [ range ] ] ] --> [ [ sequence, [ combo ] ], <option 2>, <option 3> ]
|
# i.e. [ sequence, [ combo, [ range ] ] ] --> [ [ sequence, [ combo ] ], <option 2>, <option 3> ]
|
||||||
def optionExpansion( sequences ):
|
def optionExpansion( sequences ):
|
||||||
@ -478,7 +493,7 @@ usbCode_sequence = oneplus( ( usbCode_combo | seqString ) + skip( maybe( comm
|
|||||||
|
|
||||||
# Capabilities
|
# Capabilities
|
||||||
capFunc_arguments = many( number + skip( maybe( comma ) ) ) >> listToTuple
|
capFunc_arguments = many( number + skip( maybe( comma ) ) ) >> listToTuple
|
||||||
capFunc_elem = name + skip( parenthesis('(') ) + capFunc_arguments + skip( parenthesis(')') ) >> listElem
|
capFunc_elem = name + skip( parenthesis('(') ) + capFunc_arguments + skip( parenthesis(')') ) >> capArgExpander >> listElem
|
||||||
capFunc_combo = oneplus( ( usbCode_expanded | usbCode_elem | capFunc_elem ) + skip( maybe( plus ) ) ) >> listElem
|
capFunc_combo = oneplus( ( usbCode_expanded | usbCode_elem | capFunc_elem ) + skip( maybe( plus ) ) ) >> listElem
|
||||||
capFunc_sequence = oneplus( ( capFunc_combo | seqString ) + skip( maybe( comma ) ) ) >> oneLayerFlatten
|
capFunc_sequence = oneplus( ( capFunc_combo | seqString ) + skip( maybe( comma ) ) ) >> oneLayerFlatten
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user