Skip to main content

An anywidget that allows gamepad input in Marimo

Project description

mopad

An anywidget that allows gamepad input in Marimo notebooks. Perfect for interactive data exploration, games, or any application that needs real-time gamepad input.

Features

  • 🎮 Automatic gamepad detection - No need to press buttons before starting
  • 📊 Real-time visual feedback - Connection status and button press information
  • ⏱️ Precise timestamp tracking - Millisecond-accurate timing for button presses
  • 🔗 Any button support - Capture input from any bluetooth gamepad

Installation

pip install mopad

Usage

Basic Example

import marimo as mo
from mopad import MopadWidget

# Create and display the widget
gamepad = mo.ui.anywidget(MopadWidget())
gamepad

For a full demo you can check Github pages.

Widget Properties

Property Type Description
last_button_pressed int Index of the last pressed button (-1 if none)
current_timestamp float Timestamp of the most recent button press (ms)
previous_timestamp float Timestamp of the previous button press (ms)
axes list[float] Analog stick values: [left_x, left_y, right_x, right_y]
dpad_up bool True when D-pad up is pressed
dpad_down bool True when D-pad down is pressed
dpad_left bool True when D-pad left is pressed
dpad_right bool True when D-pad right is pressed
button_id int Legacy property for backward compatibility
k

Gamepad Setup

  1. Connect your gamepad to your computer (USB or Bluetooth)
  2. Press any button on the gamepad to activate it in the browser
  3. Start the widget - it will automatically detect the connected gamepad

Note: Due to browser security policies, gamepads need user interaction to be detected. The widget will guide you through the connection process with clear visual indicators.

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

mopad-0.4.0.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mopad-0.4.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file mopad-0.4.0.tar.gz.

File metadata

  • Download URL: mopad-0.4.0.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.7

File hashes

Hashes for mopad-0.4.0.tar.gz
Algorithm Hash digest
SHA256 971382faccdb3e316135117a88ba5d81764e95413caa163972c96d5092dc5e3a
MD5 100eb4d73e6e956e69af2abbc2f8c410
BLAKE2b-256 7dae7ee0f1f44b81032918d882fcf05218d7560c5ee02110f231b6c106ed393b

See more details on using hashes here.

File details

Details for the file mopad-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: mopad-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.7

File hashes

Hashes for mopad-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6ed0e4227606dd022180cb587104ff7289dea253fde0dd4c6037916ae4a3ffc1
MD5 6febbf366aa0a29e1254b363560c953a
BLAKE2b-256 61a4eace80759a8888dff0a49843060d053cc3508e89d3278cef759515ccc761

See more details on using hashes here.

Supported by

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