![为什么 Esc、Ctrl、Shift 和 Alt 等键在我的 Windows PC 的 SSH 会话中不起作用?](https://linux22.com/image/1450195/%E4%B8%BA%E4%BB%80%E4%B9%88%20Esc%E3%80%81Ctrl%E3%80%81Shift%20%E5%92%8C%20Alt%20%E7%AD%89%E9%94%AE%E5%9C%A8%E6%88%91%E7%9A%84%20Windows%20PC%20%E7%9A%84%20SSH%20%E4%BC%9A%E8%AF%9D%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我在 Windows PC 上工作。如果我打开 Linux (CentOS) 机器的终端(使用 PuTTY 或 SSH),我无法让Esc、Ctrl和Shift等键Alt起作用。
我需要它们来使用 Midnight Commander(目前对我Ctrl+Ins来说Shift+Ins不起作用)。 能否让这些密钥发挥作用?
答案1
Putty
Unix
模拟通过串行 ( RS232c
) 连接连接到机器的终端。查看这里用于配置选项。典型的终端类型包括vt100
、、、。vt200
xterm
ansi
为了获得正确的操作,您的Unix
环境变量TERM
必须与正在模拟的终端类型相匹配(参见Putty
配置Connection/Data/Terminal-type
)。我正在使用xterm
,也用于文本模式控制台窗口。
使用echo $TERM
as 命令查找当前值。
Esc
是终端控制序列的第一个字符。因此,它通常不应用作独立字符。Ctrl,Shift并且Alt它们本身不会触发任何字符发送到您的Unix
机器。您可以使用Putty
配置菜单Terminal/Keyboard
来影响某些键的翻译方式。
答案2
尽管PuTTY将TERM
变量设置为xterm
,其行为实际上与 xterm 的行为不匹配。问题中提到了两个特性:
- Escape作为一个字首特殊键返回的终端作为替代元键(参见讨论
eightBitInput
在手册中)。 - 其他键(Control、Shift和Alt)通常用作 *修饰键。也就是说,它们通常不会自行发送字符,而是修改同时按下的键的行为。
ncurses 常见问题如何使用 shift 或 control 修饰键?介绍了修改密钥的一些背景。PuTTY 不实现任何的。它做修改由 Shift 光标键发送的控制序列,在普通的和应用模式(参见 xterm FAQ为什么我不能在(任何)shell 中使用光标键?对这些术语进行一些讨论)。
ncurses 对默认配置有准确的终端描述油灰(可以创建几个描述来对应其键盘对话框设置,但在实践中,这些描述很少被提及,可能也很少使用)。具有完整终端数据库的系统将具有putty
终端描述。
与其他终端仿真器一样TERM
,xterm
,完整的终端描述与有很多不同之处xterm
。ncurses FAQ为什么不直接将 TERM 设置为“xterm”?对该方面进行了概述。
提到远程控制提示,你可能正在使用mintty
Cygwin。这是PuTTY
,具有大致相同的局限性。
答案3
答案是你不能,因为这是 PuTTY 中的一个错误。
有猫咪它是 PuTTY 的分支,并且已经实现了适当的Ctrl/Shift支持,您可能需要查看它。
来源:https://superuser.com/a/1226621/360137
顺便提一下 - 默认情况下,KiTTY 具有Ctrl+Up/Down透明度控制热键,因此您可能希望通过将其设置为会话的默认值来完全禁用Window->Transparency
透明度-1
。
答案4
作为 putty4far2l putty fork 的作者,我建议您尝试 «far2l+putty4far2l» 提供与“mc + putty”类似的用户体验,但具有完整的键盘支持。这可通过所谓的“far2l 终端扩展”实现。如果您在 putty4far2l 中的 far2l 内运行 mc,则 mc 中也将提供完整的键盘支持。
PS: far2l 的 ppa 是这里,putty4far2l 的二进制文件可直接在 github 上获取