我正在尝试找到一种强制重新映射键盘键的方法。
我尝试使用 xmodmap 和 setxkbmap,但它们不适用于某个特定应用程序。此类命令适用于 X tho 上的其他普通窗口/应用程序。
我认为应用程序可能正在读取键盘原始数据并忽略 X 输入?
那么,如何在不使用 xmodmap 和 setxkbmap 的情况下重新映射密钥?如果有可能使用某些软件来完成。
我也试过 xkeycaps、xkbcomp,但没有试过 loadkeys,因为它在 X 上运行。
我在这里发现我可以尝试setkeycodes
,“因为在分配内核键码后,按钮应该在 xorg 中工作”,但我也发现“你不能在 USB 键盘上使用‘setkeycodes’”,这就是我的情况(我对 case 感兴趣有人让它在 ps2 上工作,因为我认为我可以使用适配器)。
这似乎很有希望“将扫描码映射到键码”,但经过几次测试后,没有任何变化,它们如下:
我在 vt1 处找到了键码“36”(“j”键),showkey
我发现扫描码“7e”(键盘“.”)在vt1 与showkey --scancodes
$cat >/etc/udev/hwdb.d/90-custom-keyboard.hwdb
keyboard:usb:v*p*
keyboard:dmi:bvn*:bvr*:bd*:svn*:pn*:pvr*
KEYBOARD_KEY_7e=36
$udevadm hwdb --update #updates file: /lib/udev/hwdb.bin
$udevadm trigger #should apply the changes but nothing happened
$cat /lib/udev/hwdb.bin |egrep "KEYBOARD_KEY_7e.{10}" -ao
KEYBOARD_KEY_7eleftmeta
$#that cat on hwdb.bin did …
Run Code Online (Sandbox Code Playgroud) 有没有办法查询从哪里xkb
获取配置?在 ArchLinux 下,我有/etc/X11/xorg.conf.d/00-keyboard.conf
:
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "us,us"
Option "XkbVariant" "altgr-intl,colemak"
Option "XKbOptions" "ctrl:nocaps,grp:alt_shift_toggle"
EndSection
Run Code Online (Sandbox Code Playgroud)
但是当我启动时,如果我这样做setxkbmap -query
,我只会得到
rules: evdev
model: evdev
layout: us,us
variant: altgr-intl,
Run Code Online (Sandbox Code Playgroud)
因此,无论是替代变体还是选项都无法识别(不用说,我无法更改布局)。如果我跑
setxkbmap -layout "us,us" -variant "altgr-intl,colemak" -option "ctrl:nocaps,grp:alt_shift_toggle"
Run Code Online (Sandbox Code Playgroud)
我得到了正确的
rules: evdev
model: evdev
layout: us,us
variant: altgr-intl,colemak
options: ctrl:nocaps,grp:alt_shift_toggle
Run Code Online (Sandbox Code Playgroud)
那么是否有可能覆盖我的配置?我正在运行 GNOME/Cinnamon
我正在寻找一种方式来交换Esc和Caps LockLinux虚拟控制台上。
在 X11 中,我可以使用setxkbmap -option caps:swapescape
,但我不知道文本模式中的等效项。那么,我能做什么?
这似乎是一个奇怪的问题,但我突然想到,在键入如下命令时,我总是必须从Wikipedia复制并粘贴该字符。
echo '5 ?s' >> /tmp/Output
Run Code Online (Sandbox Code Playgroud)
有没有办法直接在标准英文键盘上的键盘快捷键上使用转义序列输入这样的字符?
例如,在 中Vim
,可以执行C-k,m*
此操作来生成此字符。
如果uname -r
返回大于 5.9 的 Linux 版本,请停止阅读,因为回滚已被简单地删除 ( 1 , 2 )。
我的键盘没有单独的 PgUp 和 PgDown 键。它们位于数字键盘中,与 KP_9 和 KP_3 共享位置。
Shift+Pg{Up,Down}
无论 Numlock 打开或关闭,都无法滚动终端。
由于我不关心键盘数字,但非常关心滚动,因此我已成功地将它们在 X11 中重新映射到“上一个”和“下一个”,无论 Numlock 状态如何,现在两者都可以Shift+{PgUp,Down}
在 Xterm 中使用。
但是,我无法在 TTY 中实现相同的目标。例如,使用其他具有专用页面键的键盘,我可以在读取大文件Shift+PgUp
后向后滚动。cat
作为showkeys
:
KP_3/KP_PgUp = 73
KP_9/KP_PgDown = 81
Slash = 89
Right Shift = 54
Run Code Online (Sandbox Code Playgroud)
作为dumpkeys
:
PgUp = 104
PgDown = 109
Run Code Online (Sandbox Code Playgroud)
斜杠和右移也被列出,因为我也将交换它们只是为了测试。
完全修改/etc/console-setup/remap.inc
为这样:
keycode 73 = Prior
shift keycode 73 …
Run Code Online (Sandbox Code Playgroud)注意:大约一个月前我在超级用户中问过这个问题,但直到那时还没有回复,而且问题与 linux 相关,所以我在这里发布它。
我想交换键盘上的 esc 和 caps_lock 键。setxkbmap -option caps:swapescape
完成工作,但仅适用于 X。按键在虚拟控制台上以原始方式运行。如何让它们在 vc 上以所需的方式运行?
在我的 CentOS 系统上,Ctrl+Alt+F1
显示名为 的 X Windows 会话:0
,但在其他系统上Ctrl+Alt+F7
可能会执行相同的操作。是什么决定了 Fn 键如何映射到 X 会话和 TTY?
keyboard ×3
console ×2
linux ×2
tty ×2
x11 ×2
cinnamon ×1
command-line ×1
debian ×1
input-method ×1
key-mapping ×1
scrolling ×1
xkb ×1
xorg ×1