中鍵點擊並拖曳觸控板與滑鼠怪異

中鍵點擊並拖曳觸控板與滑鼠怪異

我在內建 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 中建立捷徑。

謝謝!

相關內容