Ubuntu 13.04 中的永久 xmodmap

Ale*_*kis 88 xmodmap 13.04

我无法在 Ubuntu 13.04 中登录时运行 xmodmap。我四处搜索,包括在 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 中不适用(即,指定的位置不存在相应的文件),无论如何我都不想触及全局设置。

Dan*_*iel 95

Ubuntu 不再使用xmodmap,而是使用xkb(据我所知,这有助于每个窗口的键盘布局等)。

系统范围的地图文件位于

/usr/share/X11/xkb/symbols/
Run Code Online (Sandbox Code Playgroud)

地图似乎是分层加载的,以pc地图为根,以任何语言(例如en)作为根的子项。

在我的特殊情况下,我在键盘上将 Page Up 与 Home 和 Page Down 与 End 进行了物理交换,因此我对系统范围的pc地图进行了非常粗略的更改,如下所示:

 key <HOME> {    [  Prior        ]   };
 key <PGUP> {    [  Home         ]   };
 key  <END> {    [  Next         ]   };
 key <PGDN> {    [  End          ]   };
Run Code Online (Sandbox Code Playgroud)

注意:要强制 Xorg 使用您的新键盘映射,您可能需要删除现有的预编译映射(*.xkm)

/var/lib/xkb/
Run Code Online (Sandbox Code Playgroud)

然后重启 Xorg。

上有各种资源xkb,但这一资源与 Ubuntu 相关。

  • 从 Ubuntu 14.04 开始,遗憾的是,这是交换密钥的最简单方法。您可以通过将 xmodmap 添加到启动应用程序来使其在登录时运行,但是如果您挂起、休眠等,您必须手动启动它或创建启动守护程序脚本。 (11认同)
  • 我不认为你的第一句话是真的。你有它的来源吗?我发现很难相信重新映射按键的“Ubuntu 方式”是从 `xkb` 编辑键盘映射。除了神秘之外,还有一个问题是您的自定义地图在更新 `xkb` 时会被删除。 (8认同)
  • 必须有更好的方法。我知道我想要映射的确切键码,但键码 217 甚至没有在 xkb 中列出。我什至看不到添加新键码的方法。 (2认同)
  • 对我来说,基于“evdev”的解决方案在 19.10 下持续工作,请参阅 https://askubuntu.com/a/1161870/835198 (2认同)

ded*_*alu 18

对我来说,如果您想以系统设置中不可用的方式重新映射 1 或 2 个键,那么 xkb 配置就太复杂了。另外,解决方案应该保留在用户端,而不需要编辑“/usr/share/X11/xkb/symbols/”等。使用启动应用程序强制加载“xmodmap ~/.Xmodmap”仅在您挂起、更改用户之前有效或更改键盘布局。因此,正如 holocronweaver 所建议的,使用我找到的代码片段,我制作了一个在会话启动时加载的 python 脚本,在需要时重新加载“~/.Xmodmap”。

检查错误报告 #1243642(评论 #6),并在此处下载

  • 从 15.10 开始仍在工作 :-) 谢谢! (2认同)
  • @Epigene - 链接现在在那里 (2认同)

dre*_*ris 7

我在 Ubuntu 14.04 中遇到了这个问题,并在这里找到了解决方案。显然,Ubuntu 无法在登录后立即配置键盘,但要稍晚一些。所以如果你添加一个命令

sleep 4 && xmodmap ~/.Xmodmap &
Run Code Online (Sandbox Code Playgroud)

~/.bash_profile那么它应该工作(它确实对我来说)。

编辑:这似乎只有在登录后才有效,在启动后无效。稍后我将不得不对此进行调查。


Ser*_*ndt 7

转换Caps LockEscvim使用

这是我的键映射启动脚本的变体。它可以在任何键盘上转换Caps LockEscvi,vim或一起使用gvim

q4w56的答案不同,这个答案没有使用任何无限while; do循环。否则,我的双核 CPU 的一个核心每 5 秒就会达到 42%,这会严重降低我的笔记本电池电量。

#!/usr/bin/env bash
sleep 4
xmodmap -e "clear Lock"
xmodmap -e "keysym Caps_Lock = Escape"
Run Code Online (Sandbox Code Playgroud)

将其另存为脚本。使用chmod +x. 将脚本名称和位置添加到Session and Startup ? Application Autostart(在 Xubuntu 中)。

此用户的键盘行为将通过重新启动和注销保持不变,但不会挂起。可以通过挂起实现持久化,但不幸的是只能在系统级别,而不是在用户级别。

编辑

我放弃了上述解决方案,转而支持此解决方案该解决方案除了提供 上的Esc功能外CapsLock,还提供箭头键????PgUpHomeEndPgDn通过CapsLock+的键HJKL,分别为CapsLock+ UIOP

此键盘重新映射的基本原理

在当今的计算世界中,Caps Lock密钥几乎没有什么用处。一般来说,由于网络礼仪以及演示和内容的分离,人们应该避免使用全部大写。此外,在编辑文本时意外按下键并不总是立即被注意到,但总是会导致相当烦人的行为。一起禁用密钥并将其重新用作易于访问的密钥会导致使用双赢。Caps LockvimvimCaps LockEscvim

  • 最好将 `capslock` 重新映射到 `ctrl`。这解决了更多的问题,然后在 Vim 中,你可以使用 `capslock` + `[` for `Esc` 抱歉打扰了,但我觉得有必要提出这个建议。 (3认同)

Har*_*ald 6

@Daniel 的回答为我指出了正确的方法,但我想扩展一下。

适用于 Linux Mint 17.2 和 Ubuntu 16.04。

我尝试了所有我能想到的继续使用的方法xmodmap,但是当系统进入睡眠模式时它们都失败了。同样的情况甚至适用于在 *settings-daemon(对我来说是 xfce4)运行晚于脚本的情况下使用的启动应用程序setxkbmap脚本 --- 并且顺序不会真正受到影响。

我最终想出的有以下成分:

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)"
}
Run Code Online (Sandbox Code Playgroud)
  • basic只是一个名字,我们稍后再见面。
  • 类似name[Group1]看起来只是一个名字,但以后不会起任何作用。
  • include "us"包括普通的美国键盘。实际上us是同一目录中的另一个文件。这是我们正在调整的键盘布局。根据需要选择不同的一个。注意:没有分号来结束这一行。
  • key线是键盘的一种适配,更多可以遵循。可以<AE03>在 下的文件中找到/usr/share/X11/xkb/keycodes。使用该xev程序找出“3”键的键码为 12,并且在键码文件中Xfree86它映射到<AE03>.
  • 最后是另一个include指令来激活另一个键盘选项,在这种情况下,我希望将正确的 Alt 键作为 3 级换档键,即可以访问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

更新:在使用 Mint 18.3 的同时,我更改了 xfce4-settings-editor 中的设置,如上所述。

更新:在 18.04 中,gdm3 作为显示管理器,XFCE4 作为窗口管理器,看起来好像 ~/.Xmodmap 被再次读取,并且设置似乎在挂起后仍然存在。(我很少使用暂停,而且我永远不确定笔记本电脑实际上处于哪种模式。)


归档时间:

查看次数:

70233 次

最近记录:

5 年,1 月 前