eGalax 触摸屏与 Raspberry Pi 3 - 单击后鼠标弹回同一位置

eGalax 触摸屏与 Raspberry Pi 3 - 单击后鼠标弹回同一位置

我有一台 Raspberry Pi 3 和一个 15 英寸的触摸屏,使用 VGA 播放视频(我使用转换器插入 Pi 的 HDMI)并使用 USB 实现触摸功能。

开机时插入设备,usbtouchscreen 模块会处理设备并创建两个输入:/dev/input/event3/dev/input/mouse1。Xorg 会注册event3输入,我可以通过触摸与系统交互,但不是我所期望的方式。我无法点击任何东西,只能移动鼠标。它也不会注册输入,mouse1因为no driver found(更多详细信息请参见下面的日志输出)。除了最角落外,触摸几乎可以在屏幕上的任何位置注册,但每次触摸后鼠标都会移回左下角附近。当我说左下角附近时,我的意思是距离两个轴上的实际角落约 1/8 的屏幕距离。在输入 Xorg 配置以交换和反转轴后10-evdev.conf

选项“SwapAxes”“1”
选项“InvertY”“1”

鼠标位于右下象限。无论轴方向如何,鼠标也被限制在屏幕的 1/2 到 2/3 左右,有点像缩放效果。当我点击屏幕左上角时,鼠标会移动到屏幕中间的某个位置。触摸屏幕的所有其他部分也是如此。

我尝试Option "Mode" "Relative"在配置中进行设置,让鼠标跟随我的手指移动到屏幕上的任何位置(因此 0.5 倍的缩放消失了),但它会弹回到不同的位置,不断前进并最终在按下后到达右下角作为“原点位置”。

我尝试重建 Raspberry Pi 3 内核,并将所有 eGalax/EETI 选项模块化或包含在内:

CONFIG_TOUCHSCREEN_EGALAX=m
CONFIG_TOUCHSCREEN_EETI=m
CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
CONFIG_TOUCHSCREEN_USB_EGALAX=y

发生了与上述相同的事情。

我尝试按照 EETI 指南安装其专有驱动程序,位于http://www.eeti.com.tw/drivers_Linux.html。我下载了eGTouch_v2.5.5814.L-ma文件,调整了他们推荐的 4 个内核设置,应用了源代码补丁kernel versions 2.6+,然后构建。当我将内核放到 Pi SD 上并启动时,并没有创建event3和,因为他们让我从内核中删除。指南说,当我运行时,我应该看到没有处理程序的 eGalax 触摸屏(与我之前看到的和相反) ,但它根本没有出现。此外,在这个设置中,我根本无法通过触摸进行交互。mouse1usbtouchscreenmouse1event3cat /proc/bus/input/devices

我尝试过刷新 Raspbian、Ubuntu MATE 和 Arch Linux ARM,.img它们的行为都一样,除了一个值得注意的例外。在我安装 Ubuntu MATE 和执行apt update && apt upgrade以及 的过程中rpi-update,我自将 Ubuntu 刷新到 SD 以来第一次测试了屏幕,它运行完美!这让我很难受,因为一旦我完成升级并重新启动,我就再也无法重现。我尝试重新刷新 Ubuntu,但没有成功。我确信它会保留,所以我没有得到任何日志输出或配置参数,导致它以这种方式出现。

我的理论是,mouse1输入会产生点击,但输入没有被记录下来。根据下面的 Xorg 日志:

Adding input device eGalax Inc. USB TouchController (/dev/input/mouse1) No input driver specified, ignoring this device.

我尝试添加到/dev/input/mouse1但出现以下错误消息: 。听起来 evdev 无法识别 提供的输入。还有其他我可以尝试的驱动程序吗?10-evdev.confDriver "evdev"evdev: eGalax Inc. USB TouchController: Unable to query fd: Inappropriate ioctl for devicemouse1

各种日志输出:

cat /proc/bus/input/devices 相关输出:

I: Bus=0003 Vendor=0eef Product=0001 Version=0100
N: Name="eGalax Inc. USB TouchController"
P: Phys=usb-3f980000.usb-1.5/input0
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/input/input4
U: Uniq=
H: Handlers=mouse1 event3 
B: PROP=0
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=3

ls -l /dev/input/by-id/:

lrwxrwxrwx 1 root root 9 Nov 25 18:09 usb-DELL_DELL_USB_Keyboard-event-kbd -> ../event2
lrwxrwxrwx 1 root root 9 Nov 25 18:53 usb-eGalax_Inc._USB_TouchController-event-if00 -> ../event3
lrwxrwxrwx 1 root root 9 Nov 25 18:09 usb-Logitech_USB_Receiver-event-if01 -> ../event1
lrwxrwxrwx 1 root root 9 Nov 25 18:09 usb-Logitech_USB_Receiver-event-mouse -> ../event0
lrwxrwxrwx 1 root root 9 Nov 25 18:09 usb-Logitech_USB_Receiver-mouse -> ../mouse0

lsusb 输出:

Bus 001 Device 006: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen
Bus 001 Device 005: ID 413c:2005 Dell Computer Corp. RT7D50 Keyboard
Bus 001 Device 004: ID 046d:c52f Logitech, Inc. Unifying Receiver
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

usb-devices相关输出:

T:  Bus=01 Lev=02 Prnt=02 Port=04 Cnt=04 Dev#=  6 Spd=1.5 MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0eef ProdID=0001 Rev=01.00
S:  Manufacturer=eGalax Inc.
S:  Product=USB TouchController
C:  #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=usbtouchscreen

ls /dev/输入:

by-id
by-path
event0
event1
event2
event3
mice
mouse0
mouse1

Xorg.0.log相关输出:

[ 51.878] (II) config/udev: 添加输入设备 eGalax Inc. USB TouchController (/dev/input/event3)
[ 51.879] (**) eGalax Inc. USB TouchController: 应用 InputClass“evdev touchscreen catchall”
[ 51.879] (II) 使用输入驱动程序“evdev”作为“eGalax Inc. USB TouchController”
[ 51.879] (**) eGalax Inc. USB TouchController: 始终报告核心事件
[ 51.879] (**) evdev:eGalax Inc. USB TouchController:设备:“/dev/input/event3”
[ 51.879] (--) evdev:eGalax Inc. USB TouchController:供应商 0xeef 产品 0x1
[ 51.879] (--) evdev: eGalax Inc. USB TouchController: 找到绝对轴
[ 51.879] (--) evdev: eGalax Inc. USB TouchController: 找到 x 和 y 绝对轴
[ 51.879] (--) evdev: eGalax Inc. USB TouchController: 找到绝对触摸屏
[ 51.879] (II) evdev: eGalax Inc. USB TouchController: 配置为触摸屏
[ 51.879] (**) evdev: eGalax Inc. USB TouchController: YAxisMapping: 按钮 4 和 5
[ 51.879] (**) evdev:eGalax Inc. USB TouchController:EmulateWheelButton:4,EmulateWheelInertia:10,EmulateWheelTimeout:200
[ 51.879](**)选项“config_info”“udev:/sys/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/input/input3/event3”
[ 51.879] (II) XINPUT: 添加扩展输入设备“eGalax Inc. USB TouchController”(类型:TOUCHSCREEN,id 9)
[ 51.879] (II) evdev: eGalax Inc. USB TouchController:为绝对轴初始化。
[ 51.880] (**) eGalax Inc. USB TouchController: (accel) 保持加速度方案 1
[ 51.880] (**) eGalax Inc. USB TouchController: (accel) 加速度曲线 0
[ 51.880] (**) eGalax Inc. USB TouchController: (accel) 加速因子: 2.000
[ 51.880] (**) eGalax Inc. USB TouchController: (accel) 加速度阈值: 4
[ 51.881] (II) config/udev: 添加输入设备 eGalax Inc. USB TouchController (/dev/input/mouse1)
[ 51.881] (II) 未指定输入驱动程序,忽略该设备。
[ 51.881] (II) 此设备可能已添加另一个设备文件。
[ 2310.541] (II) config/udev: 删除设备 eGalax Inc. USB TouchController
[ 2310.573] (II)evdev:eGalax Inc. USB TouchController:关闭
[ 2310.574] (II)卸载模块:“evdev”

dmesg相关输出:

[ 4.845962] 输入:eGalax Inc. USB TouchController 作为 /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.5/1-1.5:1.0/input/input3
[4.846690]usbcore:注册的新接口驱动程序usbtouchscreen

10-evdev.conf相关行:

“输入类”部分
        标识符“evdev 触摸屏 catchall”
        MatchIsTouchscreen“开启”
        MatchDevicePath“/dev/input/event*”
    选项“SwapAxes”“1”
    选项“InvertY”“1”
        驱动程序“evdev”
结束部分

如果你读到这里,谢谢你!我认为信息越多越好。感谢任何指点。

答案1

我最初以为是 USB 线接反导致显示器工作,但结果发现显示器在显示器外壳内移动。当我翻转 USB 线的末端时,它移动的幅度刚好足以开始工作。非常挑剔的显示器。

相关内容