]> git.donarmstrong.com Git - kiibohd-kll.git/commitdiff
Adding support for "Soft Replace" kll 0.3c
authorJacob Alexander <haata@kiibohd.com>
Wed, 30 Sep 2015 07:04:30 +0000 (00:04 -0700)
committerJacob Alexander <haata@kiibohd.com>
Wed, 30 Sep 2015 07:04:30 +0000 (00:04 -0700)
- Updated both FuncMaps to use Soft Replace
- Only used for layers, default and base maps are not affected by soft replace (works like a normal replace)

.gitignore
kll.py
kll_lib/containers.py
layouts/lcdFuncMap.kll
layouts/stdFuncMap.kll

index fd284801e7fe6bbf68b5333a6b4742f9a835f50c..f87a4bab2f813906e6168690eecff96ea4ae9a83 100644 (file)
@@ -61,3 +61,7 @@ cmake_install.cmake
 __pycache__/
 *.py[cod]
 
 __pycache__/
 *.py[cod]
 
+# Dropbox #
+###########
+*.attr
+
diff --git a/kll.py b/kll.py
index e9ea19b6d26b4647f0829d6c63173610995240c6..07a822cd149ad876283ce94b3dda7389ca9ff0f8 100755 (executable)
--- a/kll.py
+++ b/kll.py
@@ -69,12 +69,12 @@ def checkFileExists( filename ):
 def processCommandLineArgs():
        # Setup argument processor
        pArgs = argparse.ArgumentParser(
 def processCommandLineArgs():
        # Setup argument processor
        pArgs = argparse.ArgumentParser(
-               usage="%(prog)s [options] <file1>...",
-               description="Generates .h file state tables and pointer indices from KLL .kll files.",
-               epilog="Example: {0} mykeyboard.kll -d colemak.kll -p hhkbpro2.kll -p symbols.kll".format( os.path.basename( sys.argv[0] ) ),
-               formatter_class=argparse.RawTextHelpFormatter,
-               add_help=False,
-)
+               usage="%(prog)s [options] <file1>...",
+               description="Generates .h file state tables and pointer indices from KLL .kll files.",
+               epilog="Example: {0} mykeyboard.kll -d colemak.kll -p hhkbpro2.kll -p symbols.kll".format( os.path.basename( sys.argv[0] ) ),
+               formatter_class=argparse.RawTextHelpFormatter,
+               add_help=False,
+       )
 
        # Positional Arguments
        pArgs.add_argument( 'files', type=str, nargs='+',
 
        # Positional Arguments
        pArgs.add_argument( 'files', type=str, nargs='+',
@@ -149,7 +149,7 @@ def tokenize( string ):
                ( 'CodeEnd',          ( r'\]', ) ),
                ( 'String',           ( r'"[^"]*"', VERBOSE ) ),
                ( 'SequenceString',   ( r"'[^']*'", ) ),
                ( 'CodeEnd',          ( r'\]', ) ),
                ( 'String',           ( r'"[^"]*"', VERBOSE ) ),
                ( 'SequenceString',   ( r"'[^']*'", ) ),
-               ( 'Operator',         ( r'=>|:\+|:-|:|=', ) ),
+               ( 'Operator',         ( r'=>|:\+|:-|::|:|=', ) ),
                ( 'Comma',            ( r',', ) ),
                ( 'Dash',             ( r'-', ) ),
                ( 'Plus',             ( r'\+', ) ),
                ( 'Comma',            ( r',', ) ),
                ( 'Dash',             ( r'-', ) ),
                ( 'Plus',             ( r'\+', ) ),
@@ -526,7 +526,8 @@ def eval_scanCode( triggers, operator, results ):
                                macros_map.removeScanCode( trigger, result )
 
                        # Replace Case
                                macros_map.removeScanCode( trigger, result )
 
                        # Replace Case
-                       elif operator == ":":
+                       # Soft Replace Case is the same for Scan Codes
+                       elif operator == ":" or operator == "::":
                                macros_map.replaceScanCode( trigger, result )
 
 def eval_usbCode( triggers, operator, results ):
                                macros_map.replaceScanCode( trigger, result )
 
 def eval_usbCode( triggers, operator, results ):
@@ -540,6 +541,10 @@ def eval_usbCode( triggers, operator, results ):
                scanCodes = macros_map.lookupUSBCodes( trigger )
                for scanCode in scanCodes:
                        for result in results:
                scanCodes = macros_map.lookupUSBCodes( trigger )
                for scanCode in scanCodes:
                        for result in results:
+                               # Soft Replace needs additional checking to see if replacement is necessary
+                               if operator == "::" and not macros_map.softReplaceCheck( scanCode ):
+                                       continue
+
                                # Cache assignment until file finishes processing
                                macros_map.cacheAssignment( operator, scanCode, result )
 
                                # Cache assignment until file finishes processing
                                macros_map.cacheAssignment( operator, scanCode, result )
 
@@ -657,7 +662,7 @@ capability_expression = name + skip( operator('=>') ) + name + skip( parenthesis
 define_expression = name + skip( operator('=>') ) + name + skip( eol ) >> set_define
 
 #| <trigger> : <result>;
 define_expression = name + skip( operator('=>') ) + name + skip( eol ) >> set_define
 
 #| <trigger> : <result>;
-operatorTriggerResult = operator(':') | operator(':+') | operator(':-')
+operatorTriggerResult = operator(':') | operator(':+') | operator(':-') | operator('::')
 scanCode_expression   = triggerCode_outerList + operatorTriggerResult + resultCode_outerList + skip( eol ) >> map_scanCode
 usbCode_expression    = triggerUSBCode_outerList + operatorTriggerResult + resultCode_outerList + skip( eol ) >> map_usbCode
 
 scanCode_expression   = triggerCode_outerList + operatorTriggerResult + resultCode_outerList + skip( eol ) >> map_scanCode
 usbCode_expression    = triggerUSBCode_outerList + operatorTriggerResult + resultCode_outerList + skip( eol ) >> map_usbCode
 
index 66aa2f26469492066709293e69108ec41d12bb05..814cd5cc044de8c4ef4b66fe22c0229130471598 100644 (file)
@@ -236,6 +236,19 @@ class Macros:
 
                return scanCodeList
 
 
                return scanCodeList
 
+       # Check whether we should do soft replacement
+       def softReplaceCheck( self, scanCode ):
+               # First check if not the default layer
+               if self.layer == 0:
+                       return True
+
+               # Check if current layer is set the same as the BaseMap
+               if not self.baseLayout is None and scanCode in self.layerLayoutMarkers[ self.layer ]:
+                       return False
+
+               # Otherwise, allow replacement
+               return True
+
        # Cache USBCode Assignment
        def cacheAssignment( self, operator, scanCode, result ):
                self.assignmentCache.append( [ operator, scanCode, result ] )
        # Cache USBCode Assignment
        def cacheAssignment( self, operator, scanCode, result ):
                self.assignmentCache.append( [ operator, scanCode, result ] )
@@ -254,7 +267,7 @@ class Macros:
                                self.removeScanCode( item[1], item[2] )
 
                        # Replace Case
                                self.removeScanCode( item[1], item[2] )
 
                        # Replace Case
-                       elif item[0] == ":":
+                       elif item[0] == ":" or item[0] == "::":
                                self.replaceScanCode( item[1], item[2] )
 
                # Clear assignment cache
                                self.replaceScanCode( item[1], item[2] )
 
                # Clear assignment cache
index 5b89b3e93334fc9b788820248140c0a996e94420..754a8b6f8ee539ac2cdc3839745f67604a583aa6 100644 (file)
@@ -1,68 +1,68 @@
 Name = lcdFuncMap;
 Name = lcdFuncMap;
-Version = 0.2;
+Version = 0.3;
 Author = "HaaTa (Jacob Alexander) 2015";
 KLL = 0.3c;
 
 # Modified Date
 Author = "HaaTa (Jacob Alexander) 2015";
 KLL = 0.3c;
 
 # Modified Date
-Date = 2015-09-24;
+Date = 2015-09-29;
 
 # Maps each Function key incrementally to each layer
 # Unused layers and functions are ignored
 
 
 # Maps each Function key incrementally to each layer
 # Unused layers and functions are ignored
 
-U"Function1" : layerShift( 1 ) + LCDLayerDisplay();
-U"Function2" : layerShift( 2 ) + LCDLayerDisplay();
-U"Function3" : layerShift( 3 ) + LCDLayerDisplay();
-U"Function4" : layerShift( 4 ) + LCDLayerDisplay();
-U"Function5" : layerShift( 5 ) + LCDLayerDisplay();
-U"Function6" : layerShift( 6 ) + LCDLayerDisplay();
-U"Function7" : layerShift( 7 ) + LCDLayerDisplay();
-U"Function8" : layerShift( 8 ) + LCDLayerDisplay();
-U"Function9" : layerShift( 9 ) + LCDLayerDisplay();
-U"Function10" : layerShift( 10 ) + LCDLayerDisplay();
-U"Function11" : layerShift( 11 ) + LCDLayerDisplay();
-U"Function12" : layerShift( 12 ) + LCDLayerDisplay();
-U"Function13" : layerShift( 13 ) + LCDLayerDisplay();
-U"Function14" : layerShift( 14 ) + LCDLayerDisplay();
-U"Function15" : layerShift( 15 ) + LCDLayerDisplay();
-U"Function16" : layerShift( 16 ) + LCDLayerDisplay();
+U"Function1" :: layerShift( 1 ) + LCDLayerDisplay();
+U"Function2" :: layerShift( 2 ) + LCDLayerDisplay();
+U"Function3" :: layerShift( 3 ) + LCDLayerDisplay();
+U"Function4" :: layerShift( 4 ) + LCDLayerDisplay();
+U"Function5" :: layerShift( 5 ) + LCDLayerDisplay();
+U"Function6" :: layerShift( 6 ) + LCDLayerDisplay();
+U"Function7" :: layerShift( 7 ) + LCDLayerDisplay();
+U"Function8" :: layerShift( 8 ) + LCDLayerDisplay();
+U"Function9" :: layerShift( 9 ) + LCDLayerDisplay();
+U"Function10" :: layerShift( 10 ) + LCDLayerDisplay();
+U"Function11" :: layerShift( 11 ) + LCDLayerDisplay();
+U"Function12" :: layerShift( 12 ) + LCDLayerDisplay();
+U"Function13" :: layerShift( 13 ) + LCDLayerDisplay();
+U"Function14" :: layerShift( 14 ) + LCDLayerDisplay();
+U"Function15" :: layerShift( 15 ) + LCDLayerDisplay();
+U"Function16" :: layerShift( 16 ) + LCDLayerDisplay();
 
 
-U"Lock1" : layerLock( 1 ) + LCDLayerDisplay();
-U"Lock2" : layerLock( 2 ) + LCDLayerDisplay();
-U"Lock3" : layerLock( 3 ) + LCDLayerDisplay();
-U"Lock4" : layerLock( 4 ) + LCDLayerDisplay();
-U"Lock5" : layerLock( 5 ) + LCDLayerDisplay();
-U"Lock6" : layerLock( 6 ) + LCDLayerDisplay();
-U"Lock7" : layerLock( 7 ) + LCDLayerDisplay();
-U"Lock8" : layerLock( 8 ) + LCDLayerDisplay();
-U"Lock9" : layerLock( 9 ) + LCDLayerDisplay();
-U"Lock10" : layerLock( 10 ) + LCDLayerDisplay();
-U"Lock11" : layerLock( 11 ) + LCDLayerDisplay();
-U"Lock12" : layerLock( 12 ) + LCDLayerDisplay();
-U"Lock13" : layerLock( 13 ) + LCDLayerDisplay();
-U"Lock14" : layerLock( 14 ) + LCDLayerDisplay();
-U"Lock15" : layerLock( 15 ) + LCDLayerDisplay();
-U"Lock16" : layerLock( 16 ) + LCDLayerDisplay();
+U"Lock1" :: layerLock( 1 ) + LCDLayerDisplay();
+U"Lock2" :: layerLock( 2 ) + LCDLayerDisplay();
+U"Lock3" :: layerLock( 3 ) + LCDLayerDisplay();
+U"Lock4" :: layerLock( 4 ) + LCDLayerDisplay();
+U"Lock5" :: layerLock( 5 ) + LCDLayerDisplay();
+U"Lock6" :: layerLock( 6 ) + LCDLayerDisplay();
+U"Lock7" :: layerLock( 7 ) + LCDLayerDisplay();
+U"Lock8" :: layerLock( 8 ) + LCDLayerDisplay();
+U"Lock9" :: layerLock( 9 ) + LCDLayerDisplay();
+U"Lock10" :: layerLock( 10 ) + LCDLayerDisplay();
+U"Lock11" :: layerLock( 11 ) + LCDLayerDisplay();
+U"Lock12" :: layerLock( 12 ) + LCDLayerDisplay();
+U"Lock13" :: layerLock( 13 ) + LCDLayerDisplay();
+U"Lock14" :: layerLock( 14 ) + LCDLayerDisplay();
+U"Lock15" :: layerLock( 15 ) + LCDLayerDisplay();
+U"Lock16" :: layerLock( 16 ) + LCDLayerDisplay();
 
 
-U"Latch1" : layerLatch( 1 ) + LCDLayerDisplay();
-U"Latch2" : layerLatch( 2 ) + LCDLayerDisplay();
-U"Latch3" : layerLatch( 3 ) + LCDLayerDisplay();
-U"Latch4" : layerLatch( 4 ) + LCDLayerDisplay();
-U"Latch5" : layerLatch( 5 ) + LCDLayerDisplay();
-U"Latch6" : layerLatch( 6 ) + LCDLayerDisplay();
-U"Latch7" : layerLatch( 7 ) + LCDLayerDisplay();
-U"Latch8" : layerLatch( 8 ) + LCDLayerDisplay();
-U"Latch9" : layerLatch( 9 ) + LCDLayerDisplay();
-U"Latch10" : layerLatch( 10 ) + LCDLayerDisplay();
-U"Latch11" : layerLatch( 11 ) + LCDLayerDisplay();
-U"Latch12" : layerLatch( 12 ) + LCDLayerDisplay();
-U"Latch13" : layerLatch( 13 ) + LCDLayerDisplay();
-U"Latch14" : layerLatch( 14 ) + LCDLayerDisplay();
-U"Latch15" : layerLatch( 15 ) + LCDLayerDisplay();
-U"Latch16" : layerLatch( 16 ) + LCDLayerDisplay();
+U"Latch1" :: layerLatch( 1 ) + LCDLayerDisplay();
+U"Latch2" :: layerLatch( 2 ) + LCDLayerDisplay();
+U"Latch3" :: layerLatch( 3 ) + LCDLayerDisplay();
+U"Latch4" :: layerLatch( 4 ) + LCDLayerDisplay();
+U"Latch5" :: layerLatch( 5 ) + LCDLayerDisplay();
+U"Latch6" :: layerLatch( 6 ) + LCDLayerDisplay();
+U"Latch7" :: layerLatch( 7 ) + LCDLayerDisplay();
+U"Latch8" :: layerLatch( 8 ) + LCDLayerDisplay();
+U"Latch9" :: layerLatch( 9 ) + LCDLayerDisplay();
+U"Latch10" :: layerLatch( 10 ) + LCDLayerDisplay();
+U"Latch11" :: layerLatch( 11 ) + LCDLayerDisplay();
+U"Latch12" :: layerLatch( 12 ) + LCDLayerDisplay();
+U"Latch13" :: layerLatch( 13 ) + LCDLayerDisplay();
+U"Latch14" :: layerLatch( 14 ) + LCDLayerDisplay();
+U"Latch15" :: layerLatch( 15 ) + LCDLayerDisplay();
+U"Latch16" :: layerLatch( 16 ) + LCDLayerDisplay();
 
 # Layer rotation
 
 # Layer rotation
-U"Next Layer" : layerRotate( 0 ) + LCDLayerDisplay(); # 0 is Next
-U"Prev Layer" : layerRotate( 1 ) + LCDLayerDisplay(); # 1 is Previous
+U"Next Layer" :: layerRotate( 0 ) + LCDLayerDisplay(); # 0 is Next
+U"Prev Layer" :: layerRotate( 1 ) + LCDLayerDisplay(); # 1 is Previous
 
 
 # Colours assigned to each of the LCD numbers
 
 
 # Colours assigned to each of the LCD numbers
index cba6fb01480989da279580e38f40a495cba3e422..e7af422a7fc34af8d8836612c40c55d436c30c4b 100644 (file)
@@ -1,66 +1,66 @@
 Name = stdFuncMap;
 Name = stdFuncMap;
-Version = 0.2;
+Version = 0.3;
 Author = "HaaTa (Jacob Alexander) 2014-2015";
 Author = "HaaTa (Jacob Alexander) 2014-2015";
-KLL = 0.3;
+KLL = 0.3c;
 
 # Modified Date
 
 # Modified Date
-Date = 2015-09-24;
+Date = 2015-09-29;
 
 # Maps each Function key incrementally to each layer
 # Unused layers and functions are ignored
 
 
 # Maps each Function key incrementally to each layer
 # Unused layers and functions are ignored
 
-U"Function1" : layerShift( 1 );
-U"Function2" : layerShift( 2 );
-U"Function3" : layerShift( 3 );
-U"Function4" : layerShift( 4 );
-U"Function5" : layerShift( 5 );
-U"Function6" : layerShift( 6 );
-U"Function7" : layerShift( 7 );
-U"Function8" : layerShift( 8 );
-U"Function9" : layerShift( 9 );
-U"Function10" : layerShift( 10 );
-U"Function11" : layerShift( 11 );
-U"Function12" : layerShift( 12 );
-U"Function13" : layerShift( 13 );
-U"Function14" : layerShift( 14 );
-U"Function15" : layerShift( 15 );
-U"Function16" : layerShift( 16 );
+U"Function1" :: layerShift( 1 );
+U"Function2" :: layerShift( 2 );
+U"Function3" :: layerShift( 3 );
+U"Function4" :: layerShift( 4 );
+U"Function5" :: layerShift( 5 );
+U"Function6" :: layerShift( 6 );
+U"Function7" :: layerShift( 7 );
+U"Function8" :: layerShift( 8 );
+U"Function9" :: layerShift( 9 );
+U"Function10" :: layerShift( 10 );
+U"Function11" :: layerShift( 11 );
+U"Function12" :: layerShift( 12 );
+U"Function13" :: layerShift( 13 );
+U"Function14" :: layerShift( 14 );
+U"Function15" :: layerShift( 15 );
+U"Function16" :: layerShift( 16 );
 
 
-U"Lock1" : layerLock( 1 );
-U"Lock2" : layerLock( 2 );
-U"Lock3" : layerLock( 3 );
-U"Lock4" : layerLock( 4 );
-U"Lock5" : layerLock( 5 );
-U"Lock6" : layerLock( 6 );
-U"Lock7" : layerLock( 7 );
-U"Lock8" : layerLock( 8 );
-U"Lock9" : layerLock( 9 );
-U"Lock10" : layerLock( 10 );
-U"Lock11" : layerLock( 11 );
-U"Lock12" : layerLock( 12 );
-U"Lock13" : layerLock( 13 );
-U"Lock14" : layerLock( 14 );
-U"Lock15" : layerLock( 15 );
-U"Lock16" : layerLock( 16 );
+U"Lock1" :: layerLock( 1 );
+U"Lock2" :: layerLock( 2 );
+U"Lock3" :: layerLock( 3 );
+U"Lock4" :: layerLock( 4 );
+U"Lock5" :: layerLock( 5 );
+U"Lock6" :: layerLock( 6 );
+U"Lock7" :: layerLock( 7 );
+U"Lock8" :: layerLock( 8 );
+U"Lock9" :: layerLock( 9 );
+U"Lock10" :: layerLock( 10 );
+U"Lock11" :: layerLock( 11 );
+U"Lock12" :: layerLock( 12 );
+U"Lock13" :: layerLock( 13 );
+U"Lock14" :: layerLock( 14 );
+U"Lock15" :: layerLock( 15 );
+U"Lock16" :: layerLock( 16 );
 
 
-U"Latch1" : layerLatch( 1 );
-U"Latch2" : layerLatch( 2 );
-U"Latch3" : layerLatch( 3 );
-U"Latch4" : layerLatch( 4 );
-U"Latch5" : layerLatch( 5 );
-U"Latch6" : layerLatch( 6 );
-U"Latch7" : layerLatch( 7 );
-U"Latch8" : layerLatch( 8 );
-U"Latch9" : layerLatch( 9 );
-U"Latch10" : layerLatch( 10 );
-U"Latch11" : layerLatch( 11 );
-U"Latch12" : layerLatch( 12 );
-U"Latch13" : layerLatch( 13 );
-U"Latch14" : layerLatch( 14 );
-U"Latch15" : layerLatch( 15 );
-U"Latch16" : layerLatch( 16 );
+U"Latch1" :: layerLatch( 1 );
+U"Latch2" :: layerLatch( 2 );
+U"Latch3" :: layerLatch( 3 );
+U"Latch4" :: layerLatch( 4 );
+U"Latch5" :: layerLatch( 5 );
+U"Latch6" :: layerLatch( 6 );
+U"Latch7" :: layerLatch( 7 );
+U"Latch8" :: layerLatch( 8 );
+U"Latch9" :: layerLatch( 9 );
+U"Latch10" :: layerLatch( 10 );
+U"Latch11" :: layerLatch( 11 );
+U"Latch12" :: layerLatch( 12 );
+U"Latch13" :: layerLatch( 13 );
+U"Latch14" :: layerLatch( 14 );
+U"Latch15" :: layerLatch( 15 );
+U"Latch16" :: layerLatch( 16 );
 
 # Layer rotation
 
 # Layer rotation
-U"Next Layer" : layerRotate( 0 ); # 0 is Next
-U"Prev Layer" : layerRotate( 1 ); # 1 is Previous
+U"Next Layer" :: layerRotate( 0 ); # 0 is Next
+U"Prev Layer" :: layerRotate( 1 ); # 1 is Previous