在 Unity 上切换用户时未检测到 Synaptics 触摸板

在 Unity 上切换用户时未检测到 Synaptics 触摸板

如果只有单个用户登录,Synaptics 触摸板会被检测到并正常工作。但是,如果我们切换到另一个用户,鼠标将不再对第二个用户起作用。您可以使用“锁定/切换”用户帐户菜单或使用 CTRL+ALT+F8 进行切换。

Screen0 的日志文件(CTRL+ALT+F7)->​​ Synaptics 触摸板工作正常。

            [    20.205] (II) config/udev: Adding input device SynPS/2 Synaptics TouchPad (/dev/input/event17)
            [    20.205] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "evdev touchpad catchall"
            [    20.205] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "touchpad catchall"
            [    20.205] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "Default clickpad buttons"
            [    20.205] (II) LoadModule: "synaptics"
            [    20.205] (II) Loading /usr/lib/xorg/modules/input/synaptics_drv.so
            [    20.205] (II) Module synaptics: vendor="X.Org Foundation"
            [    20.205]    compiled for 1.15.0, module version = 1.7.4
            [    20.205]    Module class: X.Org XInput Driver
            [    20.205]    ABI class: X.Org XInput driver, version 20.0
            [    20.205] (II) Using input driver 'synaptics' for 'SynPS/2 Synaptics TouchPad'
            [    20.205] (**) SynPS/2 Synaptics TouchPad: always reports core events
            [    20.205] (**) Option "Device" "/dev/input/event17"
            [    20.232] (--) synaptics: SynPS/2 Synaptics TouchPad: x-axis range 1472 - 5472 (res 58)
            [    20.232] (--) synaptics: SynPS/2 Synaptics TouchPad: y-axis range 1408 - 4448 (res 106)
            [    20.232] (--) synaptics: SynPS/2 Synaptics TouchPad: pressure range 0 - 255
            [    20.232] (--) synaptics: SynPS/2 Synaptics TouchPad: finger width range 0 - 15
            [    20.232] (--) synaptics: SynPS/2 Synaptics TouchPad: buttons: left right
            [    20.232] (--) synaptics: SynPS/2 Synaptics TouchPad: Vendor 0x2 Product 0x7
            [    20.232] (--) synaptics: SynPS/2 Synaptics TouchPad: touchpad found
            [    20.232] (**) SynPS/2 Synaptics TouchPad: always reports core events
            [    20.264] (**) Option "config_info" "udev:/sys/devices/platform/i8042/serio1/input/input9/event17"
            [    20.264] (II) XINPUT: Adding extended input device "SynPS/2 Synaptics TouchPad" (type: TOUCHPAD, id 12)
            [    20.264] (**) synaptics: SynPS/2 Synaptics TouchPad: (accel) MinSpeed is now constant deceleration 2.5
            [    20.264] (**) synaptics: SynPS/2 Synaptics TouchPad: (accel) MaxSpeed is now 1.75
            [    20.264] (**) synaptics: SynPS/2 Synaptics TouchPad: (accel) AccelFactor is now 0.040
            [    20.264] (**) SynPS/2 Synaptics TouchPad: (accel) keeping acceleration scheme 1
            [    20.264] (**) SynPS/2 Synaptics TouchPad: (accel) acceleration profile 1
            [    20.264] (**) SynPS/2 Synaptics TouchPad: (accel) acceleration factor: 2.000
            [    20.264] (**) SynPS/2 Synaptics TouchPad: (accel) acceleration threshold: 4
            [    20.264] (--) synaptics: SynPS/2 Synaptics TouchPad: touchpad found
            [    20.264] (II) config/udev: Adding input device SynPS/2 Synaptics TouchPad (/dev/input/mouse1)
            [    20.264] (**) SynPS/2 Synaptics TouchPad: Ignoring device from InputClass "touchpad ignore duplicates"

屏幕 1 的日志文件 (CTRL+ALT+F8) -> 未检测到第二个用户 Synaptics 触摸板

            [ 32380.253] (II) Using input driver 'synaptics' for 'SynPS/2 Synaptics TouchPad'
            [ 32380.253] (**) SynPS/2 Synaptics TouchPad: always reports core events
            [ 32380.253] (**) Option "Device" "/dev/input/event17"
            [ 32380.260] (EE) synaptics: SynPS/2 Synaptics TouchPad: Synaptics driver unable to detect protocol
            [ 32380.260] (EE) PreInit returned 11 for "SynPS/2 Synaptics TouchPad"
            [ 32380.260] (II) UnloadModule: "synaptics"
            [ 32380.260] (II) config/udev: Adding input device SynPS/2 Synaptics TouchPad (/dev/input/mouse1)
            [ 32380.260] (**) SynPS/2 Synaptics TouchPad: Ignoring device from InputClass "touchpad ignore duplicates"

屏幕 0 上的 xinput 输出

            ⎡ Virtual core pointer                      id=2    [master pointer  (3)]
            ⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
            ⎜   ↳ SynPS/2 Synaptics TouchPad                id=12   [slave  pointer  (2)]
            ⎜   ↳ MCE IR Keyboard/Mouse (ene_ir)            id=13   [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)]
                ↳ Sleep Button                              id=9    [slave  keyboard (3)]
                ↳ HP Webcam                                 id=10   [slave  keyboard (3)]
                ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
                ↳ HP WMI hotkeys                            id=14   [slave  keyboard (3)]
                ↳ ENE eHome Infrared Remote Receiver        id=15   [slave  keyboard (3)]

在提供适当的修复之前是否有任何已知的解决方法?

答案1

以下是解决该问题的一个解决方法:

/usr/local/sbin/mousecheck创建一个包含以下内容的文件:

#!/bin/bash

OLDVT="x"

while sleep 1
do
VT=$(fgconsole)
if [[ "$VT" -ne "$OLDVT" ]]; then
  modprobe -r psmouse
  modprobe psmouse
  OLDVT="$VT"
fi
done

使该脚本可执行:

chmod a+x /usr/local/sbin/mousecheck

您现在可以通过使用

sudo /usr/local/sbin/mousecheck

并检查它是否正常工作。最后,您可以通过添加永久启用该黑客程序

/usr/local/sbin/mousecheck &

添加到文件中/etc/rc.local。注意:在行前添加

exit 0

并且不要忘记行尾的与符号 (&)。

答案2

重新安装设备驱动程序:

sudo apt-get --purge autoremove xserver-xorg-input-synaptics && sudo apt-get install xserver-xorg-input-synaptics

答案3

根据https://bugs.launchpad.net/ubuntu/+source/gdm/+bug/1247388,一种解决方法是运行:

sudo modprobe -r psmouse
sudo modprobe psmouse

这样可以为用户启用触摸板,但为另一个用户禁用触摸板(我测试过了)。但这需要管理员权限,所以我不知道普通用户的解决方案是什么。

我也在访客会话中尝试过这个,但在虚拟控制台中用第一个(管理员)用户执行了这两个命令,并为两个用户启用了触摸板。但有趣的是,当我用另一个管理员帐户而不是访客帐户尝试这个时,在虚拟控制台中执行同样的事情只会为其中一个用户启用触摸板。很奇怪。


另一种解决方法(来自https://bugs.launchpad.net/ubuntu/+source/gnome-settings-daemon/+bug/868400):

sudo modprobe -r psmouse
sudo modprobe psmouse proto=imps

切换用户之前运行此操作似乎可以解决问题,但会破坏触摸板设置。

答案4

升级到 Ubuntu 14.10 终于解决了这个问题。耶。使用 nouveau 驱动程序对 14.10 进行了测试。

相关内容