鼠标和触摸板按钮在暂停/hibernate后更改function

我有一台运行Ubuntu 16.04的联想Ideapad Y560笔记本电脑。 启动时,触摸板和USB鼠标都能正常工作。

暂停后,鼠标按钮的工作方式不同且不规律。 触摸板按钮和USB鼠标按钮都是如此。 最值得注意的是,左侧按钮不会选择打开的窗口,关闭Google Chrome中的标签,但仍然可以在屏幕左侧的Unity桌面底座中打开应用程序。 使用鼠标和触摸板,鼠标指针的移动仍然很好。

我的问题:知道发生了什么,或者如何解决它?

其他信息:

这台笔记本电脑有一个i8042控制器,我读过这个控制器有时会出现Linux问题。

这是dmesg | grep i8042的输出 dmesg | grep i8042

 [ 1.028910] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2P] at 0x60,0x64 irq 1,12 [ 1.062759] i8042: Detected active multiplexing controller, rev 1.1 [ 1.076908] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 1.076919] serio: i8042 AUX0 port at 0x60,0x64 irq 12 [ 1.076989] serio: i8042 AUX1 port at 0x60,0x64 irq 12 [ 1.077044] serio: i8042 AUX2 port at 0x60,0x64 irq 12 [ 1.077097] serio: i8042 AUX3 port at 0x60,0x64 irq 12 [ 1.147924] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4 [ 2.824853] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio4/input/input10 [ 4.455565] input: PS/2 Generic Mouse as /devices/platform/i8042/serio3/input/input16 

我尝试了一些没有用的东西:

  • 在这篇文章中 ,将一个可执行的shell脚本放在/etc/pm/sleep.d/目录中,在挂起时取消绑定控制器并在唤醒时重新绑定它。 这似乎没有做任何事情。

  • 从这篇文章和这篇文章中 ,为内核的启动选项添加了不同的选项来配置i8042。 我尝试将i8042.reset i8042.nopnp i8042.direct i8042.dumbkbd i8042.nomux i8042.noloop添加到文件/ etc / default / grub中的“GRUB_CMDLINE_LINUX_DEFAULT”属性,以及分别尝试每个属性。 其中一些实际上工作但导致另一个问题:他们在暂停后修复了鼠标按钮,但完全禁用了触摸板。 这并不理想,因为我并不总是有一个USB鼠标。

输入xinput list

 ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Logitech USB Optical Mouse id=11 [slave pointer (2)] ⎜ ↳ PS/2 Generic Mouse id=15 [slave pointer (2)] ⎜ ↳ SynPS/2 Synaptics TouchPad id=16 [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)] ↳ Video Bus id=8 [slave keyboard (3)] ↳ Power Button id=9 [slave keyboard (3)] ↳ Sleep Button id=10 [slave keyboard (3)] ↳ Lenovo EasyCamera id=12 [slave keyboard (3)] ↳ Ideapad extra buttons id=13 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=14 [slave keyboard (3)] 

synclient | grep Touchpad输出synclient | grep Touchpad synclient | grep Touchpad

 TouchpadOff = 2 

如果它有用:

使用sudo synclient TouchpadOff=0成功地将TouchpadOff的值从2更改为0.但是,只需单击一下鼠标或触摸板按钮,它就会立即更改为2。

在尝试所有内容的同时,我似乎找到了可用的内核指令组合。 我曾经共同尝试了所有6个或7个,每个都是单独的,但不是三个参数的特殊组合。

我添加了这三个:

i8042.noloop i8042.nopnp i8042.reset

到了这条线

 GRUB_CMDLINE_LINUX_DEFAULT="" 

在文件中: /etc/default/grub

然后运行sudo update-grub来更新grub2的配置文件。

我已暂停并重新唤醒计算机几次,到目前为止每次都有效。 如果将来再次失败,我会编辑这个问题并回答。