Skip to content
WM KeyboardWM Keyboard
Accessibility

Importing from other keyboards

Bring layouts and themes over from FlorisBoard and HeliBoard: what converts, what doesn't, and why.

Switching keyboards usually means leaving your layouts and themes behind. WM Keyboard reads FlorisBoard and HeliBoard files directly and converts them into its own, so the grid you built and the theme you picked come with you.

Conversion is honest about being lossy. Every import ends on a confirm dialog that lists what changed and what could not be carried, and nothing is written until you accept it.

FileFromOpens as
.json layoutFlorisBoard, HeliBoardA custom layout
.txt layoutHeliBoardA custom layout
.flex themeFlorisBoard 0.5 and laterOne or two themes

HeliBoard’s JSON layouts use FlorisBoard’s format, so one reader handles both.

WM KeyboardKey layoutsImport from another keyboard

Pick the file and the app reads it, then puts one dialog in front of you before it saves anything. There is only one thing to answer on it, the language; everything else on the dialog is telling you what the conversion did, and the Import button is your confirmation.

Neither format records one. In FlorisBoard and HeliBoard a layout is a grid and the language comes from the keyboard’s own settings, so the file itself cannot say whether a Cyrillic grid is Russian or Ukrainian.

That matters more here than it sounds. The language picks the dictionary, the autocorrect, the script rules, dictation, and how the shift key behaves. The app guesses from the letters on the keys and shows you the guess, and you can change it before you import. There is no silent default.

A foreign layout file holds the letters and nothing else: the keyboard that reads it draws its own delete, space and enter keys, and its own symbols and number layers. So the app supplies those, and the imported layout uses WM Keyboard’s built-in symbols and number grids.

Some keys in those formats do things WM Keyboard reaches another way: voice input, the clipboard panel, the settings screen, the suggestion-bar toggles. Those are tools here rather than keys, so they are removed and the dialog names the codes it removed. A key that looked right and quietly did nothing would be worse.

A handful of keys convert to the closest match rather than an exact one, and the dialog counts those too. Delete-word becomes a plain delete; the second symbols page folds onto the symbols key.

Some letters can be written two ways in Unicode: a base letter plus a mark, or a single character that means the same thing. Bengali, Devanagari, Gurmukhi and Oriya all have letters like this. WM Keyboard’s cluster shaping and its backspace rules use the single-character spelling, so the app rewrites the other one on the way in. Without it a key looks correct and then deletes half a letter at a time.

WM KeyboardThemesFlorisBoard

A .flex file is FlorisBoard’s theme package. Pick one and the app converts every theme inside it. You can also open a .flex straight from a file manager.

A FlorisBoard theme that holds both a day and a night version becomes one theme with two looks, not two separate entries. The first look heads the family, the second becomes a variant of it, and the family takes its name from the file. Auto theme addresses the looks individually, so you can still put the day one in one slot and the night one in the other under WM KeyboardThemesAuto theme. The result message says so too: “The app saved name with 2 looks.”

Converted themes are saved but not turned on. They go into your themes list for you to look at first, and the theme editor is where you finish the parts that did not carry over.

The dialog puts a number on it: “The app can use 34 of the 52 style rules in this file.”

Colours mostly land. The board, the keys, the pressed key, the enter key, borders, popups, the suggestion text, and per-key colours all have somewhere to go. FlorisBoard styles a much larger set of keyboard parts than this app draws, so the rest is reported rather than approximated:

  • Key shadows. This app draws keys without one.
  • Per-corner radii. Keys here have a single corner size.
  • Spacing on single elements. The key gap is set for the whole keyboard.
  • Fonts. A font is a separate add-on here, so a theme cannot carry one. The dialog says so, and you can install the font yourself.
  • Wallpaper-following colours. Turn on Material You in WM KeyboardThemes for the same effect.
  • Elements this keyboard does not have. FlorisBoard’s suggestion bar is built from more parts than this one.

If a key’s text colour would be unreadable on its key colour, the app drops the imported colour and picks a readable one. That happens when a colour comes from a rule that meant a different part of the keyboard, and a theme whose keys cannot be read is the one thing the editor cannot fix for you.

FlorisBoard changed its style format in 0.5, and the two are not compatible. A 0.4 theme is refused with a message rather than read in part, because a partly-read theme gives you colours your file never set and no way to tell which ones.

  • Nothing is decided by the file extension. A file is read and then judged. A layout renamed .wmtheme.json is refused rather than imported as an empty theme.
  • Opening a .flex from a file manager works because the app registers that extension. If FlorisBoard is installed too, Android asks which app should open it.
  • Layout files are not auto-detected from a file manager. They carry no marker that identifies them, so they go through WM KeyboardKey layoutsImport from another keyboard, where you have already said what the file is.
  • A foreign layout over 4 MB is refused. The whole file is decoded as one string, so there is a cap, and the cap is 4 MB. Past it you get the same “The app cannot read that file as a layout” message a genuinely unreadable file gets, with nothing to say the size was the problem. No real grid is anywhere near it, so in practice this only catches a file that is not a layout at all.
  • Add-on repositories stay native. Repository payloads are always WM Keyboard’s own formats; conversion applies to files you pick yourself.
  • Nothing is sent anywhere. Conversion runs on the phone. There is no upload and no server.

WM Keyboard reads these formats from their published descriptions. No code from either project is used: FlorisBoard is Apache-2.0 and HeliBoard is GPL-3.0, while WM Keyboard is MIT.

A converted theme keeps the author and licence its file records, and both are shown on the import dialog. If you publish a converted theme in an add-on repository, keep them with it.