On 2016-02-15 13:04, Matthew Woehlke wrote: > On 2016-02-15 06:36, pritam.ghang...@gmail.com wrote: >> Looking at the API it seems it has a very hard assumption on 2 sticks and >> 18 buttons. > > Please support arbitrary axes and buttons, as done in e.g. SDL.
I wrote a joystick API in Qt a while back. It had three signals (I didn't get around to hat support): buttonPressed(int button); buttonReleased(int button); motion(QHash<int, double> axisPosition); The first two are obvious. The third (you'd probably want to use a different name) is emitted every time any axis value changes, and reports the current value of *all* axes. (This is an optimization / implementation detail; you could as easily have a signal per axis, or indeed do both.) Although I didn't need to have current-state accessors (consider if you really need these), they'd be easy enough to add. Hat support would probably look like: hatMoved(int hat, HatDirection direction); Looking at QGamepadManager, I notice that you treat the hat as a set of buttons. That doesn't strike me as a good idea. Buttons are normally orthogonal (that is, given any two buttons, both might be pressed at the same time). While it's true that you can be lazy and report hats that way, there are problems doing so. First, it precludes users mapping an entire hat to a single digital 2-axis control (or at least makes it much more difficult). Second, hat directions are *not* orthogonal; a hat is more of a digital version of an axis-pair, i.e. two values that are either {-1, 0, +1}. This isn't just a matter of how you can mash on the controller, it's also a question of what the hardware protocol is capable of reporting. -- Matthew _______________________________________________ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development