我尝试在.bashrc终端上使用Linux安装程序。在Linux中,我在set -o vi
中使用bash,并为Ctr+H
使用键绑定(它调用我的历史文件上的编辑器)。在虚拟盒中的FreeBSD上(而不是在连接到via ssh时),每当我按backspace时,都会调用这个键绑定。
它出现在Linux终端上,backspace键生成^?
(与^H
不同)。在FreeBSD上,backspace生成的密钥是^H
,它触发了我的键绑定。我很好奇是否有办法使我的^H
键绑定工作在两个终端(即,FreeBSD终端是否也使用^??对于backspace,而不是^H),或者我是否应该使用不同的快捷方式。
我试过stty -a
了。它说是... erase = ^?; erase2 = ^H ...
,所以我尝试了stty erase2 ^?
,虽然它确实按预期更改了stty -a
输出,但是backspace键的行为没有改变,并且仍然在生成^H
。
发布于 2023-05-27 11:53:07
stty
与此无关。控制着线的纪律。当字符沿着虚拟线到达内核虚拟终端时,行规则会对它们作出反应。在这一点上,输入已经变成字符,就像一个真正的终端会发送一条真正的电线。
将击键映射到内核虚拟终端中的字符的是键盘映射。
% sed -ne '2,4p;/014/p' /usr/share/vt/keymaps/uk.capsctrl.kbd
# alt
# scan cntrl alt alt cntrl lock
# code base shift cntrl shift alt shift cntrl shift state
014 bs bs del del bs bs del del O
%
14是PC/AT密钥代码的背空间键,即在ISO 9995-1位置的A13和A14在PC型号M和Windows键盘上。您可以在这个keymap中看到它是如何映射的。这里的变化应该是显而易见的。☺
使用kbdcontrol
加载键盘映射,使用目标内核虚拟终端设备作为标准输入。当然,文件格式被记录为kbdmap(5)。它实际上来自SCO,您会发现它的文档比FreeBSD更好。
https://unix.stackexchange.com/questions/725866
复制