我有一台联想 Yoga 710,其中“向上”键位于 Shift 键应在的位置。不幸的是,这台笔记本电脑无法运行早期内核,因为它有“新”硬件。我在这里看到了在 Wayland (GNOME) 中重新映射按键的机制:https://superuser.com/questions/1196241/how-to-remap-caps-lock-on-wayland
但是,我找不到 xkb-options 中“Up”的代码。根据 /usr/share/X11/xkb/rules/base,“右移”可能是“rshift”。xkb-options 键名列表在哪里?“右移键”和“Up”键的名称是什么?
答案1
经过大约两天的谷歌搜索,我终于找到了一个非常简单的方法,即“如何在 Wayland 上重新映射按键”。我不知道这是否是正确的方法,但它确实有效。
我唯一要做的就是打开文件
/usr/share/X11/xkb/keycodes/evdev
该文件以 < code > = number 的形式列出了所有按键的键码
您可以简单地交换键码。我实际上交换的是数字而不是代码。我更改了反斜杠,在 dvorak 中,它位于 Enter 旁边,而在 Emacs 中则位于 Ctrl 旁边。
编辑:要找出哪个“代码”代表每个键,如 <code> = number,您可以xev
从终端运行命令以获取按下按钮后打印在终端中的键代码(在 evdev 文件中搜索该键代码以获取该键的 evdev 扫描码),或者您可以访问
/usr/share/X11/xkb/symbols/
此目录包含计算机上安装的每种语言的文件和修饰键。选择您的电脑所运行的语言。
该文件中将列出所有受支持的变体,例如 dvorak、程序员 dvorak、colemans 等等。
您可以在此处看到 < code > 名称
答案2
目前,使用 Wayland 时自定义按键有点棘手: https://unix.stackexchange.com/questions/292868/how-to-customise-keyboard-mappings-with-wayland
但是如果您只是想重新映射一个键以使其能够作为另一个键发挥作用,该命令setkeycodes
似乎可以工作。
sleep 1; showkey -s
以 root 身份在终端中运行,然后按下键向上一次,然后等待 10 秒钟
root@laptop:~# sleep 1; showkey -s
kb mode was ?UNKNOWN?
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]
press any key (program terminates 10s after last keypress)...
^[[A0xe0 0x48
0xe0 0xc8
root@laptop:~#
从输出中我们可以看到这0xe0 0x48
是该键的扫描码向上。
sleep 1; showkey -k
以 root 身份在终端中运行,然后按下键右移一次,然后等待 10 秒钟
root@laptop:~# sleep 1; showkey -k
kb mode was ?UNKNOWN?
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]
press any key (program terminates 10s after last keypress)...
keycode 54 press
keycode 54 release
root@laptop:~#
从输出中我们可以看到54是钥匙的钥匙代码右移。
重新映射向上关键右移键,setkeycodes 0xe048 54
以 root 身份在终端中运行。
root@laptop:~# setkeycodes 0xe048 54
扫描码以前打印为0xe0 0x48
,但现在当它作为输入参数时setkeycodes
,它被写为0xe048
。
答案3
我能够使用https://github.com/sezanzeb/input-remapper,我通过 Ubuntu 软件(又名 SnapStore)安装。
使用 Ubuntu 22.04、Gnome 42.2、Wayland。