双启动:每次Windows启动时,都会增加Ubuntu上鼠标的滚动速度

我的朋友有微软无线桌面850和AES(PY9-00001) Ubuntu 18.04。 滚动速度太快,但如果他移除USB加密狗并重新插入,它可以解决问题 。

他使用双启动PC,每次启动Windows然后重新启动回到Ubuntu,问题就出现了。

我们怎样才能把它修好?

仅在软重启后才会出现此问题。

当鼠标工作正常时lsusb

lsusb在终端输出

lsusb当它不工作时,启动Windows然后启动Ubuntu

相同的lsusb输出


当鼠标按预期工作时, lsmod输出

 Module Size Used by nls_iso8859_1 16384 1 joydev 24576 0 input_leds 16384 0 snd_hda_codec_realtek 94208 1 snd_hda_codec_generic 73728 1 snd_hda_codec_realtek snd_hda_intel 40960 5 snd_hda_codec 126976 3 snd_hda_intel,snd_hda_codec_generic,snd_hda_codec_realtek mei_me 40960 0 snd_hda_core 81920 4 snd_hda_intel,snd_hda_codec,snd_hda_codec_generic,snd_hda_codec_realtek snd_hwdep 20480 1 snd_hda_codec snd_pcm 98304 4 snd_hda_intel,snd_hda_codec,snd_hda_core snd_seq_midi 16384 0 snd_seq_midi_event 16384 1 snd_seq_midi snd_rawmidi 32768 1 snd_seq_midi lpc_ich 24576 0 intel_rapl 20480 0 x86_pkg_temp_thermal 16384 0 intel_powerclamp 16384 0 coretemp 16384 0 kvm_intel 204800 0 mei 90112 1 mei_me kvm 593920 1 kvm_intel irqbypass 16384 1 kvm crct10dif_pclmul 16384 0 crc32_pclmul 16384 0 ghash_clmulni_intel 16384 0 pcbc 16384 0 snd_seq 65536 2 snd_seq_midi_event,snd_seq_midi snd_seq_device 16384 3 snd_seq,snd_rawmidi,snd_seq_midi snd_timer 32768 2 snd_seq,snd_pcm aesni_intel 188416 0 aes_x86_64 20480 1 aesni_intel crypto_simd 16384 1 aesni_intel glue_helper 16384 1 aesni_intel cryptd 24576 3 crypto_simd,ghash_clmulni_intel,aesni_intel intel_cstate 20480 0 intel_rapl_perf 16384 0 snd 81920 19 snd_hda_intel,snd_hwdep,snd_seq,snd_hda_codec,snd_timer,snd_rawmidi,snd_hda_codec_generic,snd_seq_device,snd_hda_codec_realtek,snd_pcm shpchp 36864 0 soundcore 16384 1 snd mac_hid 16384 0 intel_smartconnect 16384 0 sch_fq_codel 20480 2 parport_pc 36864 0 ppdev 20480 0 lp 20480 0 parport 49152 3 lp,parport_pc,ppdev ip_tables 28672 0 x_tables 40960 1 ip_tables autofs4 40960 2 hid_generic 16384 0 usbhid 49152 0 uas 24576 0 hid 118784 2 hid_generic,usbhid usb_storage 69632 3 uas i915 1617920 66 i2c_algo_bit 16384 1 i915 drm_kms_helper 172032 1 i915 syscopyarea 16384 1 drm_kms_helper ahci 36864 3 sysfillrect 16384 1 drm_kms_helper mxm_wmi 16384 0 sysimgblt 16384 1 drm_kms_helper libahci 32768 1 ahci fb_sys_fops 16384 1 drm_kms_helper r8169 86016 0 drm 401408 11 i915,drm_kms_helper mii 16384 1 r8169 video 45056 1 i915 wmi 24576 1 mxm_wmi 

当鼠标不能正常工作时, lsmod输出

 Module Size Used by nls_iso8859_1 16384 1 input_leds 16384 0 joydev 24576 0 snd_hda_codec_realtek 94208 1 snd_hda_codec_generic 73728 1 snd_hda_codec_realtek snd_hda_intel 40960 5 snd_hda_codec 126976 3 snd_hda_intel,snd_hda_codec_generic,snd_hda_codec_realtek snd_hda_core 81920 4 snd_hda_intel,snd_hda_codec,snd_hda_codec_generic,snd_hda_codec_realtek snd_hwdep 20480 1 snd_hda_codec snd_pcm 98304 4 snd_hda_intel,snd_hda_codec,snd_hda_core snd_seq_midi 16384 0 snd_seq_midi_event 16384 1 snd_seq_midi snd_rawmidi 32768 1 snd_seq_midi intel_rapl 20480 0 x86_pkg_temp_thermal 16384 0 intel_powerclamp 16384 0 coretemp 16384 0 kvm_intel 204800 0 kvm 593920 1 kvm_intel irqbypass 16384 1 kvm crct10dif_pclmul 16384 0 crc32_pclmul 16384 0 ghash_clmulni_intel 16384 0 pcbc 16384 0 aesni_intel 188416 0 aes_x86_64 20480 1 aesni_intel crypto_simd 16384 1 aesni_intel glue_helper 16384 1 aesni_intel cryptd 24576 3 crypto_simd,ghash_clmulni_intel,aesni_intel intel_cstate 20480 0 intel_rapl_perf 16384 0 snd_seq 65536 2 snd_seq_midi_event,snd_seq_midi mei_me 40960 0 lpc_ich 24576 0 snd_seq_device 16384 3 snd_seq,snd_rawmidi,snd_seq_midi snd_timer 32768 2 snd_seq,snd_pcm mei 90112 1 mei_me snd 81920 19 snd_hda_intel,snd_hwdep,snd_seq,snd_hda_codec,snd_timer,snd_rawmidi,snd_hda_codec_generic,snd_seq_device,snd_hda_codec_realtek,snd_pcm shpchp 36864 0 soundcore 16384 1 snd mac_hid 16384 0 intel_smartconnect 16384 0 sch_fq_codel 20480 2 parport_pc 36864 0 ppdev 20480 0 lp 20480 0 parport 49152 3 lp,parport_pc,ppdev ip_tables 28672 0 x_tables 40960 1 ip_tables autofs4 40960 2 hid_generic 16384 0 usbhid 49152 0 uas 24576 0 hid 118784 2 hid_generic,usbhid usb_storage 69632 3 uas mxm_wmi 16384 0 i915 1617920 56 i2c_algo_bit 16384 1 i915 drm_kms_helper 172032 1 i915 ahci 36864 3 r8169 86016 0 syscopyarea 16384 1 drm_kms_helper sysfillrect 16384 1 drm_kms_helper libahci 32768 1 ahci mii 16384 1 r8169 sysimgblt 16384 1 drm_kms_helper fb_sys_fops 16384 1 drm_kms_helper drm 401408 7 i915,drm_kms_helper wmi 24576 1 mxm_wmi video 45056 1 i915 

xinput的输出:

 xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Microsoft Microsoft® 2.4GHz Transceiver v8.0 id=9 [slave pointer (2)] ⎜ ↳ Microsoft Microsoft® 2.4GHz Transceiver v8.0 id=11 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Power Button id=8 [slave keyboard (3)] ↳ Microsoft Microsoft® 2.4GHz Transceiver v8.0 id=10 [slave keyboard (3)] ↳ Microsoft Microsoft® 2.4GHz Transceiver v8.0 id=12 [slave keyboard (3)] ↳ Microsoft Microsoft® 2.4GHz Transceiver v8.0 id=13 [slave keyboard (3)] 

 $ sudo lsof /dev/bus/usb/003/003 [sudo] password for nad: lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs Output information may be incomplete. lsof: status error on /dev/bus/usb/003/003: No such file or directory lsof 4.89 latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/ latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ latest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man usage: [-?abhKlnNoOPRtUvVX] [+|-cc] [+|-ds] [+DD] [+|-E] [+|-es] [+|-f[gG]] [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-ps] [+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-us] [+|-w] [-x [fl]] [--] [names] Use the ``-h'' option to get more help information. 

lsmod没有插入鼠标加密狗(所以鼠标和键盘组合被拔掉)

 Module Size Used by usbhid 49152 0 nls_iso8859_1 16384 1 intel_rapl 20480 0 x86_pkg_temp_thermal 16384 0 intel_powerclamp 16384 0 snd_hda_codec_realtek 94208 1 coretemp 16384 0 snd_hda_codec_generic 73728 1 snd_hda_codec_realtek snd_hda_intel 40960 5 snd_hda_codec 126976 3 snd_hda_intel,snd_hda_codec_generic,snd_hda_codec_realtek snd_hda_core 81920 4 snd_hda_intel,snd_hda_codec,snd_hda_codec_generic,snd_hda_codec_realtek snd_hwdep 20480 1 snd_hda_codec kvm_intel 208896 0 snd_pcm 98304 4 snd_hda_intel,snd_hda_codec,snd_hda_core kvm 593920 1 kvm_intel snd_seq_midi 16384 0 snd_seq_midi_event 16384 1 snd_seq_midi snd_rawmidi 32768 1 snd_seq_midi irqbypass 16384 1 kvm crct10dif_pclmul 16384 0 crc32_pclmul 16384 0 ghash_clmulni_intel 16384 0 snd_seq 65536 2 snd_seq_midi_event,snd_seq_midi snd_seq_device 16384 3 snd_seq,snd_rawmidi,snd_seq_midi snd_timer 32768 2 snd_seq,snd_pcm snd 81920 19 snd_hda_intel,snd_hwdep,snd_seq,snd_hda_codec,snd_timer,snd_rawmidi,snd_hda_codec_generic,snd_seq_device,snd_hda_codec_realtek,snd_pcm joydev 24576 0 input_leds 16384 0 mei_me 40960 0 pcbc 16384 0 soundcore 16384 1 snd mei 90112 1 mei_me aesni_intel 188416 0 aes_x86_64 20480 1 aesni_intel crypto_simd 16384 1 aesni_intel glue_helper 16384 1 aesni_intel cryptd 24576 3 crypto_simd,ghash_clmulni_intel,aesni_intel intel_cstate 20480 0 intel_rapl_perf 16384 0 lpc_ich 24576 0 shpchp 36864 0 mac_hid 16384 0 intel_smartconnect 16384 0 sch_fq_codel 20480 2 parport_pc 36864 0 ppdev 20480 0 lp 20480 0 parport 49152 3 lp,parport_pc,ppdev ip_tables 28672 0 x_tables 40960 1 ip_tables autofs4 40960 2 hid_generic 16384 0 uas 24576 0 hid 118784 2 hid_generic,usbhid usb_storage 69632 3 uas i915 1617920 67 mxm_wmi 16384 0 i2c_algo_bit 16384 1 i915 drm_kms_helper 172032 1 i915 syscopyarea 16384 1 drm_kms_helper sysfillrect 16384 1 drm_kms_helper r8169 86016 0 mii 16384 1 r8169 sysimgblt 16384 1 drm_kms_helper fb_sys_fops 16384 1 drm_kms_helper drm 401408 12 i915,drm_kms_helper ahci 36864 3 libahci 32768 1 ahci wmi 24576 1 mxm_wmi video 45056 1 i915 

我的朋友曾经使用带有线键盘的惠普无线鼠标,一切都很好。 当他购买微软无线鼠标/键盘组合时,他开始面对上面列出的问题。


xinput list-props 9

 Device 'Microsoft Microsoft® 2.4GHz Transceiver v8.0': Device Enabled (140): 1 Coordinate Transformation Matrix (142): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Natural Scrolling Enabled (275): 0 libinput Natural Scrolling Enabled Default (276): 0 libinput Send Events Modes Available (260): 1, 0 libinput Send Events Mode Enabled (261): 0, 0 libinput Send Events Mode Enabled Default (262): 0, 0 Device Node (263): "/dev/input/event5" Device Product ID (264): 1118, 1861 libinput Drag Lock Buttons (291):  libinput Horizontal Scroll Enabled (292): 1 

xinput list-props 11

 Device 'Microsoft Microsoft® 2.4GHz Transceiver v8.0': Device Enabled (140): 1 Coordinate Transformation Matrix (142): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Natural Scrolling Enabled (275): 0 libinput Natural Scrolling Enabled Default (276): 0 libinput Scroll Methods Available (277): 0, 0, 1 libinput Scroll Method Enabled (278): 0, 0, 0 libinput Scroll Method Enabled Default (279): 0, 0, 0 libinput Button Scrolling Button (280): 2 libinput Button Scrolling Button Default (281): 2 libinput Middle Emulation Enabled (282): 0 libinput Middle Emulation Enabled Default (283): 0 libinput Accel Speed (284): -1.000000 libinput Accel Speed Default (285): 0.000000 libinput Accel Profiles Available (286): 1, 1 libinput Accel Profile Enabled (287): 1, 0 libinput Accel Profile Enabled Default (288): 1, 0 libinput Left Handed Enabled (289): 0 libinput Left Handed Enabled Default (290): 0 libinput Send Events Modes Available (260): 1, 0 libinput Send Events Mode Enabled (261): 0, 0 libinput Send Events Mode Enabled Default (262): 0, 0 Device Node (263): "/dev/input/event4" Device Product ID (264): 1118, 1861 libinput Drag Lock Buttons (291):  libinput Horizontal Scroll Enabled (292): 1 

usb-devices

 T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 2 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0002 Rev=04.15 S: Manufacturer=Linux 4.15.0-32-generic ehci_hcd S: Product=EHCI Host Controller S: SerialNumber=0000:00:1a.0 C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 4 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=8087 ProdID=8008 Rev=00.05 C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 2 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0002 Rev=04.15 S: Manufacturer=Linux 4.15.0-32-generic ehci_hcd S: Product=EHCI Host Controller S: SerialNumber=0000:00:1d.0 C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 6 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=8087 ProdID=8000 Rev=00.05 C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh=10 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0002 Rev=04.15 S: Manufacturer=Linux 4.15.0-32-generic xhci-hcd S: Product=xHCI Host Controller S: SerialNumber=0000:00:14.0 C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub T: Bus=03 Lev=01 Prnt=01 Port=09 Cnt=01 Dev#= 4 Spd=12 MxCh= 4 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=058f ProdID=9254 Rev=03.12 S: Manufacturer=ALCOR S: Product=Generic USB Hub C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub T: Bus=03 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 2 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1058 ProdID=1021 Rev=20.21 S: Manufacturer=Western Digital S: Product=Ext HDD 1021 S: SerialNumber=574341575A31353030303333 C: #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=2mA I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage T: Bus=03 Lev=01 Prnt=01 Port=02 Cnt=03 Dev#= 5 Spd=12 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=045e ProdID=0745 Rev=06.76 S: Manufacturer=Microsoft S: Product=Microsoft® 2.4GHz Transceiver v8.0 C: #Ifs= 3 Cfg#= 1 Atr=a0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=usbhid I: If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=usbhid I: If#= 2 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid T: Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=5000 MxCh= 2 D: Ver= 3.00 Cls=09(hub ) Sub=00 Prot=03 MxPS= 9 #Cfgs= 1 P: Vendor=1d6b ProdID=0003 Rev=04.15 S: Manufacturer=Linux 4.15.0-32-generic xhci-hcd S: Product=xHCI Host Controller S: SerialNumber=0000:00:14.0 C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub 

显然,KISS(Keep It Simply Stupid)答案是:

  • 关闭 Windows
  • 按电源按钮启动到Ubuntu。

为什么?

Windows驱动程序使鼠标处于不稳定状态,并且没有一个真正聪明的答案似乎工作,这使我得出Ubuntu无法解决此Windows问题的结论

你仍然可以向驱动程序的开发人员提交一个错误(这里是偏离主题的),但这是一个副作用,而且众所周知难以调试。 如果你这样做,期望花很多时间在这上面

重置鼠标

Windows有重新启动时将设备置于exception状态的习惯。 当您从Windows重新启动到Windows时,它可以正常工作,但是从Windows重新启动到Grub然后重新启动到Ubuntu时会出现问题。

OP的问题只是鼠标滚动速度不正确的一个例子。 其他示例包括Windows关闭音频卡,WiFi或网络适配器也可能发生。


这是我测试过的一个新脚本,并没有像第一个脚本那样锁定鼠标/键盘。

将此脚本添加到/usr/local/bin/reset-usb

 #!/bin/bash # NAME: /usr/local/bin/reset-usb # DATE: August 17, 2018. # DESC: Written for Ask Ubuntu Question: # https://askubuntu.com/questions/1061754 # Reboots / resets all USB devices including mouse & WiFi if [[ $(id -u) != 0 ]]; then # root powers needed to call this script echo $0 must be called with sudo powers exit 1 fi for i in /sys/bus/pci/drivers/[uoex]hci_hcd/*:*; do [ -e "$i" ] || continue echo "${i##*/}" > "${i%/*}/unbind" echo "${i##*/}" > "${i%/*}/bind" done systemctl restart NetworkManager.service exit 0 

将文件标记为可执行文件:

 sudo chmod +x /usr/local/bin/reset-usb 

编辑文件/etc/rc.local表示exit 0的最后一行之前插入这些行:

 # Reboot / reset all USB devices /usr/local/bin/reset-usb 

Credit : 如何从命令行重置USB设备?


注意:重置内部USB设备时,将重新初始化WiFi /蓝牙,以便systemctl restart NetworkManager

鼠标必须具有DPI设置,以便在启动时修改窗口。 通常为了获得最佳响应,系统将禁用软件鼠标加速并将鼠标DPI设置为提供所需移动速度的值。

当您在没有重启电源的情况下重新启动回Ubuntu时,DPI设置仍然处于Windows设置的水平。 但是,Ubuntu默认情况下将鼠标加速设置为大于x 1的速度,因此您可以体验到更快的运动。

您可以在Ubuntu中删除鼠标加速,以便您可以在Windows和Ubuntu之间切换以获得类似的鼠标移动速度,但如果直接打开Ubuntu,您可能会获得非常慢的鼠标移动,除非您的鼠标支持DPI设置内存不会改变超过电源循环。

在Ubuntu中删除鼠标加速,创建以下文件:

 sudo nano /usr/share/X11/xorg.conf.d/50-mouse-accel-disable.conf 

文件内容:

 Section "InputClass" Identifier "Microsoft Mouse" MatchIsPointer "yes" Option "AccelerationProfile" "-1" Option "AccelerationScheme" "none" Option "AccelSpeed" "-1" EndSection 

重新启动会话以使此更改投入使用(即注销/登录)