如何在终端(无桌面环境)中定义 Compose Key?

如何在终端(无桌面环境)中定义 Compose Key?

我想compose在我的系统上定义一个密钥(Debian Sid“Wheezy”)。我没有 Xorg(并且不需要任何桌面环境)。仅在航站楼。

我想将其设置在我的Alt-Gr钥匙上(右Alt)。我尝试了一段时间,但不知道如何设置。

我一直在调查并找到了一些方向:

  • $ showkey给我我的钥匙的钥匙代码Alt-Gr(#100)

  • $ dumpkeys并按照页面$ dumpkeys --compose-only指定的格式输出“键盘驱动当前内容”keymapsman

  • $ loadkeys加载键盘翻译表

我确信这并不困难,但我想念如何处理这个问题......

答案1

/etc/default/keyboard在较新的 Debian 和 Ubuntu 系统上,您的键盘设置会在 X 和控制台之间放入并共享。赶紧跑

sudo dpkg-reconfigure keyboard-configuration

Compose key: Right Alt (AltGr)在适当的屏幕上进行选择。

你也可以输入XKBOPTIONS=compose:ralt/etc/default/keyboard运行

sudo dpkg-reconfigure console-setup

默认情况下,较旧的系统在控制台上有一个 Compose 键。在里面us布局中,按两个都 Alt键组合在一起的作用就像Compose. 1

例如:Alt+ AltGr, ", A=> ä

如果你只想AltGr成为这样的人Compose,你就需要改变

alt keycode 100 = Compose

在您的活动键盘映射中

keycode 100 = Compose

最简单的方法是在/lib/kbd/keymaps/i386/include/linux-with-alt-and-altgr.inc.

更好的方法是创建一个/lib/kbd/keymaps/i386/include/altgr-is-compose.inc使用上述行调用的新文件,创建一个包含它的新键盘映射,并将其设置为默认键盘映射。

  1. PrtScn也作为Compose默认情况。

答案2

控制台上的“compose”允许输入两个字符,但输出第三个字符。

问题是 compose 定义使用字节,既作为两个输入(即,您不能根据键入的键定义 compose,而只能根据键入的符号)和输出。

要使其在多字节(至少 1 到 4 个字节)的 UTF-8 中工作,需要对控制台输入的处理方式进行重大更改,并用更复杂的内容替换当前使用的简单字符数组。似乎没有计划这样做(内核开发者之间的共识是控制台应该保持控制台,简单的东西,只用于最后的手段;如果你真的需要 unicode 那么你可能还需要 bidi,整形等;然后最好运行图形终端(X11 上的全屏 xterm;但还有其他可能性)。

因此,对于控制台上的多字节字符来说,它确实不起作用,也不会起作用。但是,如果将 compose 定义限制为纯 ASCII,它仍然有效。

我还发现,如果输出采用 iso-8859-1(对应于最大 0x00ff 的 unicode 值),它也可以工作;为此,您可以在一行中放入一些启动脚本:

    loadkeys /somepath/somefile

并将您想要的撰写​​定义放入该文件中(请小心以 ISO-8859-1 编码保存文件;并仅使用大于 0x7f 的字符作为输出)此类文件的语法非常简单,如下所示:

    将 'somechar' 'somotherchar' 组合为 'desiredoutput'

例如:

    将 'a' 'a' 组成 'å'
    将 'a' 'e' 组合为 'æ'

撇号必须被转义。

该文件中还定义了死变音符号键的效果;对于 dead_acute + a 你定义一行:

    将 '\'' 'a' 组合为 'á'

dead_grave 使用反引号 (`),dead_diaeresis 使用双引号 ("),dead_circumflex 使用扬抑符 (^),dead_tilde 使用波形符 (~)。

相关内容