Releases: Gallinarius/AnalogtoKey
Release list
v0.45
v0.45
Added
- Per-axis Key Hold — Hold duration (ms) is now configurable per axis instead of globally. Each axis has its own Hold field in the editor (default 50 ms).
- Button modifier keys — add Ctrl / Shift / Alt to any button mapping via a dropdown next to each button slot. Modifier is pressed before the key and released after — e.g. Button 1 → Ctrl+A. Backward-compatible with existing profiles.
v0.4 - Stacked mode
What's new in v0.4
Added
- Stacked mode for Steps Mode: keypresses are queued and sent sequentially. Prevents step desync when the stick moves faster than KeyHoldMs allows. Nothing is dropped, just delayed. Configurable inter-keypress pause. Enabled per axis via the Stacked mode checkbox.
v0.3.5 — Flight controller detection fix
What's new in v0.3.5
Fixed
Flight controller detection — devices that register as DeviceType.Flight in DirectInput were not detected by the device scan. This affects:
- Honeycomb Bravo Throttle Quadrant
- Saitek / Logitech X-55 Throttle
- Other HOTAS throttles and flight controllers
These devices were visible in Windows joy.cpl but missing from AnalogtoKey's device dropdown. The scan now uses DeviceClass.GameControl which covers all game input devices — joysticks, gamepads, flight controllers, racing wheels, and more.
Floating windows always-on-top — Axis Monitor and Debug Window now stay on top of borderless fullscreen games that override WPF's built-in Topmost property.
No .NET installation required. Self-contained, runs on Windows 10 and 11 (64-bit).
v0.3.41 — Axis Monitor, 32 knapper, Transmit toggle m.m.
What is new since v0.3.4
Added
- Floating Axis Monitor window — detachable axis monitor (≡ menu → Detach Axis Monitor). Always-on-top, draggable, remembers position and size. When open, axis bars move from the main window to the monitor.
- Axis bars in main window — axis visualisation bars permanently placed in the bottom-right panel, scales with window width.
- Axis visual feedback — axis key buttons blink green on every step boundary crossed (Steps mode), or stay solid green while held in zone (CP mode). Blinks even when muted.
- Transmit ON/OFF toggle —
● LIVE/● MUTEDbutton in the toolbar. When muted, no keys are sent to the OS; keys that would have fired still appear in the Debug Window in red ([M]). Toggle is instant and releases all held keys on mute. - Device capability scan — on connect, AnalogtoKey queries DirectInput for which axes and buttons are physically present. UI shows only what the device actually has — no empty rows.
- Slider axes (Slider0 / Slider1) — polled and displayed alongside standard axes. Verified working with Turtle Beach VelocityOne Yoke and Throttle Quadrant.
- 32-button support with paging — button mapping covers buttons 1–32. Devices with more than 16 buttons show page tabs (1–16 / 17–32).
- End-of-travel keypresses (MaxKey / MinKey) — optional keys that fire once as a pulse when the axis first reaches its maximum or minimum step. Order: Max key ▲ → Center ○ → Min key ▼.
- Version label — build version shown in the bottom-right corner of the app window.
- Open Debug Window in ≡ app menu — always-on-top, floats over borderless windowed games.
Fixed
- ComboBox keyboard block — controller keystrokes no longer affect Profile or Controller dropdowns when they have focus.
- Axis blink only fired once — blink logic now correctly triggers on every step change in both directions, including when moving upward from below center.
- Window position not remembered — Windows no longer overrides saved Left/Top values.
- CP highlight orange when unassigned — CP zone buttons now only light green when a key is actually assigned AND the zone is active.
- Axis step keys light green — Throttle/Brake buttons now highlight green based on current axis zone position, not only on key-sent events.
- Axis UI cleanup — mode checkboxes (Steps Mode / Center / Const. Pressure) always visible. Dead zone, CP keys, and End of travel section appear conditionally when relevant.
v0.3.4 — CP priority over steps
v0.3.4 — Constant Pressure priority over steps
When Constant Pressure and Steps Mode are both active on the same axis, CP now suppresses steps for any direction where a CP key is assigned. If the CP key for a direction is empty, steps fire as normal.
Example (SubwaySim throttle/brake on a single lever)
| Direction | CP key | Steps key | Behaviour |
|---|---|---|---|
| Up (throttle) | A | — | Holds A while stick is forward |
| Down (brake) | (empty) | D | Fires D once per step as normal |
Previously both modes would always run independently. Now CP takes priority per direction, enabling mixed setups on a single axis.
v0.3.3 — Cleaner UI, Rescan, Unsaved Changes Protection
AnalogtoKey v0.3.3 — Full changelog since v0.2 Beta
This release covers everything added since the initial v0.2 Beta release.
Three axis modes (new in v0.3)
Axes now support three independently toggleable modes — combine them freely:
Steps Mode (Standard)
Divides the axis travel into up to 99 steps. Each time the axis crosses a step boundary, the Up or Down key is pulsed. Perfect for throttle notches and brake steps in train simulators.
Center Mode
Splits the axis at its midpoint with a configurable dead zone (1–95%). Throttle (up) and brake (down) get independent step counts — e.g. 9 throttle steps + 9 brake steps = 19 distinct positions on a single lever.
Constant Pressure
Holds a key down continuously while the axis is past the dead zone, and releases it when the axis returns to neutral. Useful for horn, sanders, and any continuous-hold function.
Axis editor improvements (v0.3 / v0.3.1)
- Bi-directional axis bar — Center mode bars show green (throttle), grey (neutral), red (brake)
- Spinner fields on all numeric inputs (Steps, Dead zone %, Throttle steps, Brake steps) — click ▲▼ or type
- Dead zone range extended to 1–95% (was silently capped at 49%)
- Live raw axis value —
raw:XXXXXshown next to step info for easy centre-point and dead-zone calibration
Profile management improvements
- Rename profile — rename directly from the Edit menu without creating a copy
- Unsaved changes protection — the Save Profile button shows
●when there are unsaved edits; switching or creating profiles prompts before discarding
Toolbar redesign (v0.3.3)
Six individual toolbar buttons have been replaced with two dropdown menus:
- Edit ▾ (next to profile name): New profile / Copy profile / Rename profile / Delete profile
- ≡ (top right): Scan for new devices / Minimize to tray on close / Read Documentation / Exit
Scan for new devices (v0.3.3)
Re-detects all connected controllers without restarting the app. Open ≡ → Scan for new devices after plugging in a throttle quadrant or stick while the app is already running.
Minimize to tray — configurable (v0.3.3)
The X button minimises to the system tray by default. Toggle ≡ → Minimize to tray on close to make X close the app directly instead. The setting is remembered between sessions.
HidHide reliability fix (v0.2.1)
If the HidHide Configuration Client is open when AnalogtoKey starts, it now shows a Retry / Cancel dialog instead of silently failing to hide controllers.
Full changelog: CHANGELOG.md
AnalogtoKey v0.2 Beta
AnalogtoKey v0.2 Beta
Map joystick and arcade stick input to keyboard keystrokes on Windows.
Features
- Map buttons (1-16), D-pad (8 directions) and analog axes to any keyboard key
- Stepped axes with MIN/MAX calibration (1-8 steps)
- Multiple named profiles — switch instantly between games
- HidHide integration — hides controllers from other apps (e.g. Running Train)
- System tray support — runs silently in the background
- PDF user guide included
Installation
- Download and run
AnalogtoKey_Setup_v0.2_Beta.exe - Optionally install the bundled HidHide driver (recommended for Running Train)
- Restart Windows if HidHide was installed
Requirements
- Windows 10 or 11 (64-bit)
- No .NET installation required (self-contained)