import os,sys def 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 arr def 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 = False obtnb = False obtnc = False obtnr = False obtnm = False obtnp = False time = 0 while 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()