Unfortunately using Global.xml does not seem to work well with the current release (we are skiing off the trail here).
You will need to make the cfg changes per application until I fix it.
To see the capabilities in the simplest form, save this into %appdata%\3Dconnexion\3DxWare\Cfg\jet.xml:
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<AppCfg Default="false" xmlns="" CfgFormatVersion="1.3" ThisFileVersion="1.8">
<CfgProperties>
<ID>ID_STR_JET</ID>
<Name>STR_JET</Name>
<InheritsFromID>ID_STR_JET</InheritsFromID>
<Access>
<AllowInheritance>true</AllowInheritance>
<Hidden>false</Hidden>
<Ignore>false</Ignore>
</Access>
</CfgProperties>
<AppInfo>
<Signature>
<Name>STR_JET</Name>
</Signature>
<Options/>
</AppInfo>
<AuthorInfo>
<DriverVersion>17.8.20.20889</DriverVersion>
<LastChange>
<Tool>3DxService.exe</Tool>
<Version>17.8.20.20889</Version>
<Date>2024:4:3:17:8:57:45:403</Date>
<User>ADB714F4-85D1-4915-8A36-C6796D456743</User>
</LastChange>
<Created>
<Tool>3DxService.exe</Tool>
<Version>17.8.21.20868</Version>
<Date>2024:4:3:17:7:43:52:955</Date>
<User>ADB714F4-85D1-4915-8A36-C6796D456743</User>
</Created>
</AuthorInfo>
<ButtonActions>
<!-- Axis/ApplicationBank operations -->
<ButtonAction Type="AxisBank">
<ID>AxisBank_ShiftToJoystick</ID>
<Name>Shift to Joystick</Name>
<Action>PushPop</Action>
<BankID>JoystickBank</BankID>
<ApplyTo>All</ApplyTo>
</ButtonAction>
<ButtonAction Type="ApplicationBank">
<ID>ApplicationBank_ShiftLockToJoystick</ID>
<Name>ShiftLock to Joystick</Name>
<Action>Push</Action>
<BankID>JoystickBank</BankID>
<ApplyTo>All</ApplyTo>
</ButtonAction>
<ButtonAction Type="ApplicationBank">
<ID>ApplicationBank_Pop</ID>
<Name>Pop Back</Name>
<Action>Pop</Action>
<BankID>Default</BankID>
<ApplyTo>All</ApplyTo>
</ButtonAction>
</ButtonActions>
<Devices>
<Device>
<ID>ID_Standard_3D_Mouse</ID>
<Name>Standard 3D Mouse</Name>
<AxisFilter>None</AxisFilter>
<CurrentAxisBank>Default</CurrentAxisBank>
<AxisBank Default="true">
<ID>JoystickBank</ID>
<Name>JoystickBank</Name>
<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>
</AxisBank>
<ButtonBank Default="true">
<ID>Default</ID>
<Name>Default</Name>
<InheritsFromID/>
<Button>
<Input>
<ActionID>V3DK_MENU_1</ActionID>
</Input>
<Output>
<ActionID>AxisBank_ShiftToJoystick</ActionID>
</Output>
</Button>
<Button>
<Input>
<ActionID>V3DK_MENU_2</ActionID>
</Input>
<Output>
<ActionID>ApplicationBank_ShiftLockToJoystick</ActionID>
</Output>
</Button>
</ButtonBank>
<ButtonBank>
<ID>JoystickBank</ID>
<Name>JoystickBank</Name>
<InheritsFromID/>
<Button>
<Input>
<ActionID>V3DK_MENU_1</ActionID>
</Input>
<Output>
<ActionID>AxisBank_ShiftToJoystick</ActionID>
</Output>
</Button>
<Button>
<Input>
<ActionID>V3DK_MENU_2</ActionID>
</Input>
<Output>
<ActionID>ApplicationBank_Pop</ActionID>
</Output>
</Button>
</ButtonBank>
</Device>
</Devices>
</AppCfg>
What this does:
Fundamentally, it defines an AxisBank that defines Joystick events, and switches to/from that.
The implementation of that:
There are three ButtonActions, which can be assigned to any button (that has a separate press and release state).
1) "Shift to Joystick" is the Shfit key functionality. When pressed, it switches the 3D mouse axes to send joystick events. When you release it, it goes back to what it was doing.
2) "ShiftLock to Joystick" is the ShiftLock/CapsLock functionality. Press it once and it switches the axes (AND the buttons).
3) "Pop Back" handles the second press of that button to switch back to the previous mode (3D mouse mode).
There is:
1) an AxisBank, which the buttons switch to. This defines the joystick axis events.
2) a "Default" ButtonBank that defines that the left and right buttons, call the aforementioned ButtonActions.
3) a "JoystickBank" ButtonBank that only exists to return back from Joystick mode (only necessary for ShiftLock mode).
I'm assuming you are using the latest 3DxWare release (10.8.20).
To test, run our jet.exe demo (in 3DxWinCore dir - normally C:\Program Files\3Dconnexion\3DxWare\3DxWinCore).
On a 2-button device (SpaceMouse Wireless/Compact/SpaceNavigator), I've assigned:
the left button to the "Shift" mode. It switches to Joystick mode while the button is pressed, and
the right button to the "ShiftLock" mode. It switches to Joystick mode when you press and release it. If it is pressed again, it switches back to the original mode.
To see what is going on, enable the driver's log file (right-click on the 3Dx systray icon ->Write Log File).
Download baretail and run it on %localappdata%\3Dconnexion\3DxWare\3DxService.log.
Run our jet demo.
When you switch to Joystick mode, using either method, the log file will show that joystick events are being sent out. The jet won't move.
You can reassign those buttons for other devices.
Since the driver is now sending joystick events, autohotkey should be able to translate them to whatever you want to do.
I don't have Maya here ATM to test it with. For Maya, you'll need to make the same changes to your %appdata%/.../Maya.xml file.
That is, add the 3 ButtonAction elements to the <ButtonActions> list.
Add the entire <Device>. If you already have some ID_Standard_3D_Mouse elements in there, you need to add the <AxisBank> and the two <ButtonBank>s.
There is a chance that you will end up fighting Maya on this. When you change modes in Maya, it may try to undo what you are doing. If you find this, let me know.
I never intended users to edit XML files. The GUI was supposed to do this for you...
If the XML editing is too much, PM your %appdata% files to me and I'll edit them and return them for you.
That's a lot to understand. I"m here to help.