1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
import json
import os
from abc import ABC, abstractmethod
CONFIG_PATH = "key_config.json"
class InputConfig(ABC):
@abstractmethod
def get_keyzone_layout(self):
pass
@abstractmethod
def get_airzone_layout(self):
pass
class Umiguri32KeyZone(InputConfig):
def __init__(self):
super().__init__()
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
def get_airzone_layout(self):
return self._UMIGIRI_32_AIRZONE_LAYOUT
|