Действительно ли возможно использовать пользовательскую раскладку клавиатуры без sudo доступа? Если так, как?

Я использовал пользовательскую клавиатуру некоторое время, с помощью инструкций, подробно изложенных в Справке. Учебное руководство Ubuntu Пользовательские определения раскладки клавиатуры и далее объяснило в этом вопросе. Я стал довольно любящим эту клавиатуру, но я недавно начал использовать машину, где у меня действительно нет sudo доступа (или скорее у меня действительно есть некоторая сумма доступа, но это является действительно неловким).

Так: действительно ли возможно сделать эквивалентную установку, которая является только для моего пользователя, и которая не полагается на административные привилегии? Строго говоря, если это приходит к установке определенных пакетов, я соглашаюсь с этим, но если это требует занимающих место файлов за пределами моего корневого каталога, это становится намного более твердым.

7
задан 13 April 2017 в 05:24

4 ответа

А быстрый надлежащий ответ, так как я еще не могу прокомментировать:

Как я упомянутый по Вашему другому вопросу , Вы создали бы свои файлы расположения в Вашем корневом каталоге (или где-то в другом месте у Вас есть полномочия записи) как локальная версия дерева каталогов базы данных 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
7
ответ дан 23 November 2019 в 06:16

Базовая команда для установки клавиатуры 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)" };
};
3
ответ дан 23 November 2019 в 06:16

ответы донкихотским, завершены, функциональны и вероятно что необходимо обычно делать. Однако, если Вы не хотите копировать и изменять эти 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.

Ссылки:

http://madduck.net/docs/extending-xkb/

https://www.vinc17.net/unix/xkb.en.html

2
ответ дан 23 November 2019 в 06:16

Я могу рекомендовать этот руководство , если Вы просто хотите расширить существующую раскладку клавиатуры.

2
ответ дан 23 November 2019 в 06:16

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

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