经过几天的研究,我发现Ubuntu /etc/gdm/Xsession
而不是 来执行/etc/X11/Xsession
。尽管两者都在 下运行脚本/etc/X11/Xsession.d
。
我已经在 中定义/etc/X11/Xmodmap
并创建了一个钩子脚本/etc/X11/Xsession.d/40load-xmodmap
,但是之后加载的 xmodmap 丢失了99x11-common_start
。
调试代码:
/etc/X11/Xseesion:
...
for file in Xsession.d/*; do
. $file
echo The current xmodmap is:
xmodmap
done
...
打印的 xmodmap 显示40load-xmodmap
工作得很好,但是在桌面启动后,定义的键模式会丢失。
最后,我在用户目录中定义了 xmodmap ~/.Xmodmap
,这次启动会话时会弹出一个窗口提示我启用 Xmodmap。所以我想也许 GNOME 桌面重置了 xmodmap?
答案1
首先,你需要知道在X下有两个用于配置键盘的界面:
- Xmodmap:传统、简单、有限。
- XKB:现代、复杂、强大。
/etc/X11/xorg.conf
您可以使用以下方式定义键盘布局韋斯特设备。(出于某种原因,手册页似乎没有出现在实际的发行版中。)如果您不这样做,则将应用来自的设置/etc/default/console-setup
。
如果您的显示管理器是 Gdm,它会分别从和加载 XKB 和 xmodmap 设置(查看/etc/gdm/Xsession
)。此时,其他显示管理器不会改变您的设置。/etc/X11/Xkbmap
/etc/X11/Xmodmap
登录后,您的桌面环境可能会用其自己的设置覆盖您的设置。如果您运行的是默认的 Ubuntu 环境,请参阅这个问题。
我建议使用 Ubuntu 键盘首选项 GUI 并按“全系统应用”选择与您的键盘相对应的内置布局作为系统布局,并将您的个人偏好设置分别存储在~/.xmodmap
或中~/.xkbmap
。