I use two separate configuration sets for switching between "standard" mode and "single joycon" mode (up to 4 players), as and when required, by using nx-shell to copy a file, which might seem a bit tedious, but once you get used to it, can be quite quick.
Copy the attached files to the root of the retroarch folder on your sd card (it will overwrite your "retroarch.cfg" file and "config" folder, so back these up first). Go straight into RetroNx and you'll find that "single joycon" config mode is ready to use straight away.
- To switch back to a "standard", vanilla paired joycon mode - use nx-shell to navigate to the retroarch/config folder and copy the retroarch.cfg file to the root of the retroarch folder before launching RetroNx.
- To switch to "single joycon" mode again - use nx-shell to navigate to the retroarch/config_02 folder and copy the retroarch.cfg to the root of the retroarch folder before launching RetroNx.
In "single joycon" mode, to get back to the retroarch menu, player 1 must press the analog stick (L3) and minus button together.
The reason for two separate config folders (config and config_02) is so that you can have the freedom of independent override core/game configs for "standard" and "single joycon" mode, for example, in case you wish to further configure controls on a per core/game basis.
The "standard" mode is pretty much a vanilla configuration where the settings under retroarch.cfg are practically straight from the pack. I prefer to implement customisations as core/game override files, contained in retroarch/config folder. For example, I prefer to use 16:9 full screen; some games like midway arcade require other setting to get full screen; m4xw PSX rearmed config file has been implemented as a core override file as well.
The "single joycon" retroarch.cfg file sets the inputs for single joycon and utilises the retroarch/config_02 folder which contains its own set of overrides to customise things, like the above.
More information on retroarch configurations and overrides can be found here:
https://docs.libretro.com/guides/overrides/
By default, I tried to map as many retropad buttons as possible to a single joycon. For example:
left joycon:
L => L1, L2
ZL => R1, R2
minus => start, L3
L3 => select, R3
right joycon:
R => L1, L2
ZR => R1, R2
plus => start, R3
R3 => select, L3
These, of course, can be overridden on a per core or game basis, for example, the nes and gameboy cores, there is an override config which maps the Z button as a turbo button
Edit: Works with RetroNX 0.9.7, build 30 Jul 2018, Git ver 597388f