Я использовал пользовательскую клавиатуру некоторое время, с помощью инструкций, подробно изложенных в Справке. Учебное руководство Ubuntu Пользовательские определения раскладки клавиатуры и далее объяснило в этом вопросе. Я стал довольно любящим эту клавиатуру, но я недавно начал использовать машину, где у меня действительно нет sudo доступа (или скорее у меня действительно есть некоторая сумма доступа, но это является действительно неловким).
Так: действительно ли возможно сделать эквивалентную установку, которая является только для моего пользователя, и которая не полагается на административные привилегии? Строго говоря, если это приходит к установке определенных пакетов, я соглашаюсь с этим, но если это требует занимающих место файлов за пределами моего корневого каталога, это становится намного более твердым.
А быстрый надлежащий ответ, так как я еще не могу прокомментировать:
Как я упомянутый по Вашему другому вопросу , Вы создали бы свои файлы расположения в Вашем корневом каталоге (или где-то в другом месте у Вас есть полномочия записи) как локальная версия дерева каталогов базы данных XKB:
$HOME/.config/xkb/
...
├── rules
│ ├── evdev-local
...
├── symbols
│ ├── my-fun-capslock-options
│ ├── my-US-Dvorak-layout
│ └── my-ZWERTY-layout
...
... и затем используют -I
опция с setxkbmap
:
setxkbmap -I $HOME/.config/xkb \
-rules evdev-local \
-layout my-ZWERTY-layout \
-option myZWERTY:option1,compose:menu,fun:caps_is_insert
Базовая команда для установки клавиатуры setxkbmap
---теперь, смотря на его страницы руководства, кажется, что это считает спецификацию клавиатуры от /usr/share/X11/xkb/
, так, чтобы Вы записали свой измененный макет там---системный каталог, корневой необходимый доступ.
, НО
я попробовал это:
strace setxkbmap nonexistant |& grep open
для взгляда на то, что команда делает, и взгляд: (частичный вывод)
open("/run/user/1153/gdm/Xauthority", O_RDONLY) = 4
open("./rules/evdev-C.lst", O_RDONLY) = -1 ENOENT (No such file or directory)
open("./rules/evdev.lst", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/X11/xkb/rules/evdev-C.lst", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/X11/xkb/rules/evdev.lst", O_RDONLY) = 4
, таким образом, это кажется , что setxkbmap
также смотрит в текущем каталоге для спецификации файла. Таким образом, возможно (у меня нет времени тестировать), если Вы копируете всю соответствующую структуру каталогов от /usr/share/X11/xkb/
в, скажем, $HOME/myxkb
и затем пытаетесь выпустить команду
setxbmap -model pc105 -layout myshiny -variant myvariant
или независимо от того, что она может работа.
фунт: страницы справки дуги полезны, как всегда ; хорошая команда, которую можно использовать для наблюдения то, что клавиатуру Вы используете, составлена из, этот:
[romano:~] % 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: pc105
layout: es,us
variant: standard_tlde,
options: caps:none,compose:caps,terminate:ctrl_alt_bksp
Trying to build keymap using the following components:
keycodes: evdev+aliases(qwerty)
types: complete
compat: complete
symbols: pc+es(standard_tlde)+us:2+inet(evdev)+capslock(none)+compose(caps)+terminate(ctrl_alt_bksp)
geometry: pc(pc105)
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+es(standard_tlde)+us:2+inet(evdev)+capslock(none)+compose(caps)+terminate(ctrl_alt_bksp)" };
xkb_geometry { include "pc(pc105)" };
};
ответы донкихотским, завершены, функциональны и вероятно что необходимо обычно делать. Однако, если Вы не хотите копировать и изменять эти rules
, файлы, по любой причине, вот являются альтернативным решением.
В этом случае, мы будем загружаться "xkb файл контурной карты", непосредственно с помощью xkbcomp
.
Первый, создайте любой пользовательский макет или опцию, которую Вы хотите, говорите в файле ~/.config/xkb/symbols/option_file
с содержанием:
partial hidden modifier_keys
xkb_symbols "new_option_1" {
[...]
};
Затем, выводят Ваш текущий макет, с помощью setxkbmap -print > ~/.config/xkb/keymap/my_layout
. (Обратите внимание, что это не должно, обязательно, быть в той же иерархии каталогов как symbols
файл выше (или любые другие файлы, которые Вы добавляете), поскольку мы будем указывать путь к нему явно.) Это будет чем-то вроде формы:
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)" };
xkb_geometry { include "pc(pc105)" };
};
Для включения новой опции отредактируйте выведенное расположение путем добавления +option_file(new_option_1)
к xkb_symbols
строка, таким образом, наш пример стал бы:
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)+option_file(new_option_1)" };
xkb_geometry { include "pc(pc105)" };
};
Наконец, загрузите новую контурную карту: xkbcomp -I$HOME/.config/xkb ~/.config/xkb/keymap/my_layout $DISPLAY
.
Ссылки:
Я могу рекомендовать этот руководство , если Вы просто хотите расширить существующую раскладку клавиатуры.