USB Encoder Mapping
-
I think I'm making some progress, I came across another thread using jslisten to run a script on button press. I think combining this with dedicating the "1 button controller" as P4 always I should be able to create a workaround. Where do I find the RetroArch exit script so I can use it in my script? If this works I'll post the entire solution in one reply.
-
@bpm009 said in USB Encoder Mapping:
Where do I find the RetroArch exit script so I can use it in my script? If this works I'll post the entire solution in one reply.
Look in the topic that I linked.
-
I see that the script has to be created. In the topic they require a "Pause" command which looks to be "Pause_Toggle". What is the command for "Exit Emulator"?
-
Just as a test I also tried the setup you mentioned in the linked post and I also was unable to get P to pause the game. I did check with systemctl that the service was running on startup.
-
@bpm009 said in USB Encoder Mapping:
I see that the script has to be created. In the topic they require a "Pause" command which looks to be "Pause_Toggle". What is the command for "Exit Emulator"?
The command is
QUIT
(full list of commands is here).Just as a test I also tried the setup you mentioned in the linked post and I also was unable to get P to pause the game
Does it work if you run the script manually ?
-
Run the pause script manually? I know that I can return to emulation station through the terminal but can I start a game in an emulator, enter the terminal to run the script and return back to the game? If so I'm not sure on the process sorry. I'm willing to give it a shot if I can find out how.
-
-
Ok, using SSH I ran the script and it did not send a pause command to the game running.
Just to clarify, I went into the SSH terminal to the directory and entered ./pause-ra.sh which I believe is the correct method.
I used the code you explained in the other post shown below for the pause-ra.sh script.
#!/bin/bash echo -n "PAUSE_TOGGLE" | nc -d -u -w1 127.0.0.1 55355
-
@bpm009 OK, did you modify the
retroarch.cfg
file to enable network input, like explained in the post ? -
Yes, I added the following line to the end of the retroarch.cfg file.
network_cmd_enable = "true"
-
@bpm009 said in USB Encoder Mapping:
#!/bin/bash
echo -n "PAUSE_TOGGLE" | nc -d -u -w1 127.0.0.1 55355Modify the script to
#!/bin/bash echo -n "PAUSE_TOGGLE" | nc -u -w1 127.0.0.1 55355
I think I added an extra parameter that doesn't do what it should.
-
Still no luck when running the script directly.
-
Works for me - are you sure you're running a RetroArch emulator ? What game are you starting and what emulator appears in the launch command message ?
-
Not 100% sure.I am running super mario kart and the SNES9X emulator.
-
When you start the game, there's the launch command 'splash', displaying the game and the emulator run:
What does it say when you start yours ?
-
Mine says Super Mario Kart (USA) lr-snes9x2010.
-
Then it's using
lr-snes9x2010
as emulator, which is a RetroArch core. I don't understand why it's not working - you can try adding the RetroArch network input config to\\retropie\configs\snes\retroarch.cfg
, just in case you saved the configuration from the RGUI. -
Ok, good to know. I added the network input config to the snes config file. That still shouldn't have mattered when running the pause-ra.sh script in the terminal because isn't that simply running the PAUSE command the same as if I were running it in the game?
Edit: Ignore what I said above, that did the trick, I must have edited some configuration through the RGUI as you mentioned. You are awesome mitu. Can confirm everything from running in the terminal to pressing the P key does what it should do.
-
Now for my usecase I need to find a way to replace KEY_P 1 with a controller button that I want to have linked to a dedicated P4 or P5 (if possible) position. If I assigned the KEY_P to say "button 11" which no other controller of mine has, that should work right?
-
It should work, though you'll have to find out the event that triggers that. To find out the the right event, you need to:
- get the event device for the controller. Run
cat /proc/bus/input/devices
and note the/dev/input/eventX
device of the controller you want to use. Let's say is/dev/input/event2
. - run
thd --dump /dev/input/event2
from the terminal. Press the button and the event shold be shown on the screen:
thd --dump /dev/input/event2 EV_KEY BTN_B 1 /dev/input/event2 # BTN_B 1 command
Press
Ctrl+C
to stop.
The event name is shown on the 2nd (commented) line -BTN_B
, since I pressed theB
button on my gamepad. Replace theKEY_P
with the correspondingBTN_
event and it should work. Make sure to restart the service after re-configuration (sudo systemctl restart triggerhappy
). - get the event device for the controller. Run
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.