Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ControllerToCursor

A simple and easy to use program that lets you use any controller as a mouse and keyboard on Windows/linux with high customizability and without requiring an installation or modifying drivers.


Tip

When you want to know how a specific feature works or how to use it but don't want to read this whole file you can use this Promt in a Web-search capable llm of your choice that can help you answer questions more easily:

Based on the content of this README answer me the following questions without guessing or adding information that isn't explicitly named in the file: https://github.com/Basti0307/ControllerToCursor/blob/main/README.md

  • (Add your question here e.g. "How do I make my pointer move faster")

Installation & Usage

  1. Go to the Releases page.
  2. Download the newest ControllerToCursor_windows.exe/ControllerToCursor_linux.tar.gz depending on your os.
  3. Run the executable on Windows or extract the Linux archive and run the AppImage — no installation required.
  4. Select the controller you want to use in the dropdown or use the vibrate button to identify multiple controllers.
  5. After the first launch run the Button Walkthrough and configure the controller's deadzone in the Mappings-tab to set everything up correctly.
  6. You should now be able to move your cursor by moving your left stick!

Note

Windows SmartScreen or other antivirus software may flag the .exe as a potential virus. This is a false positive and safe to ignore. Here you can find the VirusTotal scan results - Note that one of the detections is based on the way the program was compiled (via PyInstaller - the standard way to compile Python applications) and the other detections are triggered because the program tries to modify mouse movements (that's the whole point of this App!) , so you can saftely ignore all of them.


On-Screen Keyboard (FreeVK)

The On Screen Keyboard hotkey launches FreeVK — a free, lightweight virtual keyboard for Windows.

To use this feature:

  1. Download the portable FreeVK executable from https://freevirtualkeyboard.com/.
  2. Place FreeVK.exe in the same folder as ControllerToCursor.exe.
  3. Assign a controller button to the On Screen Keyboard action in the Hotkeys tab (set to the right d-pad button by default).
  4. Press that button while emulation is active — the keyboard will pop up on which you can type by left clicking on the keys.

Linux-notes

To use the Linux version go to the Releases page and download the latest version of ControllerToCursor-linux.tar.gz and extract its content. If the "Unknown Filetype" error pops up after double-clicking the AppImage file, open the command prompt next to the file and run "chmod +x ControllerToCursor-v[current version]-linux-x64" to make the program executable.

To use the feature "On screen Keyboard" on linux, you don't have to download FreeVK. Only when the default Linux on screen keyboard is not found, you have to run "sudo apt-get install onboard" in a Terminal to download and install it. Unfortounately, the speech to text option can currently not be used in Linux.


Built-in Features

  • Mouse Movement: Control your cursor with the left analog stick. Supports acceleration for natural feel.
  • Scrolling: Vertical and horizontal scrolling via the right stick.
  • Sniper Mode: Hold a button to slow the cursor for precise Mouse Movement.
  • Speed Boost: Hold a button to temporarily increase the mouse speed.
  • Left & Right Click: Map any controller button to left and right mouse buttons.
  • On-Screen Keyboard: Instantly open a virtual keyboard with a single button press (see On-Screen Keyboard (FreeVK)).
  • Speech To Text: Trigger Windows speech recognition (Win + H) from the controller (only supported on windows).
  • Toggle Hotkey: Use a configurable button combo to pause and resume emulation without closing the app — handy for switching to a game.
  • Button Walktrough: Every controller maps their buttons differently so when e.g. "A" is pressed on an Xbox-controller windows recieves "Button 10 is pressed". On a ps4 Controller "A" could correspond to Button 9. by running the Button Walktrough you eliminate the risk of a wrong button assignment.
  • Deadzone Calibration: Measures your stick's resting drift and stop stickdrift.
  • Cursor Movement configurability You can change the cursor and scroll sensitivity (including sniper and speedboost settings) in the Pointer Tab and modify settings like the sticks used for movement/scrolling or assigning buttons to Move the mouse/scroll instead of sticks in the "Sticks & scroll axes" Dropdown under the Mapping tab.

Warning

Please note that ControllerToCursor has only been tested and confirmed to run smoothly on Xbox 360-style gamepads. It was reported that the D-Pad and other Buttons don't work on Playstation controllers. In case that you only have a PlayStation controller, please try to avoid the D-pad and Bumpers in your mapping! You can also inform me of the compatability with other brands Controllers in the Issues Tab.


Customizability

  • You can change all the keybinds of the built-in actions by using the "Assign" button next to them and pressing the new trigger that you want to use for this action (the Button on the controller that you want to bind to the action(e.g. Left click)) or using the dropdown to change the Trigger manually.
  • To Add multiple triggers that you have to press all at once to trigger the action, use the "+Add" Button next to an Action to create a new trigger.
  • You can use the "+Add custom binding" button to create a new fully configurable Action. The process of adding new triggers is the same as with the built-in actions: use the "+Add" button to add multiple triggers that you have to press all at once to trigger the action. In the "Keyboard output" section you can configure what keys should be pressed at once when the triggers are pressed. You can use: winkey, del, shift, alt, f1 etc, arrowUp etc,and the normal Keyboard keys (a, 1, %, etc.). Separate multiple keys with a "+" sign for hotkeys e.g. "ctrl+c", "ctrl+shift+esc", "f3+b", etc.
  • All changes are automatically saved in real-time in a configuration file that is created on first launch in the same directory as the executable is starting from, you can see the standard configuration in the "Actions" Tab. You don't have to manually save after changing any value.

Screenshot 2026-05-24 151858

Legal Disclaimer

This tool is for personal and private use only.

  1. No Liability: The developer assumes no liability for any damage or issues arising from the use of this software.
  2. "As-Is" Software: This software is provided under the MIT License without any warranties. Use it at your own risk.

Credits & Third-Party Licenses

This application uses the following open-source projects:

  • pygame (LGPL) — Controller input handling.
  • pyautogui (BSD-3-Clause) — Mouse and keyboard emulation.
  • tomllib / tomli-w (MIT) — Config file reading and writing.
  • tkinter — GUI Configuration.
  • FreeVK (optional, not bundled) — On-screen virtual keyboard.
  • Various LLMs (AI) were used in the process of creating this program.

---

Developed by Basti0307

About

An easy and elegant way to controll your mouse and keyboard using a gamepad.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages