mirror of
https://github.com/vim/vim.git
synced 2025-10-24 08:54:47 -04:00
patch 9.1.1736: Cannot detect <F3> using kitty protocol
Problem: Cannot detect <F3> using kitty protocol Solution: Handle and detect Kitty keys when using the trailing "~" byte fixes: #18100 closes: #18126 Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
@@ -1 +1,153 @@
|
||||
{"31kitty":{"Space":"20","modkeys":"","version":"1b5b3e313b343030303b323163","C-Tab":"","A-Esc":"1b5b32373b313175","C-Space":"1b5b33323b3575","S-C-I":"1b5b3130353b3675","C-I":"1b5b3130353b3575","S-Tab":"1b5b393b3275","Tab":"09","resource":"","A-Tab":"1b5b393b313175","S-Space":"20","C-Esc":"1b5b32373b3575","kitty":"1b5b3f3175","protocol":"kitty","A-Space":"1b5b33323b313175","S-Esc":"1b5b32373b3275","Esc":"1b5b323775"},"32libvterm":{"Space":"20","modkeys":"","version":"1b5b3e303b3130303b3063","C-Tab":"","A-Esc":"1b5b32373b3375","C-Space":"1b5b33323b3575","S-C-I":"1b5b3130353b3675","C-I":"1b5b3130353b3575","S-Tab":"1b5b393b3275","Tab":"09","resource":"","A-Tab":"1b5b393b3375","S-Space":"20","C-Esc":"1b5b32373b3575","kitty":"1b5b3f3175","protocol":"kitty","A-Space":"1b5b33323b3375","S-Esc":"1b5b32373b3275","Esc":"1b5b323775"},"22libvterm":{"Space":"20","modkeys":"\u001b[>4;2m","version":"1b5b3e303b3130303b3063","C-Tab":"1b5b32373b353b397e","A-Esc":"1b5b32373b333b32377e","C-Space":"1b5b32373b353b33327e","S-C-I":"1b5b32373b363b37337e","C-I":"1b5b32373b353b3130357e","S-Tab":"1b5b5a","Tab":"09","resource":"","A-Tab":"1b5b32373b333b397e","S-Space":"1b5b32373b323b33327e","C-Esc":"1b5b32373b353b32377e","kitty":"","protocol":"mok2","A-Space":"1b5b32373b333b33327e","S-Esc":"1b5b32373b323b32377e","Esc":"1b"},"13kitty":{"Space":"20","modkeys":"","version":"1b5b3e313b343030303b323163","C-Tab":"","A-Esc":"1b1b","S-C-I":"1b5b3130353b3675","C-I":"09","S-Tab":"1b5b5a","Tab":"09","S-Space":"20","A-Tab":"1b09","resource":"","C-Esc":"1b","kitty":"1b5b3f3075","protocol":"none","A-Space":"1b5b33323b313175","S-Esc":"1b","Esc":"1b"},"21xterm":{"Space":"20","modkeys":"\u001b[>4;2m","version":"1b5b3e34313b3337373b3063","C-Tab":"1b5b32373b353b397e","A-Esc":"1b5b32373b333b32377e","C-Space":"1b5b32373b353b33327e","S-C-I":"1b5b32373b363b37337e","C-I":"1b5b32373b353b3130357e","S-Tab":"1b5b5a","Tab":"09","resource":"=30","A-Tab":"1b5b32373b333b397e","S-Space":"1b5b32373b323b33327e","C-Esc":"1b5b32373b353b32377e","kitty":"","protocol":"mok2","A-Space":"1b5b32373b333b33327e","S-Esc":"1b5b32373b323b32377e","Esc":"1b"},"12libvterm":{"Space":"20","modkeys":"\u001b[>4;0m","version":"1b5b3e303b3130303b3063","C-Tab":"1b5b393b3575","A-Esc":"9b00","S-C-I":"1b5b5a","C-I":"09","S-Tab":"1b5b5a","Tab":"09","resource":"","A-Tab":"8900","S-Space":"1b5b33323b3275","C-Esc":"1b5b32373b3575","kitty":"1b5b3f3075","protocol":"none","A-Space":"a000","S-Esc":"1b5b32373b3275","Esc":"1b"},"11xterm":{"Space":"20","modkeys":"\u001b[>4;0m","version":"1b5b3e34313b3337373b3063","C-Tab":"09","A-Esc":"9b00","S-C-I":"09","C-I":"09","S-Tab":"1b5b5a","Tab":"09","S-Space":"20","A-Tab":"8900","resource":"","C-Esc":"1b","kitty":"","protocol":"none","A-Space":"a000","S-Esc":"1b","Esc":"1b"}}
|
||||
{
|
||||
"31kitty": {
|
||||
"Space": "20",
|
||||
"modkeys": "",
|
||||
"version": "1b5b3e313b343030303b323163",
|
||||
"C-Tab": "",
|
||||
"A-Esc": "1b5b32373b313175",
|
||||
"C-Space": "1b5b33323b3575",
|
||||
"S-C-I": "1b5b3130353b3675",
|
||||
"C-I": "1b5b3130353b3575",
|
||||
"S-Tab": "1b5b393b3275",
|
||||
"Tab": "09",
|
||||
"resource": "",
|
||||
"A-Tab": "1b5b393b313175",
|
||||
"S-Space": "20",
|
||||
"C-Esc": "1b5b32373b3575",
|
||||
"kitty": "1b5b3f3175",
|
||||
"protocol": "kitty",
|
||||
"A-Space": "1b5b33323b313175",
|
||||
"S-Esc": "1b5b32373b3275",
|
||||
"Esc": "1b5b323775",
|
||||
"F3": "1b5b31337e"
|
||||
},
|
||||
"32libvterm": {
|
||||
"Space": "20",
|
||||
"modkeys": "",
|
||||
"version": "1b5b3e303b3130303b3063",
|
||||
"C-Tab": "",
|
||||
"A-Esc": "1b5b32373b3375",
|
||||
"C-Space": "1b5b33323b3575",
|
||||
"S-C-I": "1b5b3130353b3675",
|
||||
"C-I": "1b5b3130353b3575",
|
||||
"S-Tab": "1b5b393b3275",
|
||||
"Tab": "09",
|
||||
"resource": "",
|
||||
"A-Tab": "1b5b393b3375",
|
||||
"S-Space": "20",
|
||||
"C-Esc": "1b5b32373b3575",
|
||||
"kitty": "1b5b3f3175",
|
||||
"protocol": "kitty",
|
||||
"A-Space": "1b5b33323b3375",
|
||||
"S-Esc": "1b5b32373b3275",
|
||||
"Esc": "1b5b323775",
|
||||
"F3": "1b4f52"
|
||||
},
|
||||
"22libvterm": {
|
||||
"Space": "20",
|
||||
"modkeys": "\u001b[>4;2m",
|
||||
"version": "1b5b3e303b3130303b3063",
|
||||
"C-Tab": "1b5b32373b353b397e",
|
||||
"A-Esc": "1b5b32373b333b32377e",
|
||||
"C-Space": "1b5b32373b353b33327e",
|
||||
"S-C-I": "1b5b32373b363b37337e",
|
||||
"C-I": "1b5b32373b353b3130357e",
|
||||
"S-Tab": "1b5b5a",
|
||||
"Tab": "09",
|
||||
"resource": "",
|
||||
"A-Tab": "1b5b32373b333b397e",
|
||||
"S-Space": "1b5b32373b323b33327e",
|
||||
"C-Esc": "1b5b32373b353b32377e",
|
||||
"kitty": "",
|
||||
"protocol": "mok2",
|
||||
"A-Space": "1b5b32373b333b33327e",
|
||||
"S-Esc": "1b5b32373b323b32377e",
|
||||
"Esc": "1b",
|
||||
"F3": "1b4f52"
|
||||
},
|
||||
"13kitty": {
|
||||
"Space": "20",
|
||||
"modkeys": "",
|
||||
"version": "1b5b3e313b343030303b323163",
|
||||
"C-Tab": "",
|
||||
"A-Esc": "1b1b",
|
||||
"S-C-I": "1b5b3130353b3675",
|
||||
"C-I": "09",
|
||||
"S-Tab": "1b5b5a",
|
||||
"Tab": "09",
|
||||
"S-Space": "20",
|
||||
"A-Tab": "1b09",
|
||||
"resource": "",
|
||||
"C-Esc": "1b",
|
||||
"kitty": "1b5b3f3075",
|
||||
"protocol": "none",
|
||||
"A-Space": "1b5b33323b313175",
|
||||
"S-Esc": "1b",
|
||||
"Esc": "1b",
|
||||
"F3": "1b4f52"
|
||||
},
|
||||
"21xterm": {
|
||||
"Space": "20",
|
||||
"modkeys": "\u001b[>4;2m",
|
||||
"version": "1b5b3e34313b3337373b3063",
|
||||
"C-Tab": "1b5b32373b353b397e",
|
||||
"A-Esc": "1b5b32373b333b32377e",
|
||||
"C-Space": "1b5b32373b353b33327e",
|
||||
"S-C-I": "1b5b32373b363b37337e",
|
||||
"C-I": "1b5b32373b353b3130357e",
|
||||
"S-Tab": "1b5b5a",
|
||||
"Tab": "09",
|
||||
"resource": "=30",
|
||||
"A-Tab": "1b5b32373b333b397e",
|
||||
"S-Space": "1b5b32373b323b33327e",
|
||||
"C-Esc": "1b5b32373b353b32377e",
|
||||
"kitty": "",
|
||||
"protocol": "mok2",
|
||||
"A-Space": "1b5b32373b333b33327e",
|
||||
"S-Esc": "1b5b32373b323b32377e",
|
||||
"Esc": "1b",
|
||||
"F3": "1b4f52"
|
||||
},
|
||||
"12libvterm": {
|
||||
"Space": "20",
|
||||
"modkeys": "\u001b[>4;0m",
|
||||
"version": "1b5b3e303b3130303b3063",
|
||||
"C-Tab": "1b5b393b3575",
|
||||
"A-Esc": "9b00",
|
||||
"S-C-I": "1b5b5a",
|
||||
"C-I": "09",
|
||||
"S-Tab": "1b5b5a",
|
||||
"Tab": "09",
|
||||
"resource": "",
|
||||
"A-Tab": "8900",
|
||||
"S-Space": "1b5b33323b3275",
|
||||
"C-Esc": "1b5b32373b3575",
|
||||
"kitty": "1b5b3f3075",
|
||||
"protocol": "none",
|
||||
"A-Space": "a000",
|
||||
"S-Esc": "1b5b32373b3275",
|
||||
"Esc": "1b",
|
||||
"F3": "1b4f52"
|
||||
},
|
||||
"11xterm": {
|
||||
"Space": "20",
|
||||
"modkeys": "\u001b[>4;0m",
|
||||
"version": "1b5b3e34313b3337373b3063",
|
||||
"C-Tab": "09",
|
||||
"A-Esc": "9b00",
|
||||
"S-C-I": "09",
|
||||
"C-I": "09",
|
||||
"S-Tab": "1b5b5a",
|
||||
"Tab": "09",
|
||||
"S-Space": "20",
|
||||
"A-Tab": "8900",
|
||||
"resource": "",
|
||||
"C-Esc": "1b",
|
||||
"kitty": "",
|
||||
"protocol": "none",
|
||||
"A-Space": "a000",
|
||||
"S-Esc": "1b",
|
||||
"Esc": "1b",
|
||||
"F3": "1b4f52"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,6 +74,7 @@ var key_entries = [
|
||||
['Shift-Space', 'S-Space'],
|
||||
['Ctrl-Space', 'C-Space'],
|
||||
['Alt-Space', 'A-Space'],
|
||||
['F3', 'F3'],
|
||||
]
|
||||
|
||||
# Given a terminal name and a item name, return the text to display.
|
||||
@@ -464,7 +465,7 @@ while true
|
||||
ActionReplace()
|
||||
elseif action == 4
|
||||
ActionClear()
|
||||
elseif action == 5
|
||||
elseif action == 5 || action == 0
|
||||
ActionQuit()
|
||||
endif
|
||||
endwhile
|
||||
|
||||
@@ -2517,6 +2517,31 @@ func Test_mapping_kitty_function_keys()
|
||||
set timeoutlen&
|
||||
endfunc
|
||||
|
||||
func Test_mapping_kitty_function_keys2()
|
||||
" uses the CSI {number}; {modifiers} ~ form
|
||||
new
|
||||
set timeoutlen=10
|
||||
|
||||
let maps = [
|
||||
\ ['<F3>', '13', 0],
|
||||
\ ['<S-F3>', '13', 2],
|
||||
\ ['<C-F3>', '13', 5],
|
||||
\ ['<C-S-F3>', '13', 6],
|
||||
\
|
||||
\ ['<F5>', '15', 0],
|
||||
\ ['<S-F5>', '15', 2],
|
||||
\ ['<C-F5>', '15', 5],
|
||||
\ ['<C-S-F5>', '15', 6],
|
||||
\ ]
|
||||
|
||||
for map in maps
|
||||
call RunTest_mapping_funckey(map[0], function('GetEscCodeFunckey2'), map[1], map[2])
|
||||
endfor
|
||||
|
||||
bwipe!
|
||||
set timeoutlen&
|
||||
endfunc
|
||||
|
||||
func Test_insert_literal()
|
||||
set timeoutlen=10
|
||||
|
||||
|
||||
@@ -108,6 +108,18 @@ func GetEscCodeFunckey(key, modifier)
|
||||
return "\<Esc>[1;".. mod .. a:key
|
||||
endfunc
|
||||
|
||||
" Return the kitty keyboard protocol encoding for a function key:
|
||||
" CSI {number}; {modifiier} ~
|
||||
func GetEscCodeFunckey2(key, modifier)
|
||||
let key = "\<Esc>[" .. a:key
|
||||
if a:modifier == 0
|
||||
return key .. "~"
|
||||
endif
|
||||
|
||||
let mod = printf("%d", a:modifier)
|
||||
return key .. ';' .. mod .. '~'
|
||||
endfunc
|
||||
|
||||
" Return the kitty keyboard protocol encoding for "key" without a modifier.
|
||||
" Used for the Escape key.
|
||||
func GetEscCodeCSIuWithoutModifier(key)
|
||||
|
||||
Reference in New Issue
Block a user