We were trying to play the classic PlayStation 2 quiz game Buzz! online, over the internet. While the PCsX2 emulator has multiplayer plugin, it seemed to only support an old version. It turned out easier to have a single host run the game, share their screen via Discord, then run this webapp for each player's input.
The web app emulates button presses via the uinput Python library and presents itself to the host system as a gamepad device (WebBuzzPad Gamepad).
- Tested with Python 3.8
- python-uinput
(Linux-only, sinceuinputis a Linux kernel module) Tested on Ubuntu - Flask
- Flask-SocketIO
- Tested with the PCSX2 1.7 emulator.
Install with:
sudo apt install python3-pip python3-dev libudev-dev
pip install flask flask-socketio python-uinput-
Run the server on the host machine (easiest in development mode):
sudo flask --app app run --debug --host=0.0.0.0 --port=5000
-
Open the host’s IP address in a browser on each player’s device. Example:
http://192.168.0.10:5000 -
Players join by entering a name and selecting a player slot (1–4).
-
Have players press each button in turn to map the controller to the PCSX2's emulated Buzz Controller. Below is the default mapping
Each player’s coloured buttons are mapped to a unique set of uinput keys:
| Player | Red | Blue | Orange | Green | Yellow |
|---|---|---|---|---|---|
| 1 | BTN_0 | BTN_2 | BTN_3 | BTN_4 | BTN_5 |
| 2 | BTN_6 | BTN_7 | BTN_8 | BTN_9 | BTN_DPAD_DOWN |
| 3 | BTN_DPAD_UP | BTN_C | BTN_DPAD_LEFT | BTN_START | BTN_X |
| 4 | BTN_A | BTN_B | BTN_BACK | BTN_SELECT | BTN_Z |
These can be changed from app.py.
- Ensure PCSX2 is configured to read from standard gamepads. Then run Buzz! and share screen on a service like Discord.
