多年来,我通过 SSH 在 UNIX 屏幕上遇到过各种键盘映射问题,我想其他人也遇到过。我的问题分为两部分:
- 当我从 OSX Macbook 通过 SSH 进入我的 Ubuntu Dapper 服务器(我知道,我正急忙转移到 Lenny:) 时,删除键不会映射到退格键,而是映射到删除键(这不是正确的行为,Apple 的删除键实际上是退格键)。有其他人遇到过这种情况吗?如何解决?
- 我认为我应该更多地了解 UNIX 控制台上的键盘映射一般如何工作。在哪里可以找到有关如何解决 SSH 跨平台键盘映射问题的一般信息?
答案1
- 检查
Terminal -> Settings -> Advanced
并确保你的删除键发送了正确的内容。切换此功能,看看是否有帮助。 - 查看
$TERM
当您 ssh 进入服务器时会发生什么。xterm-color
当我 ssh 进入我的 Debian 机器时以及screen
当我在屏幕上时,我得到了这些信息。
答案2
Ubuntu Linux 和一般的 UNIX 系统都使用名为 stty 的程序来配置键盘。运行命令“man stty”来阅读 stty 的手册页。顺便说一句,stty 位于手册的第 1 部分,因此 UNIX 极客倾向于将此程序称为“stty(1)”。
自定义键盘的常用方法是编辑 shell 的启动文件。如果您使用 bash shell,则此文件为 .bashrc。您可以测试名为“TERM”的 shell 变量,该变量标识您正在使用的终端或终端仿真器类型。如果您没有编辑 .bashrc 文件的经验,您可以在 bash 手册页中阅读有关语法的信息:“man bash”
据我所知,Apple 终端仿真器发送的实际键代码可能是 ASCII DEL;由您的 stty 设置来将其转换为 shell 中的退格擦除。
祝你好运!
答案3
您需要在主目录中创建一个 .inputrc 文件。请查看:http://www.macosxhints.com/article.php?story=20050525040921189。
我的 ~/.inputrc 看起来像这样(我特别喜欢不区分大小写的自动完成功能):
# Make fwd delete key do something useful
"\e[3~": delete-char
# Make ctrl-left and ctrl-right skip words
"\e[5C": forward-word
"\e[5D": backward-word
# ignore case in tab-autocomplete
set completion-ignore-case On