Kmap file format

A .kmap file contains blocks of characters that visually represent chords. In each block, the first line gives the name of a mapping (as defined in settings.yaml). The following lines show which switches must be pressed to trigger that mapping. The * symbols represent pressed switches and the . symbols represent un-pressed switches.

key_h
....   ....
....   *...
  .     .
  ... ...

Multiple blocks can be put on the same lines, in adjacent columns.

Lines beginning with # are comments and will be ignored. You can give a block the name blank_mapping if it's not currently being used for a mapping, but you don't want to delete it or comment it out.

# This is a comment.

key_0            key_2          key_4
....   ....      ....   ....    ....   ....
....   **..      ....   .**.    ....   ..**
  .     .          .     .        .     .
  ... ...          ... ...        ... ...

There must be at least one blank line between blocks. There must not be any blank lines in the middle of a block. If there are multiple columns of blocks on the same lines, there must be at least one whitespace character separating each of the names on the first line. Whitespace (other than newlines) within the lines of dots has no effect - it is allowed anywhere and required nowhere.

If your text editor supports cutting and pasting rectangular regions of text, that's a convenient way of moving blocks around.

An emacs mode providing syntax highlighting for .kmap files is available in pipit-mode.el.