
我在內建 3 按鈕觸控板的 Dell Precision 7560 筆記型電腦上運行 RHEL 8.9(左、中、右按鈕均位於觸控板和筆記型電腦前緣之間)。我有一個 gtk3 應用程序,需要讀取和處理中鍵單擊並拖曳事件。當我使用觸控板的中鍵時,該應用程式運作良好,但當我使用外部三鍵滑鼠時,該應用程式無法運行。 (外接滑鼠的中鍵被確認可以在另一個系統上工作,我還嘗試了第二個外接滑鼠,但也失敗了。)當我按住觸控板中鍵,同時透過觸控板或滑鼠移動滑鼠遊標時滑鼠,顯示器上的遊標按預期移動,並且在我的應用程式中一切正常,而顯示遊標不會隨著外部滑鼠中鍵拖曳而移動,並且我的應用程式看不到運動事件。然而,在外接滑鼠上簡單的中鍵單擊並釋放就可以正常工作。我嘗試過使用各種顯示伺服器(X11 與 Wayland、經典與非經典(?)等)運行,但它們在這裡的行為都是相同的。
我嘗試使用 xev 進行調試,並看到了您所期望的使用觸控板中按鈕的效果,即按下按鈕,然後是一堆 MotionNotify,然後是 ButtonRelease。當我嘗試外部滑鼠中鍵單擊並拖曳時,最初按下並按住中間按鈕不會導致任何事件,每次我希望看到 MotionNotify 事件時,後續拖曳都會產生 ButtonPress/Release 事件對,最後當按鈕被釋放時,不會報告任何事件。
如果上述行為還不夠奇怪,那麼最重要的是至少兩個不同的終端應用程式(gnome-terminal 和 xfce4-terminal)在這方面的相反行為。外部滑鼠中鍵單擊並拖曳將導致終端視窗內容滾動(即,運動事件以某種方式傳遞到終端),儘管顯示遊標再次不移動。然而,儘管顯示遊標移動,但觸控板中鍵單擊並拖曳不會滾動終端視窗內容。
我用 xinput 進行了一些研究,但發現沒有任何裝置或裝置屬性似乎會產生任何明顯的影響:
% xinput --list
Virtual core pointer id=2 [master pointer (3)]
↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
↳ xwayland-pointer:17 id=6 [slave pointer (2)]
↳ xwayland-relative-pointer:17 id=7 [slave pointer (2)]
Virtual core keyboard id=3 [master keyboard (2)]
...
% xinput --list-props xwayland-pointer:17
Device 'xwayland-pointer:17':
Device Enabled (121): 1
Coordinate Transformation Matrix (123): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (247): 0
Device Accel Constant Deceleration (248): 1.000000
Device Accel Adaptive Deceleration (249): 1.000000
Device Accel Velocity Scaling (250): 10.000000
對我來說,這確實有點奇怪,我在 xinput 設備列表中看不到任何東西,似乎清楚地表明了不同的觸控板和滑鼠設備。
有人知道這裡發生了什麼事嗎?我想使用外接滑鼠和封閉式筆記型電腦。我在這個網站和其他地方搜尋了一些類似的情況,但沒有找到似乎適用於我的解決方案。筆記型電腦沒有指點桿,據我所知,我沒有在 ~/.config 中建立捷徑。
謝謝!