Я хочу, чтобы X запустился с моей настроенной картой ключей XKB.

У меня есть файл символов xkb с именем hyper , который сопоставляет ключ Hyper с правой клавишей управления. Я поместил это в /usr/share/X11/xkb/symbols/hyper . Содержание:

partial modifier_keys
xkb_symbols "right_control" {
    key <RCTL> { [ Hyper_R ] };

    include "hyper(base)"
};

// I might want hyper on a different key, which needs the same modifier setup
partial modifier_keys
xkb_symbols "base" {
    modifier_map Control { <LCTL> };
    modifier_map Mod1 { <LALT>, <RALT> };
    modifier_map Mod3 { Hyper_L, Hyper_R };
    modifier_map Mod4 { <LWIN>, <RWIN> };
};

У меня также есть файл раскладки:

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us+inet(evdev)+ctrl(nocaps)+hyper(right_control)"   };
    xkb_geometry  { include "pc(pc105)" };
};

Если я запускаю xkbcomp keymap-file , все перераспределяется именно так, как я хочу, поэтому я знаю, что эта часть работает. Однако я не могу применить это при запуске X.

У меня есть следующий фрагмент в /etc/X11/xorg.conf.d/10-xps13-keyboard.conf:

Section "InputClass"
    Identifier "Dell XPS13 Keyboard"
    MatchIsKeyboard "on"

    Option "xkb_symbols" "pc+us+inet(evdev)+ctrl(nocaps)+hyper(right_control)"
EndSection

И я вижу параметры, применяемые в журнале сервера:

[ 11469.810] (II) config/udev: Adding input device AT Translated Set 2 keyboard (/dev/input/event0)
[ 11469.810] (**) AT Translated Set 2 keyboard: Applying InputClass "libinput keyboard catchall"
[ 11469.810] (**) AT Translated Set 2 keyboard: Applying InputClass "Dell XPS13 Keyboard"
[ 11469.810] (II) Using input driver 'libinput' for 'AT Translated Set 2 keyboard'
[ 11469.811] (II) systemd-logind: got fd for /dev/input/event0 13:64 fd 30 paused 0
[ 11469.811]    Option "_source" "server/udev"
[ 11469.811]    Option "name" "AT Translated Set 2 keyboard"
[ 11469.811]    Option "path" "/dev/input/event0"
[ 11469.811]    Option "device" "/dev/input/event0"
[ 11469.811]    Option "major" "13"
[ 11469.811]    Option "minor" "64"
[ 11469.811]    Option "xkb_layout" "us"
[ 11469.811]    Option "xkb_model" "pc105"
[ 11469.811]    Option "xkb_options" "ctrl:nocaps"
[ 11469.811]    Option "config_info" "udev:/sys/devices/platform/i8042/serio0/input/input0/event0"
[ 11469.811]    Option "driver" "libinput"
[ 11469.811]    Option "xkb_symbols" "pc+us+inet(evdev)+ctrl(nocaps)+hyper(right_control)"
[ 11469.811]    Option "fd" "30"

Однако таблица клавиш не загружается при запуске X.

Я предполагаю , что xkb_symbols неправильный Option но libinput(4) не упоминает клавиатуры вообще, так что я не знаю , что Option s доступны.

Я использую Debian Stretch.

0