| #!/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 |