diff --git a/examples/md1Map.kll b/examples/md1Map.kll
index 901fccb..98ca5b8 100644
--- a/examples/md1Map.kll
+++ b/examples/md1Map.kll
@@ -8,8 +8,11 @@ Date = 2014-09-07;
# MOVE THIS SECTION to another file
-usbKeyOut => Output_usbCodeSend_capability( usbCode : 1 );
-layerState => Macro_layerState_capability( layer: 2, state : 1 );
+usbKeyOut => Output_usbCodeSend_capability( usbCode : 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
@@ -77,3 +80,10 @@ S0x3C : U"Function3"; # Right Blank Key 1
S0x3D : U"Function4"; # Right Blank Key 2
S0x3E : U"BackTick";
+# TODO MOVE
+# Function Layer Assignments
+U"Function1" : layerShift( 1 );
+U"Function2" : layerShift( 1 );
+U"Function3" : layerShift( 1 );
+U"Function4" : layerShift( 1 );
+
diff --git a/kll.py b/kll.py
index 7844b82..fc7b426 100755
--- a/kll.py
+++ b/kll.py
@@ -107,7 +107,7 @@ def processCommandLineArgs():
defaultFiles = args.default
partialFileSets = args.partial
if defaultFiles is None:
- partialFileSets = []
+ defaultFiles = []
if partialFileSets is None:
partialFileSets = [[]]
@@ -321,6 +321,21 @@ def oneLayerFlatten( items ):
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
# i.e. [ sequence, [ combo, [ range ] ] ] --> [ [ sequence, [ combo ] ],