鼠标和触摸板按钮在暂停/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的配置文件。
我已暂停并重新唤醒计算机几次,到目前为止每次都有效。 如果将来再次失败,我会编辑这个问题并回答。