Vietnamese typing for macOS, Windows, Linux, iOS and Android that switches between Vietnamese and English for you.
Made by Tony Dinh (Đinh Quang Trung, @trungdq88). Free and open source under GPL-3.0; based on OpenKey by Tuyen Mai.
Type Telex as usual. When you type an English word in Vietnamese mode, or a Vietnamese word in English mode, Vikey fixes the word and switches the language. No more pressing the switch key every few words.
- Telex with modern or classic tone placement (hoà / hòa), spell checking, and keeping your keys as typed when a word isn't Vietnamese.
- Auto switch:
more→ stays English;treen→trên;truowfng,truongwf,truwownfg→trường;this makes sensecomes out right in Vietnamese mode, because ambiguous words are fixed once the context is clear.
- Programming-aware:
var,const,git push,obj.dirandmy_varare left alone.
- Undo: press Delete right after an automatic fix to undo it.
- Remembers the language for each app, and for each website in Chrome, Safari, Arc, Brave, Edge, Vivaldi and Opera.
- Switch hotkey: a key with modifiers, or modifiers alone (⌃⇧), with an optional beep.
- Works with Dvorak and other layouts: Vikey steps aside automatically for other input languages (Japanese, Chinese…).
Requires Xcode and XcodeGen.
xcodegen generate
xcodebuild -project Vikey.xcodeproj -scheme Vikey -configuration Release buildVikey needs Accessibility permission (to read and rewrite keystrokes). On first launch it walks you through granting it.
For tuning auto switch, turn on Gỡ lỗi → Ghi nhật ký gõ in the menu bar. It counts manual vs automatic switches and (optionally) records the keys of each word to ~/Library/Application Support/Vikey/typing-log.jsonl, never in password fields, password managers or terminals. Off by default. Analyze with Tools/autoswitch/analyze_log.py.
Every typing rule is locked down by tests: rule-tagged cases, golden snapshots of typing a mixed Vietnamese/English corpus, and every Vietnamese syllable.
Tools/autoswitch/check.shSee DECISIONS.md for every rule and why it exists.
Vikey is based on OpenKey by Tuyen Mai, and is distributed under the GNU General Public License v3.0. See LICENSE.