#!/bin/bash
################################################################################
# Fichier : kde3_media_kb.sh
# Auteur  : Sebastien Beaugrand
# Date    : 17/03/2009
# Url     : http://www.chez.com/beaugrand/
################################################################################

user=`whoami`
if [ $user != "root" ]; then
  echo "you must be root"
  exit -1
fi
echo -n "user ? "
read user

kde=`ls -d /home/$user/.kde* | tail -n 1`

loadprg=mp3load.sh       # Montage du disque puis appel a mp3rand.sh
loadprg=mp3rand.sh       # Selection aleatoire de l'album
loadprg="mp3term.sh -x"  # Interface pour mp3rand.sh
loadkey=129              # Keycode a verifier avec xev
loadkey=237              # Pour le Logitec MX3000
commands=(\
 "/home/$user/install/bin/$loadprg"\
 "xmms-shell -e previous"\
 "xmms-shell -e next"\
 "/home/$user/install/bin/mute.sh"\
 "/home/$user/install/bin/playpause.sh"\
 "xmms-shell -e stop"\
 "aumix-text -d/dev/mixer -w-1"\
 "aumix-text -d/dev/mixer -w+1")

names=(\
 "MediaLoad" "MediaPrev" "MediaNext" "MediaMute"\
 "MediaPlay" "MediaStop" "MediaDown" "MediaUp")

file=/usr/share/X11/XKeysymDB
if ! grep MediaLoad $file > /dev/null; then
  cat >> $file << EOF

MediaLoad:10090000
MediaPrev:10090001
MediaNext:10090002
MediaMute:10090003
MediaPlay:10090004
MediaStop:10090005
MediaDown:10090006
MediaUp  :10090007
EOF

else
  echo "la configuration semble deja faite dans $file"
fi

file=/etc/X11/Xmodmap
if ! grep MediaLoad $file > /dev/null; then
  cat >> $file << EOF

keycode $loadkey = MediaLoad
keycode 144 = MediaPrev
keycode 153 = MediaNext
keycode 160 = MediaMute
keycode 162 = MediaPlay
keycode 164 = MediaStop
keycode 174 = MediaDown
keycode 176 = MediaUp
EOF

else
  echo "la configuration semble deja faite dans $file"
fi

echo -e '#!/bin/bash\nxmodmap /etc/X11/Xmodmap' > $kde/Autostart/Xmodmap
chmod 755 $kde/Autostart/Xmodmap

mkdir -p /home/$user/install/bin

file=/home/$user/install/bin/mute.sh
if [ ! -x $file ]; then
  cat > $file << EOF

vol=\`aumix-text -vq | cut -d " " -f 2 | cut -d "," -f 1\`
if [ \$vol = 0 ]; then
  aumix-text -v100
else
  aumix-text -v0
fi
EOF

  chown $user.$user $file
  chmod 755 $file
fi

file=/home/$user/install/bin/playpause.sh
if [ ! -x $file ]; then
  cat > $file << EOF

status=\`xmms-shell -e status 2>/dev/null | head -n 1 | cut -c-7\`
if [ "\$status" = "Playing" ]; then
  xmms-shell -e pause
else
  xmms-shell -e play
fi
EOF

  chown $user.$user $file
  chmod 755 $file
fi

xmodmap /etc/X11/Xmodmap

file=$kde/share/config/khotkeysrc
if ! grep MediaLoad $file > /dev/null; then
  cp $file $file.bak
  offset=`grep DataCount $file | head -n 1 | cut -d '=' -f 2`
  total=$(($offset+${#commands[*]}))
  sed "1,4s/DataCount=$offset/DataCount=$total/" $file.bak > $file

  offset=$(($offset+1))
  for ((i=0;$i<${#commands[*]};i++)); do
    echo -e "${names[$i]}"":\t""${commands[$i]}"
    n=$(($i+$offset))

  cat >> $file << EOF

[Data_$n]
Comment=
Enabled=true
Name=${names[$i]}
Type=COMMAND_URL_SHORTCUT_ACTION_DATA

[Data_${n}Actions]
ActionsCount=1

[Data_${n}Actions0]
CommandURL=${commands[$i]}
Type=COMMAND_URL

[Data_${n}Conditions]
Comment=
ConditionsCount=0

[Data_${n}Triggers]
Comment=Simple_action
TriggersCount=1

[Data_${n}Triggers0]
Key=${names[$i]}
Type=SHORTCUT
EOF

  done
  chown $user.$user $file
else
  echo "la configuration semble deja faite dans $file"
  echo "exemple de commandes:"
  for ((i=0;$i<${#commands[*]};i++)); do
    echo -e "${names[$i]}"":\t""${commands[$i]}"
  done
  echo "essayez: kcmshell khotkeys"
fi

# Fin du fichier kde3_media_kb.sh