summaryrefslogtreecommitdiff
path: root/kvmd/keyboard/mappings.py.mako
diff options
context:
space:
mode:
authorDevaev Maxim <[email protected]>2020-05-23 11:57:19 +0300
committerDevaev Maxim <[email protected]>2020-05-23 11:57:19 +0300
commita795fe5ed63b960cbf24c9130ed37f9f7f33280c (patch)
tree51b884539614ed380cb19cd60e4dae7c8baab090 /kvmd/keyboard/mappings.py.mako
parent17082c916a1d80d92bb5a51fed67f030f605f804 (diff)
additional keymapping info; refactoring
Diffstat (limited to 'kvmd/keyboard/mappings.py.mako')
-rw-r--r--kvmd/keyboard/mappings.py.mako73
1 files changed, 73 insertions, 0 deletions
diff --git a/kvmd/keyboard/mappings.py.mako b/kvmd/keyboard/mappings.py.mako
new file mode 100644
index 00000000..d2752d2d
--- /dev/null
+++ b/kvmd/keyboard/mappings.py.mako
@@ -0,0 +1,73 @@
+# ========================================================================== #
+# #
+# KVMD - The main Pi-KVM daemon. #
+# #
+# Copyright (C) 2018 Maxim Devaev <[email protected]> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation, either version 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program. If not, see <https://www.gnu.org/licenses/>. #
+# #
+# ========================================================================== #
+
+
+import dataclasses
+
+from typing import Dict
+
+
+# =====
[email protected](frozen=True)
+class SerialKey:
+ code: int
+
+
[email protected](frozen=True)
+class OtgKey:
+ code: int
+ is_modifier: bool
+
+
[email protected](frozen=True)
+class Key:
+ serial: SerialKey
+ otg: OtgKey
+
+<%! import operator %>
+KEYMAP: Dict[str, Key] = {
+% for km in sorted(keymap, key=operator.attrgetter("serial_code")):
+ "${km.web_name}": Key(serial=SerialKey(code=${km.serial_code}), otg=OtgKey(code=${km.otg_key.code}, is_modifier=${km.otg_key.is_modifier})),
+% endfor
+}
+
+
+# =====
[email protected](frozen=True)
+class At1Key:
+ code: int
+ shift: bool
+
+
+X11_TO_AT1 = {
+% for km in sorted(keymap, key=operator.attrgetter("at1_code")):
+ % for x11_key in sorted(km.x11_keys, key=(lambda key: (key.code, key.shift))):
+ ${x11_key.code}: At1Key(code=${km.at1_code}, shift=${x11_key.shift}), # ${x11_key.name}
+ % endfor
+% endfor
+}
+
+
+AT1_TO_WEB = {
+% for km in sorted(keymap, key=operator.attrgetter("at1_code")):
+ ${km.at1_code}: "${km.web_name}",
+% endfor
+}