diff options
author | skullY <skullydazed@gmail.com> | 2019-08-30 11:19:03 -0700 |
---|---|---|
committer | skullydazed <skullydazed@users.noreply.github.com> | 2019-08-30 15:01:52 -0700 |
commit | b624f32f944acdc59dcb130674c09090c5c404cb (patch) | |
tree | bc13adbba137d122d9a2c2fb2fafcbb08ac10e25 /quantum/process_keycode/process_unicodemap.c | |
parent | 61af76a10d00aba185b8338604171de490a13e3b (diff) | |
download | qmk_firmware-b624f32f944acdc59dcb130674c09090c5c404cb.tar.gz qmk_firmware-b624f32f944acdc59dcb130674c09090c5c404cb.zip |
clang-format changes
Diffstat (limited to 'quantum/process_keycode/process_unicodemap.c')
-rw-r--r-- | quantum/process_keycode/process_unicodemap.c | 95 |
1 files changed, 48 insertions, 47 deletions
diff --git a/quantum/process_keycode/process_unicodemap.c b/quantum/process_keycode/process_unicodemap.c index b88787986..4364f156c 100644 --- a/quantum/process_keycode/process_unicodemap.c +++ b/quantum/process_keycode/process_unicodemap.c | |||
@@ -17,62 +17,63 @@ | |||
17 | #include "process_unicodemap.h" | 17 | #include "process_unicodemap.h" |
18 | 18 | ||
19 | void register_hex32(uint32_t hex) { | 19 | void register_hex32(uint32_t hex) { |
20 | bool onzerostart = true; | 20 | bool onzerostart = true; |
21 | for(int i = 7; i >= 0; i--) { | 21 | for (int i = 7; i >= 0; i--) { |
22 | if (i <= 3) { | 22 | if (i <= 3) { |
23 | onzerostart = false; | 23 | onzerostart = false; |
24 | } | ||
25 | uint8_t digit = ((hex >> (i * 4)) & 0xF); | ||
26 | if (digit == 0) { | ||
27 | if (!onzerostart) { | ||
28 | register_code(hex_to_keycode(digit)); | ||
29 | unregister_code(hex_to_keycode(digit)); | ||
30 | } | ||
31 | } else { | ||
32 | register_code(hex_to_keycode(digit)); | ||
33 | unregister_code(hex_to_keycode(digit)); | ||
34 | onzerostart = false; | ||
35 | } | ||
24 | } | 36 | } |
25 | uint8_t digit = ((hex >> (i*4)) & 0xF); | ||
26 | if (digit == 0) { | ||
27 | if (!onzerostart) { | ||
28 | register_code(hex_to_keycode(digit)); | ||
29 | unregister_code(hex_to_keycode(digit)); | ||
30 | } | ||
31 | } else { | ||
32 | register_code(hex_to_keycode(digit)); | ||
33 | unregister_code(hex_to_keycode(digit)); | ||
34 | onzerostart = false; | ||
35 | } | ||
36 | } | ||
37 | } | 37 | } |
38 | 38 | ||
39 | __attribute__((weak)) | 39 | __attribute__((weak)) uint16_t unicodemap_index(uint16_t keycode) { |
40 | uint16_t unicodemap_index(uint16_t keycode) { | 40 | if (keycode >= QK_UNICODEMAP_PAIR) { |
41 | if (keycode >= QK_UNICODEMAP_PAIR) { | 41 | // Keycode is a pair: extract index based on Shift / Caps Lock state |
42 | // Keycode is a pair: extract index based on Shift / Caps Lock state | 42 | uint16_t index = keycode - QK_UNICODEMAP_PAIR; |
43 | uint16_t index = keycode - QK_UNICODEMAP_PAIR; | ||
44 | 43 | ||
45 | bool shift = unicode_saved_mods & MOD_MASK_SHIFT, caps = IS_HOST_LED_ON(USB_LED_CAPS_LOCK); | 44 | bool shift = unicode_saved_mods & MOD_MASK_SHIFT, caps = IS_HOST_LED_ON(USB_LED_CAPS_LOCK); |
46 | if (shift ^ caps) { index >>= 7; } | 45 | if (shift ^ caps) { |
46 | index >>= 7; | ||
47 | } | ||
47 | 48 | ||
48 | return index & 0x7F; | 49 | return index & 0x7F; |
49 | } else { | 50 | } else { |
50 | // Keycode is a regular index | 51 | // Keycode is a regular index |
51 | return keycode - QK_UNICODEMAP; | 52 | return keycode - QK_UNICODEMAP; |
52 | } | 53 | } |
53 | } | 54 | } |
54 | 55 | ||
55 | bool process_unicodemap(uint16_t keycode, keyrecord_t *record) { | 56 | bool process_unicodemap(uint16_t keycode, keyrecord_t *record) { |
56 | if (keycode >= QK_UNICODEMAP && keycode <= QK_UNICODEMAP_PAIR_MAX && record->event.pressed) { | 57 | if (keycode >= QK_UNICODEMAP && keycode <= QK_UNICODEMAP_PAIR_MAX && record->event.pressed) { |
57 | unicode_input_start(); | 58 | unicode_input_start(); |
58 | 59 | ||
59 | uint32_t code = pgm_read_dword(unicode_map + unicodemap_index(keycode)); | 60 | uint32_t code = pgm_read_dword(unicode_map + unicodemap_index(keycode)); |
60 | uint8_t input_mode = get_unicode_input_mode(); | 61 | uint8_t input_mode = get_unicode_input_mode(); |
61 | 62 | ||
62 | if (code > 0x10FFFF || (code > 0xFFFF && input_mode == UC_WIN)) { | 63 | if (code > 0x10FFFF || (code > 0xFFFF && input_mode == UC_WIN)) { |
63 | // Character is out of range supported by the platform | 64 | // Character is out of range supported by the platform |
64 | unicode_input_cancel(); | 65 | unicode_input_cancel(); |
65 | } else if (code > 0xFFFF && input_mode == UC_OSX) { | 66 | } else if (code > 0xFFFF && input_mode == UC_OSX) { |
66 | // Convert to UTF-16 surrogate pair on Mac | 67 | // Convert to UTF-16 surrogate pair on Mac |
67 | code -= 0x10000; | 68 | code -= 0x10000; |
68 | uint32_t lo = code & 0x3FF, hi = (code & 0xFFC00) >> 10; | 69 | uint32_t lo = code & 0x3FF, hi = (code & 0xFFC00) >> 10; |
69 | register_hex32(hi + 0xD800); | 70 | register_hex32(hi + 0xD800); |
70 | register_hex32(lo + 0xDC00); | 71 | register_hex32(lo + 0xDC00); |
71 | unicode_input_finish(); | 72 | unicode_input_finish(); |
72 | } else { | 73 | } else { |
73 | register_hex32(code); | 74 | register_hex32(code); |
74 | unicode_input_finish(); | 75 | unicode_input_finish(); |
76 | } | ||
75 | } | 77 | } |
76 | } | 78 | return true; |
77 | return true; | ||
78 | } | 79 | } |