Initial release of 8BitDo Control Center

Provide a Linux desktop controller configuration app with evdev input, uinput remapping, profiles, calibration, and reconnect recovery.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-21 12:18:10 -07:00
commit 6507f5f8b3
121 changed files with 15415 additions and 0 deletions

14
scripts/dev-deps.sh Normal file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env bash
set -euo pipefail
# Linux Mint / Ubuntu developer dependencies for Tauri 2.
sudo apt update
sudo apt install -y \
build-essential curl file pkg-config \
libayatana-appindicator3-dev libgtk-3-dev libjavascriptcoregtk-4.1-dev \
librsvg2-dev libsoup-3.0-dev libssl-dev libudev-dev libwebkit2gtk-4.1-dev
if ! command -v cargo >/dev/null; then
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
echo 'Restart your shell, then run npm install.'
fi

View File

@@ -0,0 +1,12 @@
#!/usr/bin/env bash
set -euo pipefail
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "${PROJECT_DIR}"
if [[ -f "${HOME}/.cargo/env" ]]; then
# shellcheck disable=SC1091
source "${HOME}/.cargo/env"
fi
exec npm run tauri dev

32
scripts/setup-linux.sh Normal file
View File

@@ -0,0 +1,32 @@
#!/usr/bin/env bash
set -euo pipefail
# Installs the least-privilege access rule needed for evdev/uinput. This
# script intentionally changes host state only when the user runs it.
readonly GROUP_NAME="8bitdo"
readonly RULE_FILE="99-8bitdo-control-center.rules"
readonly PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
readonly SOURCE_RULE="${PROJECT_ROOT}/resources/udev/${RULE_FILE}"
readonly DESTINATION_RULE="/etc/udev/rules.d/${RULE_FILE}"
if [[ ! -f "${SOURCE_RULE}" ]]; then
echo "Missing udev rule: ${SOURCE_RULE}" >&2
exit 1
fi
if ! getent group "${GROUP_NAME}" >/dev/null; then
sudo groupadd --system "${GROUP_NAME}"
fi
sudo install -Dm644 "${SOURCE_RULE}" "${DESTINATION_RULE}"
sudo usermod -aG "${GROUP_NAME}" "${USER}"
sudo udevadm control --reload-rules
sudo udevadm trigger --subsystem-match=input
cat <<EOF
Installed ${DESTINATION_RULE}.
${USER} was added to the ${GROUP_NAME} group. Log out and back in (or reboot)
before starting 8BitDo Control Center, then verify permissions in Settings.
EOF