parent
f6b5e54890
commit
992de77040
@ -6,20 +6,10 @@ import string
|
|||||||
|
|
||||||
from . import fast_data_types as defines
|
from . import fast_data_types as defines
|
||||||
from .key_encoding import KEY_MAP
|
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
|
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):
|
def modify_complex_key(name, amt):
|
||||||
if not isinstance(name, bytes):
|
if not isinstance(name, bytes):
|
||||||
name = key_as_bytes(name)
|
name = key_as_bytes(name)
|
||||||
|
|||||||
@ -6,6 +6,22 @@ import re
|
|||||||
from binascii import hexlify, unhexlify
|
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'
|
names = 'xterm-kitty', 'KovIdTTY'
|
||||||
|
|
||||||
termcap_aliases = {
|
termcap_aliases = {
|
||||||
@ -156,54 +172,8 @@ string_capabilities = {
|
|||||||
# 'invis': r'\E[8m',
|
# 'invis': r'\E[8m',
|
||||||
# Backspace
|
# Backspace
|
||||||
'kbs': r'\177',
|
'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
|
# Mouse event has occurred
|
||||||
'kmous': r'\E[M',
|
'kmous': r'\E[M',
|
||||||
# Page down
|
|
||||||
'knp': r'\E[6~',
|
|
||||||
# Page up
|
|
||||||
'kpp': r'\E[5~',
|
|
||||||
# Scroll backwards (reverse index)
|
# Scroll backwards (reverse index)
|
||||||
'kri': r'\E[1;2A',
|
'kri': r'\E[1;2A',
|
||||||
# scroll forwards (index)
|
# scroll forwards (index)
|
||||||
@ -270,11 +240,6 @@ string_capabilities = {
|
|||||||
# Select alternate charset
|
# Select alternate charset
|
||||||
'smacs': r'\E(0',
|
'smacs': r'\E(0',
|
||||||
'rmacs': r'\E(B',
|
'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
|
# Special keys
|
||||||
'khlp': r'',
|
'khlp': r'',
|
||||||
'kund': r'',
|
'kund': r'',
|
||||||
@ -298,6 +263,27 @@ string_capabilities = {
|
|||||||
# 'rs2': r'\E[!p\E[?3;4l\E[4l\E>',
|
# '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({
|
termcap_aliases.update({
|
||||||
'ac': 'acsc',
|
'ac': 'acsc',
|
||||||
'bl': 'bel',
|
'bl': 'bel',
|
||||||
@ -346,31 +332,6 @@ termcap_aliases.update({
|
|||||||
'kd': 'kcud1',
|
'kd': 'kcud1',
|
||||||
'kr': 'kcuf1',
|
'kr': 'kcuf1',
|
||||||
'ku': 'kcuu1',
|
'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',
|
'kh': 'khome',
|
||||||
'@7': 'kend',
|
'@7': 'kend',
|
||||||
'kI': 'kich1',
|
'kI': 'kich1',
|
||||||
@ -410,8 +371,12 @@ termcap_aliases.update({
|
|||||||
'ks': 'smkx',
|
'ks': 'smkx',
|
||||||
'ke': 'rmkx',
|
'ke': 'rmkx',
|
||||||
'#2': 'kHOM',
|
'#2': 'kHOM',
|
||||||
|
'#3': 'kIC',
|
||||||
'#4': 'kLFT',
|
'#4': 'kLFT',
|
||||||
|
'*4': 'kDC',
|
||||||
'*7': 'kEND',
|
'*7': 'kEND',
|
||||||
|
'%c': 'kNXT',
|
||||||
|
'%e': 'kPRV',
|
||||||
'%i': 'kRIT',
|
'%i': 'kRIT',
|
||||||
'%1': 'khlp',
|
'%1': 'khlp',
|
||||||
'&8': 'kund',
|
'&8': 'kund',
|
||||||
@ -433,10 +398,22 @@ termcap_aliases.update({
|
|||||||
# 'r2': 'rs2',
|
# '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 = numeric_capabilities.copy()
|
||||||
queryable_capabilities.update(string_capabilities)
|
queryable_capabilities.update(string_capabilities)
|
||||||
extra = (bool_capabilities | numeric_capabilities.keys() | string_capabilities.keys()) - set(termcap_aliases.values())
|
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:
|
if extra - no_termcap_for:
|
||||||
raise Exception('Termcap aliases not complete, missing: {}'.format(extra - no_termcap_for))
|
raise Exception('Termcap aliases not complete, missing: {}'.format(extra - no_termcap_for))
|
||||||
del extra
|
del extra
|
||||||
|
|||||||
Binary file not shown.
@ -57,10 +57,66 @@ xterm-kitty|KovIdTTY,
|
|||||||
ind=^J,
|
ind=^J,
|
||||||
indn=\E[%p1%dS,
|
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\\,
|
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,
|
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,
|
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,
|
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,
|
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=,
|
ka1=,
|
||||||
ka3=,
|
ka3=,
|
||||||
kbs=\177,
|
kbs=\177,
|
||||||
@ -91,10 +147,48 @@ xterm-kitty|KovIdTTY,
|
|||||||
kf23=\E[23;2~,
|
kf23=\E[23;2~,
|
||||||
kf24=\E[24;2~,
|
kf24=\E[24;2~,
|
||||||
kf25=\E[1;5P,
|
kf25=\E[1;5P,
|
||||||
|
kf26=\E[1;5Q,
|
||||||
|
kf27=\E[1;5R,
|
||||||
|
kf28=\E[1;5S,
|
||||||
|
kf29=\E[15;5~,
|
||||||
kf3=\EOR,
|
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,
|
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~,
|
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~,
|
kf6=\E[17~,
|
||||||
|
kf60=\E[24;3~,
|
||||||
|
kf61=\E[1;4P,
|
||||||
|
kf62=\E[1;4Q,
|
||||||
|
kf63=\E[1;4R,
|
||||||
kf7=\E[18~,
|
kf7=\E[18~,
|
||||||
kf8=\E[19~,
|
kf8=\E[19~,
|
||||||
kf9=\E[20~,
|
kf9=\E[20~,
|
||||||
|
|||||||
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user