In a former post I wrote about my trouble getting touch support up an running with my eGalax Touch Display, JavaFX and the Raspberry Pi.
Today Simon gave me a hint how he solved that touch event issues with JavaFX.
Many Kudos to Simon Ritter (@speakjava)!
It turns out that the screen driver actually creates two event devices in
event1. JavaFX sees
/dev/input/event0 and assumes that events come from that, but for some unknown reason no events are actually sent: they all go to
/dev/input/event0 with the same device as
/dev/input/event1, so JavaFX gets the information it needs:
Make it suitability for daily usage
Create an init-script to apply the patch at start-up:
Required-Start: $all‘ tells
insserv to start the script after all the other scripts, at the end of the boot sequence:
#! /bin/sh ### BEGIN INIT INFO # Provides: egalax-patch # Required-Start: $all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: # Description: Recreates event0 with the same device as event1, so JavaFX gets the information it needs. ### END INIT INFO . /lib/lsb/init-functions rm -f /dev/input/event0 mknod /dev/input/event0 c 13 65 log_success_msg "eGalax Touch Screen patch for JavaFX applied."
You can load it here.
- copy the script to
- make sure it’s executable:
sudo chmod 755 egalax_patch
- then enable the script:
sudo insserv egalax-patch
One last thing
The event devices are re-created by the driver when the USB connection was interrupted.
In this case you will have to reboot the Raspi or (much better) execute the script manually: