Inputattach 在 elo 触摸屏 ubuntu 18.04 上不起作用

Inputattach 在 elo 触摸屏 ubuntu 18.04 上不起作用

我一直无法让 ubuntu 识别旧的 Elo 触摸屏。经过大量阅读/测试后,我设法使用屏幕检测触摸屏:

sudo screen /dev/ttyS4 

ttyS4 = COM5,触摸屏连接的位置。执行此命令后,我可以触摸屏幕,它会在屏幕上绘制奇怪的字符,据我所知,这是 ubuntu 识别该设备。然后我应该使用 inputattach 连接触摸屏:

inputattach -elo /dev/ttyS4

但什么都没发生。要么我根本没有采取任何行动,要么它只是卡住了而没有任何结果,当我再次触摸屏幕时我甚至无法再绘制。之前它甚至告诉我:

inputattach: can't set line discipline

根据https://forums.gentoo.org/viewtopic-p-6406944.html通过进入我的内核配置并确保串行线路规范已启用,可以解决这个问题。

听起来很简单,但我并不是一个经验丰富的用户,所以你能告诉我该怎么做,或者是否有任何建议或替代解决方案可以采取?

眼镜: Ubuntu 18.04。设备:销售点型号 430/435,配备 B55/B75 M/B,根据用户手册,配有 elotouch 显示器。 视频驱动程序只能实现 640X480 分辨率,并且至少应该实现 800X600。

我也尝试过从 elo 网站安装几个 Linux 驱动程序,但都没有成功。最初,该设备运行的是 WinXp SP2,但一位朋友带我来并要求我将设备更新到更好的操作系统。所以这是一段漫长而有趣的旅程 :)

任何帮助将不胜感激。

更新 #1 我不知道我可以同时向 inputattach 命令添加 2 个选项。所以我尝试了:--daemon --always 像这样:

sudo inputattach --daemon --always -elo /dev/ttyS4

然后它开始工作,识别每次触摸。因此我编辑位于 /lib/udev/rules.d/60-inputattach.rules 的 inputattach 文件,以便保存每次启动的配置,并添加了以下行:

SUBSYSTEM=="tty", KERNEL=="ttyS4", ACTION=="add|change", RUN+="/lib/udev/inputattach --elo /dev/%k"我重新启动了,线路仍然存在,但根本没有效果,只是不起作用,我无法让它再次工作:(

尝试向该文件添加几行:

SUBSYSTEM=="tty", KERNEL=="ttyS4", ACTION=="add|change", RUN+="/lib/udev/inputattach --elotouch /dev/%k"

SUBSYSTEM=="tty", KERNEL=="ttyS4", ACTION=="add|change", RUN+="/lib/udev/inputattach --elotouch /dev/%k --daemon --always"

SUBSYSTEM=="tty", KERNEL=="ttyS4", ACTION=="add|change", RUN+="/lib/udev/modprobe elo" RUN+="/lib/udev/inputattach --elotouch /dev/%k --daemon --always"

还是没运气。我一直收到屏幕命令的响应,但除此之外什么都没发生 :( 我快找到解决方案了,我肯定这里漏掉了一些基本的东西……再次感谢


更新 #2 它停止响应的原因:我混淆了命令变体。触摸屏幕时识别的命令是另一个。 总结一下:

我继续尝试了几种 inputattach 组合,首先输入modprobe elo,然后再次测试不输入。我的结论是modprobe elo// 对我来说没有任何作用

因此,我得到回应的唯一组合是:(之前不需要 modprobe 或 screen 命令。因为 modprobe 不执行任何操作,screen 仅用于检测正确的端口 COM4 = ttyS4(在我的情况下)

sudo inputattach --daemon --always --mtouch /dev/ttyS4 

--mtouch = MicroTouch (3M) 触摸屏。(您可以找到所有与 inputattach 兼容的设备,输入: inputattach --help

响应不够好。每次我触摸屏幕时,感觉就像使用普通鼠标并单击左键并选择某个区域一样。(我猜这是 mtouch 设备的功能),所以对我来说不够好。

不过,我尝试使用以下方法校准屏幕:

sudo apt-get install xinput-calibrator
sudo xinput_calibrator

我看到每个角落有 4 个点,但无法在正确的位置触摸它以进行校准。所以我做的是连接一个普通的 USB 鼠标并用它校准屏幕点击。之后,每次触摸都还不准确,但我至少有 X 和 Y 最大值/最小值。

因此,经过更多研究,我的第二个解决方案是尝试自己校准它,计算变换矩阵,但我不知道如何操作。到目前为止:

xinput --list

//给我设备名称和 ID MicroTouch 串行触摸屏 | ID=12

然后xinput --list-props 12给我我应该添加到文件的TransformationMatrix:/etc/X11/xorg.conf.f/99-calibration.conf 如下所示:

Section "InputCalls"
Identifier "calibration 
MatchProduct "MicroTouch Serial Touch Screen"
Option "TransformationMatrix" "1 0 0 0 1 0 0 0 1" #Got this values after calibrating the screen clicking with my mouse on each corner point (xinput_calibrator)
Option "MinX" "299"
Option MaxX"  "65492"
Option "MinY" "705
Option "MinX" "66058"
EndSection

问题:

  • 虽然我不介意,但这不是我的设备驱动程序,可能无法正常工作。
    • 我不确定如何将该 TransformationMatrix 重新计算为正确的校准轴。
    • 即使我设法重新计算该矩阵,我也不知道 xorg 配置文件在哪里,因为它也不在 /user/share/X11/xorg.conf.d 中,而且我不确定我创建的文件是否确实在做某事。
  • -

如果我能解决最后这个问题,下一步就是将最终配置添加到我的//lib/udev/rules.d/60-inputattach.rules,以便它可以在每次启动时默认加载。

但似乎我陷入了困境。我将尝试做更多研究,同时我的另一个想法是仅使用 inputattach --help 中列出的每个设备进行测试,看看我是否得到任何不同的响应。否则将返回 winxp :( 希望这次旅程对任何人都有用,因为我一直在和自己的 LOL 交谈 :p

相关内容