ghbdtn becomes привет, с2леметс3з becomes сәлеметсіз. A native Mac menu-bar app for English, Russian and Kazakh that rewrites the word and switches the layout for you. Free, open source, and everything stays on your Mac.
The animation illustrates the flow; it is not a screen recording.
Tilqos was built for people who switch between English, Russian and Kazakh. On a Mac, the Russian and Kazakh layouts agree on all 33 Russian letters and differ only on the number row, where Kazakh puts its nine extra letters and Russian puts digits. That one fact shapes the whole design.
Russian typed on the English layout is the classic mistake.
ghbdtn → привет
,skj → было
And the other way round. Real words such as еще or тот are never rewritten.
руддщ → hello
где ↔ ult
The nine Kazakh letters turn into digits on the Russian layout. A digit inside a Cyrillic word is a very strong signal.
с2леметс3з → сәлеметсіз
0аза0 → қазақ
| Key | 2 | 3 | 4 | 5 | = | 9 | - | 8 | 0 |
|---|---|---|---|---|---|---|---|---|---|
| ABC / Russian | 2 | 3 | 4 | 5 | = | 9 | - | 8 | 0 |
| Kazakh | ә | і | ң | ғ | һ | ұ | ө | ү | қ |
Russian typed on the Kazakh layout looks right, so there is nothing to fix: that removes the biggest source of false corrections. And because the Kazakh layout puts its digits on Option, Tilqos remembers key presses, not characters. It also decodes Latin Kazakh back to Cyrillic (qalaisyz becomes қалайсыз) with vowel harmony and Kazakh morphology. More on Kazakh.
Quiet when you type correctly, helpful when you do not.
When it is sure, it replaces the word as you finish it. When it is not, a small card at the cursor shows было → стало: Tab accepts, any other key dismisses.
After a fix the layout follows, so the next word is right. Russian or Kazakh? Your setting, or the Cyrillic layout you last used in that app.
It checks word forms from hunspell dictionaries, not just headwords. URLs, paths, e-mail, code identifiers and acronyms are left alone.
Three presets, or tune both thresholds. Undo with ⌥⇧Z; undoing right away teaches it to leave that word alone.
Auto, suggest-only or off per app. Password managers are always off; terminals are suggest-only by default.
Undone fixes, hints you accept, words you keep: remembered as salted hashes, switchable off, and you can forget it all.
Latin ⇄ Cyrillic with the official 2021 alphabet or the ASCII chat spelling, including mixed Kazakh and Russian text.
The interface and the documentation are in English, Russian and Kazakh. Menu-bar icon: EN, РУ, ҚАЗ.
On the project's own corpus it rewrote 0 of 1,858 correctly typed words and fixed 240 of 249 (96.4 %) wrong-layout words by itself. Those figures are in-sample: the corpus was written and tuned by the author, and the Kazakh part is small. How to reproduce them, and what they are not.
The builds are ad-hoc signed and not notarized. That has two consequences, both explained below.
| Platform | Get it | Notes |
|---|---|---|
| macOS 14+ (Apple silicon) | DMG from Releases · brew install --cask elapen/tap/tilqos | Drag to Applications. Developed and tested on macOS 27; macOS 14 to 26 are unverified. |
| From source | git clone https://github.com/elapen/tilqos && cd tilqos && ./build.sh install | Swift 6.0+ (Xcode 16+). Intel is untested. |
| Windows 10/11, x64 and ARM64 | zip from Releases | Experimental: never run on real Windows by its author. Unsigned, so SmartScreen warns. |
tccutil reset Accessibility io.github.elapen.tilqos) and grant it again. Input Monitoring is an optional read-only fallback. Details.Each release lists SHA-256 checksums. There is no updater, so watch the Releases page.
Tilqos has to watch every key you press to notice a wrong layout. So here is what it keeps, for how long, and where the promises stop.
Limits: other software with the same permission sees what Tilqos sees; the OS can write crash dumps; the builds are not notarized. Read the full privacy document. Privacy bugs are security bugs: report them privately.
It has to read every key in order to do its job, which is why the source and a precise privacy document are public. The buffer is in memory only, no text is logged, and the app contains no network code.
To create the keyboard tap that can swallow the key that accepts a hint, to read the text before the caret, and to replace the wrong text. Input Monitoring alone lets it detect and offer, not apply.
Expected with ad-hoc signed builds: remove the old entry in Privacy & Security → Accessibility (or run tccutil reset Accessibility io.github.elapen.tilqos), open Tilqos and grant it again.
No. It is similar in purpose and is independent: not affiliated with, or endorsed by, Yandex or Punto Switcher. Kazakh as a first-class language, open source and a local-only design are what Tilqos adds.
There is an experimental Go port of the same engine. It has never been run on real Windows by its author, is unsigned, and does not recognise password fields in browsers. Testers are very welcome.
Maybe. It needs a dictionary we can ship, the keyboard-layout facts and a test corpus. Open a Language request on GitHub.