This is called Slicing, allowing the ability to have different key presses during the same AXIS direction depending on the AXIS position. I have included the notepad XML code that uses the Shift key instead of the Ctrl key to test my results. I believe the PressAndHold command is the issue, but there may be other programming options and mistakes I don’t know about. XML language is a hell of a lot easier than 6502 assembly programming, yeah, I’m that old.

RBC9 SpaceNav driver https://forum.3dconnexion.com/viewtopic ... &start=735
Code: Select all
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="AppDefCfgDAM.xml"?>
<?xml-stylesheet type="text/css" href="../../../../../Documents/3DConnection%20CFG/MODS/APPCFG-Test.xml"?>
<AppCfg xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Default="false" CfgFormatVersion="1.3" ThisFileVersion="2.0">
<AppInfo>
<Signature>
<Name>Notepad MOD1</Name>
<ExecutableName>notepad.exe</ExecutableName>
</Signature>
<Options/>
</AppInfo>
<CfgProperties>
<ID>ID_NotePad</ID>
<Name>NotePad</Name>
<Transport>DirectInput</Transport>
<InheritsFrom/>
</CfgProperties>
<MacroTable>
<MacroEntry>
<ID>V</ID>
<KeyStroke>
<Key>19</Key>
</KeyStroke>
</MacroEntry>
<MacroEntry>
<ID>3</ID>
<KeyStroke>
<Key>20</Key>
</KeyStroke>
</MacroEntry>
</MacroTable>
<ButtonActions>
<ButtonAction Type="Sequence">
<ID>Macro_88bdf08f-9f69-491a-b93d-91e084baa394</ID>
<Name>one</Name>
<Sequence Pause="120">
<ActionID Pause="40">1</ActionID>
</Sequence>
</ButtonAction>
</ButtonActions>
<AuthorInfo>
<DriverVersion>17.8.21.20975</DriverVersion>
<LastChange>
<Tool>3DxSmartUI.exe</Tool>
<Version>1.2.24172.20954</Version>
<Date>6/27/2024 8:23:59 PM UTC</Date>
<User>A63BEB9F-31D8-4AC8-862B-01DE272E1152</User>
</LastChange>
</AuthorInfo>
<Devices>
<Device>
<ID>ID_ProductID_C626</ID>
<ButtonBank Default="true">
<Name>STR_DEFAULT_BUTTONBANK</Name>
<ID>Default</ID>
<Button>
<Input>
<ActionID>HIDButton_1</ActionID>
</Input>
<Output>
<!--Bottom Button--><ActionID>V</ActionID>
</Output>
</Button>
<Button>
<Input>
<ActionID>HIDButton_2</ActionID>
</Input>
<Output>
<!--Top Button--><ActionID>3</ActionID>
</Output>
</Button>
</ButtonBank>
</Device>
<Device>
<ID>ID_Standard_3D_Mouse</ID>
<AxisBank Default="true">
<ID>Default</ID>
<Name>STR_DEFAULT_BANK</Name>
<Axis><!--Start AXIS X POS-->
<Enabled>true</Enabled>
<Input>
<ActionID>HIDMultiAxis_X</ActionID>
<Min>0</Min>
<Max>511</Max>
<Deadband>128</Deadband>
</Input>
<Output>
<ActionID>KB_Keystroke</ActionID>
<RepeatStyle>PressAndHold</RepeatStyle>
<KeyStroke>
<Key>07</Key><!--KB D(07) Slide Right-->
</KeyStroke>
</Output>
</Axis><!--End AXIS X POS-->
<Axis><!--Start AXIS X NEG-->
<Enabled>true</Enabled>
<Input>
<ActionID>HIDMultiAxis_X</ActionID>
<Min>-512</Min>
<Max>0</Max>
<Deadband>128</Deadband>
</Input>
<Output>
<ActionID>KB_Keystroke</ActionID>
<RepeatStyle>PressAndHold</RepeatStyle>
<KeyStroke>
<Key>04</Key><!--KB A(04) Slide Left-->
</KeyStroke>
</Output>
</Axis><!--End AXIS X NEG-->
<Axis><!--Start AXIS Y POS-->
<Enabled>true</Enabled>
<Input>
<ActionID>HIDMultiAxis_Y</ActionID>
<Min>0</Min>
<Max>511</Max>
<Deadband>100</Deadband>
</Input>
<Output>
<ActionID>KB_Keystroke</ActionID>
<RepeatStyle>PressAndHold</RepeatStyle>
<KeyStroke>
<Key>16</Key><!--KB S (16) AFT-->
</KeyStroke>
</Output>
</Axis><!--End AXIS Y POS-->
<Axis><!--Start AXIS Y NEG Walk-->
<Enabled>true</Enabled>
<Input>
<ActionID>HIDMultiAxis_Y</ActionID>
<Min>-350</Min>
<Max>0</Max>
<Deadband>128</Deadband>
</Input>
<Output>
<ActionID>KB_Keystroke</ActionID>
<RepeatStyle>PressAndHold</RepeatStyle>
<KeyStroke>
<Key>1A</Key><!--KB W(1A) Forward-->
</KeyStroke>
</Output>
</Axis><!--END AXIS Y NEG Walk-->
<Axis><!--Start AXIS Y NEG RUN-->
<Enabled>true</Enabled>
<Input>
<ActionID>HIDMultiAxis_Y</ActionID>
<Min>-512</Min>
<Max>360</Max>
<Deadband>0</Deadband>
</Input>
<Output>
<ActionID>KB_Keystroke</ActionID>
<RepeatStyle>PressAndHold</RepeatStyle>
<Modifiers>
<Modifier>Shift</Modifier>
</Modifiers>
<KeyStroke>
<Key>1A</Key>
</KeyStroke>
</Output>
</Axis><!--END AXIS Y NEG RUN-->
<Axis><!--Start AXIS Z POS (Crouch) Ends at 350 -->
<Enabled>true</Enabled>
<Input>
<ActionID>HIDMultiAxis_Z</ActionID>
<Min>0</Min>
<Max>350</Max>
<Deadband>200</Deadband>
</Input>
<Output>
<ActionID>KB_Keystroke</ActionID>
<RepeatStyle>PressAndHold</RepeatStyle>
<KeyStroke>
<Key>06</Key><!--KB C (06) Crouch-->
</KeyStroke>
</Output>
</Axis><!--End AXIS Z POS-->
<Axis><!--Start AXIS Z POS Prone_ I cannot get Prone to work for the same Z AXIS starting at 360-->
<Enabled>true</Enabled>
<Input>
<ActionID>HIDMultiAxis_Z</ActionID>
<Min>360</Min>
<Max>512</Max>
<Deadband>0</Deadband>
</Input>
<Output>
<ActionID>KB_Keystroke</ActionID>
<RepeatStyle>PressAndHold</RepeatStyle>
<Modifiers>
<Modifier>Shift</Modifier>
</Modifiers>
<KeyStroke>
<Key>13</Key>
</KeyStroke>
</Output>
</Axis><!--END AXIS Z POS Prone-->
<Axis><!--Start AXIS Z NEG (Jump)-->
<Enabled>true</Enabled>
<Input>
<ActionID>HIDMultiAxis_Z</ActionID>
<Min>-512</Min>
<Max>0</Max>
<Deadband>200</Deadband>
</Input>
<Output>
<ActionID>KB_Keystroke</ActionID>
<RepeatStyle>PressAndHold</RepeatStyle>
<KeyStroke>
<Key>2C</Key><!--KB Space (2C) Jump-->
</KeyStroke>
</Output>
</Axis><!--End AXIS Z NEG-->
</AxisBank>
</Device>
</Devices>
</AppCfg>
notepad Mod-1.xml
Displaying notepad Mod-1.xml.