add unicode common file, get names right
This commit is contained in:
		
							parent
							
								
									cbabb4d417
								
							
						
					
					
						commit
						09add35e7f
					
				
					 7 changed files with 137 additions and 209 deletions
				
			
		| 
						 | 
				
			
			@ -2,6 +2,7 @@
 | 
			
		|||
#define PROCESS_UCIS_H
 | 
			
		||||
 | 
			
		||||
#include "quantum.h"
 | 
			
		||||
#include "process_unicode_common.h"
 | 
			
		||||
 | 
			
		||||
#ifndef UCIS_MAX_SYMBOL_LENGTH
 | 
			
		||||
#define UCIS_MAX_SYMBOL_LENGTH 32
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,91 +1,6 @@
 | 
			
		|||
#include "process_unicode.h"
 | 
			
		||||
#include "action_util.h"
 | 
			
		||||
 | 
			
		||||
static uint8_t input_mode;
 | 
			
		||||
uint8_t mods;
 | 
			
		||||
 | 
			
		||||
void set_unicode_input_mode(uint8_t os_target)
 | 
			
		||||
{
 | 
			
		||||
  input_mode = os_target;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t get_unicode_input_mode(void) {
 | 
			
		||||
  return input_mode;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
__attribute__((weak))
 | 
			
		||||
void unicode_input_start (void) {
 | 
			
		||||
  // save current mods
 | 
			
		||||
  mods = keyboard_report->mods;
 | 
			
		||||
 | 
			
		||||
  // unregister all mods to start from clean state
 | 
			
		||||
  if (mods & MOD_BIT(KC_LSFT)) unregister_code(KC_LSFT);
 | 
			
		||||
  if (mods & MOD_BIT(KC_RSFT)) unregister_code(KC_RSFT);
 | 
			
		||||
  if (mods & MOD_BIT(KC_LCTL)) unregister_code(KC_LCTL);
 | 
			
		||||
  if (mods & MOD_BIT(KC_RCTL)) unregister_code(KC_RCTL);
 | 
			
		||||
  if (mods & MOD_BIT(KC_LALT)) unregister_code(KC_LALT);
 | 
			
		||||
  if (mods & MOD_BIT(KC_RALT)) unregister_code(KC_RALT);
 | 
			
		||||
  if (mods & MOD_BIT(KC_LGUI)) unregister_code(KC_LGUI);
 | 
			
		||||
  if (mods & MOD_BIT(KC_RGUI)) unregister_code(KC_RGUI);
 | 
			
		||||
 | 
			
		||||
  switch(input_mode) {
 | 
			
		||||
  case UC_OSX:
 | 
			
		||||
    register_code(KC_LALT);
 | 
			
		||||
    break;
 | 
			
		||||
  case UC_LNX:
 | 
			
		||||
    register_code(KC_LCTL);
 | 
			
		||||
    register_code(KC_LSFT);
 | 
			
		||||
    register_code(KC_U);
 | 
			
		||||
    unregister_code(KC_U);
 | 
			
		||||
    unregister_code(KC_LSFT);
 | 
			
		||||
    unregister_code(KC_LCTL);
 | 
			
		||||
    break;
 | 
			
		||||
  case UC_WIN:
 | 
			
		||||
    register_code(KC_LALT);
 | 
			
		||||
    register_code(KC_PPLS);
 | 
			
		||||
    unregister_code(KC_PPLS);
 | 
			
		||||
    break;
 | 
			
		||||
  case UC_WINC:
 | 
			
		||||
    register_code(KC_RALT);
 | 
			
		||||
    unregister_code(KC_RALT);
 | 
			
		||||
    register_code(KC_U);
 | 
			
		||||
    unregister_code(KC_U);
 | 
			
		||||
  }
 | 
			
		||||
  wait_ms(UNICODE_TYPE_DELAY);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
__attribute__((weak))
 | 
			
		||||
void unicode_input_finish (void) {
 | 
			
		||||
  switch(input_mode) {
 | 
			
		||||
    case UC_OSX:
 | 
			
		||||
    case UC_WIN:
 | 
			
		||||
      unregister_code(KC_LALT);
 | 
			
		||||
      break;
 | 
			
		||||
    case UC_LNX:
 | 
			
		||||
      register_code(KC_SPC);
 | 
			
		||||
      unregister_code(KC_SPC);
 | 
			
		||||
      break;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // reregister previously set mods
 | 
			
		||||
  if (mods & MOD_BIT(KC_LSFT)) register_code(KC_LSFT);
 | 
			
		||||
  if (mods & MOD_BIT(KC_RSFT)) register_code(KC_RSFT);
 | 
			
		||||
  if (mods & MOD_BIT(KC_LCTL)) register_code(KC_LCTL);
 | 
			
		||||
  if (mods & MOD_BIT(KC_RCTL)) register_code(KC_RCTL);
 | 
			
		||||
  if (mods & MOD_BIT(KC_LALT)) register_code(KC_LALT);
 | 
			
		||||
  if (mods & MOD_BIT(KC_RALT)) register_code(KC_RALT);
 | 
			
		||||
  if (mods & MOD_BIT(KC_LGUI)) register_code(KC_LGUI);
 | 
			
		||||
  if (mods & MOD_BIT(KC_RGUI)) register_code(KC_RGUI);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void register_hex(uint16_t hex) {
 | 
			
		||||
  for(int i = 3; i >= 0; i--) {
 | 
			
		||||
    uint8_t digit = ((hex >> (i*4)) & 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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,130 +2,8 @@
 | 
			
		|||
#define PROCESS_UNICODE_H
 | 
			
		||||
 | 
			
		||||
#include "quantum.h"
 | 
			
		||||
 | 
			
		||||
#define UC_OSX 0  // Mac OS X
 | 
			
		||||
#define UC_LNX 1  // Linux
 | 
			
		||||
#define UC_WIN 2  // Windows 'HexNumpad'
 | 
			
		||||
#define UC_BSD 3  // BSD (not implemented)
 | 
			
		||||
#define UC_WINC 4 // WinCompose https://github.com/samhocevar/wincompose
 | 
			
		||||
 | 
			
		||||
#ifndef UNICODE_TYPE_DELAY
 | 
			
		||||
#define UNICODE_TYPE_DELAY 10
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void set_unicode_input_mode(uint8_t os_target);
 | 
			
		||||
uint8_t get_unicode_input_mode(void);
 | 
			
		||||
void unicode_input_start(void);
 | 
			
		||||
void unicode_input_finish(void);
 | 
			
		||||
void register_hex(uint16_t hex);
 | 
			
		||||
#include "process_unicode_common.h"
 | 
			
		||||
 | 
			
		||||
bool process_unicode(uint16_t keycode, keyrecord_t *record);
 | 
			
		||||
 | 
			
		||||
#define UC_BSPC	UC(0x0008)
 | 
			
		||||
 | 
			
		||||
#define UC_SPC	UC(0x0020)
 | 
			
		||||
 | 
			
		||||
#define UC_EXLM	UC(0x0021)
 | 
			
		||||
#define UC_DQUT	UC(0x0022)
 | 
			
		||||
#define UC_HASH	UC(0x0023)
 | 
			
		||||
#define UC_DLR	UC(0x0024)
 | 
			
		||||
#define UC_PERC	UC(0x0025)
 | 
			
		||||
#define UC_AMPR	UC(0x0026)
 | 
			
		||||
#define UC_QUOT	UC(0x0027)
 | 
			
		||||
#define UC_LPRN	UC(0x0028)
 | 
			
		||||
#define UC_RPRN	UC(0x0029)
 | 
			
		||||
#define UC_ASTR	UC(0x002A)
 | 
			
		||||
#define UC_PLUS	UC(0x002B)
 | 
			
		||||
#define UC_COMM	UC(0x002C)
 | 
			
		||||
#define UC_DASH	UC(0x002D)
 | 
			
		||||
#define UC_DOT	UC(0x002E)
 | 
			
		||||
#define UC_SLSH	UC(0x002F)
 | 
			
		||||
 | 
			
		||||
#define UC_0	UC(0x0030)
 | 
			
		||||
#define UC_1	UC(0x0031)
 | 
			
		||||
#define UC_2	UC(0x0032)
 | 
			
		||||
#define UC_3	UC(0x0033)
 | 
			
		||||
#define UC_4	UC(0x0034)
 | 
			
		||||
#define UC_5	UC(0x0035)
 | 
			
		||||
#define UC_6	UC(0x0036)
 | 
			
		||||
#define UC_7	UC(0x0037)
 | 
			
		||||
#define UC_8	UC(0x0038)
 | 
			
		||||
#define UC_9	UC(0x0039)
 | 
			
		||||
 | 
			
		||||
#define UC_COLN UC(0x003A)
 | 
			
		||||
#define UC_SCLN UC(0x003B)
 | 
			
		||||
#define UC_LT	UC(0x003C)
 | 
			
		||||
#define UC_EQL	UC(0x003D)
 | 
			
		||||
#define UC_GT	UC(0x003E)
 | 
			
		||||
#define UC_QUES	UC(0x003F)
 | 
			
		||||
#define UC_AT 	UC(0x0040)
 | 
			
		||||
 | 
			
		||||
#define UC_A 	UC(0x0041)
 | 
			
		||||
#define UC_B 	UC(0x0042)
 | 
			
		||||
#define UC_C 	UC(0x0043)
 | 
			
		||||
#define UC_D 	UC(0x0044)
 | 
			
		||||
#define UC_E 	UC(0x0045)
 | 
			
		||||
#define UC_F 	UC(0x0046)
 | 
			
		||||
#define UC_G 	UC(0x0047)
 | 
			
		||||
#define UC_H 	UC(0x0048)
 | 
			
		||||
#define UC_I 	UC(0x0049)
 | 
			
		||||
#define UC_J 	UC(0x004A)
 | 
			
		||||
#define UC_K 	UC(0x004B)
 | 
			
		||||
#define UC_L 	UC(0x004C)
 | 
			
		||||
#define UC_M 	UC(0x004D)
 | 
			
		||||
#define UC_N 	UC(0x004E)
 | 
			
		||||
#define UC_O 	UC(0x004F)
 | 
			
		||||
#define UC_P 	UC(0x0050)
 | 
			
		||||
#define UC_Q 	UC(0x0051)
 | 
			
		||||
#define UC_R 	UC(0x0052)
 | 
			
		||||
#define UC_S 	UC(0x0053)
 | 
			
		||||
#define UC_T 	UC(0x0054)
 | 
			
		||||
#define UC_U 	UC(0x0055)
 | 
			
		||||
#define UC_V 	UC(0x0056)
 | 
			
		||||
#define UC_W 	UC(0x0057)
 | 
			
		||||
#define UC_X 	UC(0x0058)
 | 
			
		||||
#define UC_Y 	UC(0x0059)
 | 
			
		||||
#define UC_Z 	UC(0x005A)
 | 
			
		||||
 | 
			
		||||
#define UC_LBRC	UC(0x005B)
 | 
			
		||||
#define UC_BSLS	UC(0x005C)
 | 
			
		||||
#define UC_RBRC	UC(0x005D)
 | 
			
		||||
#define UC_CIRM	UC(0x005E)
 | 
			
		||||
#define UC_UNDR	UC(0x005F)
 | 
			
		||||
 | 
			
		||||
#define UC_GRV 	UC(0x0060)
 | 
			
		||||
 | 
			
		||||
#define UC_a 	UC(0x0061)
 | 
			
		||||
#define UC_b 	UC(0x0062)
 | 
			
		||||
#define UC_c 	UC(0x0063)
 | 
			
		||||
#define UC_d 	UC(0x0064)
 | 
			
		||||
#define UC_e 	UC(0x0065)
 | 
			
		||||
#define UC_f 	UC(0x0066)
 | 
			
		||||
#define UC_g 	UC(0x0067)
 | 
			
		||||
#define UC_h 	UC(0x0068)
 | 
			
		||||
#define UC_i 	UC(0x0069)
 | 
			
		||||
#define UC_j 	UC(0x006A)
 | 
			
		||||
#define UC_k 	UC(0x006B)
 | 
			
		||||
#define UC_l 	UC(0x006C)
 | 
			
		||||
#define UC_m 	UC(0x006D)
 | 
			
		||||
#define UC_n 	UC(0x006E)
 | 
			
		||||
#define UC_o 	UC(0x006F)
 | 
			
		||||
#define UC_p 	UC(0x0070)
 | 
			
		||||
#define UC_q 	UC(0x0071)
 | 
			
		||||
#define UC_r 	UC(0x0072)
 | 
			
		||||
#define UC_s 	UC(0x0073)
 | 
			
		||||
#define UC_t 	UC(0x0074)
 | 
			
		||||
#define UC_u 	UC(0x0075)
 | 
			
		||||
#define UC_v 	UC(0x0076)
 | 
			
		||||
#define UC_w 	UC(0x0077)
 | 
			
		||||
#define UC_x 	UC(0x0078)
 | 
			
		||||
#define UC_y 	UC(0x0079)
 | 
			
		||||
#define UC_z 	UC(0x007A)
 | 
			
		||||
 | 
			
		||||
#define UC_LCBR	UC(0x007B)
 | 
			
		||||
#define UC_PIPE	UC(0x007C)
 | 
			
		||||
#define UC_RCBR	UC(0x007D)
 | 
			
		||||
#define UC_TILD	UC(0x007E)
 | 
			
		||||
#define UC_DEL	UC(0x007F)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										130
									
								
								quantum/process_keycode/process_unicode_common.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								quantum/process_keycode/process_unicode_common.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,130 @@
 | 
			
		|||
#ifndef PROCESS_UNICODE_COMMON_H
 | 
			
		||||
#define PROCESS_UNICODE_COMMON_H
 | 
			
		||||
 | 
			
		||||
#include "quantum.h"
 | 
			
		||||
 | 
			
		||||
#ifndef UNICODE_TYPE_DELAY
 | 
			
		||||
#define UNICODE_TYPE_DELAY 10
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
void set_unicode_input_mode(uint8_t os_target);
 | 
			
		||||
uint8_t get_unicode_input_mode(void);
 | 
			
		||||
void unicode_input_start(void);
 | 
			
		||||
void unicode_input_finish(void);
 | 
			
		||||
void register_hex(uint16_t hex);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define UC_OSX 0  // Mac OS X
 | 
			
		||||
#define UC_LNX 1  // Linux
 | 
			
		||||
#define UC_WIN 2  // Windows 'HexNumpad'
 | 
			
		||||
#define UC_BSD 3  // BSD (not implemented)
 | 
			
		||||
#define UC_WINC 4 // WinCompose https://github.com/samhocevar/wincompose
 | 
			
		||||
 | 
			
		||||
#define UC_BSPC	UC(0x0008)
 | 
			
		||||
 | 
			
		||||
#define UC_SPC	UC(0x0020)
 | 
			
		||||
 | 
			
		||||
#define UC_EXLM	UC(0x0021)
 | 
			
		||||
#define UC_DQUT	UC(0x0022)
 | 
			
		||||
#define UC_HASH	UC(0x0023)
 | 
			
		||||
#define UC_DLR	UC(0x0024)
 | 
			
		||||
#define UC_PERC	UC(0x0025)
 | 
			
		||||
#define UC_AMPR	UC(0x0026)
 | 
			
		||||
#define UC_QUOT	UC(0x0027)
 | 
			
		||||
#define UC_LPRN	UC(0x0028)
 | 
			
		||||
#define UC_RPRN	UC(0x0029)
 | 
			
		||||
#define UC_ASTR	UC(0x002A)
 | 
			
		||||
#define UC_PLUS	UC(0x002B)
 | 
			
		||||
#define UC_COMM	UC(0x002C)
 | 
			
		||||
#define UC_DASH	UC(0x002D)
 | 
			
		||||
#define UC_DOT	UC(0x002E)
 | 
			
		||||
#define UC_SLSH	UC(0x002F)
 | 
			
		||||
 | 
			
		||||
#define UC_0	UC(0x0030)
 | 
			
		||||
#define UC_1	UC(0x0031)
 | 
			
		||||
#define UC_2	UC(0x0032)
 | 
			
		||||
#define UC_3	UC(0x0033)
 | 
			
		||||
#define UC_4	UC(0x0034)
 | 
			
		||||
#define UC_5	UC(0x0035)
 | 
			
		||||
#define UC_6	UC(0x0036)
 | 
			
		||||
#define UC_7	UC(0x0037)
 | 
			
		||||
#define UC_8	UC(0x0038)
 | 
			
		||||
#define UC_9	UC(0x0039)
 | 
			
		||||
 | 
			
		||||
#define UC_COLN UC(0x003A)
 | 
			
		||||
#define UC_SCLN UC(0x003B)
 | 
			
		||||
#define UC_LT	UC(0x003C)
 | 
			
		||||
#define UC_EQL	UC(0x003D)
 | 
			
		||||
#define UC_GT	UC(0x003E)
 | 
			
		||||
#define UC_QUES	UC(0x003F)
 | 
			
		||||
#define UC_AT 	UC(0x0040)
 | 
			
		||||
 | 
			
		||||
#define UC_A 	UC(0x0041)
 | 
			
		||||
#define UC_B 	UC(0x0042)
 | 
			
		||||
#define UC_C 	UC(0x0043)
 | 
			
		||||
#define UC_D 	UC(0x0044)
 | 
			
		||||
#define UC_E 	UC(0x0045)
 | 
			
		||||
#define UC_F 	UC(0x0046)
 | 
			
		||||
#define UC_G 	UC(0x0047)
 | 
			
		||||
#define UC_H 	UC(0x0048)
 | 
			
		||||
#define UC_I 	UC(0x0049)
 | 
			
		||||
#define UC_J 	UC(0x004A)
 | 
			
		||||
#define UC_K 	UC(0x004B)
 | 
			
		||||
#define UC_L 	UC(0x004C)
 | 
			
		||||
#define UC_M 	UC(0x004D)
 | 
			
		||||
#define UC_N 	UC(0x004E)
 | 
			
		||||
#define UC_O 	UC(0x004F)
 | 
			
		||||
#define UC_P 	UC(0x0050)
 | 
			
		||||
#define UC_Q 	UC(0x0051)
 | 
			
		||||
#define UC_R 	UC(0x0052)
 | 
			
		||||
#define UC_S 	UC(0x0053)
 | 
			
		||||
#define UC_T 	UC(0x0054)
 | 
			
		||||
#define UC_U 	UC(0x0055)
 | 
			
		||||
#define UC_V 	UC(0x0056)
 | 
			
		||||
#define UC_W 	UC(0x0057)
 | 
			
		||||
#define UC_X 	UC(0x0058)
 | 
			
		||||
#define UC_Y 	UC(0x0059)
 | 
			
		||||
#define UC_Z 	UC(0x005A)
 | 
			
		||||
 | 
			
		||||
#define UC_LBRC	UC(0x005B)
 | 
			
		||||
#define UC_BSLS	UC(0x005C)
 | 
			
		||||
#define UC_RBRC	UC(0x005D)
 | 
			
		||||
#define UC_CIRM	UC(0x005E)
 | 
			
		||||
#define UC_UNDR	UC(0x005F)
 | 
			
		||||
 | 
			
		||||
#define UC_GRV 	UC(0x0060)
 | 
			
		||||
 | 
			
		||||
#define UC_a 	UC(0x0061)
 | 
			
		||||
#define UC_b 	UC(0x0062)
 | 
			
		||||
#define UC_c 	UC(0x0063)
 | 
			
		||||
#define UC_d 	UC(0x0064)
 | 
			
		||||
#define UC_e 	UC(0x0065)
 | 
			
		||||
#define UC_f 	UC(0x0066)
 | 
			
		||||
#define UC_g 	UC(0x0067)
 | 
			
		||||
#define UC_h 	UC(0x0068)
 | 
			
		||||
#define UC_i 	UC(0x0069)
 | 
			
		||||
#define UC_j 	UC(0x006A)
 | 
			
		||||
#define UC_k 	UC(0x006B)
 | 
			
		||||
#define UC_l 	UC(0x006C)
 | 
			
		||||
#define UC_m 	UC(0x006D)
 | 
			
		||||
#define UC_n 	UC(0x006E)
 | 
			
		||||
#define UC_o 	UC(0x006F)
 | 
			
		||||
#define UC_p 	UC(0x0070)
 | 
			
		||||
#define UC_q 	UC(0x0071)
 | 
			
		||||
#define UC_r 	UC(0x0072)
 | 
			
		||||
#define UC_s 	UC(0x0073)
 | 
			
		||||
#define UC_t 	UC(0x0074)
 | 
			
		||||
#define UC_u 	UC(0x0075)
 | 
			
		||||
#define UC_v 	UC(0x0076)
 | 
			
		||||
#define UC_w 	UC(0x0077)
 | 
			
		||||
#define UC_x 	UC(0x0078)
 | 
			
		||||
#define UC_y 	UC(0x0079)
 | 
			
		||||
#define UC_z 	UC(0x007A)
 | 
			
		||||
 | 
			
		||||
#define UC_LCBR	UC(0x007B)
 | 
			
		||||
#define UC_PIPE	UC(0x007C)
 | 
			
		||||
#define UC_RCBR	UC(0x007D)
 | 
			
		||||
#define UC_TILD	UC(0x007E)
 | 
			
		||||
#define UC_DEL	UC(0x007F)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
#include "process_unicode_map.h"
 | 
			
		||||
#include "process_unicodemap.h"
 | 
			
		||||
 | 
			
		||||
__attribute__((weak))
 | 
			
		||||
const uint32_t PROGMEM unicode_map[] = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,7 @@
 | 
			
		|||
#define PROCESS_UNICODEMAP_H
 | 
			
		||||
 | 
			
		||||
#include "quantum.h"
 | 
			
		||||
#include "process_unicode_common.h"
 | 
			
		||||
 | 
			
		||||
void unicode_map_input_error(void);
 | 
			
		||||
bool process_unicode_map(uint16_t keycode, keyrecord_t *record);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue