diff options
author | Jack Humbert <jack.humb@gmail.com> | 2016-05-18 23:47:16 -0400 |
---|---|---|
committer | Jack Humbert <jack.humb@gmail.com> | 2016-05-18 23:47:16 -0400 |
commit | b732b79b49b098dba8e14493c745075f336747d8 (patch) | |
tree | 069f529df73ba8bfbcf7003f5ddd3987ecaadc57 /quantum/quantum.h | |
parent | bf545061f2a71b054ccdca6f6261bb7c2ffa4957 (diff) | |
download | qmk_firmware-b732b79b49b098dba8e14493c745075f336747d8.tar.gz qmk_firmware-b732b79b49b098dba8e14493c745075f336747d8.zip |
adapts unicode to quantum.c (#333)
* Unicode
to have unicode input you need to:
- set your OS input method to UNICODE if needed
- enable unicode in your makefile
- copy the action_function from
keyboard/planck/keymaps/unicode/unicode.c to your keymap.c
set the target OS method in your keymap.c: void matrix_init_user() {
set_unicode_mode(UC_OSX); } you can then switch when you want with:
set_unicode_mode(UC_OSX); set_unicode_mode(UC_LNX);
set_unicode_mode(UC_WIN);
put some unicode codes in your keymap like so: UC(0x0061)
I did change the bit mask in quantum/keymap_common.c and .h
I’m afraid we will need uint32 to get a total support for all unicode
tables or relocate the handler as @mbarkhau did.
* rearranges keycode values, hooks-up unicode
* removes extra lalt ref
* adds unicode shortcuts and example
Diffstat (limited to 'quantum/quantum.h')
-rw-r--r-- | quantum/quantum.h | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/quantum/quantum.h b/quantum/quantum.h index f4d8f09d4..d4da77289 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h | |||
@@ -13,9 +13,12 @@ | |||
13 | #include "audio.h" | 13 | #include "audio.h" |
14 | #endif | 14 | #endif |
15 | #ifdef MIDI_ENABLE | 15 | #ifdef MIDI_ENABLE |
16 | // #include <keymap_midi.h> | ||
17 | #include <lufa.h> | 16 | #include <lufa.h> |
18 | #endif | 17 | #endif |
18 | #ifdef UNICODE_ENABLE | ||
19 | #include "unicode.h" | ||
20 | #endif | ||
21 | |||
19 | #include "action_layer.h" | 22 | #include "action_layer.h" |
20 | #include "eeconfig.h" | 23 | #include "eeconfig.h" |
21 | #include <stddef.h> | 24 | #include <stddef.h> |
@@ -27,24 +30,37 @@ extern uint32_t default_layer_state; | |||
27 | extern uint32_t layer_state; | 30 | extern uint32_t layer_state; |
28 | #endif | 31 | #endif |
29 | 32 | ||
30 | bool music_activated; | 33 | #ifdef AUDIO_ENABLE |
34 | bool music_activated; | ||
35 | #endif | ||
31 | 36 | ||
32 | void matrix_init_kb(void); | 37 | #ifdef UNICODE_ENABLE |
33 | void matrix_scan_kb(void); | 38 | #define UC_OSX 0 |
34 | bool process_action_kb(keyrecord_t *record); | 39 | #define UC_LNX 1 |
40 | #define UC_WIN 2 | ||
41 | #define UC_BSD 3 | ||
35 | 42 | ||
36 | void leader_start(void); | 43 | void set_unicode_input_mode(uint8_t os_target); |
37 | void leader_end(void); | 44 | #endif |
45 | |||
46 | #ifndef DISABLE_LEADER | ||
47 | void leader_start(void); | ||
48 | void leader_end(void); | ||
49 | |||
50 | #ifndef LEADER_TIMEOUT | ||
51 | #define LEADER_TIMEOUT 200 | ||
52 | #endif | ||
53 | #define SEQ_ONE_KEY(key) if (leader_sequence[0] == (key) && leader_sequence[1] == 0 && leader_sequence[2] == 0) | ||
54 | #define SEQ_TWO_KEYS(key1, key2) if (leader_sequence[0] == (key1) && leader_sequence[1] == (key2) && leader_sequence[2] == 0) | ||
55 | #define SEQ_THREE_KEYS(key1, key2, key3) if (leader_sequence[0] == (key1) && leader_sequence[1] == (key2) && leader_sequence[2] == (key3)) | ||
38 | 56 | ||
39 | #ifndef LEADER_TIMEOUT | 57 | #define LEADER_EXTERNS() extern bool leading; extern uint16_t leader_time; extern uint16_t leader_sequence[3]; extern uint8_t leader_sequence_size |
40 | #define LEADER_TIMEOUT 200 | 58 | #define LEADER_DICTIONARY() if (leading && timer_elapsed(leader_time) > LEADER_TIMEOUT) |
41 | #endif | 59 | #endif |
42 | #define SEQ_ONE_KEY(key) if (leader_sequence[0] == (key) && leader_sequence[1] == 0 && leader_sequence[2] == 0) | ||
43 | #define SEQ_TWO_KEYS(key1, key2) if (leader_sequence[0] == (key1) && leader_sequence[1] == (key2) && leader_sequence[2] == 0) | ||
44 | #define SEQ_THREE_KEYS(key1, key2, key3) if (leader_sequence[0] == (key1) && leader_sequence[1] == (key2) && leader_sequence[2] == (key3)) | ||
45 | 60 | ||
46 | #define LEADER_EXTERNS() extern bool leading; extern uint16_t leader_time; extern uint16_t leader_sequence[3]; extern uint8_t leader_sequence_size | 61 | void matrix_init_kb(void); |
47 | #define LEADER_DICTIONARY() if (leading && timer_elapsed(leader_time) > LEADER_TIMEOUT) | 62 | void matrix_scan_kb(void); |
63 | bool process_action_kb(keyrecord_t *record); | ||
48 | 64 | ||
49 | bool is_music_on(void); | 65 | bool is_music_on(void); |
50 | void music_toggle(void); | 66 | void music_toggle(void); |