Как сделать так, чтобы пользовательский тип клавиши автоматически повторялся в xkb

Как сделать так, чтобы пользовательский тип клавиши автоматически повторялся в xkb

Я определил пользовательский тип клавиши в своем файле конфигурации 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

Связанный контент