joystick emulation - stuck axes and buttons

Questions and answers about 3Dconnexion devices on Windows.

Moderator: Moderators

Post Reply
siliconsmoke
Posts: 1
Joined: Fri Nov 01, 2019 7:57 am

joystick emulation - stuck axes and buttons

Post by siliconsmoke » Fri Nov 01, 2019 10:14 am

Hello,

I have an issue when moving the puck so the joystick axis output value hits the min or max of its range, the value then gets stuck at the min or max value for about 1s. The delay is also visible in the 3DxService.log file.

Code: Select all

// going under the X axis min range
00000020 17:54:52.674: KMJTrans:UdTransSendEvent: KMJEvent.type=5, origActionID=HIDMultiAxis_X, origValue=-118
00000020 17:54:52.675: KMJTrans:UdTransSendEvent: KMJEvent.type=5, origActionID=HIDMultiAxis_Ry, origValue=6
00000020 17:54:52.676: SendJoystickEvent: Joystick: buttons=0x0, status=0x0, X=-118, Y=0, Z=0, RX=0, RY=6, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:54:52.690: KMJTrans:UdTransSendEvent: KMJEvent.type=5, origActionID=HIDMultiAxis_X, origValue=-124
00000020 17:54:52.691: KMJTrans:UdTransSendEvent: KMJEvent.type=5, origActionID=HIDMultiAxis_Ry, origValue=7
00000020 17:54:52.692: SendJoystickEvent: Joystick: buttons=0x0, status=0x0, X=-124, Y=0, Z=0, RX=0, RY=7, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:54:52.706: KMJTrans:UdTransSendEvent: KMJEvent.type=5, origActionID=HIDMultiAxis_X, origValue=-129
00000020 17:54:52.707: KMJTrans:UdTransSendEvent: KMJEvent.type=5, origActionID=HIDMultiAxis_Ry, origValue=6
00000020 17:54:52.708: SendJoystickEvent: Joystick: buttons=0x0, status=0x0, X=-128, Y=0, Z=0, RX=0, RY=6, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:54:52.722: KMJTrans:UdTransSendEvent: KMJEvent.type=5, origActionID=HIDMultiAxis_X, origValue=-134
00000020 17:54:52.724: KMJTrans:UdTransSendEvent: KMJEvent.type=5, origActionID=HIDMultiAxis_Ry, origValue=6
00000020 17:54:52.725: SendJoystickEvent: Joystick: buttons=0x0, status=0x0, X=-128, Y=0, Z=0, RX=0, RY=6, RZ=0, throttle=0, hat=0x0, force=0

// returning back to range, X value stuck at -128
00000020 17:54:53.954: KMJTrans:UdTransSendEvent: KMJEvent.type=5, origActionID=HIDMultiAxis_X, origValue=-129
00000020 17:54:53.955: SendJoystickEvent: Joystick: buttons=0x0, status=0x0, X=-128, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:54:53.970: KMJTrans:UdTransSendEvent: KMJEvent.type=5, origActionID=HIDMultiAxis_X, origValue=-128
00000020 17:54:53.971: SendJoystickEvent: Joystick: buttons=0x0, status=0x0, X=-128, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:54:53.986: KMJTrans:UdTransSendEvent: KMJEvent.type=5, origActionID=HIDMultiAxis_X, origValue=-127
00000020 17:54:53.987: SendJoystickEvent: Joystick: buttons=0x0, status=0x0, X=-128, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:54:54.002: KMJTrans:UdTransSendEvent: KMJEvent.type=5, origActionID=HIDMultiAxis_X, origValue=-125
00000020 17:54:54.002: SendJoystickEvent: Joystick: buttons=0x0, status=0x0, X=-128, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0

// X value sent to joystick emulator unstucks itself
00000020 17:54:55.139: SendJoystickEvent: Joystick: buttons=0x0, status=0x0, X=-128, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:54:55.154: KMJTrans:UdTransSendEvent: KMJEvent.type=5, origActionID=HIDMultiAxis_X, origValue=-55
00000020 17:54:55.154: SendJoystickEvent: Joystick: buttons=0x0, status=0x0, X=-128, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:54:55.170: KMJTrans:UdTransSendEvent: KMJEvent.type=5, origActionID=HIDMultiAxis_X, origValue=-54
00000020 17:54:55.171: SendJoystickEvent: Joystick: buttons=0x0, status=0x0, X=-122, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:54:55.186: KMJTrans:UdTransSendEvent: KMJEvent.type=5, origActionID=HIDMultiAxis_X, origValue=-55
00000020 17:54:55.187: SendJoystickEvent: Joystick: buttons=0x0, status=0x0, X=-55, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
Is this intentional for some reason and if so is there a way to turn it off with some xml switch? It makes me overshoot when playing some space sim games.

The other issue is with the joystick buttons, when pressing and releasing multiple at once, all but the last one relased are still registered as being pressed. Pressing each of the stuck buttons individually fixes their state.
I can see in the log that the button events from the SpaceMouse pro are correct but the SendJoystickEvents are not.

Here is na excerpt from the log, keypresses are
[press 1][release 1][press 2][release 2][press 1][press 2][release 2][release 1][press 1][release 1][press 2][release 2]

Code: Select all

00000020 17:36:55.550: KMJTrans:UdTransSendEvent: KMJEvent.type=6, origActionID=HIDButton_13, origValue=1
00000020 17:36:55.551: SendJoystickEvent: Joystick: buttons=0x1, status=0x1, X=0, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:36:55.810: KMJTrans:UdTransSendEvent: KMJEvent.type=6, origActionID=HIDButton_13, origValue=0
00000020 17:36:55.813: SendJoystickEvent: Joystick: buttons=0x1, status=0x0, X=0, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:36:56.810: KMJTrans:UdTransSendEvent: KMJEvent.type=6, origActionID=HIDButton_14, origValue=1
00000020 17:36:56.812: SendJoystickEvent: Joystick: buttons=0x2, status=0x1, X=0, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:36:57.090: KMJTrans:UdTransSendEvent: KMJEvent.type=6, origActionID=HIDButton_14, origValue=0
00000020 17:36:57.090: SendJoystickEvent: Joystick: buttons=0x2, status=0x0, X=0, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:36:58.611: KMJTrans:UdTransSendEvent: KMJEvent.type=6, origActionID=HIDButton_13, origValue=1
00000020 17:36:58.613: SendJoystickEvent: Joystick: buttons=0x1, status=0x1, X=0, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:36:59.403: KMJTrans:UdTransSendEvent: KMJEvent.type=6, origActionID=HIDButton_14, origValue=1
00000020 17:36:59.406: SendJoystickEvent: Joystick: buttons=0x2, status=0x1, X=0, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:37:0.538: KMJTrans:UdTransSendEvent: KMJEvent.type=6, origActionID=HIDButton_14, origValue=0

// here the vaue set to SendJoystickEvent is 1 even if the origValue is 0
00000020 17:37:0.540: SendJoystickEvent: Joystick: buttons=0x2, status=0x1, X=0, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:37:1.306: KMJTrans:UdTransSendEvent: KMJEvent.type=6, origActionID=HIDButton_13, origValue=0
00000020 17:37:1.309: SendJoystickEvent: Joystick: buttons=0x1, status=0x0, X=0, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:37:2.655: KMJTrans:UdTransSendEvent: KMJEvent.type=6, origActionID=HIDButton_13, origValue=1
00000020 17:37:2.656: SendJoystickEvent: Joystick: buttons=0x1, status=0x1, X=0, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:37:2.994: KMJTrans:UdTransSendEvent: KMJEvent.type=6, origActionID=HIDButton_13, origValue=0
00000020 17:37:2.997: SendJoystickEvent: Joystick: buttons=0x1, status=0x0, X=0, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:37:3.803: KMJTrans:UdTransSendEvent: KMJEvent.type=6, origActionID=HIDButton_14, origValue=1
00000020 17:37:3.806: SendJoystickEvent: Joystick: buttons=0x2, status=0x1, X=0, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
00000020 17:37:4.114: KMJTrans:UdTransSendEvent: KMJEvent.type=6, origActionID=HIDButton_14, origValue=0
00000020 17:37:4.114: SendJoystickEvent: Joystick: buttons=0x2, status=0x0, X=0, Y=0, Z=0, RX=0, RY=0, RZ=0, throttle=0, hat=0x0, force=0
I know the buttons can be mapped to keyboard but more buttons are more buttons :)

The entire log is attached,
the rundll32.exe is "Set up USB game controllers" utility for calibrating and viewing game controller inputs

software versions:
3DxWare 10.6.3
3DxWinCore 17.6.3.16588

Device: SpaceMouse pro, FW:4.36

Thanks!
Attachments
3DxService.7z
(15.18 KiB) Downloaded 40 times

Post Reply