GCIR - Gamecube Controller Input Redirect is a program that allows you to remap GameCube controller to Luma InputRedirect Client, using Python and TPPFLUSH. It also supports remappable keyboard inputs.
The program sends button inputs from a controller over the network to a 3DS running InputRedirect. Hence you will need a device that can run Python and can support controllers, as well as an active internet connection in order to use this.
Features
- Supports any DInput device (anything your OS sees as a joystick).
- Also supports Xinput (Xbox 360/One controller).
- Supports using the keyboard.
- Supports putting a picture over the touch screen window.
- Fully re-mappable controls.
User guide
Requirements
- Python 3.6 or higher, and the PyGame library.
- PyGame can be installed with the following command
pip install pygame
. - Or, if you have multiple versions of Python installed
python -m pip install pygame
. - You may have to substitute
python
for eitherpython3
orpython3.6
depending on how you installed it. - If neither of those work you may have to type the full path to the python executable (i.e.
C:\Python36\python.exe
).
- PyGame can be installed with the following command
Configuration
- Technically supports any DInput device (e.g. Windows joystick) or any device that PyGame supports (e.g. XBox 360 Controller), but is currently mapped for a Gamecube Controller via a USB adapter.
- It also supports putting a picture over the touch screen to help with clicking on things. Put a picture named
home.jpg
in the images folder (or name your own by changing the source).
Gamepad Buttons
- To re-map buttons:
- Edit the buttonMappings dict (for controllers) or KBDButtons class (for the keyboard) in gamepad.py (or two.py if using multiple systems).
- The buttonMappings array is a list of every button on your controller in order from
0
mapped to a 3DS button. - Button IDs can be found in Windows Game Controller settings (Start> Run...> joy.cpl).
- To add a button mapping to the buttonMappings dict:
- Type the button ID followed by the 3DS button you want it to be mapped to.
- For example, if you wanted button
0
to be mapped toHIDButtons.A
, add this entry to buttonMappings0: HIDButtons.A
. - Likewise, if you want button
3
to beA
, put3: HIDButtons.A
in the list instead. - If you want a high-numbered button (like the XBox 360 Guide button, 15 on some OSes) to be bound to a 3DS button, add empty list entries (zero) in between the last button map and the one you want.
Joystick Axes
- To remap joystick axes (if your controller for some reason uses different ones):
- Find
pygame.JOYAXISMOTION
with ctrl+f. - Change the joystick axis indices (
event.axis == 0
etc).
- Find
Keyboard Button
- Edit the KBDButtons class with the keyboard values you want to bind to 3DS buttons.
- Here is a list of buttons PyGame uses.
- This one is more straight forward as everything is named instead of being numbered, for instance to set 3DS button
A
to be keyboad buttonJ
typeA = pygame.K_j
.
Cloning
When cloning the repository, make sure to use --recursive
to download the necessary submodule.
Changelog
v0.2 2017/10/03
- Added bare-bones support for putting a photo on the touchscreen, wrote the code more neatly, and updated to the latest version of TPPFLUSH.
v0.1.1 2017/09/25
- Now with Binaries:
- The Python binaries require Python3 and PyGame installed.
- The macOS binaries technically work (they run from the command line just fine) but need testing.
v0.1 2018/09/24
- Releasing becasue it works.