# works for both keyboard and mouse.

KEYBOARD=`cat /var/lib/bluetooth/*/names | grep -i keyboard | awk '{printf "%s ",$1; $1=""; gsub(/^[ ]*/, "", $0); print "\"" $0 "\"" }'` 
MOUSE=`cat /var/lib/bluetooth/*/names | grep -i mouse | awk '{printf "%s ",$1; $1=""; gsub(/^[ ]*/, "", $0); print "\"" $0 "\"" }'`

if [ "x$KEYBOARD" = x ] && [ "x$MOUSE" = x ] ; then
  OTHERBT=`cat /var/lib/bluetooth/*/names | grep -v [Mm]ouse | grep -v [Kk]eyboard | awk '{printf "%s ",$1; $1=""; gsub(/^[ ]*/, "", $0); print "\"" $0 "\"" }'`
  if [ "x$KEYBOARD" = x ] ; then
     echo "---"
     ls /var/lib/bluetooth/
     echo "---"
     cat /var/lib/bluetooth/*/names
     echo "---"
     exit 1
   fi
   KEYBOARD=$OTHERBT
fi

ZENTITLE='"Bluetooth Devices"'
ZENTEXT='"Choose the connected device:"'
BTMAC=`eval zenity --list --title=$ZENTITLE --text=$ZENTEXT --column="mac" --column="name" --hide-column=1 $KEYBOARD $MOUSE`
DEVMAC=`echo dev_$BTMAC | sed 's/:/_/g'`
#echo $DEVMAC

# add this device to the config if it isn't there yet
BTHIDCONFIG="/home/user/.bt-hid-devices"
DEVTHERE=`grep $DEVMAC $BTHIDCONFIG`
if [ "x$DEVTHERE" = x ] ; then
  echo "$DEVMAC" >> $BTHIDCONFIG
fi
BTDIR=`\
  dbus-send --system --print-reply \
            --dest=org.bluez / org.bluez.Manager.DefaultAdapter \
  | grep "/org" | awk '{print $NF}' | sed 's/\"//g'`

#echo $BTDIR

BTDEV=$BTDIR/$DEVMAC
#echo $BTDEV
#exit

dbus-send --system --print-reply \
          --dest=org.bluez $BTDEV \
             org.bluez.Input.Connect

