+// Modifies the specified Layer control byte
+// Argument #1: Layer Index -> uint16_t
+// Argument #2: Layer State -> uint8_t
+void Macro_layerState_capability( uint8_t state, uint8_t stateType, uint8_t *args )
+{
+ // Display capability name
+ if ( stateType == 0xFF && state == 0xFF )
+ {
+ print("Macro_layerState(layerIndex,layerState)");
+ return;
+ }
+
+ // Get layer index from arguments
+ // Cast pointer to uint8_t to unsigned int then access that memory location
+ uint16_t layer = *(uint16_t*)(&args[0]);
+
+ // Get layer toggle byte
+ uint8_t layerState = args[ sizeof(uint16_t) ];
+
+ Macro_layerState( state, stateType, layer, layerState );
+}
+
+
+// Latches given layer
+// Argument #1: Layer Index -> uint16_t
+void Macro_layerLatch_capability( uint8_t state, uint8_t stateType, uint8_t *args )
+{
+ // Display capability name
+ if ( stateType == 0xFF && state == 0xFF )
+ {
+ print("Macro_layerLatch(layerIndex)");
+ return;
+ }
+
+ // Get layer index from arguments
+ // Cast pointer to uint8_t to unsigned int then access that memory location
+ uint16_t layer = *(uint16_t*)(&args[0]);
+
+ Macro_layerState( state, stateType, layer, 0x02 );
+}
+
+
+// Locks given layer
+// Argument #1: Layer Index -> uint16_t
+void Macro_layerLock_capability( uint8_t state, uint8_t stateType, uint8_t *args )
+{
+ // Display capability name
+ if ( stateType == 0xFF && state == 0xFF )
+ {
+ print("Macro_layerLock(layerIndex)");
+ return;
+ }
+
+ // Get layer index from arguments
+ // Cast pointer to uint8_t to unsigned int then access that memory location
+ uint16_t layer = *(uint16_t*)(&args[0]);
+
+ Macro_layerState( state, stateType, layer, 0x04 );
+}
+
+
+// Shifts given layer
+// Argument #1: Layer Index -> uint16_t
+void Macro_layerShift_capability( uint8_t state, uint8_t stateType, uint8_t *args )
+{
+ // Display capability name
+ if ( stateType == 0xFF && state == 0xFF )
+ {
+ print("Macro_layerShift(layerIndex)");
+ return;
+ }
+
+ // Get layer index from arguments
+ // Cast pointer to uint8_t to unsigned int then access that memory location
+ uint16_t layer = *(uint16_t*)(&args[0]);
+
+ Macro_layerState( state, stateType, layer, 0x01 );
+}
+