Linux

奇怪的無法控制的滾動

  • July 14, 2021

我今天早上醒來就發現了這種陌生感。昨天我離開電腦時沒有這樣做。

當我的 tmux 鍵綁定不起作用時,我第一次注意到它。我的前綴是 Ctrl+Space。然後我注意到當我的滑鼠移到我的瀏覽器選項卡上時,它們會不斷向右滾動。然後我注意到終端總是滾動到底部。但不是在我的 vim 會話中,只有在使用 urxvt 時在 tmux 中,但在使用 kitty 在 tmux 中時不是。然後我還注意到,任何包含比框架更寬的文本並具有水平捲動條的瀏覽器框架都會向右滾動。在我的瀏覽器中按住我的 Ctrl 鍵也會不斷縮小它。

我為解決問題所做的工作:

  • 更新了我所有的包
  • 多次重啟
  • 殺死所有 tmux 會話
  • 不同的滑鼠和鍵盤
  • 徹底清潔我的滑鼠,包括底部的感測器,確保它不是頭髮
  • 當我的鍵盤完全拔下時會發生這種情況
  • 我可以通過鍵盤導航滑鼠,因此我關閉了滑鼠並僅使用鍵盤進行了測試

如果它在沒有滑鼠打開且沒有插入鍵盤的情況下發生,那麼它必須在我認為的設備之外。

  • 電腦:戴爾 13 XPS
  • 作業系統:Arch Linux
  • 桌面環境:無
  • 視窗管理器:AwesomeWM
  • 鍵盤:Ergodox EZ
  • 滑鼠:J-Tech Digital

我的問題是,我該如何解決這個問題?有沒有辦法看到一些未知的擊鍵發生?還是卡住的滑鼠滾輪命令?

更新

感謝評論中的@duthils 建議。我跑了xev,除了預期的滑鼠移動事件,我發現了這個輸出。

ButtonPress event, serial 32, synthetic NO, window 0x3600001,
   root 0x1a6, subw 0x0, time 87726801, (433,445), root:(4274,482),
   state 0x0, button 7, same_screen YES

ButtonRelease event, serial 32, synthetic NO, window 0x3600001,
   root 0x1a6, subw 0x0, time 87726801, (433,445), root:(4274,482),
   state 0x0, button 7, same_screen YES

根據文件,它看起來確實像是從觸控板發送的水平滾動事件。所以我有我認為禁用它的東西。但它似乎仍在發生。也許我需要重新啟動一些服務或什麼?這是我禁用它的方法。

$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ELAN25B5:00 04F3:25B5                     id=12   [slave  pointer  (2)]
⎜   ↳ DELL07E6:00 06CB:76AF Mouse               id=13   [slave  pointer  (2)]
⎜   ↳ DELL07E6:00 06CB:76AF Touchpad            id=14   [slave  pointer  (2)]
...
$ xinput disable "DELL07E6:00 06CB:76AF Touchpad"

但它繼續發生。所以我也

$ xinput disable "DELL07E6:00 06CB:76AF Mouse"

只是要確定。但它仍然會發生。我是否以正確的方式禁用它?還是我誤讀了由 產生的事件輸出xev?我也在禁用我的觸摸板和滑鼠後對此進行了測試,然後關閉我的實際滑鼠以防它發送這些水平滾動事件。它仍然會在滑鼠關閉的情況下發生。還有什麼可能是我的滑鼠關閉並且觸控板和滑鼠被禁用?

我也很好奇為什麼會這樣?為什麼我的電腦會突然在一夜之間決定開始發送這些水平觸控板滾動事件?

更新 2:

這是xinput --test-xi2感謝@duthils 建議的結果。

EVENT type 17 (RawMotion)
   device: 2 (16)
   detail: 0
   flags: 
   valuators:
         2: 15.00 (15.00)

EVENT type 15 (RawButtonPress)
   device: 2 (16)
   detail: 7
   flags: emulated
   valuators:

EVENT type 16 (RawButtonRelease)
   device: 2 (16)
   detail: 7
   flags: emulated
   valuators:

EVENT type 13 (RawKeyPress)
   device: 3 (19)
   detail: 37
   valuators:

EVENT type 14 (RawKeyRelease)
   device: 3 (19)
   detail: 37
   valuators:

EVENT type 13 (RawKeyPress)
   device: 3 (19)
   detail: 37
   valuators:

EVENT type 17 (RawMotion)
   device: 2 (16)
   detail: 0
   flags: 
   valuators:
         2: 15.00 (15.00)

EVENT type 15 (RawButtonPress)
   device: 2 (16)
   detail: 7
   flags: emulated
   valuators:

EVENT type 16 (RawButtonRelease)
   device: 2 (16)
   detail: 7
   flags: emulated
   valuators:

EVENT type 17 (RawMotion)
   device: 2 (16)
   detail: 0
   flags: 
   valuators:
         0: -0.89 (-1.00)
         1: 0.00 (0.00)

據我所知,它告訴我,我收到了來自 ID 為 16 的設備(我的滑鼠)的按鈕按下和釋放,以及來自 ID 為 19 的設備(我的鍵盤)的按鍵和釋放。

我做了許多其他測試,比如禁用每個設備並執行測試,然後重新啟用它們,然後再次執行測試。比較差異等。來自我的鍵盤的按鍵/釋放似乎沒有什麼不同。但是滑鼠按下/釋放確實如此。我發現它在滑鼠關閉(電源關閉,沒有電池)時仍然發生很奇怪。但我最好的猜測是它來自 USB 加密狗。所以我把它取下來重新插上,中提琴。問題消失了。

  1. 確認正在接收事件xev
  2. 使用以下命令查找發出這些事件的設備 ID:
xinput --test-xi2

它將輸出此類事件:

EVENT type 15 (RawButtonPress)
   device: 2 (16)
   detail: 7
   flags: emulated
   valuators:
  1. 查找設備名稱:設備 ID(如(16))映射到 的設備列表xinput --list

引用自:https://unix.stackexchange.com/questions/657798