Sony Access Controller (using HID Remapper v3) E1-E4 ports for joysticks

Hello all,

Looking for help with the brilliant HID Remapper v3. My basic code is here: Dropbox JSON link

I need help for a Disabled lady I’m helping. She’d like to plug a TRRS joystick into E4, and have it act as WASD, or other keys. She may also like to have it act as the mouse in a separate JSON. Any help would be much appreciated.

Barrie
(OneSwitch.org.uk)

I think we have configurations for that in the Examples tab, “analog stick cardinal directions to D-pad” and “expressions: gamepad-to-mouse adapter”.

Thanks Jacek. I have been able to get the Sony Access Controller E4 port outputting the likes of WASD. I next tried to get E1 with a TRRS analogue joystick plugged in to act as the mouse. No luck. Just kept jamming the mouse pointer down the bottom of the screen. I find tinkering with mouse output difficult, as if you get it wrong, the system is very hard to reset, when as soon as you connect the HID Remapper, you lose control of the pointer.

Is the mouse clashing with the SAC main joystick also acting as the mouse, do you think?

WIP 00 SAC (E1 mouse E4 WASD).json (20.4 KB)

In expressions 1 and 2 you have 0xffff0030 and 0xffff0031, which is data from the built-in stick, use 0xffff0032 and 0xffff0033 for the stick plugged into E1. But apart from that it seems to be working for me.

There’s also one more mapping that keeps pressing A that was probably not intended, but E4->WASD and stick->mouse work (E1 or built-in, depending on the expressions).

And I know it’s annoying when it hijacks your mouse. You can try this trick (in your case don’t enable unmapped inputs passthrough on the trick layer of course):

1 Like

Great idea with the Caps Lock light. My keyboard doesn’t even have one, but it still works. Thank you. I’ve attached the JSON here I’ve worked on (at SpecialEffect) to give individual control over five joysticks set as individual buttons.

Hope it’s useful for some people.

WIP-5-Sticks.json (27.2 KB)

This is a revised version of that code for console use, aimed at PS4 / PS5 use.

I’d like to boost the accessibility of the file a little further, but I think I need help again, please. I have 2 registers and 3 expressions left free. Would it be possible to:

  1. Have an option for the E4 port to read a joystick, and convert it to behave as R2 analogue when pushed progressively North, and L2 analogue when pulled progressively South? This would be great for driving games. I can’t quite get my head around how to do it.

  2. Is there enough space left to give the E1 joystick (currently right-stick) a boost and also, a way to expand the deadzone where nothing happens?

Thanks again for creating these brilliant tools.

WIP-5-Sticks-CONSOLE.json (24.9 KB)

You can do the throttle like this. Map Register 1 to L2 axis and Register 2 to R2 axis. (Probably best to also map them to L2/R2 buttons, might not be required if you’re plugging it into something like FGC2.)

0xffff0039 input_state_scaled
128 sub
2 mul
0 255 clamp
dup 10 gt mul /* deadzone */
1 store

0xffff0039 input_state_scaled
128 sub
-2 mul
0 255 clamp
dup 10 gt mul /* deadzone */
2 store

And you can augment the E1 stick with an expression like this:

0xffff0032 input_state_scaled /* E1 X */
128 sub
dup abs 10 gt mul /* deadzone */
1.1 mul /* sensitivity */
128 add
0 255 clamp
3 store

0xffff0033 input_state_scaled /* E1 Y */
128 sub
dup abs 10 gt mul /* deadzone */
1.1 mul /* sensitivity */
128 add
0 255 clamp
4 store

And map Register 3 to Right stick X and Register 4 to Right stick Y. (They’re used as temporary variables in other expressions, but as long as you put all of this in an expression after that, it will not be a problem, though it makes it more difficult to keep track of which register is used for what.)

The deadzones are the naive kind where it’s doesn’t output values inside the deadzone. It could be improved.

1 Like