summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrediano Ziglio <fziglio@redhat.com>2015-08-06 16:01:42 +0100
committerFrediano Ziglio <fziglio@redhat.com>2015-08-06 16:01:42 +0100
commit2b0f5c8f7cea4f1bfe9352c7dcc20aa0165d8626 (patch)
tree8cec6b19f2934a2acd29aa5ec991fa961685da9b
parentbb8942532aff518f9fdf263238978a5d8c0494b9 (diff)
Add additional informations to log
Log window we are tracking. Log window position and movements. Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
-rw-r--r--rec.h3
-rw-r--r--record.cpp24
2 files changed, 26 insertions, 1 deletions
diff --git a/rec.h b/rec.h
index 332cd6c..3406f02 100644
--- a/rec.h
+++ b/rec.h
@@ -4,7 +4,8 @@ inline void operator delete(void *p) { free(p); }
class Record
{
public:
- enum FieldsType { Nothing, X, Y, State, Detail, MAX_FIELD };
+ enum FieldsType { Nothing, X, Y, State, Detail, Window, Width, Height, Keysym, MAX_FIELD };
+ enum RecordType { WindowMove = 256, TargetWindow };
Record(unsigned _type, unsigned _time):
fields_present(0), type(_type), time(_time)
{
diff --git a/record.cpp b/record.cpp
index abdfb96..1ac3440 100644
--- a/record.cpp
+++ b/record.cpp
@@ -42,6 +42,7 @@ private:
void handle_xinput(XGenericEventCookie *cookie);
void handle_ConfigureNotify(XEvent *event);
void handle_xev(XEvent *ev);
+ void record_move();
WriteRecordsFile file;
bool has_focus, inside;
@@ -57,6 +58,14 @@ DoRecord::DoRecord(Window _win, const char *fn):
xev_init(win);
xinput_init(dpy, win);
+
+ /* mark which window we selected to record */
+ Record r(Record::TargetWindow, get_record_time());
+ r.set_field(Record::Window, win);
+ file.put(r);
+
+ /* fake move to tell where mouse was */
+ record_move();
}
void
@@ -86,6 +95,18 @@ DoRecord::go()
}
void
+DoRecord::record_move()
+{
+ Record r(Record::WindowMove, get_record_time());
+ r.set_field(Record::X, rc.x);
+ r.set_field(Record::Y, rc.y);
+ r.set_field(Record::Width, rc.width);
+ r.set_field(Record::Height, rc.height);
+ r.set_field(Record::Window, win);
+ file.put(r);
+}
+
+void
DoRecord::handle_xi_mouse(XIDeviceEvent* ev)
{
int mouse_x = (int) ev->root_x;
@@ -104,6 +125,7 @@ DoRecord::handle_xi_mouse(XIDeviceEvent* ev)
r.set_field(Record::Y, mouse_y - rc.y);
r.set_field(Record::State, ev->mods.effective);
r.set_field(Record::Detail, ev->detail);
+ r.set_field(Record::Window, win);
file.put(r);
if (verbose == 1)
@@ -118,6 +140,7 @@ DoRecord::handle_xi_keys(XIDeviceEvent* ev)
r.set_field(Record::Y, ev->root_y - rc.y);
r.set_field(Record::State, ev->mods.effective);
r.set_field(Record::Detail, ev->detail);
+ r.set_field(Record::Window, win);
file.put(r);
}
@@ -167,6 +190,7 @@ DoRecord::handle_ConfigureNotify(XEvent *event)
rc.y = e->y;
rc.width = e->width;
rc.height = e->height;
+ record_move();
}
}