My phone has hardware capacitive keys, so it is always full block. But yeah, you can turn immersive mode first.
I can't find another way with spamming too many input to the flow. Since you want every single touch to be register, so you should prepared to process each touch in the flow. I don't see any way to detect the touch without a flow running to process it.
But I have found out another way to detect the touch without using Trigger UI event, and it will work without clicking on elements that has event. But you must have root to do it. Simply use Action Execute Root Command.
With the timeout of the command set to the time you wanna wait before continuing to the next element. event0 should be replaced by the device number of the touchscreen, can be check by using the
getevent command only, touch the screen and you can see which event number register the touch.
Connect this command to sleep 1 second or any delay you want. Then this sleep loopback to the command again, creating infinite loop. Create another connection from the Root command, and change the connection to exception. After timeout (example 10s), the Execute root command will produce error, and it will branch to the exception. Which then can be continued to the main branch to execute the things you want.
This method still will register every touch as two elements (the root command and the sleep). So the result is the same spamming flow as the UI event. The plus side is it doesn't need widget, the downside is it needs root. And you can adjust the sleep to longer value, so it won't register so frequently. Example 5 seconds. So after the first touch, it won't check for any touch for 5 seconds. But the minus is if you touch furiously during the first 5 seconds and do nothing during the 10 seconds, the flow still continues to the main branch (exception). So need to balance the sleep and the timeout.
I am aware there is java function onTouch listener to detect the touch. But i can't get it work in Automagic, my java skill is still very limited.