1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
from operationscore.Behavior import *
import math
import util.ComponentRegistry as compReg
class MITDoors(Behavior):
"""MITDoors is a case-specific behavior to map keypresses to specific locations. Written for
Kuan 1/26/11 by RCOH"""
def behaviorInit(self):
self.keymapping = {'q':[2,19], 'w':[22,36], 'e':[37,49], 'r':[52,69], 't':[76,91], 'y':[94,105],
'u':[106,117], 'i':[123,154], 'o':[158,161], 'p':[164,167], '[':[172,184]}
screenWidth = compReg.getComponent('Screen').getSize()[2] #(minx, miny,maxx, maxy)
maxKey = max([max(self.keymapping[v]) for v in self.keymapping])
mult = screenWidth / float(maxKey)
for k in self.keymapping:
self.keymapping[k] = [int(val*mult) for val in self.keymapping[k]]
def processResponse(self, sensorInputs, recursiveInputs):
ret = []
for data in sensorInputs:
key = chr(data['Key'])
if key in self.keymapping:
bounds = self.keymapping[key]
data = dict(data)
data['Left'], data['Right'] = bounds
data['Bottom'] = self['Bottom']
data['Location'] = (sum(bounds) / 2., self['Bottom'])
ret.append(data)
return (ret, [])
|