part 2 deals with the server part ie the system..we need a system installed with python and sendkey attribute (make sure both of them are of same version)of python to do it
http://dl.dropbox.com/u/30579529/Bluecon/python/python-2.5.4.msi
http://dl.dropbox.com/u/30579529/Bluecon/python/SendKeys-0.3.win32-py2.5.exe
http://dl.dropbox.com/u/30579529/Bluecon/python/PyBluez-0.15.win32-py2.5.exe
in server side we broadcast a service and wait for client to connect .
after connecting the server receives the ascii values from the client and server uses the sendkey attribute to make virtual keyboard and mouse movements with respect to received ascii values
/***********code*****************/
from ctypes import *
from bluetooth import *
import string
from SendKeys import *
user32=windll.user32
from ctypes.wintypes import *
import time
LEFTDOWN = 0x00000002
LEFTUP = 0x00000004
# MIDDLEDOWN = 0x00000020
# MIDDLEUP = 0x00000040
# MOVE = 0x00000001
# ABSOLUTE = 0x00008000
RIGHTDOWN = 0x00000008
RIGHTUP = 0x00000010
class POINT(Structure):
_fields_ = [("x", c_ulong),
("y", c_ulong)]
def getpos():
global pt
pt = POINT()
windll.user32.GetCursorPos(byref(pt))
return pt.x, pt.y
def move(x,y):
windll.user32.SetCursorPos(x,y)
def up():
x = getpos()[0]
y = getpos()[1]
move(x,y-10)
def down():
x = getpos()[0]
y = getpos()[1]
move(x,y+10)
def left():
x = getpos()[0]
y = getpos()[1]
move(x-10,y)
def rigth():
x = getpos()[0]
y = getpos()[1]
move(x+10,y)
def rightclick():
windll.user32.mouse_event(RIGHTDOWN,0,0,0,0)
windll.user32.mouse_event(RIGHTUP,0,0,0,0)
def leftclick():
windll.user32.mouse_event(LEFTDOWN,0,0,0,0)
windll.user32.mouse_event(LEFTUP,0,0,0,0)
def send(data):
if(data==97):
SendKeys('a')
elif(data==98):
SendKeys('b')
elif(data==99):
SendKeys('c')
elif(data==100):
SendKeys('d')
elif(data==101):
SendKeys('e')
elif(data==102):
SendKeys('f')
elif(data==103):
SendKeys('g')
elif(data==104):
SendKeys('h')
elif(data==105):
SendKeys('i')
elif(data==106):
SendKeys('j')
elif(data==107):
SendKeys('k')
elif(data==108):
SendKeys('l')
elif(data==109):
SendKeys('m')
elif(data==110):
SendKeys('n')
elif(data==111):
SendKeys('o')
elif(data==112):
SendKeys('p')
elif(data==113):
SendKeys('q')
elif(data==114):
SendKeys('r')
elif(data==115):
SendKeys('s')
elif(data==116):
SendKeys('t')
elif(data==117):
SendKeys('u')
elif(data==118):
SendKeys('v')
elif(data==119):
SendKeys('w')
elif(data==120):
SendKeys('x')
elif(data==121):
SendKeys('y')
elif(data==122):
SendKeys('z')
elif(data==65):
SendKeys('A')
elif(data==66):
SendKeys('B')
elif(data==67):
SendKeys('C')
elif(data==68):
SendKeys('D')
elif(data==69):
SendKeys('E')
elif(data==70):
SendKeys('F')
elif(data==71):
SendKeys('G')
elif(data==72):
SendKeys('H')
elif(data==73):
SendKeys('I')
elif(data==74):
SendKeys('J')
elif(data==75):
SendKeys('K')
elif(data==76):
SendKeys('L')
elif(data==77):
SendKeys('M')
elif(data==78):
SendKeys('N')
elif(data==79):
SendKeys('O')
elif(data==80):
SendKeys('P')
elif(data==81):
SendKeys('Q')
elif(data==82):
SendKeys('R')
elif(data==83):
SendKeys('S')
elif(data==84):
SendKeys('T')
elif(data==85):
SendKeys('U')
elif(data==86):
SendKeys('V')
elif(data==87):
SendKeys('W')
elif(data==88):
SendKeys('X')
elif(data==89):
SendKeys('Y')
elif(data==90):
SendKeys('Z')
elif(data==48):
SendKeys('0')
elif(data==49):
SendKeys('1')
elif(data==50):
SendKeys('2')
elif(data==51):
SendKeys('3')
elif(data==52):
SendKeys('4')
elif(data==53):
SendKeys('5')
elif(data==54):
SendKeys('6')
elif(data==55):
SendKeys('7')
elif(data==56):
SendKeys('8')
elif(data==57):
SendKeys('9')
elif(data==43):
SendKeys('+')
elif(data==45):
SendKeys('-')
elif(data==42):
SendKeys('*')
elif(data==47):
SendKeys('/')
elif(data==61):
SendKeys('=')
elif(data==35):
SendKeys('#')
elif(data==44):
SendKeys(',')
elif(data==46):
SendKeys('.')
elif(data==59):
SendKeys(';')
elif(data==58):
SendKeys(':')
elif(data==64):
SendKeys('@')
elif(data==63):
SendKeys('?')
elif(data==32):
SendKeys(' ')
elif(data==13):
SendKeys("{ENTER}")
leftclick()
elif(data==8):
SendKeys("{BACKSPACE}")
elif(data==40):
SendKeys('(')
elif(data==41):
SendKeys(')')
elif(data==38):
SendKeys('&')
elif(data==33):
SendKeys('!')
elif(data==63497):
up()
elif(data==63498):
down()
elif(data==63495):
left()
elif(data==63496):
rigth()
elif(data==63557):
leftclick()
elif(data==63586):
rightclick()
parseStr = lambda x: x.isalpha() and x or x.isdigit() and int(x) or x.isalnum() and x or len(set(string.punctuation).intersection(x)) == 1 and x.count('.') == 1 and float(x) or x
server_sock=BluetoothSocket( RFCOMM )
server_sock.bind(("",PORT_ANY))
server_sock.listen(1)
port = server_sock.getsockname()[1]
uuid = "94f39d29-7d6d-437d-973b-fba39e49d4ee"
advertise_service( server_sock, "BLUECONTROL",
service_id = uuid,
service_classes = [ uuid, SERIAL_PORT_CLASS ],
profiles = [ SERIAL_PORT_PROFILE ],
# protocols = [ OBEX_UUID ]
)
print "Waiting for connection on RFCOMM channel %d" % port
client_sock, client_info = server_sock.accept()
print "Accepted connection from ", client_info
try:
while True:
data = client_sock.recv(1024)
if len(data) == 0: break
da=parseStr(data)
send(da)
except IOError:
pass
print "disconnected"
client_sock.close()
server_sock.close()
print "all done"
--------------
here i use a function parseStr to get the integer value form the received string .
later u can use pytoexe attribute in python to convert the server into a python independent running program
No comments:
Post a Comment