🎮Virtuelle Fernbedienung
Jede Taste einer Fernbedienung ist für Android nur eine Zahl. Der Befehl input keyevent schickt diese Zahl an das System – genau so, als hätte jemand gedrückt. Klick auf die Tasten und sieh, welcher Befehl entsteht.
🕹️Drücken, Befehl sehen, Makro aufzeichnen
Zuletzt gedrückt
Drück eine Taste auf der Fernbedienung – hier erscheint der passende Befehl.
🎬 Makro-Rekorder (0 Schritte)
- Noch leer – jede gedrückte Taste wird hier angehängt.
makro.sh – aus der Klickfolge erzeugt
#!/usr/bin/env bash
# Mein Makro – aufgezeichnet mit VisualAndroidTV (0 Schritte)
# Aufruf: ./makro.sh oder mit anderem Ziel: TV_HOST=tv.example.org:5555 ./makro.sh
set -euo pipefail
TV_HOST="${TV_HOST:-192.0.2.50:5555}"
PAUSE="${PAUSE:-0.4}" # Wartezeit zwischen zwei Tasten in Sekunden
adb connect "$TV_HOST" >/dev/null
adb -s "$TV_HOST" get-state >/dev/null 2>&1 || { echo "Keine Verbindung zu $TV_HOST" >&2; exit 1; }
# -n: adb liest nicht von der Standardeingabe
tv() { adb -s "$TV_HOST" shell -n "$@"; sleep "$PAUSE"; }
# (noch keine Schritte aufgezeichnet)
📖 Alle 66 Tasten mit Zahlenwert
TV & Eingänge
Medien
Ziffern & Farben
System
Ein/Aus
Lautstärke
Navigation
Text
📎 Quellen: Android Developers – android.view.KeyEvent · AOSP – InputShellCommand (Quelltext von „input“)
💡Gut zu wissen
- 🔢 Name oder Zahl:
input keyevent KEYCODE_HOMEundinput keyevent 3bewirken dasselbe. Die Zahlen gehören zur öffentlichen Android-API und bleiben stabil. - 🔇 VOLUME_MUTE (164) ≠ MUTE (91): Das erste schaltet den Ton stumm, das zweite das Mikrofon.
- ⏻ POWER schaltet um, SLEEP und WAKEUP sind eindeutig: In Skripten lieber
KEYCODE_SLEEP(223) undKEYCODE_WAKEUP(224) – sie tun nichts, wenn der Zustand schon stimmt. - 📺 HDMI-Tasten sind geräteabhängig:
KEYCODE_TV_INPUT_HDMI_1…_4(243–246) wertet nur ein Fernseher aus, dessen Hersteller sie eingebaut hat. Ein Stick am HDMI-Anschluss kann den Eingang des Fernsehers so nicht umschalten. - ⌨️ Text:
input texttippt in das gerade fokussierte Feld. Ein Leerzeichen schreibt man als%s. - ⏱ Pausen einplanen: Der Fernseher braucht Zeit für Animationen und App-Starts. Ohne
sleeplaufen Tasten ins Leere.
📎 Quellen: Android Developers – android.view.KeyEvent · AOSP – InputShellCommand (Quelltext von „input“) · AOSP – VolumeCtrl (Quelltext von „media volume“) · Android Developers – TvContract
🔊Mehr als Tasten: Lautstärke und Eingänge direkt
Lautstärke als Zahl statt Tastendrücken
adb shell media volume --stream 3 --get # Stream 3 = Medien adb shell media volume --show --stream 3 --set 10 adb shell media volume --stream 3 --adj lower
HDMI-Eingang über das TV-Input-Framework (geräteabhängig)
# 1) Kennungen der Eingänge anzeigen (Ausgabe je Hersteller verschieden) adb shell dumpsys tv_input | grep -i hdmi # 2) Eingang über seine Kennung öffnen – <inputId> von oben einsetzen adb shell am start -a android.intent.action.VIEW \ -d 'content://android.media.tv/passthrough/<inputId>'
Nicht auf jedem Gerät
Der Höchstwert der Lautstärke, die Kennungen der Eingänge und ob die Fernseh-App den zweiten Befehl annimmt, hängen vom Hersteller ab. Erst von Hand ausprobieren, dann ins Skript schreiben.📎 Quellen: AOSP – VolumeCtrl (Quelltext von „media volume“) · Android Developers – TvContract · Android Developers – Android Debug Bridge (adb)