xbindkeys 在一個鍵盤上?

xbindkeys 在一個鍵盤上?

我有當前的設定:

  • PS2 鍵盤 1 個
  • 1個USB鍵盤

然後我用這個:

xinput --create-master SecondKeyboard

xinput --reattach "Keyboard Id" "Master Id"

將他們分開。

我以為我可以創建一個自訂佈局,瞧,一個鍵盤用於書寫,另一個鍵盤用於快捷鍵,然後我發現 xkb 不允許創建單擊多個鍵的佈局(如按下capslock並執行ctrl+ alt+ f4)。

所以我的想法是,讓 xbindkeys 只在其中一個鍵盤上運行,因為它們有不同的 id。我能讓這件事發生嗎?

答案1

所涉及的各個層級的快速總結:

您的鍵盤會產生掃描碼。這些由內核輸入層映射到 上的鍵碼事件/dev/input/eventX。 Xevdev驅動程式會取得這些事件,並將它們轉換為鍵符號。然後,XInput 擴充功能使來自虛擬核心鍵盤從屬的所有事件可用作普通 X 事件,而其他事件僅可用作 XInput 事件。

所以你有以下選擇:

1) 設定自訂掃描碼到鍵碼映射。這些映射是針對每個設備的,因此這實際上是可能的,但這是透過 IOCTL 完成的,除了哈瓦德資料庫udev。然後您可以在 中使用新的 keycides xkb。兩個鍵盤都保留為核心鍵盤。

2) 擴充功能xbindkeys以瞭解 XInput 事件,因此您可以使用它來綁定來自非核心鍵盤的事件。這需要編程,但應該相對簡單。在這種情況下,請像您已經完成的那樣,將一個鍵盤與核心鍵盤分開。

相關內容