进一步阅读

进一步阅读

我尝试在 FreeBSD 终端上使用 Linux .bashrc 设置。在 Linux 中,我使用 bashset -o vi和 键绑定 for Ctr+H(它调用我的历史文件上的编辑器)。在虚拟机中的 FreeBSD 上(不是通过 ssh 连接时),每当我按退格键时都会调用此键绑定。

它出现在 Linux 终端上,产生退格键^?(与 不同^H)。在 FreeBSD 上,退格键生成的键是^H,它会触发我的键绑定。我很好奇是否有一种方法可以使我的^H键绑定在两个终端上都工作(即,让 FreeBSD 终端也使用 ^? 表示退格键,而不是 ^H),或者我是否应该使用不同的快捷方式。

我试过了stty -a。它说... erase = ^?; erase2 = ^H ...我尝试过stty erase2 ^?,虽然它确实stty -a按预期改变了输出,但退格键的行为没有改变并且仍在产生^H

答案1

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 按键代码,该键位于 PC Model M 和 Windows 键盘上的 ISO 9995-1 位置 A13 和 A14。您可以看到它是如何在此键盘映射中映射的。这里要改变什么应该是显而易见的。 ☺

kbdcontrol您可以使用目标内核虚拟终端设备作为其标准输入来加载键盘映射。文件格式当然记录为 kbdmap(5)。它实际上完全来自 SCO Unix,你可以找到它的文档比 FreeBSD 更好

进一步阅读

  • 键盘. §7. SCO Unix 手册。

相关内容