Update to drashna keymaps and userspace (#2876)
* Fix Unicode sample * Add irony mark * Remove unpretty keymaps * Add QMK DFU and Conditional Music Mode * Unicode fixes * Unicode fixes * Make layer indication more modular * Finish removing Faux Click * Cleanup of UserSpace and addition of 'update_tri_layer_state' function * Add modifier status indicators to Orthodox * Remove tri layer function * Minor tweaks * Remove the Orthodox's Indicator's reliance on layer_state_set * Add custom EEPROM settings * Make EEPROM config more efficient * Viterbi Config * Add Iris Keyboard layout and Userspace cleanup * Iris keyboard tweaks * Use Grave Escape on Iris * Update Readmes
This commit is contained in:
		
							parent
							
								
									9b8fc6f1c0
								
							
						
					
					
						commit
						e5540dd055
					
				
					 16 changed files with 623 additions and 268 deletions
				
			
		| 
						 | 
				
			
			@ -146,3 +146,31 @@ endif
 | 
			
		|||
```
 | 
			
		||||
 | 
			
		||||
Then, if you run `make keyboard:name NO_SECRETS=yes`, it will default to the test strings in your `<name>.c` file, rather than reading from your file. 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Userspace EEPROM config
 | 
			
		||||
-----------------------
 | 
			
		||||
 | 
			
		||||
This adds EEPROM support fo the userspace, so that certain values are configurable in such a way that persists when power is lost.  Namely, just the clicky feature and the Overwatch macro option ("is_overwatch").  This is done by reading and saving the structure from EEPROM. 
 | 
			
		||||
 | 
			
		||||
To implement this, first you need to specify the location:
 | 
			
		||||
 | 
			
		||||
```c
 | 
			
		||||
#define EECONFIG_USERSPACE (uint8_t *)20
 | 
			
		||||
```
 | 
			
		||||
This tells us where in the EEPROM that the data structure is located, and this specifies that it's a byte (8 bits).  However, to maximize it's usage, we want to specify a data structure here, so that we can use multiple settings.  To do that:
 | 
			
		||||
 | 
			
		||||
```c
 | 
			
		||||
typedef union {
 | 
			
		||||
  uint32_t raw;
 | 
			
		||||
  struct {
 | 
			
		||||
    bool     clicky_enable  :1;
 | 
			
		||||
    bool     is_overwatch   :1;
 | 
			
		||||
  };
 | 
			
		||||
} userspace_config_t;
 | 
			
		||||
```
 | 
			
		||||
Then, in your C file, you want to add: `userspace_config_t userspace_config;`, and in your `matrix_init_*` function, you want to add `userspace_config.raw = eeprom_read_byte(EECONFIG_USERSPACE);`
 | 
			
		||||
 | 
			
		||||
From there, you'd want to use the data structure (such as `userspace_config.is_overwatch`) when you want to check this value.  
 | 
			
		||||
 | 
			
		||||
And if you want to update it, update directly and then use `eeprom_update_byte(EECONFIG_USERSPACE, userspace_config.raw);` to write the value back to the EEPROM. 
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue