
我有當前的設定:
- 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 事件,因此您可以使用它來綁定來自非核心鍵盤的事件。這需要編程,但應該相對簡單。在這種情況下,請像您已經完成的那樣,將一個鍵盤與核心鍵盤分開。