GamePadMK is a gamepad-controlled on-screen keyboard and mouse for Windows, macOS, and Linux. It can be used to easily control PCs connected to a TV or streamed remotely with Sunshine. You can use it to navigate around applications and press hot keys like Ctrl+Alt+Del or Alt+Tab.
GamePadMK is compatible with most dual-stick gamepads/controllers, whether connected via wired or wireless. The following controllers have been tested and confirmed to work:
- Microsoft Xbox Wireless Controller (Bluetooth)
- 8Bitdo Ultimate Bluetooth Controller (Bluetooth)
You can download the latest version of GamePadMK from the Releases page. Simply run the installer for your platform (.msi or .exe for Windows, .dmg for Mac) to get started.
You can also build the project yourself from source. See the Building Locally section for instructions.
| Button | Result | |
|---|---|---|
| Back + Start | Turn Control Mode On / Off | |
| Right Joystick | Move Around Keyboard | |
| Right Joystick Click | Show or Hide Keyboard | |
| Right Trigger | Press or Release Key | |
| Right Button | Toggle Long Press or Release Key | |
| Left Trigger | Press or Release Shift Key | |
| D-Pad Up | Press Up Arrow Key | |
| D-Pad Down | Press Down Arrow Key | |
| D-Pad Left | Press Left Arrow Key | |
| D-Pad Right | Press Right Arrow Key | |
| A Button | Left Click Mouse | |
| B Button | Right Click Mouse | |
| Left Joystick | Move Mouse Pointer | |
| Left Joystick Click | Change Mouse Speed |
You can access the settings by clicking the GamePadMK icon in the taskbar or system tray.
- Auto Start: Enable or disable automatic startup with Windows.
- Dark Mode: Enable or disable dark mode for keyboard and settings window.
- Show Notifications: Enable or disable notification when the keyboard is shown or hidden.
- Mode Change Buttons: Choose the buttons used to toggle control mode on and off.
- Show On-Screen Keyboard: Show or hide the on-screen keyboard when control mode is active.
- Key Size: Adjust the size of the on-screen keyboard keys.
- Keyboard Layout Import/Export: Add functionality to import and export custom keyboard layouts.
- Keyboard Layout Editor: Create an editor for designing and modifying keyboard layouts.
- Custom Themes: Enable users to customize keyboard themes, including colors and styles.
- Linux Support: Add support for Linux keyboard layouts, testing, and provide binary releases.
- Test Coverage: Increase test coverage for the project to ensure reliability and stability for future features.
- AutoSuggest: Implement a feature to suggest words as the user types, enabling quick selection for autocomplete functionality.
This project is built using Tauri and React. It also leverages sdl2 bindings to handle input from connected gamepads. You can ensure sdl2 is installed and available for Rust using cargo-vcpkg:
cd src-tauri
cargo vcpkg build
cd ..
Next, install the required npm dependencies and start the Tauri development server:
npm install
npm run tauri dev
- VS Code with the following extensions:
Feature requests and contributions are always welcome! If you have ideas for new features or improvements, please open an issue or pull request on GitHub. When suggesting a specific feature, include as much detail as possible about its functionality and use case to help guide the discussion. If you find GamePadMK useful, consider starring it on GitHub to show your support and/or sponsoring the project!
GamePadMK is an open-source and free software licensed under the GPL-3.0. (GNU General Public License v3.0).
- Tauri for its lightweight framework enabling seamless native app development.
- Vite for its blazing-fast build and development tools.
- Radix UI for its accessible and customizable UI components.
- Rust for its unmatched performance and reliability.
- rust-analyzer for enhancing the development experience.
- SDL2 for robust gamepad input handling.


