晚会晚了,但这也让我发疯了;而且,尽管我很固执,但放弃是没有选择的。
基本上,这就是我尝试过的方法(作为用户,如果需要,则以root用户身份)
- 〜/。仅Xmodmap
- 〜/ .xsession,〜/ .xsessionrc
- 〜/ .gnomerc
- 〜/ .xprofile
- 〜/ .xinitrc
- /etc/X11/Xsession.d/myscript
- /usr/share/X11/xorg.conf.d/(配置文件,没有碰到它)
(实际上,将xmodmap
命令添加到~/.bashrc
工作中,但是每次登录后都需要启动终端)
几年前(?)xkb
被选择来处理键映射和配置(与X接口),但是在X会话初始化期间完成了X的工作xmodmap
之后,还可能要求对X进行键相关的更改xkb
。
问题是这些xmodmap设置应何时发生?
这似乎与上述文件的过程中过早地进行处理,并且X还没有准备好接受xmodmap的变化,或将XKB覆盖它们。
注意:我向这些文件添加了一些“跟踪”,以确保它们确实在某个时间运行!
似乎有效的解决方案
我最初不希望添加.desktop
文件(一个简单的单行脚本就足够了),但是可以,所以就在这里。
解决方案来自于如何在Linux中重新映射或交换特殊的键盘键?“解决方案1”
基本上创建~/.config/autostart/my-xmodmap.desktop
文件,并放入其中:
[Desktop Entry]
Name=MyXmodmap
Exec=/usr/bin/xmodmap /home/me/.Xmodmap
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
更换me
您的用户名(请注意,我没有刻意去尝试~/
或$HOME
可替代的效果一样好/home/me
,而xmodmap的完整路径可能是没有必要的......),并添加EXEC位
chmod +x ~/.config/autostart/my-xmodmap.desktop
~/.Xmodmap
在这种情况下,xmodmap命令必须位于文件中(或使用该-e
选项,或选择另一个文件名!)。注销并重新登录。
请注意,您可以从“启动应用程序”创建启动程序。
另一个解决方案是忘记xmodmap并学习如何配置xkb
!
再次编辑
有时,也许有25%的登录xmodmap
仍然无法正常工作-当命令实际运行时(跟踪器证明了这一点)。我此时可能得出的唯一结论是,该xkb
过程确实在登录过程中运行较晚,并且可能在xmodmap
运行之后结束。看起来像是竞争条件...因此,最后,我将自动启动桌面文件exec
行更改为
Exec=$HOME/bin/mystart &
(请注意&
)
mystart
是bin
我创建的新目录中的一个脚本,其中包含
#!/bin/bash
sleep 5
/usr/bin/xmodmap /home/me/.Xmodmap &
date >> /tmp/xmodmap-has-run
和
chmod u+x ~/bin/mystart
该脚本在运行xmodmap之前会休眠5秒钟,并跟踪它何时运行(在文件中/tmp/xmodmap-has-run
)。
希望这就是全部!