ctrl8 / PolyType
PolyType icon

PolyType

Type without thinking about the layout.

Alpha · v0.14.0 macOS menu-bar utility PolyType Lang local-only

Mac App Store & GitHub — coming soon. The PolyType app is proprietary; provided “as is”, without warranty.

Typed ghbdtn instead of привет again? PolyType converts it instantly, then lets you keep typing — руддщ in Russian becomes hello the same way. No more retyping a sentence because you forgot to switch.

What it does

ghbdtnпривет
руддщhello
ujhjlгород

One shortcut per language pair

Instead of cycling through every installed layout with one shortcut, each customizable hotkey maps to a language pair — RU↔EN, SR↔EN, UK↔EN, and so on. Bind it to CapsLock, Right / / , or an F-key. Single tap switches layouts; double tap converts the last word you typed.

PolyType Lang — transform text as you type

PolyType now ships PolyType Lang (PTL)the world's first inline keyboard transformation language. Where a text expander just swaps a trigger for stored text, PTL evaluates small expressions inside the typing stream as you type: functions, instant cycles, diacritics, conditional blocks and composable rules. No editor, no dialog, fully local.

Instant cycles — long-press, but inline & keyboard-only

;;sš
;;ssş
;;sssß
;;<3 · ;;<33 · ;;<333❤️ · 🩷 · 🧡
  • Three run modes — a {function} fires on its }; a ;rule fires on a space (the longest ;… wins, so ;s and ;sig never collide); a ;;cycle fires the instant it's typed and steps through alternatives on its last key — like phone long-press, keyboard-only.
  • Functions{date}, {time}, {clipboard}, {selection}, {username}, {uuid} and symbols ({copyright}, {emdash}…) insert live values inline.
  • Any diacritic — any named Unicode mark composes onto any letter (;caron, ;acute, ;ogonek, ;macron, ;stroke…): s → š, a → ą, o → ō. Built-in Cycle · Diacritics, Accents and Hebrew Nikud sets; the short ;s / ;c triggers are just preconfigured Serbo-Croatian conveniences.
  • Optional blocks & operators?{ … } inserts only when everything inside resolves; < << eat characters and <? eats the previous word. Escape literals with \.
  • Fully local — rules stored as JSON, import/export, managed from Settings → Rules.

PTL is going open source. The PolyType Lang specification, its documentation and a reference library will be published under the MIT license as part of the PolyType project — so anyone can build on the language. The PolyType app itself stays proprietary.

Explainable, not ML

  • The engine is transparent statistics — frequency words plus trigrams — so its decisions are predictable, not a black box.
  • Runs entirely on-device. No inference server, no network, no telemetry.
  • Built-in diacritics restoration for Bosnian, Croatian and Serbian via the ioDiacritics library.

Smart, not literal

  • Leaves acronyms and ALL-CAPS tokens alone — PDF and HTML stay themselves, not cross-layout gibberish.
  • Recognizes file names, extensions, URLs and paths — .md, .app, http://, file.md, a/b are left untouched, with a one-click toggle if you want them converted too.

Stays out of the way

  • Skips password fields (secure input), Terminal, IDEs, 1Password and virtual machines.
  • Lives quietly in the menu bar — configure pairs and hotkeys, then forget it's there.