Filed in: Projects.Panda3DXInput2 · Modified on : Sat, 06 Nov 10
NB: This is an evolving document, and I won't draw attention to any particular updates unless they're exceptionally important. Instead, check out its History instead.
Corresponding blueprint on Launchpad
According to the Panda3D Manual, Panda requires the same ugly hack that pymanymouse/manymouse proper use to get multiple mice to work under Linux. Viz.:
(I disagree that it's a "flaw in these distributions" since the only reasonable solution is to use (non-root) groups and add users to it (and relogin/reboot), a totally unnecessary hoop for an end user to jump through anyway. So does the linked-to solution.)
Another issue is that in order to use multiple mice, you (or Panda) has to read raw (untransformed by X) values from the mouse, which isn't always what you want. For example, AFAIK, no mouse does pointer acceleration in hardware; that's done by X drivers. You get a pointer in Panda that doesn't abide by the same rules as the regular X pointer. And untransformed input data would mean you'd have to have in-game calibration or something else tedious.
The XInput (XI1) X extension provides this ability, and has done for a while: you can get X events for individual devices. XInput2 (XI2) has been introduced recently, which adds MultiPointer X (MPX): the ability to have multiple "core" devices, now called "masters" (with hardware devices called "slaves"). (I refer to the these two indiscriminately as XInput*/XI*.)
(It should be noted that none of this is an issue in Windows (except perhaps the rawness problem), probably because snooping raw mouse traffic was not perceived to be a security hole. <Insert obligatory MS dig here.>)
In summary, advantages of using XInput* over devnodes:
XInput* have many abilities that would be useful, but I am doubtful that these would be available on a Windows (or perhaps even Mac) platform:
1 According to http://www.panda3d.org/phpbb2/viewtopic.php?p=57291#57291this post by rdb on the Panda3D forums. ⇑