XKB - 重新映射箭頭鍵並保留移位行為以選擇文本

XKB - 重新映射箭頭鍵並保留移位行為以選擇文本

我意識到箭頭鍵重新映射是一個老問題,但是我似乎找不到一個好的解決方案,可以讓我使用 SHIFT + 重新映射鍵選擇文本,就像使用普通箭頭鍵一樣。

例如,如果我將 Caps Lock 重新對應到 ISO_Level3_Shift 並將 xkb_symbols 設為讀取

key <AC08>  { [         k,          K , Down, Down] };

或者

key <AC08>  { type="THREE_LEVEL",
              [         k,          K , Down ]  };

按 Shift+CapsLock+K 的行為與 CapsLock+K 完全相同(而 Shift+Down 的行為與單獨按下時不同)。

我使用更高級別的巨集實用程式並產生鍵盤事件(即生成 Shift 和箭頭按鍵)取得了更大的成功;然而,這種方法存在一系列不同的問題 - 通常,UI 對模擬按鍵的響應與“真實”按鍵不同,並且還存在性能問題 - 我打字的速度比設備處理的速度快。

太;博士;如何使用 X 下重新映射的箭頭鍵進行 Shift-選擇?

答案1

您可以使用preserve以下方法:為您新增類型定義(例如THREE_LEVEL)行

preserve[LevelThree+Shift] = Shift;

這告訴 xkb 在 的情況下從修飾符組合中找出適當的層級時保留移位修飾符LevelThree + Shift。移位修飾符被傳遞以供工具包或應用程式使用(另請參見此處:結合使用preserve和類型)。

請注意,這會影響應用程式如何解釋擊鍵組合:如果您已定義了上述保留和

key <AC08> { type="THREE_LEVEL", [ k, K, kappa ]  };

並且您按下Ctrl + Shift + LevelThree + <AC08>應用程式會將其讀取為組合鍵Ctrl + Shift + kappa(而不是通常Ctrl + kappa),因為 Shift 修飾符會保留並傳遞給應用程式。

相關內容