Main Restorations Software Audio/Jukebox/MP3 Everything Else Buy/Sell/Trade
Project Announcements Monitor/Video GroovyMAME Merit/JVL Touchscreen Meet Up Retail Vendors
Driving & Racing Woodworking Software Support Forums Consoles Project Arcade Reviews
Automated Projects Artwork Frontend Support Forums Pinball Forum Discussion Old Boards
Raspberry Pi & Dev Board controls.dat Linux Miscellaneous Arcade Wiki Discussion Old Archives
Lightguns Arcade1Up Try the site in https mode Site News

Unread posts | New Replies | Recent posts | Rules | Chatroom | Wiki | File Repository | RSS | Submit news

  

Author Topic: Wheel2XInput, designed for mapping wheel and wheel accessories to XInput  (Read 51366 times)

0 Members and 1 Guest are viewing this topic.

nugarp

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 300
  • Last login:November 09, 2025, 11:22:06 pm
  • I want to build my own arcade controls!
Re: Wheel2XInput, designed for mapping wheel and wheel accessories to XInput
« Reply #40 on: October 23, 2025, 11:11:30 pm »
Hello, I understand you can use multiple inputs and assign them in Wheel2XInput. I see an example for overriding one GUID with another for say a specific button but here's what I'm trying to accomplish...

I have a TMX racing wheel and the TH8S shifter. I want to map the shifter to currently mapped dpad and paddles on the wheel in the json, not override it, but have both inputs working. How would I code that into the json? I have used the trace app to pull the GUID and button numbers, so just need to know how to inject that info into the json.

Thanks!

Map multiple inputs to the same output, it will work as you want by default as I assume these are digital inputs and not analog that you are making as your targets.

Another way to say this: you can have the same targetButtons or targetDpads for multiple defined inputs.
Wheel2XInput | HDRecoil | LeaderLamps | NetLauncher | Discord | Youtube

Eckers569

  • Trade Count: (0)
  • Jr. Member
  • **
  • Offline Offline
  • Posts: 1
  • Last login:Yesterday at 12:27:50 pm
  • I want to build my own arcade controls!
Re: Wheel2XInput, designed for mapping wheel and wheel accessories to XInput
« Reply #41 on: November 09, 2025, 09:24:49 pm »
Hello, I understand you can use multiple inputs and assign them in Wheel2XInput. I see an example for overriding one GUID with another for say a specific button but here's what I'm trying to accomplish...

I have a TMX racing wheel and the TH8S shifter. I want to map the shifter to currently mapped dpad and paddles on the wheel in the json, not override it, but have both inputs working. How would I code that into the json? I have used the trace app to pull the GUID and button numbers, so just need to know how to inject that info into the json.

Thanks!



I think the code for mapping multiple GUIDs to a single button in the earlier reply might be wrong. I couldn't get it to work.

I tried a mixture of that and Copilot and came up with the following which did the trick for me.

Same Gear shifter as yours,  but my wheel is the TS-PC Racer. Pasted the full json so you can see it in context, but at the end of the 'buttons' section I've mapped A,B,X,Y to 0,1,2,3 on my shifter (gear changes in Daytona!). The plus side is the same buttons still work on my wheel.

Program is especially useful for emulating systems like Dreamcast, where the controller has limited buttons so you need to multitask. Crazy Taxi for example uses A and B to navigate menus but are then gear shifts in game - so I wanted wheel shifting to function while also retaining the face buttons for navigation:


{
  "guid": "00000003-044f-0000-89b6-000000000000.1",

  "enableForceFeedback": 1,
  "enableRumble": 0,
  "centeringForce": 50,
  "largeRumbleMagnitude": 80,
  "largeRumblePeriod": 120,
  "smallRumbleMagnitude": 50,
  "smallRumblePeriod": 60,
  "effectDuration": 1000,
  "effectAntiDeadzone": 0,

  "detectControllerReconnects": 1,
  "pollInterval": 16,

  "buttons": [
    {
      "button": 0,
      "targetButtons": [ { "button": "A" } ]
    },
    {
      "button": 1,
      "targetButtons": [ { "button": "B" } ]
    },
    {
      "button": 2,
      "targetButtons": [ { "button": "Y" } ]
    },
    {
      "button": 3,
      "targetButtons": [ { "button": "A" } ]
    },
    {
      "button": 4,
      "targetButtons": [ { "button": "Back" } ]
    },
    {
      "button": 5,
      "targetButtons": [ { "button": "B" } ]
    },
    {
      "button": 8,
      "targetButtons": [ { "button": "Start" } ]
    },
    {
      "button": 9,
      "targetButtons": [ { "button": "X" } ]
    },
    {
      "button": 0,
      "guid": "00000003-044f-0000-60b6-000000000000.1",
      "targetButtons": [
        { "button": "X" }
      ]
     },
     {
      "button": 1,
      "guid": "00000003-044f-0000-60b6-000000000000.1",
      "targetButtons": [
        { "button": "A" }
      ]
     },
     {
      "button": 2,
      "guid": "00000003-044f-0000-60b6-000000000000.1",
      "targetButtons": [
        { "button": "Y" }
      ]
     },
     {
      "button": 3,
      "guid": "00000003-044f-0000-60b6-000000000000.1",
      "targetButtons": [
        { "button": "B" }
      ]
     },
  ],
  "dpads": [
    {
      "dpad": "up",
      "targetDpads": [ { "dpad": "Up" } ]
    },
    {
      "dpad": "right",
      "targetDpads": [ { "dpad": "Right" } ]
    },
    {
      "dpad": "down",
      "targetDpads": [ { "dpad": "Down" } ]
    },
    {
      "dpad": "left",
      "targetDpads": [ { "dpad": "Left" } ]
    }
  ],
  "axes": [
    {
      "axis": 0,
      "config": {
        "inverted": 0
      },
      "targetAxes": [ { "axis": "LeftThumbX", "deadzone": 0, "antiDeadzone": 0, "linearity": -30, "low": -110, "high": 110 } ]
    },
    {
      "axis": 2,
      "config": {
        "inverted": 1
      },
      "targetSliders": [ { "slider": "RightTrigger" } ]
    },
    {
      "axis": 1,
      "config": {
        "inverted": 1
      },
      "targetSliders": [ { "slider": "LeftTrigger" } ]
    }
  ]
}




Great little program by the way Nugarp. Once I've got my head around it looks like it can replace x360ce in a lot of similar user cases.
 

« Last Edit: Yesterday at 12:03:09 pm by Eckers569 »

nugarp

  • Trade Count: (0)
  • Full Member
  • ***
  • Offline Offline
  • Posts: 300
  • Last login:November 09, 2025, 11:22:06 pm
  • I want to build my own arcade controls!
Re: Wheel2XInput, designed for mapping wheel and wheel accessories to XInput
« Reply #42 on: November 09, 2025, 11:22:06 pm »
Great little program by the way Nugarp. Once I've got my head around it looks like it can replace x360ce in a lot of similar user cases.

Cheers. The way you have done it is correct, as you noticed :).

I have a 1.6 beta that will send ffb or rumble to multiple devices, so if anyone needs that, find me on discord. It should also support hotswapping of the config.
Wheel2XInput | HDRecoil | LeaderLamps | NetLauncher | Discord | Youtube