-
Notifications
You must be signed in to change notification settings - Fork 6
Settings
The Settings page lets you configure PadForge's language, appearance, input engine behavior, window options, driver management, and settings file. Access it from the sidebar.

PadForge supports multiple languages via a built-in language selector at the top of the Settings page.
- Language dropdown -- Select from the available languages. The list is populated from PadForge's bundled translation files.
- Live switching -- Language changes take effect immediately across the entire UI without restarting the application.
- Persistent setting -- Your language choice is saved and restored on next launch.
Currently supported languages: English, German, Spanish, French, Italian, Japanese, Korean, Dutch, Brazilian Portuguese, and Simplified Chinese. Community contributions for new translations are welcome.
Choose how PadForge looks:
| Option | Description |
|---|---|
| System Default | Follows your Windows theme (light or dark). If you change your Windows theme while PadForge is running, it updates automatically. |
| Light | Always uses the light theme, regardless of your Windows setting. |
| Dark | Always uses the dark theme, regardless of your Windows setting. |
The theme change takes effect immediately -- no restart needed.
When enabled, the controller visualization on the slot configuration page defaults to the flat 2D schematic view instead of the 3D model. This is useful if you prefer a simpler layout, if 3D rendering causes performance issues, or if you just find the flat view easier to read. You can also toggle between 2D and 3D on the fly using the view mode button on the Controller tab of any slot page.
These settings control how the input polling engine operates. The engine is the core loop that reads your physical controllers, applies mappings and dead zones, and writes the result to your virtual controllers.
When enabled, the input engine starts automatically when PadForge opens. When disabled, you must manually start the engine from the Dashboard by clicking the power button.
When to change this: Disable it if you want PadForge to open without immediately taking control of your virtual devices -- for example, when troubleshooting a configuration before going live.
When enabled, PadForge continues reading your controllers and sending output to virtual controllers even when the PadForge window is not in the foreground.
This should almost always be enabled. Without it, the moment you switch to a game (or any other window), PadForge stops processing and your virtual controllers go dead. The only reason to disable it is if you are using PadForge purely as a diagnostic tool and want it to pause when you are not looking at it.
This is the master switch for all input hiding in PadForge. It controls two separate hiding mechanisms at once:
- HidHide cloaking -- uses the HidHide driver to make your physical controllers invisible to games at the OS level.
- Input hook suppression -- suppresses mapped inputs so games do not see them through other input APIs.
When this master switch is on (the default), per-device hiding toggles on the Devices page are respected. When it is off, all hiding and input suppression stops immediately, regardless of what the per-device settings say. This gives you a single kill switch to instantly make all your physical controllers visible to games again -- useful for troubleshooting.
Controls how often PadForge reads input from your devices, in milliseconds. The default is 1 ms (approximately 1000 Hz).
| Value | Approximate Frequency | Best for |
|---|---|---|
| 1 ms | ~1000 Hz | Competitive/fast-paced gaming -- lowest possible latency (default) |
| 2 ms | ~500 Hz | Still very responsive, slightly lower CPU usage |
| 4 ms | ~250 Hz | Good balance for most games |
| 8 ms | ~125 Hz | Casual gaming, everyday use -- noticeable CPU savings |
| 16 ms | ~60 Hz | Minimum CPU usage, matches a 60 fps display refresh |
Trade-offs to understand:
- Lower interval = more responsive but more CPU. At 1 ms, PadForge reads your controller roughly 1000 times per second. This is great for responsiveness -- you get the lowest possible input latency -- but the CPU thread running the polling loop is always active.
- Higher interval = less responsive but much less CPU. At 8 ms or 16 ms, PadForge reads far less frequently. You save CPU time, but input latency increases. For casual or turn-based games, this is perfectly fine.
- You probably do not need to change this. The default 1 ms works well for the vast majority of users. Only raise it if you notice high CPU usage from PadForge or are running on a low-power device (tablet, mini PC, etc.).
The polling interval slider accepts values from 1 to 16, in whole milliseconds.
These three settings work together to control how PadForge behaves as a Windows application. Used in combination, they let you run PadForge as a silent background service.
When enabled, clicking the minimize button sends PadForge to the system tray (notification area near the clock) instead of the taskbar. Double-click the tray icon to restore the window.
When to use this: Enable it if you want PadForge out of the way but easily accessible. It frees up taskbar space while keeping PadForge one double-click away.
When enabled, PadForge starts minimized -- it opens but immediately hides its window. Combined with "Minimize to system tray," PadForge launches silently with only a tray icon.
When enabled, PadForge launches automatically when you log into Windows. A shortcut is placed in your startup folder.
Tip: For a fully hands-off setup, enable all three: Auto-start engine (in the Input Engine section above), Start minimized, Minimize to system tray, and Start at login. PadForge will launch at login, start the engine, and run silently in the tray -- your virtual controllers will be ready the moment you open a game.
The Settings page includes a driver management card for each of the four optional drivers: HidHide, ViGEmBus, vJoy, and Windows MIDI Services. Each card shows the same set of elements:
- Status indicator -- Green dot for installed, red dot for not installed.
- Version -- The installed driver version, shown below the status when applicable.
- Install / Uninstall buttons -- One-click install or removal.
| Driver | What it does | Install when... | Safe to skip when... |
|---|---|---|---|
| HidHide | Hides physical controllers from games so they only see PadForge's virtual ones. Prevents double input. | Games are picking up both your physical and virtual controllers. | You only use PadForge for MIDI output or your games do not have double-input issues. |
| ViGEmBus | Creates virtual Xbox 360 and DualShock 4 controllers. | You want to output as an Xbox or PlayStation controller (the most common use case). | You only need DirectInput (vJoy), MIDI, or Keyboard+Mouse output. |
| vJoy | Creates custom DirectInput virtual joysticks with configurable axes, buttons, and POV hats. | You need to output to older DirectInput games, flight sims, or software expecting a specific joystick layout. | Xbox or PlayStation output covers all your games. |
| Windows MIDI Services | Enables MIDI virtual controller output. Requires Windows 11 24H2 or later. | You want to send MIDI messages to music software, VJ tools, or creative applications. | You have no interest in MIDI output, or you are on Windows 10 or an older Windows 11 build. |
PadForge prevents you from uninstalling a driver while it is still in use. For example, the ViGEmBus "Uninstall" button is disabled if any virtual controller slot is currently set to Xbox 360 or DualShock 4. Delete or change those slots first, then uninstall.
When HidHide is installed, a Whitelisted Applications section appears below the HidHide driver card. The whitelist controls which programs are allowed to see hidden controllers even when HidHide cloaking is active.
PadForge automatically adds itself to the whitelist so it can always read your controllers. You may need to add other programs to the whitelist too:
- Add... -- Opens a file browser to select an .exe file. That program will be able to see your physical controllers even while they are hidden from everything else.
- Remove -- Removes the selected entry from the whitelist. Be careful not to remove PadForge itself, or it will lose access to your controllers.
Common programs to whitelist: Other controller configuration tools, emulators that need direct hardware access, or diagnostic software like joy.cpl.


For detailed information about each driver, see Driver Management.
PadForge stores your entire configuration -- controller slots, mappings, dead zones, profiles, macros, and all preferences -- in a single XML file called PadForge.xml.
The full path to this file is displayed at the top of the Settings File section. You can use this to back up your configuration, share it with others, or move it to a new machine.
| Button | What it does | When to use it |
|---|---|---|
| Save | Writes the current configuration to disk immediately. | Use this if you want to force-save right now, or to confirm that your changes have been written. |
| Reload | Discards any in-memory changes and re-reads the settings file from disk. | Use this to undo changes you made since the last save, or to pick up changes made by an external tool. |
| Reset to Defaults | Erases all customizations and restores factory defaults -- mappings, dead zones, profiles, macros, everything. | Use this as a last resort when your configuration is in a broken state and you want a clean start. This cannot be undone. |
| Open Folder | Opens the folder containing the settings file in Windows Explorer. | Use this to quickly find the file for backup or sharing. |
If there are unsaved changes, an orange "Unsaved changes" warning appears below the buttons.
Most settings are saved automatically. When you toggle a checkbox, switch themes, change the polling interval, or adjust a dead zone, PadForge writes the change to disk within about a quarter second. You do not need to manually click "Save" after every change.
The Save button exists for two reasons:
- To let you manually force a save if you want peace of mind that everything is on disk.
- To let you batch-save after making many rapid changes.
When a virtual controller slot is set to the MIDI output type, its configuration bar on the slot page provides the following settings:
| Setting | Description |
|---|---|
| Channel | The MIDI channel to use (1--16). |
| Velocity | The velocity value for Note On messages (0--127). Higher values mean louder/stronger notes. |
| CC Count | Number of MIDI Control Change outputs (0--128). Determines how many axes are sent as CC messages. |
| Start CC | Base CC number for axis outputs (0--127). Axis CC numbers count up from this value. |
| Note Count | Number of MIDI note outputs (0--128). Determines how many buttons are sent as Note messages. |
| Start Note | Base note number for button outputs (0--127, where 60 = Middle C). Button notes count up from this value. |
PadForge creates its own virtual MIDI device for each slot -- there is no port selection dropdown. These settings are configured per slot, so different MIDI virtual controllers can target different channels and velocities.
The bottom of the Settings page shows version information useful for troubleshooting or bug reports:
| Field | Description |
|---|---|
| App Version | The PadForge application version |
| .NET Runtime | The .NET runtime version PadForge is using |
| SDL Version | The version of the SDL3 library handling device input |
Include these versions when reporting a bug -- they help narrow down compatibility issues.
- Dashboard -- Engine status and quick overview
- Driver Management -- Detailed driver install/uninstall information
- Profiles -- Per-application settings management
- Troubleshooting -- Common problems and solutions