Keyboard encoders — Ultimarc iPAC and mini-PAC, X-Arcade sticks — send keystrokes instead of joystick events. Recalbox ships the xarcade2jstick service, which converts them into virtual controllers so the frontend and the emulators see them as normal pads.
In recalbox.conf:
controllers.xarcade.enabled=1
Reboot. At startup, Recalbox first looks for an official X-Arcade stick; if it finds none, it walks the list of declared keyboard encoders (see below) and starts the service on the first one found.
If your encoder is not in the default list, you simply declare it by its device name.
Connect over SSH.
Find your encoder's exact name:
ls /dev/input/by-id
The name you want usually ends with -event-kbd. For example: usb-Ultimarc_IPAC_2_Ultimarc_IPAC_2_9-if01-event-kbd.
A single encoder may expose several devices: try them all. For instance,
usb-Cypress_I-PAC_Arcade_Control_Interface-event-kbdworks whileusb-Cypress_I-PAC_Arcade_Control_Interface-if01-event-kbddoes not.
Create an empty file named exactly like that device, in the declaration folder:
touch /recalbox/share_init/system/configs/xarcade2jstick/usb-Ultimarc_IPAC_2_Ultimarc_IPAC_2_9-if01-event-kbd
Make sure controllers.xarcade.enabled=1 is present in recalbox.conf, then reboot:
reboot
That folder belongs to the system partition: its contents are reset by every Recalbox update. Write the procedure down somewhere — or better, submit your encoder to the team on the Recalbox Discord so it ships by default.
xarcade2jstick was written for the X-Gaming device layout, which does not match the usual MAME layout. Depending on your encoder, you may need to remap a few keys in its own programming software (WinIPAC for Ultimarc boards, for instance) to get back to a consistent layout.
After a reboot, the encoder should show up as a controller:
START → CONTROLLER SETTINGS, on the INPUT P1 line;sdl2-jstest --list — see Testing a controller.If it does not appear, check the log:
grep CONTROLLERS /recalbox/share/system/logs/recalbox.log