42c14fae59
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
45 lines
1.4 KiB
Bash
45 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
# android_input_text — Type text in focused field via adb shell input text.
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
# shellcheck source=adb_wsl.sh
|
|
source "$SCRIPT_DIR/adb_wsl.sh"
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# android_input_text [--serial <S>] <text>
|
|
#
|
|
# $1 text Text to type in the currently focused field (obligatorio).
|
|
# Spaces are replaced with %s as required by adb input text.
|
|
# Special chars " $ ` are escaped with backslash.
|
|
#
|
|
# Envvar ADB_SERIAL overrides --serial.
|
|
# ---------------------------------------------------------------------------
|
|
android_input_text() {
|
|
adb_pick_serial "$@" || exit 3
|
|
local serial="$ADB_PICK_SERIAL"
|
|
set -- "${ADB_PICK_REST[@]}"
|
|
|
|
local text="${1:-}"
|
|
if [[ -z "$text" ]]; then
|
|
echo "android_input_text: se requiere el texto como primer argumento." >&2
|
|
return 1
|
|
fi
|
|
|
|
# adb input text does not support raw spaces; replace with %s.
|
|
# Also escape " $ ` which the shell would interpret inside the adb command.
|
|
local escaped
|
|
escaped="${text// /%s}"
|
|
escaped="${escaped//\"/\\\"}"
|
|
escaped="${escaped//\$/\\\$}"
|
|
escaped="${escaped//\`/\\\`}"
|
|
|
|
adb_s "$serial" shell input text "$escaped"
|
|
echo "typed: $text"
|
|
}
|
|
|
|
# Ejecutar si se llama directamente (no sourceado)
|
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
android_input_text "$@"
|
|
fi
|