当前位置: 首页>>技术教程>>正文


在ubuntu上创建新键盘布局需要哪些步骤?

,

问题描述

我试图创建的键盘有很多Unicode,看起来像这样:

keyboard-layout,ubuntu

不成功使用以下教程:

我想知道是否有人会如此友善地提供一步一步的指导更好的教程?

最佳解决方案

在Ubuntu 14.04中,键盘布局保留在

/usr/share/X11/xkb/symbols/


此目录中的每个文件都包含以下类型的一系列条目:


    key <AC01> {[a, A, aacute, Aacute]};

此条目使用以下约定将键盘上的键映射到多个特定字符:

  1. < A C01>第一个字母A表示我们正在查找字母数字键块(其他选项包括KP [for keypad]FK [for Function Key]);

  2. < A C 01>第二个字母C表示从找到密钥的底部开始计算的行。 (在标准的美式键盘中,空格键位于行AA中,数字键位于行AE中)。

  3. < AC 01>数字01表示密钥的位置,从左边开始计算并忽略任何特别命名的密钥,如TAB~(代字号):AC01在第三行,第一行从左边开始(忽略Caps Lock,如果存在);在标准的美式键盘上,这是标记为“a”的键。

  4. 括号括起分配给每个键的字符列表。它最多包含四个条目,以逗号分隔:

    1. a – 未修改的密钥。

    2. A – Shift字符。

    3. ĂĄ – Alt Gr字符。 (aacute)

    4. Ä, – Shift + Alt Gr字符。 (Aacute)


创建自定义键盘Map就像在给定行中替换您不想要的字符一样简单!

例如:

作为Anglo-Saxonist,I型áÁ比I型æÆ少得多。

到Anglo-Saxon字符添加到我的名单,我只是与实体名称或Unicode code pointsæÆ(“aelig”或U00E6和“AElig”或U00C6,分别)取代aacuteAacute


    key  {[a, A, aelig, AElig]};

要么


    key  {[a, A, U00E6, U00C6]};

当我完成修改键盘布局后,我在同一目录中使用新名称”oe”保存文件。

将新的键盘布局添加到evdev.xml文件中。

为了使用新的键盘布局,我们需要告诉X11它是否存在。在Ubuntu 14.04中,X11跟踪/usr/share/X11/xkb/rules/evdev.xml文件中已安装的键盘。然后我们在其中添加新布局。

  1. 在编辑器中打开X11/xkb/rules/evdev.xml

  2. 转到< layoutList>的末尾部分(搜索< /layoutList>)。在最后一个< /layout>之后添加以下内容标签,其中X是/usr /share /X11 /xkb /symbols中键盘布局的文件名(在我的例子中是oe);你是一个合适的简称;和Z一个或多个语言的适当的长名称和aaa legal three letter (ISO 639-2) language code(例如英语的eng):

    <layout>
     <configItem>
       <name> X </name>
       <shortDescription> Y </shortDescription>
       <description> Z </description>
       <languageList>
          <iso639Id> aaa </iso639Id>
       </languageList>
     </configItem>
     <variantList/>
    </layout>
    

Here it is, follow complete introduction

其他相关链接:http://ubuntuforums.org/showthread.php?t=188761&p=1092145#post1092145 http://www.charvolant.org/~doug/xkb/html/index.html

次佳解决方案

注意:Wayland确实使用xkb,但许多xTools已经停止正常工作(例如xdotool)

注意:这是一个non-exhaustive教程。对于希望创建新的八级布局并理解语法的个人来说,它非常有用。

注意:提供了快速而肮脏的解决方案。它包含一个电子表格,可自动生成您需要的代码。


了解XKB目录

cd /usr/share/X11/xkb/ && ls
  1. types – 活动修改器如何更改生成的键。 (Shift,Control,Alt~)如果要自定义修改键,则很重要。

  2. geometry – 用于绘制键盘图形。如果您正在设计非标准的键盘硬件,则很重要。

  3. rules – 获取当前设置的相应配置。您需要定义它

  4. keycodes – 键盘硬件键码的解释器。示例:Macintosh键盘将空格键理解为57。我们把它写成<SPCE>

  5. symbols – 将哪些值分配给哪些密钥代码。这是我们定义自定义布局的地方。

  6. compat – 兼容性的缩写。修改器的内部行为(Shift,Control,Alt …)


Workflow

<keycodes> <symbols> compat

我只触摸symbols:请参阅下面的Quick and Dirty解决方案。


符号映射

/symbols/us此目录中的任何文件都遵循相同的结构。

partial alphanumeric_keys
xkb_symbols "basic" {
    name[Group1]= "US/ASCII";
    key <TLDE> {        [ quoteleft,    asciitilde      ]       };
    key <AE01> {        [         1,    exclam          ]       };
    modifier_map Shift  { Shift_L, Shift_R };
};

partial – 不是一个完整的键盘映射

alphanumeric_keys正在映射的键盘部分。可以使用多个注意:如果未指定*_keys,则假定使用完整的键盘。

"basic" – 符号映射的名称

name[Group1]= "US/ASCII";为此键盘组提供唯一名称。

modifier_map用于编辑修改键。 (ctrl,shift,alt~)

Shift { Shift_L, Shift_R };通常不是必需的。它将两个移位映射到移位修改器,也就是级别2。

key <TLDE> The Tilde Key – 通常在Tab右上方的左上方键

key <AE01> Illustration – 由三部分组成,A E 01

  1. A =字母数字键块。 KP =键盘FK =功能键

  2. E =键盘上的行。 Space Key = AShift Key = BCaps Lock = CTab Key = D

  3. 01 =键在行上的位置。 AE01 = 1 AB02 = X AC05 = G.

[ + ] – C语言;方括号表示一个列表,通过该列表,项目由,分割。列表的长度决定了级别的数量。例如:

key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }

通常,Levels表示以下按键:

  1. 没有修饰键

  2. Shift

  3. Alt Gr

  4. Shift + Alt Gr

  5. Custom – 不太可能看到4级以外的任何东西。

简而言之,如果你想将一个键映射到shift + altgr,你的列表必须至少有四个项目。


警告 – 常见错误

这些行中的任何一行都会导致严重错误,并且会在没有可用键盘的情况下离开您:

key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
  • Backspace应该是BackSpace:要特别注意拼写。

  • 空条目应为VoidSymbol


最好的安全措施!

  1. 备份您正在编辑的文件:sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP

  2. Make a script that you can run without root password

就像是:

#!/bin/bash
sudo /bin/cp -rf /usr/share/X11/xkb/symbols/usBACKUP /usr/share/X11/xkb/symbols/us

如果出现任何问题,请使用鼠标运行该行代码(包含在您赋予sudoers权限的bash脚本中。请记住chmod +x允许作为可执行文件运行。)


恢复损坏系统的备份策略

  • 警告:键盘& On-Screen键盘将停止工作时出现最轻微的错误。

  • 鼠标会起作用。可以通过突出显示字符并使用中键单击粘贴来完成键入。在Bash中,您可以通过粘贴换行符来return(按Enter键)。

  • 键盘将在root shell中以恢复模式运行。 (从bash访问)

  • 您始终可以使用实时环境来修复文件。


快速而肮脏的解决方案

  1. Go here

  2. 文件>复制一份

  3. 您可以在Mapper Sheet中定义布局。

    • 单个字符条目被转换为程序理解的代码。 (!变为U0021)。支持Unicode!

    • 字符串不会被翻译并按原样处理。请确认没有拼写或案例错误!

    • 空方块自动填充VoidSymbol

  4. XKB-Sort

    包含密钥组,例如:

    key <AE01> { [U0021, U0021, U0021, U0021, U0021, U0021, U0021, U0021] };
    key <AE02> { [U005B, U005B, U005B, U005B, U005B, U005B, U005B, U005B] };
    key <AE03> { [U005D, U005D, U005D, U005D, U005D, U005D, U005D, U005D] };
    key <AE04> { [U0022, U0022, U0022, U0022, U0022, U0022, U0022, U0022] };
    key <AE05> { [U002A, U002A, U002A, U002A, U002A, U002A, U002A, U002A] };
    key <AE06> { [U007B, U007B, U007B, U007B, U007B, U007B, U007B, U007B] };
    key <AE07> { [U007D, U007D, U007D, U007D, U007D, U007D, U007D, U007D] };
    key <AE08> { [U002F, U002F, U002F, U002F, U002F, U002F, U002F, U002F] };
    key <AE09> { [U0027, U0027, U0037, U0027, U0027, U0027, U0027, U0027] };
    key <AE10> { [U0029, U0029, U0038, U0029, U0029, U0029, U0029, U0029] };
    key <AE11> { [U0028, U0028, U0039, U0028, U0028, U0028, U0028, U0028] };
    key <AE12> { [U005C, U005C, U005C, U005C, U005C, U005C, U005C, U005C] };
    

    在所有8个级别上进行更改:

    1234567890-= // Physical Keys
    ![]"*{}/')(\ // Changed to these characters
  5. XKB Tab也有行。每个其他选项卡都可以忽略(其代码)。

  6. sudo vim /usr/share/X11/xkb/symbols/us

  7. 替换布局内容。选择一个你不会使用的。例如:I changed the colemak entry leaving the structure intact, and replaced the keys.

感兴趣的线路:

key.type[group1]="EIGHT_LEVEL";          // Enables 8 levels
modifier_map Control { <LFSH>, <RTSH> }; // Maps ctrl`s to shift keys.
key  { [Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R] }; 
key  { [Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L] };
include "level3(lalt_switch)" // Hold Left  Alt for Level 3
include "level5(ralt_switch)" // Hold Right Alt for Level 5

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2197.html,未经允许,请勿转载。