#!/usr/bin/python
import sys
import getopt
import dbus

bus = dbus.SystemBus()

bmgr = dbus.Interface(bus.get_object('org.bluez', '/org/bluez'), 'org.bluez.Manager')
bus_id = bmgr.ActivateService('input')

imgr = dbus.Interface(bus.get_object(bus_id, '/org/bluez/input'), 'org.bluez.input.Manager')

optlist, args = getopt.getopt(sys.argv[1:], '', ['list','connect=','disconnect=','help'])

for opt,val in optlist:
	if opt == '--list':
		for path in imgr.ListDevices():
			idev = dbus.Interface (bus.get_object(bus_id, path), 'org.bluez.input.Device')
			print "%s Name: \"%s\" ID: %04x:%04x Connected: %i" % (path, idev.GetName(), idev.GetProductId(), idev.GetVendorId(), idev.IsConnected())
	elif opt == '--connect':
		path = ''
		if (val[0] == '/'):
			path = val
		else:
			path = imgr.CreateDevice(val)
		idev = dbus.Interface (bus.get_object(bus_id, path), 'org.bluez.input.Device')
		idev.Connect()
	elif opt == '--disconnect':
		imgr.RemoveDevice(val)
	else:
		print 'usage: ', sys.argv[0], '[ --list, --connect=[XX:XX:XX:XX:XX, /org/bluez/input/device0], --disconnect=/org/bluez/input/device0, --help ]'
		break


