Cut the memory consumption of PREVENT_STUCK_MODIFIERS in half
This commit is contained in:
		
							parent
							
								
									a5cdc3aab1
								
							
						
					
					
						commit
						b4f442dfea
					
				
					 4 changed files with 16 additions and 11 deletions
				
			
		|  | @ -55,7 +55,7 @@ void action_exec(keyevent_t event) | |||
| 
 | ||||
| #if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) | ||||
| bool disable_action_cache = false; | ||||
| action_t pressed_actions_cache[MATRIX_ROWS][MATRIX_COLS]; | ||||
| int8_t pressed_actions_cache[MATRIX_ROWS][MATRIX_COLS]; | ||||
| 
 | ||||
| void process_action_nocache(keyrecord_t *record) | ||||
| { | ||||
|  | @ -84,9 +84,9 @@ action_t store_or_get_action(bool pressed, keypos_t key) | |||
|     } | ||||
| 
 | ||||
|     if (pressed) { | ||||
|         pressed_actions_cache[key.row][key.col] = layer_switch_get_action(key); | ||||
|         pressed_actions_cache[key.row][key.col] = layer_switch_get_layer(key); | ||||
|     } | ||||
|     return pressed_actions_cache[key.row][key.col]; | ||||
|     return action_for_key(pressed_actions_cache[key.row][key.col], key); | ||||
| #else | ||||
|     return layer_switch_get_action(key); | ||||
| #endif | ||||
|  |  | |||
|  | @ -61,7 +61,7 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt); | |||
| /* Utilities for actions.  */ | ||||
| #if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) | ||||
| extern bool disable_action_cache; | ||||
| extern action_t pressed_actions_cache[MATRIX_ROWS][MATRIX_COLS]; | ||||
| extern int8_t pressed_actions_cache[MATRIX_ROWS][MATRIX_COLS]; | ||||
| #endif | ||||
| void process_action_nocache(keyrecord_t *record); | ||||
| void process_action(keyrecord_t *record); | ||||
|  |  | |||
|  | @ -111,8 +111,7 @@ void layer_debug(void) | |||
| #endif | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| action_t layer_switch_get_action(keypos_t key) | ||||
| int8_t layer_switch_get_layer(keypos_t key) | ||||
| { | ||||
|     action_t action; | ||||
|     action.code = ACTION_TRANSPARENT; | ||||
|  | @ -124,15 +123,18 @@ action_t layer_switch_get_action(keypos_t key) | |||
|         if (layers & (1UL<<i)) { | ||||
|             action = action_for_key(i, key); | ||||
|             if (action.code != ACTION_TRANSPARENT) { | ||||
|                 return action; | ||||
|                 return i; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     /* fall back to layer 0 */ | ||||
|     action = action_for_key(0, key); | ||||
|     return action; | ||||
|     return 0; | ||||
| #else | ||||
|     action = action_for_key(biton32(default_layer_state), key); | ||||
|     return action; | ||||
|     return biton32(default_layer_state); | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| action_t layer_switch_get_action(keypos_t key) | ||||
| { | ||||
|     return action_for_key(layer_switch_get_layer(key), key); | ||||
| } | ||||
|  |  | |||
|  | @ -71,6 +71,9 @@ void layer_xor(uint32_t state); | |||
| #endif | ||||
| 
 | ||||
| 
 | ||||
| /* return the topmost non-transparent layer currently associated with key */ | ||||
| int8_t layer_switch_get_layer(keypos_t key); | ||||
| 
 | ||||
| /* return action depending on current layer status */ | ||||
| action_t layer_switch_get_action(keypos_t key); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Wojciech Siewierski
						Wojciech Siewierski