触摸板在 X 中注册为指针

触摸板在 X 中注册为指针

我买了一台新的 ASUS K501U 笔记本电脑,并在其上安装了 Ubuntu 16.04。我运行的是内核 4.7,尽管我在 4.3 中遇到了同样的问题。双指滚动等多点触控功能不起作用。触摸板是 Elantech 触摸板,Ubuntu 似乎不支持除通用驱动程序之外的其他触摸板。

我对 X 配置进行了很多尝试。如果我将驱动程序设置为libinputevdev,它似乎无法与多点触控配合使用并synaptics会抛出错误。该设备名为FTE1001:00 0B05:0101,这是设备的 I2C 地址,X 将其检测为指针而不是触摸板,这似乎是问题所在。Ubuntu 似乎无法识别该设备,默认情况下认为它是一个指针。因此,我如何告诉 Ubuntu 将其识别为触摸板而不是指针?这个配置是在 X 中还是在 udev 中?

要清楚的是,这是有效的(在x.conf.d文件条目中):

Section "InputClass"
        Identifier "psmouse pointer catchall"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

但这不行:

Section "InputClass"
        Identifier "psmouse pointer catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

此外,当我将内核升级到 4.7 时,我注意到 DKMS 在构建psmouse驱动程序时遇到了问题:

/var/lib/dkms/psmouse/elantech-x551c/build/src/cypress_ps2.c: In function ‘cypress_process_packet’:
/var/lib/dkms/psmouse/elantech-x551c/build/src/cypress_ps2.c:543:2: error: too few arguments to function ‘input_mt_assign_slots’
  input_mt_assign_slots(input, slots, pos, n);

0按照 Linux 内核多点触控库中的 定义添加了 作为第五个参数input_mt_assign_slots,然后 DKMS 似乎可以正确构建和安装它:psmouse elantech-x551c。但是,如果我在 X 配置中将驱动程序设置为psmouse,X 会说它无法加载模块(我甚至不太明白 是什么,所以这可能完全是幼稚的)。 驱动程序与 和等驱动程序有psmouse什么关系?psmouseevdevlibinput

当我xinput --list-props使用当前设置运行时,我得到以下信息:

Device 'FTE1001:00 0B05:0101':
    Device Enabled (137):   1
    Coordinate Transformation Matrix (139): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (263): 0
    Device Accel Constant Deceleration (264):   1.000000
    Device Accel Adaptive Deceleration (265):   1.000000
    Device Accel Velocity Scaling (266):    10.000000
    Device Product ID (259):    2821, 257
    Device Node (258):  "/dev/input/event14"
    Evdev Axis Inversion (267): 0, 0
    Evdev Axes Swap (269):  0
    Axis Labels (270):  "Rel X" (147), "Rel Y" (148), "Rel Vert Wheel" (262)
    Button Labels (271):    "Button Left" (140), "Button Unknown" (261), "Button Right" (142), "Button Wheel Up" (143), "Button Wheel Down" (144), "Button Horiz Wheel Left" (145), "Button Horiz Wheel Right" (146)
    Evdev Scrolling Distance (272): 1, 1, 1
    Evdev Middle Button Emulation (273):    0
    Evdev Middle Button Timeout (274):  50
    Evdev Third Button Emulation (275): 0
    Evdev Third Button Emulation Timeout (276): 1000
    Evdev Third Button Emulation Button (277):  3
    Evdev Third Button Emulation Threshold (278):   20
    Evdev Wheel Emulation (279):    0
    Evdev Wheel Emulation Axes (280):   0, 0, 4, 5
    Evdev Wheel Emulation Inertia (281):    10
    Evdev Wheel Emulation Timeout (282):    200
    Evdev Wheel Emulation Button (283): 4
    Evdev Drag Lock Buttons (284):  0

这再次似乎意味着 Ubuntu 将其识别为鼠标而不是触摸板。

总结Ubuntu 无法识别我的 Elantech 触摸板,并认为它是一个指针而不是触摸板。

答案1

我发现了一些东西这里

首先,如果您不确定您的计算机是否配有 Elantech 触摸板,请打开终端并输入以下内容:

cat /proc/bus/input/devices

您应该找到一个包含类似这样的行的块,这确认您使用的是 Elantech 触摸板:

N: Name="ETPS/2 Elantech Touchpad"

下载此档案(来自 Ubuntu 的错误报告页面)。

打开一个终端,并按照以下步骤操作(第 4 行之后,您将根本没有鼠标):

cd ~/Downloads
sudo dkms ldtarball psmouse-elantech-x551c.tar.gz
sudo dkms install -m psmouse -v elantech-x551c
sudo rmmod psmouse
sudo modprobe psmouse

享受多点触控!

来源:Elantech 点击板/触摸板缺乏多点触控功能

我已经验证了这些链接,它们来自 launchpad。此外,大量的评论表明该页面是真实的,尽管目前还没有 WOT 评级;如果有人想在 WOT 上给该页面评分,请这样做。如果是负面评级,请在评论中通知我,我会删除此答案,直到找到其他来源。

相关内容