键盘永久重新配置

键盘永久重新配置

最近升级到 18.04;我有一个 Sun Type 6 键盘(有很多有用的附加键,例如复制、剪切、粘贴),安装配置得还不错。最近的升级导致它被重新配置得乱七八糟。

经过多次谷歌搜索,我找到了很多建议的解决方法,这些方法都适用于其他系统。一般来说,配置键盘有三种方法

  1. xmodmap - 但现在这只是 xkb 系统的一个糟糕的前端
  2. setxkbmap - 我相信它是 xkbcomp 的前端
  3. 韓國

但是这三种方法都存在一个问题,即在注销/登录或睡眠/唤醒时(可能还有休眠时)更改会消失。此外,建议构建一个“conf”文件,但该文件有三种格式,一种用于 xorg.conf(不再存在),一种用于 setxkbmap,以及 /etc/default/keyboard(其文档很差,而且似乎无论如何都不起作用)。

以下是用于 setxkbmap 的 clerew3.conf 文件:

Rules = "evdev"
Model = "sun-type-unix-usb"
Layout = "gb"
Symbols = "pc+gb+inet(evdev)+clerew"

请注意,“clerew”是保存在 /usr/local/share/X11/xkb/symbols 中的自定义调整(我不喜欢将自定义内容放在 /usr 下)。因此我将其称为

$ setxkbmap -I /usr/local/share/X11/xkb -option '' -config .../clerew3.conf -print
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+gb+inet(evdev)+clerew"};
    xkb_geometry  { include "pc(pc104)" };
};

因此输出看起来不错(除了几何形状,可以等待),如果我将它放入文件 clerew.xkb,我可以将它编译成完整的 .xkb 文件,它确实显示了我想要的内容。

现在编译它以用于 Display(当然是 :0)。以下是“官方”方法(观察最大详细程度设置):

$ setxkbmap -v 10 -I /usr/local/share/X11/xkb -option '' -config /usr/local/share/X11/xorg.conf.d/clerew3.conf
Setting verbose level to 10
locale is C
Found file /usr/local/share/X11/xorg.conf.d/clerew3.conf
After config file:
rules:      evdev
model:      sun-type-unix-usb
layout:     gb
variant:    ,
symbols:    pc+gb+inet(evdev)+clerew
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Warning! Multiple definitions of symbols
         Using config file, ignoring rules file
Applied rules from evdev:
rules:      evdev
model:      sun-type-unix-usb
layout:     gb
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+gb+inet(evdev)+clerew
geometry:   pc(pc104)
Error loading new keyboard description

那么为什么会出现错误?我怀疑它无法找到我自定义的“clerew”,尽管使用了 -I ... 。

但是我仍然有之前使用 xkbcomp 正确编译过的“clerew.xkb”文件,因此我再次将其直接编译成:0:

xkbcomp -I/usr/local/share/X11/xkb .../clerew3.xkb :0

就这样!我的所有键都正常工作:Libreoffice、Firefox、Thunderbird 等都理解我的复制/剪切/粘贴等操作,任何 GTK 应用程序也是如此(借助合适的 css 文件)。完美!

直到我睡觉或注销后它才恢复到以前混乱的键盘映射。

因此还剩下两个问题:

  1. 系统究竟将永久键盘映射存储在哪里(可能是 .kvm 文件,尽管我使用“find”在根分区中查找了这样的文件)。是在 dconf 中吗(其中有一些 xkb 内容,但我看不到足够大的内容)?是在 xorg.conf 中吗(它不再存在)?它一定在某个地方,因为当我重新登录或唤醒时,它会不断复活。
  2. 我如何使它被新版本覆盖?我的研究得出了很多建议,大多适用于其他 Linux 发行版或早期版本的 Ubuntu。一些人建议使用 localectl(但没有足够信息说明如何使用它);其他人则嘟囔着说 dpkg-reconfigure(但我不相信 dconf 真的参与其中);还有一些建议在 .profile、.xinitrc 或 .config 或其他有点奇怪的地方运行脚本(比如我的 xkbcomp)(但我已经证实 .profile 不起作用)。

帮助!

相关内容