将 libuv 转换为 ANSI 的映射或 table?

Map or table of libuv converstions to ANSI?

我正在尝试为浏览器修复 readline 的实现,如果我可以拥有与 windows 的 libuv 相同的行为,那就太好了。我想知道在哪里可以找到哪些键码映射到什么? 例如来自 https://github.com/nodejs/node/blob/HEAD/lib/internal/readline/utils.js#L232 我们知道

fkeymap={
    f1:'[[A',
    f2:'[[B',
    f3:'[[C',
    f4:'[[D',
    f5:'[[E'
}

如果我们运行节点

中的这段代码,我们可以自己测试一下
var readline = require('readline'),
    rl = readline.createInterface(process.stdin, process.stdout);
process.stdin.on('keypress', function(s, key) {
  console.log("keypress event",{s,key})
});

但是如果你开始组合 ctrlshift 代码,你就会开始得到疯狂的 ansi 组合,例如 ctrl +shift+f9 映射到 "\x1b[33^" 这在某处记录了吗?

我没有在任何地方找到这个 table 的记录,但我将 post 通过实验性地尝试键盘上所有可用键获得的数据,希望这对某人有所帮助。我在键前加上 'c' 表示按下了控件,'s' 表示按下了 shift。

keys={
f1:"[[A",
f2:"[[B",
f3:"[[C",
f4:"[[D",
f5:"[[E",
f6:"[17~",
f7:"[18~",
f8:"[19~",
f9:"[20~",
f10:"[21~",
f11:"[23~",
f12:"[24~",
cf1:"[11^",
cf2:"[12^",
cf3:"[13^",
cf4:"[14^",
cf5:"[15^",
cf6:"[17^",
cf7:"[18^",
cf8:"[19^",
cf9:"[20^",
cf10:"[21^",
cf11:"[23^",
cf12:"[24^",
sf1:"[23~",
sf2:"[24~",
sf3:"[25~",
sf4:"[26~",
sf5:"[28~",
sf6:"[29~",
sf7:"[31~",
sf8:"[32~",
sf9:"[33~",
sf10:"[34~",
sf11:"[23$",
sf12:"[24$",
csf1:"[23^",
csf2:"[24^",
csf3:"[25^",
csf4:"[26^",
csf5:"[28^",
csf6:"[29^",
csf7:"[31^",
csf8:"[32^",
csf9:"[33^",
csf10:"[34^",
csf11:"[23@",
csf12:"[24@",
home:"[1~",
insert:"[2~",
delete:"[3~",
end:"[4~",
pageup:"[5~",
pagedown:"[6~",
chome:"[1;5~",
cinsert:"[2;5~",
cdelete:"[3;5~",
cend:"[4;5~",
cpageup:"[5;5~",
cpagedown:"[6;5~",
shome:"[1;2~",
sinsert:"[2;2~",
sdelete:"[3;2~",
send:"[4;2~",
spageup:"[5;2~",
spagedown:"[6;2~",
cshome:"[1;6~",
csinsert:"[2;6~",
csdelete:"[3;6~",
csend:"[4;6~",
cspageup:"[5;6~",
cspagedown:"[6;6~"
}