Skip to content

Game Control keyboard movement appears to be inverted relative to gamepad input #6288

Description

@maestrolinden

Environment

Second Life Project Game-control 26.4.0.33903086239 (64bit)
Release Notes

You are at 166.5, 124.2, 23.0 in MTester Playground located at simhost-0f95d1f4c0da07fb8.aditi
SLURL: secondlife://Aditi/secondlife/MTester%20Playground/167/124/23
(global coordinates 678.5, 636.2, 23.0)
MercuryTest 2026-09-01.33542310241
Release Notes

CPU: Apple M1 Pro (2400 MHz)
Memory: 16384 MB
OS Version: macOS 26.6.2 Darwin 25.6.0 Darwin Kernel Version 25.6.0: Fri Jul 31 19:18:49 PDT 2026; root:xnu-12377.161.14~5/RELEASE_ARM64_T6000 arm64
Graphics Card Vendor: Apple
Graphics Card: Apple M1 Pro

OpenGL Version: 4.1 Metal - 90.5

Window size: 1228x806
Font Size Adjustment: 96pt
UI Scaling: 0.75
Draw distance: 216m
Bandwidth: 10000kbit/s
LOD factor: 1.375
Render quality: 3
Texture memory: 12124MB
Disk cache: Max size 2150.4 MB (100.0% used)
HiDPI display mode: false

J2C Decoder Version: KDU v8.4.1
Audio Driver Version: OpenAL, version 1.1 ALSOFT 1.24.2 / OpenAL Community / OpenAL Soft: OpenAL Soft
Dullahan: 1.26.0.202510161627
CEF: 139.0.40+g465474a+chromium-139.0.7258.139
Chromium: 139.0.7258.139
LibVLC Version: 3.0.21
Voice Server Version: Secondlife WebRTC Gateway 1.3.2-90f4ecf/estate

Packets Lost: 0/3208 (0.0%)
September 09 2026 09:49:54

Gamepad reference: Xbox One controller connected to a Win11 machine over USB. Same viewer & server version used.

Description

The game control events generated when using keyboard movement appear to be inverted for GAME_CONTROL_AXIS_LEFT and GAME_CONTROL_AXIS_RIGHT, compared to the events generated when moving the thumbsticks of a physical gamepad.

This might extend to the analog triggers as well, but I'm less familiar with those bindings.

Currently, the basic thumbstick controls for an Xbox One Gamepad on Windows default to this, which I think feels natural for most people:

  • Rot left - right thumbstick points to the left
  • Rot right - right thumbstick points to the right
  • Forward - left thumbstick points away from the operator
  • Reverse - left thumbstick points to the operator

However, all of inputs are reversed when using the keyboard movement commands:

  • A (rot left) - right thumbstick points to the right
  • D (rot right) - right thumbstick points to the left
  • W (fwd) - left thumbstick points to the operator
     - S (reverse) - left thumbstick points away from operator

I think we want to align the game control data triggered by keyboard input to match what gets sent for a physical gamepad

Reproduction steps

  1. Connect a compatible gamepad device to your machine
  2. Launch the game control viewer
  3. Open preferences -> Game Control -> Server Data, and enable 'Send GameControl Data to server'
  4. Visit a Nectarine test region (current version on aditi is MercuryTest 2026-09-01.33542310241 )
  5. Rez object asset 9be1f5c8-ea04-114d-5c67-d331fcc9b54e , 'Articulated game_control gamepad - with perms', and attach it
  • This is a 3d model of a gamepad, with buttons set up to follow the physical layout of an Xbox One controller
  1. Move all of the analog sticks, and confirm that the 3d model's movement matches the real life manipulation of the device (the script has been calibrated to invert the input)
  2. Tilt the left thumbstick 'up' (away from the operator)
    • Observe that the avatar walks forward
  3. Press 'W' to walk forward, and note how the virtual left thumbstick moves
  4. Repeat (7) and (8) for A, S, D, Shift+A, Shift+D

Expected results:
When using keyboard input, the effect on the virtual gamepad object's thumbsticks should correspond to the same movement action as when tilting the physical gamepad thumbsticks in the same direction. For example, 'W' should cause the avatar to walk forward and the virtual left thumbstick to tilt 'up', since tilting the thumbstick up on the gamepad also causes the avatar to walk forward.

Actual results:
The game_control events received by the LSL script appear to have inverted values when using keyboard input. For example, pressing 'W' to walk forward causes the virtual left thumbstick to tilt 'down', when it should be 'up'.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions