I've done quite a bit with a gamepad (xbox one/360 controller) in Max and want to replicate some of that functionality in a bela, via pd. Since it's just vanilla pd there's no [hid] object (as far as I can tell). Is there a(nother) way to get the data from the controller into the bela?

I just built hid for you, find it here https://github.com/BelaPlatform/Bela/issues/621 . Not sure it works though. It may well be that it is polling file descriptors from the audio thread, which will cause mode switches. If you send an example patch that works with a mouse/keyboard (I don't have any gamepad), then I can try some things out for myself.