Mods / GamepadCompanionVS

Tags:
QoL
Author:
ElSublimePeluca
Side:
Client
Created:
May 11th at 12:13 AM
Last modified:
5 days ago
Downloads:
748
Recommended download (for Vintage Story 1.4.4-dev.2 - 1.22.6):
gamepadcompanion-1.9.0.zip  1-click install

Full native gamepad support for Vintage Story 1.22+, designed as a client-side mod. No Steam Input, AntiMicro, or external key mappers required — the mod reads the gamepad directly via GLFW and integrates with VS hotkeys, dialogs, and inventory UIs.

> **Language**: the in-game UI is localized in **English** and **Spanish** (Latin American and European), following your VS client language, with English as fallback for everything else. Want it in your language? PRs are welcome at the GitHub repo — it's just one JSON file in `assets/gamepadcompanion/lang/`, no code changes needed.

## Features

- **Movement and camera** via sticks, with configurable sensitivity (horizontal/vertical), dead zone, and pitch inversion.
- **12-slot radial menu** (LB + right stick). Defaults to Character, Chat, Handbook, Settings, and Virtual Keyboard; the remaining slots are assignable from the in-game dialog.
- **Contextual button mapping**: B closes the open dialog or drops the active item depending on context; A jumps; X/Y/Back/Start mapped to tool mode, inventory, map, and pause menu.
- **Virtual cursor over GUIs**: when a modal dialog is open, a yellow cursor appears. Hold RB for smooth right-stick movement; DPad without RB steps it slot-by-slot for fast inventory navigation. RT/LT click left/right.
- **World map zoom with the D-Pad**: with the fullscreen map open, D-Pad ↑/↓ zooms in/out (one mouse-wheel notch per press) while ←/→ keeps moving the cursor for clicking waypoints.
- **Ctrl and Shift toggles** via L3/R3 with a HUD indicator in the top-right corner. Enables shift-click in inventory, ctrl-click placement, etc.
- **Precision mode** (DPad Up) reduces camera sensitivity by a configurable factor for aiming at specific blocks.
- **Composite actions**: a single radial slot can execute several actions in sequence.
- **Per-key injection** (`KeyPressAction`): bind any keyboard key to a slot or gamepad button — useful for hotkeys not in the vanilla list.
- **On-screen virtual keyboard** for typing commands and chat with the gamepad. QWERTY + `/` and `.` for slash commands.
- **In-game editor** (`/gpconfig` or `Insert` by default): three tabs (Wheel, Buttons, Sensitivity) with automatic JSON persistence to `ModConfig/gamepadcompanion.json`.
- **Localized UI** (English/Spanish): dialogs, pickers, HUD indicators, and radial labels follow the game language — including labels of already-saved bindings.

## Compatibility

| Platform | Status |
|----------|--------|
| Linux | ✅ Thoroughly tested (CachyOS X11 + GameSir Cyclone 2) |
| Windows | ✅ Verified by user reports (XInput controllers: Xbox 360, 8BitDo Ultimate 2C) |
| macOS | ⚠️ Untested — cross-platform stack (GLFW / OpenTK / VS API), should work in theory |

The mod bypasses GLFW's SDL gamepad-mapping database and reads the joystick raw, auto-detecting one of five layouts on first poll (check the client log for `detected ... layout`):

| Controller | Status |
|------------|--------|
| Xbox 360 / One / Series (Linux and Windows) | ✅ xpad / WinXInput layouts |
| GameSir Cyclone 2 (Xbox and PS4 modes) | ✅ Thoroughly tested |
| 8BitDo, generic XInput-compatible | ✅ Same XInput layouts |
| Generic PS4-like DirectInput (Wired Controller, etc.) | ✅ Auto-detected by signed-trigger signature |
| X-D GamePad / SHANWAN PS3-DInput mode | ✅ Experimental — button map inferred, report issues |
| DualSense / DualShock 4 (official) | ⚠️ Driver-dependent — some firmwares match a heuristic, others need xpad emulation |
| Switch Pro | ⚠️ Depends on driver mode |
| Other non-xpad joysticks | ❌ Unknown layout, mappings will be off |

If your controller is not recognized, the `/gpaxes` command dumps raw axes to help diagnose.

## Steam Input

If you launch Vintage Story through Steam, **disable Steam Input for this game** — otherwise you'll get double input (Steam sends synthetic keyboard/mouse + the mod reads the gamepad raw → camera at double speed, duplicated clicks).

Steam → right-click Vintage Story → Properties → Controller → "Disable Steam Input". The rest of Steam (overlay, friends, playtime, screenshots) keeps working — only the gamepad remapping layer is turned off.

If your controller only shows up as a gamepad when Steam Input emulates it (typical for DualSense / DualShock 4 / Switch Pro), either use Steam Input in plain "Gamepad / X360 passthrough" mode (no kb/m remapping — the mod reads the virtual Xbox controller fine), or use an alternative driver (DS4Windows on Windows, `hid-playstation` on Linux) and disable Steam Input entirely.

This mod is essentially an alternative to Steam Input *specific to VS*, with knowledge of vanilla hotkeys and dialogs that a generic mapper cannot have. Use one or the other, not both.

## How it works internally (disclaimer)

To make vanilla GUIs react to the gamepad without per-dialog patches, the mod injects synthetic mouse and keyboard events into the VS engine: it writes `ClientMain.MouseCurrentX/Y`, calls `OnMouseDown` / `OnKeyDown` / `OnKeyPress` directly, and writes Ctrl/Shift state into `KeyboardState[]`. This is the legitimate VS modding API, but worth disclosing — the mod has access to the client input stack and generates events the game treats as if they came from the user. Nothing is sent over the network; no files are touched outside `ModConfig/gamepadcompanion.json`; no `unsafe` blocks. If that pattern makes you uncomfortable, don't install it.

Mod Version Mod IdentifierFor Game version Downloads Released Changelog Download 1-click mod install*
1.9.0 gamepadcompanion
1.4.4-dev.2 - 1.22.6
46 5 days ago gamepadcompanion-1.9.0.zip 1-click install

GamepadCompanion v1.9.0

Compatibility

- Hydrate or Diedrate now works with the gamepad. Reported by pngwn: Ctrl +
  hold right click drinks from a water block with keyboard and mouse, but
  pressing LStick for Ctrl and holding LT did nothing.

  Vintage Story keeps a layer of input state that this mod had never touched.
  Above the client there is a screen manager that records, in three static
  fields, which keys are down, which modifiers are down and which mouse buttons
  are down. The game itself writes those fields only from the raw window
  events, and it barely reads them back — but they are the cheapest thing for a
  mod to poll, so mods do. Hydrate or Diedrate is one of them: it registers its
  drink action as "Ctrl + right mouse button" and then, ten times a second,
  simply asks those fields whether Ctrl and the right button are down. Every
  synthetic input this mod produced entered the chain one level below, so from
  Hydrate or Diedrate's point of view the gamepad did not exist at all.

  Gamepad input is now mirrored into that layer: the triggers report their
  mouse button, the Ctrl and Shift toggles report their modifier, and a "hold
  key" binding reports its key. This is not specific to Hydrate or Diedrate —
  any mod that polls the same way will now see the gamepad.

  Two notes for the water case specifically. Drinking takes a full second of
  looking at the same block, and the server restarts the count whenever the
  block you are aiming at changes, so take your thumb off the right stick while
  you drink: a stick resting just past the dead zone drifts far enough in a
  second to cross onto the next block. And if the progress ring appears but
  never fills, that is the drift, not the input.

- Hotkeys that other mods bind to a mouse button now also answer correctly when
  the click comes from a trigger. The game's own "is this hotkey pressed?" call
  reads a mouse button through a keyboard slot that only a physical click was
  filling in. Same family of bug as above, one layer down and on the documented
  API, so it is fixed here too.

Reliability

  All of the above is state that nothing in the game ever resets — it outlives
  leaving the world, and a value left behind by mistake would survive until you
  restart the game. So the release path was rebuilt rather than extended:

- Everything this mod injects is now recomputed from scratch every frame, and
  that recomputation runs on every path — gamepad unplugged, window not
  focused, radial menu, virtual keyboard, paused, and even while unwinding an
  exception thrown by another mod inside our own click. Releasing is no longer
  a list of cases to remember.

- Leaving the world (escape menu, death screen, kick, lost connection) now
  releases everything through the game itself, at the one moment where the
  client still accepts it. Until now that cleanup ran during shutdown, where
  the client has already stopped listening and silently ignored it.

- Unplugging the controller — or its battery dying — while a trigger was held
  left the mouse button stuck down until you alt-tabbed. It now releases
  immediately.

Fixes

- The settings window highlighted the wrong tab: choosing Sensitivity showed
  the sensitivity controls but lit up Buttons. Reported as issue #1.

- The "choose action" list could end up drawn outside its own window, floating
  over the settings dialog. It happened once the picker had been moved: Vintage
  Story remembers a dialog's position by name, and the list was a second,
  unnamed panel that stayed centred while the frame around it moved away. The
  list now follows the frame. Reported as issue #3.

- The Sensitivity tab has a "Restore defaults" button, like the Wheel tab.
  Until now a slider left at an unusable value could only be fixed by deleting
  the config file by hand. Reported as issue #4.

1.8.1 gamepadcompanion
1.4.4-dev.2 - 1.22.6
53 Aug 2nd at 7:32 PM gamepadcompanion-1.8.1.zip 1-click install

GamepadCompanion v1.8.1

Fixes

- RKN Crafting now works with the hold-key binding added in 1.8.0. Reported by
  pngwn: binding LAlt to A worked, but holding A and pulling LT never started a
  craft — while Alt + right click on keyboard and mouse did.

  The cause was mine, not RKN's. Vintage Story binds "Lock/Unlock Mouse Cursor"
  to Left Alt, which is exactly the key RKN uses as its crafting modifier.
  Holding Alt therefore frees the mouse — that is normal vanilla behaviour, and
  RKN depends on it. But version 1.7.1 had added a repair routine for the "left
  trigger curse" that looked for precisely that state — mouse free, no dialog
  open, free-mouse key registered as pressed — and treated it as a key stuck by
  a lost key-release event. So the moment you pulled the trigger, the mod
  cleared the Alt key a fraction of a second before the click reached RKN, and
  RKN saw a plain right click. Keyboard and mouse were never affected, because
  that repair routine only ever runs on a gamepad trigger press.

  The repair routine now leaves a key alone when something owns it: either a
  hold binding of this mod, or your physical keyboard (checked against the OS,
  not against the game's own state). A genuinely stuck key — where the game
  thinks it is pressed and the OS says it is not — is still repaired, and in
  fact detected more reliably than before.

- Holding a modifier and pulling a trigger on the same frame no longer drops the
  modifier. Key holds are now pressed before the click stage and released after
  it, so the modifier is alive for both the press and the release of the click.

- Assigning a bare modifier (Alt, Ctrl, Shift) always creates a hold binding
  now, even if you picked the single-key row. A tap of a modifier key is never
  useful, and picking the wrong row produced the exact same symptom as the bug
  above for a completely different reason.

Notes

- While you hold Alt, the right stick will not turn the camera and the mouse
  cursor is free. That is vanilla behaviour, not the mod — the same thing
  happens when you hold Alt on a keyboard, and RKN's in-world slot HUD needs it.
  Your aim stays at the centre of the screen as long as you do not move the
  physical mouse.

Other

- The two key rows in the action picker now describe what they do instead of
  both starting with "Assign a key...". English and Spanish.
- .gptrace now logs which keys are being held by a binding (hold=A:AltLeft).
- README documents hold bindings and the RKN Crafting recipe.

1.8.0 gamepadcompanion
1.4.4-dev.2 - 1.22.5
32 Jul 28th at 10:55 PM gamepadcompanion-1.8.0.zip 1-click install

Fixes

- The "left trigger curse" is fixed for real this time — and the actual cause
  was nothing like what v1.7.1 assumed. (That fix addressed a different, real
  failure mode and stays in; it just wasn't what was biting most people.)

  What was happening: Vintage Story keeps an internal flag while you interact
  with an item stored on the ground — ore, a bowl, a cooking pot, a bag, a
  lantern, a shelf. The only thing that ever clears that flag is a real mouse
  button *release*. The mod used to write the click state directly into the
  game instead of going through the game's click pipeline, so that release
  event never fired. From that moment on, the flag stayed stuck for the rest
  of the session and the game silently refused every ground-storage
  interaction: tools, crucibles and molds sitting on the ground could no
  longer be picked up, while normal blocks — doors, chests, placed molds —
  kept working fine. Restarting the world seemed to cure it only because
  clicking around the menus with a real mouse cleared the flag.

  Gamepad triggers now go through the engine's own click routine — the exact
  same code path the game runs for a physical mouse click, and the one it
  already uses when a keyboard key is bound to left/right click. A gamepad
  click is now indistinguishable from a real one.

- Same fix resolves the CombatOverhaul auto-swing: weapons no longer keep
  swinging on their own after drawing them, because the release event that
  CombatOverhaul waits for is now actually sent.

New

- Button bindings can now HOLD a key down. Pick "[Assign a key to hold down...]"
  in the Buttons tab: the key stays pressed for as long as you hold the gamepad
  button, instead of being tapped once. This is what modifier-key mods need —
  e.g. RKN Crafting, which reads Alt at the moment of the click.

- Modifier keys (Alt, Ctrl, Shift) can now be assigned on their own. They were
  previously ignored by the key capture dialog, which only accepted them as
  part of a combo like Ctrl+K. Combos still work exactly as before.

Diagnostics

- .gptrace now also records the block you are aiming at, the item in your
  active hotbar slot, the Ctrl/Shift modifier state and the ground-storage
  flag described above — the four things the engine checks that the previous
  trace could not see.

Compatible with Vintage Story 1.22.0. Supported layouts: Linux xpad,
DS4-DInput, GameSir Cyclone 2 (PS4 mode), Windows XInput (Xbox 360, 8BitDo
Ultimate 2C), SHANWAN PS3-DInput (X-D GamePad), Xbox One/Series over
Bluetooth (XboxBtHid).

1.7.1 gamepadcompanion
1.4.4-dev.2 - 1.22.5
25 Jul 27th at 1:32 AM gamepadcompanion-1.7.1.zip 1-click install

Fixes

- The "left trigger curse" — triggers (and jump) suddenly dying mid-session
  until you restarted the world, while camera, movement and buttons kept
  working — is fixed. Root cause: Vintage Story has an internal "free mouse"
  key (Alt by default) that releases the mouse cursor while held. The game
  never clears its keyboard state when the window loses focus, so if an
  alt-tab, the Steam overlay or an on-screen keyboard swallows that key's
  release event, the game is left believing the key is held down forever. That
  silently un-grabs the mouse — and with the mouse un-grabbed the mod refused
  to inject trigger actions (and the engine refuses jump). Two changes:

  - Triggers now follow the engine's own interaction rule exactly, so they
    keep working in the free-mouse state the same way physical mouse clicks
    do. Behaviour with inventories/chests open is unchanged.

  - Pressing a trigger while the mouse is un-grabbed with no dialog open and
    the free-mouse key latched now clears the stuck key and reclaims the
    mouse grab automatically — the curse heals itself on the next trigger
    pull, and a line is written to client-main.log when this happens.

Diagnostics

- .gptrace now records, on every frame, the engine state that gates in-world
  interactions (mouse grab, open dialogs, free-mouse key, in-world mouse
  flags, hand-use state, pause) plus the virtual cursor state. If anything
  like this ever happens again, a 5-second trace captured during the problem
  will pinpoint the culprit immediately.

Compatible with Vintage Story 1.22.0. Supported layouts: Linux xpad,
DS4-DInput, GameSir Cyclone 2 (PS4 mode), Windows XInput (Xbox 360, 8BitDo
Ultimate 2C), SHANWAN PS3-DInput (X-D GamePad), Xbox One/Series over
Bluetooth (XboxBtHid).

1.7.0 gamepadcompanion
1.4.4-dev.2 - 1.22.4
32 Jul 24th at 10:11 PM gamepadcompanion-1.7.0.zip 1-click install

# v1.7.0 — Multiplayer animation fix + no longer needed on the host

## Fixes

**Your character now animates correctly for other players in
multiplayer.** Until now, a player using the gamepad appeared to
everyone else as gliding across the ground with no leg animation, and
jumps didn't animate either. The mod was writing movement straight into
the entity's control flags, which moves you locally but never reaches
the server — so the server, and therefore every other client, believed
you were standing still. Movement and jump now go through the same
channel the keyboard uses, so the server sees them and the animations
play for everyone.

**The mod no longer has to be installed on the host to work.** It was
missing the "client" side declaration in its metadata, so Vintage Story
treated it as a universal mod that the server also needed, and silently
disabled it on the client when joining a server that didn't have it. It
is now properly declared client-side: install it only on the machines
that actually use a controller, and it works on any server.

## Notes

- Because jump is now routed through the engine's normal path, the
  engine's own rules apply to it: A no longer jumps while an inventory
  or other dialog is open, and it won't fire when there isn't room to
  stand up. This matches keyboard behaviour.

- The Share / screenshot button on Xbox controllers over Bluetooth
  cannot be bound separately. Traces confirm it reports the exact same
  raw button as A, so the mod has no way to tell them apart.

Compatible with Vintage Story 1.22.0. Supported layouts: Linux xpad,
DS4-DInput, GameSir Cyclone 2 (PS4 mode), Windows XInput (Xbox 360,
8BitDo Ultimate 2C), SHANWAN PS3-DInput (X-D GamePad), Xbox One/Series
over Bluetooth (XboxBtHid).

1.6.0 gamepadcompanion
1.4.4-dev.2 - 1.22.4
12 Jul 24th at 1:57 AM gamepadcompanion-1.6.0.zip 1-click install

GamepadCompanion v1.6.0

Fixes

- Bluetooth Xbox controllers: the triggers were swapped over Bluetooth — the
  right trigger was interacting and the left one was breaking blocks. They now
  match the USB layout again: RT = attack / break, LT = interact / pick up.
  (Over Bluetooth the pad reports the triggers on different axes than over USB,
  and the previous version assumed the USB/XInput order.)

- The virtual cursor no longer locks your physical mouse. With a GUI open you
  can just reach over and use the real mouse — the yellow cursor steps aside the
  moment you move the mouse, and the gamepad takes back over as soon as you touch
  the right stick or the D-pad (it reappears right where your mouse is, so nothing
  jumps).

- Fixed the mouse being dragged back into Vintage Story while the game was in the
  background. When the window isn't focused (alt-tab), the mod no longer touches
  the OS mouse at all.

New

- "Swap triggers (LT/RT)" option, for any controller that ever reports its
  triggers reversed. Find it in Settings > GamepadCompanion > Sensitivity, or use
  the /gpswaptriggers chat command. Off by default.

1.5.0 gamepadcompanion
1.4.4-dev.2 - 1.22.3
43 Jul 18th at 9:19 PM gamepadcompanion-1.5.0.zip 1-click install

Adds a dedicated button layout for Xbox One / Series controllers connected over Bluetooth on Linux (including Steam Deck). 
Fixed: over Bluetooth, buttons were badly scrambled — the right bumper acted as Start, Start and Back did nothing, L3/R3 didn't toggle Ctrl/Shift, and X/Y were shifted. The same controller worked correctly over USB.

Why: over USB Linux uses the xpad driver, but over Bluetooth it falls back to the generic HID driver, which reports the buttons in a different order.

The mod was matching it to the Windows XInput layout, which has the same axis order but a different button order. Sticks, triggers and the D-pad were already working correctly and are unchanged.  No config changes needed — the new layout is detected automatically. If you had rebound buttons to work around the scrambled mapping, you'll want to reset those bindings.
Thanks to GingeeMaestro for the report and the input traces.

1.4.0 gamepadcompanion
1.4.4-dev.2 - 1.22.3
59 Jul 12th at 1:33 AM gamepadcompanion-1.4.0.zip 1-click install

# v1.4.0 — UI in English and Spanish

The mod's UI is no longer hardcoded Spanish: it's now localized through Vintage Story's language system (`Lang.Get`), following your client language automatically.

- **English** (`en.json`) — also the fallback for any other language.
- **Spanish** — Latin American (`es-419.json`) and European (`es-es.json`).

Covers the settings editor (Wheel/Buttons/Sensitivity tabs), action pickers, the composite-action builder, key capture, the virtual keyboard, the HUD toggle indicators, and the radial wheel labels.

**Saved bindings translate too.** Action labels stored in `ModConfig/gamepadcompanion.json` used to be a snapshot of the language they were created in (they stayed Spanish even after switching the game to English). They are now re-resolved to the active language on every load: the mod's default slots use short localized labels, hotkeys from other mods show whatever name the owning mod registers, and key-press/builtin/composite actions regenerate their label localized. Existing configs work as-is, no migration needed.

Want the mod in your language? It's now just one JSON file in `assets/gamepadcompanion/lang/` — PRs welcome on GitHub.

Compatible with Vintage Story 1.22.0. Supported layouts: Linux xpad, DS4-DInput, GameSir Cyclone 2 (PS4 mode), Windows XInput (Xbox 360, 8BitDo Ultimate 2C), SHANWAN PS3-DInput (X-D GamePad).

1.3.1 gamepadcompanion
1.4.4-dev.2 - 1.22.3
118 Jun 20th at 9:46 PM gamepadcompanion-1.3.1.zip 1-click install

## v1.3.1

### Fixed
- **Crash compatibility with CombatOverhaul (OverhaulLib Legacy Compat):**
Moving the left stick or pressing triggers while the game was paused
(Escape menu) could crash the client. GamepadCompanion was still writing
movement flags to the player's EntityControls during the pause, which
CombatOverhaul intercepts to register a timed callback — an operation the
engine forbids while paused.
- Gamepad world-input (movement and triggers) is now suspended while the
game is paused. Camera, the virtual cursor and the radial menu remain
active so you can still navigate menus with the controller.
- This also fixes the (previously silent) issue of the character receiving
movement input when the stick was moved with the pause menu open, even
without CombatOverhaul.

1.3.0 gamepadcompanion
1.22.0-pre.1 - 1.22.2
91 May 19th at 11:03 PM gamepadcompanion-1.3.0.zip 1-click install

v1.3.0 — Worldmap zoom + sit-walking fix

New features

- D-Pad map zoom: when the worldmap is open in full-screen mode (default M), use D-Pad ↑ to zoom in and D-Pad ↓ to zoom out. Each press is
equivalent to one mouse-wheel tick. D-Pad ←/→ still move the virtual cursor for clicking waypoints and UI buttons. Zoom is intentionally limited
to full-screen mode and does not activate on the floating HUD minimap (default F6).

Bug fixes

- Stray "G" key when GUIs were open: pressing D-Pad ↓ with any modal dialog open (inventory, chat, container, etc.) was injecting the G key
(default sit binding) into the game, occasionally interfering with text fields and other UI. The sit default is now suppressed while the virtual
cursor is active, matching the behavior already in place for D-Pad ←/→.
- Walking while seated: after sitting down with D-Pad ↓, tilting the left stick would still move the character (with the seated animation
playing). The mod was writing EntityControls.Forward/Backward/Left/Right directly from gamepad input without checking FloorSitting. The mapper
now skips movement writes while the player is seated. Press D-Pad ↓ again to stand up and resume walking.

1.2.0 gamepadcompanion
1.22.0-pre.1 - 1.22.2
51 May 16th at 12:04 PM gamepadcompanion-1.2.0.zip 1-click install

● ## v1.2.0 — Windows XInput and X-D GamePad (SHANWAN DInput) support

Fixes the jumbled controls bug reported on Windows. Before this version, in Windows the right trigger would move the camera vertically while
resting and the right stick would fire mouse clicks — caused by GLFW reporting XInput axes in a different order on Windows than on Linux.

### What's new

- **Automatic Windows XInput support.** New `WinXInput` layout, auto-detected by axis signature. Covers any Xbox / XInput controller on Windows.
- **Experimental support for X-D GamePad / SHANWAN PS3-DInput mode.** Some controllers (multi-mode pads) expose a secondary mode — accessible by
holding Home for 5 seconds — that shows up as "X-D GamePad" with only 4 axes and triggers reported as digital buttons. Now detected by name, with
triggers behaving as full-press / release (no analog).

### Notes

- The X-D GamePad button mapping is inferred without test hardware (assumed Xbox-style order: A=b0, B=b1, X=b2, Y=b3). If you notice A/B or X/Y
swapped in that mode, please open an issue with your client log and we'll iterate.
- If your controller has an Xbox / XInput mode available, prefer it — it's the better-supported path.

1.1.1-dev.1 gamepadcompanion
1.22.0-pre.1 - 1.22.2
33 May 14th at 10:19 PM gamepadcompanion-1.1.1-dev.1.zip 1-click install

v1.1.1-dev.1 — Diagnostic build (not a general release)

This is a debugging build to investigate a "random walking speed" bug
reported on PS4 third-party controllers (e.g. Ubsvaky LBE-PS4, B0G7X54KX2).
It does NOT add any new gameplay features and is functionally identical to
v1.1.0 for normal use. Only install this version if I asked you to.

New diagnostic command:
.gptrace [seconds] (default 15, max 60)

Logs the full gamepad state every render frame to client-main.log for the
specified duration. Captured per frame:
- raw GLFW button states (all indices, not just mapped ones)
- raw axes values
- normalized stick/trigger values
- mod toggle states (CTRL / SHIFT / PRECISIÓN, suspended flag)
- EntityControls flags: Sprint, Sneak, Forward, Backward, Left, Right

Re-running .gptrace while a trace is active restarts the timer with the new
duration.

No other changes. Existing config, bindings, and toggles behave exactly as
in v1.1.0.

1.1.0 gamepadcompanion
1.22.0-pre.1 - 1.22.2
58 May 12th at 10:46 PM gamepadcompanion-1.1.0.zip 1-click install

▎ v1.1.0 — Automatic support for PS4-style controllers: DualShock 4 (DirectInput) and GameSir Cyclone 2 in PS4 mode are now detected without
▎ configuration. The mod identifies the layout on first poll by axis signature or device name, and correctly remaps sticks, signed triggers, and
▎ face buttons. PS4 layouts no longer fire ghost actions (Escape menu / world map) when pressing the analog triggers.

1.0.0 gamepadcompanion
1.22.0 - 1.22.2
52 May 11th at 1:09 AM gamepadcompanion-1.0.0.zip 1-click install

Fixed a problem that made the left bumper infinetly loop when opening a container.

0.1.0 gamepadcompanion
1.22.0 - 1.22.2
43 May 11th at 12:16 AM Empty gamepadcompanion-0.1.0.zip 1-click install

98 Comments (oldest first | newest first) (threaded | flat)

Lyn_, 2 days ago (modified 2 days ago)

Having a strange issue with the Steam Controller on SteamOS, I appear to be stuck spinning in a circle while looking up and left with no controller input. At first I was able to get controller input working by using flatseal (although I was still stuck spinning in a circle) but after relaunching that stopped working. I'm using the "gamepad with joystick trackpad" preset with Steam Input otherwise turned off (it can't be disabled for the Steam Controller.)  

 

Edit: It did take my input again after relaunching.. then didn't after. Seems to arbitrarily decide if it wants to accept my controller input or not but always stuck spinning regardless. 

ElSublimePeluca , 2 days ago
@Lyn_: Having a strange issue with the Steam Controller on SteamOS, I appear to be stuck spinning in a circle while looking up and left with no controller input. At first I was able to get controller input working by using flatseal (although I was still stuck sp

The steam controller uses different drivers depending on the mode, gecko if I remember correctly outside of steam, I need you to run the commands .gptrace on the chat and send me the logs that appear 

lolmatter0, 4 days ago

Running into a strange Issue, Movement isn't locked when using chat.

ElSublimePeluca , 3 days ago
@lolmatter0: I am on Ver 1.22.2

That's how I made it, since the virtual keyboard is controlled using the d-pad, not the joystick, this because it let's me move while typing using my ring for the joystick and my thumb for the d-pad

Azatroll, Aug 7th at 8:25 AM

submitted some issue on github

ElSublimePeluca , 5 days ago
@Azatroll: submitted some issue on github

Fixed and added on the new release

pngwn, Jul 28th at 5:36 PM (modified Jul 28th at 5:37 PM)

I'm enjoying this! I wanted to get it compatible with https://mods.vintagestory.at/rkncrafting though, and haven't been able.

I am not able to assign a button to the Alt key, which is the default modifier key for RKN Crafting. I go to the Buttons tab in the Settings, click the button next to the "Y", click "Assign a single key", and it does not do anything after pressing Alt.

So, I thought I could get around it by assigning the RKN modifier to something like "E". After doing that, I perform the same steps in the Buttons tab except I assign "Y" to the "E" key. This completes, however holding "E" and right clicking on the ground does not perform the crafting action like I'd expect. I'm guessing that your system does not yet support binding custom modifier keys?

pngwn, Jul 29th at 1:55 AM (modified Jul 29th at 1:55 AM)
@ElSublimePeluca: Glad your liking it, the new release should fix both problems, since both cases were not considered.

Thanks! I was able to bind LAlt to "A", but holding A and pressing LT (right-click) did not work to perform the crafting like on my mouse and keyboard.

ElSublimePeluca , Aug 2nd at 7:34 PM
@pngwn: Thanks! I was able to bind LAlt to "A", but holding A and pressing LT (right-click) did not work to perform the crafting like on my mouse and keyboard.

The new release should fix it, be advised though, I haven't tested it myself since I didn't understand RKN Crafting mechanics

pngwn, Aug 3rd at 11:46 AM
@ElSublimePeluca: The new release should fix it, be advised though, I haven't tested it myself since I didn't understand RKN Crafting mechanics

I can RKN Craft now, awesome!!

Next I would love if it was compatible with Hydrate or Diedrate. Ctrl+Hold Rightclick is used to drink from a block of water, like from a pond or lake. I press LStick to activate CTRL, and hold LT (right-click) but do not drink like I am able to using mouse and keyboard. 

Tinyn, Jul 19th at 4:05 AM

This is pretty amazing. 
One Small problems, Sometimes I want to just reach over and use my mouse anyway. But the "Yellow Virtual cursor" locks down the actual Mouse. Something to let me just use the normal Mouse in the middle of everything

ElSublimePeluca , Jul 19th at 4:18 PM
@Tinyn: This is pretty amazing. One Small problems, Sometimes I want to just reach over and use my mouse anyway. But the "Yellow Virtual cursor" locks down the actual Mouse. Something to let me just use the normal Mouse in the middle of everything

Hello, are you holding your top left bumper while trying to use your mouse? that should be the only moment the mouse gets locked, if not, can you type on the chat .gptraces and send the results?

Tinyn, Jul 19th at 7:54 PM
@ElSublimePeluca: Hello, are you holding your top left bumper while trying to use your mouse? that should be the only moment the mouse gets locked, if not, can you type on the chat .gptraces and send the results?

It 'locks' on to the Yellow Cursor whenever a UI element comes up. 
The behavior of the controller stuff is fine. Course D-Pad movements work. Hold down RB and detailed R-Thumbstick mouse movement works.  .gptraces is clean, the controller input and behavior is exactly as expected. 

The 'problem' is when touching the actual physical mouse. Controller set down, no buttons pressed. Any time the Yellow Cursor is active, any time any UI element is up,  The actual mouse can move away from the yellow cursor, but it is immediately reset back to the yellow cursor.  This happens both when RB is down or up. 

It looks like your calling.. something .SetCursorPosition(YellowCursor.position) every frame. And that means any time the real mouse tries to move away, it can't. 


This last part is a little more uncertain. Sometimes this mouse snagging keeps happening, when I alt-tab out of VS.  Not always, most of the time its fine, but sometimes, if the Yellow Cursor is up in VS, and I alt-tab out to this browser, the Mouse-snapping behavior continues. VS isnt visible, but the mouse is still being snapped back to VS's position every frame. 


I dont have any other mods installed.Its just this. No Steam. 

ElSublimePeluca , Jul 21st at 9:33 PM
@Tinyn: It 'locks' on to the Yellow Cursor whenever a UI element comes up. The behavior of the controller stuff is fine. Course D-Pad movements work. Hold down RB and detailed R-Thumbstick mouse movement works. .gptraces is clean, the controller input and behavio

Ah, I understand, yes, you're correct about the reason this happens and yes is a symptom of my method, I did it so you could navigate using the d-pad otherwise it would make jumps to the corners of the screens, sadly, I didn't manage to find a work around, I'll maybe look into it again but unfortunately my keyboard gave out on me last weekend so I'll only be able to work on the mod again somewhere after my next paycheck next month

ElSublimePeluca , Jul 24th at 1:58 AM
@ElSublimePeluca: Ah, I understand, yes, you're correct about the reason this happens and yes is a symptom of my method, I did it so you could navigate using the d-pad otherwise it would make jumps to the corners of the screens, sadly, I didn't manage to find a work around

Update: this is fixed in v1.6.0.

You can now just reach over and grab the mouse mid-game. The moment the mod
sees the physical mouse move, it hides the yellow cursor and gets out of the
way — the real mouse works normally until you touch the right stick or D-pad
again, at which point the gamepad cursor takes back over (right where your
mouse is, so nothing jumps around).

The alt-tab issue is fixed too: while Vintage Story doesn't have window focus,
the mod no longer touches the OS mouse at all, so it won't drag your cursor
back into a background VS window anymore.

Grab the update and let me know if anything still feels sticky.

(Heads up: my keyboard is still dead, so I put this update together — and wrote
this reply — with AI assistance. Apologies if the wording reads a little off.)

ElSublimePeluca , Jul 24th at 9:40 PM
@Tinyn: do you have a kofi or anything?

I don't, why?

NotTheGian, Jul 25th at 1:14 AM
@ElSublimePeluca: I don't, why?

he wanna pay you

Tinyn, Jul 25th at 8:58 PM
@ElSublimePeluca: I don't, why?

buy you a keyboard?

ElSublimePeluca , Jul 26th at 2:41 AM
@Tinyn: buy you a keyboard?

Oh, no need to, is not that I don't have money, I just want to wait to my next paycheck to be able to have some spare money since I had to buy a new laptop too, thanks for the wish to help though, besides, in my country receiving money internationally is complicated enough.

Crowetry, Jul 14th at 8:55 PM

First and foremost, I want to thank you for making this mod. My wife has an old hand injury that makes using keyboard and mouse difficult, and I really wanted to play Vintage Story with her. Where alot of the other controller support mods don't really add full functionality, this seems to do most of it. (The only thing I've noticed is that she slides around on the ground when moving instead of running or jumping. It's not that big of a deal.)

 

We've been mostly fine, but we made a custom modpack. Whenever she pulls out a weapon, it swings non-stop without her pulling any triggers. We have a feeling this is because of the "Combat Overhaul" mod we have installed. Do you know if there is any way to make it stop, so she can use the weapons normally? Is there a setting she can mess with? 

 

Speaking as someone who does use keyboard and mouse I can tell you that I haven't really noticed any particularly complex mechanics with Combat Overhaul it as of yet, especially since we dont PvP or anything. I'm not sure if it's better to just uninstall it but we liked the added weapon variety. The only way we've found to get her to stop swinging is to put something in her offhand when shes holding a two-handed weapon.

ElSublimePeluca , Jul 16th at 7:30 PM (modified Jul 16th at 7:34 PM)
@Crowetry: First and foremost, I want to thank you for making this mod. My wife has an old hand injury that makes using keyboard and mouse difficult, and I really wanted to play Vintage Story with her. Where alot of the other controller support mods don't really add

Hello, I'm glad this mod helps you, and yes, it's most likely that the problem is combat overhaul since it changes the library that my mod uses to translate the inputs, I need you to connect the controller and while the swinging is happening run the commands .gpaxes and .gptrace on the in-game chat and paste the results here so I can pin point where the incompatibility is

ElSublimePeluca , Jul 18th at 2:30 AM
@Crowetry: It was a rather large wall of text, so I'm not sure if I can post it here. Its in a pastebin, but here is the result of from client-main.log.

Thanks for the tracem, it actually clears my mod: during the whole
capture the triggers read 0.00 and no input was mapped, yet the weapon
was swinging. That means GamepadCompanion isn't sending the attack;
Combat Overhaul is generating the swing on its own. Two things confirm
it: 1: the mod delivers attacks through the vanilla in-world
mouse channel, and Combat Overhaul replaces the melee system entirely,
so they're on different rails. 2: your own workaround (an item in the
offhand stops it) is a Combat Overhaul two-handed-weapon behavior.
Quick check to be 100% sure: draw a two-handed weapon, disable
GamepadCompanion (or unplug the controller) and see if it still swings
with keyboard+mouse while you touch nothing, which
points to a Combat Overhaul bug to report to them. Full gamepad-attack
support inside Combat Overhaul would need me to hook their input API,
which I'm looking into.

ElSublimePeluca , Jul 28th at 11:01 PM
@Crowetry: It was a rather large wall of text, so I'm not sure if I can post it here. Its in a pastebin, but here is the result of from client-main.log.

The latest release fixed a problem with how the mouse click flag is handled, this may have fixed your problem, please, give it a try.

swanii, Jul 13th at 1:20 PM

Hi i'm having an issue where i cannot actually get the mod to function on my steam deck, its installed, shows as needing no dependencies, yet i get no indication that the game is picking up the inputs as it should, i've tried with steam input on and off numerous times with both my Xbox one controller and the deck itself and no luck, the controller defintely functions as i tested it on my windows PC with the Mod to see if it would be good enough for my partner and everything was fine, but obviously Linux SteamOS is a different ball park. i have tried it via bluetooth and direct usb connection in both desktop and gaming mode with no luck whatsoever

ElSublimePeluca , Jul 16th at 7:32 PM (modified Jul 16th at 7:33 PM)
@swanii: Hi i'm having an issue where i cannot actually get the mod to function on my steam deck, its installed, shows as needing no dependencies, yet i get no indication that the game is picking up the inputs as it should, i've tried with steam input on and off n

Hello, it's most likely the profile you're using with steam input, you need to use the standard steam input profile called gamepad and trackpad, if it still doesn't work I'll need you to run .gpaxes and .gptrace in the chat and paste the result here, I know this works on steam deck since I use it to play too, also, is your steam deck the LCD versión or the OLED version?

GingeeMaestro, Jul 16th at 7:40 PM
@ElSublimePeluca: Hello, it's most likely the profile you're using with steam input, you need to use the standard steam input profile called gamepad and trackpad, if it still doesn't work I'll need you to run .gpaxes and .gptrace in the chat and paste the result here, I kn

Hi it's the LCD model, i don't see any option for gamepad and trackpad where the xbox controller is concerned, just the steam deck controller itself, i was trying the standard gamepad steam input profile on the xbox controller, let me just get those logs (this is my account, i used my partners account for the first post)

ElSublimePeluca , Jul 16th at 8:29 PM (modified Jul 16th at 8:30 PM)
@GingeeMaestro: Hi it's the LCD model, i don't see any option for gamepad and trackpad where the xbox controller is concerned, just the steam deck controller itself, i was trying the standard gamepad steam input profile on the xbox controller, let me just get those logs

I missed the Xbox controller part, I will look into that, I can confirm it should work with Xbox based controllers and ps4 based controllers, but can't on pure xbox one controllers, but the steam deck controls should work with the gamepad and trackpad layout, I'll only be only to look into that with the logs

ElSublimePeluca , Jul 18th at 2:32 AM
@GingeeMaestro: https://pastebin.com/izmaSy2N the log file was apparently too big even when cut in half to post so i had to make a pastebin link

Ah, I see the problem, you're running the flatpak version, by default flatpak packages have no access to external input, but you can fix this with the app Flatseal and then search for the toggle that allows it to read external devices input outside the sandbox, after that it should work.

GingeeMaestro, Jul 18th at 9:17 AM (modified Jul 18th at 9:18 AM)
@ElSublimePeluca: Ah, I see the problem, you're running the flatpak version, by default flatpak packages have no access to external input, but you can fix this with the app Flatseal and then search for the toggle that allows it to read external devices input outside the sa

Fantastic it is finally functional, thank you, but not properly of course, 1 step forward, 2 back 😂 now the inputs are all muddled, the start and backbutton keys do nothing, right bumper is start, pressing is L3 and R3 (The analog stick) does not engage shift or control, nothing does for that matter, i can't engage the precision cursor for menus with right bumper, i have no idea how its all so mix and match but heres the pastebin after running .gpaxes and .gptrace 
https://pastebin.com/0dRvM5B2

GingeeMaestro, Jul 18th at 9:25 AM
@GingeeMaestro: Fantastic it is finally functional, thank you, but not properly of course, 1 step forward, 2 back 😂 now the inputs are all muddled, the start and backbutton keys do nothing, right bumper is start, pressing is L3 and R3 (The analog stick) does not engage s

AHA, the issue is either the bluetooth input, or the steam input, because in my curiosity i plugged the deck into our tv dock and the controller directly into the dock, disabled bluetooth and steam input and presto, it works flawlessly, but if you want help ironing out the issues i had prior to this discovery please let me know i can do anything to help 

ElSublimePeluca , Jul 18th at 9:12 PM
@GingeeMaestro: AHA, the issue is either the bluetooth input, or the steam input, because in my curiosity i plugged the deck into our tv dock and the controller directly into the dock, disabled bluetooth and steam input and presto, it works flawlessly, but if you want he

Found the problem and it's not Bluetooth interference or Steam Input. Over USB your controller uses the xpad driver; over Bluetooth Linux uses the generic HID driver, which reports the buttons in a completely different order (with gaps). The mod was reading raw button 7 as Start that's physically your right bumper, exactly what you saw. L3/R3 sit at 13/14 but the mod was reading 8/9. Your sticks, triggers and D-pad were fine. v1.5.0 adds a dedicated layout for Bluetooth Xbox pads. One thing I couldn't verify from your log: Start and Back never showed up in the 15s trace at all. Could you run .gptrace again over Bluetooth and press only Start, Back, L3 and R3? If they still don't register, that's Steam Input grabbing them and I'll need a different fix for those. Also worth knowing: you changed three things at once (dock/USB, Bluetooth off, Steam Input off). The USB switch alone explains why it worked, so you don't need to keep Steam Input disabled.

I did not detect this problem because I used my gamesir cyclone with the USB dongle, which reports as xpad.

GingeeMaestro, Jul 20th at 10:54 PM
@ElSublimePeluca: Found the problem and it's not Bluetooth interference or Steam Input. Over USB your controller uses the xpad driver; over Bluetooth Linux uses the generic HID driver, which reports the buttons in a completely different order (with gaps). The mod was readi

Hi there, sorry for the late reply, i'm guessing maybe you don't need those stack traces as i just saw the 1.5 changelog, will update the mod for our next session likely tomorrow, we've been running into an issue where the left trigger isn't correctly picking up things from the ground (Bowls, crocks, stacked firewood, coal, leaning tools) i just decideds it doesn't want to work, the only solution i found (this was using the USB connected xbox controller) was pressing the left trigger on the steam deck which is actually binded as right click through steam input, which fixed the issue, will running .gptrace help find the route of an issue like that, be happy to help if thats the case, and if you still need those stack traces for the buttons you previously mentioned let me know and i'll provide those too.
also it could be entirely unrelated, but since getting the mod working, in our lan world my partners character doesn't animate correctly, they just kind of like around, not moving their legs, wondering if maybe its a quirk with how the mod behaves in a multiplayer settings

GingeeMaestro, Jul 21st at 2:23 PM
@GingeeMaestro: Hi there, sorry for the late reply, i'm guessing maybe you don't need those stack traces as i just saw the 1.5 changelog, will update the mod for our next session likely tomorrow, we've been running into an issue where the left trigger isn't correctly pic

actually ran into another issue today, when using bluetooth, the left and right trigger are now backwards to what they were previously, left trigger is now left click and right trigger is now right click, instead of the other way around, i tried enabling steam input to rebind left trigger to right and right trigger to left, but it caused double inputs, swapped back the ol reliable USB cable again as that still works just fine

ElSublimePeluca , Jul 21st at 9:39 PM
@GingeeMaestro: actually ran into another issue today, when using bluetooth, the left and right trigger are now backwards to what they were previously, left trigger is now left click and right trigger is now right click, instead of the other way around, i tried enabling

That's actually how is supposed to work for picking up things from the ground, something tells me that your steam input is somehow compromised, because to pick up things from the ground the actions are crouch with right stick->right trigger to pick up, or am I not understanding your problem? (even though I understand English I still struggle with "common" talk outside work) And the Bluetooth problem I'll the tracem again, I need to make adjustments manually since Bluetooth wasn't contemplated for the mod, only USB method (either cable or dongle), unfortunately though my keyboard gave out on me so I wouldn't be able to deliver you a fix until somewhere next month after receiving my paycheck

GingeeMaestro, Jul 23rd at 10:47 AM (modified Jul 23rd at 10:49 AM)
@ElSublimePeluca: That's actually how is supposed to work for picking up things from the ground, something tells me that your steam input is somehow compromised, because to pick up things from the ground the actions are crouch with right stick->right trigger to pick up, or

I will try to clarify, i don't know how my steam input could be compromised, i should have mentioned now looking back, that it works perfectly fine without steam input and reads the raw input of the xbox controller over bluetooth just fine without steam input, enabling just creates double inputs.
The issue, is that before using the bluetooth mode the controls (Via USB connection) where Right trigger to break blocks and other breakables, Left trigger to pick up/interact with things (which even with 1.5, this is still the case for controls via USB connection), which is familiar to anyone who would've played minecraft on console or via controller mods for java, to have them swapped around to Right trigger to interact and Left Trigger to break blocks is too much of a shift for the average controller user, in this case my partner, it makes sense to someone who can think of them (the triggers) as replacements for the left and right click of a mouse, but not to your average controller user.
If there is a way for me to change them around myself i will happily do so, but there is no option for the triggers in the mod's config menu
a small side note, xbox series S and X controllers have a little button inbetween the Start and Back button which typically functions and the screenshot button on xbox's and even works on steam, however it seems to have defaulted to A/spacebar for the control scheme and just makes you jump, in a game like vintage story, having the extra button could be put to good use, maybe as the Handbook button, i have the stack trace here for the bluetooth control scheme showing the use of the triggers, and for the A button and the screenshot button sharing the same function (jumping)
https://pastebin.com/dCfmFAbF

ElSublimePeluca , Jul 24th at 2:00 AM
@GingeeMaestro: I will try to clarify, i don't know how my steam input could be compromised, i should have mentioned now looking back, that it works perfectly fine without steam input and reads the raw input of the xbox controller over bluetooth just fine without steam i

Thanks for the detailed reports and the trace — huge help. v1.6.0 covers most
of it:

Triggers over Bluetooth (fixed). You were right, they were backwards. Your Xbox
pad over Bluetooth reports the right trigger on the axis my code assumed was the
left one (the opposite of how it comes in over USB/xpad), so RT and LT ended up
swapped. Fixed — over Bluetooth it's back to RT = break/attack, LT = interact/
pick up, same as USB.

Manual trigger swap (new). In case any controller ever comes in reversed again,
there's now a toggle: Settings → GamepadCompanion → Sensitivity → "Swap triggers
(LT/RT)", or type /gpswaptriggers in chat. You shouldn't need it on your pad
anymore, but it's there.

The Share/Capture button. From your trace, that little button seems to send the
exact same code as A (raw button 0) — which is why it makes you jump; as far as
the game is concerned it literally is A. If that's really the case I can't bind
it to anything separate. Could you run .gptrace and press only the Share button
for ~5 seconds? If it shows a distinct button number I'll gladly map it to the
Handbook. If it still comes through as A, it's a Bluetooth/hardware quirk I can't
work around.

LT not picking up bowls/crocks/firewood (USB). I want to look closer at this one.
LT is right-click (interact) and those pickups are right-click actions, so it
should work. Could you run .gptrace while a pickup is failing? I want to see
whether the right-click is actually firing at that moment — that'll tell me if
it's the mod or something else.

Partner not animating in LAN. The mod is client-side only and drives your own
character's controls the same way the keyboard does, so it shouldn't change how
your partner's character animates on your screen. To rule it out: is your partner
also running GamepadCompanion, and are they on a controller or keyboard? That'll
help me narrow it down.

(Heads up: my keyboard is still out of commission, so I built this update and
wrote this reply with AI assistance — apologies if the tone reads a bit off.
Thanks again for testing, it genuinely helps.)

GingeeMaestro, Jul 24th at 9:44 AM
@ElSublimePeluca: Thanks for the detailed reports and the trace — huge help. v1.6.0 covers mostof it: Triggers over Bluetooth (fixed). You were right, they were backwards. Your Xboxpad over Bluetooth reports the right trigger on the axis my code assumed was theleft one (th

I appreciate the disclosure for use of AI
i will run a stack trace the next time the triggers fail in that manner

as for the mod being client side, doesn't that mean it should work whether or not the host has the mod installed, because as far as we saw, the mod did not function until i also installed it as well (as my partner is the controller user i figured only they'd need it)

they are the one that is not properly animated in this way, as the actual controller user, this isn't really that big of a deal honestly, we got over it ages ago, just thought it was worth mentioning encase it was related to your mod, i didn't happen until we started using it, as previously we were using steam input to fully mimic mouse and keyboard and my partners character was animated as it should be

Here is a stack trace, i typed .gptrace, i then held the screenshot button for a few seconds, and afterword held the actual A button for a few as well, hopefully there can be some distinction between them
thank you again https://pastebin.com/GcEF3Sq9

ElSublimePeluca , Jul 24th at 10:15 PM
@GingeeMaestro: I appreciate the disclosure for use of AIi will run a stack trace the next time the triggers fail in that manner as for the mod being client side, doesn't that mean it should work whether or not the host has the mod installed, because as far as we saw, th

Thanks for the trace — it answered all three questions, and two of them
turned out to be real bugs in my mod. Both are fixed in v1.7.0.

Share vs A: no fix possible, and the trace is conclusive. I collapsed
it to the transitions and your two presses look like this:

   Share held 5.6s -> rawBtn=[1000000000000000000]  mapBtn=A
   A     held 2.6s -> rawBtn=[1000000000000000000]  mapBtn=A

Identical, byte for byte — only the stick noise differs. Over Bluetooth
your controller reports the Share/screenshot button as the exact same
raw button as A, so there is nothing for the mod to tell apart. That's
also why they share the jump function. Binding Share to the Handbook
isn't possible while the pad enumerates itself that way.

The mod being client-side: you were right, and it was my fault. The
code was client-only, but the mod's metadata didn't declare it, so
Vintage Story defaulted it to "universal mod, also required on the
server" — and when you joined a server that didn't have it, the client
silently disabled it. That's exactly why it only started working once
your partner installed it too. v1.7.0 declares it client-side properly:
install it only on the machines that actually use a controller, and it
works on any server, vanilla host included.

The gliding character: that one was my mod, and your detail about
Steam Input is what gave it away. The mod was writing movement straight
into the player's control flags. That moves you on your own screen, but
the game only tells the server about movement by diffing those same
flags on a 20ms tick — and it reassigns them from the keyboard state
right before diffing. My value was written between two ticks, so at the
moment of the diff it had already been wiped and the "moving forward"
packet never went out. The server kept believing your partner was
standing still and relayed that to you, and animations for other
players are driven entirely by what the server says. Hence the glide,
and the same for jumps. With Steam Input it worked because the keyboard
really was pressed. v1.7.0 routes movement and jump through the same
channel the keyboard uses, so the server sees them and everyone gets
the animations. If you can, please confirm it in LAN — that's the one
thing I couldn't test on my end.

One behaviour change from that fix: jump now goes through the engine's
normal path, so it also obeys the engine's rules — A no longer jumps
while an inventory or other dialog is open, and it won't fire when
there's no room to stand up. That matches what the spacebar does.

Two small things from your log: you have gamepadcompanion 1.4.0, 1.5.0
and 1.6.0 sitting in your Mods folder at the same time. The game only
loads the newest one, so it's harmless, but it's worth deleting the old
zips so you don't end up testing a version you didn't mean to. And yes
— please do send the stack trace next time the triggers fail, that's
still the missing piece for that one. 

Again this was written using AI, btw, did ythe bumpers work as intended? the trace only shows A for input

GingeeMaestro, Jul 25th at 12:18 PM
@ElSublimePeluca: Thanks for the trace — it answered all three questions, and two of themturned out to be real bugs in my mod. Both are fixed in v1.7.0. Share vs A: no fix possible, and the trace is conclusive. I collapsedit to the transitions and your two presses look lik

Great work!

yes the bumpers seem to be working just fine

i was just curious, i found the steam deck's bluetooth signal not good enough, the controller disconnects too often and messes up the controls, so i swapped my partner to the xbox elite controller dongle we had and installed the Xone drivers for linux https://github.com/medusalix/xone

i have another stack trace of holding the A and Screenshot button here, maybe it will be different with these drivers and method https://pastebin.com/6wHfY16B 

also the triggers haven't failed since updating the mod to 1.6, i'm wondering if these changes

"- The virtual cursor no longer locks your physical mouse. With a GUI open you
  can just reach over and use the real mouse — the yellow cursor steps aside the
  moment you move the mouse, and the gamepad takes back over as soon as you touch
  the right stick or the D-pad (it reappears right where your mouse is, so nothing
  jumps).

  • Fixed the mouse being dragged back into Vintage Story while the game was in the
      background. When the window isn't focused (alt-tab), the mod no longer touches
      the OS mouse at all."

are the reason for this, who knows

ElSublimePeluca , Jul 26th at 2:43 AM
@GingeeMaestro: Great work! yes the bumpers seem to be working just fine i was just curious, i found the steam deck's bluetooth signal not good enough, the controller disconnects too often and messes up the controls, so i swapped my partner to the xbox elite controller d

I'll look into that some time tomorrow, and no, that change is because a user found it annoying that the mouse was locked to the yellow cursor, it didn't have a real impact besides not allowing you to jump when on an interface so I applied the fix, the bump being incorrectly assigned are because of the drivers

GingeeMaestro, Jul 26th at 6:26 PM
@ElSublimePeluca: Looked at the trace and sadly there is nothing I can do, the button you were pressing still reported as A since xone still reports as xpad at OS level.

well it was worth a shot

meanwhile, the dreaded left trigger curse happened again, couldn't pick up anything, and this time i have the stack trace for you, hopefully it can help you fix the problem

https://pastebin.com/qdjXAamm

ElSublimePeluca , Jul 27th at 1:33 AM
@GingeeMaestro: well it was worth a shot meanwhile, the dreaded left trigger curse happened again, couldn't pick up anything, and this time i have the stack trace for you, hopefully it can help you fix the problem https://pastebin.com/qdjXAamm

No exception in that log — but what you captured turned out to be better than
a stack trace: the gptrace caught the curse red-handed.

Here's what it shows: the mod was reading your left trigger perfectly. I can
see every one of your ~20 (increasingly desperate, I imagine) presses arriving
as clean 0.00 → 1.00 → 0.00 edges. The input side was fine — the game itself
was refusing the interaction.

Root cause: Vintage Story has a "free mouse" key (Alt by default) that
releases the mouse cursor while you hold it. The game never clears its
keyboard state when the window loses focus, so if an alt-tab, the Steam
overlay or an on-screen keyboard eats that key's release event, the game is
left forever believing the key is held. That silently un-grabs the mouse,
which kills trigger actions — while camera, movement and buttons keep working.
Which is exactly the curse.

One question to confirm it 100%: was jumping ALSO dead while the curse was
active? The theory predicts it should have been.

v1.7.1 is up with the fix:
- Triggers now follow the game's own interaction rule, so they keep working
  even in that un-grabbed state.
- Pressing a trigger during the curse now auto-clears the stuck key and heals
  the whole thing — no more restarting the world.
- And if it ever comes back anyway: run .gptrace 5 while it's happening. The
  trace now records the exact game state that decides this, so one capture
  will end the mystery for good.

Thanks for the log — this one had been haunting us for a while, and your
capture is what finally cornered it.

GingeeMaestro, Jul 27th at 1:40 PM
@ElSublimePeluca: No exception in that log — but what you captured turned out to be better thana stack trace: the gptrace caught the curse red-handed. Here's what it shows: the mod was reading your left trigger perfectly. I cansee every one of your ~20 (increasingly desper

Sure enough, the curse hasn't been lifted, heres a log of it happening again, interestingly it allowed us to pick up some clay ingot molds, but nothing else, we tried it on tools and a placed crucible with no luck, just the ingot molds got picked up

https://pastebin.com/Snjh37ZZ

ElSublimePeluca , Jul 28th at 11:00 PM
@GingeeMaestro: Sure enough, the curse hasn't been lifted, heres a log of it happening again, interestingly it allowed us to pick up some clay ingot molds, but nothing else, we tried it on tools and a placed crucible with no luck, just the ingot molds got picked up https

New release launched, since the last two releases I was not able to replicate the problem but the clue of not being able to pick up tools gave an idea, maybe it was the mouse click flag, hope this one fixes it.

Lyn_, 2 days ago
@ElSublimePeluca: Ah, I see the problem, you're running the flatpak version, by default flatpak packages have no access to external input, but you can fix this with the app Flatseal and then search for the toggle that allows it to read external devices input outside the sa

Had this same issue, took me a bit to dig for it. Since most users on Steam Deck/Linux are probably using the Flatpak version definitely think this should be in the description! Ty for the mod. 

VSDominate, Jul 8th at 1:48 PM

Not sure if i am doing something wrong or not but everything works great except L3 isnt registering so I am unable to do anything requiring the shift key :/

ElSublimePeluca , Jul 12th at 12:25 AM
@VSDominate: Not sure if i am doing something wrong or not but everything works great except L3 isnt registering so I am unable to do anything requiring the shift key :/

What controller do you have? And can you run .gpaxes and .gptrace commands on the in-game chat and send me what they return?

billietisms, Jul 5th at 11:23 AM

hi, i have an 8bitdo xinput wired controller, and have put the files into the vintagestorydata mods folder, still doesn't work. i'm on windows 11. is there anything else i have to do?

ElSublimePeluca , Jul 6th at 1:39 PM
@billietisms: hi, i have an 8bitdo xinput wired controller, and have put the files into the vintagestorydata mods folder, still doesn't work. i'm on windows 11. is there anything else i have to do?

Hello, did you manually turn on the mod in the mod menu? If you did I need you to run the command .gpaxes and .gptrace on the ingame chat

NotTheGian, Jun 14th at 12:21 AM (modified Jun 14th at 12:54 AM)

joder, que buen nombre de usuario

crasheó :c

Crash Report
Running on 64 bit Windows 10.0.26100.0 with 14282 MB RAM
Game Version: v1.22.3 (Stable)
13/06/2026 7:52:26 p. m.: Critical error occurred in the following mods: overhaulliblegacycompat@1.1.26, gamepadcompanion@1.3.0
Loaded Mods: amulight@0.0.2, biggerpockets@1.0.6, diversediets@1.0.4, forestpreserve@0.0.4, fragilecharcoal@0.0.1, fuelbriquettes@1.0.2, dolabra@2.0.0, ingotmolds@1.0.0, jsonpatcheslib@1.5.3, labororsmachete@1.0.2, lakulsenhancedvanillatrees@1.1.1, longtermfood@0.6.8, manualdough@1.1.8, morepaperrecipes@2.0.0, overhaulliblegacycompat@1.1.26, raredenseores@0.2.9, spinningwheel@1.2.9, stoneharvesting@1.2.2, uncobblemod@1.1.0, unhallowedpatches@2.0.3, game@1.22.3, vsimgui@1.2.7, worldgenfix@1.3.2, zoombuttonreborn@2.0.2, archering@1.0.7, attributerenderinglibrary@3.1.5, bettererprospecting@3.3.3, bloodtrail@1.2.3, butchering@1.13.4, carryonlib@1.0.0-pre.4, configlib@1.12.0, configureeverything@3.0.0, crafteverything@1.3.4, danatweaks@4.1.0, extrainfo@2.2.1, farmlanddropswithnutrients@1.2.2, fishingplus@1.2.0, gamepadcompanion@1.3.0, geologymap@1.1.0, hunterbackpackprogression@1.0.1, icecycle@1.0.2, khclassconversions@2.0.0, kilnspreading@1.0.2, mealrevariation@3.1.2, metalpots@1.7.9, moregoat@1.1.0, nomusicinterruptionmod@1.0.0, orekiwoofsbeehives@2.0.0, particlesplus@2.5.8, placeonslabs@1.1.3, realisticwater@0.2.2, realmeat@1.6.0, restfulsit@1.1.0, roamingbees@2.0.0, smithingplus@1.9.0-rc.1, statushudcont@4.3.1, tanningredux@1.0.2, toolsmith@1.2.17, treetapredux@1.2.7, truethirdperson@1.0.0-dev.1, vanity@2.5.1-rc.1, creative@1.22.3, vsecomachina@0.6.1, vsroofing@1.5.7, survival@1.22.3, warmweathereffects@1.0.4, watersheds@6.4.2, autoconfiglib@2.0.10, carryon@2.0.0-pre.4, rlldtco0001@2.3.0, paperfletchingmod@1.0.2, quiversfork@0.9.15, shearlib@1.3.0, storagetweaks@1.3.2-rc.1, tailorsdelight@2.2.2, terrainslabs@1.0.16, toolsmithdolabracompat@0.1.4, paperfletchmodxbutcheringcompat@1.0.0, wool@1.9.2
System.Exception: Call to RegisterCallback while game is paused. ExtendedDebug info and developermode is enabled, so will crash on this for reporting reasons.
at Vintagestory.Client.NoObf.ClientMain.RegisterCallback(Action`1 OnTimePassed, Int32 millisecondDelay, Boolean permittedWhilePaused) in VintagestoryLib\Client\ClientMain.cs:line 3282
at Vintagestory.Client.NoObf.ClientMain.RegisterCallback(Action`1 OnTimePassed, Int32 millisecondDelay) in VintagestoryLib\Client\ClientMain.cs:line 3272
at CombatOverhaul.Inputs.ActionListener.OnEntityAction(EnumEntityAction action, Boolean on, EnumHandling& handled) in C:\Users\caiaf\Documents\VSMods\OverhaullibLegacy\source\Inputs\ActionListener.cs:line 314
at Vintagestory.Client.NoObf.InputAPI.TriggerInWorldAction(EnumEntityAction action, Boolean on, EnumHandling& handling) in VintagestoryLib\Client\API\InputAPI.cs:line 40
at Vintagestory.API.Common.EntityControls.AttemptToggleAction(EnumEntityAction action, Boolean on) in VintagestoryApi\Common\Entity\EntityControls.cs:line 351
at Vintagestory.API.Common.EntityControls.set_Right(Boolean value) in VintagestoryApi\Common\Entity\EntityControls.cs:line 226
at GamepadCompanion.Input.MovementMapper.Apply(GamepadState current)
at GamepadCompanion.Input.GamepadInputDriver.OnTick(GamepadState current, GamepadState previous, Single dt)
at GamepadCompanion.Input.GamepadRenderer.OnRenderFrame(Single deltaTime, EnumRenderStage stage)
at Vintagestory.Client.NoObf.ClientMain.TriggerRenderStage(EnumRenderStage stage, Single dt) in VintagestoryLib\Client\ClientMain.cs:line 856
at Vintagestory.Client.NoObf.ClientMain.MainRenderLoop(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 910
at Vintagestory.Client.NoObf.ClientMain.MainGameLoop(Single deltaTime) in VintagestoryLib\Client\ClientMain.cs:line 782
at Vintagestory.Client.GuiScreenRunningGame.RenderToPrimary(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 173
at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 742
at Vintagestory.Client.ScreenManager.OnNewFrame(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 686
at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(FrameEventArgs e) in VintagestoryLib\Client\ClientPlatform\GameWindow.cs:line 112
at OpenTK.Windowing.Desktop.GameWindow.Run()
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 354
at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 131
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 95
Roxreeves, May 19th at 11:52 PM

This is my first comment haven't even tested the mod but now having to take care of my newborn daughter and wanting to port VS to my steamdeck while I'm watching her with this will now be complete,
peluca sabe.
you're the goat,big hug if i run into a trouble i will come yelling like a gurl

ElSublimePeluca , May 20th at 3:11 AM
@Roxreeves: This is my first comment haven't even tested the mod but now having to take care of my newborn daughter and wanting to port VS to my steamdeck while I'm watching her with this will now be complete,peluca sabe.you're the goat,big hug if i run into a troubl

Jajaja, glad to hear it can help you, yes, I myself use this mod with my steam deck when I don't want to turn on the desktop, you just need to put steam input with the "Gamepad and trackpad" mode and it will work perfectly, saludos compañero

Kainda, May 19th at 3:54 AM

Hello! Thank you for showing us English folks this mod.
Can you link the Github repo please?

springrain, May 16th at 3:23 AM

hi. the control scheme is very jumbled for me on windows 10 with an 8bitdo ultimate 2c wireless controller. this controller uses xinput and has the same layout as an xbox controller with the addition of two extra Back/Start-style buttons and two extra shoulder bumpers.

 

here is an example of the jumbled control scheme:

Right Trigger | camera vertical axis (in the normal trigger position, the camera is constantly moving up)

Right Stick left | camera left and right mouse click (i can place blocks by moving the stick left)

Right Stick right | camera right and some mouse button (i can click on menu buttons by moving the stick right)

most of the controls are similarly mixed up. if there's something i can do to help fix the issue then please tell me 😃

pizza2004, May 15th at 4:01 AM

Hello!  I am curious whether you are on the official Discord?  I had some questions I was wanting to ask you about your mod that it would be better to ask more privately.

mayonnaise, May 14th at 10:26 PM

will this work / be redundant on Steam Deck? might consider using this on there if it has stuff that the Steam Deck doesn't offer...

ElSublimePeluca , May 15th at 3:32 PM (modified May 15th at 3:33 PM)
@mayonnaise: will this work / be redundant on Steam Deck? might consider using this on there if it has stuff that the Steam Deck doesn't offer...

Yes, it works on steam deck, I tested it myself and it works with the xbox layout perfectly, I actually made this mod with help of Claude Code because I wanted a more analog feeling

pngwn, May 11th at 1:35 PM (modified May 11th at 1:35 PM)

Issue on Windows: My camera is forced upward and continues spinning to the left. I'm not able to control my camera. All other buttons and movement seem to work.

pngwn, May 12th at 10:36 AM
@ElSublimePeluca: Ah, I know exactly what the problem is, what controller are you using?

I'm using this one (just a cheap knockoff) https://a.co/d/0g3E0OKf

And these are the logs I see:

GamepadCompanion: gamepad connected on jid=0: Wired Controller (buttons=18, axes=6)
GamepadCompanion: raw axes: a0=0.00 a1=0.00 a2=0.00 a3=-1.00 a4=-1.00 a5=+0.06
ElSublimePeluca , May 12th at 10:52 PM
@pngwn: I'm using this one (just a cheap knockoff) https://a.co/d/0g3E0OKf And these are the logs I see: GamepadCompanion: gamepad connected on jid=0: Wired Controller (buttons=18, axes=6) GamepadCompanion: raw axes: a0=0.00 a1=0.00 a2=0.00 a3=-1.00 a4=-1.00 a5=+

Ok, It was half what I suspected, your controller uses DirectInput instead of Xpad, since I don't have a DirectInput controller, please test it, there's a chance the buttons and axis are inverted for some inputs, if that the case tell me what action each button trigger and what direction each axi points to but with the changes it should work.

pngwn, May 13th at 10:57 AM
@ElSublimePeluca: Ok, It was half what I suspected, your controller uses DirectInput instead of Xpad, since I don't have a DirectInput controller, please test it, there's a chance the buttons and axis are inverted for some inputs, if that the case tell me what action each

Great! The right stick controlls the camera as expected now. The next issue I noticed is with movement, the left stick. I will hold left stick fully up and start moving forward. But after 4-5 seconds, my pace will suddenly change. It will be an entirely random walk speed. It may be sprinting, or it may be inching forward at a snail's pace. I don't press any other buttons, and keep the left stick exactly in place, but my speed will change randomly every 4-5 seconds.

ElSublimePeluca , May 13th at 11:19 AM
@pngwn: Great! The right stick controlls the camera as expected now. The next issue I noticed is with movement, the left stick. I will hold left stick fully up and start moving forward. But after 4-5 seconds, my pace will suddenly change. It will be an entirely r

Huh, that's new, I need you to use .gpaxes while walking and when you notice the chage in pace use .gpaxes again and send me the logs of both, I'm suspecting a frame desynchronization, happened during my testings but with the right stick.

pngwn, May 13th at 11:08 PM (modified May 13th at 11:11 PM)
@ElSublimePeluca: Huh, that's new, I need you to use .gpaxes while walking and when you notice the chage in pace use .gpaxes again and send me the logs of both, I'm suspecting a frame desynchronization, happened during my testings but with the right stick.

Sure! I ran around a bit and typed .gpaxes every time speed changed. Here are the logs:

GamepadCompanion: gamepad connected on jid=0: Wired Controller (buttons=18, axes=6)

GamepadCompanion: detected Ds4Amazon layout by signed triggers (a3=-1.00, a4=-1.00, btnCount=18)

GamepadCompanion: raw axes: a0=+0.14 a1=-1.00 a2=0.00 a3=-1.00 a4=-1.00 a5=+0.03

GamepadCompanion: raw axes: a0=+0.34 a1=-1.00 a2=0.00 a3=-1.00 a4=-1.00 a5=+0.03
GamepadCompanion: raw axes: a0=+0.21 a1=-1.00 a2=0.00 a3=-1.00 a4=-1.00 a5=+0.03
GamepadCompanion: raw axes: a0=+0.10 a1=-1.00 a2=0.00 a3=-1.00 a4=-1.00 a5=+0.03
GamepadCompanion: raw axes: a0=+0.15 a1=-1.00 a2=0.00 a3=-1.00 a4=-1.00 a5=+0.03
GamepadCompanion: raw axes: a0=+0.08 a1=-1.00 a2=0.00 a3=-1.00 a4=-1.00 a5=+0.03
GamepadCompanion: raw axes: a0=0.00 a1=-1.00 a2=0.00 a3=-1.00 a4=-1.00 a5=+0.03
ElSublimePeluca , May 14th at 12:10 AM
@pngwn: Sure! I ran around a bit and typed .gpaxes every time speed changed. Here are the logs: GamepadCompanion: gamepad connected on jid=0: Wired Controller (buttons=18, axes=6) GamepadCompanion: detected Ds4Amazon layout by signed triggers (a3=-1.00, a4=-1.00,

Ok, that's actually strange, the logs are normal, tell me, when you slow down, the "ctrl" text in the top right corner gets lit up on yellow? If that's the case it means your controller is triggering the sneak command which should be maped to the right stick, also, when do you press any other button on your controller when slowing down? it could be that another button is triggering the command too

pngwn, May 14th at 8:23 PM
@ElSublimePeluca: Ok, that's actually strange, the logs are normal, tell me, when you slow down, the "ctrl" text in the top right corner gets lit up on yellow? If that's the case it means your controller is triggering the sneak command which should be maped to the right st

The "CTRL" does not light up yellow while just holding left stick up, no. When I click the right stick, it does light up, and my movement speed about doubles. If I am moving slowly, then lighting up "CTRL" makes me go at about walking pace. If I am moving quickly, then lighting up "CTRL" makes me go VERY fast.

ElSublimePeluca , May 14th at 10:07 PM
@pngwn: The "CTRL" does not light up yellow while just holding left stick up, no. When I click the right stick, it does light up, and my movement speed about doubles. If I am moving slowly, then lighting up "CTRL" makes me go at about walking pace. If I am moving

Ok, I made a diagnostic build (gamepadcompanion-1.1.1-trace.zip attached) that adds a new chat command .gptrace. It logs the gamepad state every single frame so I can see exactly what your controller is reporting when the speed change happens.

 Setup
1. Remove your current gamepadcompanion-1.1.0.zip from your Mods/ folder.
2. Drop the attached gamepadcompanion-1.1.1-trace.zip in its place.
3. Launch Vintage Story. The mod should work exactly like before, with one extra command.
Send me the answers before doing the trace.
Then, the trace itself. This is what will help me find the speed-change bug:

1. Load a world, find an open area, and let the camera settle.
2. Open chat and type: .gptrace 30 (this starts logging for 30 seconds).
 3. Immediately start walking by holding the left stick fully up. Don't press anything else.
 4. Keep walking in a straight line for the full 30 seconds. If the speed changes at some point, let it happen — that's exactly what we want to capture. Keep the stick steady.
5. After the 30 seconds, please send me the file at: /Logs/client-main.log
If you happen to not see the speed change during those 30 seconds, just run .gptrace 30 again and try once more — but tell me either way.
Sorry and thanks and for the patience with this one.

pngwn, May 15th at 11:02 AM
@ElSublimePeluca: Ok, I made a diagnostic build (gamepadcompanion-1.1.1-trace.zip attached) that adds a new chat command .gptrace. It logs the gamepad state every single frame so I can see exactly what your controller is reporting when the speed change happens. Setup1. Rem

Unfortunately, after swapping the current version of the mod with gamepadcompanion-1.1.1-dev.1.zip, my controller does not seem to get recognized, and does not control the game. The log says this many times:

GamepadCompanion: scan found no joysticks present
ElSublimePeluca , May 15th at 3:43 PM
@pngwn: Unfortunately, after swapping the current version of the mod with gamepadcompanion-1.1.1-dev.1.zip, my controller does not seem to get recognized, and does not control the game. The log says this many times: GamepadCompanion: scan found no joysticks prese

Can you check if you have the 1.1.0 with the 1.1.1? The detection method did not change so it can't be that, also, while having VS open but not in a world disconect and conect again your controller, if none of these work I'll check again, also, do you use program to allow windows to use your controller? Like AntimicroX or DS4Windows?

pngwn, May 15th at 6:53 PM
@ElSublimePeluca: Can you check if you have the 1.1.0 with the 1.1.1? The detection method did not change so it can't be that, also, while having VS open but not in a world disconect and conect again your controller, if none of these work I'll check again, also, do you use

I checked my mods folder, and only the 1.1.1 version of the mod is in there. I disconnected and reconnected the controller as you said, but now it seems to think it is an Xbox controller:

GamepadCompanion: gamepad connected on jid=0: Xbox Controller (buttons=14, axes=6)

GamepadCompanion: detected Ds4Amazon layout by signed triggers (a3=-0.00, a4=-1.00, btnCount=14)
 
So naturally the bindings are not correct. I do not use any programs to allow Windows to use my controller, I just plug and play.
ElSublimePeluca , May 15th at 11:03 PM
@pngwn: I checked my mods folder, and only the 1.1.1 version of the mod is in there. I disconnected and reconnected the controller as you said, but now it seems to think it is an Xbox controller: GamepadCompanion: gamepad connected on jid=0: Xbox Controller (butt

That's strange, this is a sign the controller switched from PS4/DirectInput mode into Xbox/XInput mode — some PS4-compatible clones (maybe yours included) can present themselves either way to Windows, even though the listing only mentions PS4 support.

Before I make you another build, I'd like you to run two quick checks so I know exactly what Windows is seeing right now. Both are safe,
read-only, and take less than a minute total.

Check 1 — joy.cpl

1. Press Win + R, type joy.cpl, hit Enter.
2. Tell me what controller names show up in that window (a screenshot works too).

That window only lists controllers in DirectInput / PS4-style mode. So:
- If your controller appears there (likely as Wired Controller or similar) → it's in PS4 mode and something else weird is going on.
- If it does NOT appear there → it's purely in Xbox/XInput mode right now.

Check 2 — PowerShell

1. Press the Windows key, type PowerShell, open "Windows PowerShell" (regular one, no admin needed).
2. Paste this command and press Enter:

Get-PnpDevice -PresentOnly | Where-Object {
$_.FriendlyName -match 'controller|xbox|wireless|ps4|hid-compliant game'
} | Select-Object FriendlyName, Class, Status, InstanceId | Format-Table -AutoSize

3. Copy the text it prints and paste it into your reply.

The Class column is what I care about: HIDClass means DirectInput / PS4-style, while XnaComposite or XboxComposite means Xbox/XInput.

Bonus question: does your controller's lightbar (the LED strip on the front) change color in any game? Have you ever used the motion sensor /
gyro? Motion controls and the lightbar are PS4-only features — the Xbox protocol doesn't have them — so they're a passive way to tell which mode
the controller has been in.

Why I'm asking before sending a new build: if you accidentally ended up in Xbox mode, there might be a button combo on your controller to switch
back to PS4 mode (common ones on clones are Home + Share, Home + A, Home + B, or a small switch on the back). If we can flip it back, everything
goes back to working with the current version. If we can't, I'll need to add separate Xbox-mode support to the mod, which is doable but takes
another round of diagnostic data from you.

Thanks again for the patience.

pngwn, May 16th at 3:30 AM (modified May 16th at 3:32 AM)
@ElSublimePeluca: That's strange, this is a sign the controller switched from PS4/DirectInput mode into Xbox/XInput mode — some PS4-compatible clones (maybe yours included) can present themselves either way to Windows, even though the listing only mentions PS4 support. Bef

Lots to report!

After joy.cpl, it had one listing, "Controller (XBOX 360 for Windows)". Then, I tried a bunch of different button combinations to see if any switched the mode. Turns out, after holding down Home for 5 seconds, "Controller (XBOX 360 for Windows)" disappeared, and then "X-D GamePad" appeared. I booted up my VS world to see if it was back to before. The logs are spammed with this over and over:

GamepadCompanion: scan jid=0 name="X-D GamePad" guid=03000000632500007505000000000000 buttons=17 axes=4 hats=1
 
And using the controller does not have any effect on the game.
 
I ran the PowerShell command, and there were three listings with Class "HIDClass":
- HID-compliant system controller
- HID-compliant game controller
- HID-compliant system controller
 
No listings with Class "XnaComposite" or "XboxComposite".
 
My controller does have a lightbar that I've seen as green or red. While in Xbox mode it was green, and while set to "X-D GamePad" it is red. I had also thought I had seen it blue at some point, but I couldn't find out how to change it to that.
I then held down Home again. It switched back to Xbox mode, and running the powershell commant gives identical results, except "HID-compliant game controller" is changed to "Xbox 360 Controller for Windows" with Class "XnaComposite".
 
This controlled the game as before, although with the wrong bindings (RT moves the camera up and down, for instance).
 
I don't believe my controller has any gyro capability.
ElSublimePeluca , May 16th at 12:08 PM
@pngwn: Lots to report! After joy.cpl, it had one listing, "Controller (XBOX 360 for Windows)". Then, I tried a bunch of different button combinations to see if any switched the mode. Turns out, after holding down Home for 5 seconds, "Controller (XBOX 360 for Win

Not gonna lie, that's the strangest behaviour I've seen in a controller, the new version adds support for X-D GamePad and Xinput, try it and tell me if everything works on both green and red mode

pngwn, May 16th at 2:49 PM
@ElSublimePeluca: Not gonna lie, that's the strangest behaviour I've seen in a controller, the new version adds support for X-D GamePad and Xinput, try it and tell me if everything works on both green and red mode

Xbox mode mapping is great, from what I can tell so far! But still the issue with varying move speeds. Here is the results of a 30 second trace session as instructed: https://pastebin.com/hM28cbn7

Let me know if you want one in X-D GamePad mode as well.

ElSublimePeluca , May 16th at 3:14 PM
@pngwn: Xbox mode mapping is great, from what I can tell so far! But still the issue with varying move speeds. Here is the results of a 30 second trace session as instructed: https://pastebin.com/hM28cbn7 Let me know if you want one in X-D GamePad mode as well.

Ok, the trace shows normal results. Every single line shows:

- No buttons pressed (rawBtn=[00000000000000])
- No toggles active (tog=c0/s0/p0 — CTRL/SHIFT/Precision all off)
- Sprint and Sneak both OFF, Forward stays ON, nothing else changes (ec=spr0/sn0/fwd1/...)

The ec= field shows what the engine reads on its next physics tick, captured after the mod applies its inputs. So during those 30 seconds, the mod
is feeding the engine an absolutely constant "walking forward, no modifiers" signal — no flicker, no momentary sprint, nothing the mod is doing
changes.

Maybe another mod is touching entity stats

Could you check a couple of things?

1. Did the speed actually change during this specific 30-second trace? If yes, roughly when (e.g. "around the 10-second mark")? I can pinpoint it in the log.
2. Any other mods active?

3. If you walk in a straight line on the same surface using only W on the keyboard (with the gamepad untouched), does the speed still vary? If yes, then it's definitely not the mod.

And yes, a trace in X-D GamePad mode would be great as a sanity check on that layout's button map (especially A/B and X/Y, which I had to infer
without hardware to test). No need to reproduce the speed bug for that one, just a few seconds of pressing each button so I can confirm the
mapping.

pngwn, May 16th at 9:31 PM
@ElSublimePeluca: Ok, the trace shows normal results. Every single line shows: - No buttons pressed (rawBtn=[00000000000000])- No toggles active (tog=c0/s0/p0 — CTRL/SHIFT/Precision all off)- Sprint and Sneak both OFF, Forward stays ON, nothing else changes (ec=spr0/sn0/fw

Okay, hold up. After a long, long period of incremental testing different mods being enabled, I realized why my movespeed was constantly changing. I was being trolled by this mod: https://mods.vintagestory.at/temporalityplus

When a player has a low temporal stability, the default setting is to randomize movement speeds...

I didn't even realize that was a feature of the mod. The description just says: "When a players stability is less than 21%, all their stats become randomized every few seconds."

Now, the worlds I was testing your mod in did not even have temporal stability enabled, so that also really confused me. But it seems like having stability disabled is equal to having 0% stability, in the eyes of that mod. So I will make a comment over there about that.

In that case, I am relieved that I have resolved that issue and we are good with your mod! Thanks so much for your time and I apologize for not trying with all other mods disabled sooner, I may have figured out the issue before you spent time creating the trace feature.

ElSublimePeluca , May 12th at 1:19 AM
@pngwn: Issue on Windows: My camera is forced upward and continues spinning to the left. I'm not able to control my camera. All other buttons and movement seem to work.

Also, send me your logs after writing in the chat .gpaxes, you can find them at %appdata%\VintagestoryData\Logs\client-main.log, this way I can know if its the injection or the OS that's sending the wrong input to the game, without them it's hard to diagnose since I tried to replicate it on my windows boot but I can't seem to replicate it.