Project is broken into 5 steps, this is for steps 1-3
1. data model
2. monitor layout visualization
First: you must have multiple monitors to take this project. We are looking for an app to do the following:
-track and record the X,Y position of the mouse over time. It must work across any number of monitors the user has. The data can be stored in memory. Have a sample/seconds value that is not hardcoded so it can be experimented on without modifying code.
-if the mouse is used to move or resize a window, record the 4 X/Y coordinates defining the window and name of the window (it may be an app or explorer file window), should also be recorded with the X/Y coordinates of the mouse. Be smart and record the window name of the start of the moving and stopping, not every interval. Also record the sample number. 32bit INT
-the timestamp of each X/Y recording should be computed, not stored. Record the start time. Have a small window that displays running time, number of samples & memory usage and functional button. No need to update on every sample. Make sure the update value is not hardcoded. Computing timestamp is needed for replay or data dump.
-if no movement is performed, record nothing, however continue to increment the counter in memory
-save: when the user presses stop. save to .csv file. Allow user to select file name, but give default name that does not conflict with other files. Saved data dump all recorded values to .csv. Also add time by using start time and sample number (time is not stored). Save in UTF-8 format.
-replay: In a display window that is resizable, replay the movements of the mouse and windows moved and resized. There should be a representation of the outlines of the monitors in the system. Allow user to change playback speed.
-Functions/buttons for app: Start (start recording), save (dump data to .csv), pause, Stop (stop recording), clear data (clear stored data).
-Heatmap: Process an entire recording and show a single screen representation that shows all monitors and the heatmap of (1) mouse location (2) window outlines (3) window movements. I can discuss visualization ideas with the winning bidder
-all non-hardcoded config values, store in a text file named [login to view URL] Testing will be faster if values are not hard coded. Colors to display, time intervals, etc,. save all in config file and don't hard code. Any values that may need experimentation, put in this file. Use name value pairs, example
-data model is worked is a beta. The data can grow large ( 8+ hours). It is important to not record when nothing is moving, but it may be a good idea to record the start and stop times of inactivity and leverage that intelligently in the playback. The very first thing that is needed it to think through the data model with the "playback" in mind as the end-goal and develop an efficient model. Currently it is a flat model save to a single .csv, but there is a lot of wasted space. It may be best to have some master-detail data structures. Thinking this through is the first task in the process.
This app is for a research project. Based on the results, it may lead into a larger project
We have a version 1 of this app, in Delphi. It records and saves to a file. We never got to build the playback portion of the system. See screen shots.
We would prefer to build something that works on Windows/ Mac, but unsure if cross-platform frameworks support tracking mouse across multiple monitors. Let us know your suggested language/framework in your bid. Windows is the priority.
We have Delphi source code for the V1 recorder. Identifying monitor ID's was one of the harder tasks. That is done.
Good luck. It will be a fun/interesting project.