这适用于当前会话:
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
每次都有效。