English words stay English
A 7,232-syllable dictionary and a list of English terms let ZKey recognise database, camera or userName and give back exactly the keys you typed.
Vietnamese input method for macOS
Telex or VNI, an offline Vietnamese dictionary, and English words like database, camera or userName restored when the word is committed. Every keystroke is handled on your Mac.
Why ZKey
A 7,232-syllable dictionary and a list of English terms let ZKey recognise database, camera or userName and give back exactly the keys you typed.
In Terminal, iTerm2, Warp, Ghostty, Alacritty, kitty, Hyper, Termius, keys go straight to the terminal. Switch to another app and ZKey is back the way it was.
Keys are handled on your Mac and never sent anywhere. ZKey needs no Accessibility permission or keyboard monitoring; it types through macOS's standard marked text.
How ZKey types
Vietnamese words are shaped as you type. English words and names in code go back to the keys you pressed when the word is committed.
A capital first letter still types Telex
An e after the final consonant: chuyên → chuyển
No longer becomes “dât”
camelCase stays when every part is an English word
Examples with Telex and the dictionary on (the defaults).
Settings
Open “Cài đặt ZKey…” (ZKey Settings) from the input menu. Changes apply from the next word — no restart.
Dictionary
Words outside the dictionary go back to their keys, so English is not given marks. Add a missing name or term under Custom words — one word or phrase per line.
Apps
In an excluded app, keys and command shortcuts go straight through; the ZKey shortcut is ignored there too.
Key table
Press a mark key again to undo it: ass → as.
| Mark / letter | Telex | VNI | Example |
|---|---|---|---|
| Acute (sắc) | s | 1 | as → á · a1 → á |
| Grave (huyền) | f | 2 | af → à · a2 → à |
| Hook (hỏi) | r | 3 | ar → ả · a3 → ả |
| Tilde (ngã) | x | 4 | ax → ã · a4 → ã |
| Dot below (nặng) | j | 5 | aj → ạ · a5 → ạ |
| Remove mark | z | 0 | asz → a · a10 → a |
| â ê ô | aaeeoo | 6 | aa → â · e6 → ê |
| ă | aw | 8 | aw → ă · a8 → ă |
| ơ ư | owuww | 7 | ow → ơ · u7 → ư · tw → tư |
| đ | dd | 9 | dd → đ · d9 → đ |
Details
Removes one key and works the word out again: giwx ← giư ← gi.
Esc turns the word being typed back into the keys you pressed, and commits it.
One installer for Apple silicon and Intel Macs.
The typing engine is C++20, with InputMethodKit for macOS and SwiftUI for settings.
6,559 dictionary fixtures in both Telex and VNI, and 2,000 random type/delete runs, on every build.
One .pkg that installs into /Library/Input Methods and registers the input source.
Privacy
Typing, the dictionary and settings run entirely on your Mac. The only connection is a once-a-day update check — no keystrokes, no text, no usage statistics.
No event tap, no Accessibility, no Input Monitoring. Just a macOS input source.
The dictionary and your own words live on your Mac and are never downloaded or synced.

Download
One .pkg installer for Apple silicon and Intel Macs. ZKey ships outside the Mac App Store because Apple does not distribute input methods there.
Download ZKey for macOSVersion 1.0 · macOS 13+ · Apple Silicon & IntelDeveloper ID signed and notarized by Apple
994dd8c875569af2aa6c795c157eeea4911f518e4ec910d5093b15cfdb074108FAQ
Apple does not distribute input methods through the Mac App Store: an input method has to live in /Library/Input Methods, while App Store apps can only be installed into /Applications, where macOS does not load input methods. So ZKey ships as a .pkg signed with Developer ID and notarized by Apple — the standard way to distribute Mac software outside the App Store.
macOS shows this notice for every third-party input method, because any input method has to receive keys to do its job. ZKey handles keys on your Mac, never sends what you type over the network, and never writes it to a log.
No. ZKey only applies aa/ee/oo to adjacent vowels and returns strings that are not valid syllables to their keys while you type. Words on the English list, like database, camera or banana, stay as typed without extra keys.
ZKey leaves Terminal, iTerm2, Warp, Ghostty, Alacritty, kitty, Hyper, Termius alone: keys and command shortcuts go straight to the terminal. Switch to another app and the previous on/off state comes back. You can turn this off under ZKey Settings → Ứng dụng (Apps).

Ready?
Download the installer, run it, then pick ZKey in the menu bar. The guide has a screenshot for every step.