奇怪的无法控制的滚动

奇怪的无法控制的滚动

今天早上我醒来时就发现了这种奇怪的情况。当我昨天离开电脑时,它并没有这样做。

当我的 tmux 键绑定不起作用时,我第一次注意到它。我的前缀是 Ctrl+空格。然后我注意到,当我的鼠标滑过浏览器选项卡时,它们不断向右滚动。然后我注意到终端总是滚动到底部。但不在我的 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

  1. 确认正在接收事件xev

  2. 使用以下命令查找发出这些事件的设备 ID:

xinput --test-xi2

它将输出此类事件:

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

相关内容