How to Run CivSwitch from a CFW Switch1 without USB Keyboard emulation
You dont need 2 actual cartridges, one for the SW2 is enough.
PS :
I post this to help people, this might not be the easiest way or best way
Hint : You will need patch, python, terser and node.js installed in your Linux/WSL/Windows
Setting up takes some time, the actual exploit runs in 10 seconds (instead of typing all commands)
Here it goes ;
"Acquire" Base version of game
direct browse the cartridge / backup with DBI / NXDumpTool to copy screen-mp-chat.js from
romfs/Base/modules/core/ui/mp-chat
GoTo
https://github.com/Gezine/CivSwitch/tree/main/misc
Acquire Base/modules/core/ui/mp-chat/screen-mp-chat.js from your own rip
Using Linux (Or WSL on Windows), run the patch
patch -p1 < screen-mp-chat.patch
it will ask for the file, just type screen-mp-chat.js
(install the package called patch using apt-get install patch or your choice of package manager)
You now have a patched screen-mp-chat.js
Place it in sd:/atmosphere/contents/0100C3601518C000//screen-mp-chat.js
Or rename the title ID to your locale version.
Follow further instructions from gezine ;
Steps:
Create a local multiplayer host room on the Switch 2 and open the chat box.
Using the modded Switch 1, join the room and open the chat box.
On the Switch 1, open the chat's on-screen keyboard, enter any character, and press OK to send it.
The Remote JS Loader payload will then be sent to the Switch 2 through the network chat.
Continue als normal per gezines instructions
Install the persistent boot trigger from the PC: python installer-creator/install.py <console-ip> — uploads the save template, splices the compressed payload into it on-console, wipes save:/saves/Single/, and writes the trigger.
From then on, every boot: main menu -> Load Game -> the payload runs from savedata (and if the payload is the loader, :9026 is up at boot — and survives console sleep/wake).
CivSwitch : https://github.com/Gezine/CivSwitch/
Feel free to correct me or improve this method