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
"""Extract key symbol encodings from X11 header files."""
from pathlib import Path
from pprint import pprint
from re import findall
from subprocess import run
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"
pattern = r"#define XK_(\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():
keysymdef = {}
keysym_files = [
("include/X11/keysymdef.h", pattern, ""),
("include/X11/XF86keysym.h", xf86pattern, "XF86_"),
]
with TemporaryDirectory() as temp:
run(["git", "clone", repo, "."], cwd=temp)
# text = Path(temp, 'keysymdef.h').read_text()
text = Path(temp, "include/X11/keysymdef.h").read_text()
for name, sym, uni in findall(pattern, text):
sym = int(sym, 16)
uni = int(uni, 16) if uni else None
if keysymdef.get(name, None):
print("KEY DUP", name)
keysymdef[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
for filename, extraction_pattern, prefix in keysym_files:
text = Path(temp, filename).read_text()
for name, sym, _ in findall(extraction_pattern, text):
sym = int(sym, 16)
if keysymdef.get(f"{prefix}{name}", None):
print(f"KEY DUP {prefix}{name}")
keysymdef[f"{prefix}{name}"] = sym
with open("keysymdef.py", "w") as f:
f.write("# flake8: noqa\nkeysymdef = \\\n")
f.write("# flake8: noqa\nkey_symbols = \\\n")
pprint(keysymdef, f)

View File

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

View File

@ -81,7 +81,7 @@ logger = logging.getLogger(__name__)
# Xtest extension to X11 - provides input simulation, partly works under Wayland
# 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
_KEY_RELEASE = 0