#!/bin/sh
#Dieses Skript ändert die Button-Belegung einer Lenovo/LiteON-Multimedia-Tastatur und
#sorgt bei entsprechendem Tastendruck für Ausführung geeigneter Kommandos 


#1) mappe die Tasten der Lenovo-Tastatur um - sie erscheinen als Mousebuttons. Erster Wert ist die ID 
#der Tastatur - ermitteln mit xinput --list  

xinput set-button-map 10 6 7 8 9 10 11 12 13

#liefert Button-Events "6 7 8 13 9 10 11 12"


#2.jetzt den Button-Events die jeweilige Aktion zuweisen und mit xbindkeys umsetzen
#a) Konfig-Datei schreiben
cat > ~/.xbindkeysrc << 'END_XBINDKEYSRC'
begin 644 -
"firefox"
b:12

"evolution"
b:11

"kcalc"
b:10

"soffice --calc"
b:9

"soffice --writer"
b:13

"dolphin ~"
b:8

"mplayer /usr/share/sounds/KDE-Sys-App-Negative.ogg & dbus-send --session --dest=org.freedesktop.ScreenSaver --type=method_call --print-reply /ScreenSaver org.freedesktop.ScreenSaver.Lock"
b:7

"konsole"
b:6
END_XBINDKEYSRC


#b) Programm beenden, falls gestartet, und danach neu starten
USER=`whoami`
xbindkeysPID=`ps -U $USER|grep xbindkeys|awk '{print $1}'`

if [ -z "$xbindkeysPID" ]; then	#keine xbindkeys-Instanz gestartet
  xbindkeys -f ~/.xbindkeysrc
else
  /bin/kill -s SIGTERM $xbindkeysPID	#xbindkeys beenden
  sleep 1;
  xbindkeysPID=`ps -U $USER|grep xbindkeys|awk '{print $1}'`	# weitere Instanzen aktiv?
  while [ ! -z "$xbindkeysPID" ]; do 
    echo "killing $xbindkeysPID..."
    /bin/kill -s SIGKILL $xbindkeysPID; 
    sleep 2; 
    xbindkeysPID=`ps -U $USER|grep xbindkeys|awk '{print $1}'`
  done
  xbindkeys -f ~/.xbindkeysrc
fi
