Homebrew Homebrew app Project key2con - Keyboard and Mouse as Virtual Controller

Redson_BW

New Member
Newbie
Joined
Sep 5, 2025
Messages
4
Reaction score
14
Trophies
0
Age
26
XP
51
Country
Brazil
Hi everyone!

I've recently been studying programming, and I became interested in homebrew development after getting access to Switch CFW.
I've seen people on forums and Reddit looking for a way to play Nintendo Switch games using a keyboard and mouse. While there are already ways to do this, they often involve workarounds such as using a PC as a host or other extra setup.

So, I decided to create this project to make it possible to use a keyboard and mouse directly with the Nintendo Switch.
I'm happy to say that I'm releasing my first Nintendo Switch CFW project! :switch:

key2con

1790632821951.jpeg


🎮 Features

* Play any Switch game with a USB keyboard and mouse
* Map any KB&M key/button to gamepad buttons or sticks using the key2con Homebrew
* Experimental gyro/R-stick-as-mouse support




📝 Planned Features

* Link a keyboard or mouse to an independent virtual gamepad (e.g. Keyboard 2 = Virtual Pro Controller 2)
* An overlay cursor that can be moved on the Switch screen and used to simulate touchscreen input
* Bluetooth KB&M support (It probably won't happen.)

🕹️NRO Inputs ⌨️🖱️
* Up Arrow: move up
* Down Arrow: move down
* Enter: select
* Escape: return
* Delete: lower mouse sensitivity/remove the last mapped key

1790632861574.jpeg


More information and download are available on the GitHub page!
Github Page
 
Last edited by Redson_BW,
Nice work, been looking for something like this for heavy fighting games.
Could you add presets (profiles) for mapping? interface for mapping, and mouse movements as L or R stick?
I'm Looking forward for future updates. cheers!

Your release doesn't have the NRO lol
 
Nice work, been looking for something like this for heavy fighting games.
Could you add presets (profiles) for mapping? interface for mapping, and mouse movements as L or R stick?
I'm Looking forward for future updates. cheers!

Your release doesn't have the NRO lol
Thank you very much :D

I forgot to add the NRO to the release, LOL. I just released a new version, and now it supports the left stick(and right stick) as well! And of course, I’ll add per-game mapping profiles in the future! Possibly very soon

Could you tell me which console firmware and Atmosphere version you are using? That would help me
 
  • Like
Reactions: reirahul
Thank you very much :D

I forgot to add the NRO to the release, LOL. I just released a new version, and now it supports the left stick(and right stick) as well! And of course, I’ll add per-game mapping profiles in the future! Possibly very soon

Could you tell me which console firmware and Atmosphere version you are using? That would help me
Latest atmosphere and 22.5 Firmware.
A tesla overlay to swap profiles and turn off and on the module would be great.

Also not related but I wanted to ask, is it possible using the devkit to develop a plugin to swap analog stick with D pad on the joycons?
 
I've recently been studying programming
Condense all of the below down into a string lookup table please, for your own sake. There is so much copying and pasting here, printf was specifically designed to avoid that without needing tedious string concatenations (which are made easier by C++'s std::string and std::cout anyways). You could easily condense all of this into one or two lines and just have a list of button names somewhere in a static array, where it's out of the way.
This is not well-formed code, it will bite you in the ass later:
ScreenAreaShot.WSP_Main.20261001.211658.png
It's good to break this bad habit now before it follows you into a larger project.

Also.... what?
ScreenAreaShot.WSP_Main.20261001.211708.png
 
Last edited by bonkmaykr,
It's worth learning those good coding habits, I'm just happy people are still learning to code for real rather than letting their sexbot hallucinate it.
Nice project!
 
  • Like
Reactions: bonkmaykr
Condense all of the below down into a string lookup table please, for your own sake. There is so much copying and pasting here, printf was specifically designed to avoid that without needing tedious string concatenations (which are made easier by C++'s std::string and std::cout anyways). You could easily condense all of this into one or two lines and just have a list of button names somewhere in a static array, where it's out of the way.
This is not well-formed code, it will bite you in the ass later:
View attachment 593539
It's good to break this bad habit now before it follows you into a larger project.

Also.... what?
View attachment 593540
Thank you for the feedback. I’ll try to simplify and condense more parts of my project. 👍 As for those empty if blocks, they aren’t present on my computer, so I may have accidentally uploaded an outdated version or something.
 

Site & Scene News

New Hot Discussed User Submitted