parent
f6b5e54890
commit
992de77040
@ -6,20 +6,10 @@ import string
|
||||
|
||||
from . import fast_data_types as defines
|
||||
from .key_encoding import KEY_MAP
|
||||
from .terminfo import key_as_bytes
|
||||
from .terminfo import key_as_bytes, modify_key_bytes
|
||||
from .utils import base64_encode
|
||||
|
||||
|
||||
def modify_key_bytes(keybytes, amt):
|
||||
ans = bytearray(keybytes)
|
||||
amt = str(amt).encode('ascii')
|
||||
if ans[-1] == ord('~'):
|
||||
return bytes(ans[:-1] + bytearray(b';' + amt + b'~'))
|
||||
if ans[1] == ord('O'):
|
||||
return bytes(ans[:1] + bytearray(b'[1;' + amt) + ans[-1:])
|
||||
raise ValueError('Unknown key type in key: {!r}'.format(keybytes))
|
||||
|
||||
|
||||
def modify_complex_key(name, amt):
|
||||
if not isinstance(name, bytes):
|
||||
name = key_as_bytes(name)
|
||||
|
||||
@ -6,6 +6,22 @@ import re
|
||||
from binascii import hexlify, unhexlify
|
||||
|
||||
|
||||
def modify_key_bytes(keybytes, amt):
|
||||
if amt == 0:
|
||||
return keybytes
|
||||
ans = bytearray(keybytes)
|
||||
amt = str(amt).encode('ascii')
|
||||
if ans[-1] == ord('~'):
|
||||
return bytes(ans[:-1] + bytearray(b';' + amt + b'~'))
|
||||
if ans[1] == ord('O'):
|
||||
return bytes(ans[:1] + bytearray(b'[1;' + amt) + ans[-1:])
|
||||
raise ValueError('Unknown key type in key: {!r}'.format(keybytes))
|
||||
|
||||
|
||||
def encode_keystring(keybytes):
|
||||
return keybytes.decode('ascii').replace('\033', r'\E')
|
||||
|
||||
|
||||
names = 'xterm-kitty', 'KovIdTTY'
|
||||
|
||||
termcap_aliases = {
|
||||
@ -156,54 +172,8 @@ string_capabilities = {
|
||||
# 'invis': r'\E[8m',
|
||||
# Backspace
|
||||
'kbs': r'\177',
|
||||
# Left
|
||||
'kcub1': r'\EOD',
|
||||
# Down
|
||||
'kcud1': r'\EOB',
|
||||
# Right
|
||||
'kcuf1': r'\EOC',
|
||||
# Up
|
||||
'kcuu1': r'\EOA',
|
||||
# Function keys
|
||||
'kf1': r'\EOP',
|
||||
'kf2': r'\EOQ',
|
||||
'kf3': r'\EOR',
|
||||
'kf4': r'\EOS',
|
||||
'kf5': r'\E[15~',
|
||||
'kf6': r'\E[17~',
|
||||
'kf7': r'\E[18~',
|
||||
'kf8': r'\E[19~',
|
||||
'kf9': r'\E[20~',
|
||||
'kf10': r'\E[21~',
|
||||
'kf11': r'\E[23~',
|
||||
'kf12': r'\E[24~',
|
||||
'kf13': r'\E[1;2P',
|
||||
'kf14': r'\E[1;2Q',
|
||||
'kf15': r'\E[1;2R',
|
||||
'kf16': r'\E[1;2S',
|
||||
'kf17': r'\E[15;2~',
|
||||
'kf18': r'\E[17;2~',
|
||||
'kf19': r'\E[18;2~',
|
||||
'kf20': r'\E[19;2~',
|
||||
'kf21': r'\E[20;2~',
|
||||
'kf22': r'\E[21;2~',
|
||||
'kf23': r'\E[23;2~',
|
||||
'kf24': r'\E[24;2~',
|
||||
'kf25': r'\E[1;5P',
|
||||
# Home
|
||||
'khome': r'\EOH',
|
||||
# End
|
||||
'kend': r'\EOF',
|
||||
# Insert character key
|
||||
'kich1': r'\E[2~',
|
||||
# Delete character key
|
||||
'kdch1': r'\E[3~',
|
||||
# Mouse event has occurred
|
||||
'kmous': r'\E[M',
|
||||
# Page down
|
||||
'knp': r'\E[6~',
|
||||
# Page up
|
||||
'kpp': r'\E[5~',
|
||||
# Scroll backwards (reverse index)
|
||||
'kri': r'\E[1;2A',
|
||||
# scroll forwards (index)
|
||||
@ -270,11 +240,6 @@ string_capabilities = {
|
||||
# Select alternate charset
|
||||
'smacs': r'\E(0',
|
||||
'rmacs': r'\E(B',
|
||||
# Shifted keys
|
||||
'kRIT': r'\E[1;2C',
|
||||
'kLFT': r'\E[1;2D',
|
||||
'kEND': r'\E[1;2F',
|
||||
'kHOM': r'\E[1;2H',
|
||||
# Special keys
|
||||
'khlp': r'',
|
||||
'kund': r'',
|
||||
@ -298,6 +263,27 @@ string_capabilities = {
|
||||
# 'rs2': r'\E[!p\E[?3;4l\E[4l\E>',
|
||||
}
|
||||
|
||||
string_capabilities.update({
|
||||
'kf{}'.format(offset + n):
|
||||
encode_keystring(modify_key_bytes(b'\033' + value, mod))
|
||||
for offset, mod in {0: 0, 12: 2, 24: 5, 36: 6, 48: 3, 60: 4}.items()
|
||||
for n, value in zip(range(1, 13),
|
||||
b'OP OQ OR OS [15~ [17~ [18~ [19~ [20~ [21~ [23~ [24~'.split())
|
||||
if offset + n < 64
|
||||
})
|
||||
|
||||
string_capabilities.update({
|
||||
name.format(unmod=unmod, key=key):
|
||||
encode_keystring(modify_key_bytes(b'\033' + value, mod))
|
||||
for unmod, key, value in zip(
|
||||
'cuu1 cud1 cuf1 cub1 end home ich1 dch1 pp np'.split(),
|
||||
'UP DN RIT LFT END HOM IC DC PRV NXT'.split(),
|
||||
b'OA OB OC OD OF OH [2~ [3~ [5~ [6~'.split())
|
||||
for name, mod in {
|
||||
'k{unmod}': 0, 'k{key}': 2, 'k{key}3': 3, 'k{key}4': 4,
|
||||
'k{key}5': 5, 'k{key}6': 6, 'k{key}7': 7}.items()
|
||||
})
|
||||
|
||||
termcap_aliases.update({
|
||||
'ac': 'acsc',
|
||||
'bl': 'bel',
|
||||
@ -346,31 +332,6 @@ termcap_aliases.update({
|
||||
'kd': 'kcud1',
|
||||
'kr': 'kcuf1',
|
||||
'ku': 'kcuu1',
|
||||
'k1': 'kf1',
|
||||
'k2': 'kf2',
|
||||
'k3': 'kf3',
|
||||
'k4': 'kf4',
|
||||
'k5': 'kf5',
|
||||
'k6': 'kf6',
|
||||
'k7': 'kf7',
|
||||
'k8': 'kf8',
|
||||
'k9': 'kf9',
|
||||
'k;': 'kf10',
|
||||
'F1': 'kf11',
|
||||
'F2': 'kf12',
|
||||
'F3': 'kf13',
|
||||
'F4': 'kf14',
|
||||
'F5': 'kf15',
|
||||
'F6': 'kf16',
|
||||
'F7': 'kf17',
|
||||
'F8': 'kf18',
|
||||
'F9': 'kf19',
|
||||
'FA': 'kf20',
|
||||
'FB': 'kf21',
|
||||
'FC': 'kf22',
|
||||
'FD': 'kf23',
|
||||
'FE': 'kf24',
|
||||
'FF': 'kf25',
|
||||
'kh': 'khome',
|
||||
'@7': 'kend',
|
||||
'kI': 'kich1',
|
||||
@ -410,8 +371,12 @@ termcap_aliases.update({
|
||||
'ks': 'smkx',
|
||||
'ke': 'rmkx',
|
||||
'#2': 'kHOM',
|
||||
'#3': 'kIC',
|
||||
'#4': 'kLFT',
|
||||
'*4': 'kDC',
|
||||
'*7': 'kEND',
|
||||
'%c': 'kNXT',
|
||||
'%e': 'kPRV',
|
||||
'%i': 'kRIT',
|
||||
'%1': 'khlp',
|
||||
'&8': 'kund',
|
||||
@ -433,10 +398,22 @@ termcap_aliases.update({
|
||||
# 'r2': 'rs2',
|
||||
})
|
||||
|
||||
termcap_aliases.update({
|
||||
tc: 'kf{}'.format(n)
|
||||
for n, tc in enumerate(
|
||||
'k1 k2 k3 k4 k5 k6 k7 k8 k9 k; F1 F2 F3 F4 F5 F6 F7 F8 F9 FA '
|
||||
'FB FC FD FE FF FG FH FI FJ FK FL FM FN FO FP FQ FR FS FT FU '
|
||||
'FV FW FX FY FZ Fa Fb Fc Fd Fe Ff Fg Fh Fi Fj Fk Fl Fm Fn Fo '
|
||||
'Fp Fq Fr'.split(), 1)})
|
||||
|
||||
queryable_capabilities = numeric_capabilities.copy()
|
||||
queryable_capabilities.update(string_capabilities)
|
||||
extra = (bool_capabilities | numeric_capabilities.keys() | string_capabilities.keys()) - set(termcap_aliases.values())
|
||||
no_termcap_for = frozenset('Su Tc setrgbf setrgbb fullkbd'.split())
|
||||
no_termcap_for = frozenset(
|
||||
'Su Tc setrgbf setrgbb fullkbd kUP kDN'.split() + [
|
||||
'k{}{}'.format(key, mod)
|
||||
for key in 'UP DN RIT LFT END HOM IC DC PRV NXT'.split()
|
||||
for mod in range(3, 8)])
|
||||
if extra - no_termcap_for:
|
||||
raise Exception('Termcap aliases not complete, missing: {}'.format(extra - no_termcap_for))
|
||||
del extra
|
||||
|
||||
Binary file not shown.
@ -57,10 +57,66 @@ xterm-kitty|KovIdTTY,
|
||||
ind=^J,
|
||||
indn=\E[%p1%dS,
|
||||
initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
|
||||
kDC=\E[3;2~,
|
||||
kDC3=\E[3;3~,
|
||||
kDC4=\E[3;4~,
|
||||
kDC5=\E[3;5~,
|
||||
kDC6=\E[3;6~,
|
||||
kDC7=\E[3;7~,
|
||||
kDN=\E[1;2B,
|
||||
kDN3=\E[1;3B,
|
||||
kDN4=\E[1;4B,
|
||||
kDN5=\E[1;5B,
|
||||
kDN6=\E[1;6B,
|
||||
kDN7=\E[1;7B,
|
||||
kEND=\E[1;2F,
|
||||
kEND3=\E[1;3F,
|
||||
kEND4=\E[1;4F,
|
||||
kEND5=\E[1;5F,
|
||||
kEND6=\E[1;6F,
|
||||
kEND7=\E[1;7F,
|
||||
kHOM=\E[1;2H,
|
||||
kHOM3=\E[1;3H,
|
||||
kHOM4=\E[1;4H,
|
||||
kHOM5=\E[1;5H,
|
||||
kHOM6=\E[1;6H,
|
||||
kHOM7=\E[1;7H,
|
||||
kIC=\E[2;2~,
|
||||
kIC3=\E[2;3~,
|
||||
kIC4=\E[2;4~,
|
||||
kIC5=\E[2;5~,
|
||||
kIC6=\E[2;6~,
|
||||
kIC7=\E[2;7~,
|
||||
kLFT=\E[1;2D,
|
||||
kLFT3=\E[1;3D,
|
||||
kLFT4=\E[1;4D,
|
||||
kLFT5=\E[1;5D,
|
||||
kLFT6=\E[1;6D,
|
||||
kLFT7=\E[1;7D,
|
||||
kNXT=\E[6;2~,
|
||||
kNXT3=\E[6;3~,
|
||||
kNXT4=\E[6;4~,
|
||||
kNXT5=\E[6;5~,
|
||||
kNXT6=\E[6;6~,
|
||||
kNXT7=\E[6;7~,
|
||||
kPRV=\E[5;2~,
|
||||
kPRV3=\E[5;3~,
|
||||
kPRV4=\E[5;4~,
|
||||
kPRV5=\E[5;5~,
|
||||
kPRV6=\E[5;6~,
|
||||
kPRV7=\E[5;7~,
|
||||
kRIT=\E[1;2C,
|
||||
kRIT3=\E[1;3C,
|
||||
kRIT4=\E[1;4C,
|
||||
kRIT5=\E[1;5C,
|
||||
kRIT6=\E[1;6C,
|
||||
kRIT7=\E[1;7C,
|
||||
kUP=\E[1;2A,
|
||||
kUP3=\E[1;3A,
|
||||
kUP4=\E[1;4A,
|
||||
kUP5=\E[1;5A,
|
||||
kUP6=\E[1;6A,
|
||||
kUP7=\E[1;7A,
|
||||
ka1=,
|
||||
ka3=,
|
||||
kbs=\177,
|
||||
@ -91,10 +147,48 @@ xterm-kitty|KovIdTTY,
|
||||
kf23=\E[23;2~,
|
||||
kf24=\E[24;2~,
|
||||
kf25=\E[1;5P,
|
||||
kf26=\E[1;5Q,
|
||||
kf27=\E[1;5R,
|
||||
kf28=\E[1;5S,
|
||||
kf29=\E[15;5~,
|
||||
kf3=\EOR,
|
||||
kf30=\E[17;5~,
|
||||
kf31=\E[18;5~,
|
||||
kf32=\E[19;5~,
|
||||
kf33=\E[20;5~,
|
||||
kf34=\E[21;5~,
|
||||
kf35=\E[23;5~,
|
||||
kf36=\E[24;5~,
|
||||
kf37=\E[1;6P,
|
||||
kf38=\E[1;6Q,
|
||||
kf39=\E[1;6R,
|
||||
kf4=\EOS,
|
||||
kf40=\E[1;6S,
|
||||
kf41=\E[15;6~,
|
||||
kf42=\E[17;6~,
|
||||
kf43=\E[18;6~,
|
||||
kf44=\E[19;6~,
|
||||
kf45=\E[20;6~,
|
||||
kf46=\E[21;6~,
|
||||
kf47=\E[23;6~,
|
||||
kf48=\E[24;6~,
|
||||
kf49=\E[1;3P,
|
||||
kf5=\E[15~,
|
||||
kf50=\E[1;3Q,
|
||||
kf51=\E[1;3R,
|
||||
kf52=\E[1;3S,
|
||||
kf53=\E[15;3~,
|
||||
kf54=\E[17;3~,
|
||||
kf55=\E[18;3~,
|
||||
kf56=\E[19;3~,
|
||||
kf57=\E[20;3~,
|
||||
kf58=\E[21;3~,
|
||||
kf59=\E[23;3~,
|
||||
kf6=\E[17~,
|
||||
kf60=\E[24;3~,
|
||||
kf61=\E[1;4P,
|
||||
kf62=\E[1;4Q,
|
||||
kf63=\E[1;4R,
|
||||
kf7=\E[18~,
|
||||
kf8=\E[19~,
|
||||
kf9=\E[20~,
|
||||
|
||||
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user