Ubuntu 13.04 中的永久 xmodmap

Ubuntu 13.04 中的永久 xmodmap

我无法让 xmodmap 在 Ubuntu 13.04 中登录时运行。我搜索了包括 askubuntu 在内的所有网站,但我找到的所有答案都不起作用。

我的主文件夹中有一个名为 .Xmodmap 的文件,其中包含所需的映射。如果我手动运行它,它会正常工作,因此没有错误。为了使其在启动时运行,我尝试过:

  1. .xinitrc使用包含以下命令之一的 各种命令:

    • xmodmap .Xmodmap
    • xmodmap ~/.Xmodmap
    • /usr/bin/xmodmap /home/NAME/.Xmodmap
    • if [ -s ~/.Xmodmap ]; then
      xmodmap ~/.Xmodmap
      fi
  2. 使用.Xresources而不是 ,且.xinitrc有相同的变化。

  3. 将其设置为启动应用程序。

以上方法在 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->XkbLayoutmylayout(文件名)并更改XkbVariantbasic(见上文)。之后,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,并且设置似乎在挂起状态下继续运行。(我很少使用挂起功能,而且我也不确定笔记本电脑实际上处于哪种模式。)

相关内容