1# Capture and display input events and coordinates
2#
3# Usage: ./capture.sh
4#
5
6# do a throw-away adb in case the server is out-of-date
7adb devices -l 2>&1 >/dev/null
8
9while [ $# -gt 0 ]
10do
11	case "$1" in
12	(-d) DEVICE=$2; shift;;
13	(*)
14		echo Unknown option $1
15		exit 1;;
16	esac
17	shift
18done
19
20if [ "$DEVICE" = "" ]; then
21	devInfo=$(adb devices -l | grep -v ^List | head -1)
22	set -- $devInfo
23	echo devInfo=$devInfo
24	DEVICE=$(echo $4 | sed 's/product://')
25fi
26
27function convert {
28	in=$1
29	max=$2
30	scale=$3
31	if [ $max -eq 0 ]; then
32		echo $in
33	else
34		((out=in*scale/max))
35		echo $out
36	fi
37}
38
39
40case $DEVICE in
41(shamu|hammerhead|bullhead|ariel)
42	# no scaling necessary
43	xmax=0
44	ymax=0;;
45(volantis)
46	xmax=3060
47	xscale=1500
48	ymax=2304
49	yscale=1950;;
50(*)
51	echo "Error: No display information available for $DEVICE"
52	exit 1;;
53esac
54
55echo Capturing input for $DEVICE...
56stdbuf -o0 adb shell getevent -t |
57	stdbuf -o0 grep "event.: 0003" |
58	stdbuf -o0 grep "0003 003[0156a9]" |
59	stdbuf -o0 tr ':[]
60' ' ' | while read line
61do
62	set -- $line
63	code=$4
64	value=$((16#$5))
65	case $code in
66	(0035) x=$(convert $value $xmax $xscale);;
67	(0036) y=$(convert $value $ymax $yscale);;
68	(0030) tag="majorTouch";;
69	(0031) tag="minorTouch";;
70	(003a) tag="pressure";;
71	(0039) tag="trackingId";;
72	(--) echo unknown code=$code;;
73	esac
74	printf "%-10s %-4d  %-4d\n" $tag $x $y
75done
76