diff options
author | Drashna Jaelre <drashna@live.com> | 2018-10-18 21:35:15 -0700 |
---|---|---|
committer | Jack Humbert <jack.humb@gmail.com> | 2018-10-19 00:35:15 -0400 |
commit | 7222e3691b18128c4822f6bb5db008010f5e41dd (patch) | |
tree | 9be08574cf226f6a4f5d08cfad5d302013b44f9e | |
parent | 7e1b57add42dcc3330d9d99e28c9b7f96eb2eee8 (diff) | |
download | qmk_firmware-7222e3691b18128c4822f6bb5db008010f5e41dd.tar.gz qmk_firmware-7222e3691b18128c4822f6bb5db008010f5e41dd.zip |
Fix Unicode EEPROM handling so it is consistent. (#4066)
* Fix Unicode EEPROM handling so it's consistant
* Remove changes to my userspace
* Optimize variables used
* fix functions
* additional cleanup
* Add False Flag
* rename function
-rw-r--r-- | quantum/process_keycode/process_ucis.c | 6 | ||||
-rw-r--r-- | quantum/process_keycode/process_unicode.c | 7 | ||||
-rw-r--r-- | quantum/process_keycode/process_unicode_common.c | 17 | ||||
-rw-r--r-- | quantum/process_keycode/process_unicode_common.h | 1 | ||||
-rw-r--r-- | quantum/process_keycode/process_unicodemap.c | 1 |
5 files changed, 17 insertions, 15 deletions
diff --git a/quantum/process_keycode/process_ucis.c b/quantum/process_keycode/process_ucis.c index 5de2e41fc..380199771 100644 --- a/quantum/process_keycode/process_ucis.c +++ b/quantum/process_keycode/process_ucis.c | |||
@@ -93,7 +93,7 @@ void register_ucis(const char *hex) { | |||
93 | } | 93 | } |
94 | 94 | ||
95 | bool process_ucis (uint16_t keycode, keyrecord_t *record) { | 95 | bool process_ucis (uint16_t keycode, keyrecord_t *record) { |
96 | uint8_t i; | 96 | unicode_input_mode_init(); |
97 | 97 | ||
98 | if (!qk_ucis_state.in_progress) | 98 | if (!qk_ucis_state.in_progress) |
99 | return true; | 99 | return true; |
@@ -122,7 +122,7 @@ bool process_ucis (uint16_t keycode, keyrecord_t *record) { | |||
122 | if (keycode == KC_ENT || keycode == KC_SPC || keycode == KC_ESC) { | 122 | if (keycode == KC_ENT || keycode == KC_SPC || keycode == KC_ESC) { |
123 | bool symbol_found = false; | 123 | bool symbol_found = false; |
124 | 124 | ||
125 | for (i = qk_ucis_state.count; i > 0; i--) { | 125 | for (uint8_t i = qk_ucis_state.count; i > 0; i--) { |
126 | register_code (KC_BSPC); | 126 | register_code (KC_BSPC); |
127 | unregister_code (KC_BSPC); | 127 | unregister_code (KC_BSPC); |
128 | wait_ms(UNICODE_TYPE_DELAY); | 128 | wait_ms(UNICODE_TYPE_DELAY); |
@@ -134,7 +134,7 @@ bool process_ucis (uint16_t keycode, keyrecord_t *record) { | |||
134 | } | 134 | } |
135 | 135 | ||
136 | unicode_input_start(); | 136 | unicode_input_start(); |
137 | for (i = 0; ucis_symbol_table[i].symbol; i++) { | 137 | for (uint8_t i = 0; ucis_symbol_table[i].symbol; i++) { |
138 | if (is_uni_seq (ucis_symbol_table[i].symbol)) { | 138 | if (is_uni_seq (ucis_symbol_table[i].symbol)) { |
139 | symbol_found = true; | 139 | symbol_found = true; |
140 | register_ucis(ucis_symbol_table[i].code + 2); | 140 | register_ucis(ucis_symbol_table[i].code + 2); |
diff --git a/quantum/process_keycode/process_unicode.c b/quantum/process_keycode/process_unicode.c index fd008eca1..f39c4a36e 100644 --- a/quantum/process_keycode/process_unicode.c +++ b/quantum/process_keycode/process_unicode.c | |||
@@ -17,15 +17,10 @@ | |||
17 | #include "action_util.h" | 17 | #include "action_util.h" |
18 | #include "eeprom.h" | 18 | #include "eeprom.h" |
19 | 19 | ||
20 | static uint8_t first_flag = 0; | ||
21 | |||
22 | bool process_unicode(uint16_t keycode, keyrecord_t *record) { | 20 | bool process_unicode(uint16_t keycode, keyrecord_t *record) { |
23 | if (keycode > QK_UNICODE && record->event.pressed) { | 21 | if (keycode > QK_UNICODE && record->event.pressed) { |
24 | if (first_flag == 0) { | ||
25 | set_unicode_input_mode(eeprom_read_byte(EECONFIG_UNICODEMODE)); | ||
26 | first_flag = 1; | ||
27 | } | ||
28 | uint16_t unicode = keycode & 0x7FFF; | 22 | uint16_t unicode = keycode & 0x7FFF; |
23 | unicode_input_mode_init(); | ||
29 | unicode_input_start(); | 24 | unicode_input_start(); |
30 | register_hex(unicode); | 25 | register_hex(unicode); |
31 | unicode_input_finish(); | 26 | unicode_input_finish(); |
diff --git a/quantum/process_keycode/process_unicode_common.c b/quantum/process_keycode/process_unicode_common.c index e6620b7ea..4285d20a1 100644 --- a/quantum/process_keycode/process_unicode_common.c +++ b/quantum/process_keycode/process_unicode_common.c | |||
@@ -22,8 +22,7 @@ | |||
22 | static uint8_t input_mode; | 22 | static uint8_t input_mode; |
23 | uint8_t mods; | 23 | uint8_t mods; |
24 | 24 | ||
25 | void set_unicode_input_mode(uint8_t os_target) | 25 | void set_unicode_input_mode(uint8_t os_target) { |
26 | { | ||
27 | input_mode = os_target; | 26 | input_mode = os_target; |
28 | eeprom_update_byte(EECONFIG_UNICODEMODE, os_target); | 27 | eeprom_update_byte(EECONFIG_UNICODEMODE, os_target); |
29 | } | 28 | } |
@@ -32,6 +31,14 @@ uint8_t get_unicode_input_mode(void) { | |||
32 | return input_mode; | 31 | return input_mode; |
33 | } | 32 | } |
34 | 33 | ||
34 | void unicode_input_mode_init(void) { | ||
35 | static bool first_flag = false; | ||
36 | if (!first_flag) { | ||
37 | input_mode = eeprom_read_byte(EECONFIG_UNICODEMODE); | ||
38 | first_flag = true; | ||
39 | } | ||
40 | } | ||
41 | |||
35 | __attribute__((weak)) | 42 | __attribute__((weak)) |
36 | void unicode_input_start (void) { | 43 | void unicode_input_start (void) { |
37 | // save current mods | 44 | // save current mods |
@@ -104,8 +111,7 @@ void unicode_input_finish (void) { | |||
104 | } | 111 | } |
105 | 112 | ||
106 | __attribute__((weak)) | 113 | __attribute__((weak)) |
107 | uint16_t hex_to_keycode(uint8_t hex) | 114 | uint16_t hex_to_keycode(uint8_t hex) { |
108 | { | ||
109 | if (hex == 0x0) { | 115 | if (hex == 0x0) { |
110 | return KC_0; | 116 | return KC_0; |
111 | } else if (hex < 0xA) { | 117 | } else if (hex < 0xA) { |
@@ -123,8 +129,7 @@ void register_hex(uint16_t hex) { | |||
123 | } | 129 | } |
124 | } | 130 | } |
125 | 131 | ||
126 | void send_unicode_hex_string(const char *str) | 132 | void send_unicode_hex_string(const char *str) { |
127 | { | ||
128 | if (!str) { return; } // Safety net | 133 | if (!str) { return; } // Safety net |
129 | 134 | ||
130 | while (*str) { | 135 | while (*str) { |
diff --git a/quantum/process_keycode/process_unicode_common.h b/quantum/process_keycode/process_unicode_common.h index 814b60c57..e78e1cec6 100644 --- a/quantum/process_keycode/process_unicode_common.h +++ b/quantum/process_keycode/process_unicode_common.h | |||
@@ -28,6 +28,7 @@ static uint8_t input_mode; | |||
28 | 28 | ||
29 | void set_unicode_input_mode(uint8_t os_target); | 29 | void set_unicode_input_mode(uint8_t os_target); |
30 | uint8_t get_unicode_input_mode(void); | 30 | uint8_t get_unicode_input_mode(void); |
31 | void unicode_input_mode_init(void); | ||
31 | void unicode_input_start(void); | 32 | void unicode_input_start(void); |
32 | void unicode_input_finish(void); | 33 | void unicode_input_finish(void); |
33 | void register_hex(uint16_t hex); | 34 | void register_hex(uint16_t hex); |
diff --git a/quantum/process_keycode/process_unicodemap.c b/quantum/process_keycode/process_unicodemap.c index 47c27b911..ab5717ba3 100644 --- a/quantum/process_keycode/process_unicodemap.c +++ b/quantum/process_keycode/process_unicodemap.c | |||
@@ -45,6 +45,7 @@ __attribute__((weak)) | |||
45 | void unicode_map_input_error() {} | 45 | void unicode_map_input_error() {} |
46 | 46 | ||
47 | bool process_unicode_map(uint16_t keycode, keyrecord_t *record) { | 47 | bool process_unicode_map(uint16_t keycode, keyrecord_t *record) { |
48 | unicode_input_mode_init(); | ||
48 | uint8_t input_mode = get_unicode_input_mode(); | 49 | uint8_t input_mode = get_unicode_input_mode(); |
49 | if ((keycode & QK_UNICODE_MAP) == QK_UNICODE_MAP && record->event.pressed) { | 50 | if ((keycode & QK_UNICODE_MAP) == QK_UNICODE_MAP && record->event.pressed) { |
50 | const uint32_t* map = unicode_map; | 51 | const uint32_t* map = unicode_map; |