44 lines
1.5 KiB
Python
Executable File
44 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
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+))?'
|
|
|
|
|
|
def main():
|
|
keysymdef = {}
|
|
|
|
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
|
|
|
|
with open('keysymdef.py', 'w') as f:
|
|
f.write('# flake8: noqa\nkeysymdef = \\\n')
|
|
pprint(keysymdef, f)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|