Here is a shell script that takes input from the mouse scroll wheel to
change the volume of the named local player. I wrote it with a view to
hacking a Poundland mouse plus rotary encoder to put a real volume knob
on my LMS / Squeezebox computer. I would welcome any comments or
suggestions. 

Code:
--------------------
    
  #!/bin/bash
  
  #use command - xinput - to find id of mouse who's scroll wheel you want to use
  mouseID=10 
  player='Dining Room'
  IP="127.0.0.1 9090"
  
  
  
  
  #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=$(echo "player id $n ?" | nc -q1 $IP | tail -c 28 | sed -r 
's/%3A/:/g' )
                pname=$(echo "player name $n ?" | nc -q1 $IP | cut -c 15- | sed 
-r 's/%20/ /g')
                        if [ "$pname" = "$player" ]; then
                                playerID=$pmac
                                echo
                                echo "$pname"   "$pmac"
                        fi
                n=$(($n + 1))
        done
  
  echo
  OldScroll=$(xinput --query-state $mouseID | grep 'valuator\[2\]\=' | cut -c 
14-)
  echo "Initial wheel position: $OldScroll"
  playerVOL=$(printf "$playerID mixer volume ?\nexit\n" | nc $IP | tail -c 3 | 
tr -dc '0-9')
  echo "Initial Volume: $playerVOL"
  echo
  
  # Infinite loop checks to see if mouse scroll wheel has turned and in which 
direction - Ctrl C to quit
  
  while :
  do
  
  scroll=$(xinput --query-state $mouseID | grep 'valuator\[2\]\=' | cut -c 14-)
  
  if [ $OldScroll -gt $scroll ]; then
        playerVOL=$(printf "$playerID mixer volume ?\nexit\n" | nc $IP | tail 
-c 3 | tr -dc '0-9')
        setVOL=`expr $playerVOL + 5`
        printf "$playerID mixer volume $setVOL\nexit\n" | nc $IP
  fi
  
  if [ $scroll -gt $OldScroll ]; then
        playerVOL=$(printf "$playerID mixer volume ?\nexit\n" | nc $IP | tail 
-c 3 | tr -dc '0-9')
        setVOL=`expr $playerVOL - 5`
        printf  "$playerID mixer volume $setVOL\nexit\n" | nc $IP
  fi
  
  OldScroll=$scroll  
  sleep 0.2
  
  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
[email protected]
http://lists.slimdevices.com/mailman/listinfo/unix

Reply via email to