changeset 380:5f085e29a66c

Fix Latching bug (introduced when fixing shift and lock recently) - Also conditionally refresh the lcd screen if enabled /w interconnect (Not the ideal way to update, but the only way with the current KLL version)
author Jacob Alexander <haata@kiibohd.com>
date Sun, 04 Oct 2015 16:19:20 -0700
parents a113d416950e
children fbe55b27dc02
files .gitignore Macro/PartialMap/macro.c
diffstat 2 files changed, 17 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/.gitignore	Tue Sep 29 20:21:29 2015 -0700
+++ b/.gitignore	Sun Oct 04 16:19:20 2015 -0700
@@ -41,6 +41,7 @@
 .Trashes
 ehthumbs.db
 Thumbs.db
+*.attr
 
 # Editor generated files #
 ##########################
--- a/Macro/PartialMap/macro.c	Tue Sep 29 20:21:29 2015 -0700
+++ b/Macro/PartialMap/macro.c	Sun Oct 04 16:19:20 2015 -0700
@@ -422,7 +422,22 @@
 		nat_ptr_t **map = (nat_ptr_t**)LayerIndex[ cachedLayer ].triggerMap;
 		const Layer *layer = &LayerIndex[ cachedLayer ];
 
-		return map[ scanCode - layer->first ];
+		// Cache trigger list before attempting to expire latch
+		nat_ptr_t *trigger_list = map[ scanCode - layer->first ];
+
+		// Check if latch has been pressed for this layer
+		uint8_t latch = LayerState[ cachedLayer ] & 0x02;
+		if ( latch && latch_expire )
+		{
+			Macro_layerState( 0, 0, cachedLayer, 0x02 );
+#if defined(ConnectEnabled_define) && defined(LCDEnabled_define)
+			// Evaluate the layerStack capability if available (LCD + Interconnect)
+			extern void LCD_layerStack_capability( uint8_t state, uint8_t stateType, uint8_t *args );
+			LCD_layerStack_capability( 0, 0, 0 );
+#endif
+		}
+
+		return trigger_list;
 	}
 
 	// If no trigger macro is defined at the given layer, fallthrough to the next layer