当前位置: 首页>>技术教程>>正文


如何在登录时设置Xmodmap?

, ,

问题描述

由于我的键盘布局不适合我,我在登录时运行xmodmap。该脚本名为.profile,它运行正常,但它打破了Unity接口。

我想知道在哪里放置xmodmap线,以便它在我的登录时执行,并且不会破坏任何东西。

我已经尝试将其放入.bash_login.bash_profile文件中,但未成功(xmodmap未设置我的键盘)。

我有什么选择?

最佳解决办法

放置xmodmap ~/.Xmodmap的正确位置(以便在启动时读取您的更改)位于~/.xinitrc(请参阅下面的说明),但您也可以将xmodmap命令作为启动项(/usr/bin/xmodmap /home/user/.Xmodmap)。我可以说,对于12.04(可能是12.10),这两个选项确实可行,因为在您使用lightdm登录后,它们都会被读取。 (我更改了Return to Right Shift,更改仅在输入密码并登录后生效)。

请注意:如果您使用的是Xfce,则在official Xfce FAQ上注明,您可能必须创建启动项而不是使用〜/.xinitrc,并且您可能必须延迟执行,以便setxkbmap不会覆盖xmodmap更改。您可以在启动条目中使用延迟来实现此目的:

/bin/bash -c "sleep 20; /usr/bin/xmodmap /home/$USER/.Xmodmap"

(对于启动条目,必须指定绝对路径)

每次运行setxkbmap以更改键盘布局时,您必须在终端中再次运行xmodmap ~/.Xmodmap

创建~/.xinitrc

在您的主文件夹中创建一个名为.xinitrc的文件

touch .xinitrc

并放入其中:

xmodmap ~/.Xmodmap

您的Xmodmap文件不应具有xmodmap -e " "样式的条目,因为它在终端中用于临时设置值。它必须具有以下格式的条目:

keycode 65 = Tab
keycode 23 = Space

在启动时读取各种X文件(例如.xprofile.xinitrc等)通常会造成混淆,但.xinitrc似乎仍然在12.04下读取,而.Xmodmap.xinputrc本身不能读取。

次佳解决办法

我正在使用ElementaryOS(使用基于GNOME的窗口管理器),并通过使用xdg自动启动脚本找到了解决方案。许多窗口管理器正在使用xdg,所以我认为这种方法也适用于其他环境。至少它应该与GNOME一起使用。

xdg在X会话中登录后在~/.config/autostart中运行脚本。要在登录时加载xmodmap配置,请将以下脚本添加到~/.config/autostart/xmodmap.desktop

[Desktop Entry]
Name[en_US]=Xmodmap
Comment[en_US]=xmodmap ~/.Xmodmap
Exec=/usr/bin/xmodmap .Xmodmap
Icon=application-default-icon
X-GNOME-Autostart-enabled=true
Type=Application

然后注销并再次登录,并且您的Xmodmap配置应该已加载。

如果它不起作用,尝试在终端中运行xmodmap以查看它是否是抱怨的xmodmap:

$ xmodmap ~/.Xmodmap

如果没有收到任何错误,请运行以下命令进行调试:

$ sudo cat /var/log/syslog | grep -B 5 -A 5 xmodmap

第三种解决办法

我刚才没有在我面前的统一界面,但尝试单击启动器上的“应用程序”按钮,然后键入启动。应该有一个名为Startup Applications的应用程序(或其他一些应用程序)。单击它并添加您的xmodmap命令(例如xmodmap /home/thiago/.Xmodmap)。

第四种办法

在Mint 17/18上,我可以实现将我的脚本放入启动应用程序,延迟1秒。

由于Mint 18源自Ubuntu 1604,我认为您可以这样做,或者如果不存在,则首先安装Startup Application管理面板。

希望能帮助到你。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2145.html,未经允许,请勿转载。