有没有办法检测在 JAVAFX 中产生事件的物理触摸设备

问题描述 投票:0回答:0

我有 raspberry PI 4 和 2 个带触摸屏的外部 HDMI 显示器(USB 连接)。使用 gluon 的 DRM 驱动程序可以将两个显示器用作输出设备,但我有一个问题,即两个触摸屏都产生具有相同坐标的触摸事件,该坐标仅对应于第一台显示器。我需要在第二个触摸屏上移动坐标,以便它们在第二个显示器上正常工作。两个触摸屏在 linux 中都是可见的 /dev/input/event0 /dev/input/event1

我为 TouchEvent 添加了一个事件过滤器,希望看到来自 2 个触摸屏的事件之间的任何差异(链接到发起事件的设备?)但没有。 在 JAVA FX 的内部有 com.sun.glass.ui.monocle.TouchFilter 可以用 -Dmonocle.input."device_id".touchFilters= 指定 但是那里的类被标记为包私有

我如何正确移动坐标,以便两个触摸屏与其相应的显示器一起工作?什么是正确的方法?


在从

toString()
返回的屏幕上调用
Screen.getScreens()
列出了两个屏幕。


javafx.stage.Screen@a1603782
bounds:Rectangle2D [minX = 0.0, minY=0.0, maxX=1920.0, maxY=1080.0, width=1920.0, height=1080.0]
visualBounds:Rectangle2D [minX = 0.0, minY=0.0, maxX=1920.0, maxY=1080.0, width=1920.0, height=1080.0] 
dpi:96.0 
outputScale:(1.0,1.0) 

javafx.stage.Screen@ec83c09b 
bounds:Rectangle2D [minX = 1920.0, minY=0.0, maxX=3840.0, maxY=1080.0, width=1920.0, height=1080.0] 
visualBounds:Rectangle2D [minX = 1920.0, minY=0.0, maxX=3840.0, maxY=1080.0, width=1920.0, height=1080.0] 
dpi:96.0 
outputScale:(1.0,1.0) 
javafx touch raspberry-pi4 gluon
© www.soinside.com 2019 - 2024. All rights reserved.