我正在尝试重新映射Scroll锁键,以便它生成任何Windows键的密钥代码。
首先,我转储当前的密钥映射:
xkbcomp $DISPLAY original-dump
然后找到我感兴趣的钥匙的钥匙码:
cat original-dump | grep SCLK
= 78;
cat original-dump | grep LWIN
= 133;现在,我将组件名称打印到一个文件中:
setxkbmap -print > original-components编辑该文件以添加我的密钥代码修改:
xkb_keymap {
xkb_keycodes {
include "evdev+aliases(qwerty)"
// Remap Scroll-lock to the keycode of LWIN(133)
= 133;
};
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)" };
xkb_geometry { include "pc(pc105)" };
};将上述文件保存为修改后的组件并运行:
xkbcomp modified-components $DISPLAY再次倾倒:
xkbcomp $DISPLAY original-dump检查关键代码:
cat another-dump | grep SCLK
= 133;到目前为止还不错,但是当我运行xev时,Scroll键的密钥仍然是78。
如果我跑:
xmodmap -e "keycode 78 = Super_L"克列夫仍然向我展示78,但至少我在XFCE中为LWIN和RWIN工作创建了快捷方式。
我想知道我对xkb做了什么错误。谢谢。
发布于 2020-03-14 11:47:03
在sclkfile目录中创建了一个名为/usr/share/X11/xkb/symbols/的新文件,并添加了以下内容:
// Make the Scroll Lock key a left Super.
xkb_symbols "sclk_super" {
replace key { [ Super_L ] };
modifier_map Mod4 { };
};在/usr/share/X11/xkb/rules/evdev中添加了新规则:
sclkoption:sclk_super = +sclkfile(sclk_super)以及在/usr/share/X11/xkb/rules/evdev.lst中对规则的描述:
! option
sclkoption Scroll Lock behaviour
sclkoption:sclk_super Scroll Lock is Super这里也是/usr/share/X11/xkb/rules/evdev.xml:
sclkoption
Scroll Lock behaviour
sclkoption:sclk_super
Scroll Lock is Super最后运行:
$ setxkbmap -option sclkoption:sclk_super没有错误,当我打印布局的组件时:
$ setxkbmap -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)+sclkfile(sclk_super)" };
xkb_geometry { include "pc(pc105)" };
};新规则就在那里。
现在,如果我运行xev:
keycode 78 (keysym 0xffeb, Super_R)密钥代码仍然是78,但是密钥同步是Super_R。成功。
https://unix.stackexchange.com/questions/572768
复制相似问题