I was pulling my hair out the last couple days trying to get OpenCPN to work with a USB Touchscreen on a RPI4 Raspbian Buster. The touchscreen I'm using is a Uperfect 12.3" 1600x1200 10 finger touch. $100 on ebay. Works beautifully with the Chrome browser. Great website to test multi-touch is
https://patrickhlauke.github.io/touch/
However, no luck getting pinch to zoom and right mouse click emulation to work in OpenCPN. I did finally get right click working by switching the X11 driver from libinput to evdev but evdev had calibration issues I never totally figured out.
I was able to get the twofing workaround up and running. The Uperfect reports as a "TSTP MTouch". Pretty much followed the instructions for Buster substituting "TSTP MTouch" for "FT5406 memory based driver". And creating a
rule file /etc/udev/rules.d/libinput.rules instead of /etc/udev/rules.d/70-touchscreen-egalax.rules
The twofing workaround kind of breaks some of the touchscreen stuff for the Chrome browser. I'm planning on using this primarily for OpenCPN so the loss of touch functions in other apps is not a real problem for me right now. The twofing workaround for OpenCPN seems a bit sluggish compared to the stock multi-touch in the Chrome browser.
There are also some tricks for hiding the mouse cursor to make things look more tablet like. I've edited /etc/lightdm/lightdm.conf adding the line xserver-command = X -nocursor". I may switch to the utility unclutter as you can set up rules to get the cursor back when you
plug in a real mouse.
In general OpenCPN works just OK with a touchscreen. Deleting waypoints, tracks and such with touch is a bit tricky. Hitting the right tabs, buttons and such is a little tricky too with fat fingers.