diff --git a/docs/keyboard-protocol.rst b/docs/keyboard-protocol.rst index 1b6a62762..0760e0741 100644 --- a/docs/keyboard-protocol.rst +++ b/docs/keyboard-protocol.rst @@ -480,112 +480,60 @@ compatibility reasons. .. start functional key table (auto generated by gen-key-constants.py do not edit) .. csv-table:: Functional key codes - :header: "Name", "CSI sequence" + :header: "Name", "CSI", "Name", "CSI" - "ESCAPE", "CSI 27 u" - "ENTER", "CSI 13 u" - "TAB", "CSI 9 u" - "BACKSPACE", "CSI 127 u" - "INSERT", "CSI 2 ~" - "DELETE", "CSI 3 ~" - "LEFT", "CSI 1 D" - "RIGHT", "CSI 1 C" - "UP", "CSI 1 A" - "DOWN", "CSI 1 B" - "PAGE_UP", "CSI 5 ~" - "PAGE_DOWN", "CSI 6 ~" - "HOME", "CSI 1 H or CSI 7 ~" - "END", "CSI 1 F or CSI 8 ~" - "CAPS_LOCK", "CSI 57358 u" - "SCROLL_LOCK", "CSI 57359 u" - "NUM_LOCK", "CSI 57360 u" - "PRINT_SCREEN", "CSI 57361 u" - "PAUSE", "CSI 57362 u" - "MENU", "CSI 57363 u" - "F1", "CSI 1 P or CSI 11 ~" - "F2", "CSI 1 Q or CSI 12 ~" - "F3", "CSI 1 R or CSI 13 ~" - "F4", "CSI 1 S or CSI 14 ~" - "F5", "CSI 15 ~" - "F6", "CSI 17 ~" - "F7", "CSI 18 ~" - "F8", "CSI 19 ~" - "F9", "CSI 20 ~" - "F10", "CSI 21 ~" - "F11", "CSI 23 ~" - "F12", "CSI 24 ~" - "F13", "CSI 57376 u" - "F14", "CSI 57377 u" - "F15", "CSI 57378 u" - "F16", "CSI 57379 u" - "F17", "CSI 57380 u" - "F18", "CSI 57381 u" - "F19", "CSI 57382 u" - "F20", "CSI 57383 u" - "F21", "CSI 57384 u" - "F22", "CSI 57385 u" - "F23", "CSI 57386 u" - "F24", "CSI 57387 u" - "F25", "CSI 57388 u" - "F26", "CSI 57389 u" - "F27", "CSI 57390 u" - "F28", "CSI 57391 u" - "F29", "CSI 57392 u" - "F30", "CSI 57393 u" - "F31", "CSI 57394 u" - "F32", "CSI 57395 u" - "F33", "CSI 57396 u" - "F34", "CSI 57397 u" - "F35", "CSI 57398 u" - "KP_0", "CSI 57399 u" - "KP_1", "CSI 57400 u" - "KP_2", "CSI 57401 u" - "KP_3", "CSI 57402 u" - "KP_4", "CSI 57403 u" - "KP_5", "CSI 57404 u" - "KP_6", "CSI 57405 u" - "KP_7", "CSI 57406 u" - "KP_8", "CSI 57407 u" - "KP_9", "CSI 57408 u" - "KP_DECIMAL", "CSI 57409 u" - "KP_DIVIDE", "CSI 57410 u" - "KP_MULTIPLY", "CSI 57411 u" - "KP_SUBTRACT", "CSI 57412 u" - "KP_ADD", "CSI 57413 u" - "KP_ENTER", "CSI 57414 u" - "KP_EQUAL", "CSI 57415 u" - "KP_SEPARATOR", "CSI 57416 u" - "KP_LEFT", "CSI 57417 u" - "KP_RIGHT", "CSI 57418 u" - "KP_UP", "CSI 57419 u" - "KP_DOWN", "CSI 57420 u" - "KP_PAGE_UP", "CSI 57421 u" - "KP_PAGE_DOWN", "CSI 57422 u" - "KP_HOME", "CSI 57423 u" - "KP_END", "CSI 57424 u" - "KP_INSERT", "CSI 57425 u" - "KP_DELETE", "CSI 57426 u" - "LEFT_SHIFT", "CSI 57427 u" - "LEFT_CONTROL", "CSI 57428 u" - "LEFT_ALT", "CSI 57429 u" - "LEFT_SUPER", "CSI 57430 u" - "RIGHT_SHIFT", "CSI 57431 u" - "RIGHT_CONTROL", "CSI 57432 u" - "RIGHT_ALT", "CSI 57433 u" - "RIGHT_SUPER", "CSI 57434 u" - "MEDIA_PLAY", "CSI 57435 u" - "MEDIA_PAUSE", "CSI 57436 u" - "MEDIA_PLAY_PAUSE", "CSI 57437 u" - "MEDIA_REVERSE", "CSI 57438 u" - "MEDIA_STOP", "CSI 57439 u" - "MEDIA_FAST_FORWARD", "CSI 57440 u" - "MEDIA_REWIND", "CSI 57441 u" - "MEDIA_TRACK_NEXT", "CSI 57442 u" - "MEDIA_TRACK_PREVIOUS", "CSI 57443 u" - "MEDIA_RECORD", "CSI 57444 u" - "LOWER_VOLUME", "CSI 57445 u" - "RAISE_VOLUME", "CSI 57446 u" - "MUTE_VOLUME", "CSI 57447 u" + "ESCAPE", "``27 u``", "ENTER", "``13 u``" + "TAB", "``9 u``", "BACKSPACE", "``127 u``" + "INSERT", "``2 ~``", "DELETE", "``3 ~``" + "LEFT", "``1 D``", "RIGHT", "``1 C``" + "UP", "``1 A``", "DOWN", "``1 B``" + "PAGE_UP", "``5 ~``", "PAGE_DOWN", "``6 ~``" + "HOME", "``1 H or CSI 7 ~``", "END", "``1 F or CSI 8 ~``" + "CAPS_LOCK", "``57358 u``", "SCROLL_LOCK", "``57359 u``" + "NUM_LOCK", "``57360 u``", "PRINT_SCREEN", "``57361 u``" + "PAUSE", "``57362 u``", "MENU", "``57363 u``" + "F1", "``1 P or CSI 11 ~``", "F2", "``1 Q or CSI 12 ~``" + "F3", "``1 R or CSI 13 ~``", "F4", "``1 S or CSI 14 ~``" + "F5", "``15 ~``", "F6", "``17 ~``" + "F7", "``18 ~``", "F8", "``19 ~``" + "F9", "``20 ~``", "F10", "``21 ~``" + "F11", "``23 ~``", "F12", "``24 ~``" + "F13", "``57376 u``", "F14", "``57377 u``" + "F15", "``57378 u``", "F16", "``57379 u``" + "F17", "``57380 u``", "F18", "``57381 u``" + "F19", "``57382 u``", "F20", "``57383 u``" + "F21", "``57384 u``", "F22", "``57385 u``" + "F23", "``57386 u``", "F24", "``57387 u``" + "F25", "``57388 u``", "F26", "``57389 u``" + "F27", "``57390 u``", "F28", "``57391 u``" + "F29", "``57392 u``", "F30", "``57393 u``" + "F31", "``57394 u``", "F32", "``57395 u``" + "F33", "``57396 u``", "F34", "``57397 u``" + "F35", "``57398 u``", "KP_0", "``57399 u``" + "KP_1", "``57400 u``", "KP_2", "``57401 u``" + "KP_3", "``57402 u``", "KP_4", "``57403 u``" + "KP_5", "``57404 u``", "KP_6", "``57405 u``" + "KP_7", "``57406 u``", "KP_8", "``57407 u``" + "KP_9", "``57408 u``", "KP_DECIMAL", "``57409 u``" + "KP_DIVIDE", "``57410 u``", "KP_MULTIPLY", "``57411 u``" + "KP_SUBTRACT", "``57412 u``", "KP_ADD", "``57413 u``" + "KP_ENTER", "``57414 u``", "KP_EQUAL", "``57415 u``" + "KP_SEPARATOR", "``57416 u``", "KP_LEFT", "``57417 u``" + "KP_RIGHT", "``57418 u``", "KP_UP", "``57419 u``" + "KP_DOWN", "``57420 u``", "KP_PAGE_UP", "``57421 u``" + "KP_PAGE_DOWN", "``57422 u``", "KP_HOME", "``57423 u``" + "KP_END", "``57424 u``", "KP_INSERT", "``57425 u``" + "KP_DELETE", "``57426 u``", "LEFT_SHIFT", "``57427 u``" + "LEFT_CONTROL", "``57428 u``", "LEFT_ALT", "``57429 u``" + "LEFT_SUPER", "``57430 u``", "RIGHT_SHIFT", "``57431 u``" + "RIGHT_CONTROL", "``57432 u``", "RIGHT_ALT", "``57433 u``" + "RIGHT_SUPER", "``57434 u``", "MEDIA_PLAY", "``57435 u``" + "MEDIA_PAUSE", "``57436 u``", "MEDIA_PLAY_PAUSE", "``57437 u``" + "MEDIA_REVERSE", "``57438 u``", "MEDIA_STOP", "``57439 u``" + "MEDIA_FAST_FORWARD", "``57440 u``", "MEDIA_REWIND", "``57441 u``" + "MEDIA_TRACK_NEXT", "``57442 u``", "MEDIA_TRACK_PREVIOUS", "``57443 u``" + "MEDIA_RECORD", "``57444 u``", "LOWER_VOLUME", "``57445 u``" + "RAISE_VOLUME", "``57446 u``", "MUTE_VOLUME", "``57447 u``" .. end functional key table .. }}} @@ -612,12 +560,12 @@ Any ASCII keys not in the table must be left untouched by :kbd:`ctrl`. .. csv-table:: Emitted bytes when :kbd:`ctrl` is held down and a key is pressed :header: "Key", "Byte", "Key", "Byte", "Key", "Byte" - " ", "0", "/", "31", "0", "48" + "SPC ", "0", "/", "31", "0", "48" "1", "49", "2", "0", "3", "27" "4", "28", "5", "29", "6", "30" "7", "31", "8", "127", "9", "57" "?", "127", "@", "0", "[", "27" - "\", "28", "]", "29", "^", "30" + "\\", "28", "]", "29", "^", "30" "_", "31", "a", "1", "b", "2" "c", "3", "d", "4", "e", "5" "f", "6", "g", "7", "h", "8" diff --git a/gen-key-constants.py b/gen-key-constants.py index dd58b378e..0d712aa20 100644 --- a/gen-key-constants.py +++ b/gen-key-constants.py @@ -214,9 +214,10 @@ def generate_functional_table() -> None: lines = [ '', '.. csv-table:: Functional key codes', - ' :header: "Name", "CSI sequence"', + ' :header: "Name", "CSI", "Name", "CSI"', '' ] + line_items = [] enc_lines = [] tilde_trailers = set() for name, code in name_to_code.items(): @@ -228,11 +229,13 @@ def generate_functional_table() -> None: code = code if trailer in '~u' else 1 enc_lines.append((' ' * 8) + f"case GLFW_FKEY_{name.upper()}: S({code}, '{trailer}');") if code == 1 and name not in ('up', 'down', 'left', 'right'): - trailer += f' or CSI {oc} ~' + trailer += f' or {oc} ~' else: trailer = 'u' - name = f'"{name.upper()}",'.ljust(25) - lines.append(f' {name} "CSI {code} {trailer}"') + line_items.append(name.upper()) + line_items.append(f'``{code}\xa0{trailer}``') + for li in chunks(line_items, 4): + lines.append(' ' + ', '.join(f'"{x}"' for x in li)) lines.append('') patch_file('docs/keyboard-protocol.rst', 'functional key table', '\n'.join(lines), start_marker='.. ', end_marker='') patch_file('kitty/key_encoding.c', 'special numbers', '\n'.join(enc_lines)) @@ -298,7 +301,8 @@ def generate_ctrl_mapping() -> None: items = [] mi = [] for k in sorted(ctrl_mapping): - items.append(k) + prefix = '\\' if k == '\\' else ('SPC' if k == ' ' else '') + items.append(prefix + k) val = str(ctrl_mapping[k]) items.append(val) if k in "\\'":