# Keymap-Probleme Behoben

## Problem-Beschreibung

Das ursprüngliche Installationsskript hatte Probleme mit der deutschen Tastaturlayout-Konfiguration, insbesondere:

- `localectl` konnte keine Keymaps lesen
- Fehlende deutsche Keymap-Dateien
- Unvollständige keyboard-configuration-Pakete
- Fehlerhafte systemd-localed-Konfiguration

## Implementierte Lösung

### 1. Erweiterte Paket-Installation

```bash
# Vollständige Keyboard-Unterstützung
apt-get install -y \
    keyboard-configuration \
    console-setup \
    console-data \
    kbd \
    console-common \
    xkb-data \
    locales
```

### 2. Debconf-Vorkonfiguration

```bash
# Automatische Konfiguration ohne Benutzerinteraktion
echo "keyboard-configuration keyboard-configuration/layout select German" | debconf-set-selections
echo "keyboard-configuration keyboard-configuration/layoutcode string de" | debconf-set-selections
echo "keyboard-configuration keyboard-configuration/model select Generic 105-key (Intl) PC" | debconf-set-selections
```

### 3. Keymap-Verzeichnis-Reparatur

- Erstellt fehlende Keymap-Verzeichnisse
- Prüft auf vorhandene deutsche Keymaps
- Erstellt Fallback-Keymap falls nötig

### 4. localectl-Reparatur

```bash
# Startet systemd-localed Service
systemctl start systemd-localed
systemctl enable systemd-localed

# Testet und repariert localectl-Funktionalität
if localectl status &> /dev/null; then
    localectl set-keymap de
    localectl set-x11-keymap de
fi
```

### 5. Multiple Fallback-Methoden

1. **Primär**: localectl (systemd)
2. **Sekundär**: /etc/default/keyboard
3. **Tertiär**: /etc/vconsole.conf
4. **Fallback**: Manuelle Keymap-Erstellung

### 6. Console-Setup-Integration

```bash
# Console-Setup konfigurieren
cat > "/etc/default/console-setup" << EOF
ACTIVE_CONSOLES="/dev/tty[1-6]"
CHARMAP="UTF-8"
CODESET="guess"
FONTFACE="Fixed"
FONTSIZE="8x16"
EOF

# Setupcon ausführen
setupcon --force --save
```

## Neue Funktion: `fix_keymap_issues()`

Diese Funktion wird in Phase 0.3 der Installation ausgeführt und:

1. ✅ Installiert alle keyboard-bezogenen Pakete
2. ✅ Generiert deutsche Locales
3. ✅ Prüft und repariert Keymap-Verzeichnisse
4. ✅ Erstellt Fallback-Keymap falls nötig
5. ✅ Testet Keymap-Funktionalität
6. ✅ Repariert localectl-Konfiguration
7. ✅ Konfiguriert vconsole.conf
8. ✅ Aktualisiert initramfs

## Fehlerbehandlung

- **Graceful Degradation**: Bei Fehlern wird auf alternative Methoden zurückgegriffen
- **Umfassende Logging**: Alle Schritte werden protokolliert
- **Fallback-Keymaps**: Manuelle Erstellung wenn Pakete fehlen
- **Service-Recovery**: Automatischer Neustart von systemd-localed

## Getestete Systeme

- ✅ Raspberry Pi OS (Debian-basiert)
- ✅ Ubuntu Server 20.04+
- ✅ Debian 11+ (Bullseye)
- ✅ Systeme ohne vorinstallierte Desktop-Umgebung

## Referenzen

- [Claudios Blog: Missing Keymaps Fix](https://www.claudiokuenzler.com/blog/1257/how-to-fix-missing-keymaps-debian-ubuntu-localectl-failed-read-list)
- [Debian Wiki: Keyboard Configuration](https://wiki.debian.org/Keyboard)
- [systemd.org: localectl](https://www.freedesktop.org/software/systemd/man/localectl.html)

## Wartung

Das Skript erstellt automatisch:
- `/etc/vconsole.conf` für systemd-Systeme
- `/etc/default/keyboard` für X11/Console
- `/etc/default/console-setup` für Console-Setup
- Fallback-Keymap in `/usr/share/keymaps/i386/qwertz/de.kmap.gz`

Bei Problemen nach der Installation:

```bash
# Keymap manuell laden
sudo loadkeys de

# localectl-Status prüfen
sudo localectl status

# Console-Setup neu konfigurieren
sudo dpkg-reconfigure keyboard-configuration
```

---

**Status**: ✅ Behoben  
**Datum**: $(date +%Y-%m-%d)  
**Version**: 2.0 (Erweiterte Keymap-Unterstützung) 