Kishsaver is fully working with DPH!
- More keyboard layouts and enhancements to come :D
This commit is contained in:
		
							parent
							
								
									e444f96158
								
							
						
					
					
						commit
						366f6c9276
					
				
					 3 changed files with 45 additions and 21 deletions
				
			
		| 
						 | 
				
			
			@ -79,10 +79,45 @@ inline void Macro_bufferAdd( uint8_t byte )
 | 
			
		|||
	// Default function for adding keys to the KeyIndex_Buffer, does a DefaultMap_Lookup
 | 
			
		||||
	if ( KeyIndex_BufferUsed < KEYBOARD_BUFFER )
 | 
			
		||||
	{
 | 
			
		||||
		KeyIndex_Buffer[KeyIndex_BufferUsed++] = DefaultMap_Lookup[byte];
 | 
			
		||||
		uint8_t key = DefaultMap_Lookup[byte];
 | 
			
		||||
		for ( uint8_t c = 0; c < KeyIndex_BufferUsed; c++ )
 | 
			
		||||
		{
 | 
			
		||||
			// Key already in the buffer
 | 
			
		||||
			if ( KeyIndex_Buffer[c] == key )
 | 
			
		||||
				return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Add to the buffer
 | 
			
		||||
		KeyIndex_Buffer[KeyIndex_BufferUsed++] = key;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline void Macro_bufferRemove( uint8_t byte )
 | 
			
		||||
{
 | 
			
		||||
	uint8_t key = DefaultMap_Lookup[byte];
 | 
			
		||||
 | 
			
		||||
	// Check for the released key, and shift the other keys lower on the buffer
 | 
			
		||||
	for ( uint8_t c = 0; c < KeyIndex_BufferUsed; c++ )
 | 
			
		||||
	{
 | 
			
		||||
		// Key to release found
 | 
			
		||||
		if ( KeyIndex_Buffer[c] == key )
 | 
			
		||||
		{
 | 
			
		||||
			// Shift keys from c position
 | 
			
		||||
			for ( uint8_t k = c; k < KeyIndex_BufferUsed - 1; k++ )
 | 
			
		||||
				KeyIndex_Buffer[k] = KeyIndex_Buffer[k + 1];
 | 
			
		||||
 | 
			
		||||
			// Decrement Buffer
 | 
			
		||||
			KeyIndex_BufferUsed--;
 | 
			
		||||
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Error case (no key to release)
 | 
			
		||||
	erro_msg("Could not find key to release: ");
 | 
			
		||||
	printHex( key );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline void Macro_finishWithUSBBuffer( uint8_t sentKeys )
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -96,11 +131,13 @@ inline void Macro_process()
 | 
			
		|||
	// Loop through input buffer
 | 
			
		||||
	for ( uint8_t index = 0; index < KeyIndex_BufferUsed; index++ )
 | 
			
		||||
	{
 | 
			
		||||
		//print(" KEYS: ");
 | 
			
		||||
		//printInt8( KeyIndex_BufferUsed );
 | 
			
		||||
		// Get the keycode from the buffer
 | 
			
		||||
		uint8_t key = KeyIndex_Buffer[index];
 | 
			
		||||
 | 
			
		||||
		// Set the modifier bit if this key is a modifier
 | 
			
		||||
		if ( key & KEY_LCTRL ) // AND with 0xE0
 | 
			
		||||
		if ( (key & KEY_LCTRL) == KEY_LCTRL ) // AND with 0xE0
 | 
			
		||||
		{
 | 
			
		||||
			USBKeys_Modifiers |= 1 << (key ^ KEY_LCTRL); // Left shift 1 by key XOR 0xE0
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,6 +40,7 @@
 | 
			
		|||
// ----- Functions -----
 | 
			
		||||
 | 
			
		||||
void Macro_bufferAdd( uint8_t byte );
 | 
			
		||||
void Macro_bufferRemove( uint8_t byte );
 | 
			
		||||
void Macro_finishWithUSBBuffer( uint8_t sentKeys );
 | 
			
		||||
void Macro_process();
 | 
			
		||||
void Macro_setup();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue