XKB でカスタム キー タイプを自動繰り返しする方法

XKB でカスタム キー タイプを自動繰り返しする方法

リダイレクト (例: Ctrl+pを にリダイレクトするUpなど) を実行するために、xkb 構成ファイルでカスタム キー タイプを定義しました。ただし、このカスタム タイプでは自動繰り返しが機能しません (元のキー (例: p) またはリダイレクト アクション (例: +Upからリダイレクト) のどちらにも自動繰り返しがありません)。Ctrlp

私は設定に従って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

関連情報