如何在xkb中使自定义按键类型自动重复

如何在xkb中使自定义按键类型自动重复

我在 xkb 配置文件中定义了一个自定义密钥类型来执行一些重定向(例如重定向Ctrl+pUp等)。但是,我无法获得此自定义类型的自动重复工作(原始密钥(例如p)或重定向操作(例如UpCtrl+重定向p)具有自动重复)。

我尝试根据以下内容添加repeat=true,到配置keysyms这来自 xfree86 邮件列表但它也不起作用。

答案1

请阅读man xsetr选项。通过向命令提供整数代码,可以启用特定键的自动重复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

相关内容