]> git.donarmstrong.com Git - qmk_firmware.git/blob - users/edvorakjp/edvorakjp_status.c
Update keyboards/kbdfans/kbd67/readme.md
[qmk_firmware.git] / users / edvorakjp / edvorakjp_status.c
1 #include "eeprom.h"
2 #include "edvorakjp.h"
3
4 typedef union {
5   uint8_t raw;
6   struct {
7     bool enable_jp_extra_layer : 1;
8     bool enable_kc_lang        : 1;  // for macOS
9   };
10 } edvorakjp_config_t;
11 static edvorakjp_config_t edvorakjp_config;
12
13 typedef struct {
14   bool japanese_mode;
15 } edvorakjp_state_t;
16 static edvorakjp_state_t edvorakjp_state;
17
18 /*
19  * private methods
20  */
21 uint8_t eeconfig_read_edvorakjp(void) {
22   return eeprom_read_byte(EECONFIG_EDVORAK);
23 }
24
25 void eeconfig_update_edvorakjp(uint8_t val) {
26   eeprom_update_byte(EECONFIG_EDVORAK, val);
27 }
28
29 /*
30  * public methods
31  */
32 void edvorakjp_status_init(void) {
33   edvorakjp_state.japanese_mode = false;
34   edvorakjp_config.raw = eeconfig_read_edvorakjp();
35 }
36
37 bool get_enable_jp_extra_layer(void) {
38   return edvorakjp_config.enable_jp_extra_layer;
39 }
40
41 void set_enable_jp_extra_layer(bool new_state) {
42   edvorakjp_config.enable_jp_extra_layer = new_state;
43   eeconfig_update_edvorakjp(edvorakjp_config.raw);
44 }
45
46 bool get_enable_kc_lang(void) {
47   return edvorakjp_config.enable_kc_lang;
48 }
49
50 void set_enable_kc_lang(bool new_state) {
51   edvorakjp_config.enable_kc_lang = new_state;
52   eeconfig_update_edvorakjp(edvorakjp_config.raw);
53 }
54
55 bool get_japanese_mode(void) {
56   return edvorakjp_state.japanese_mode;
57 }
58
59 void set_japanese_mode(bool new_state) {
60   edvorakjp_state.japanese_mode = new_state;
61   if (edvorakjp_state.japanese_mode) {
62     if (edvorakjp_config.enable_kc_lang) {
63       SEND_STRING(SS_TAP(X_LANG1));
64     } else {
65       SEND_STRING(SS_LALT("`"));
66     }
67   } else {
68     dvorakj_layer_off();
69     if (edvorakjp_config.enable_kc_lang) {
70       SEND_STRING(SS_TAP(X_LANG2));
71     } else {
72       SEND_STRING(SS_LALT("`"));
73     }
74   }
75 }