process_unicode: Use uint32_t for UCIS purposes
Use a single uint32_t to store the unicode of a symbol, instead of an array of uint16_ts. Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
This commit is contained in:
		
							parent
							
								
									234dd276cf
								
							
						
					
					
						commit
						a312cbf712
					
				| @ -60,6 +60,14 @@ void register_hex(uint16_t hex) { | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| void register_hex32(uint32_t hex) { | ||||
|   for(int i = 7; i >= 0; i--) { | ||||
|     uint8_t digit = ((hex >> (i*8)) & 0xF); | ||||
|     register_code(hex_to_keycode(digit)); | ||||
|     unregister_code(hex_to_keycode(digit)); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| bool process_unicode(uint16_t keycode, keyrecord_t *record) { | ||||
|   if (keycode > QK_UNICODE && record->event.pressed) { | ||||
|     uint16_t unicode = keycode & 0x7FFF; | ||||
| @ -156,9 +164,7 @@ bool process_ucis (uint16_t keycode, keyrecord_t *record) { | ||||
|     for (i = 0; ucis_symbol_table[i].symbol; i++) { | ||||
|       if (is_uni_seq (ucis_symbol_table[i].symbol)) { | ||||
|         symbol_found = true; | ||||
|         for (uint8_t j = 0; ucis_symbol_table[i].codes[j]; j++) { | ||||
|           register_hex(ucis_symbol_table[i].codes[j]); | ||||
|         } | ||||
|         register_hex32(ucis_symbol_table[i].code); | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|  | ||||
| @ -12,6 +12,7 @@ void set_unicode_input_mode(uint8_t os_target); | ||||
| void unicode_input_start(void); | ||||
| void unicode_input_finish(void); | ||||
| void register_hex(uint16_t hex); | ||||
| void register_hex32(uint32_t hex); | ||||
| 
 | ||||
| bool process_unicode(uint16_t keycode, keyrecord_t *record); | ||||
| 
 | ||||
| @ -22,7 +23,7 @@ bool process_unicode(uint16_t keycode, keyrecord_t *record); | ||||
| 
 | ||||
| typedef struct { | ||||
|   char *symbol; | ||||
|   uint16_t codes[4]; | ||||
|   uint32_t code; | ||||
| } qk_ucis_symbol_t; | ||||
| 
 | ||||
| struct { | ||||
| @ -31,8 +32,8 @@ struct { | ||||
|   bool in_progress:1; | ||||
| } qk_ucis_state; | ||||
| 
 | ||||
| #define UCIS_TABLE(...) {__VA_ARGS__, {NULL, {}}} | ||||
| #define UCIS_SYM(name, ...) {name, {__VA_ARGS__, 0}} | ||||
| #define UCIS_TABLE(...) {__VA_ARGS__, {NULL, 0}} | ||||
| #define UCIS_SYM(name, code) {name, code} | ||||
| 
 | ||||
| extern const qk_ucis_symbol_t ucis_symbol_table[]; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user