You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.3 KiB
74 lines
1.3 KiB
# 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|ariel) |
|
# 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
|
|
|