I bought the Elgato Stream Deck XL on sale for $149 and I'm just using HTTP commands to call the PTZ presets. I created a new user in BI just to run commands, then assigned a URL to each button. The button URL is formatted like this:
Here's a screenshot from the config window:
View attachment 163439
...and the device looks currently like this. You can have multiple pages, so I have a separate control page for each camera and switch between them with button.
View attachment 163440
I find it faster than clicking a button on-screen because they're always in the same place. It's obviously not as responsive as an old analog system with a joystick, but it takes about 1.5 seconds from the moment I press the button to see the image move on my screen.