Improved script:


Code:
--------------------
    
  #!/bin/bash
  
  #use command - xinput - to find id of mouse who's scroll wheel you want to use
  mouseID=" USB OPTICAL MOUSE"
  player="Dining Room"
  IP="127.0.0.1 9090"
  #Button inactive after press registered - tenths of sec
  locktime=10
  #Ratio of mouse scroll value to volume change - sensitivity
  gear=2
  #Press Commands
  Long="playlist play Radio2"
  Short="playlist play Radio4"
  Double="playlist play RadioCornwall"
  
  #Need to convert player name to mac address
  #find number of players
  
  nplayers=$(echo "player count ?" | nc -q1 $IP | tail -c 2 )
  
  
  n=0
        #loop through players to determine mac address of player
  
        while [ $n -lt $nplayers ]
        do
                pmac=$(printf "player id $n ?\nexit\n" | nc $IP | tail -c 28 | 
sed -r 's/%3A/:/g' )
                pname=$(printf "player name $n ?\nexit\n" | nc $IP | cut -c 15- 
| sed -r 's/%20/ /g')
                pmode=$(printf "$pmac mode ?\nexit\n" | nc $IP | cut -c 34-37)
                        if [ "$pname" = "$player" ]; then
                                playerID=$pmac
                                echo
                                echo "$pname"   "$pmac"   "$pmode"
                        fi
                n=$(($n + 1))
        done
  
  echo
  
  MouseState=$(xinput --query-state "$mouseID")
  OldScroll="${MouseState#*valuator\[2\]\=}"
  scroll=$OldScroll
  echo "Initial scroll wheel position: $OldScroll"
  playerVOL=$(printf "$playerID mixer volume ?\nexit\n" | nc $IP | tail -c 3 | 
tr -dc '0-9')
  echo "Initial Volume: $playerVOL"
  echo
  pressed=0
  loop=0
  lockout=0
  # Infinite loop checks to see if mouse scroll wheel has turned and in which 
direction - Ctrl C to quit
  
  while :
  do
  loop=$((loop + 1))
  lockout=$((lockout - 1))
  if [ $lockout -eq 0 ]; then
        echo Unlocked
  fi
  
  MouseState=$(xinput --query-state "$mouseID")
  scroll="${MouseState#*valuator\[2\]\=}"
  playerVOL=$(printf "$playerID mixer volume ?\nexit\n" | nc $IP | tail -c 4 | 
tr -dc '0-9')
  
  #Long press Playlist
  #Short pressPause
  
  #echo                $loop 
  #echo press: $pressed 
  #echo lockout: $lockout
  
  if [ $lockout -lt 0 ]; then
        if [[ $MouseState == *"down"* ]]; then          
            pressed=$((pressed + 1))
                if [[ $pressed -eq 1 ]]; then
                        loop=1
                fi
                if [[ $pressed -gt 1 ]] && [[ $pressed -ne $loop ]]; then       
        
                                        pressed=0
                                        loop=0
                                        lockout=$locktime
                                if [ $loop -lt 5 ]; then
                                        printf "$playerID $Double\nexit\n" | nc 
$IP
                                        echo Double Press
                                fi
                fi
  
                
                if [[ $pressed -gt 4 ]] && [[ $pressed -eq $loop ]];then
                        printf "$playerID $Long\nexit\n" | nc $IP
                        echo Long Press
                        pressed=0
                        loop=0
                        lockout=$locktime
                fi
        fi
  
  
        if [[ $loop -gt 6 ]] && [[ $pressed -lt 5 ]] && [[ $pressed -gt 0 ]]; 
then
                                printf "$playerID $Short\nexit\n" | nc $IP
                                echo Short Press
                                pressed=0
                                loop=0
                                lockout=$locktime 
        fi
  fi
  
  
  
  
  #Volume
  delta=$((scroll - OldScroll))
  
  
  if [ $delta -ne 0 ]; then
        echo Read Vol: $playerVOL       Scroll: $scroll
  if [ $delta -lt "-25" -o $delta -gt 25 ]; then
                echo "Scroll value implausible!"
  else            
  
        if [ $delta -gt 0 ]; then
                        pmode=$(printf "$playerID mode ?\nexit\n" | nc $IP | 
cut -c 34-37)
                                if [[ $pmode == *"stop"* ]]; then
                                        printf  "$playerID play\nexit\n" | nc 
$IP
                                        printf  "$playerID mixer volume 
10\nexit\n" | nc $IP
                                        playerVOL=10
                                        sleep 2
                                fi
                        if [ $playerVOL -lt 96 ]; then
                                setVOL=$((playerVOL + delta*gear))
                                printf  "$playerID mixer volume 
$setVOL\nexit\n" | nc $IP
                        fi
        fi
  
  
        if [ $delta -lt 0 ]; then
                if [ $playerVOL -gt 0 ]; then
                        setVOL=$((playerVOL + delta*gear))
  if [ $setVOL -lt 0 ]; then
  setVOL=0
  fi
                        printf  "$playerID mixer volume $setVOL\nexit\n" | nc 
$IP
  
  
                    #Power off player when volume gets to zero
  if [ $setVOL -eq 0 ]; then
                             printf  "$playerID power 0\nexit\n" | nc $IP
                             echo Volume Zero Off
                             sleep 10
                             echo unlocked
  fi
                fi
        fi
  fi
  fi
  
  
  OldScroll=$scroll 
  sleep 0.1
  done
  
  
  
--------------------


------------------------------------------------------------------------
Wiredcharlie's Profile: http://forums.slimdevices.com/member.php?userid=35115
View this thread: http://forums.slimdevices.com/showthread.php?t=111225

_______________________________________________
unix mailing list
unix@lists.slimdevices.com
http://lists.slimdevices.com/mailman/listinfo/unix

Reply via email to