diff options
Diffstat (limited to 'users/edvorakjp/edvorakjp_status.c')
| -rw-r--r-- | users/edvorakjp/edvorakjp_status.c | 58 |
1 files changed, 25 insertions, 33 deletions
diff --git a/users/edvorakjp/edvorakjp_status.c b/users/edvorakjp/edvorakjp_status.c index 128fc3bd2..c8a06c225 100644 --- a/users/edvorakjp/edvorakjp_status.c +++ b/users/edvorakjp/edvorakjp_status.c | |||
| @@ -2,63 +2,55 @@ | |||
| 2 | #include "edvorakjp.h" | 2 | #include "edvorakjp.h" |
| 3 | 3 | ||
| 4 | typedef union { | 4 | typedef union { |
| 5 | uint8_t raw; | 5 | uint8_t raw; |
| 6 | struct { | 6 | struct { |
| 7 | bool enable_kc_lang; // for macOS | 7 | bool enable_kc_lang; // for macOS |
| 8 | }; | 8 | }; |
| 9 | } edvorakjp_config_t; | 9 | } edvorakjp_config_t; |
| 10 | static edvorakjp_config_t edvorakjp_config; | 10 | static edvorakjp_config_t edvorakjp_config; |
| 11 | 11 | ||
| 12 | typedef struct { | 12 | typedef struct { |
| 13 | bool japanese_mode; | 13 | bool japanese_mode; |
| 14 | } edvorakjp_state_t; | 14 | } edvorakjp_state_t; |
| 15 | static edvorakjp_state_t edvorakjp_state; | 15 | static edvorakjp_state_t edvorakjp_state; |
| 16 | 16 | ||
| 17 | /* | 17 | /* |
| 18 | * private methods | 18 | * private methods |
| 19 | */ | 19 | */ |
| 20 | uint8_t eeconfig_read_edvorakjp(void) { | 20 | uint8_t eeconfig_read_edvorakjp(void) { return eeprom_read_byte(EECONFIG_EDVORAK); } |
| 21 | return eeprom_read_byte(EECONFIG_EDVORAK); | ||
| 22 | } | ||
| 23 | 21 | ||
| 24 | void eeconfig_update_edvorakjp(uint8_t val) { | 22 | void eeconfig_update_edvorakjp(uint8_t val) { eeprom_update_byte(EECONFIG_EDVORAK, val); } |
| 25 | eeprom_update_byte(EECONFIG_EDVORAK, val); | ||
| 26 | } | ||
| 27 | 23 | ||
| 28 | /* | 24 | /* |
| 29 | * public methods | 25 | * public methods |
| 30 | */ | 26 | */ |
| 31 | void edvorakjp_status_init(void) { | 27 | void edvorakjp_status_init(void) { |
| 32 | edvorakjp_state.japanese_mode = false; | 28 | edvorakjp_state.japanese_mode = false; |
| 33 | edvorakjp_config.raw = eeconfig_read_edvorakjp(); | 29 | edvorakjp_config.raw = eeconfig_read_edvorakjp(); |
| 34 | } | 30 | } |
| 35 | 31 | ||
| 36 | bool get_enable_kc_lang(void) { | 32 | bool get_enable_kc_lang(void) { return edvorakjp_config.enable_kc_lang; } |
| 37 | return edvorakjp_config.enable_kc_lang; | ||
| 38 | } | ||
| 39 | 33 | ||
| 40 | void set_enable_kc_lang(bool new_state) { | 34 | void set_enable_kc_lang(bool new_state) { |
| 41 | edvorakjp_config.enable_kc_lang = new_state; | 35 | edvorakjp_config.enable_kc_lang = new_state; |
| 42 | eeconfig_update_edvorakjp(edvorakjp_config.raw); | 36 | eeconfig_update_edvorakjp(edvorakjp_config.raw); |
| 43 | } | 37 | } |
| 44 | 38 | ||
| 45 | bool get_japanese_mode(void) { | 39 | bool get_japanese_mode(void) { return edvorakjp_state.japanese_mode; } |
| 46 | return edvorakjp_state.japanese_mode; | ||
| 47 | } | ||
| 48 | 40 | ||
| 49 | void set_japanese_mode(bool new_state) { | 41 | void set_japanese_mode(bool new_state) { |
| 50 | edvorakjp_state.japanese_mode = new_state; | 42 | edvorakjp_state.japanese_mode = new_state; |
| 51 | if (edvorakjp_state.japanese_mode) { | 43 | if (edvorakjp_state.japanese_mode) { |
| 52 | if (edvorakjp_config.enable_kc_lang) { | 44 | if (edvorakjp_config.enable_kc_lang) { |
| 53 | SEND_STRING(SS_TAP(X_LANG1)); | 45 | SEND_STRING(SS_TAP(X_LANG1)); |
| 54 | } else { | 46 | } else { |
| 55 | SEND_STRING(SS_LALT("`")); | 47 | SEND_STRING(SS_LALT("`")); |
| 56 | } | 48 | } |
| 57 | } else { | ||
| 58 | if (edvorakjp_config.enable_kc_lang) { | ||
| 59 | SEND_STRING(SS_TAP(X_LANG2)); | ||
| 60 | } else { | 49 | } else { |
| 61 | SEND_STRING(SS_LALT("`")); | 50 | if (edvorakjp_config.enable_kc_lang) { |
| 51 | SEND_STRING(SS_TAP(X_LANG2)); | ||
| 52 | } else { | ||
| 53 | SEND_STRING(SS_LALT("`")); | ||
| 54 | } | ||
| 62 | } | 55 | } |
| 63 | } | ||
| 64 | } | 56 | } |
