#!/bin/sh x1=234 y1=234 xvel=1 xspd=$xvel yvel=1 yspd=$yvel x2=256 y2=256 w=16 h=16 clear actkbd -Ps | \ while read frame key held; do yspd=0 && xspd=0 && negx="" && negy=""; [ "${key#*KEY_W}" != "$key" -o "${key#*KEY_S}" != "$key" ] && yspd=$yvel [ "${key#*KEY_A}" != "$key" -o "${key#*KEY_D}" != "$key" ] && xspd=$xvel [ "${key#*KEY_W}" != "$key" ] && negy="-" && y1=$(expr $y1 - $yspd) [ "${key#*KEY_S}" != "$key" ] && negy="" && y1=$(expr $y1 + $yspd) [ "${key#*KEY_A}" != "$key" ] && negx="-" && x1=$(expr $x1 - $xspd) [ "${key#*KEY_D}" != "$key" ] && negx="" && x1=$(expr $x1 + $xspd) xy=$(printf "1\n$w,$h\n$x1,$y1\n$negx$xspd,$negy$yspd\n128,128\n$x2,$y2" | ./clld | tail -n2 | tr -d ',' | head -n1) x1=$(echo "$xy" | awk '{print $1}') y1=$(echo "$xy" | awk '{print $2}') printf "\33[1;1H$x1 $y1 \33[2;1H$negx$xspd $negy$yspd \b\b" done