blob: f6a407f44f427763628fef035280c6602dbef512 [file] [log] [blame]
#!/bin/sh
# Copyright (c) 2011 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" "$@"
VALID=1
SYN_ENABLE="/home/chronos/.syntp_enable"
PROG=`basename $0`
COMMAND=$1
VALUE=$2
WANT_USAGE=0
# Check if syntp is installed
if [ -x /opt/Synaptics/bin/tpcontrol_syncontrol ]; then
SYNTP_INSTALLED=1
else
SYNTP_INSTALLED=0
fi
# Global verbs usage message
gusage() {
# One usage message per global command; only output syntp usage if it is
# supported in the current configuration
if [ "x$SYNTP_INSTALLED" = "x1" ] ; then
echo "Usage: $PROG {syntp [on|off]}"
fi
}
# Global verbs here
#
# A global verb is one which is applied to all underlying tpcontrol utilities;
# in the case of "mostly global" verbs, we have to do extra testing to drop
# them out when they don't apply.
#
# Note: "status" is a special verb, since we want to add any global verb
# status reports to the end of the underlying tpcontrol utilities status
#
#
# syntp verb is only valid if $SYNTP_INSTALLED
#
if [ "$COMMAND" = "syntp" -a "x$SYNTP_INSTALLED" = "x1" ] ; then
if [ "$VALUE" = "off" ] ; then
/bin/rm -f "$SYN_ENABLE"
exit 0
elif [ "$VALUE" = "on" ] ; then
/usr/bin/touch "$SYN_ENABLE"
exit 0
else
# bad command; force usage via pseudo-command (unimplemented) "usage"
WANT_USAGE=1
fi
fi
# Fall through to handle other commands; we source the script so it can
# tell us whether or not it's valid by picking up the 'VALID' environment
# variable.
# Select an underlying tpcontrol command to run
if [ "x$SYNTP_INSTALLED" = "x1" -a \
-n "$(find /dev -maxdepth 1 -type c -name 'serio_raw*' -print -quit)" ]; \
then
# Configure using tpcontrol_syncontrol if it exists, and there is a
# /dev/serio_raw* char device for syntp to use. This lets the code work
# after a switch but before a restart of the ui.
CONTROL=/opt/Synaptics/bin/tpcontrol_syncontrol
elif [ -x /usr/bin/xinput ] ; then
# TODO(djkurtz): This is fragile, for now it works because xinput is only
# installed in /usr/bin/ if cmt USE flag is set when building libcros.
CONTROL=/opt/google/touchpad/tpcontrol_xinput
else
CONTROL=/opt/google/touchpad/tpcontrol_synclient
fi
# Run the underlying command
#
# NOTE: This is sourcing the script, not calling it in a subshell
#
# We only WANT_USAGE if we had a global command and it failed; we make
# this explicit as a call, since the previous implementation was confusing
if [ "x$WANT_USAGE" = "x1" ] ; then
. $CONTROL usage
else
. $CONTROL
fi
# Append global verb status results; for commands which aren't applicable to
# the current configuration, a test must be done to disable status for
# particular global commands
if [ "$COMMAND" = "status" ] ; then
# the status only applies to the syntp command if it is enabled
if [ "x$SYNTP_INSTALLED" = "x1" ] ; then
if [ -f "$SYN_ENABLE" ]; then
echo "syntp: on"
else
echo "syntp: off"
fi
fi
fi
# for invalid input, append our usage to that of the underlying command
# which has had its usage message forced previously
if [ "x$VALID" = "x0" ] ; then
gusage
exit 1
fi
exit 0