如何在 Ubuntu 16.04 中持久地重新映射按键?

如何在 Ubuntu 16.04 中持久地重新映射按键?

这适用于当前会话:

costales@dev:~/Desktop$ xmodmap -e "keycode 166 = less"
costales@dev:~/Desktop$ xmodmap -e "keycode 167 = greater"

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

costales@dev:~/Desktop$ cat ~/.Xmodmap 
keycode 166 = less
keycode 167 = greater
costales@dev:~/Desktop$ 

但重启后它不起作用。我如何才能强制重新映射在重启后继续生效?

答案1

根据我在 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在终端上运行。

注销并重新登录以应用更改。

答案2

我已经使用 16.04 一段时间了,它似乎使用 sddm 作为桌面管理器。之前它曾使用 LightDM 和 GDM。据记录,它的两个前身都可以~/.Xmodmap自动加载,但我找不到任何明确说明 sddm 可以这样做的内容。

因此,建议强制加载新脚本。您只需运行xmodmap ~/.Xmodmap,您可以通过多种方式执行此操作:

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

可能还有几十种其他方法可以解决这个问题,本质上做同样的事情。

答案3

/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

每次都有效。

答案4

转到启动应用程序并创建一个新条目,其内容如以下屏幕截图所示:

添加新的启动应用程序(命令)

每次都有效。

相关内容