Provide a Linux desktop controller configuration app with evdev input, uinput remapping, profiles, calibration, and reconnect recovery. Co-authored-by: Cursor <cursoragent@cursor.com>
33 lines
1.0 KiB
Bash
33 lines
1.0 KiB
Bash
#!/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
|