All pastes #270140 Raw Edit

Wii IR

public python v1 · immutable
·published 2006-12-07 03:10 UTC
rendered paste body
import os,sysdef read():	ln=sys.stdin.readline()	while ln[:17]!="      0000: a1 33":		ln=sys.stdin.readline()	ln2=sys.stdin.readline()	arr = []	for i in range(6):		arr.append(int(ln[18+i*3:20+i*3],16))	for i in range(8):		arr.append(int(ln[37+i*3:39+i*3],16))	for i in range(3):		arr.append(int(ln2[12+i*3:14+i*3],16))	return arrdef getpoint(d):	x=d[0]+((d[2]&0x30)<<4)	y=d[1]+((d[2]&0xC0)<<2)	s=d[2]%0xF	return (x,y,s)buffer = []obtna = Falseobtnb = Falseobtnc = Falseobtnr = Falseobtnm = Falseobtnp = Falsetime = 0while True:	time += 1	arr = read()	x1,y1,s1 = getpoint(arr[5:8])	x2,y2,z2 = getpoint(arr[8:11])		x = (x1+x2)/2	y = (y1+y2)/2		if arr[10]==0xff or arr[7]==0xff:		det = False	else:		det = True		if det:					rx=1024-x		ry=y				rx*=3		ry*=3				rx -= 1000		ry -= 300				buffer.append((rx,ry))		if len(buffer) > 20:			buffer = buffer[-20:]				sx = 0		sy = 0		for a,b in buffer:			sx += a			sy += b				sx /= len(buffer)		sy /= len(buffer)			#	sx = rx	#	sy = ry				btna = (arr[1] & 0x08) == 0x08		btnb = (arr[1] & 0x04) == 0x04		btnc = (arr[0] & 0x01) == 0x01		btnr = (arr[0] & 0x02) == 0x02		btnm = (arr[1] & 0x10) == 0x10		btnp = (arr[0] & 0x10) == 0x10				if btna and not obtna:			print "Event: ButtonPress     (4):det=1 scr=0 (-19984,-250) root=0 Msk=45040 TS=0"			print "Event: ButtonRelease   (5):det=1 scr=0 (-19984,-250) root=0 Msk=45040 TS=0"					if btnb != obtnb:			if btnb:				st="Event: ButtonPress     (4):det=1 scr=0 (-19984,-250) root=0 Msk=45040 TS=0"			else:				st="Event: ButtonRelease   (5):det=1 scr=0 (-19984,-250) root=0 Msk=45040 TS=0"			print st		if btnc and not obtnc:			print "Event: ButtonPress     (4):det=2 scr=0 (-19984,-250) root=0 Msk=45040 TS=0"			print "Event: ButtonRelease   (5):det=2 scr=0 (-19984,-250) root=0 Msk=45040 TS=0"		if btnr and not obtnr:			print "Event: ButtonPress     (4):det=3 scr=0 (-19984,-250) root=0 Msk=45040 TS=0"			print "Event: ButtonRelease   (5):det=3 scr=0 (-19984,-250) root=0 Msk=45040 TS=0"				if btnp and not obtnp:			print "Event: ButtonPress     (4):det=6 scr=0 (-19984,-250) root=0 Msk=45040 TS=0"			print "Event: ButtonRelease   (5):det=6 scr=0 (-19984,-250) root=0 Msk=45040 TS=0"				if btnm and not obtnm:			print "Event: ButtonPress     (4):det=7 scr=0 (-19984,-250) root=0 Msk=45040 TS=0"			print "Event: ButtonRelease   (5):det=7 scr=0 (-19984,-250) root=0 Msk=45040 TS=0"				obtna = btna		obtnb = btnb		obtnc = btnc		obtnr = btnr		obtnm = btnm		obtnp = btnp				if (arr[0] & 0x08) and (time % 8 == 0):			print "Event: ButtonPress     (4):det=4 scr=0 (-19984,-250) root=0 Msk=45040 TS=0"			print "Event: ButtonRelease   (5):det=4 scr=0 (-19984,-250) root=0 Msk=45040 TS=0"				if (arr[0] & 0x04) and (time % 8 == 0):			print "Event: ButtonPress     (4):det=5 scr=0 (-19984,-250) root=0 Msk=45040 TS=0"			print "Event: ButtonRelease   (5):det=5 scr=0 (-19984,-250) root=0 Msk=45040 TS=0"							st="Event: MotionNotify    (6):det=0 scr=0 (%d,%d) root=0 Msk=0 TS=0"%(sx,sy)		print st		sys.stdout.flush()