This document was updated 2021.2.27., 15:43:47
Simply, the best keyboard for Android tablets and phones, developed by Thon.
Why? Because
Added STICKY
and JOY
.
A new version created for Android 8.0 Oreo compatibility.
Best’s Board works in any Android app that uses the normal keyboard selected in the settings of your Android device.
Using Best’s Board, you have
To enter text on a touchscreen, apps know three methods (each app knows either one of them).
Space Travel is a very important feature in Best’s Board. You can define a special kind of a space button which doesn’t type a space character when touched between other buttons, in the middle of a swiping movement. A space character will be typed only when the button is touched at the beginning or the end of the swiping, or when touched alone.
This increases the number of neighbors a key may have.
The “rim” is the area at the edge of a button. Its width can be changed in the Settings. It is insensitive to touches when you’re drawing with your finger or stylus between other buttons.
Any character may be typed with the “autospace” feature that can add a space either or both before and after the character. This is useful for many punctuation marks. It can remove any space previously being there and thus avoid double spaces.
Computers are using that old arrangement of letters:
Q W E R T Y U I O P A S D F G H J K L Z X C V B N M
(or a variant of it, like QWERTZ and AZERTY).
This was inherited from 19th century typewriters and it’s absolutely not the best way to arrange letters on a touchscreen where you “type” with a single finger or stylus. However, nearly all Android keyboard apps insist on QWERTY.
With Best’s Board, you can design your own layout. You can arrange your letters and other symbols completely freely. See our gallery.
Best’s Board is a work-in-progress app, so it’s not so easy to install it as with most apps that can be downloaded from the Play Store.
app########.apk
(the app). The # signs represent here the date (in YYMMDD format) the app was built.apk
to free up space.Best’s Board has the following settings:
Show help
Well, this doesn’t work since no one has written the help yet. Sorry.
Use test file instead of main file
Activates a predefined test keyboard with access to the most important things. You can use it for developing your keyboard or for basic use.
File selector
Provides you a file selector list to select the keyboard file you want to use.
Name of working directory
The name of the folder the previous file selector should work in.
Name of descriptor file
You can enter a keyboard file here, instead of selecting it.
File selector Name of descriptor test file
At these lines, you can change the predefined test keyboard, too.
Force reload of descriptor file
You can reload your keyboard file after modifying it.
Force copy of sample files to working directory
Copies the sample files shipped with the app (inside the apk file) to the working folder.
Hide upper part Hide lower part
These options tell Best’s Board to hide the small triangles left unused on the top and the bottom edge of the keyboard, respectively. If you switch both on and cover all of your layout with buttons, the screen area used by Best’s Board will be 100% used.
Screen height ratio, which can be occupied by the layout
Specifies (in thousandths) the amount of your screen that may be covered by Best’s Board.
Vertical offset, if non-wide layout is displayed in landscape view
Shifts the layout to the right if it’s too small.
Ratio of buttons’ outer rim
The amount of the area on each button handled as the outer rim.
Monitor row
Adds a row below the keyboard to display information. Currently, it provides access to a writing speedometer only. By touching this area you can switch to the test keyboard, too.
With Best’s Board, you can create your own keyboard layouts. But there’s no editor or designer app (and there won’t be any until someone takes the effort to create one). To design a layout, you need to write a text file that’s somewhat similar to a program. To do so, you have to use the Coat Language. We call it Coat because it’s full of buttons.
A complete language description is beyond the reach of this little tutorial. Best’s Board was in use by Thon and Attila for years and still kept unpublished, because we didn’t have the time and energy to create a full documentation. Sorry.
Start a text editor (even on your Android device; if you’re editing on a different computer you’ll need to transfer your file to the device later). Begin typing in an empty document.
Any line starting with a ;
is a comment.
The first line which isn’t a comment must read
coat (1000)
This lets Best’s Board know this is a keyboard file.
A layout is the set of buttons visible at the same time.
Copy this line in your Coat:
ADDLAYOUT (ID mylayout START HALFCOLUMNS 20 ROWS 4 ALIGN EVENS TURNOFF (CAPS) ASBOARD COLOR 0c808080)
It doesn’t count if you enter it as a single line or several ones.
Let’s take it apart and discover what is what.
ADDLAYOUT
is a command that adds a layout with the properties following in ()
parentheses. There needs to be an ID
which is now “mylayout” but can be any word. You’re going to refer to the layout by this name.
START
means this layout is the default when Best’s Board is started. You can have a lot of layouts in a Coat file but only one can be the default.
HALFCOLUMNS
(followed by a number) tells the width of the layout, counted in half buttons. On a hexagonal lattice, it’s easier to count this way. 20 means there will be alternating rows with 10 full buttons and with 11 buttons, of which the leftmost and the rightmost one is half the size. This setting will determine the size of the buttons. The more buttons you have in a row, the smaller they will be.
ROWS
tells the number of rows of buttons. You can have as many of them as you wish, but of course, the more rows you have (with the same button size), the larger part of your screen to be covered.
ALIGN EVENS
means that the button in the top left corner will be a half size one. ALIGN ODDS
means this one will be a full size one.
TURNOFF (CAPS)
turns the Caps Lock off when switching to this keyboard.
ASBOARD
to be discussed later.
COLOR
tells the color of the unused area of the layout, outside any button.
When specifying the color of something, you have to type COLOR
and either
0c
and a color code in hexadecimal RGB (for example, 0cff8000
is an orange color)0n
and a Visibone color code (for example, 0nr
means r
ed)If you need something several times in your Coat (e.g., a color or a block), you can define it as a variable and refer to it just by a name. To do so, type
LET (name something)
The name is a single word. The “something” is anything that has a meaning in Coat, even a complex structure.
Buttons are the most important things in Coat. Definition of a button looks like:
BUTTON (TEXT 'a' COLOR 0ny ADDTITLE (COLOR 0nk))
This defines a button that types a letter a. It has a yellow background (0ny
means y
ellow) and a black title color (0nk
means black
). Anything in a pair of ()
parentheses after ADDTITLE
refers to a title. The text of the title isn’t specified; this means the main text (the letter a) will appear.
You can display a different text than the one typed:
BUTTON (TEXT 'a' COLOR 0ny ADDTITLE (TEXT 'x' COLOR 0nk))
This button will wear a letter x
on it but type a letter a.
You can also add several titles by repeating the ADDTITLE
part. To relocate them on the surface of the button, type XOFFSET
and/or YOFFSET
followed by a number which tells the amount the title should be moved to. 1000 means the edge of the button.
You can use the single quote '
character for specifying single characters to be typed or displayed. For strings of two or more characters, you must use the double quotes "
.
Instead of the word BUTTON
, you can use different words (all the parameters are the same).
SPACETRAVEL
creates a “travelling space” (see above).
ENTER
creates an Enter key which can listen to Android system messages and display a different title for different contexts. To change the titles, add a separate command SHOWTITLES (ENTERTEXT "something" …)
. Additional titles include GOTEXT
, SEARCHTEXT
, SENDTEXT
, PREVTEXT
, NEXTTEXT
, DONETEXT
, NONETEXT
and UNKNOWNTEXT
.
META (CAPS …)
is the Shift key for uppercase letters. For a Shift key that turns, say, digits to punctuation marks, see Switches.
Special buttons that do require the word BUTTON
(these ones work as BUTTON (SETTINGS …)
etc.):
SETTINGS
invokes the Settings screen.
RELOAD
reloads the Coat file.
WORD LEFT
and WORD RIGHT
moves the cursor to the previous or next word, respectively. PARA LEFT
and PARA RIGHT
does the same with paragraphs.
KEY
sends a key hard code to simulate a key press on a hardware keyboard. BUTTON (KEY
should be followed by a key code like KEYDPADLEFT, KEYDPADRIGHT, KEYDPADUP, KEYDPADDOWN
(these are the cursor keys, note the letter D
after KEY
).
Switching to another layout is done by a button defined this way:
SWITCH (BOARD id_of_layout LOCK …)
Specify the ID
of the layout you want to switch to (defined in the ADDLAYOUT
command). If LOCK
is added, the layout will remain active until you switch to another layout. (Make sure to add a way to get back.) Without LOCK
, you’ll return to the previous layout after a keypress.
Buttons are arranged into blocks. A block is defined by a command
LET (block_id (BLOCK (contents_of_the_block)))
It can contain two kinds of commands: those that create a button (BUTTON
, SWITCH
etc.) and commands for placement.
The LET
command doesn’t display the block. Just defines it by the name you assign to it. To display it, you have to put it on a layout, by specifying a coordinate pair for the first button of the block. Placement commands inside the block relocate following buttons. You can use as many placement commands before a button as you wish.
Placement commands include:
R
(right) – this is the default. If a button is defined after another one with no placement command, the second one will be to the right from the first one.
L
(left)
UL
(up left)
UR
(up right)
DL
(down left)
DR
(down right)
SKIP number
– skips the given number of places to the right (if the number is negative, to the left)
CRL
(carriage return left) – goes to the first place of the next row, to the half place if there’s a half place there
CRR
(carriage return right) – goes to the first full-size place of the next row
Having at least one layout and one block defined, you need to put the block(s) on your layout.
DEFAULT (BLOCK (LAYOUT layout_id))
tells Best’s Board the following commands will work with the layout given, then
BLOCK (block_id ROW number COLUMN number)
will place the block on the layout, starting with the coordinates given. Top row and leftmost positions are numbered 1.
A modifier is a special button that modifies the character before the cursor. This way you can type characters without assigning them an own button. You can have as many modifiers as you wish.
To have a modifier, you have to define it and put it on a button. To define a modifier, use
ADDMODIFY (ID modifier_id ROLLS (list))
The list looks like this:
"aáàâä" "eĕȇ" "sß"
You can have any number of such elements (“rolls”), and any of them can be of any length. Use double quotes "
since these are strings of several characters. When the modifier button is pressed, Best’s Board looks for the character before the cursor. If it’s found in a roll, it will be replaced by the next character of the same roll. So, in this example, if you type a letter e and press the modifier, you’ll see a letter ĕ instead. Pressing the modifier again turns the letter into ȇ, and another press gives back the original e since the roll string is now over. And so on.
To use your modifier, create a button by
MODIFY (ROLL modifier_id …)
Hint: modifiers aren’t just for diacritics. You can turn any character to any other character. On a small screen, it may be useful to have just a few letters and a modifier that gives access to other letters.
A sticky is a button that can activate up to 13 functions. This works the following way: tap on the button and move your finger or stylus to a direction. This way you can access 12 functions: from the center towards any side or corner of the hexagon. The 13th one is the simple tapping on the button. Sticky buttons cannot act as part of a multi-button stroke.
A sticky button is made by
STICKY ( action direction (action) … )
The first action is the one activated when just tapping on the button. Directions can be defined by
– CLOCK1, CLOCK2
etc., till CLOCK12
(think about a clock’s face, CLOCK1
is towards one o’clock, i.e. the upper right side
– or HEXU, HEXD, HEXL, HEXR, HEXUR, HEXDR, HEXUL, HEXDL
(eight directions)
– or WEST, EAST, NORTH, SOUTH, NORTHWEST, NORTHEAST, SOUTHWEST, SOUTHEAST
(eight directions).
You can use JOY
instead of STICKY
. The behavior is a bit different that way.
Inside the block, you can add a REPEAT
clause and several ADDTITLE
commands to define titles for your actions.
Actions may be
– TEXT "text"
– MOD modifier
– KEY keyname
My Kinesa keyboard, version 63, variant of December 2020, main layout. It’s prepared specially for writing my novel Ninda. Some features:
– on the top row, 6 memory buttons (currently bearing Sỳÿndoṙeìan names, up to 5 characters displayed but can be of any length);
– top right: the left, word right and Delete buttons;
– 2nd row: five sticky keys that give the white character when pressed and one of 12 additional characters when stroked away; the ( and ) keys feature diacritical marks and special letter modifiers;
– ↥ is the Caps Shift key (only for uppercase letters); pressing twice is the Caps Lock;
– ⇕ is the Swap Case key (turns fred to Fred and back);
– the green 4-pointed star is the cursor moving joystick;
– then comes the Paragraph Up key, and two rows below the Paragraph Down key;
– bottom row, left corner: the Keyboard key to switch to other layouts;
– when the Frog key is displaying a frog, the Autospace and Autocaps modes are on; pressing it turns it into a turtle when they’re off.
Decorated version of the previous layout. Only visual changes; the ZX Spectrum rainbow stripes and the Santa Claus have no function.
My Kinesa keyboard, version 58, main layout.
Kinesa 58, Diacritics layout. Buttons with a black letter and a yellow diacritic are modifiers. The title are actually two titles: a yellow letter with a diacritic, superimposed by a black letter with no diacritic.
The keyboard I’m using on my phone at the time. This image shows all five layouts together. Actually, they can be paged by using the arrows at the left. I don’t like it, it needs a lot of paging just to write a word but I didn’t have the time to design another one yet.
One of my keyboards used in 2015. On some keys, you can see two titles. Colored images are emojis which appear colored on a Samsung tablet.
The same keyboard a day later, with some modifications.
A Finnish keyboard demo to show you can have several Space Travel buttons. Here, letters A T E S Ä L O K I N are all direct neighbors of each other.
A totally unpractical demo just to show how many buttons may a Best’s Board layout have: in this case, 300. On my 8-inch tablet screen, this many are still not too small to be touched with a stylus.
An experimental English layout (a sketch of course, just letters and the space). I made some swipe demos with it:
Here you can see what counts as “neighbors”. All the yellow buttons are neighbors of letter I, thanks to the fact the green space button is a Space Travel Button.
Thanks to Rim Travel, there are even more neighbors. Here, you can see letter S in red. Yellow letters I M P L A and the green space button are its neighbors. Orange buttons D E T are also neighbors by using Space Travel. Green letters G X Y C are neighbors by using Rim Travel. And blue letters N R H W are neighbors by using Space Travel then Rim Travel.
How to write “table” on this layout. Not very efficient, but things happen.
How to write “walking”. Two swipes.
How to write “born”. One swipe if you use Rim Travel; letters U and D aren’t typed because you were swiping on their edges only.
How to write “bread” using Space Travel twice.
A Burmese layout demo. (Demo, I mean, it’s completely working but probably not practical for actual use. I can’t make a better one, speaking no Burmese.)
A 2017 version of Kinesa, with different colors and a few other things also different.
Same as the above, just redesigned the bottom row and parts on the top.