我在 xkb 配置文件中定义了一个自定义密钥类型来执行一些重定向(例如重定向Ctrl+p到Up等)。但是,我无法获得此自定义类型的自动重复工作(原始密钥(例如p)或重定向操作(例如Up从Ctrl+重定向p)具有自动重复)。
我尝试根据以下内容添加repeat=true,
到配置keysyms
这来自 xfree86 邮件列表但它也不起作用。
答案1
请阅读man xset
该r
选项。通过向命令提供整数代码,可以启用特定键的自动重复xset r
。例如:
我有
<SPCE> = 134;
在我的自定义 xkbcom 键盘映射文件中。因此,发出:
xset r 134
在终端中,将为我重新映射的空格键启用自动重复。
您可以将此命令添加到您的~/.xinitrc
文件中。无需修改 xkb 配置文件本身。
答案2
我在 Chromium OS 存储库中偶然发现了一个补丁,可能会对此有所帮助;在他们将其实际修补到 Chrome 本身后,它似乎已被删除。不确定补丁的 QA 发生了什么,或者它是否已发送到上游。
链接在这里:X:将 Alt-Up 和 Alt-Down 映射为 Page Up 和 Page Down
补丁如下:
This is a probably-wrong fix for an issue where autorepeat
is disabled for keys assigned by XKB. As far as I can tell,
XKB has the correct autorepeat settings for the keys before
a completely-empty autorepeat array from X is copied over
it; then the XKB array is copied back to X. This makes us
skip the first copy.
diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c
index 75e243c..bceb55c 100644
--- a/xkb/xkbUtils.c
+++ b/xkb/xkbUtils.c
@@ -342,9 +342,6 @@ CARD8 * repeat;
xkb= xkbi->desc;
repeat= xkb->ctrls->per_key_repeat;
- if (pXDev->kbdfeed)
- memcpy(repeat,pXDev->kbdfeed->ctrl.autoRepeats,32);
-
XkbUpdateDescActions(xkb,first,num,changes);
if ((pXDev->kbdfeed)&&
我自己还没有尝试过,但可能会尝试一下。
答案3
我遇到了同样的问题,我重定向SUPER + H到了LEFT有效的方法,但没有重复。
当我添加autorepeat = yes
到关键符号定义时它起作用了。
在这里找到它:http://web.archive.org/web/20190320180541/http://pascal.tsu.ru/en/xkb/gram-symbols.html