diff options
author | Devaev Maxim <[email protected]> | 2020-05-23 11:57:19 +0300 |
---|---|---|
committer | Devaev Maxim <[email protected]> | 2020-05-23 11:57:19 +0300 |
commit | a795fe5ed63b960cbf24c9130ed37f9f7f33280c (patch) | |
tree | 51b884539614ed380cb19cd60e4dae7c8baab090 /kvmd/keyboard/mappings.py.mako | |
parent | 17082c916a1d80d92bb5a51fed67f030f605f804 (diff) |
additional keymapping info; refactoring
Diffstat (limited to 'kvmd/keyboard/mappings.py.mako')
-rw-r--r-- | kvmd/keyboard/mappings.py.mako | 73 |
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 +} |