Skip to main content

Gamepad polling rate and synthetic latency tester.

Project description

gamepadla-plus

Gamepad polling rate and synthetic latency tester. (CLI and GUI)

PyPI - Version GitHub License

Gamepadla is an easy way to check the polling rate of your gamepad. This tool will help you get accurate data about your controller's performance, which can be useful for gamers, game developers, and enthusiasts.
Gamepadla works with most popular gamepads and supports DInput and XInput protocols, making it a versatile solution for testing different types of controllers.

Gamepadla+ or gamepadla-plus is a hard fork of Gamepadla.

GUI Demo

asciicast

Installation

uv

uv tool install gamepadla-plus

pipx

pipx install gamepadla-plus

Usage (GUI)

  1. Execute the program gamepadla without any arguments.
  2. If you haven't connected any controller do it now and click Refresh.
  3. Click Test and rotate the stick you chose slowly at the edge.
  4. Optionally save the result to a JSON file or upload the result to <gamepadla.com>.

Usage (CLI)

# gamepadla.exe --help

 Usage: gamepadla [OPTIONS] COMMAND [ARGS]...

 Gamepad latency and polling rate tester.

╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --install-completion          Install completion for the current shell.                                            │
│ --show-completion             Show completion for the current shell, to copy it or customize the installation.     │
│ --help                        Show this message and exit.                                                          │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ─────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ list   List controller id's.                                                                                       │
│ test   Test controller with id.                                                                                    │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Getting Started

  1. List all controllers connected with:
gamepadla list
# gamepadla list
Found 1 controllers
0. Xbox 360 Controller
  1. Test the controller with the id from step one (test defaults to id 0):
gamepadla test 0

equals here

gamepadla test
# gamepadla test
100%|████████████████████████████████████████████████████████████ | 01.00 ms


  Parameter           Value
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Gamepad mode        Xbox 360 Controller
  Operating System    Windows
  Polling Rate Max.   1000 Hz
  Polling Rate Avg.   964.36 Hz
  Stability           96.44%

  Minimal latency     0.51 ms
  Average latency     1.04 ms
  Maximum latency     2.0 ms
  Jitter              0.16 ms

Options

Test Right Stick

gamepadla test --stick right

Write Result to JSON File

gamepadla test --out data.json

Upload Result to <gamepadla.com>

gamepadla test --upload

Disclaimer

Gamepadla measures the delay between successive changes in the position of the analog stick on the gamepad, rather than the traditional input latency, which measures the time between pressing a button on the gamepad and a response in a program or game.
This method of measurement can be affected by various factors, including the quality of the gamepad, the speed of the computer's processor, the speed of event processing in the Pygame library, and so on.
Therefore, although Gamepadla can give a general idea of the "response" of a gamepad, it cannot accurately measure input latency in the traditional sense. The results obtained from Gamepadla should be used as a guide, not as an exact measurement of input latency.

Contributors

Notable Mentions

Based on the method of Christian P.: https://github.com/chrizonix/XInputTest.

License

Licensed under MIT.

Contributing

Please have a look at CONTRIBUTING.md.

Why this is a Hard Fork

  • cakama3a/Polling (formerly known as Gamepadla) has 200MB git history. Sadly many build artifacts and release binaries are in said git history. Cloning that repo is not fun. And removing those directories from my history essentialy made my repo a hard fork.
  • cakama3a (aka John Punch) is very unresponsive regarding the addition of pip support for the software. A simple pyproject.toml was sitting ducks in the PR while he still happily adds more release artifacts to the git history.
  • I made major additions like the GUI and the CLI to my fork.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gamepadla_plus-1.5.0.tar.gz (362.4 kB view details)

Uploaded Source

Built Distribution

gamepadla_plus-1.5.0-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

Details for the file gamepadla_plus-1.5.0.tar.gz.

File metadata

  • Download URL: gamepadla_plus-1.5.0.tar.gz
  • Upload date:
  • Size: 362.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for gamepadla_plus-1.5.0.tar.gz
Algorithm Hash digest
SHA256 31c1f3d548d07ac57d0bb82fd3ee571eafd5f84f4645cf913d538f4b9fb26b53
MD5 9dca24b8d0cf7746b3c590f663007dc4
BLAKE2b-256 66ff7eae9869f0b41bca7d85130284f7263dfedf9a08c59412ff6f70d94f5c29

See more details on using hashes here.

File details

Details for the file gamepadla_plus-1.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for gamepadla_plus-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 349e3736171e686e0c55f2522e014f0b6cfc1cbcb6bded014da1c48c36972971
MD5 62af38163d06129c5c9a36849a904cb1
BLAKE2b-256 ed6f4d0b8788df7d1b2d6e5d2758aa826241872b35c3c03b5dfc4587050be206

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page