我无法让 xmodmap 在 Ubuntu 13.04 中登录时运行。我搜索了包括 askubuntu 在内的所有网站,但我找到的所有答案都不起作用。
我的主文件夹中有一个名为 .Xmodmap 的文件,其中包含所需的映射。如果我手动运行它,它会正常工作,因此没有错误。为了使其在启动时运行,我尝试过:
.xinitrc
使用包含以下命令之一的 各种命令:xmodmap .Xmodmap
xmodmap ~/.Xmodmap
/usr/bin/xmodmap /home/NAME/.Xmodmap
if [ -s ~/.Xmodmap ]; then
xmodmap ~/.Xmodmap
fi
使用
.Xresources
而不是 ,且.xinitrc
有相同的变化。将其设置为启动应用程序。
以上方法在 Ubuntu 13.04 (64 位) 中均不起作用。我还看到了一些关于全局更改键盘映射的想法,但大多数都不适用于 Ubuntu 13.04(即在指定位置不存在相应文件),而且我无论如何都不想触碰全局设置。
答案1
Ubuntu 不再使用xmodmap
,而是使用xkb
(据我所知,这有助于实现每个窗口的键盘布局等等)。
系统范围的地图文件位于
/usr/share/X11/xkb/symbols/
地图似乎是按层次加载的,以pc
地图为根,任何语言(例如en
)作为根的子项。
在我的特定情况下,我在键盘上将 Page Up 与 Home 进行了物理交换,将 Page Down 与 End 进行了物理交换,因此我非常粗略地对系统范围的pc
地图进行了更改,如下所示:
key <HOME> { [ Prior ] };
key <PGUP> { [ Home ] };
key <END> { [ Next ] };
key <PGDN> { [ End ] };
注意:要强制 Xorg 使用新的键盘映射,您可能必须删除现有的预编译地图(*.xkm)
/var/lib/xkb/
然后重新启动 Xorg。
有各种资源xkb
,但是这个与 Ubuntu 相关。
答案2
对我来说,如果您想以系统设置中不可用的方式重新映射 1 或 2 个键,xkb 配置太复杂了。此外,解决方案应保留在用户端,而无需编辑“/usr/share/X11/xkb/symbols/”等。使用启动应用程序强制加载“xmodmap ~/.Xmodmap”仅在您暂停、更改用户或更改键盘布局之前有效。因此,正如 holocronweaver 所建议的那样,使用我找到的代码片段,我制作了一个在会话启动时加载的 python 脚本,该脚本会在需要时重新加载“~/.Xmodmap”。
检查错误报告 #1243642(评论#6),以及点击下载。
答案3
我在 Ubuntu 14.04 中遇到了这个问题,并找到了解决方案这里。显然,Ubuntu 无法在登录后立即配置键盘,但需要稍晚一些。因此,如果您添加命令
sleep 4 && xmodmap ~/.Xmodmap &
然后~/.bash_profile
它就可以工作了(对我来说确实如此)。
编辑:这似乎仅在登录后才有效,而不是在启动后。我必须稍后调查一下。
答案4
@Daniel 的回答为我指明了正确的方向,但我想进一步延伸它。
适用于 Linux Mint 17.2 和 Ubuntu 16.04。
我尝试了所有能想到的方法来继续使用xmodmap
,但当系统进入睡眠模式时,它们都失败了。对于启动应用程序脚本也是如此,setxkbmap
当 *settings-daemon(对我来说是 xfce4)运行晚于脚本时,这些脚本也会运行 --- 并且顺序实际上无法受到影响。
我最终想到的办法有以下几点:
1) 编写一个最小的键盘映射文件/usr/share/X11/xkb/symbols
。我们可以将该文件命名mylayout
为
xkb_symbols "basic" {
name[Group1] = "My Layout";
include "us"
key <AE03> { [ 3, numbersign, sterling, sterling] };
include "level3(ralt_switch)"
}
basic
只是一个名字,我们以后还会再见面的。- 类似
name[Group1]
只是一个名字,后面并没有什么作用。 include "us"
包括普通的美国键盘。实际上us
是同一目录中的另一个文件。这是我们要调整的键盘布局。根据需要选择其他键盘布局。注意:此行结尾没有分号。- 该
key
行是键盘的一个改编,后面还会有更多改编。可以<AE03>
在 下的文件中找到/usr/share/X11/xkb/keycodes
。使用该xev
程序找出“3”键的键码为 12,并且在键码文件中Xfree86
它被映射到<AE03>
。 - 最后,另一个
include
指令用于激活另一个键盘选项,在这种情况下,我希望将右 Alt 键设置为 3 级 Shift 键,即允许访问sterling
我上面定义的符号的键。level3
只是同一文件夹中的一个文件名,ralt_switch
其中包含其中的一个部分。 浏览并选择您需要包含的内容。
2)我做到了不是将其mylayout
放入系统文件夹。相反,我只从系统文件夹创建了一个软链接到我喜欢的文件夹,这样就能立即看到这不是原版软件。
3)我进一步不是再次修复evdev.xml
,以避免更新麻烦。但这需要在键盘配置编辑器中找到 mylayout(对于 xfce4 是xfce4-keyboard-settings
)。相反,我使用xfce4-settings-editor
并更改keyboard-layout->XkbLayout
为mylayout
(文件名)并更改XkbVariant
为basic
(见上文)。之后,mylayout/basic
也会显示在键盘设置编辑器中。似乎只需要在中输入evdev.xml
即可选择布局。
这样,键盘设置现在仍然可以在睡眠模式和重启时保留。
更多背景信息可在此处找到:http://www.charvolant.org/~doug/xkb/html/node5.html。
解决睡眠模式问题的另一种方法(我自己没有尝试过)可以在这里找到:https://www.vinc17.net/unix/xkb.en.html。
更新:当我按照上述说明更改 xfce4-settings-editor 中的设置时,就可以使用 Mint 18.3。
更新:在 18.04 中,使用 gdm3 作为显示管理器,使用 XFCE4 作为窗口管理器,看起来好像再次读取了 ~/.Xmodmap,并且设置似乎在挂起状态下继续运行。(我很少使用挂起功能,而且我也不确定笔记本电脑实际上处于哪种模式。)