Debian 系统上的 XKB 键盘配置

Debian 系统上的 XKB 键盘配置

我正在 Debian 上配置键盘布局以了解 XKB 扩展的工作原理。我正在尝试加载自定义键盘布局,但不确定为什么它不能在图形环境中工作,但可以在虚拟控制台中工作。

我在 处创建了一个新的键盘布局文件,/usr/share/X11/xkb/symbols/foobar该文件基于 处的文件/usr/share/X11/xkb/symbols/us。相关部分如下所示:

default  partial alphanumeric_keys modifier_keys
xkb_symbols "basic" {

    name[Group1]= "English (US)";

    key <TLDE> {    [     grave,    asciitilde  ]   };
    // key <AE01> { [     1,    exclam      ]   };
    key <AE01> {    [     a,    A       ]   };
    key <AE02> {    [     2,    at      ]   };
    key <AE03> {    [     3,    numbersign  ]   };
// ...

<AE01您可以看到我已将标记为(单键)的键从符号1and更改exclamaand A

我通过编辑文件将系统配置为使用自定义foobar布局/etc/default/keyboard,如下所示:

# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
# XKBLAYOUT="us"
XKBLAYOUT="foobar"
XKBVARIANT=""
XKBOPTIONS="ctrl:nocaps,altwin:menu_win"

BACKSPACE="guess"

当我将系统启动到图形桌面环境并按下按键时,1我期望它会像 一样出现,a但它不起作用;它仍然是一个1.

奇怪的是,如果我使用键盘快捷键切换到虚拟控制台,Ctrl + Alt + F1那么我可以看到我的更改有效,并且按下该1键会打印一个a.

如果我使用localectl命令,它看起来也像我的更改有效:

$ localectl
   System Locale: LANG=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: foobar
       X11 Model: pc105
     X11 Options: ctrl:nocaps,altwin:menu_win

为什么我的自定义布局不能foobar在图形环境中工作?

我尝试通过 systemd 单元的曲折进行搜索keyboard-setup.service,发现调用了以下脚本:

  • /lib/console-setup/keyboard-setup.sh
  • /usr/bin/setupcon

我注意到我的foobar布局没有在localectl list-x11-keymap-layouts命令中输出。

手册页localectl指向以下配置指南:

https://www.x.org/releases/current/doc/xorg-docs/input/XKB-Config.html

它确实提到我们不应该再使用布局

Keymap配置是以前配置xkb的方式。用户包含一个特殊的键盘映射文件,它指定了直接 xkb 配置。此方法已被先前描述的规则文件所取代,这些规则文件更加灵活并且允许更简单和更直观的语法。保留它只是出于兼容性原因,如果可能的话应该避免。

不过,我还是尝试通过使用/etc/X11/xorg.conf.d/90-foobar-kdb.conf以下内容填充文件:

Section "InputClass"
    Identifier "keyboard defaults"
    MatchIsKeyboard "on"

    Option "XkbModel" "pc105"
    Option "XkbLayout" "foobar"
    Option "XKbOptions" ""
EndSection

重新启动系统后,我取消了XKbOptions选项,但仍然没有成功加载我的 foobar 地图。所以我仍然对如何在 X11 中加载自定义布局感到困惑。

相关内容