如何在 Ubuntu 16.04 中持久地重新映射密钥?

Cos*_*les 33 keyboard xmodmap

这适用于当前会话:

costales@dev:~/Desktop$ xmodmap -e "keycode 166 = less"
costales@dev:~/Desktop$ xmodmap -e "keycode 167 = greater"
Run Code Online (Sandbox Code Playgroud)

然后我创建了这个配置文件:

costales@dev:~/Desktop$ cat ~/.Xmodmap 
keycode 166 = less
keycode 167 = greater
costales@dev:~/Desktop$ 
Run Code Online (Sandbox Code Playgroud)

但是重启后就不行了。我怎么能强制重映射生存重启?

Oli*_*Oli 16

我一直在使用 16.04,它似乎使用 sddm 作为其桌面管理器。在此之前,它曾经是 LightDM 和 GDM。它的两个前身都记录为~/.Xmodmap自动加载,但我找不到任何明确说明 sddm 的内容。

因此,建议只强制它加载新脚本。你只需要运行xmodmap ~/.Xmodmap,你可以通过多种方式做到这一点:

  • 通过图形启动工具添加它
  • 编辑~/.xinitrc运行它。
  • 在中添加新.desktop配置~/.config/autostart/

可能有几十种其他方法来管理这个,基本上做同样的事情。

  • 谢谢你的提示!添加到启动不起作用并且 ~/.xinitrc 不退出。但是将“xmodmap ~/.Xmodmap”附加到 ~/.bashrc 工作!:) (3认同)

Gil*_*rtS 14

在我与Ubuntu中重新映射按键的长期经验,永久的解决方案是修改一个名为evdev/usr/share/X11/xkb/keycodes

在命令提示符中运行此命令。

sudo gedit /usr/share/X11/xkb/keycodes/evdev

请记住 gedit 是一个 Ubuntu 文本编辑器,因此您可以使用 nano 或 vim 代替 gedit。

该文件的格式为:ALIAS: CODE。您可以通过交换不同键的代码来交换按钮。例如,要将 RCONTROL 与 RETURN 交换,请将 evdev 中的两行编辑为:

<RTRN> = 105;

<RCTL> = 36;

要知道xev在终端上运行的按钮的数字代码。

  • 我认为这可能是永久重新映射密钥的最简单方法。我刚刚在基于 Ubuntu 18.04 的发行版上成功地做到了这一点,用右移键替换了我的向上箭头键。谢谢! (3认同)
  • 已投票!20.04 网上唯一可行的解​​决方案。干得好! (2认同)

小智 8

我添加了一个/etc/X11/Xsession.d/80_xmodmap包含以下内容的文件:

#!/bin/sh
# Set custom keycodes
#
# This file is sourced by Xsession(5), not executed.
# The "|| true" is to ensure that the Xsession script does not terminate on error

USRMODMAP="$HOME/.Xmodmap"

if [ -x /usr/bin/xmodmap ]; then
        if [ -f "$USRMODMAP" ]; then
                /usr/bin/xmodmap "$USRMODMAP" || true
        fi
fi
Run Code Online (Sandbox Code Playgroud)

这每次都有效。


小智 5

打开 gnome-session-properties。添加命令和名称。桌面文件将在 ~/.config/autostart 中创建。

记住:使用绝对路径,例如/home/xxx/.Xmodmap。永远不要使用 '~' 作为你的主目录。