Scrolling Behavior

Questions and answers about 3Dconnexion devices on Windows.

Moderator: Moderators

Post Reply
madmark
Posts: 12
Joined: Fri Sep 16, 2011 9:31 am
Location: PNW
Contact:

Scrolling Behavior

Post by madmark »

I am trying to get the scrolling (and hopefully zoom) behavior consistent across applications.

SpaceMouse Pro
DriverVersion 17.5.11.15451
3DxSmartUI.exe 1.2.18291.15447

What I am wanting is for vertical and horizontal scrolling to be controlled by X and Y, NOT RX and RY.
One example is Notepad++,
I have no idea how to change scrolling movements along the axis from around it.

Searching through the forums has been fruitless, and have found references from the moderators that they are the authoritative reference.

Yes, unsupported software. No, the authors of the software have no interest in adding support for 3dconnexion devices.

What I need is a document that describes all the .xml config file settings.
Is there such documentation? If not, why not?
jwick
Moderator
Moderator
Posts: 3331
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Re: Scrolling Behavior

Post by jwick »

Notepad++ not having an app-specific cfg file, will use the default cfg in AppDefCfg_KMJ.xml.
You can change that if you have write access to Program Files/.../3DxWinCore64/Cfg.
If you change it there, every application that uses this default will be changed.

In that file you will see that the HIDMultiAxis_Rx axis is assigned to Output HIDMouse_Wheel. And the HIDMultiAxis_Y is assigned to HIDMultiAxis_Y, which notepad++, of course, does not understand.

Code: Select all

	<Axis>
          <Enabled>true</Enabled>
          <Input>
            <ActionID>HIDMultiAxis_Rx</ActionID>
            <Min>-512</Min>
            <Max>511</Max>
          </Input>
          <Output>
            <ActionID>HIDMouse_Wheel</ActionID>
            <Scale>1.00</Scale>
            <Reversed>true</Reversed>
          </Output>
        </Axis>
If you want the HIDMultiAxis_Y (push pull) to output HIDMouse_Wheel, change the HIDMultiAxis_Y Output assignment. You may also want to change the HIDMultiAxis_Rx to HIDMultiAxis_Rx, which, in effect, disables it.

I never have been able to get Horizontal Scroll to work in a generic way. We do it with an app-specific mechanism where we have been able to make it work. The assignments for those are in the app-specific files (e.g., Excel.xml).
madmark
Posts: 12
Joined: Fri Sep 16, 2011 9:31 am
Location: PNW
Contact:

Re: Scrolling Behavior

Post by madmark »

Thanks, it seems to work other places.
I tried include your suggestions and modifying the notepad++.xml that is created by 3DxWare when advanced settings are changed (pan, zoom, rotation toggles) which is saved in the user config directory.

This works great in other applications (well, not powerpoint).
The h-scroll and zoom works great in FireFox using the same HIDMouse_Wheel actions with Shift and Control modifiers.

As far as I can tell, 3DxWare ignores the settings for notepad++.exe and appears to create a temporary one that has the same values prior to changes I attempted in advanced settings. Even if I do not change anything in notepad++.xml.

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>
<AppCfg Default="false" xmlns="" CfgFormatVersion="1.2" ThisFileVersion="1.10">
  <AppInfo>
    <Signature>
      <Name>Notepad++ : a free (GNU) source code editor</Name>
      <ExecutableName>notepad++.exe</ExecutableName>
    </Signature>
    <Options />
  </AppInfo>
  <CfgProperties>
    <InheritsFrom>STR_DEFAULT_KMJ</InheritsFrom>
  </CfgProperties>
  <Settings>
    <OverallScale>1.42</OverallScale>
  </Settings>
  <Devices>
    <Device>
      <Name>Standard 3D Mouse</Name>
      <VendorID>0</VendorID>
      <ProductID>0</ProductID>
      <InheritsFrom>Standard 3D Mouse</InheritsFrom>
      <AxisBank>
        <Name>Default</Name>
        <ID>Default</ID>
        <Axis>
          <Enabled>true</Enabled>
          <Input>
            <ActionID>HIDMultiAxis_X</ActionID>
            <Min>-512</Min>
            <Max>511</Max>
          </Input>
          <Output>
            <ActionID>HIDMouse_Wheel</ActionID>
            <Modifiers>
              <Modifier>Shift</Modifier>
            </Modifiers>
            <Scale>5.00</Scale>
            <Reversed>true</Reversed>
          </Output>
        </Axis>
        <Axis>
          <Enabled>true</Enabled>
          <Input>
            <ActionID>HIDMultiAxis_Y</ActionID>
            <Min>-512</Min>
            <Max>511</Max>
          </Input>
          <Output>
            <ActionID>HIDMouse_Wheel</ActionID>
            <Scale>3.70</Scale>
            <Reversed>True</Reversed>
          </Output>
        </Axis>
        <Axis>
          <Enabled>true</Enabled>
          <Input>
            <ActionID>HIDMultiAxis_Z</ActionID>
            <Min>-512</Min>
            <Max>511</Max>
          </Input>
          <Output>
            <ActionID>HIDMouse_Wheel</ActionID>
            <Modifiers>
              <Modifier>Control</Modifier>
            </Modifiers>
            <Scale>1.00</Scale>
            <Reversed>false</Reversed>
          </Output>
        </Axis>
        <Axis>
          <Enabled>false</Enabled>
          <Input>
            <ActionID>HIDMultiAxis_Rx</ActionID>
            <Min>-512</Min>
            <Max>511</Max>
          </Input>
          <Output>
            <ActionID>HIDMultiAxis_Rx</ActionID>
            <Reversed>false</Reversed>
          </Output>
        </Axis>
        <Axis>
          <Enabled>false</Enabled>
          <Input>
            <ActionID>HIDMultiAxis_Ry</ActionID>
            <Min>-512</Min>
            <Max>511</Max>
          </Input>
          <Output>
            <ActionID>HIDMultiAxis_Rz</ActionID>
            <Reversed>false</Reversed>
          </Output>
        </Axis>
        <Axis>
          <Enabled>false</Enabled>
          <Input>
            <ActionID>HIDMultiAxis_Rz</ActionID>
            <Min>-512</Min>
            <Max>511</Max>
          </Input>
          <Output>
            <ActionID>HIDMultiAxis_Ry</ActionID>
            <Reversed>true</Reversed>
          </Output>
        </Axis>
      </AxisBank>
      <AxisFilter>Dominant</AxisFilter>
    </Device>
  </Devices>
  <AuthorInfo>
    <DriverVersion>17.5.11.15451</DriverVersion>
    <LastChange>
      <Tool>3DxSmartUI.exe</Tool>
      <Version>1.2.18291.15447</Version>
      <Date>6/4/2019 4:04:41 PM UTC</Date>
      <User>av284c</User>
    </LastChange>
  </AuthorInfo>
</AppCfg>
jwick
Moderator
Moderator
Posts: 3331
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Re: Scrolling Behavior

Post by jwick »

There's a "implementation shortcoming" in our software that writes the cfg file for notepad++.exe.

This line is wrong:

Code: Select all

<ExecutableName>notepad++.exe</ExecutableName>
The contents are not a valid regex.

You need to change it to:

Code: Select all

<ExecutableName>notepad\+\+.exe</ExecutableName>
Then the file will get used.

It is a shortcoming specific to this exe name. We have it on our todo list.
mhoopes
Posts: 137
Joined: Thu Dec 07, 2006 10:48 am
Location: Campbell, CA

Re: Scrolling Behavior

Post by mhoopes »

It seemed like a Notepad++ naming issue was still in effect several weeks ago, so I had a Notepad++ profile in Roaming with the filename NotepadPluPlus.xml. However, that wasn't functioning, either, so I deleted it and allowed Properties to create a new xml. I noticed that the ExecutableName tweak that jwick recommends was in C:\Program Files\3Dconnexion\3DxWare\3DxWinCore\Cfg\Notepad++.xml. However, Notepad++ on my PC wasn't responding to the controller.

Code: Select all

  <CfgProperties>
    <ID>ID_Notepad++</ID>
    <Name>Notepad++</Name>
    <InheritsFromID>Notepad++</InheritsFromID>
  </CfgProperties>
I changed the InheritsFromID to ID_Default_KMJ_Cfg, and then Rx was able to emulate the mouse wheel. From there, I added the Ry = Shift+Rx code, and now have horizontal scrolling there.

Code: Select all

 <CfgProperties>
    <ID>ID_Notepad++</ID>
    <Name>Notepad++</Name>
    <InheritsFromID>ID_Default_KMJ_Cfg</InheritsFromID>
  </CfgProperties>
    <Devices>
    <Device>
      <ID>ID_Standard_3D_Mouse</ID>
      <AxisBank>
        <Name>Default</Name>
        <ID>Default</ID>
        <Axis>
          <Enabled>true</Enabled>
          <Input>
            <ActionID>HIDMultiAxis_Ry</ActionID>
            <Min>-512</Min>
            <Max>511</Max>
          </Input>
          <Output>
            <ActionID>HIDMouse_Wheel</ActionID>
            <Modifiers>
              <Modifier>Shift</Modifier>
            </Modifiers>
          </Output>
        </Axis>
      </AxisBank>
    </Device>
  </Devices>
Michael Hoopes
mhoopes
Posts: 137
Joined: Thu Dec 07, 2006 10:48 am
Location: Campbell, CA

Re: Scrolling Behavior

Post by mhoopes »

Just to clarify, I modified the inheritance in my Roaming Notepad++ profile -> ID_Default_KMJ_Cfg, and added the output action for Ry -> Shift+HIDMouse_Wheel.
No mods to C:\Program Files\3Dconnexion\3DxWare\3DxWinCore\Cfg\Notepad++.xml.
Michael Hoopes
jwick
Moderator
Moderator
Posts: 3331
Joined: Wed Dec 20, 2006 2:25 pm
Location: USA
Contact:

Re: Scrolling Behavior

Post by jwick »

Hi Michael,

Great addition!
I'm stealing that from you for our next release.
I gave you credit though.

Jim
mhoopes
Posts: 137
Joined: Thu Dec 07, 2006 10:48 am
Location: Campbell, CA

Re: Scrolling Behavior

Post by mhoopes »

Thanks! By the way, I needed to also add the HIDMouse_Wheel Action for Rx, otherwise no vertical scrolling. Here's both:

Code: Select all

        <Axis>
          <Enabled>true</Enabled>
          <Input>
            <ActionID>HIDMultiAxis_Rx</ActionID>
            <Min>-512</Min>
            <Max>511</Max>
          </Input>
          <Output>
            <ActionID>HIDMouse_Wheel</ActionID>
          </Output>
        </Axis>
        <Axis>
          <Enabled>true</Enabled>
          <Input>
            <ActionID>HIDMultiAxis_Ry</ActionID>
            <Min>-512</Min>
            <Max>511</Max>
          </Input>
          <Output>
            <ActionID>HIDMouse_Wheel</ActionID>
            <Modifiers>
              <Modifier>Shift</Modifier>
            </Modifiers>
          </Output>
        </Axis>
        <Axis>
Michael Hoopes
Post Reply