如何在登录时设置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, 请注意 官方Xfce常见问题解答 ,您可能需要创建一个启动项而不是使用~/.xinitrc ,并且您可能必须延迟执行,以便xmodmap更改不会被覆盖通过setxkbmap 。 您可以在启动条目中使用延迟来实现此目的:

 /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管理面板。

希望能帮助到你。

我对上述任何建议都不满意(.bashrc选项不是真的可行,因为它在每个新终端上运行xmodmap)

我在我的主文件夹中触摸了一个名为xmodstartup.sh的脚本

  #!/bin/bash sleep 1; echo "running xmodmap" xmodmap ~/.Xmodmap 

随着它保存,我然后做了sudo chmod +x xmodstartup.sh

然后我只是将可执行文件添加到gnome的“启动应用程序首选项”窗口。 bish波什,英语布局altgr 🙂

将xmodmap更改放在~/.bashrc/etc/bash.bashrc中不会破坏任何内容。

唯一的缺点是每次启动后必须打开一个终端才能激活它。