是否可以在没有 sudo 访问权限的情况下使用自定义键盘布局?如果是这样,如何?

E.P*_*.P. 8 keyboard-layout sudo

我使用自定义键盘已经有一段时间了,使用 Help.Ubuntu 教程自定义键盘布局定义中详述的说明并在此问题中进一步解释。我越来越喜欢这个键盘,但我最近开始使用一台我没有 sudo 访问权限的机器(或者更确切地说,我确实有一些访问权限,但它真的很尴尬)。

那么:是否可以进行仅适用于我的用户且不依赖于管理权限的等效安装?更具体地说,如果涉及到安装特定的软件包,我可以接受,但是如果它需要替换我的主目录之外的文件,它会变得更加困难。

qui*_*tic 7

快速正确的答案,因为我还不能评论:

正如我在您的其他问题中提到的,您将在您的主目录(或您具有写权限的其他地方)中创建布局文件作为 XKB 数据库目录树的本地版本:

$HOME/.config/xkb/
...
??? rules
?   ??? evdev-local
...
??? symbols
?   ??? my-fun-capslock-options
?   ??? my-US-Dvorak-layout
?   ??? my-ZWERTY-layout
...
Run Code Online (Sandbox Code Playgroud)

...然后使用该-I选项setxkbmap

setxkbmap -I $HOME/.config/xkb \
  -rules evdev-local           \
  -layout my-ZWERTY-layout     \
  -option myZWERTY:option1,compose:menu,fun:caps_is_insert
Run Code Online (Sandbox Code Playgroud)


Rma*_*ano 4

设置键盘的底层命令是setxkbmap--- 现在,查看其手册页,它似乎会从 读取键盘规范/usr/share/X11/xkb/,因此您需要在那里编写修改后的布局 --- 系统目录,需要 root 访问权限。

我试过这个:

strace setxkbmap nonexistant |& grep open
Run Code Online (Sandbox Code Playgroud)

查看命令正在执行的操作,然后查看:(部分输出)

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
Run Code Online (Sandbox Code Playgroud)

所以看来还在当前setxkbmap目录中查找文件规范。所以也许(我没有时间测试)如果你复制所有相关的目录结构/usr/share/X11/xkb/$HOME/myxkb然后尝试发出命令

setxbmap -model pc105 -layout myshiny -variant myvariant 
Run Code Online (Sandbox Code Playgroud)

或任何可能有效的方法。

PD:arch 帮助页面一如既往地有用;您可以使用一个很好的命令来查看您正在使用的键盘是由什么组成的:

[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)" };
};
Run Code Online (Sandbox Code Playgroud)