Я пытаюсь установить пользовательскую раскладку клавиатуры без 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 доступа, к сожалению)
Системная база данных настройки клавиатуры 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
.
Ресурсы: