An open API service indexing awesome lists of open source software.

https://github.com/u2n4/dualled-pro

๐ŸŽฎ Real-time RGB lightbar control for PS5 DualSense & PS4 DualShock 4 โ€” with a live 3D controller view, 10 lighting effects, battery alerts & profiles. Python/Tkinter.
https://github.com/u2n4/dualled-pro

3d controller desktop-app dualsense dualsense-controller dualshock gamepad gaming gui hid led lightbar playstation ps4 ps5 python rgb rgb-lighting tkinter windows

Last synced: about 24 hours ago
JSON representation

๐ŸŽฎ Real-time RGB lightbar control for PS5 DualSense & PS4 DualShock 4 โ€” with a live 3D controller view, 10 lighting effects, battery alerts & profiles. Python/Tkinter.

Awesome Lists containing this project

README

          

# ๐ŸŽฎ DualLED Pro

### Real-time RGB lightbar control for PS5 DualSense & PS4 DualShock 4 โ€” with a live 3D controller view

[![Python](https://img.shields.io/badge/Python-3.8%2B-3776AB?logo=python&logoColor=white)](https://www.python.org/)
[![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20macOS%20%7C%20Linux-555?logo=windows&logoColor=white)](#-installation)
[![License: MIT](https://img.shields.io/badge/License-MIT-22c55e.svg)](LICENSE)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-ff69b4.svg)](CONTRIBUTING.md)
[![Made with Tkinter](https://img.shields.io/badge/UI-Tkinter-FFD43B?logo=python&logoColor=333)](https://docs.python.org/3/library/tkinter.html)

[![GitHub stars](https://img.shields.io/github/stars/u2n4/dualled-pro?style=social)](https://github.com/u2n4/dualled-pro/stargazers)

**Pick any color, run a lighting effect, watch your battery โ€” and see it mirrored on a 3D model of your actual controller, in real time.**

๐Ÿ‡ฌ๐Ÿ‡ง English ยท ๐Ÿ‡ธ๐Ÿ‡ฆ [ุจุงู„ุนุฑุจูŠ](#-ุจุงู„ุนุฑุจูŠ)

![DualLED Pro โ€” PS5 DualSense with an animated RGB lightbar](assets/hero.png)

---

## โšก Easy install (no Python needed)

**Don't have Python? No problem.** Open **PowerShell** and paste this **one line** โ€” it installs Python (if you don't have it), downloads the app, installs everything, and opens it automatically:

```powershell
irm https://raw.githubusercontent.com/u2n4/dualled-pro/main/install.ps1 | iex
```

๐Ÿ‘‰ How do I open PowerShell?

1. Press the **Windows key**.
2. Type **`powershell`**.
3. Click **Windows PowerShell**, paste the line above, press **Enter**.
4. Wait. The app opens by itself when it's done. โœ…

> If you see a message asking you to open a **new** PowerShell window, just close it, open PowerShell again, and paste the same line once more.

To run it again later, just paste the same line โ€” or use the shortcut printed at the end of the install.

> ๐Ÿ›  Manual install (for developers) is in [Installation](#-installation) below.

---

## โœจ Features

- ๐ŸŽจ **10 lighting modes** โ€” Manual, Rainbow, Pulse, Flash, Breathing, Heartbeat, Wave, Gradient, Sequence, Random.
- ๐Ÿ•น๏ธ **Live 3D controller view** โ€” a 3D PS5/PS4 model whose lightbar mirrors the real one **100% in sync**.
- ๐Ÿ” **Auto-detects your controller** โ€” picks the correct PS5 (DualSense) or PS4 (DualShock 4) model automatically.
- ๐Ÿ”‹ **Battery monitor & alerts** โ€” low-battery, plugged-in, and full-charge notifications.
- ๐Ÿ’พ **Profiles** โ€” save and switch named color/effect presets instantly.
- ๐ŸŒ **Bilingual UI** โ€” English & Arabic (ุงู„ุนุฑุจูŠุฉ), switchable at runtime.
- ๐ŸชŸ **Fullscreen + tray** โ€” runs fullscreen, minimizes to tray instead of quitting.
- ๐ŸŒŒ **Animated starfield background** (toggleable).
- ๐ŸŽ›๏ธ **Headless / background mode** โ€” drive the lightbar with no window via the CLI.
- ๐Ÿงฉ **Single file, zero build step** โ€” one `dualled_pro.py`, pure Python + Tkinter.

> **Scope, honestly:** DualLED Pro is focused on **lighting, battery, and presets**. It is *not* a music-reactive / macro / scheduling suite โ€” it does one thing and does it cleanly.

---

## ๐Ÿ“ธ Screenshots

| 3D sync view | Effects & profiles |
|---|---|
| ![3D view](assets/screenshot-3d.png) | ![Effects](assets/screenshot-effects.png) |

---

## ๐Ÿš€ Installation

> **Requires Python 3.8+** and a controller connected over **USB** (Bluetooth works too on most setups).

```bash
# 1. Clone
git clone https://github.com/u2n4/dualled-pro.git
cd dualled-pro

# 2. (recommended) virtual env
python -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS / Linux:
source .venv/bin/activate

# 3. Install dependencies
pip install -r requirements.txt

# 4. Run
python dualled_pro.py
```

**Minimal install** (just enough to run):

```bash
pip install -U pydualsense hidapi psutil
python dualled_pro.py
```

### Windows driver note (PS5 DualSense)

For `pydualsense` to talk to a DualSense, Windows needs the **WinUSB/libusb** driver bound to the controller. The simplest path is [Zadig](https://zadig.akeo.ie/): select the DualSense device โ†’ install **WinUSB**. (PS4 / generic HID controllers usually work without this.)

---

## ๐ŸŽ›๏ธ Usage

Launch the GUI:

```bash
python dualled_pro.py
```

Run **headless** (no window โ€” uses your last saved settings):

```bash
# Drive the lightbar in the background
python dualled_pro.py --background

# Auto-stop after 30 minutes, then turn the lightbar off
python dualled_pro.py --background --stop-after 30 --off-on-exit
```

| Flag | Description |
|---|---|
| `--background` | Run without the UI, using the last saved color/mode. |
| `--stop-after N` | Automatically stop after `N` minutes (background mode). |
| `--off-on-exit` | Turn the lightbar off when exiting. |

Config and logs live in your OS app-data folder (`%APPDATA%\DualLED_Pro` on Windows).

---

## ๐Ÿงฉ How it works

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” HID โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” color/effect โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Controller โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บ โ”‚ DualLED Pro โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บ โ”‚ Lightbar โ”‚
โ”‚ PS5 / PS4 โ”‚ โ—„โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ engine + UI โ”‚ โ”‚ (real RGB) โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ battery โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚ mirror
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Live 3D model โ”‚ same color, in sync
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

A background engine thread computes the current color (solid or animated effect) and pushes it to the physical lightbar over HID, while the Tkinter UI renders a 3D controller whose lightbar is tinted with the exact same value.

---

## ๐Ÿค Contributing

PRs and issues are welcome โ€” see [CONTRIBUTING.md](CONTRIBUTING.md). Good first contributions: more controller models in the 3D view, extra effects, packaging recipes (PyInstaller spec, `.app`/AppImage), and translations.

## ๐Ÿ“œ License

[MIT](LICENSE) ยฉ u2n4

## ๐Ÿ™ Acknowledgements

Built on [`pydualsense`](https://github.com/flok/pydualsense), [`hidapi`](https://github.com/trezor/cython-hidapi), and [`psutil`](https://github.com/giampaolo/psutil). Not affiliated with or endorsed by Sony. PlayStation, DualSense, and DualShock are trademarks of Sony Interactive Entertainment.

---

## ๐Ÿ‡ธ๐Ÿ‡ฆ ุจุงู„ุนุฑุจูŠ

# ๐ŸŽฎ DualLED Pro

### ุชุญูƒู‘ู… ู„ุญุธูŠ ุจุฅุถุงุกุฉ ูŠุฏ PS5 (DualSense) ูˆ PS4 (DualShock 4) โ€” ู…ุน ุนุฑุถ ุซู„ุงุซูŠ ุงู„ุฃุจุนุงุฏ ุญูŠ ู„ู„ูŠุฏ

ุงุฎุชุฑ ุฃูŠ ู„ูˆู†ุŒ ุดุบู‘ู„ ุชุฃุซูŠุฑ ุฅุถุงุกุฉุŒ ุฑุงู‚ุจ ุงู„ุจุทุงุฑูŠุฉ โ€” ูˆุดูˆูู‡ุง ูƒู„ู‡ุง ู…ู†ุนูƒุณุฉ ุนู„ู‰ ู†ู…ูˆุฐุฌ ุซู„ุงุซูŠ ุงู„ุฃุจุนุงุฏ ู„ู„ูŠุฏ ุงู„ูุนู„ูŠุฉ ู„ุญุธุฉ ุจู„ุญุธุฉ.

### โœจ ุงู„ู…ุฒุงูŠุง

- ๐ŸŽจ **10 ุฃูˆุถุงุน ุฅุถุงุกุฉ** โ€” ูŠุฏูˆูŠุŒ ู‚ูˆุณ ู‚ุฒุญุŒ ู†ุจุถุŒ ูˆู…ูŠุถุŒ ุชู†ูู‘ุณุŒ ู†ุจุถุฉ ู‚ู„ุจุŒ ู…ูˆุฌุฉุŒ ุชุฏุฑู‘ุฌุŒ ุชุณู„ุณู„ุŒ ุนุดูˆุงุฆูŠ.
- ๐Ÿ•น๏ธ **ุนุฑุถ ุซู„ุงุซูŠ ุงู„ุฃุจุนุงุฏ ุญูŠ** โ€” ู†ู…ูˆุฐุฌ 3D ู„ู„ู€ PS5/PS4 ุฅุถุงุกุชู‡ ุชุชุฒุงู…ู† ู…ุน ุงู„ูŠุฏ ุงู„ุญู‚ูŠู‚ูŠุฉ 100%.
- ๐Ÿ” **ูƒุดู ุชู„ู‚ุงุฆูŠ ู„ู†ูˆุน ุงู„ูŠุฏ** โ€” ูŠุนุฑุถ ุงู„ู†ู…ูˆุฐุฌ ุงู„ุตุญูŠุญ (PS5 ุฃูˆ PS4) ุชู„ู‚ุงุฆูŠุงู‹.
- ๐Ÿ”‹ **ู…ุฑุงู‚ุจุฉ ุจุทุงุฑูŠุฉ ูˆุชู†ุจูŠู‡ุงุช** โ€” ุชู†ุจูŠู‡ ุนู†ุฏ ุงู†ุฎูุงุถ ุงู„ุดุญู†ุŒ ุงู„ุชูˆุตูŠู„ุŒ ูˆุงู„ุงูƒุชู…ุงู„.
- ๐Ÿ’พ **ู…ู„ูุงุช ุชุนุฑูŠู** โ€” ุงุญูุธ ูˆุจุฏู‘ู„ ุจูŠู† ุฅุนุฏุงุฏุงุช ู„ูˆู†/ุชุฃุซูŠุฑ ู…ุญููˆุธุฉ ููˆุฑุงู‹.
- ๐ŸŒ **ูˆุงุฌู‡ุฉ ุซู†ุงุฆูŠุฉ ุงู„ู„ุบุฉ** โ€” ุนุฑุจูŠ ูˆุฅู†ุฌู„ูŠุฒูŠุŒ ุชุชุจุฏู‘ู„ ุฃุซู†ุงุก ุงู„ุชุดุบูŠู„.
- ๐ŸชŸ **ู…ู„ุก ุงู„ุดุงุดุฉ + ุชุตุบูŠุฑ ู„ู„ุดุฑูŠุท** ุจุฏู„ุงู‹ ู…ู† ุงู„ุฅุบู„ุงู‚.
- ๐ŸŒŒ **ุฎู„ููŠุฉ ู†ุฌูˆู… ู…ุชุญุฑูƒุฉ** (ู‚ุงุจู„ุฉ ู„ู„ุฅูŠู‚ุงู).
- ๐ŸŽ›๏ธ **ูˆุถุน ุฎู„ููŠ ุจุฏูˆู† ูˆุงุฌู‡ุฉ** ุนุจุฑ ุณุทุฑ ุงู„ุฃูˆุงู…ุฑ.
- ๐Ÿงฉ **ู…ู„ู ูˆุงุญุฏุŒ ุจุฏูˆู† ุฃูŠ ุจู†ุงุก** โ€” `dualled_pro.py` ูู‚ุทุŒ ุจุงูŠุซูˆู† + Tkinter.

> **ุจุตุฑุงุญุฉุŒ ู†ุทุงู‚ ุงู„ุจุฑู†ุงู…ุฌ:** DualLED Pro ู…ุฑูƒู‘ุฒ ุนู„ู‰ **ุงู„ุฅุถุงุกุฉุŒ ุงู„ุจุทุงุฑูŠุฉุŒ ูˆุงู„ุฅุนุฏุงุฏุงุช ุงู„ู…ุญููˆุธุฉ**. ู…ูˆ ุจุฑู†ุงู…ุฌ ุชูุงุนู„ ู…ุน ุงู„ู…ูˆุณูŠู‚ู‰ ูˆู„ุง ู…ุงูƒุฑูˆู‡ุงุช ูˆู„ุง ุฌุฏูˆู„ุฉ โ€” ูŠุณูˆู‘ูŠ ุดูŠ ูˆุงุญุฏ ูˆูŠุณูˆู‘ูŠู‡ ู†ุธูŠู.

---

### ๐Ÿ“ธ ู„ู‚ุทุงุช ุงู„ุดุงุดุฉ

| ุนุฑุถ ุซู„ุงุซูŠ ุงู„ุฃุจุนุงุฏ ู…ุชุฒุงู…ู† | ุงู„ุชุฃุซูŠุฑุงุช ูˆุงู„ุฅุนุฏุงุฏุงุช |
|---|---|
| ![3D view](assets/screenshot-3d.png) | ![Effects](assets/screenshot-effects.png) |

---

### โšก ุงู„ุชุซุจูŠุช ุงู„ุณู‡ู„ (ุจุฏูˆู† ุจุงูŠุซูˆู† ูˆู„ุง ุฃูŠ ุดูŠ)

**ู…ุง ุนู†ุฏูƒ ุจุงูŠุซูˆู†ุŸ ุนุงุฏูŠ.** ุงูุชุญ **PowerShell** ูˆุงู„ุตู‚ ู‡ุฐุง **ุงู„ุณุทุฑ ุงู„ูˆุงุญุฏ** โ€” ูŠุซุจู‘ุช ุจุงูŠุซูˆู† ู„ูˆ ู…ุง ู‡ูˆ ู…ูˆุฌูˆุฏุŒ ูŠุญู…ู‘ู„ ุงู„ุจุฑู†ุงู…ุฌุŒ ูŠุฑูƒู‘ุจ ูƒู„ ุดูŠุŒ ูˆูŠูุชุญ ุงู„ุจุฑู†ุงู…ุฌ ุชู„ู‚ุงุฆูŠุงู‹:

```powershell
irm https://raw.githubusercontent.com/u2n4/dualled-pro/main/install.ps1 | iex
```

**ูƒูŠู ุชูุชุญ PowerShellุŸ**
1. ุงุถุบุท ุฒุฑ **Windows**.
2. ุงูƒุชุจ **`powershell`**.
3. ุงูุชุญ **Windows PowerShell**ุŒ ุงู„ุตู‚ ุงู„ุณุทุฑ ููˆู‚ุŒ ุงุถุบุท **Enter**.
4. ุงุณุชู†ู‰. ุงู„ุจุฑู†ุงู…ุฌ ูŠูุชุญ ุจู†ูุณู‡ ู„ู…ุง ูŠุฎู„ู‘ุต. โœ…

> ู„ูˆ ุทู„ุนุช ู„ูƒ ุฑุณุงู„ุฉ ุชู‚ูˆู„ ุงูุชุญ ู†ุงูุฐุฉ PowerShell **ุฌุฏูŠุฏุฉ** โ€” ุณูƒู‘ุฑ ุงู„ู†ุงูุฐุฉุŒ ุงูุชุญ PowerShell ู…ุฑุฉ ุซุงู†ูŠุฉุŒ ูˆุงู„ุตู‚ ู†ูุณ ุงู„ุณุทุฑ.

ู„ุชุดุบูŠู„ู‡ ู…ุฑุฉ ุซุงู†ูŠุฉ ุจุนุฏูŠู†: ุงู„ุตู‚ ู†ูุณ ุงู„ุณุทุฑุŒ ุฃูˆ ุงุณุชุฎุฏู… ุงู„ุงุฎุชุตุงุฑ ุงู„ู„ูŠ ูŠุทู„ุน ู„ูƒ ุจู†ู‡ุงูŠุฉ ุงู„ุชุซุจูŠุช.

### ๐Ÿš€ ุงู„ุชุซุจูŠุช ุงู„ูŠุฏูˆูŠ (ู„ู„ู…ุทูˆุฑูŠู†)

> ูŠุญุชุงุฌ **ุจุงูŠุซูˆู† 3.8+** ูˆูŠุฏ ู…ูˆุตูˆู„ุฉ ุนุจุฑ **USB** (ุงู„ุจู„ูˆุชูˆุซ ูŠุดุชุบู„ ุจุนุฏ ุนู„ู‰ ุฃุบู„ุจ ุงู„ุฃุฌู‡ุฒุฉ).

```bash
# 1. ุงู†ุณุฎ ุงู„ู…ุณุชูˆุฏุน
git clone https://github.com/u2n4/dualled-pro.git
cd dualled-pro

# 2. (ูŠููุถู‘ู„) ุจูŠุฆุฉ ุงูุชุฑุงุถูŠุฉ
python -m venv .venv
.venv\Scripts\activate

# 3. ุฑูƒู‘ุจ ุงู„ู…ุชุทู„ุจุงุช
pip install -r requirements.txt

# 4. ุดุบู‘ู„
python dualled_pro.py
```

**ุชุซุจูŠุช ุณุฑูŠุน** (ุฃู‚ู„ ุดูŠ ูŠูƒููŠ ู„ู„ุชุดุบูŠู„):

```bash
pip install -U pydualsense hidapi psutil
python dualled_pro.py
```

> **ู…ู„ุงุญุธุฉ ุฏุฑุงูŠูุฑ ูˆูŠู†ุฏูˆุฒ (ูŠุฏ PS5 DualSense):** ุนุดุงู† ู…ูƒุชุจุฉ `pydualsense` ุชูƒู„ู‘ู… ุงู„ูŠุฏุŒ ูˆูŠู†ุฏูˆุฒ ูŠุญุชุงุฌ ุฏุฑุงูŠูุฑ **WinUSB/libusb** ู…ุฑุจูˆุท ุจุงู„ูŠุฏ. ุฃุณู‡ู„ ุทุฑูŠู‚ุฉ ุนุจุฑ [Zadig](https://zadig.akeo.ie/): ุงุฎุชุฑ ุฌู‡ุงุฒ DualSense โ† ุซุจู‘ุช **WinUSB**. (ูŠุฏ PS4 / ุงู„ุฃุฌู‡ุฒุฉ ุงู„ุนุงู…ุฉ ุบุงู„ุจุงู‹ ุชุดุชุบู„ ุจุฏูˆู† ู‡ุฐุง.)

---

### ๐ŸŽ›๏ธ ุงู„ุงุณุชุฎุฏุงู…

ุดุบู‘ู„ ุงู„ูˆุงุฌู‡ุฉ:

```bash
python dualled_pro.py
```

ุดุบู‘ู„ู‡ **ุจุฏูˆู† ูˆุงุฌู‡ุฉ** (ูŠุณุชุฎุฏู… ุขุฎุฑ ุฅุนุฏุงุฏุงุช ุญูุธุชู‡ุง):

```bash
# ุชุดุบูŠู„ ุงู„ุฅุถุงุกุฉ ุจุงู„ุฎู„ููŠุฉ
python dualled_pro.py --background

# ูŠูˆู‚ู ุชู„ู‚ุงุฆูŠุงู‹ ุจุนุฏ 30 ุฏู‚ูŠู‚ุฉุŒ ูˆูŠุทูู‘ูŠ ุงู„ุฅุถุงุกุฉ
python dualled_pro.py --background --stop-after 30 --off-on-exit
```

| ุงู„ุฃู…ุฑ | ุงู„ูˆุธูŠูุฉ |
|---|---|
| `--background` | ูŠุดุชุบู„ ุจุฏูˆู† ูˆุงุฌู‡ุฉุŒ ุจุงุณุชุฎุฏุงู… ุขุฎุฑ ู„ูˆู†/ูˆุถุน ู…ุญููˆุธ. |
| `--stop-after N` | ูŠูˆู‚ู ุชู„ู‚ุงุฆูŠุงู‹ ุจุนุฏ `N` ุฏู‚ูŠู‚ุฉ (ูˆุถุน ุงู„ุฎู„ููŠุฉ). |
| `--off-on-exit` | ูŠุทูู‘ูŠ ุงู„ุฅุถุงุกุฉ ุนู†ุฏ ุงู„ุฎุฑูˆุฌ. |

ุงู„ุฅุนุฏุงุฏุงุช ูˆุงู„ุณุฌู„ุงุช ุชู†ุญูุธ ููŠ ู…ุฌู„ุฏ ุจูŠุงู†ุงุช ุงู„ู†ุธุงู… (`%APPDATA%\DualLED_Pro` ุนู„ู‰ ูˆูŠู†ุฏูˆุฒ).

---

### ๐Ÿงฉ ูƒูŠู ูŠุดุชุบู„ ุงู„ุจุฑู†ุงู…ุฌ

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” HID โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” ู„ูˆู†/ุชุฃุซูŠุฑ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ุงู„ูŠุฏ โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บ โ”‚ DualLED Pro โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บ โ”‚ ุงู„ุฅุถุงุกุฉ โ”‚
โ”‚ PS5 / PS4 โ”‚ โ—„โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ ู…ุญุฑู‘ูƒ + ูˆุงุฌู‡ุฉ โ”‚ โ”‚ (RGB ูุนู„ูŠ) โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ุจุทุงุฑูŠุฉ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚ ุงู†ุนูƒุงุณ
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ู†ู…ูˆุฐุฌ 3D ุญูŠ โ”‚ ู†ูุณ ุงู„ู„ูˆู†ุŒ ู…ุชุฒุงู…ู†
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

ุฎูŠุท (thread) ุจุงู„ุฎู„ููŠุฉ ูŠุญุณุจ ุงู„ู„ูˆู† ุงู„ุญุงู„ูŠ (ุซุงุจุช ุฃูˆ ุชุฃุซูŠุฑ ู…ุชุญุฑู‘ูƒ) ูˆูŠุฑุณู„ู‡ ู„ู„ุฅุถุงุกุฉ ุงู„ูุนู„ูŠุฉ ุนุจุฑ HIDุŒ ูˆุจู†ูุณ ุงู„ูˆู‚ุช ูˆุงุฌู‡ุฉ Tkinter ุชุฑุณู… ูŠุฏ ุซู„ุงุซูŠุฉ ุงู„ุฃุจุนุงุฏ ุฅุถุงุกุชู‡ุง ุจู†ูุณ ุงู„ู„ูˆู† ุจุงู„ุถุจุท.

---

### ๐Ÿค ุงู„ู…ุณุงู‡ู…ุฉ

ุงู„ู€ PRs ูˆุงู„ู€ issues ู…ุฑุญู‘ุจ ููŠู‡ุง โ€” ุดูˆู [CONTRIBUTING.md](CONTRIBUTING.md). ุฃููƒุงุฑ ู„ู„ู…ุจุชุฏุฆูŠู†: ู†ู…ุงุฐุฌ ูŠุฏ ุฅุถุงููŠุฉ ููŠ ุงู„ุนุฑุถ 3DุŒ ุชุฃุซูŠุฑุงุช ุฌุฏูŠุฏุฉุŒ ูˆุตูุงุช ุชุบู„ูŠู (PyInstaller / `.app` / AppImage)ุŒ ูˆุชุฑุฌู…ุงุช.

### ๐Ÿ“œ ุงู„ุชุฑุฎูŠุต

[MIT](LICENSE) ยฉ u2n4

### ๐Ÿ™ ุดูƒุฑ

ู…ุจู†ูŠ ุนู„ู‰ [`pydualsense`](https://github.com/flok/pydualsense) ูˆ [`hidapi`](https://github.com/trezor/cython-hidapi) ูˆ [`psutil`](https://github.com/giampaolo/psutil). ุบูŠุฑ ุชุงุจุน ู„ุดุฑูƒุฉ Sony ูˆู„ุง ู…ุนุชู…ุฏ ู…ู†ู‡ุง. PlayStation ูˆ DualSense ูˆ DualShock ุนู„ุงู…ุงุช ุชุฌุงุฑูŠุฉ ู„ู€ Sony Interactive Entertainment.