blob: 19b338704f7be68cc29733a872ad7645a5286634 [file] [log] [blame]
import re
from numpy import array
TIME = 'time'
VALUE = 'value'
AXIS = 'axis'
re_xy = re.compile(r'.*time (?P<time>\d+\.\d+), type \d+ \(EV_ABS\), code \d+ \(ABS_(?P<axis>[XY])\), value (?P<value>\d+)')
re_tap = re.compile(r'.*time (?P<time>\d+\.\d+), type \d+ \(EV_KEY\), code \d+ \(BTN_TOUCH\), value (?P<value>\d+)')
def load_xy(fname):
with open(fname, 'rt') as f:
match_iter = (re_xy.search(line) for line in f)
events = [m.groupdict() for m in match_iter if m]
x = array([int(e[VALUE]) for e in events if e[AXIS] == 'X'])
tx = array([float(e[TIME]) for e in events if e[AXIS] == 'X'])
y = array([int(e[VALUE]) for e in events if e[AXIS] == 'Y'])
ty = array([float(e[TIME]) for e in events if e[AXIS] == 'Y'])
return (tx, x, ty, y)
def parse_tap_line(line):
m = re_tap.search(line)
if not m:
return None
t = float(m.group(TIME))
val = int(m.group(VALUE))
return (t, val)