# Kineboard

_The input method designed for glass._

This is an experimental on-screen keyboard for touchscreens which has very
few touch areas, relying on swipes to type more characters. Each area has a
central character, activated through a tap, and corner characters activated by
swiping in that direction.

## Design rationale

It is not natural to have a 6cm-wide simulated typewriter; usually the mobile
keyboards rely on tricks such as autocorrect. Plus, they are not adapted for
other languages; let's take Romanian as an example: we have 5 new letters,
`ăâîșț` and a punctuation mark, the hyphen, which is way more common in Romanian
than in English (because it's used for attachment of some pronouns and also for
contractions). A normal PC keyboard makes them available instead of some
symbols; if the symbols are desired, the extra letters can be moved to an AltGr
layer; with training, this method doesn't slow one down that much.

On a phone keyboard, however, such language adaptation is hard and I haven't
seen a single keyboard that did it with extra keys. Almost all of them use a
hold, which probably shows that they haven't ever had a designer that writes
(correctly) in one of these languages (most Romanian users don't even bother
with the diacritics, not even on PC, unless it's very formal). "ă" is way
more common than "b", "f", "g", "h", "j", "v", "z", not to mention "k", "q",
"w", "x", "y", yet doesn't get its own key like those.

## Benefits of the design

* **impossible to mistype:** since there are only 8 targets (by default), 
  they can be large enough not to miss them; it provides true touch typing
  on a touchscreen;
* **international:** it is adapted to the letter frequency of each language:
  each layout would have the top 8 letters of its language as taps;
* **provides diacritics and punctuation:** compared to the standard mobile
  QWERTY which has at most 28 characters (26 letters + full stop and comma),
  this layout allows for 40;
* **economical use of screen space:** with a surface about 50% smaller than
  a regular phone keyboard, split screens with keyboard become realistic.

## How to use

* Tap an area to write its central character.
* Press on an area and flick in the corresponding corner to write a corner
  character.
* In the bottom row, tap the up arrow to shift and tap again to unshift.
* In the bottom row, tap the long space bar to insert a space.
* In the bottom row, tap the pencil to change the layout.
* In the bottom row, tap the left arrow to backspace.
* In the bottom row, tap the return sign to simulate pressing enter.

## How to write layouts

Make a YAML file with the keys `name`, `symbol` and `keys`. `name` is a string
naming the layout, `symbol` is a 2-3 character abbreviation of the layout.

`keys` is a 3D array of objects; each object has the keys `central`, `top_left`,
`top_right`, `bottom_right`, `bottom_left` which are characters (or sequences)
that will be entered with the corresponding action.

Currently, only 1 or 2 layers are supported.

## Inspiration

Mainly [Unexpected Keyboard](https://f-droid.org/packages/juloo.keyboard2/), but
that is not as radical. I now know of some other keyboards with a similar idea,
that is, not providing all the letters by tapping (Flickboard, MessagEase), but
I didn't when I came up with the concept, and my layout is different, being
designed to use as little screen space as possible.
