Für cachyos angepasst

#!/bin/bash

# Farben
RED=’\033[0;31m‘
GREEN=’\033[0;32m‘
CYAN=’\033[0;36m‘
YELLOW=’\033[1;33m‘
NC=’\033[0m‘

print_header() {
    echo -e „\n${CYAN}==> $1${NC}“
}

print_success() {
    echo -e „${GREEN}✔ $1${NC}“
}

print_warning() {
    echo -e „${YELLOW}⚠ $1${NC}“
}

print_error() {
    echo -e „${RED}✖ $1${NC}“
}

print_info() {
    echo -e „${CYAN}➤ $1${NC}“
}

# Schritt 1: Prüfen ob evtest installiert ist
print_header „Prüfe Abhängigkeiten“
if ! command -v evtest &> /dev/null; then
    print_warning „‚evtest‘ ist nicht installiert.“
    read -p „Möchtest du es jetzt mit pacman installieren? (j/N): “ INSTALL
    if [[ „$INSTALL“ == „j“ || „$INSTALL“ == „J“ ]]; then
        sudo pacman -Sy –noconfirm evtest && print_success „evtest installiert.“ || print_error „Installation fehlgeschlagen.“
    else
        print_info „evtest wird übersprungen.“
    fi
else
    print_success „‚evtest‘ ist installiert.“
fi

# Schritt 2: Eingabegeräte prüfen
print_header „Erkennung von Gamepad-Eingabegeräten“
DEVICE_INFO=$(grep -iE „Handlers|Name|Phys“ /proc/bus/input/devices | grep -B2 -iE „Gamepad|Joystick|Controller“)

if [[ -z „$DEVICE_INFO“ ]]; then
    print_warning „Kein Gamepad erkannt. Versuche Kernelmodule zu laden …“
else
    print_success „Gamepad erkannt:“
    echo „$DEVICE_INFO“
fi

# Schritt 3: Kernelmodule prüfen und laden
print_header „Lade relevante Kernelmodule (falls nötig)“
MODULES=(„xpad“ „hid_microsoft“ „hid_generic“ „joydev“)

for MODULE in „${MODULES[@]}“; do
    if lsmod | grep -q „^$MODULE“; then
        print_success „Modul ‚$MODULE‘ ist bereits geladen.“
    else
        print_info „Lade Modul ‚$MODULE‘ …“
        sudo modprobe „$MODULE“ && print_success „‚$MODULE‘ geladen.“ || print_warning „‚$MODULE‘ konnte nicht geladen werden.“
    fi
done

# Schritt 4: Letzte Kernel-Meldungen
print_header „Letzte Kernel-Meldungen (Controller-bezogen)“
dmesg | grep -iE „controller|gamepad|xpad|hid“ | tail -n 15

# Schritt 5: Flatpak-Warnung (falls relevant)
print_header „Hinweis bei Flatpak-Nutzung“
print_info „Wenn du Steam als Flatpak nutzt, gib ggf. Eingabegeräte frei:“
echo „flatpak override –user –filesystem=/dev/input steam“

# Schritt 6: Test starten?
read -p $’\n🎮 Möchtest du jetzt evtest starten? (j/N): ‚ START_EVTEST
if [[ „$START_EVTEST“ == „j“ || „$START_EVTEST“ == „J“ ]]; then
    evtest
else
    print_info „evtest-Start übersprungen. Du kannst es später manuell starten mit:“
    echo „evtest“
fi

print_success „Skript beendet.“