I Created A Mod/software To Directly Control In Game Trains Using A Joystick (no Raildriver)

Discussion in 'TSW General Discussion' started by liah#5302, Apr 3, 2025.

  1. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    Yes that's what I tend to do as well because it can be hard to feel without a physical detent; it should be as simple as changing your direct_control/api_control/sync_control input value to have a different minimum value; let's say emergency brake is 0.0 and maximum brake is 0.1 then you can set the following input value constraints:

    "input_value": {
    "min": 0.1,
    "max": 1.0
    }

    That way it will never drop to emergency
     
  2. themkall#6732

    themkall#6732 New Member

    Joined:
    Nov 17, 2024
    Messages:
    8
    Likes Received:
    0
    you can set the min value if you are using direct control with a joystick to 0.09. that stops it from going into the emergency brake detent
     
  3. themkall#6732

    themkall#6732 New Member

    Joined:
    Nov 17, 2024
    Messages:
    8
    Likes Received:
    0
    perfect! both worked flawlessly, and thank you for making me understand the logic of the steps! this makes it easier for future profiles. last question. is there any way to for the app to automatically detect each train or do i have to to switch profiles everytime?
     
  4. themkall#6732

    themkall#6732 New Member

    Joined:
    Nov 17, 2024
    Messages:
    8
    Likes Received:
    0
    i will ask for your help once more unfortunatly.... I dont know if you are familliar with the br612 diesel locomotive throttle, which has four steps, idle, decrease, hold and increase. unfortunatly on the last step the increase which requires you to hold the throttle there, even if you max out the joystick the throttle jumps momenteraly on the increase step and then it goes back to hold. do you have any idea how to make this work?
     
  5. themkall#6732

    themkall#6732 New Member

    Joined:
    Nov 17, 2024
    Messages:
    8
    Likes Received:
    0
    found it! for anyone wondering, you put max value +0.5 and min value -0.5.
     
  6. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    Just replying; yes you can enable auto selection by adding the following properties to your profile
    ```
    "auto_select": true,
    "rail_class_information": [
    {
    "class_name": "{CLASSNAME}"
    }
    ```
    You can find the actual class name from the cab debugger at the top where it says Currently Driving; you can just copy that value - then you can keep the profile selector on "Auto-Detect" and it will just switch profiles as needed

    As for the hold thing you might need multiple conditional assignments to make this fully work;

    ```
    {
    "assignments": [
    {
    "conditions": [{"control": "MyControl", "operator": "lte", "value": 0.9}],
    "type": "direct_control",
    "controls": "Throttle",
    "input_value": {
    "min": 0,
    "max": 0.9
    }
    },
    {
    "conditions": [{"control": "MyControl", "operator": "gt", "value": 0.9}],
    "type": "momentary",
    "threshold": 0.91,
    "action_activate": {
    "controls": "Throttle",
    "value": 1.0,
    "hold": true
    },
    "action_deactivate": {
    "controls": "Throttle",
    "value": 0.9
    }
    }
    ]
    }
    ```
    In the above example we want the normal direct control to apply from 0-0.9 for the throttle; for the second assignment which applies above 0.9 we have a momentary action which holds the direct control value (the hold here means the program will essentially keep sending the value to hold it down) until you deactivate in which case it will re-set back to 0.9 and the normal direct control will take over again. This is getting into some more complex profiles.
     
  7. Emmy_MAN

    Emmy_MAN Well-Known Member

    Joined:
    Apr 9, 2022
    Messages:
    537
    Likes Received:
    1,242
    Hi liam#5302

    I have a question for you.

    Do you happen to have the TSC-X controller too?
    Because if you use it yourself, you could create profiles for, let's say, German locomotives and trains, and then add them to your programme or offer them as separate downloads.

    This would make it easier for many users who have the TSC-X controller to use your programme.
     
  8. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    Sadly; I don't - that's why in the explore tab all the profiles are for the TCA Quadrant because that's the only controller I have; I'm happy to take contributions though!
     
  9. LCYCowboy

    LCYCowboy Active Member

    Joined:
    Aug 23, 2021
    Messages:
    140
    Likes Received:
    151
    Hi Liam,

    Just moved across to your fantastic software after not being able to drive certain trains using my TSC-X using CobraOne's equally fantastic software (certain Locos aren't coded for Rail Driver is seems).

    I have been playing all afternoon and have managed to code the Class 802 with the correct notches. Brilliant.

    A quick question. I am trying to code the train brakes which use the [ and ] keys, but can't work out what the text for these is. I tried "LeftSquareBracket" and "LeftAngleBracke" but neither seem to work. Do you have a list of the keyboard commands?
     
  10. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    Glad it works well for you! For normal characters you should just be able to enter the actual character; so `"keys": "]"`
     
  11. LCYCowboy

    LCYCowboy Active Member

    Joined:
    Aug 23, 2021
    Messages:
    140
    Likes Received:
    151
    Fantastic. That works. Thanks so much for the quick answer. Now I just need to work out how to program the German brakes. I have managed to put all the notches in, but they have a setting where you push forward from "running" which also overpressures the brake reservoir.
     
  12. LCYCowboy

    LCYCowboy Active Member

    Joined:
    Aug 23, 2021
    Messages:
    140
    Likes Received:
    151
    I seem to have run into a problem. With your mod installed, when I press CTR-R to arm the AFB (cruise control) I get a crash to desktop.

    This is the error code:

    Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x00007fffe24c3ac8

    UE4SS
    UE4SS
    TrainSimWorld
    TrainSimWorld
    TrainSimWorld
    TrainSimWorld
    TrainSimWorld
    TrainSimWorld
    TrainSimWorld
    TrainSimWorld
    TrainSimWorld
    TrainSimWorld
    TrainSimWorld
    TrainSimWorld
    TrainSimWorld
    TrainSimWorld
    TrainSimWorld
    TrainSimWorld
    TrainSimWorld
    kernel32
    ntdll

    I removed the ue4ss_tsw_controller_mod folder and it fixed it.

    Is the dwmapi.dll also part of the mod (I didn't remove this and it didn't seem to cause any issues)

    Seems I can't use your mod and use AFB
     
  13. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    Hm ; I've never ran into any issues - which loco is this?
     
  14. LCYCowboy

    LCYCowboy Active Member

    Joined:
    Aug 23, 2021
    Messages:
    140
    Likes Received:
    151
    I have done some more testing. It is the standard BR101 (not the expert one).

    If I turn on/off the AFB using the switch in the cab, it all works fine. It is only when I actually press CTR-R on the keyboard that it crashes???
     
  15. LCYCowboy

    LCYCowboy Active Member

    Joined:
    Aug 23, 2021
    Messages:
    140
    Likes Received:
    151
    More testing, CTR-R causes a CTD in all trains (not just German ones). If I remove your app it works. If I select the cruise control in cab using the virtual switch it works. How strange

    I programmed a button to mimic CTR-R and it also causes a CTD
     
    Last edited: Feb 19, 2026
  16. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    hm alright I will need to check why those shortcuts create problems - I usually turn AFB on from the display so I guess that's why I haven't ran into it.. very odd though
     
    • Like Like x 1
  17. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    It looks like it's because of a UE4SS setting; you can open the ue4ss_tsw_controller_mod/UE4SS-Settings.ini file and set the EnableHotReloadSystem value to 0 instead of 1;

    I'll disable it by default in the next release since it's not actually necessary to be shipped with hot reload enabled
     
    • Like Like x 2
  18. LCYCowboy

    LCYCowboy Active Member

    Joined:
    Aug 23, 2021
    Messages:
    140
    Likes Received:
    151
    Thanks for the info. Do you put a post out when you have updated your software?
     
  19. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    it was already updated - when you open the application you should get a banner saying there is an update
     
  20. LCYCowboy

    LCYCowboy Active Member

    Joined:
    Aug 23, 2021
    Messages:
    140
    Likes Received:
    151
    Thanks Liam,

    Just spotted that. All fixed now. Just one more question (Promise). I am trying to use the hat switch on my T1600 joystick to increase and decrease the cruise control. The hat appears as just one button in the calibration settings and gives values of 1 to 8 depending on which direction it is moved. How do I code this. Is it using the threshold value?

    Thanks again,

    Neil
     
  21. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    Hmm I think it's a little clunky right now; you can do it with a momentary threshold of whatever value your hat is and adding 2 conditions where it's like gte 1 and lte 1; so yea very clunky (posted an example below)

    I'll have to look at making hats better supported; probably by changing the momentary and toggle actions to allow the threshold to be an exact value as opposed to a greater than or equal to value - i'll keep you posted


    Example here:
    https://tsw-controller-app.vercel.a...gICBdCiAgICAgICAgfQogICAgICBdCiAgICB9CiAgXQp9
     
  22. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    I added a new option for momentary and toggle called match which defaults to exceeds but can be set to equals so that the threshold has to be an equal match; this should work with your hat switch because then you can just have 8 different assignments each with an equals matching threshold of 1,2,3,4...8 and a corresponding action

    little example:
    https://tsw-controller-app.vercel.a...zIgogICAgICAgIH0KICAgICAgXQogICAgfQogIF0KfQ==
     
  23. LCYCowboy

    LCYCowboy Active Member

    Joined:
    Aug 23, 2021
    Messages:
    140
    Likes Received:
    151
    I just tried and can't seem to get it to work.

    upload_2026-2-27_13-8-14.png

    The top assignment with a value of 1 works, the bottom with a value of 4 (which is what pulling the hat down in the calibration window shows) does nothing.
     

    Attached Files:

    Last edited: Feb 27, 2026
  24. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    You need to combine the assignment lists; you can't define the same control twice since it will override each other (reduced example below)

    {
    "name": "Hat",
    "assignments": [
    { "type": "momentary", "threhsold": 1 },
    { "type": "momentary", "threhsold": 4 }
    ]
    }
     
  25. LCYCowboy

    LCYCowboy Active Member

    Joined:
    Aug 23, 2021
    Messages:
    140
    Likes Received:
    151
    Thanks so much, works perfectly now. Never done any coding in my life, so thanks for all the help and for such an amazing program.
     
  26. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    No worries at all! There is also the online profile builder you can use (https://tsw-controller-app.vercel.app/profile-builder) [but I find the code easier to reason about personally]
     
  27. Tigert1966

    Tigert1966 Well-Known Member

    Joined:
    Aug 18, 2020
    Messages:
    2,399
    Likes Received:
    4,237
    Hi Liam, just dropped into the thread to say thanks for the mod.

    I have a pretty nice TS Controllers setup, but I don't have a PBC, So I got a Boeing Throttle Quadrant and set up your mod and had everything I needed working within 15 minutes.

    Just need to modify the config a bit for a few controls and my setup will be exactly as I want it.
     
  28. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    That's good to hear!
     
  29. TF_Strab

    TF_Strab New Member

    Joined:
    Nov 30, 2024
    Messages:
    2
    Likes Received:
    0
    Hi Liam, I recently switched to CachyOS and wanted to try the Linux version of your controller app, after already using it on Windows. Sadly I ran into a bit of a problem. It simply refuses to launch when I try to run the binary and the terminal gives me this message:

    Version 1.10.0
    time=2026-03-12T23:33:52.044+01:00 level=ERROR msg="[Config_ProgramConfig] could not read config file" filepath=/home/hastur/.config/tswcontrollerapp/config/program.json
    Overriding existing handler for signal 10. Set JSC_SIGNAL_FOR_GC if you want WebKit to use a different signal
    []fs.DirEntry(nil)
    time=2026-03-12T23:33:52.171+01:00 level=INFO msg="[App] registering SDL map and calibration for controller" name="Infinite Railtech: Model #01" usb_id=2341:8036
    time=2026-03-12T23:33:52.171+01:00 level=INFO msg="[App] registering profile" profile=77ba13e8a9a516b145d05c539053e71ed1f2c67e !BADKEY="Infinite Railtech: Model #01 (Budd M3)"
    []fs.DirEntry(nil)
    []fs.DirEntry(nil)
    time=2026-03-12T23:33:52.171+01:00 level=ERROR msg="[App] encountered error while reading configuration files" error="could not read calibration directory calibration (&{%!e(string=open) %!e(string=calibration) %!e(syscall.Errno=2)})"
    time=2026-03-12T23:33:52.171+01:00 level=ERROR msg="[App] encountered error while reading configuration files" error="could not read SDL mappings directory sdl_mappings (&{%!e(string=open) %!e(string=sdl_mappings) %!e(syscall.Errno=2)})"
    time=2026-03-12T23:33:52.171+01:00 level=ERROR msg="[App] encountered error while reading configuration files" error="could not read profiles directory profiles (&{%!e(string=open) %!e(string=profiles) %!e(syscall.Errno=2)})"
    time=2026-03-12T23:33:52.171+01:00 level=INFO msg="[SDLMgr_Joystick:: Open] opening joystick" joystick=10F5:7005 name=0x8c76c0
    time=2026-03-12T23:33:52.171+01:00 level=DEBUG msg="[ControllerManager.Attach] Received SDL2 event" event="&{Type:1541 Timestamp:41 Which:0}"
    Gdk-Message: 23:33:52.452: Error 71 (Protokollfehler) dispatching to Wayland display.


    My system:
    Kernel version: 6.19.6-2-cachyos (64-bit); KDE Plasma 6.6.2; i5-10400 CPU; 33GiB RAM; GPU: RTX 3060
     
  30. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25

    hm are you using sdl3 or sdl2? I think someone else previously posted it's advised on Arch to use SDL3 with sdl2-compat
    sudo pacman -S sdl3 sdl2-compat

    If that doesn't solve it can you check if it works when forcing X11?
    export GDK_BACKEND=x11
     
    • Like Like x 1
  31. TF_Strab

    TF_Strab New Member

    Joined:
    Nov 30, 2024
    Messages:
    2
    Likes Received:
    0
    As far as I can tell Cachy comes with SDL3 with SDL2-compat right out of the box. Running sudo pacman -S sdl3 sdl2-compat anyway gives me the warning that both installed versions are up to date:
    Warnung: sdl3-3.4.2-1.1 ist aktuell -- Reinstalliere
    Warnung: sdl2-compat-2.32.64-1.1 ist aktuell -- Reinstalliere


    Trying to force X11 sadly did not have a positive effect.
     
    Last edited: Mar 14, 2026
  32. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    Can you have a look at this CachyOS forum post? (https://discuss.cachyos.org/t/gnuca...col-error-dispatching-to-wayland-display/4669)

    -- Can you try running it with WEBKIT_DISABLE_COMPOSITING_MODE=1 as they mention in the post?
     
  33. VGK

    VGK Member

    Joined:
    Aug 13, 2021
    Messages:
    53
    Likes Received:
    41

    Hey Neil, I have been trying to get Liam's software to work with my TSC-X controller for days now as I believe like you it will enable more locos to work unlike the TSW/RailDriver/Cobra Ones limitations. Im no coder or IT specialist; however, I have in the past successfully used a Raildriver/TSC-X & various elgato keyboards to control TSW6.

    What I have done:
    Steam launch Options created -DX12 -HTTPAPI
    Using latest TSW Controller Utility from Github
    Install game Mod file: Steam/Steamapps/common/TSW6/WindowsNoEditor/TS2Prototype/Binaries/Win63/TrainSimWorld.exe
    Calibrated TSC-X inside Controller Utility and saved the .json file
    Can see the controller moving under Windows Game Controller / Sim Workshop
    Have installed HidHide and unchecked EasyFox.com.cn Sim Workshop
    Controller Utility set to Direct Control
    Created a profile for the BR Class 87 all buttons mapped and Throttle lever (I think!!!)

    However, when I run the game nothing on my TSC-X works.
    Is it possible to produce a step-by-step guide of how you managed to get yours working (no matter how small or simple a step might look)
    Once I understand how this works, I intend to create profiles for all UK BR loco stock and make the profiles available.
    Thanks
    Simon
     
    • Like Like x 1
  34. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    Does your cab debugger work? Are you selecting the right profile? Can you share the profile - I can verify it for you if there's anything up with it
     
  35. VGK

    VGK Member

    Joined:
    Aug 13, 2021
    Messages:
    53
    Likes Received:
    41
    Hi Liam
    I am away from home for the next week, I’ll share the profile on my return.
     
  36. LCYCowboy

    LCYCowboy Active Member

    Joined:
    Aug 23, 2021
    Messages:
    140
    Likes Received:
    151
    Hi Liam,

    I have a bit of a tricky one for you. I am trying to program the Class 66 freight loco using my TSC-X. The automatic brake is a lever in the cab which is normally in the central position (which has a hold function) and you press it forward to set the target for the desired brake pressure, and pull it back to decrease that target. I the lever in the cab has a range from -1 through 0 to 1. Between 0 and 0.5 (or -0.5 the other way) the brake remains in hold, and between 0.5 and 1 (or -0.5 and -1 the other way) it either applies or releases. The problem is that the minute you stop moving the lever it springs back to 0. So If I move my TSC-X lever forward to input 0.75 the minute the TSC-X lever stops moving, the in cab lever springs back to 0. I can't work out how to set it up so that the lever in the cab mimics what my TSC-X lever is doing without it wanting to spring back to 0
     
  37. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    You can do it with a custom linear assignment (see example below);
    a little expl.

    - Setting a neutral value on a linear assignment reinterprets your controller input to make it a centered axis; so instead of it being 0 -> 1 ; it's -1 -> 0 -> 1
    - Then you can use it to set a reverse threshold so - when the lower value "exceeds" -0.8 (so less than -0.8) it will activate a hold action for AutoBrake
    - For the other side when it exceeds 0.8 it will activate a hold action for AutoBrake on the other end
    - The deactivation action resets it back to 0 without holding since it's the neutral pos

    {
    "type": "linear",
    "neutral": 0.5,
    "thresholds": [
    {
    "value": -0.8,
    "action_activate": {
    "controls": "{SIDE}_AutoBrake (Irregular Lever)",
    "value": -1.0,
    "hold": true
    },
    "action_deactivate": {
    "controls": "{SIDE}_AutoBrake (Irregular Lever)",
    "value": 0.0,
    "hold": false
    }
    },
    {
    "value": 0.8,
    "action_activate": {
    "controls": "{SIDE}_AutoBrake (Irregular Lever)",
    "value": 1.0,
    "hold": true
    },
    "action_deactivate": {
    "controls": "{SIDE}_AutoBrake (Irregular Lever)",
    "value": 0.0,
    "hold": false
    }
    }
    ]
    }
     
  38. LCYCowboy

    LCYCowboy Active Member

    Joined:
    Aug 23, 2021
    Messages:
    140
    Likes Received:
    151
    Thanks so much for helping!

    I pasted your code in:

    upload_2026-3-28_18-10-32.png

    But I get this error:
    upload_2026-3-28_18-10-58.png

    I'm not the world's greatest coder, and am stumped.

    Thanks again!
     
  39. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    I think you're missing a } after the ]

    You can try replacing the whole Middle block with:
    {
    "name": "Middle",
    "assignments": [
    {
    "type": "linear",
    "neutral": 0.5,
    "thresholds": [
    {
    "value": -0.8,
    "action_activate": {
    "controls": "[SIDE]_AutoBrake (Irregular Lever)",
    "value": -1.0,
    "hold": true
    },
    "action_deactivate": {
    "controls": "[SIDE]_AutoBrake (Irregular Lever)",
    "value": 0.0,
    "hold": false
    }
    },
    {
    "value": 0.8,
    "action_activate": {
    "controls": "[SIDE]_AutoBrake (Irregular Lever)",
    "value": 1.0,
    "hold": true
    },
    "action_deactivate": {
    "controls": "[SIDE]_AutoBrake (Irregular Lever)",
    "value": 0.0,
    "hold": false
    }
    }
    ]
    }
    ]
    }




    It might also be easier for you to open your existing profile in the online visual profile editor and then just mimic the same configuration
     
  40. LCYCowboy

    LCYCowboy Active Member

    Joined:
    Aug 23, 2021
    Messages:
    140
    Likes Received:
    151
    Thanks so much. All sorted now.
     
  41. Bekns

    Bekns Active Member

    Joined:
    Jan 20, 2019
    Messages:
    193
    Likes Received:
    69
    Hi liam

    I am having this same issue with dual Logitech Flight Quadrants, one is for the throttle and reverser and the other is for the brake stand. I most probably dont understand properly the behind the scenes stuff but couldnt the controller guid's be used to differentiate them.

    Also thanks for the headsup about HidHide, I have a few games I play occasionly and some developers dont seem to understand that you might not want to use controllers that are connected (looking at you Ubisoft).

    Thanks
    Bekns
     
  42. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    Hm they do get mapped to the same type of controller so it can use the calibration data but you should be able to select a different profile for each controller if you intended to split them out - you would most likely have to keep the same control names for each though and just map those correctly for throttle/reverser
     
  43. plon

    plon New Member

    Joined:
    Tuesday
    Messages:
    1
    Likes Received:
    0
    Hi liah#5302 Linux user here.
    I downloaded linux binary file, I had the same problem as previous linux user, solved with command line export GDK_BACKEND=x11 as you suggested.
    Well Sort of...
    The app is launching but UI is totally missing (blank windows). UI is here as I can click randomly and see some menu choices appearing...
    Any Suggestion ?
    I'm using Garuda Linux (ARCH based).
    Anyway thanks for you effort to bring HOTAS & other controller in TSW :)
     
    Last edited: May 20, 2026 at 7:38 AM
  44. Bekns

    Bekns Active Member

    Joined:
    Jan 20, 2019
    Messages:
    193
    Likes Received:
    69
    Yep I can see what you are suggesting and will have a little play with the profile builder and see what I can come up with, I was ideally hoping I could setup a generic system that would work well with most trains, this would have some compromises of course but Im trying to avoid spending time setting up individual trains as this is the avenue I have gone down with TSC and sometimes you just want to drive and I think TSW is probably more suited to a generic type profile.
     
  45. Bekns

    Bekns Active Member

    Joined:
    Jan 20, 2019
    Messages:
    193
    Likes Received:
    69
    Just to update - this has worked perfectly so I am able to use both controllers using separate profiles, thank you.

    Couple questions, is there an option to reverse the axis at all and is there a way to reduce sensitivity, im getting a bit of jitter on one of my axis.

    Great piece of software and cant thankyou enough for making it available for our use

    EDIT: nevermind the reverse question as I have found it in your documentation
     
    Last edited: May 21, 2026 at 12:17 PM
  46. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    Hm do you have any logs at all?
     
  47. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    I guess it's the difference between flexibility and simplicity; this software is mostly for supporting pretty complex set-ups but as you said it comes with the downside of having more set-up;

    you can achieve a lot by mapping most controls to standardized names and keybindings if that suits you and then just extended where necessary; but I do get what you mean.

    The hard thing is that if you just 1:1 map all throttle's to the cabs they can feel kinda wonky depending on the range of the in-game cab
     
  48. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    Just to reply here about the jitter; are you talking about when using it for direct control levers like master controllers where the in game cab has detents/notches? For those kind of set-ups it is best to actually define the steps if you can so that it properly jumps between each notch/detent and then runs free range where free range is allowed (like a combination master controller)
     
  49. Bekns

    Bekns Active Member

    Joined:
    Jan 20, 2019
    Messages:
    193
    Likes Received:
    69
    Yeah that would solve some of the issue as you would be sending the notch values into the game but ultimately the jitter comes from noisy pots, my quadrants are getting on a bit and it might be time to replace them. I was hoping there might be a smoothing function in your program that I wasnt seeing that would reduce the noise going through to TSW.

    Having used your program more now Im pretty impressed with how easy it is to get assignments to the levers using the mapping in the cab debugger which for the most part is all I need.

    I have worked around the dual Quadrant setup by mapping one of them to a virtual device using vJoy and Joystick Gremlin but I can only do this once as having 2 vJoy devices comes up with the same issue, my button box uses an Arduino Mega which translates into Windows as 2 devices so it has the same issue also so for the time being I use Cobra's software for the buttons and yours for the levers, if you felt it worth your time it would be great if devices could be detected by GUID as well, image below shows how VID and PID are identical but GUID is different.

    upload_2026-5-23_14-0-22.png

    Once again this is a fantastic piece of software
     
  50. liah#5302

    liah#5302 Member

    Joined:
    Jan 11, 2025
    Messages:
    47
    Likes Received:
    25
    I think it would largely solve it because it then pins it to the notches so that the jitter won't appear in the game and for the free range areas the jitter should be less of an issue I guess? The only thing I'm concerned about with smoothing is small movement accuracy - but I can have a look at adding a configurable setting.

    I don't think I fully understand the dual quadrant problem? Because selecting different profiles should work no? Were you running into something specific?
     

Share This Page