Remove glfw key constants

This commit is contained in:
Kovid Goyal
2021-01-12 07:07:37 +05:30
parent f06eee8fe1
commit 774a6c8c8b
9 changed files with 609 additions and 1305 deletions

View File

@@ -142,6 +142,7 @@ last_code = start_code + len(functional_key_names) - 1
def patch_file(path: str, what: str, text: str, start_marker: str = '/* ', end_marker: str = ' */') -> None:
simple_start_q = f'{start_marker}start {what}{end_marker}'
start_q = f'{start_marker}start {what} (auto generated by gen-key-constants.py do not edit){end_marker}'
end_q = f'{start_marker}end {what}{end_marker}'
@@ -150,7 +151,10 @@ def patch_file(path: str, what: str, text: str, start_marker: str = '/* ', end_m
try:
start = raw.index(start_q)
except ValueError:
raise SystemExit(f'Failed to find "{start_q}" in {path}')
try:
start = raw.index(simple_start_q)
except ValueError:
raise SystemExit(f'Failed to find "{simple_start_q}" in {path}')
try:
end = raw.index(end_q)
except ValueError:
@@ -164,13 +168,20 @@ def patch_file(path: str, what: str, text: str, start_marker: str = '/* ', end_m
def generate_glfw_header() -> None:
lines = [
'typedef enum {',
f' GLFW_FKEY_FIRST = 0x{start_code:x},',
f' GLFW_FKEY_FIRST = 0x{start_code:x}u,',
]
klines, pyi, names = [], [], []
for name, code in name_to_code.items():
lines.append(f' GLFW_FKEY_{name.upper()} = 0x{code:x},')
lines.append(f' GLFW_FKEY_LAST = 0x{last_code:x}')
lines.append(f' GLFW_FKEY_{name.upper()} = 0x{code:x}u,')
klines.append(f' ADDC(GLFW_FKEY_{name.upper()});')
pyi.append(f'GLFW_FKEY_{name.upper()}: int')
names.append(f' case GLFW_FKEY_{name.upper()}: return "{name.upper()}";')
lines.append(f' GLFW_FKEY_LAST = 0x{last_code:x}u')
lines.append('} GLFWFunctionKey;')
patch_file('glfw/glfw3.h', 'functional key names', '\n'.join(lines))
patch_file('kitty/glfw.c', 'glfw functional keys', '\n'.join(klines))
patch_file('kitty/fast_data_types.pyi', 'glfw functional keys', '\n'.join(klines), start_marker='# ', end_marker='')
patch_file('glfw/input.c', 'functional key names', '\n'.join(names))
def generate_xkb_mapping() -> None: