Jump to content

[App] Pad Throttle. Makes Joypads (Eg Xbox Controller) Work Better As A Left-Hand Device


6 replies to this topic

#1 evilC

    Member

  • PipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 1,298 posts
  • LocationLondon, UK

Posted 18 July 2013 - 04:24 PM

Another one of my little apps to fix control issues with MWO!

Download

GitHub Page

This one is to address issues with using a joypad style analogue thumbstick as a "left hand" device (ie leg turning and throttle).

The problems are thus:

1) Analogue thumsticks such as those found on XBOX controllers and the Logitech G13 keyboard have a round aperture. Windows treats all game controllers as square, so joypad thumbsticks cannot reach the corners (ie full up and full left). It is thus impossible in MWO with such a joypad to go full speed and turn at all, or turn full rate at anything other than zero speed.

2) Analogue throttles in MWO are "Absolute".
ie the position of the stick is what speed you are going, not how much to accelerate or decelrate.
Some people do not like having to hold forwards all the time to move. This also exaggerates issue #1

This app aims to fix these issues.

You can run this app at the same time as any of my ADHD scripts such as Analog to Digital to make the left trigger on the XBOX controller do interesting stuff such as analog jumpjets.

You can NOT use this app at the same time as UJR

IMPORTANT NOTE:
You need to bind MWO to the VIRTUAL joystick, not the PHYSICAL one.
PAY ATTENTION to the readme about binding - ie to bind the stick in MWO, double click the bind throttle option in MWO and hit CTRL+ALT+Y to have the script waggle the virtual axis.
Repeat for the X axis as described.

==============================================

This app is currently in it's infancy, and does not even feature a UI yet.
You will need to edit a couple of lines in a text file to use this app for now.
You also need Autohotkey installed, there is no compiled EXE for now.

From the Readme:

Usage:
1) Install AutoHotkey - http://autohotkey.com
2) Install VJoy 2.x - http://vjoystick.sourceforge.net
If running windows 64-bit, you will need to enter "Test Mode" to install the Vjoy driver. VJoy handles this for you. It requires a reboot.
Once you have rebooted, you can use the vjoy app to configure the virtual stick. The default setting works with this app though.
3) Take the Lib Folder from the zip and drop it into your AutoHotkey folder. This should be C:\Program Files\AutoHotkey or C:\Program Files (x86)\AutoHotkey
If there is already a lib folder in there, do not worry.
You should end up with a bunch of stuff in C:\Program Files\AutoHotkey\Lib - VJoy_lib.ahk and some other files in a VJoyLib folder.
4) Extract the padthrottle.ahk somewhere and edit it - the first few lines define which joystick to use etc.
For an XBOX controller with recommended settings, you should only need to change the joystick ID line.
5) Run padthrottle.ahk. If it does not throw any errors, you should be good. Just go into Game controllers and preview the virtual stick.
Check that it works and that you can reach the corners (esp if not in relative mode)

Game binding:
To bind the virtual stick in your game, to avoid the game recognising the physical stick, bind like this:
Double click the bind option in the game for the x axis, and hit CTRL+ALT+X. This will waggle the virtual x axis a bit.
Repeat for the Y Axis, use CTRL+ALT+Y

MWO users:
For this to work, the setting cl_joystick_throttle_range must be 1.
1 is the default value, so either make sure there is no cl_joystick_throttle_range setting in your user cfg or make sure it is set to 1.
cl_joystick_throttle_range = 0 in your user.cfg will break this script!

#2 evilC

    Member

  • PipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 1,298 posts
  • LocationLondon, UK

Posted 18 July 2013 - 04:25 PM

Key:
! : Warning
* : Comment
= : Change / Fix
+ : Added feature

0.3 19th Jul 2013
+ You can now rotate inputs. Used to compensate for the fact that if you move your thumb left on an XBOX controller, you get more like up left.

0.2 19th July 2013
+ You can now specify a button to switch between relative and absolute throttle mode.
Very useful - Absolute is best for combat, but relative for long-distance travel
In absolute, push full up, click toggle button, then release stick to set hands-free full speed.

0.1 19th July 2013
* Initial release

Edited by evilC, 19 July 2013 - 09:21 AM.


#3 evilC

    Member

  • PipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 1,298 posts
  • LocationLondon, UK

Posted 18 July 2013 - 04:39 PM

As mentioned above, app is currently at a very early proof-of-concept stage.

Please feel free to try and let me know how it goes, what settings work best, ideas for improvements etc.

#4 evilC

    Member

  • PipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 1,298 posts
  • LocationLondon, UK

Posted 18 July 2013 - 05:42 PM

New version up, 0.2

You can now specify a button to switch between relative and absolute throttle mode.
Very useful - Absolute is best for combat, but relative for long-distance travel
In absolute, push full up, click toggle button, then release stick to set hands-free full speed.

Defaults to the left shoulder button on the XBOX pad

#5 Loc Nar

    Member

  • PipPipPipPipPipPipPipPip
  • 1,132 posts

Posted 18 July 2013 - 06:50 PM

Ok, after playing around again with 50ms pulses at varying delays, was having better luck with it and it was all in the technique I was using them (I didn't spend much time with it the first round). If running along and I just hit half thrust, yes it just slows and starts hopping. However if I begin with a full thrust to get off the ground, and *then modulate it down, it seems to work much better, especially if I'm jumping off a tall building/hill. Part of my lack of initial success is also using an awkwardly located twist pot to try to work this as opposed to a proper lever of sorts.

Shoulder button on xbox is an isometric analog button, and a good choice input for this type of control. My mod to make this work best might consist of replacing the binary switch in my pinky paddle lever on my stick with an isometric pad... hmmm.

On the subject of throttles, rather than using a relative analog setting I'm just using the numpad to set it until we make contact. That way I can still type in chat, otherwise having a normal throttle is just a set it and forget it control for me. Your relative workaround is a slick adaptation for a spring centering controller though; just too bad we can't type in chat while using analog throttle yet.

#6 evilC

    Member

  • PipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 1,298 posts
  • LocationLondon, UK

Posted 18 July 2013 - 07:49 PM

Yeah, after playing a couple of games, movement on a thumbstick did not quite seem to gel.
You get too much bleed (ie you try and move left but you move up a bit too accidentally) from one axis to another, especially as most analog sticks are not mounted in aligned to the thumb, they are mounted aligned to the controller - so you need to move your thumb in an un-intuitive way: a left-right movement of the thumb is not exact left and right on the thumbstick. Maybe the XBOX generation get it, but to me it is just poor controller design.
I am starting to think I might upgrade my TM Top Gun Afterburner with hall effect sensors. The setup of that throttle is about right (with the rudder rocker on the under side) but the pots are junk and it is unusable with MWO.

I dunno though. I may try and take advantage of the fact that the aperture on a controller is round, and rotate the axes around such that a left-right waggle of your thumb is actual left-right on the controller. That may make it work a lot better.

The maths for that is a bit beyond me though, I might have to call in help on that one.

#7 evilC

    Member

  • PipPipPipPipPipPipPipPip
  • Legendary Founder
  • Legendary Founder
  • 1,298 posts
  • LocationLondon, UK

Posted 19 July 2013 - 09:20 AM

It seems the maths for rotating an axis was not that beyond me. I understood the equation on wikipedia and managed to translate it to code.

New version up, 0.3
You can now rotate axes. Default setting should correct the axis misalignment on an XBOX controller.





3 user(s) are reading this topic

0 members, 3 guests, 0 anonymous users