1#!/bin/sh 2 3CONTROL_MAX=100 4SENSOR_MAX=255 5ADJUSTMENT=30 6DEBUG=0 7 8update_brightness() 9( 10 BRIGHTNESS_RIGHT=$(( `sysctl -n dev.asmc.0.light.right` )) 11 BRIGHTNESS_LEFT=$(( `sysctl -n dev.asmc.0.light.left` )) 12 BRIGHTNESS=0; 13 if [ $BRIGHTNESS_LEFT -gt 0 ] & [ $BRIGHTNESS_RIGHT -gt 0 ]; then 14 BRIGHTNESS=$((($BRIGHTNESS_LEFT + $BRIGHTNESS_RIGHT) / 2)) 15 elif [ $BRIGHTNESS_LEFT -gt 0 ]; then 16 BRIGHTNESS=$BRIGHTNESS_LEFT 17 elif [ $BRIGHTNESS_RIGHT -gt 0 ]; then 18 BRIGHTNESS=$BRIGHTNESS_RIGHT 19 fi 20 21 # Sensor value 0-255 22 # Convert to control value 0-100 23 24 BRIGHTNESS=$((($BRIGHTNESS * $CONTROL_MAX) / $SENSOR_MAX + $ADJUSTMENT)) 25 26 27 if [ $BRIGHTNESS -lt 15 ]; then 28 BRIGHTNESS=15 29 fi 30 if [ $BRIGHTNESS -gt 100 ]; then 31 BRIGHTNESS=100 32 fi 33 return $BRIGHTNESS 34) 35 36update_brightness 37LAST=$? 38intel_backlight $LAST >/dev/null 39 40while sleep 1; do 41 update_brightness 42 NEW=$? 43 if [ $LAST -gt $NEW ]; then 44 DIFF=$(( $LAST - $NEW )) 45 if [ $DIFF -gt 4 ]; then 46 while [ $LAST -gt $NEW ]; do 47 LAST=$(( LAST - 2 )) 48 if [ $DEBUG -eq 1 ]; then 49 echo Setting value $LAST \(1\) 50 fi 51 intel_backlight $LAST >/dev/null 52 sleep 0.01 53 done 54 fi 55 else 56 DIFF=$(( $NEW - $LAST )) 57 if [ $DIFF -gt 4 ]; then 58 while [ $LAST -lt $NEW ]; do 59 LAST=$(( LAST + 2 )) 60 if [ $DEBUG -eq 1 ]; then 61 echo Setting value $LAST \(2\) 62 fi 63 intel_backlight $LAST >/dev/null 64 sleep 0.01 65 done 66 fi 67 fi 68done 69