
我已經建立了一個自訂鍵盤,拇指下有一個軌跡球,我想以這樣的方式映射滾動行為,當我按下快捷鍵(如左 Alt)並旋轉球時,它的行為應該像滾動。我在這裡使用 Xorg,但我對尋找 X 和 Wayland 的解決方案非常感興趣(如果解決方案涉及顯示伺服器)。
答案1
使用模擬垂直和水平滾動libinput
司機evdev
來自德克特的答案僅支援垂直滾動模擬。如果您(像我一樣)也想水平滾動,libinput
可以使用驅動程式來做到這一點:
詳細資訊位於以下內容的線上說明頁面
libinput(4)
:選項“滾動按鈕”“int”
將按鈕指定為滾動按鈕。如果滾動方式是按鈕並且邏輯上按住按鈕,x/y 軸移動轉換為滾動事件。
選項“ScrollMethod”“字串”
啟用滾動方法。允許的值為無、雙指、邊緣、按鈕。並非所有裝置都支援所有選項,如果不支援某個選項,則使用該裝置的預設滾動選項
例如:
Section "InputClass" Identifier "Some Trackball" # ... Stuff to match your trackball, see xorg.conf(5) Driver "libinput" Option "ScrollMethod" "button" Option "ScrollButton" "4" # Or whatever button suits your needs EndSection
答案2
用軌跡球模擬滑鼠滾輪
您可以使用現有的驅動程式設定選項來完成與您想要的類似的操作,也可以編寫自己的驅動程式。
這羅技 M570是具有 USB 接收器的無線軌跡球。這意味著它將顯示為 高壓氣體放電管設備和滑鼠事件將透過輸入位於內核層,可以從相應的/dev/event
設備中讀取。
X驅動程式反過來使用evdev
驅動程式從該層讀取事件,並將它們轉換為X事件。我不熟悉 Wayland,但我認為它在那裡也會有類似的工作方式。
1)evdev
驅動程式已包含在軌跡球上模擬滑鼠滾輪的選項,請參閱man evdev
。最重要的是
選項“EmulateWheel”“布林值”
啟用/停用“輪子”模擬。滾輪模擬意味著在按下特定真實按鈕的同時移動滑鼠時模擬按鈕按下/釋放事件。滾輪按鈕事件(通常為按鈕 4 和 5)通常用於滾動。車輪模擬對於透過軌跡球獲得類似車輪的行為非常有用。
選項“EmulateWheelButton”“整數”
指定必須按住哪個按鈕才能啟用車輪模擬模式。當此按鈕按下時,X 和/或 Y 指標移動將產生為 XAxisMapping 和 YAxisMapping 設定指定的按鈕按下/釋放事件。如果按鈕為 0 且 EmulateWheel 開啟,則裝置的任何動作都會轉換為滾輪事件。預設值:4。
因此,這可以使用軌跡球按鈕而不是鍵盤快捷鍵來工作(因為驅動程式只能看到來自滑鼠的事件,而不是來自鍵盤的事件),並且會轉換移動進入車輪事件,而不是迴轉。
2)透過修改幾個現有的驅動程式來編寫自己的驅動程式。您需要組合鍵盤和滑鼠的驅動程序,以便按鍵可以觸發滾輪模擬。
的原始碼內核輸入層位於drivers/input
內核樹中。
的原始碼埃夫德夫X 驅動程式處於xorg/driver/xf86-input-evdev/tree/src/evdev.c。
鍵盤驅動程式取決於您使用的鍵盤類型。