#!/bin/bash # 3 modes: # get # set - absolute # set - relative (( DEBUG = ${DEBUG:-0} )) (( PCIDEVICE = $( sudo reggie_se -D PentiumM -x 2>&1 | grep "Display controller: " | cut -d. -f 1 ) )) NOARGS=65 PN="$( basename "$0" )" # Program name VER="$( echo '$Revision: 0.1 $' | cut -d' ' -f2 )" # ==> VER=0.1 function Debug () { (( DEBUG )) && echo "DEBUG: $@" >&2 return $(( DEBUG )) } Debug "PCIDEVICE is $PCIDEVICE" # ==> Function to print usage message. function Usage () { cat >&2 <&1 else sudo reggie_se -D PCI -i $PCIDEVICE -w $BRIGHTNESS -a 0xF4 -B 8 >/dev/null 2>&1 fi Debug "reggie called" } # SetRawBrightness function GetBrightness() { HEX="$( sudo reggie_se -D PCI -i $PCIDEVICE -r -a 0xF4 -B 8 2>&1 | grep "Offset" | cut -d"|" -f1 | cut -c 26-30 | sed -e 's:^0[bBxX]::' | tr '[a-f]' '[A-F]' )" return $( echo "ibase=16;$HEX" | bc ) } # GetBrightness function SetBrightness() { Debug "SetBrightness called" if [[ $# -gt 1 ]]; then Debug "More than one parameter" if [[ $2 -gt 254 || $2 -lt 1 ]]; then Usage break else if [[ "$1" == "+" ]]; then GetBrightness BRIGHTNESS=$(( $? + $2 )) else GetBrightness BRIGHTNESS=$(( $? - $2 )) fi SetRawBrightness fi else Debug "One parameter" if [[ $1 -gt 255 || $2 -lt 0 ]]; then Usage break else BRIGHTNESS=$1 Debug "BRIGHTNESS is $BRIGHTNESS" SetRawBrightness fi fi } # SetBrightness [ $# -eq 0 ] && { Usage; exit 0; } while [ $# -gt 0 ]; do case "$1" in get) GetBrightness (( BRIGHTNESS = $? )) echo "Brightness: $BRIGHTNESS" exit $(( BRIGHTNESS )) ;; set) if [[ -z $2 && -z $3 ]]; then Usage elif [[ -z $3 ]]; then SetBrightness $2 else SetBrightness $2 $3 fi break ;; -h) Usage # ==> Help message ;; *) Usage # first number ;; esac # ==> More error checking for illegal input might be useful. shift done