SpaceMouse Joystick Emulator

Questions and answers about 3Dconnexion devices on Windows.

Moderator: Moderators

Post Reply
ycodryn
Posts: 7
Joined: Sat Oct 29, 2016 7:31 am

SpaceMouse Joystick Emulator

Post by ycodryn » Sat Oct 29, 2016 7:44 am

Hello guys. I just bought a Space Navigator and I want to use it as a game pad/joystick emulator. In a old thread I saw a post from a moderator saying that "This release includes keyboard, mouse and joystick emulation." This can be done from gui or from a script? Thank you.

ycodryn
Posts: 7
Joined: Sat Oct 29, 2016 7:31 am

Re: SpaceMouse Joystick Emulator

Post by ycodryn » Sat Oct 29, 2016 8:07 am

I don`t see either a mouse simulation function in 3Dconnexion Home. For a such great device, software control is very poor.

ycodryn
Posts: 7
Joined: Sat Oct 29, 2016 7:31 am

Re: SpaceMouse Joystick Emulator

Post by ycodryn » Sat Oct 29, 2016 10:33 am

I don`t see any option to edit posts so I will reply again here. Why 3DxWare64SPP_v10-0-16_r1544 have so many gui good options regarding joystick, mouse, keyboard and profile management and latest version 3DxWare64_v10-4-7_r2465 is so rudimentary? With further versions you are not evolving but regressing. Or if is my fault and I`m not finding such options in latest version then I apologize.

RPro
Posts: 12
Joined: Sat Sep 03, 2016 10:21 pm

Re: SpaceMouse Joystick Emulator

Post by RPro » Thu Nov 03, 2016 8:51 am

I've used the software in this thread:
https://forums.frontier.co.uk/showthrea ... y-SN2vJoy)

And then gotten xbox360 controller emulation working using a program called x360ce, to get support in Deus Ex: Mankind Divided - which doesn't work quite right because the game itself cannot be controlled by a gamepad controller and a mouse/keyboard at the same time, but should work in other games better.

Good luck - I haven't properly figured out x360ce - it was painful to setup.

jwick
Moderator
Moderator
Posts: 2609
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Re: SpaceMouse Joystick Emulator

Post by jwick » Mon Nov 07, 2016 4:12 am

It is true that all GUI support for joystick emulation was removed. AFAIK, the functionality still works if you configure it yourself.

You have to create/edit a cfg file for your game.

If you make some configuration change (like change the scaling or filtering) using the device or GUI while your game is running, the driver will create a KMJ (Keyboard, Mouse, Joystick) cfg for you. You then have to edit the settings manually because it doesn't have much assigned to the axes. You might already have such a file in your %appdata% directory.

Look at the JoystickTemplate.xml cfg that we ship. You want to assign your device axes in a similar way (<Output/ActionID>>HIDJoystick_X etc).

When your game is running, hovering over the 3Dx icon in the systray should show your filename in use.

Even so, this just gives you basic support of the joystick. The SN2vJoy program mentioned does seem to have a much more substantial interface and range of settings.

ycodryn
Posts: 7
Joined: Sat Oct 29, 2016 7:31 am

Re: SpaceMouse Joystick Emulator

Post by ycodryn » Sun Nov 20, 2016 9:51 am

Thank you guys for suggestions. Now that I had some free time I tried to do your way and used that template for elite dangerous for now. Is working fine with a few exceptions. When I`m trying to assign a axe in-game the binding is ok but sometimes the ship spins like crazy or is just moving slowly in one direction without touching it. If I`m not assigning a movement to a axe but to a key directly is working but I need the axe for sensitivity. Any ideas ?

ScotchBingington
Posts: 14
Joined: Wed Nov 16, 2016 10:27 pm

Re: SpaceMouse Joystick Emulator

Post by ScotchBingington » Sun Nov 20, 2016 3:42 pm

ycodryn -

Like you I've just purchased a device, and instead of setting up the device to joystick I've set it up to WASD keyboard controls. Short answer is that if you hold a direction for 2-3 seconds it repeats the input then freezes, stops all input and starts throwing random movement which is probably what you're seeing. The GUI functionality to assign axis to buttons/joystick did exist in previous revs but I believe it was removed due to the developers not being able to tame this issue. Granted they've explicitly said it's not for gaming, so it's alright if you're using their driver/plugin, but making custom profiles are a joke. I've pissed away my entire weekend because of this thing.

Good luck going the joystick route but honestly it looks grim.

-mh

jwick
Moderator
Moderator
Posts: 2609
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Re: SpaceMouse Joystick Emulator

Post by jwick » Mon Nov 21, 2016 2:43 am

The first two things to try when setting up a cfg is to turn on the dominant filter and the log file. The log file will tell you what joystick/keyboard/mouse events are being sent out. The dominant filter (in the GUI) will only send one axis at a time, so you can see better what is going on. When too many inputs get sent simultaneously it often confuses applications.

Some of our devices have an automatic calibrate in the firmware, especially wireless devices. If you hold a constant value for too long, it will think the device is falsely drifting and will recalibrate itself. When you release the cap, the springs will return the device to the mechanical center and it will think you are pushing the opposite direction. Then it will auto-calibrate itself again later.

You can run the joystick control panel to test the device.
Save this cfg file into the ProgramFiles...3DxWinCore64/Cfg/JoystickTestProgram.xml.
Then run joy.cpl.

Code: Select all

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
(c) Copyright 3Dconnexion. All rights reserved. 
$Revision: 12569 $
-->
<AppCfg Default="true" xmlns="" CfgFormatVersion="1.2" ThisFileVersion="1.1">
  <AppInfo>
    <Signature>
      <Name>STR_JOYSTICK_TEST_PROGRAM</Name>
      <ExecutableName>RUNDLL32.EXE</ExecutableName>
      <VersionRange>
        <Min>1.0.0.0</Min>
        <Max>1.0.0.0</Max>
      </VersionRange>
      <Transport>KMJ</Transport>
      <WindowCaption SubStringLocation="StartsWith">3Dconnexion KMJ Emulator properties</WindowCaption>
    </Signature>
    <Options>
      <IgnoreMouseWheelInertia>true</IgnoreMouseWheelInertia>
    </Options>
  </AppInfo>
  <ButtonActions>
    <!-- App Handled Actions -->
    <ButtonAction Type="App">
      <ID>App_ResetYourView</ID>
      <Name>STR_APP_RESETYOURVIEW</Name>
    </ButtonAction>
    <!-- Keyboard Functions -->
    <ButtonAction Type="Joystick">
      <ID>HIDJoystick_1</ID>
      <Name>STR_JOYSTICK_1</Name>
    </ButtonAction>
    <ButtonAction Type="Joystick">
      <ID>HIDJoystick_2</ID>
      <Name>STR_JOYSTICK_2</Name>
    </ButtonAction>
    <ButtonAction Type="Joystick">
      <ID>HIDJoystick_3</ID>
      <Name>STR_JOYSTICK_3</Name>
    </ButtonAction>
    <ButtonAction Type="Joystick">
      <ID>HIDJoystick_4</ID>
      <Name>STR_JOYSTICK_4</Name>
    </ButtonAction>
    <ButtonAction Type="Joystick">
      <ID>HIDJoystick_Hat_N</ID>
      <Name>STR_JOYSTICK_HAT_N</Name>
    </ButtonAction>
    <ButtonAction Type="Joystick">
      <ID>HIDJoystick_Hat_E</ID>
      <Name>STR_JOYSTICK_HAT_E</Name>
    </ButtonAction>
    <ButtonAction Type="Joystick">
      <ID>HIDJoystick_Hat_S</ID>
      <Name>STR_JOYSTICK_HAT_S</Name>
    </ButtonAction>
    <ButtonAction Type="Joystick">
      <ID>HIDJoystick_Hat_W</ID>
      <Name>STR_JOYSTICK_HAT_W</Name>
    </ButtonAction>
  </ButtonActions>
  <Devices>
    <Device>
      <Name>Standard 3D Mouse</Name>
      <VendorID>0</VendorID>
      <ProductID>0</ProductID>
      <AxisFilter>None</AxisFilter>
      <CurrentButtonBank>Default</CurrentButtonBank>
      <Axis>
        <Enabled>true</Enabled>
        <Input>
          <ActionID>HIDMultiAxis_X</ActionID>
          <Min>-512</Min>
          <Max>511</Max>
        </Input>
        <Output>
          <ActionID>HIDJoystick_X</ActionID>
        </Output>
      </Axis>
      <Axis>
        <Enabled>true</Enabled>
        <Input>
          <ActionID>HIDMultiAxis_Y</ActionID>
          <Min>-512</Min>
          <Max>511</Max>
        </Input>
        <Output>
          <ActionID>HIDJoystick_Y</ActionID>
        </Output>
      </Axis>
      <Axis>
        <Enabled>true</Enabled>
        <Input>
          <ActionID>HIDMultiAxis_Z</ActionID>
          <Min>-512</Min>
          <Max>511</Max>
        </Input>
        <Output>
          <ActionID>HIDJoystick_Z</ActionID>
        </Output>
      </Axis>
      <Axis>
        <Enabled>true</Enabled>
        <Input>
          <ActionID>HIDMultiAxis_Rx</ActionID>
          <Min>-512</Min>
          <Max>511</Max>
        </Input>
        <Output>
          <ActionID>HIDJoystick_Rx</ActionID>
        </Output>
      </Axis>
      <Axis>
        <Enabled>true</Enabled>
        <Input>
          <ActionID>HIDMultiAxis_Ry</ActionID>
          <Min>-512</Min>
          <Max>511</Max>
        </Input>
        <Output>
          <ActionID>HIDJoystick_Ry</ActionID>
        </Output>
      </Axis>
      <Axis>
        <Enabled>true</Enabled>
        <Input>
          <ActionID>HIDMultiAxis_Rz</ActionID>
          <Min>-512</Min>
          <Max>511</Max>
        </Input>
        <Output>
          <ActionID>HIDJoystick_Rz</ActionID>
        </Output>
      </Axis>
      <Axis>
        <Enabled>true</Enabled>
        <Input>
          <ActionID>HIDUnspecified</ActionID>
        </Input>
        <Output>
          <ActionID>HIDUnspecified</ActionID>
        </Output>
      </Axis>
      <ButtonBank Default="true">
        <Name>STR_DEFAULT_BUTTONBANK</Name>
        <ID>Default</ID>
        <Button>
          <Input>
            <ActionID>V3DK_MENU</ActionID>
          </Input>
          <Output>
            <ActionID>Driver_ShowDriverGUI</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_FIT</ActionID>
          </Input>
          <Output>
            <ActionID>Driver_ShowDriverGUI</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_TOP</ActionID>
          </Input>
          <Output>
            <ActionID>HIDJoystick_Hat_N</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_LEFT</ActionID>
          </Input>
          <Output>
            <ActionID>HIDJoystick_Hat_W</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_RIGHT</ActionID>
          </Input>
          <Output>
            <ActionID>HIDJoystick_Hat_E</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_FRONT</ActionID>
          </Input>
          <Output>
            <ActionID>HIDJoystick_Hat_S</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_1</ActionID>
          </Input>
          <Output>
            <ActionID>Driver_Toggle_3DxNumPad</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_2</ActionID>
          </Input>
          <Output>
            <ActionID>HIDJoystick_2</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_3</ActionID>
          </Input>
          <Output>
            <ActionID>HIDJoystick_3</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_4</ActionID>
          </Input>
          <Output>
            <ActionID>HIDJoystick_4</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_ESC</ActionID>
          </Input>
          <Output>
            <ActionID>KB_Esc</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_ALT</ActionID>
          </Input>
          <Output>
            <ActionID>KB_Alt</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_SHIFT</ActionID>
          </Input>
          <Output>
            <ActionID>KB_Shift</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_CTRL</ActionID>
          </Input>
          <Output>
            <ActionID>KB_Ctrl</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_ROTATE</ActionID>
          </Input>
          <Output>
            <ActionID>Driver_ToggleTranslations</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_DOMINANT</ActionID>
          </Input>
          <Output>
            <ActionID>Driver_ToggleDominantFilter</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_PLUS</ActionID>
          </Input>
          <Output>
            <ActionID>Driver_IncreaseAppScale</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_MINUS</ActionID>
          </Input>
          <Output>
            <ActionID>Driver_DecreaseAppScale</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>V3DK_USER</ActionID>
          </Input>
          <Output>
            <ActionID>Driver_ToggleRotations</ActionID>
          </Output>
        </Button>
      </ButtonBank>
    </Device>
    <Device>
      <Name>SpaceMouse Wireless</Name>
      <VendorID>256f</VendorID>
      <ProductID>c62e</ProductID>
      <CurrentButtonBank>Default</CurrentButtonBank>
      <ButtonBank Default="true">
        <Name>STR_DEFAULT_BUTTONBANK</Name>
        <ID>Default</ID>
        <Button>
          <Input>
            <ActionID>HIDButton_1</ActionID>
          </Input>
          <Output>
            <ActionID>HIDJoystick_1</ActionID>
          </Output>
        </Button>
        <Button>
          <Input>
            <ActionID>HIDButton_2</ActionID>
          </Input>
          <Output>
            <ActionID>HIDJoystick_2</ActionID>
          </Output>
        </Button>
      </ButtonBank>
    </Device>
  </Devices>
</AppCfg>

ycodryn
Posts: 7
Joined: Sat Oct 29, 2016 7:31 am

Re: SpaceMouse Joystick Emulator

Post by ycodryn » Mon Nov 21, 2016 3:18 am

Thank you for dominant filter hint. That was the answer. All axe binds are working correctly now. Thank you for support.

ycodryn
Posts: 7
Joined: Sat Oct 29, 2016 7:31 am

Re: SpaceMouse Joystick Emulator

Post by ycodryn » Mon Nov 21, 2016 3:38 am

One last reply regarding this matter. First problem was solved so this is just for curiosity. I have used that JoystickTestProgram.xml to test it in joy.cpl. 3Dconnexion KMJ Emulator status is ok but inside there is no button or axe activity.

kgrosser
Posts: 77
Joined: Fri Dec 08, 2006 3:04 am

Re: SpaceMouse Joystick Emulator

Post by kgrosser » Sun Jan 08, 2017 5:49 am

I still wonder why they didn't pursue the brillant approach of Beta v4 - I am still using this as it's happily working on Win 10. Reverting to the old, rigid approach of the native GUI with 3DxWare 10 was a huge step backwards in my concern. Since then I continue coming back to check if there's som improvement on that. Puzzled :?

Post Reply