Recommended joystick-to-keyboard mapping software?

Avatar image for sweetz
sweetz

1286

Forum Posts

32

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

#1  Edited By sweetz

So I've been on a kick playing through the Wing Commander series (up to WC3 now), and the one thing that sucks about these games is that they don't have remappable controls. I have a Thrustmaster T.16000m flight stick and while Thrustmaster does have their own mapping software (called TARGET) it's ridiculously over-complex for the kind of simple button-to-keyboard key mapping I need.

To that end, I've been using JoyToKey, which is is nice and easy to use - but it has one problem: it doesn't stop the joystick buttons acting as normal joystick buttons in addition to the mapped keyboard key. This is a problem because the Wing Commander games have certain actions that are hardcoded to button 2 (i.e. if you hold it down and move the stick right or left it acts as a roll, press it at the same time as the trigger and it fires a missile). I don't want these actions to happen on button 2 because I've mapped them to other dedicated buttons, I want button 2 to only work as the keyboard key I assign it to and not still work as "button 2" as far as the game sees it.

I used to have a Logitech joystick and Logitech's profiler software does work that way, but unfortunately it can only be used with Logitech sticks.

There are a bunch of other joystick mapping utilities out there, so I'm kind of at a loss for where to start and don't want to waste time messing with a bunch of them. Doesn't anyone know a particular utility that will do what I want as far as making the joystick button only work as a keyboard key and stop it from being detected as a joystick button by the game.

Avatar image for azhp
AzHP

230

Forum Posts

30

Wiki Points

0

Followers

Reviews: 0

User Lists: 5

#2  Edited By AzHP

I believe what you're asking for is impossible, or at least only possible if the joystick driver itself is intercepting the input and preventing it from being interpreted by the operating system. The reason the Logitech program was able to work is because it is operating at the driver level. Any other program will be receiving the input at the same time any other program in the operating system would receive it. It's just "listening," not "intercepting" if that makes sense. I know that's not the answer you want to hear, but it's unlikely a solution exists unless you can rewrite the driver for your gamepad. Your best bet is to figure out how to configure TARGET to do what you want.

Avatar image for sweetz
sweetz

1286

Forum Posts

32

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

#3  Edited By sweetz

Intercepting wouldn't need to happen at the driver level, it would just need to happen at the DirectInput/XInput level.

Truth be told TARGET isn't that hard to use, but as far as I can tell, it doesn't have basic "run in the background, automatically apply profile" functionality. It has to be manually run every time and go through a "boot" sequence where it loads the profile script. It's a pain for the simple thing I want it for.

Avatar image for bollard
Bollard

8298

Forum Posts

118

Wiki Points

0

Followers

Reviews: 3

User Lists: 12

If you really want to stop a game taking predefined inputs from a joystick that you can't just remove the mapping for in the game you actually need something that intercepts the input before it reaches the game. The only thing I can think of that might get you there is AutoHotkey. I don't even know if it has support for peripherals, all I know is it can take the input from a key on the keyboard and make the game think it's something else/a combination of keys instead. It uses a basic scripting language that is a little fiddly but doesn't require programming knowledge.

Also, see this: http://www.autohotkey.com/docs/misc/RemapJoystick.htm

Avatar image for sweetz
sweetz

1286

Forum Posts

32

Wiki Points

0

Followers

Reviews: 0

User Lists: 0

So I looked into Pinnacle Game Profiler, since that seems to be popular, and it specifically has a function to do this - block a game with native joystick support from reading a button. It sticks a DirectInput wrapper file in the game directory to intercept the calls.

Unfortunately, it doesn't seem to work with Wing Commander 3 or Privateer 2 (I'm playing the Win95 native versions of both). I suspect that the DirectX calls they're using are too ancient for the DX8+ era wrapper that Pinnacle Game Profiler uses. I tested it with a more modern game and it did work as intended. Looks like I might be out of options.