diff options
Diffstat (limited to 'key_config.py')
| -rw-r--r-- | key_config.py | 118 |
1 files changed, 73 insertions, 45 deletions
diff --git a/key_config.py b/key_config.py index eaa2be2..f0cc348 100644 --- a/key_config.py +++ b/key_config.py @@ -1,63 +1,91 @@ +import json +import os from abc import ABC, abstractmethod +CONFIG_PATH = "key_config.json" + class InputConfig(ABC): @abstractmethod - def get_keyzone_layout(): + def get_keyzone_layout(self): pass @abstractmethod - def get_airzone_layout(): + def get_airzone_layout(self): pass class Umiguri32KeyZone(InputConfig): def __init__(self): super().__init__() - self._UMIGIRI_32_KEYZONE_LAYOUT = { - 31: "a", - 30: "1", - 29: "z", - 28: "q", - 27: "s", - 26: "2", - 25: "x", - 24: "w", - 23: "d", - 22: "3", - 21: "c", - 20: "e", - 19: "f", - 18: "4", - 17: "v", - 16: "r", - 15: "g", - 14: "5", - 13: "b", - 12: "t", - 11: "h", - 10: "6", - 9: "n", - 8: "y", - 7: "j", - 6: "7", - 5: "m", - 4: "u", - 3: "k", - 2: "8", - 1: "9", - 0: "i", - } - self._UMIGIRI_32_AIRZONE_LAYOUT = { - 0: "o", - 1: "0", - 2: "p", - 3: "l", - 4: ",", - 5: ".", - } - + if os.path.exists(CONFIG_PATH): + with open(CONFIG_PATH, "r") as f: + config = json.load(f) + self._UMIGIRI_32_KEYZONE_LAYOUT = { + int(k): v for k, v in config["keyzone"].items() + } + self._UMIGIRI_32_AIRZONE_LAYOUT = { + int(k): v for k, v in config["airzone"].items() + } + else: + self._UMIGIRI_32_KEYZONE_LAYOUT = { + 31: "a", + 30: "1", + 29: "z", + 28: "q", + 27: "s", + 26: "2", + 25: "x", + 24: "w", + 23: "d", + 22: "3", + 21: "c", + 20: "e", + 19: "f", + 18: "4", + 17: "v", + 16: "r", + 15: "g", + 14: "5", + 13: "b", + 12: "t", + 11: "h", + 10: "6", + 9: "n", + 8: "y", + 7: "j", + 6: "7", + 5: "m", + 4: "u", + 3: "k", + 2: "8", + 1: "9", + 0: "i", + } + + self._UMIGIRI_32_AIRZONE_LAYOUT = { + 0: "o", + 1: "0", + 2: "p", + 3: "l", + 4: ",", + 5: ".", + } + + self._save_default_config() + + def _save_default_config(self): + with open(CONFIG_PATH, "w") as f: + json.dump( + { + "keyzone": self._UMIGIRI_32_KEYZONE_LAYOUT, + "airzone": self._UMIGIRI_32_AIRZONE_LAYOUT, + }, + f, + indent=4, + ) + def get_keyzone_layout(self): return self._UMIGIRI_32_KEYZONE_LAYOUT |
