![loadkeys (几乎)没有效果](https://linux22.com/image/56757/loadkeys%20%EF%BC%88%E5%87%A0%E4%B9%8E%EF%BC%89%E6%B2%A1%E6%9C%89%E6%95%88%E6%9E%9C.png)
我在 vagrant 上运行 CentOS 6.4,然后通过 vagrant SSH 进入盒子。我一直在尝试让退格键正常工作一段时间(如下chronicled
所示:Centos 终端正确配置 Backspace 和 Ctrl-h)
作为其中的一部分,我尝试使用加载键来修改键盘映射中的操作 - 但这似乎效果不太好。因此,作为 root,我执行了以下操作(按照指定这里):
[root@localhost vagrant]# dumpkeys -f | grep -iE string
...
string F9 = "\033[20~"
string F10 = "\033[21~"
...
[root@localhost vagrant]# echo 'string F10 = "foo" ' | loadkeys # to make F10 print "foo"
[root@localhost vagrant]# dumpkeys -f | grep -iE string # verify that keymap is changed
...
string F9 = "\033[20~"
string F10 = "foo"
...
现在输入 F10。这一直给我~
字符而不是打印foo
。这是调用 loadkeys 之前的原始行为 - 所以看起来 loadkeys 根本没有效果?
答案1
loadkeys
ioctl()
通过内核虚拟终端设备发出请求,对内置于内核中的终端仿真器进行重新编程。当您通过 . 连接到计算机时,您没有使用该终端模拟器ssh
。事实上,您根本不涉及该机器上的任何终端模拟器、内核或用户空间。
本地计算机上的终端仿真器将功能键映射到控制序列。当然,loadkeys
不是对在连接的本地端完全不同的计算机上运行的终端仿真器进行重新编程ssh
。
如果您没有loadkeys
以超级用户身份运行,您将收到有用的错误消息,即当从ssh
登录会话运行时loadkeys
找不到可与之通信的内核虚拟终端,因为该登录会话未涉及该终端。