是否有可能让我的 Voyo VBOOK V3 上的触摸屏正常工作?我找不到任何驱动程序或软件包。这款二合一笔记本电脑预装了 Windows 10。我安装了 Ubuntu 16.04 LTS,但触摸屏无法正常工作。
运行 xinput 校准器显示:
错误:未找到可校准的设备。
我该如何修复它?
答案1
我费了好大劲才搞定的。你也许也能搞定——但显然 V3 的不同版本硬件差别很大,所以你的情况可能不一样。另外,我使用的是 Linux Mint,所以如果文件名有点不对,请见谅。哦,还有,我还没能让多点触控正常工作。所以,在解决了所有问题之后,你需要知道以下几点:
- 驱动程序已可用于您的内核 - silead - 以 root 身份执行
modprobe silead
并检查它是否出现在 lsmod 中。它可能不会出现,但它可能会因为没有固件而默默失败。 - 您将需要固件。转到https://github.com/onitake/gsl-firmware/issues/37- 在该讨论的早期部分有一个名为 firmware.zip 的文件 - 提取该文件
h_firmware.fw
。然后,您需要创建一个文件夹/lib/firmware/silead
并将该文件复制到那里,并使用名称mssl1680.fw
- 重新启动,一切可能会神奇地工作(尽管效果不佳 - 请参阅下文) - 用于dmesg
调试。 如果没有进展,您可能需要告诉 Xorg 您正在使用 silead 触摸屏 - 确保
/etc/X11/xorg.conf.d/
已创建文件夹(如果没有,请创建)并添加文件,99-calibration.conf
如下所示:Section "InputClass" Identifier "calibration" MatchProduct "silead_ts" Option "Device" "/dev/input/event14" Option "MinX" "31405" Option "MaxX" "-20" Option "MinY" "23984" Option "MaxY" "76" Option "SwapXY" "0" # unless it was already set to 1 Option "InvertX" "0" # unless it was already set Option "InvertY" "0" # unless it was already set EndSection
重新启动。如果您现在没有触摸屏活动,那么我可能忘记了某个步骤,或者您可能有不同的硬件。检查 /var/log/Xorg.0.log 以查看是否有任何有用的 silead 错误。
如果到目前为止您已经成功了,那么这很好。但您会发现只有一小部分屏幕被覆盖 - 这时触摸屏校准就派上用场了,xinput 校准器会很棒 - 如果它有效的话。
如果没有的话,有一个工具可以起作用:xcal
https://github.com/reinderien/xcal
然而,虽然它可以工作,但它不会使你的更改永久生效,虽然它会告诉你校准值,但它不会告诉你如何使用它。然而,这是一个简单的 Python 脚本!在 xcal 的开头附近有一个名为 xinput 的方法 - 我修改了我的方法如下:
def xinput(*args):
print('XINPUT command: ')
print(' '.join(args))
return run(args=('/usr/bin/xinput', *args),
stdout=PIPE, check=True,
universal_newlines=True).stdout
下次运行 xcal 并告诉它应用更改时,它将输出如下输出:
XINPUT command:
--set-prop 14 libinput Calibration Matrix -2.0955599326947874, 0.006377553411765824, 1.002925809292515, -0.005228040857399382, -2.708875418324387, 1.0022455037336648, 0.0, 0.0, 1.0,
您需要添加一些引号,但本质上,这是您的 xinput 命令:
xinput --set-prop 14 libinput Calibration Matrix -2.0955599326947874, 0.006377553411765824, 1.002925809292515, -0.005228040857399382, -2.708875418324387, 1.0022455037336648, 0.0, 0.0, 1.0
最后,为了让它更牢固:我把这个命令放在文件底部~/.xinputrc
。你可能需要找个别的地方,这取决于你是否需要触摸屏作为登录屏幕。
答案2
在 /etc/X11/xinit/xinputrc 中添加以下行
xinput --set-prop 10 "libinput Calibration Matrix" -2.0882497963235185, 0.0, 1.001125569612532, 0.0, -2.6999736330699893, 1.006245056200623, 0.0, 0.0, 1.0,
然后重启