aboutsummaryrefslogtreecommitdiff
path: root/users/edvorakjp/edvorakjp_status.c
diff options
context:
space:
mode:
Diffstat (limited to 'users/edvorakjp/edvorakjp_status.c')
-rw-r--r--users/edvorakjp/edvorakjp_status.c58
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
4typedef union { 4typedef 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;
10static edvorakjp_config_t edvorakjp_config; 10static edvorakjp_config_t edvorakjp_config;
11 11
12typedef struct { 12typedef struct {
13 bool japanese_mode; 13 bool japanese_mode;
14} edvorakjp_state_t; 14} edvorakjp_state_t;
15static edvorakjp_state_t edvorakjp_state; 15static edvorakjp_state_t edvorakjp_state;
16 16
17/* 17/*
18 * private methods 18 * private methods
19 */ 19 */
20uint8_t eeconfig_read_edvorakjp(void) { 20uint8_t eeconfig_read_edvorakjp(void) { return eeprom_read_byte(EECONFIG_EDVORAK); }
21 return eeprom_read_byte(EECONFIG_EDVORAK);
22}
23 21
24void eeconfig_update_edvorakjp(uint8_t val) { 22void 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 */
31void edvorakjp_status_init(void) { 27void 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
36bool get_enable_kc_lang(void) { 32bool get_enable_kc_lang(void) { return edvorakjp_config.enable_kc_lang; }
37 return edvorakjp_config.enable_kc_lang;
38}
39 33
40void set_enable_kc_lang(bool new_state) { 34void 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
45bool get_japanese_mode(void) { 39bool get_japanese_mode(void) { return edvorakjp_state.japanese_mode; }
46 return edvorakjp_state.japanese_mode;
47}
48 40
49void set_japanese_mode(bool new_state) { 41void 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}