警告 - 常见错误

警告 - 常见错误

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

以下教程不成功:

我想知道是否有人愿意提供更好的教程并附带分步说明?

答案1

Ubuntu 14.04,键盘布局保留在

/usr/share/X11/xkb/symbols/


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

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

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

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

  2. <AC01> 第二个字母C表示从底部开始数该键所在的行。(在标准的美国键盘中,空格键位于第 行AA,数字键位于第 行AE)。

  3. <交流01> 数字01表示键的位置,从左边开始数,忽略任何特殊命名的键,如TAB~(波浪号):AC01位于第三行以上,从左边开始的第一个键(Caps Lock如果存在,则忽略);在标准的美国键盘上,这是标记为“a”的键。

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

    1. A- 未修改的密钥。
    2. A-Shift人物。
    3. A-Alt Gr人物。 (急性
    4. A- Shift+Alt Gr字符。(急性

创建自定义键盘映射很简单,只需将给定行中不想要的字符替换为您想要的字符即可!

例如:

作为一名盎格鲁撒克逊人,我输入á和 的Á频率比输入æ和 的频率要少得多Æ

要将盎格鲁-撒克逊字符添加到我的列表中,我只需用实体名称或替换aacuteAacuteUnicode 代码点对于æÆ(“aelig”或U00E6和“AElig”或U00C6, 分别):

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

或者

    键 {[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);Y合适的简称;以及Z一种或多种语言的适当长名称,aaaA合法的三字母 (ISO 639-2) 语言代码(例如英语对于英语):

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

以下是完整介绍

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

答案2

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

笔记:这是一个非详尽的教程。它对于希望创建新的八级布局并理解语法的个人最有用。

笔记:提供了一个快速而简单的解决方案。它包括一个可自动生成所需代码的电子表格。


理解 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...)

工作流

keycodes > symbols > compat

我只触及symbols:请参阅下文快速而肮脏解决方案。


符号地图

/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> 波浪符号键- 通常为 Tab 正上方左上角的键

key <AE01> 插图- 由三部分组成,AE01

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

  2. E= 键盘上的行。
    Space Key=A
    Shift Key=B
    Caps Lock=C
    Tab Key= D

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

[+ ]- 在 C 语言中;方括号表示列表,列表项按 分隔,。列表的长度决定了级别的数量。例如:

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

通常,级别用以下按键来表示:

  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. 制作一个无需 root 密码即可运行的脚本

就像是:

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

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


恢复损坏系统的备份策略

  • 警告:键盘和屏幕键盘将停止工作哪怕是一点点错误。
  • 鼠标可以工作。可以通过突出显示字符并使用鼠标中键单击粘贴来输入。在 Bash 中,您可以return通过粘贴换行符(按 Enter)来完成输入。
  • 键盘将在恢复模式下工作在 root shell 中。(从 bash 访问)
  • 您始终可以使用实时环境来修复文件。

快速而粗略的解决方案

  1. 到这里
  2. 文件 > 制作副本
  3. Mapper 床单是您定义布局的地方。
    • 单个字符条目被翻译成程序可以理解的代码。
      !变成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选项卡也有行。其他每个选项卡都可以忽略(其代码)。
  6. sudo vim /usr/share/X11/xkb/symbols/us
  7. 替换布局内容。选择一个你不会用到的内容。例如:我改变了 colemak 条目,保持结构不变,并更换了键。

感兴趣的方向:

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

相关内容