控制台上的“ compose”允许键入两个字符,但输出第三个字符。
问题在于compose定义将bytes用作两个输入(即,您不能根据类型化的键来定义compose,而只能根据类型化的符号来定义)以及用于输出。
要使其在多字节(至少1到4字节)的UTF-8中工作,将需要对控制台输入的处理方式进行重大更改,并以更复杂的方式替换当前使用的简单char数组。似乎没有计划这样做(内核开发者之间的共识是控制台应该仍然是一个控制台,这很简单,仅用于最后一次排序;如果您实际上需要unicode,那么您可能还需要bidi,shapeing等;然后最好运行图形终端(在X11上使用全屏xterm;但是还有其他可能)。
因此,在控制台上使用多字节字符确实不起作用,也将不起作用。但是,如果您将撰写定义限制为纯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使用波浪号(〜)。