#/bin/bash trap 'stty sane; clear; exit 0' SIGINT SIGTERM dir="$(dirname "$0")" [ -f "$dir/webcam.conf" ] && source "$dir/webcam.conf" [ -f "$dir/keybinds.conf" ] && source "$dir/keybinds.conf" BRIGHTNESS="${DEFAULT_BRIGHTNESS:-auto}" EXPOSURE="${DEFAULT_EXPOSURE:-auto}" STEP="${STEP:-5}" : "${KEY_CAPTURE:= }" : "${KEY_BRIGHTNESS_UP:=+}" : "${KEY_BRIGHTNESS_DOWN:=-}" : "${KEY_EXPOSURE_UP:=.}" : "${KEY_EXPOSURE_DOWN:=,}" : "${KEY_RESET:=r}" # clamps $1+$2 to 0-100, treating "auto" as a 50 starting point adjust() { local cur=$1 delta=$2 val [ "$cur" = "auto" ] && cur=50 val=$((cur + delta)) (( val < 0 )) && val=0 (( val > 100 )) && val=100 echo "$val" } while true; do clear export BRIGHTNESS EXPOSURE ./webcam2ascii.sh echo capture_label="$KEY_CAPTURE" [ "$KEY_CAPTURE" = " " ] && capture_label="space" echo "brightness: ${BRIGHTNESS} exposure: ${EXPOSURE}" echo "[${KEY_BRIGHTNESS_UP}/${KEY_BRIGHTNESS_DOWN}] brightness [${KEY_EXPOSURE_UP}/${KEY_EXPOSURE_DOWN}] exposure [${KEY_RESET}] reset to auto [${capture_label}] capture [Ctrl+C] quit" if read -n 1 -t 0.05 -s key; then case "$key" in "$KEY_BRIGHTNESS_UP"|"${KEY_BRIGHTNESS_UP^^}") BRIGHTNESS=$(adjust "$BRIGHTNESS" "$STEP") ;; "$KEY_BRIGHTNESS_DOWN"|"${KEY_BRIGHTNESS_DOWN^^}") BRIGHTNESS=$(adjust "$BRIGHTNESS" "-$STEP") ;; "$KEY_EXPOSURE_UP"|"${KEY_EXPOSURE_UP^^}") EXPOSURE=$(adjust "$EXPOSURE" "$STEP") ;; "$KEY_EXPOSURE_DOWN"|"${KEY_EXPOSURE_DOWN^^}") EXPOSURE=$(adjust "$EXPOSURE" "-$STEP") ;; "$KEY_RESET"|"${KEY_RESET^^}") BRIGHTNESS="${DEFAULT_BRIGHTNESS:-auto}"; EXPOSURE="${DEFAULT_EXPOSURE:-auto}" ;; "$KEY_CAPTURE"|"${KEY_CAPTURE^^}") timestamp=$(date +%Y%m%d-%H%M%S) cp web-cam-shot.jpg "photo-$timestamp.jpg" cp ascii-img.txt "ascii-img-$timestamp.txt" clear cat "ascii-img-$timestamp.txt" echo echo "Saved photo-$timestamp.jpg and ascii-img-$timestamp.txt" ./txt2printr.sh "ascii-img-$timestamp.txt" read -n 1 -s -p "Press any key to resume live preview, Ctrl+C to quit..." ;; esac fi done