Какой файл является setxkbmap опцией - правила означали брать, и как я могу добавить варианты клавиатуры к тому файлу?

Я пытаюсь установить пользовательскую раскладку клавиатуры без sudo доступа, как я описал в действительно ли нем, возможно использовать пользовательскую раскладку клавиатуры без sudo доступа? Если так, как?, и у меня есть конкретный вопрос о setxkbmap управляйте, чтобы, поскольку в текущем ответе говорится, мог работать.

Строго говоря, страница справочника для команды дает Вам способность указать файл правил:

- файл правил

Указывает, что название файла правил раньше разрешало требуемое расположение и модель к ряду имен компонентов.

Однако это не говорит точно, какой файл каждый предназначен, чтобы поставить там, и я изо всех сил пытаюсь понять эту опцию.

Насколько я могу выяснить, это предназначено, чтобы быть также /usr/share/X11/xkb/rules/xorg, или его псевдоним /usr/share/X11/xkb/rules/base, и действительно если я копирую весь из /usr/share/X11/xkb/ в ~/xkb/ и затем выполненный что-то как

setxkbmap -model pc105 -layout "gb" -variant "extd" -rules ~/xkb/rules/base

затем это, кажется, работает.

Однако я не уверен, во всем из как изменить тот файл. На машинах, где у меня есть sudo доступ, я следую этому учебному руководству: Я делаю вариант gb клавиатура в xkb/symbols/gb, и я добавляю вариант в xkb/rules/evdev.xml через

<variant>
  <configItem>
    <name>custom</name>
    <description>English (UK, custom)</description>
  </configItem>
</variant>

На xkb/rules/base файл, однако, нет никакого очевидного места для включения такого варианта и действительно другого связанного gb варианты клавиатуры такой как extd или intl, которые появляются, например, в xkb/rules/evdev.lst, нигде не видны.

Так: как я могу указать файл в -rules опция файла, которая позволяет мне установить свой собственный вариант? (без sudo доступа, к сожалению)

6
задан 13 April 2017 в 05:23

1 ответ

Системная база данных настройки клавиатуры XKB хранится в /usr/share/X11/xkb. Разметки XKB определяются в a RMLVO модель: Правила, Модель, Расположение, Вариант, Опции. Основной файл правил, используемый в эти дни, на самом деле evdev; Вы видите это с setxkbmap:

$ setxkbmap -query -verbose 10
...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      pc105
layout:     us
variant:    altgr-intl
options:    caps:hyper,compose:menu
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete
symbols:    pc+us(altgr-intl)+inet(evdev)+capslock(hyper)+compose(menu)
geometry:   pc(pc105)

Каждый из компонентов, упомянутых в последних нескольких строках выше, является подкаталогом системной базы данных в /usr/share/X11/xkb, и показанные значения являются именами файлов в том подкаталоге (разделенный +) с этим будут консультироваться для создания этой конкретной контурной карты. Круглые скобки отмечают конкретный пункт в указанном файле (обычно варианты и опции).

Инструменты XKB (setxkbmap, xkbcomp, и т.д.), может взять аргумент для поиска другого местоположения файлы, но это пользовательское местоположение должно быть в том же формате как системная база данных. Вот то, на что похожа системная база данных. Посмотрите README в каждом каталоге для получения дополнительной информации и

/usr/share/X11/xkb/
├── compat       # ??? dark magic here, avoid
├── geometry     # as in physical, eg for generating layout maps
├── keycodes     # helpful for translating keycodes (from xev) to <FOO>
├── rules        # "evdev" is the important one; *.lst & *.xml are descriptions
├── symbols      # main layouts, variants, optional overrides
└── types        # ??? dark magic here, avoid

Если Вы хотите переопределить эти файлы или обеспечить Ваши собственные разметки, не объединяя их в системную базу данных, что Вы сделаете, создают подобную структуру каталогов для Ваших собственных файлов. Вы, вероятно, ничего не должны будете делать с geometry или keycodes если Вы не создаете свои собственные клавиатуры с нуля.

Для конфигурации в расчете на пользователя, $HOME/.xkb/ или $HOME/.config/xkb/ идеальны:

$HOME/.config/xkb/
...
├── rules
│   ├── evdev-local
│   ├── evdev-local.lst
│   └── evdev-local.xml
├── symbols
│   ├── my-fun-capslock-options
│  ├── my-US-Dvorak-layout
│  └── my-ZWERTY-layout
...

После того как Ваша структура каталогов существует, можно загрузить настройки -I /path/to/local/xkb параметр:

setxkbmap -I $HOME/.config/xkb \
  -rules evdev-local           \
  -layout my-ZWERTY-layout     \
  -option myZWERTY:option1,compose:menu,fun:caps_is_insert

Можно смешать и соответствовать локальным опциям как fun:caps_is_insert с системными опциями как compose:menu пока указанный файл правил определяет их обоих. (Файлы символов могут включать другие файлы символов, но я не нашел включать синтаксис для файлов правил. Необходимо будет, вероятно, скопировать всю систему evdev правила к Вашей локальной версии и добавляют Ваши модификации.)


Используя пользовательские местоположения может не быть применимым с другими системами конфигурации XKB как localectl, Демон настроек GNOME или наборщики Уэйленда, которые не настраиваются с setxkbmap.

Ресурсы:

12
ответ дан 23 November 2019 в 07:25

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

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