An XInput (Xbox Series) Controller emulator for Linux. (Keyboard only)
-
C Compiler (gcc)
-
UINPUT Kernel Module
make
It will be installed in $HOME/.local/bin
sudo xipade -k "DEVICE" [-v] [-l]
"DEVICE": The path to the keyboard (should look something like /dev/input/eventX)
run sudo evtest to get your device path.
If you're using keymapper, keyd or similar software use it's virtual device path.
-v: To show more output. Useful for debugging.
-l: Alternate buttons layout.
| Button | Key | Alternate Key |
|---|---|---|
| A | K | |
| B | L | |
| X | J | |
| Y | I | LALT |
| BACK | X | |
| START | N | |
| LB | Q | R |
| RB | E | Y |
| LT | LSHIFT | 4 |
| RT | SPACE | 6 |
| LS Click | V | |
| RS Click | B | |
| DPAD_UP | T | TAB |
| DPAD_DOWN | G | . |
| DPAD_LEFT | F | Z |
| DPAD_RIGHT | H | C |
| LSTICK_UP | W | |
| LSTICK_DOWN | S | |
| LSTICK_LEFT | A | |
| LSTICK_RIGHT | D | |
| RSTICK_UP | 1 | 8 |
| RSTICK_DOWN | 2 | 9 |
| RSTICK_LEFT | U | |
| RSTICK_RIGHT | O | |
| GUIDE | ENTER | |
| Capture | RSHIFT |
| Button | Key | Alternate Key |
|---|---|---|
| A | K | |
| B | L | LALT |
| X | J | |
| Y | I | |
| BACK | X | B |
| START | N | |
| LB | Q | R |
| RB | E | Y,LSHIFT |
| LT | Z | SPACE,4 |
| RT | C | 6 |
| LS Click | TAB | 5 |
| RS Click | V | |
| DPAD_UP | T | |
| DPAD_DOWN | G | . |
| DPAD_LEFT | F | |
| DPAD_RIGHT | H | |
| LSTICK_UP | W | |
| LSTICK_DOWN | S | |
| LSTICK_LEFT | A | |
| LSTICK_RIGHT | D | |
| RSTICK_UP | 1 | 8 |
| RSTICK_DOWN | 2 | 9 |
| RSTICK_LEFT | U | |
| RSTICK_RIGHT | O | |
| GUIDE | ENTER | |
| Capture | RSHIFT |
| KEY | USAGE | ALTERNATE |
|---|---|---|
| F2 | Toggle Pause Controller (to Chat e.g.) | |
| F12 | Close Emulator | Click the tray icon |
| Control | Toggle Right Stick Sensibility (Half/Full) |
Add this to your .profile or /etc/environment config file and log out to apply:
export SDL_GAMECONTROLLERCONFIG="030000005e040000120b000010010000,Xbox Series X Controller,platform:Linux,crc:3540,a:b0,b:b1,x:b2,y:b3,back:b9,guide:b11,start:b10,leftstick:b12,rightstick:b13,leftshoulder:b5,rightshoulder:b6,dpup:b14,dpdown:b15,dpleft:b16,dpright:b17,misc1:b4,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b7,righttrigger:b8,"
sudo usermod -a -G input $USER
sudo groupadd -f uinput
sudo gpasswd -a $USER uinput
In /etc/udev/rules.d/ create a new rule file 99-uinput.rules and within put this line:
KERNEL=="uinput", GROUP="uinput", MODE="0660"
Save and Reboot.
Thanks to the original project.
TitanSoulsLinuxEmulator for the analog sticks code idea.
mktrayicon for the tray icon code idea.