我的 Synaptic Touchpad 在过去几周内停止工作了。
触摸屏和外接鼠标仍然可以工作,所以我一直在使用它们来解决这个问题。
症状如下:
- 触摸板在登录屏幕上工作
- 登录屏幕后触摸板停止工作
- 所有其他输入功能均可用,包括键盘、触摸屏、外接鼠标、扩展坞等。
- 在 Wayland 上也不适用。
- F7 键会出现一个方块,右下角有一个 X,但无论我按多少次,X 都不会消失。
sudo rmmod usbhid; sudo modprobe usbhid
瞬间启用触摸板。
在过去的几周里,我已经能够恢复触摸板,sudo rmmod usbhid; sudo modprobe usbhid
因此我怀疑这个问题分为两个部分。
xinput list
显示:
Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SYNA7500:00 06CB:780B id=16 [slave pointer (2)]
⎜ ↳ Synaptics T Pad V 01.31 Touchpad id=11 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Video Bus id=6 [slave keyboard (3)]
↳ Power Button id=7 [slave keyboard (3)]
↳ Integrated_Webcam_FHD: Integrat id=12 [slave keyboard (3)]
↳ Integrated_Webcam_8M: Rear Inte id=13 [slave keyboard (3)]
↳ Intel Virtual Button driver id=14 [slave keyboard (3)]
↳ SYNA7500:00 06CB:780B Pen id=15 [slave keyboard (3)]
↳ Dell WMI hotkeys id=17 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=18 [slave keyboard (3)]
↳ Synaptics T Pad V 01.31 Consumer Control id=8 [slave keyboard (3)]
↳ Synaptics T Pad V 01.31 id=9 [slave keyboard (3)]
↳ Synaptics T Pad V 01.31 Wireless Radio Control id=10 [slave keyboard (3)]
我努力了:
- 安装 synaptics 驱动程序
- 添加 libinput 过滤器(这使得
Synaptics T Pad V 01.31 Touchpad
上述内容消失,但实际上使情况变得更糟) - `xinput set-prop 11 “设备已启用” 1 (0 后面跟着 1)
- `xinput set-prop 16 “设备已启用” 1 (0 后面跟着 1)
这是在内核 4.18.0-15-generic 上,但我也尝试过回退到 4.17,但还是不行。我无法回退到 xserver-xorg-input-* 的任何早期版本,因为它们似乎不可用。
我怀疑触摸板可能被程序禁用(这可以解释 F7 状态中的 X)但我不知道如何通过编程重新启用它。
我如何恢复我的触摸板?
答案1
根据Ubuntu 帮助文档,这个问题通常使用以下命令解决:
gconftool-2 --set --type boolean /desktop/gnome/peripherals/touchpad/touchpad_enabled true
synclient
您还可以使用而不是 来启用或切换触摸板xinput
。
启用:
synclient touchpadoff=0
切换:
synclient touchpadoff=1
synclient touchpadoff=0
此外,您可以尝试使用列出的其他设备,例如设备 16 而不是设备 11:
xinput set-prop 16 "Device Enabled" 1
答案2
我在 Fedora 上使用完全相同型号的触摸板时也遇到了类似的问题。
在我的案例中,罪魁祸首是 fwupd,它在登录时由 GNOME 软件启动。Fwupd 扫描可能可更新的设备,并阅读日志,我发现触摸板不喜欢 fwupd 发出的请求,因此退出了。
使用屏蔽服务 fwupdsystemctl mask fwupd.service
为我解决了这个问题。