xkb не загружает microsoft4000 конфигурацию

Возможно, я пропускаю что-то, но это кажется xkb, не загружает раздел microsoft4000 из/usr/share/X11/xkb/symbols/inet.

$ setxkbmap -print -verbose 10
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      microsoft4000
layout:     us
options:    caps:escape
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+us+inet(evdev)+capslock(escape)
geometry:   microsoft(natural)
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+us+inet(evdev)+capslock(escape)"    };
    xkb_geometry  { include "microsoft(natural)"    };
};

Теперь, в inet, с microsoft4000 клавиатуры существует раздел

// Microsoft Natural Ergonomic Keyboard 4000 
partial alphanumeric_keys
xkb_symbols "microsoft4000" {
    include "inet(media_nav_common)"
    key <I192>  {       [ XF86Launch1           ]       };
    key <I193>  {       [ XF86Launch2           ]       };
    key <I194>  {       [ XF86Launch3           ]       };
    key <I195>  {       [ XF86Launch4           ]       };
    key <I196>  {       [ XF86Launch5           ]       };
//  Missing because of lack of support from kbd driver: Zoom in and
//  slider.
};

Но это, кажется, проигнорировано. Если я контролирую, нажатия клавиш с концом xev нажимают клавиши запуска 1-5, я получаю следующее:

$ xev | awk -F'[ )]+' '/^KeyPress/ { a[NR+2] } NR in a { printf "%-3s %s\n", $5, $8 }'
192 XF86Launch5
193 XF86Launch6
194 XF86Launch7
195 XF86Launch8
196 XF86Launch9

который должен быть похожим на XF86Launch1-5? Действительно ли это - ошибка, или я пропускаю что-то?

Я работаю на Ubuntu 16.04.

2
задан 12 February 2017 в 04:42

1 ответ

Реальный вопрос, можно ли сделать вещи, которые Вы хотите сделать с этими ключами?

Они - всегда те же ключи после перезагрузки или перевхода? Можно ли установить их как ярлыки (с и без модификаторов)? Видит ли XKB ключ как XF86Launch1 или XF86Launch5 менее важны, чем:

  • это последовательно - тот ключ?
  • можно ли сказать SoftwareX делать FunctionY, когда та клавиша нажата? (запустите свой медиаплеер, максимизируйте текущее окно, или безотносительно другой функции, которую Вы хотите, чтобы ключ выполнил),

Действительно ли это - ошибка?

  • Возможно. Это, конечно, не загружается inet(microsoft4000) символы (это microsoft4000 раздел /usr/share/X11/xkb/symbols/inet Вы заключаете в кавычки). Похоже, что это могло быть включено из образцового определения или как отдельная опция, но нет никакого правила для него (в /usr/share/X11/xkb/rules/evdev*). Изменение на microsoft7000 модель может стать ближе к тому, что Вы ожидаете.

  • ... но вероятно нет. Точное определение этих ключей действительно не имеет значения - пока они определяются как что-то распознаваемое, и уникальные друг от друга, XKB сделал свое задание. С этой целью Ваши ключи, кажется, работают просто великолепно. Я подозреваю inet(microsoft4000) дата символов от с 2006 выходами, но была позже заменена более широким inet(evdev) раздел.

Вы видите XF86Launch5 и так далее потому что inet(evdev) раздел определяет эти ключи:

    // Evdev Standardized Keycodes
    partial alphanumeric_keys
    xkb_symbols "evdev" {
        ...
        key <FK14>   {      [ XF86Launch5       ]       };
        key <FK15>   {      [ XF86Launch6       ]       };
        key <FK16>   {      [ XF86Launch7       ]       };
        key <FK17>   {      [ XF86Launch8       ]       };
        key <FK18>   {      [ XF86Launch9       ]       };
    };

... и /usr/share/X11/xkb/keycodes/evdev подтверждает, что они переводятся как коды клавиши 192-196:

    default xkb_keycodes "evdev" {
        ...
        <FK14> = 192;
        <FK15> = 193;
        <FK16> = 194;
        <FK17> = 195;
        <FK18> = 196;
        ...

Давайте загрузим его так или иначе!

Во-первых, скажите настройкам GNOME оставлять клавиатуру в покое:

gsettings set org.gnome.settings-daemon.plugins.keyboard active false
# change false to true to reenable

Затем выполните это для тестирования:

setxkbmap -print | 
  sed -e '/xkb_symbols/s/"[[:space:]]/+inet(microsoft4000)&/' | 
  xkbcomp - $DISPLAY

Этот конвейер выводит Ваш setxkbmap -print вывод, sed добавляет inet(microsoft4000) определение в строку символов:

    xkb_symbols   { include "pc+us+inet(evdev)+capslock(escape)+inet(microsoft4000)"    };

... который затем передается по каналу к xkbcomp для компиляции и установки в Xserver. Теперь xev должен показать Вам XF86Launch1-5 ключи.

Если это работает, можно сделать это постоянным изменением несколькими способами.

  • Можно уехать gsettings отключенный, и добавляют setxkbmap ... | sed ... | xkbcomp ... конвейерно обработайте к a $HOME/.xprofile сценарий, который будет работать при входе в систему. (Поочередно, перенаправьте вывод sed к $HOME/.config/my-xkb-map и Вам только будет нужно xkbcomp команда при входе в систему.)

  • Можно отредактировать /usr/share/X11/xkb/rules/evdev* добавить файл символов как официальную опцию. evdev перевод опции в файл; evdev.lst перечисляет описание для каждой опции; evdev.xml версия XML описаний. Я полагаю, что необходимо разобраться в нем в evdev.xml чтобы инструменты GUI показали новый вариант, но только evdev.lst необходим для setxkbmap понять это. Изменения в этих системных файлах могли быть перезаписаны будущими обновлениями, тем не менее, так сделайте резервные копии или a sed сценарий или a patch файл для добавления их въезжает задним ходом при необходимости.


XKB является большим! Давайте заставим эти ключи сделать что-то еще полностью!

Стоп там, ковбой. Можно, конечно, создать собственную настройку, если Вы хотите. Скопируйте это inet(microsoft4000) пункт символа в другой файл и определяет те ключи однако, Вам нравится. F13? XF86AudioMicMute?

Посмотрите ресурсы в конце того ответа суперпользователя для большего количества кроличьей норы XKB.

2
ответ дан 2 December 2019 в 03:42

Другие вопросы по тегам:

Похожие вопросы: