# Capture and display input events and coordinates
#
# Usage: ./capture.sh
#
# do a throw-away adb in case the server is out-of-date
adb devices -l 2>&1 >/dev/null
while [ $# -gt 0 ]
do
case "$1" in
(-d) DEVICE=$2; shift;;
(*)
echo Unknown option $1
exit 1;;
esac
shift
done
if [ "$DEVICE" = "" ]; then
devInfo=$(adb devices -l | grep -v ^List | head -1)
set -- $devInfo
echo devInfo=$devInfo
DEVICE=$(echo $4 | sed 's/product://')
fi
function convert {
in=$1
max=$2
scale=$3
if [ $max -eq 0 ]; then
echo $in
else
((out=in*scale/max))
echo $out
fi
}
case $DEVICE in
(shamu|hammerhead|bullhead)
# no scaling necessary
xmax=0
ymax=0;;
(volantis)
xmax=3060
xscale=1500
ymax=2304
yscale=1950;;
(*)
echo "Error: No display information available for $DEVICE"
exit 1;;
esac
echo Capturing input for $DEVICE...
stdbuf -o0 adb shell getevent -t |
stdbuf -o0 grep "event.: 0003" |
stdbuf -o0 grep "0003 003[0156a9]" |
stdbuf -o0 tr ':[]
' ' ' | while read line
do
set -- $line
code=$4
value=$((16#$5))
case $code in
(0035) x=$(convert $value $xmax $xscale);;
(0036) y=$(convert $value $ymax $yscale);;
(0030) tag="majorTouch";;
(0031) tag="minorTouch";;
(003a) tag="pressure";;
(0039) tag="trackingId";;
(--) echo unknown code=$code;;
esac
printf "%-10s %-4d %-4d\n" $tag $x $y
done