使用修饰符(Ctrl / Shift / Alt)时,VT100数字键盘转义码

我正在尝试恢复一个相当老的MUD客户端,使其在OS X Mojave下运行(几乎是一个支持别名,键绑定和触发器的telnet客户端)。 可以在这里找到代码https://github.com/olostan/mmc

我能够成功运行它,但是它不能正确处理数字键盘键。我发现发生这种情况是因为这些键没有在https://github.com/olostan/mmc/blob/master/src/output.c中定义 将以下代码段添加到“键盘键”部分后,它便开始正常工作。

  { "k0","\033Op",NULL    },{ "k1","\033Oq",{ "k2","\033Or",{ "k3","\033Os",{ "k4","\033Ot",{ "k5","\033Ou",{ "k6","\033Ov",{ "k7","\033Ow",{ "k8","\033Ox",{ "k9","\033Oy",

现在,我想对具有不同修饰符(Ctrl,Alt,Shift)(例如C-k1,M-k1,S-k1)的小键盘按键执行相同的操作,但是我找不到任何地方可以正确定义转义符此类序列的代码。我从此页面获得了上面的代码-https://www.gnu.org/software/screen/manual/html_node/Input-Translation.html,但不幸的是,它没有描述任何带有修饰符的组合。

问题是-如何为带有修饰键(Shift,Alt,Ctrl)的键盘组合定义VT100格式的转义码?我尝试为S-k4组合键设置类似“ \ 033 [1; 5Ot”的内容,但没有一个起作用。

zengh225 回答:使用修饰符(Ctrl / Shift / Alt)时,VT100数字键盘转义码

问题是

  

如何为带有组合键(shift,alt,ctrl)的键盘组合定义VT100格式的转义码?

答案是您可能做不到,因为终端不太可能为数字小键盘提供不同的转义码:

  • VT100从来没有做过这样的事。
  • xterm模仿VT100's keypad,同时考虑了正常模式和应用程序模式(应用程序模式发送您列出的转义序列)
  • 大多数其他终端仿真器甚至都不会这样做。

  • xterm具有一项功能,可用于配置它发送修改后的键盘键,即modifyKeyboard资源设置:    ModifyKeyboard(类ModifyKeyboard)            通常,xterm在修饰符(移位,            控件等)来处理特殊的键盘布局(旧版和            vt220)。这样做是为了为DEC提供兼容的键盘            VT220和实现用户定义键的相关终端            (UDK)。

           The bits of the resource value selectively enable modification
           of the given category when these keyboards are selected.  The
           default is "0":
    
           0    The legacy/vt220 keyboards interpret only the Control-
                modifier when constructing numbered function-keys.  Other
                special keys are not modified.
    
           1    allows modification of the numeric keypad
    
           2    allows modification of the editing keypad
    
           4    allows modification of function-keys,overrides use of
                Shift-modifier for UDK.
    
           8    allows modification of other special keys
    
  • 其他终端根本不这样做(有几个终端可以让您自定义发送的密钥,但是没有一个终端可以预定义此密钥,而您的客户需要这些终端。)
本文链接:https://www.f2er.com/3149441.html

大家都在问