blob: 9888c5a054d26dc85a07e3f7b149429174003c4f [file] [log] [blame]
#!/bin/sh
# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Log all calls, with arguments, to /var/log/messages
logger "$0" "$@"
XINPUT=/usr/bin/xinput
export DISPLAY=:0
export XAUTHORITY=/home/chronos/.Xauthority
. /opt/google/mouse/common
PROG=`basename $0`
COMMAND=$1
# On disk preferences
PREF_SENS_FILE=/home/chronos/user/touchpad_sensitivity
PREF_SENS_VALID="[12345]"
PREF_SENS_DEFAULT=3
PREF_TAP_FILE=/home/chronos/user/touchpad_tap_enable
PREF_TAP_VALID="[01]"
PREF_TAP_DEFAULT=0
PREF_3FCLICK_FILE=/home/chronos/user/touchpad_3f_click_enable
PREF_3FCLICK_VALID="[01]"
PREF_3FCLICK_DEFAULT=0
PREF_T5R2_3FCLICK_FILE=/home/chronos/user/touchpad_t5r2_3f_click_enable
PREF_T5R2_3FCLICK_VALID="[01]"
PREF_T5R2_3FCLICK_DEFAULT=0
usage() {
echo "Usage:"\
"$PROG {status|log|taptoclick [on|off]|sensitivity [1-5]|"\
"three_finger_click [on|off]|t5r2_three_finger_click [on|off]|"\
"set <property> <value>|add|listdev}"
}
# echos "0" (off) or "1" (on) on success, or nothing on failure.
parse_bool() {
local value="$1"
case $value in
"on"|"1")
echo "1"
;;
"off"|"0")
echo "0"
;;
esac
}
# Sets VALID to 1 (valid input) or 0 (invalid input)
apply_on_off_prop() {
local prop_name="$1"
local value="$2"
local pref_name="$3"
local num_val=$(parse_bool "$value")
if [ -n "$num_val" ]; then
$XINPUT set-prop $DEVICE "$prop_name" "$num_val"
store_pref "$pref_name" "$num_val"
VALID=1
else
VALID=0
fi
}
find_pad
DEVICE=$?
VALID=0
if [ $# = 0 ] ; then
VALID=0
elif [ "$COMMAND" = "status" -a $# = 1 ] ; then
$XINPUT list-props $DEVICE
VALID=1
elif [ "$COMMAND" = "log" -a $# = 1 ] ; then
$XINPUT set-prop $DEVICE "Logging Notify" 1
$XINPUT set-prop $DEVICE "Dump Debug Log" 1
sleep 0.5
now=$(date '+%Y%m%d-%H%M%S')
raw_file=/var/log/touchpad_activity_log.txt
out_dir=/home/chronos/user/log
out_prefix=touchpad_activity_
out_file="${out_dir}/${out_prefix}${now}"
cmt_log_file=/var/log/cmt_input_events.dat
cmt_out_prefix=cmt_input_events_
cmt_out_file="${out_dir}/${cmt_out_prefix}${now}"
if [ ! -d $out_dir ]; then
echo "User not logged in, so not moving log to user dir"
else
gzip -c --stdout "$raw_file" > "$out_file"
gzip -c --stdout "$cmt_log_file" > "$cmt_out_file"
# Delete old log files
delete="$(ls -t ${out_dir}/${out_prefix}* | tail -n '+6')"
delete="${delete} $(ls -t ${out_dir}/${cmt_out_prefix}* | tail -n '+6')"
for file in $delete ; do
rm -f "$file"
done
fi
VALID=1
elif [ "$COMMAND" = "taptoclick" -a $# = 2 ] ; then
VALUE=$2
apply_on_off_prop "Tap Enable" "$VALUE" "TAP"
elif [ "$COMMAND" = "sensitivity" -a $# = 2 ] ; then
VALUE=$2
$XINPUT set-prop $DEVICE "Sensitivity" "$VALUE"
store_pref SENS "$VALUE"
VALID=1
elif [ "$COMMAND" = "three_finger_click" -a $# = 2 ] ; then
VALUE=$2
apply_on_off_prop "Three Finger Click Enable" "$VALUE" "3FCLICK"
elif [ "$COMMAND" = "t5r2_three_finger_click" -a $# = 2 ] ; then
VALUE=$2
apply_on_off_prop "T5R2 Three Finger Click Enable" "$VALUE" "T5R2_3FCLICK"
elif [ "$COMMAND" = "set" -a $# = 3 ] ; then
PROP=$2
VALUE=$3
$XINPUT set-prop $DEVICE "$PROP" "$VALUE"
VALID=1
elif [ "$COMMAND" = "add" -a $# = 1 ] ; then
# New device. Set sensitivity/tap enable
# Give some time for device to arrive, if necessary
if [ -z "$DEVICE" ]; then
sleep 2
DEVICE="$(find_pad)"
fi
$XINPUT set-prop $DEVICE "Sensitivity" "$(load_pref SENS)"
$XINPUT set-prop $DEVICE "Tap Enable" "$(load_pref TAP)"
$XINPUT set-prop $DEVICE "Three Finger Click Enable" "$(load_pref 3FCLICK)"
$XINPUT set-prop $DEVICE "T5R2 Three Finger Click Enable" \
"$(load_pref T5R2_3FCLICK)"
VALID=1
elif [ "$COMMAND" = "listdev" -a $# = 1 ] ; then
find_pad
echo $?
VALID=1
fi
if [ $VALID = 0 ] ; then
usage
fi