OneStroke is a gesture-based character input program. Because a tablet PC in tablet mode does not have a keyboard, a software replacement is necessary. OneStroke aims to be a more elegant replacement to the bulky on-screen keyboard.

New in 0.8.4

OneStroke now features a rotational invariance mode that allows you to draw symbols in any orientation! A number of bugs have also been fixed and the bundled gesture profile tuned up.

See the README included with the source for a full list of changes.


OneStroke is only available for Unix based systems with X11/GTK and only as a source distribution. OneStroke is released under the GPL license. Please read the bundled installation instructions for more information.


Using OneStroke

The main window, drawing segment angles.

Draw a one stroke symbol on the main window and OneStroke will send the associated key stroke to the window in focus as if typed on the keyboard.

To "hold down" a key, draw the symbol and stop at the end of the stroke without raising the pen. After a brief interval the stroke will be recognized and the key event will generate multiple times as if the key were held down.

To cancel drawing a symbol simply move the pen off of the drawing area without raising the pen. After a brief interval the stroke will cancel.

The Symbols window showing the bundled 'risujin' profile.

To learn the symbols and to modify them or create your own, right click on the main window and open the Symbols window. Here you will see the symbols in the current profile. The strokes are drawn from green to red. Click on a symbol icon on the left. On the right side of the window you can now change the associated key event. If you wish to change the symbol gesture, draw on the main window. Make sure you deselect the symbol or close the Symbols window before trying it out though.

Symbol sets are stored in profiles and can be modified, saved, and loaded via the Symbols window. Profiles are saved as files in the "~/.onestroke-0.8" directory.

Recognition Methods

The context menu showing the recognition options.

The gesture recoginition method and feedback drawing mode can also be set via the right-click context menu. The recoginition modes are:

  • Composite (default) -- Combines the two methods for better reliability.
  • Scale dependent -- Finds distance between symbol graphs by finding the average distance between the pens of each graph over time. The graphs are normalized by length to make this comparison possible.
  • Scale independent -- Similar to the previous method, this variation uses segment angle difference instead of pen distance. It is naturally impervious to scale differences.
  • Rotational invariance -- Starting with version 0.8.3 you can enable the "Rotational Invarianve" toggle in the mode menu. This option will automatically compensate for any rotational differences allowing you to draw your symbols in any orientation!
  • Favor original orientation -- This will tilt the match score in favor of non-rotated symbols. This is useful if you use gestures which are rotated copies of each other and want the program to differentiate between them.

Need Help?

Can't get OneStroke to compile? Having trouble getting it to work? Found a bug? Don't be afraid to let me know!