Skip to content

Languages & Unicode Input

PolyKybd does two related things with languages: it can switch its on-screen keyboard layout between ~156 languages, and it can type Unicode characters (emoji, accented letters) on any OS.

PolyKybd ships with around 156 keyboard-language layouts. Press the Language/Globe key [ 🌐 ] to open the language picker. On this layer each key shows a country flag and its xx-YY language code (for example de-DE, fr-FR, es-MX), with a frame drawn around the currently selected language.

Switching the layout re-renders every keycap, accents and AltGr symbols included — these are real keycaps, not a diagram:

Keycap OLEDs showing a Latin layout with its AltGr symbols: ç, à, €, µ, and the bracket and slash keys

The same keys after switching to a Greek layout — a different script entirely, no hardware change:

Keycap OLEDs rendering Greek letters — sigma, epsilon, rho, tau, delta, phi — alongside the status display

Pick a language and PolyKybd does two things at once:

  • Switches the keycap legends so every key shows the characters for that layout.
  • Tells the host OS to switch input language, so what you type matches what the keys show.

Your selection persists across reboots. Because the language list is shared by both hardware variants, split72 and split42 support the same set of languages.

A single keycap carries up to three things at once, in fixed places:

A German layout’s 7 key: the digit 7 large on the left, a slash in the upper right, and a curly brace in the lower right

  • The main legend, drawn largest and to the left — what the key types on its own. Just how large is adjustable; these examples use the default.
  • The Shift preview, small in the upper right — what you get holding Shift.
  • The AltGr hint, small in the lower right — what you get holding AltGr.

The two small ones are previews, so you can find a symbol without hunting for it. They appear only when the key actually has something to show: on most layouts a plain letter has no Shift preview, because its capital is no surprise.

The Intl layer: accented letters on demand

Section titled “The Intl layer: accented letters on demand”

Switching your whole layout is the right move when you write in another language. When you only need the occasional accented letter — a name, a loanword, a single ñ in an English sentence — there is the Intl layer. Hold the Intl key [ İñțł ] and the letters that have accented forms show one:

Hold Intl, press… You get
a à (or whichever variation you picked for a)
s ș
e é

Press the letter and PolyKybd types that character — no dead keys, no compose sequence, no layout switch. Every letter of the alphabet carries variations — 549 in all, covering every accented form Unicode has a single character for. o has the most at 36, then a and u at 30 and e at 25; even q and x have a couple.

Each letter remembers one variation at a time — the one on its keycap. To change it, use the picker on the number row.

  1. Hold Intl.
  2. Press the letter you want to change, so the keyboard knows which one you mean.
  3. Tap Ctrl [ Á»Æ ]. The Ctrl keycap turns inverted — dark legend on a lit key — to show the picker is armed, and the number row fills with that letter’s variations.
  4. If the letter has more than a row’s worth, step through them with the page arrows at either end of the picker row.
  5. Press the key under the accent you want.

That becomes the letter’s variation from then on, and it survives a reboot. The picker closes as soon as you pick, and reopens on the first page.

Holding Intl and tapping Ctrl turns the number row into a picker of the current letter’s accented variations; picking one changes that letter’s keycap

The picker chooses another form of the letter a key already hosts, so it can only ever give you one accent per key. French wants è é and ê at the same time — three forms of one letter, and only one e key to put them on.

So a key can be reassigned to host a different letter:

  1. Hold Intl.
  2. Tap the remap key [ à»ñ ], next to the picker’s Ctrl. It inverts, and the board blanks down to just the keys you are allowed to choose from.
  3. Press the key you want to change. It inverts too.
  4. Press the letter it should host.

That key now carries the chosen letter’s variations, and its own picker works exactly as before — so you can give each of them a different accent. q and j are good candidates: they have one and two variations of their own, which makes them close to dead keys on this layer otherwise.

Remapping q, j and semicolon to host e, then picking a different accent on each, leaving é è ê ë on four keys at once

Punctuation keys can host a letter too` ' , . / ; [ ] = on split72, and ; , . / on split42. Which ones you get is decided by the layout: a key that isn’t on the Intl layer simply never offers itself. An unmapped punctuation key keeps typing its own symbol, so nothing changes until you deliberately remap it.

The picker row holds 12 variations at a time on split72 and 10 on split42, so the richest letters span several pages. The two page arrows sit at the outer ends of the row — back on the far left of the left half, forward on the far right of the right half — the same places the emoji and language layers put theirs, so paging is one gesture everywhere. They wrap in both directions — past the last page returns to the first, before the first returns to the last — so you can never get stranded partway through a letter.

Letters that page Most pages
split72 (12 per row) a e i o u 3 (o)
split42 (10 per row) a e i n o s t u y 4 (o)

Every other letter fits on a single row, and there the arrows stay blank — if you see no arrows, you are already looking at all of them.

The inverted Ctrl keycap is the thing to look for: if it’s lit, the number row is a picker and the digits won’t type numbers.

Romanian’s ș and ț use a comma below the letter, not a cedilla — ș is a genuinely different character from ş, and using the wrong one is a spelling error in Romanian. Both cases of both letters are available as variations of s and t.

The picker now carries every accented letter that Unicode encodes as a single character. These are the writing systems that gained the most from that — the middle column is what was missing before, not the whole of what each one uses:

Language or system Letters it gained
Welsh ẁ ẃ ẅ ỳ — the grave, acute and diaeresis forms of w and y (the circumflex ŵ ŷ were already there)
Irish the séimhiú dotted consonants ḃ ċ ḋ ḟ ġ ṁ ṗ ṡ ṫ
Guaraní and , the capitals that had no partner for the existing lower-case forms
Vietnamese the horned vowels ơ ư, including their tone combinations
Pinyin 3rd-tone carons and the full ü set
African reference alphabet the hook letters ɓ ɗ ƙ ƴ and relatives

PolyKybd also has a dedicated emoji layer that turns the keycaps into a visual emoji picker — each key previews an emoji, grouped into categories along the top row, so you choose one by sight instead of memorising a codepoint. Your most-recently-used emoji are kept close at hand.

The emoji layer: every keycap OLED previews a different emoji, with category tabs along the top row

Close up, a single 72×40 px keycap rendering one emoji:

A single keycap OLED rendering a grinning-face emoji at full size

PolyKybd also supports Unicode input for emoji, accented characters (Æ, Ç, È, …), and any other Unicode codepoint. Because each OS handles Unicode input differently, you must first tell the keyboard which mode to use.

Press the Language/Globe key [ 🌐 ] to reach the OS selection. Choose the entry matching your operating system and preferred input method:

Key label Use on
Mac macOS — requires setup below
Lnx Linux with IBus and compatible apps/window managers
BSD BSD (currently unimplemented in QMK)
Emcs Emacs (untested)
Win Windows, unicode up to U+FFFF (no emoji) — requires registry edit below
WinC Windows with WinCompose installed — full unicode including emoji

Your selection is saved to the keyboard and persists across reboots.

Follow the QMK macOS unicode setup guide:

  1. Open System Settings → Keyboard → Text Input → Input Sources
  2. Add the Unicode Hex Input input source
  3. Select it when you want to type unicode characters

Then press Mac on the PolyKybd language selector.

Once your OS mode is set, press any key that has a unicode character assigned in the keymap (such as an emoji or accented character). The keyboard sends the appropriate input sequence for your OS automatically.

Unicode character assignments are configured in the QMK keymap source. See Keymaps & Layers for how to modify them.