From 9b4935d5ecaffb2117127edd3b9faf4bba98cc84 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Mon, 25 Feb 2013 01:50:58 +0800 Subject: [PATCH 1/3] add ev_log replay script --- ev_replay.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 ev_replay.py diff --git a/ev_replay.py b/ev_replay.py new file mode 100644 index 000000000..0499928b2 --- /dev/null +++ b/ev_replay.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +# -*- coding:utf-8 -*- + +import pprint +import struct +import argparse + +EV_LOG = "ev_double.log" +EV_PIPE = "emu_event" + +def gen_ev_from_log_entry(line): + values = line.split("|") + return { + "time": { + "sec": int(values[3]), + "usec": int(values[4]), + }, + "type": int(values[0]), + "code": int(values[1]), + "value": int(values[2]), + } + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("ev_log", type=str, + help="event log file to replay") + args = parser.parse_args() + + # parse ev log into dictionaries + evs = [gen_ev_from_log_entry(line.strip()) + for line in open(args.ev_log)] + #pprint.pprint(evs) + + # replay evs + ev_pipe = open(EV_PIPE, "w") + for ev in evs: + #@TODO also simulate timing here 25.02 2013 (houqp) + ev_pipe.write( + struct.pack("llHHi", + ev["time"]["sec"], ev["time"]["usec"], + ev["type"], + ev["code"], + ev["value"]) + ) + + + From 331ec3a6cea7fe4681e28ff2e0c0bde88a17575f Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Mon, 25 Feb 2013 03:06:59 +0800 Subject: [PATCH 2/3] fix: properly record last_tev in gesturedetector --- frontend/ui/gesturedetector.lua | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/frontend/ui/gesturedetector.lua b/frontend/ui/gesturedetector.lua index 5969d37ad..69d6db1a7 100644 --- a/frontend/ui/gesturedetector.lua +++ b/frontend/ui/gesturedetector.lua @@ -74,10 +74,11 @@ GestureDetector = { } function GestureDetector:feedEvent(tev) + re = self.state(self, tev) if tev.id ~= -1 then self.last_tev = tev end - return self.state(self, tev) + return re end function GestureDetector:deepCopyEv(tev) @@ -190,8 +191,8 @@ function GestureDetector:tapState(tev) } -- cur_tap is used for double tap detection local cur_tap = { - x = self.last_tev.x, - y = self.last_tev.y, + x = tev.x, + y = tev.y, timev = tev.timev, } @@ -201,6 +202,7 @@ function GestureDetector:tapState(tev) self:clearState() ges_ev.ges = "double_tap" self.last_tap = nil + DEBUG("double tap detected") return ges_ev end @@ -218,6 +220,7 @@ function GestureDetector:tapState(tev) if self.last_tap ~= nil then self.last_tap = nil -- we are using closure here + DEBUG("single tap detected") return ges_ev end end, deadline) @@ -229,12 +232,13 @@ function GestureDetector:tapState(tev) -- we return nil in this case self.state = self.tapState DEBUG("set up hold timer") - local deadline = self.last_tev.timev + TimeVal:new{ + local deadline = tev.timev + TimeVal:new{ sec = 0, usec = self.HOLD_INTERVAL } Input:setTimeout(function() if self.state == self.tapState then -- timer set in tapState, so we switch to hold + DEBUG("hold gesture detected") return self:switchState("holdState") end end, deadline) @@ -292,7 +296,6 @@ function GestureDetector:panState(tev) y = self.last_tev.y, w = 0, h = 0, } - self.last_tev = tev return pan_ev end end From 6d6ddc85c3da46da9f10d392633bd449894ae96e Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Mon, 25 Feb 2013 03:17:54 +0800 Subject: [PATCH 3/3] remove debug output for input_event --- frontend/ui/ui.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/ui/ui.lua b/frontend/ui/ui.lua index aac25681e..e0b645b9f 100644 --- a/frontend/ui/ui.lua +++ b/frontend/ui/ui.lua @@ -204,7 +204,7 @@ function UIManager:run() -- delegate input_event to handler if input_event then - DEBUG("in ui.lua:", input_event) + --DEBUG("in ui.lua:", input_event) if input_event == "IntoSS" then Device:intoScreenSaver() elseif input_event == "OutOfSS" then