Eric Lecolinet / DIVA Group / LTCI / Télécom ParisTech

MarkPad: As many gestural shorcuts as you need

See the MarkPad page to get the manual and download the application.

MarkPad is a Mac OSX application that allows performing simple gestures to execute various actions (execute scripts or commands, open/hide applications, files, directories, webpages, etc.) Gestures consist of strokes starting from the touchpad border (thus not conflicting with pointing). Actions depend on the starting and ending locations of the strokes, which allows defining hundreds of different gestures.

MarkPad provides a novice and an expert mode. In novice mode, the user touches the touchpad border for a short amount of time and a menu appears. In expert mode, the user perform the same gesture without waiting for the menu to appear. MarkPad can be improved by adding visual or tactile marks on the touchpad (e.g. transparent or colored tape).

MarkPad: Augmenting Touchpads for Command Selection.
Bruno Fruchard, Eric Lecolinet, Olivier Chapuis.
CHI‘17: ACM SIGCHI Conference on Human Factors in Computing Systems.
doi hal pdf video bibcite
 address = {Denver, Colorado, Etats-Unis},
 author = {B. {Fruchard} and E. {Lecolinet} and O. {Chapuis}},
 booktitle = {CHI'17: Proceedings of the ACM SIGCHI Conference on Human Factors in Computing Systems},
 month = may,
 pages = {13},
 publisher = {ACM},
 title = {MarkPad: Augmenting Touchpads for Command Selection},
 year = 2017,
 hal = {hal-01437093/en},
 image = {MP-CHI-17.png},
 video = {},
 software = {},
Gestural interaction; bezel gestures; tactile feedback; spatial memory; touchpad; user-defined gestures; Marking menus
We present MarkPad, a novel interaction technique taking advantage of the touchpad. MarkPad allows creating a large number of size-dependent gestural shortcuts that can be spatially organized as desired by the user. It relies on the idea of using visual or tactile marks on the touchpad or a combination of them. Gestures start from a mark on the border and end on another mark anywhere. MarkPad does not conflict with standard interactions and provides a novice mode that acts as a rehearsal of the expert mode. A first study showed that an accuracy of 95% could be achieved for a dense configuration of tactile and/or visual marks allowing many gestures. Performance was 5% lower in a second study where the marks were only on the borders. A last study showed that borders are rarely used, even when the users are unaware of the technique. Finally, we present a working prototype and briefly report on how it was used by two users for a few months.


Bibtoweb: HTML bibliography from BibTex files

See the bibtoweb page to get documentation and source code.

Bibtoweb generates a HTML file from one or several BibTex files (duplicate entries are merged). Bibtoweb provides additional Bibtex fields for displaying:

Bibtoweb also provides functions for filtering, sorting or ranking BibTex entries. It consists of a single C++11 program, no other tool is needed.


JsonSerial: C++ Object Serialization in JSON

See the jsonserial page to get documentation and source code.

Jsonserial allows serializing a set of C++ objects: a single object, a collection, a tree or even a cyclic graph of objects. JsonSerial relies on C++ 11 templates and consists of header files.


Ccuty: C++ utilities

See the ccuty page to get documentation and source code.

Useful functions for C++ strings
Provides functions for trimming, unquoting and splitting strings, for comparing and converting ASCII strings to uppercase or lowercase chracters, and for converting strings to numeric IDs (e.g. for switch statements).
String set and indexed string set
Provides classes for converting strings to numeric IDs (e.g. for switch statements) and vice-versa and for testing if a string belongs to a set of strings.
Functions for Unix pathnames
Provides functions for retreiving the basename, the dirname, the extname, for changing the extension and for joining pathnames.
IPV4 socket communication
Provides classes for simplifying client/server socket communication. Ensures that messages are properly delimited (a message is never received in several parts, even if it is split by the underlying protocol).
For managing the MacOSX desktop
Provides functions to generate mouse and key events, open/hide applications, interact with AppleScript, change volume, play/pause iTunes and get current track, etc.


Older software

Ubit GUI Toolkit: A molecular architecture for building GUIs

See the Ubit page.

Ubit is a GUI toolkit that combines the advantages of scene graph and widget based toolkits. The Ubit3D extension makes it possible to display 2D GUIs in a 3D representation. UMS is a X11 interaction server that provides multiple and remote pointers.


XXL: Visual/textual equivalence and sketch drawing for building GUIs

See the XXL page.

XXL is a GUI builder that allows specifying graphical interfaces visually, textually or by drawing sketches. Visual and textual representations are always synchronized and they can be changed while the application is running.