keysymdef: Rename key symbols

Name the key symbol mapping different than the module itself.
This commit is contained in:
MattHag 2024-09-25 23:09:42 +02:00 committed by Peter F. Patel-Schneider
parent 32fef49ff8
commit b681aafaff
3 changed files with 17 additions and 21 deletions

View File

@ -1,12 +1,12 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
"""Extract key symbol encodings from X11 header files."""
from pathlib import Path from pathlib import Path
from pprint import pprint from pprint import pprint
from re import findall from re import findall
from subprocess import run from subprocess import run
from tempfile import TemporaryDirectory from tempfile import TemporaryDirectory
repo = "https://github.com/freedesktop/xorg-proto-x11proto.git"
xx = "https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/tree/master/include/X11/"
repo = "https://gitlab.freedesktop.org/xorg/proto/xorgproto.git" repo = "https://gitlab.freedesktop.org/xorg/proto/xorgproto.git"
pattern = r"#define XK_(\w+)\s+0x(\w+)(?:\s+/\*\s+U\+(\w+))?" pattern = r"#define XK_(\w+)\s+0x(\w+)(?:\s+/\*\s+U\+(\w+))?"
xf86pattern = r"#define XF86XK_(\w+)\s+0x(\w+)(?:\s+/\*\s+U\+(\w+))?" xf86pattern = r"#define XF86XK_(\w+)\s+0x(\w+)(?:\s+/\*\s+U\+(\w+))?"
@ -14,28 +14,24 @@ xf86pattern = r"#define XF86XK_(\w+)\s+0x(\w+)(?:\s+/\*\s+U\+(\w+))?"
def main(): def main():
keysymdef = {} keysymdef = {}
keysym_files = [
("include/X11/keysymdef.h", pattern, ""),
("include/X11/XF86keysym.h", xf86pattern, "XF86_"),
]
with TemporaryDirectory() as temp: with TemporaryDirectory() as temp:
run(["git", "clone", repo, "."], cwd=temp) run(["git", "clone", repo, "."], cwd=temp)
# text = Path(temp, 'keysymdef.h').read_text()
text = Path(temp, "include/X11/keysymdef.h").read_text() for filename, extraction_pattern, prefix in keysym_files:
for name, sym, uni in findall(pattern, text): text = Path(temp, filename).read_text()
sym = int(sym, 16) for name, sym, _ in findall(extraction_pattern, text):
uni = int(uni, 16) if uni else None sym = int(sym, 16)
if keysymdef.get(name, None): if keysymdef.get(f"{prefix}{name}", None):
print("KEY DUP", name) print(f"KEY DUP {prefix}{name}")
keysymdef[name] = sym keysymdef[f"{prefix}{name}"] = sym
# text = Path(temp, 'keysymdef.h').read_text()
text = Path(temp, "include/X11/XF86keysym.h").read_text()
for name, sym, uni in findall(xf86pattern, text):
sym = int(sym, 16)
uni = int(uni, 16) if uni else None
if keysymdef.get("XF86_" + name, None):
print("KEY DUP", "XF86_" + name)
keysymdef["XF86_" + name] = sym
with open("keysymdef.py", "w") as f: with open("keysymdef.py", "w") as f:
f.write("# flake8: noqa\nkeysymdef = \\\n") f.write("# flake8: noqa\nkey_symbols = \\\n")
pprint(keysymdef, f) pprint(keysymdef, f)

View File

@ -1,5 +1,5 @@
# flake8: noqa # flake8: noqa
keysymdef = { key_symbols = {
"0": 48, "0": 48,
"1": 49, "1": 49,
"2": 50, "2": 50,

View File

@ -81,7 +81,7 @@ logger = logging.getLogger(__name__)
# Xtest extension to X11 - provides input simulation, partly works under Wayland # Xtest extension to X11 - provides input simulation, partly works under Wayland
# Wayland - provides input simulation # Wayland - provides input simulation
XK_KEYS: Dict[str, int] = keysymdef.keysymdef XK_KEYS: Dict[str, int] = keysymdef.key_symbols
# Event codes - can't use Xlib.X codes because Xlib might not be available # Event codes - can't use Xlib.X codes because Xlib might not be available
_KEY_RELEASE = 0 _KEY_RELEASE = 0