为什么像Esc,Ctrl,Shift和Alt这样的键在我的Windows PC的SSH会话中不起作用?


4

我正在使用Windows PC。如果我打开一个终端(使用putty或ssh)到linux(CentOS)机器,我无法获得像Esc,Ctrl,Shift和Alt这样的键。我需要它们用于Midnight Commander(目前Ctrl-Ins和Shift-Ins对我不起作用)。是否可以让这些键工作?


你也尝试过其他远程机器吗?您可能能够找出PuTTY中的设置或CentOS系统是否存在问题。
2015年

Answers:


4

Putty模拟Unix通过serial(RS232c)连接连接到机器的终端。看看这里的配置选项。典型的终端类型包括vt100vt200xtermansi

要获得正确的操作,您的Unix环境变量TERM必须与要模拟的终端类型相匹配(参见Putty配置Connection/Data/Terminal-type)。我正在使用xterm,也用于文本模式控制台窗口。

使用echo $TERM的命令来查找当前值。

Esc是终端控制序列的第一个特征。因此,它通常不应该用作独立字符。CtrlShift并且Alt他们自己不会触发任何字符发送到您的Unix机器。您可以使用Putty配置菜单Terminal/Keyboard来影响某些键的转换方式。


1

虽然PuTTY将TERM变量设置为xterm,但其行为实际上并不匹配xterm的行为。问题中提到了两个功能:

  • Escape作为特殊键返回的前缀xterm提供,作为键的替代(参见eightBitInput手册中的讨论)。
  • 其他键(ControlShiftAlt)通常用作*修饰符。也就是说,它们通常不会自己发送字符,而是修改同时按下的键的行为。

ncurses常见问题解答如何使用shift或control-modifiers?介绍修改键的一些背景知识。PuTTY没有实现任何这些。它确实修改了移位光标键发送的控制序列,在正常模式和应用模式之间切换(参见xterm FAQ 为什么我不能在(无论)shell中使用光标键?对这些术语进行一些讨论)。

ncurses有一个关于PuTTY默认配置的准确终端描述(可以创建几个描述以对应其键盘对话框设置,但实际上很少提及这些描述,可能很少使用)。具有完整终端数据库的系统将具有该putty终端描述。

等,其设置其他终端仿真器TERMxterm,一个完整的终端描述有很多差异对比xterm。ncurses FAQ 为什么不将TERM设置为“xterm”?概述了这方面。

提到ssh提示您可能正在使用minttyCygwin。这是一个后代PuTTY,具有大致相同的限制。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.