diff options
author | Alex Ong <[email protected]> | 2019-01-04 19:43:45 +1100 |
---|---|---|
committer | Alex Ong <[email protected]> | 2019-01-04 19:43:45 +1100 |
commit | 2bb2977c133646c4e056960e72029270d77cc1eb (patch) | |
tree | 235d491f992121ac1716c5bf2fafb80983748576 /users/edvorakjp/edvorakjp_status.c | |
parent | a55c838961c89097ab849ed6cb1f261791e6b9b4 (diff) | |
parent | 47c91fc7f75ae0a477e55b687aa0fc30da0a283c (diff) | |
download | qmk_firmware-2bb2977c133646c4e056960e72029270d77cc1eb.tar.gz qmk_firmware-2bb2977c133646c4e056960e72029270d77cc1eb.zip |
Merge branch 'master' into debounce_refactor
# Conflicts:
# tmk_core/common/keyboard.c
Diffstat (limited to 'users/edvorakjp/edvorakjp_status.c')
-rw-r--r-- | users/edvorakjp/edvorakjp_status.c | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/users/edvorakjp/edvorakjp_status.c b/users/edvorakjp/edvorakjp_status.c new file mode 100644 index 0000000000..a60c8d853b --- /dev/null +++ b/users/edvorakjp/edvorakjp_status.c @@ -0,0 +1,75 @@ +#include "eeprom.h" +#include "edvorakjp.h" + +typedef union { + uint8_t raw; + struct { + bool enable_jp_extra_layer : 1; + bool enable_kc_lang : 1; // for macOS + }; +} edvorakjp_config_t; +static edvorakjp_config_t edvorakjp_config; + +typedef struct { + bool japanese_mode; +} edvorakjp_state_t; +static edvorakjp_state_t edvorakjp_state; + +/* + * private methods + */ +uint8_t eeconfig_read_edvorakjp(void) { + return eeprom_read_byte(EECONFIG_EDVORAK); +} + +void eeconfig_update_edvorakjp(uint8_t val) { + eeprom_update_byte(EECONFIG_EDVORAK, val); +} + +/* + * public methods + */ +void edvorakjp_status_init(void) { + edvorakjp_state.japanese_mode = false; + edvorakjp_config.raw = eeconfig_read_edvorakjp(); +} + +bool get_enable_jp_extra_layer(void) { + return edvorakjp_config.enable_jp_extra_layer; +} + +void set_enable_jp_extra_layer(bool new_state) { + edvorakjp_config.enable_jp_extra_layer = new_state; + eeconfig_update_edvorakjp(edvorakjp_config.raw); +} + +bool get_enable_kc_lang(void) { + return edvorakjp_config.enable_kc_lang; +} + +void set_enable_kc_lang(bool new_state) { + edvorakjp_config.enable_kc_lang = new_state; + eeconfig_update_edvorakjp(edvorakjp_config.raw); +} + +bool get_japanese_mode(void) { + return edvorakjp_state.japanese_mode; +} + +void set_japanese_mode(bool new_state) { + edvorakjp_state.japanese_mode = new_state; + if (edvorakjp_state.japanese_mode) { + if (edvorakjp_config.enable_kc_lang) { + SEND_STRING(SS_TAP(X_LANG1)); + } else { + SEND_STRING(SS_LALT("`")); + } + } else { + dvorakj_layer_off(); + if (edvorakjp_config.enable_kc_lang) { + SEND_STRING(SS_TAP(X_LANG2)); + } else { + SEND_STRING(SS_LALT("`")); + } + } +} |