由于我的键盘布局不适合我,因此我xmodmap
在登录时运行。该脚本已命名.profile
,可以正常运行,但会中断Unity接口。
我想知道在哪里放置该xmodmap
行,以便它在我的登录时执行,并且不会破坏任何内容。
我已经尝试将其放在.bash_login
和.bash_profile
文件中,但没有成功(xmodmap
未设置键盘)。
我有什么选择?
由于我的键盘布局不适合我,因此我xmodmap
在登录时运行。该脚本已命名.profile
,可以正常运行,但会中断Unity接口。
我想知道在哪里放置该xmodmap
行,以便它在我的登录时执行,并且不会破坏任何内容。
我已经尝试将其放在.bash_login
和.bash_profile
文件中,但没有成功(xmodmap
未设置键盘)。
我有什么选择?
Answers:
可以放置正确的位置xmodmap ~/.Xmodmap
(以便在启动时读取更改)~/.xinitrc
(请参见下面的说明),尽管您也可以将xmodmap
命令作为启动项(/usr/bin/xmodmap /home/user/.Xmodmap
)放置。我可以说,对于12.04(大概是12.10)来说,这两种选择确实可以工作,因为您使用登录后会以两种方式读取它们lightdm
。(我更改了Return to Right Shift,并且更改仅在输入密码并登录后才生效)。
请注意:如果您使用的是Xfce,则在Xfce 官方FAQ中会指出,您可能必须创建启动项而不是使用~/.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
不被自己阅读。
xmodmap -e '...
,您可以检索正确的格式xmodmap .Xmodmap
有xmodmap -pke
,它会显示当前的映射-虽然你将要过滤下来只适用于你所做的更改线路。
我正在使用ElementaryOS(及其基于GNOME的窗口管理器),并通过使用xdg
自动启动脚本找到了解决方案。许多窗口管理器都在使用xdg,因此我认为这种方法也可以在其他环境中使用。至少它应该与GNOME一起使用。
~/.config/autostart
在X会话中登录后,xdg会运行脚本。要在登录时加载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
~/.xinitrc
文件失败后,自动启动方法对我来说非常理想。正如hxpax指出的那样,Mint用户(可能是大多数/所有Debian衍生的Linux)可以使用GUI对话框通过来添加自动启动条目Main Menu --> Preferences --> Startup Applications
。
我现在没有统一界面,但是尝试单击启动器上的“应用程序”按钮,然后键入启动。应该有一个名为“启动应用程序”的应用程序(或类似的应用程序)。单击它并添加您的xmodmap命令(例如xmodmap /home/thiago/.Xmodmap
)。
xmodmap .Xmodmap
在Mint 17/18上,我可以实现将脚本放到Startup Application中的时间为1秒。
由于Mint 18是从Ubuntu 1604衍生而来的,我想您可以这样做,或者如果它不存在,请先安装启动应用程序管理面板。
希望能帮助到你。
放入xmodmap更改~/.bashrc
或/etc/bash.bashrc
不会破坏任何内容。
唯一的缺点是每次启动后都必须打开终端才能激活它。