Overview Examples Materials Deutsch

Optimising keyboard layouts

The optimiser

The optimiser is a C++ programme to optimise a keyboard layout based on given letter, digram, and trigram frequencies. It is subject to a BSD license, that is, it is freely available, namely here:

Download Optimiser (source code)

A manual and tables with frequencies for German and English are included. The manual is also available separately:

Download manual of the optimizer

Features of the optimiser

Evaluating layouts

The evaluation scheme assigns efforts to typing sequences of one, two, and three keystrokes. The layout determines which letter, which digram or trigram the typing sequence corresponds to. Therefore, together with the frequencies in the collection of texts, the layout determines how often a typing sequence occurs and, therefore, the weight with which its effort contributes to the total effort.

In addition to these efforts, efforts that aim at reaching a balanced load of the fingers are accounted for. Furthermore, there are “non-mechanical” efforts which allow to express preferences for which symbol should be mapped to which key, and efforts that are supposed to model the confusability of keys.

For the efforts, the optimiser includes defaults. However, users can modify them using a configuration file; programming skills are not required for this. The number and the physical layout of keys can be defined in the configuration file as well.

The optimiser supports Unicode and, therefore, is applicable to many languages. The symbols to consider for an evaluation can be selected in the configuration file. Furthermore, “dead keys” can be modelled directly, which is important for languages with many characters with accents.

Searching the best layout

The optimisation itself uses a simple, but surprisingly effective approach. On today’s PCs, results are obtained within seconds, for more elaborate evaluation criteria within minutes, at worst.

Representation of layout properties

The tabular representations of the properties of a layout include frequency counts for different kinds of typing sequences, tables of symbol sequences typed with one hand, and descriptions of typing sequences, ordered with respect to their frequency. The kinds of typing sequences for which frequency counts are provided can be extended by the user.

The representation as picture does not only show the frequencies of strokes for individual keys, but also the frequencies of the two-key sequences, as well as the cumulative load of the fingers.

Preparation of text collections

Given a text, the programme can produce frequency tables for letters, di- and trigrams, as well as word lists. Optionally, di- and trigrams that contain hyphenation points can be ignored in in the frequency counts.

Development of the optimiser

The optimiser has been under development since late 2009. In May 2010, a keyboard layout that now is called “Aus der Neo-Welt” was found with the version of the optimiser from back then. In the following time, the most stimulation for the optimiser came from the community interested in this and similar layouts.

Version 31. Jan 2016Impressum