Install on macOS
On macOS, Funput is a native input method — deeply integrated with the system, visible in the menu bar, and working in every app.
Requirements
| Minimum OS | macOS 26 (Tahoe). macOS 27 is fully supported |
| Chip | Apple Silicon (M-series) and Intel — releases are universal binaries |
| Signing | Developer ID signed and notarized, so Gatekeeper does not block it |
Funput will not run on macOS 15 (Sequoia) or earlier — the system refuses to load the input method, and there is no reduced mode to fall back on. This limit is baked into the bundle itself; it is not a recommendation.
The reason is that Funput's interface is built on SwiftUI APIs introduced in macOS 26 (Liquid Glass), not on anything in the Vietnamese typing engine.
To check your version: → About This Mac.
Features
| Three input methods | Telex · Telex Advanced (leading w, plus [ / ] shortcuts) · VNI |
| Tone placement | Traditional (hòa, khỏe) or modern (hoà, khoẻ) |
| Smart typing | English word restore · instant restore · spell check · auto-capitalization |
| Retone after Backspace | Delete back, type a different tone mark, and Funput re-tones the word correctly |
| Per-app memory | Vietnamese on in Pages, off in Terminal — Funput switches as you change apps |
| Text expansion | Abbreviation table that expands as you type, with optional case-insensitive matching |
| Charset converter | Convert between precomposed Unicode, combining Unicode, TCVN3 (ABC) and VNI-Windows |
| Export / import config | Move every option and abbreviation to another machine as a single file |
Download
Get the latest release from GitHub Releases. Each macOS release ships two installers:
| File | Description |
|---|---|
Funput-*.pkg | System-wide install, requires admin rights |
Funput-*.app.zip | Unzip and install manually, no admin rights needed |
- You have admin rights → use the
.pkg(one step, shared by every account on the Mac). - No admin rights (work machine, Standard account) → use the
.app.zip.
Verify the SHA-256 before installing — compare with the .sha256 file on the release page:
shasum -a 256 Funput-*.pkg
Option 1: Install with .pkg (recommended)
- Double-click
Funput-*.pkg— macOS opens Installer.app. - Follow the on-screen steps and enter your password when asked.
- Funput is installed to
/Library/Input Methods/Funput.app.
That path is the system-wide Input Methods folder, distinct from the per-user one (~/Library/Input Methods).
Once installed, continue to Enable the input method below.
Option 2: Install with .app.zip (no admin rights)
- Double-click
Funput-*.app.zipto unzip — you getFunput.app. - Open the per-user Input Methods folder:
- Open Finder
- Press
Cmd + Shift + G - Type
~/Library/Input Methodsand press Enter - If the folder does not exist, create one named
Input Methods
- Drag
Funput.appinto that folder. - Continue to Enable the input method below.
Do not run Funput from Downloads or Desktop long term — place it in ~/Library/Input Methods so macOS recognizes it as an Input Method.
Enable the input method
Installing is not enough to start typing Vietnamese. macOS requires you to add Funput to your input sources first.
- Open System Settings
- Go to Keyboard → Input Sources
- Click +
- Select Vietnamese → Funput
- Click Add
Funput appears in the menu bar. Use the macOS input-switching shortcut (usually ⌃Space or the 🌐 key) to select Funput.
Getting started
Once Funput is the active input source, the default shortcut to turn Vietnamese on and off is ⌃ + \ (Control + backslash). You can change it in Settings → Shortcuts.
Try typing:
| Input method | Type this | You get |
|---|---|---|
| Telex | tieesng vieejt | tiếng việt |
| VNI | xin chao2 | xin chào |
Telex marks tones with letters: s acute, f grave, r hook, x tilde, j dot below — so chaof gives chào.
VNI marks tones with digits: 1 acute, 2 grave, 3 hook, 4 tilde, 5 dot below — so chao2 is what gives chào.
Funput also offers Telex Advanced: plain Telex plus a leading w and the [ / ] shortcuts for ư and ơ.
Where to find Funput after installing
The input method lives in a Library/Input Methods folder, and Spotlight does not index those — so searching for "Funput" finds nothing if only the input method is installed.
To work around that, Funput adds a small companion app as an entry point:
| Install method | App location |
|---|---|
.pkg | /Applications/Funput.app |
.app.zip | ~/Applications/Funput.app — created by the app on first launch |
That app is not the input method; it simply opens the Settings window. With it in place, searching "Funput" in Spotlight gets you to settings like any normal app.
The VI icon in the menu bar is the other quick way in: toggle Vietnamese, switch input method, open Settings. You can hide it under Settings → Overview → Show menu bar icon.
Configuration
The Settings window has four main sections, plus tools at the bottom of the sidebar:
| Section | What you can change |
|---|---|
| Overview | Status · input method · launch at login · show menu bar icon |
| Typing | Input method · tone placement · English restore · instant restore · spell check · auto-capitalization |
| Shortcuts | Vietnamese/English toggle key · key to flip the word you just typed |
| Text expansion | Abbreviation table, with optional case-insensitive matching |
| Tools | Charset converter · import / export configuration · check for updates · about |
A shortcut you record must include ⌃, ⌥ or ⌘. A bare key would fire in the middle of normal typing, so Funput refuses to accept one.
Where settings are stored
macOS does not use a separate configuration file — Funput writes to the system's UserDefaults:
| Domain | Holds |
|---|---|
app.funput.inputmethod.Funput | The input method and every option |
app.funput.Funput | The entry-point app in Applications |
To move your configuration to another machine, use Settings → Data → Export configuration rather than copying files by hand.
Known limitations
Symptom: after switching input source while a text field in Chrome, Cursor, VS Code, Slack, Discord or Notion already has focus, character keys stop producing text. Shortcuts that do not need the input method (⌘C, Delete, arrow keys) keep working. In the worst case the app freezes for 15–30 seconds.
This is not a Funput bug. Apple changed internals of TextInputUIMacHelper on macOS 26/27 beta, and Chromium's NSTextInputContext bridge does not yet handle the new timing. Every third-party input method is affected — Funput, OpenKey, EVKey, GoTiengViet alike — because macOS offers no other API for a custom input method.
Workaround: switch to Funput before clicking into a text field, or click away and back into the field after switching. Native AppKit apps (TextEdit, Notes, Mail, Safari, Pages) are unaffected.
- Retone after Backspace does not work in Cursor. Cursor reports a self-contradictory caret position, so Funput declines rather than guessing and corrupting your text. VS Code works fine.
- No background update checks — you have to choose Check for updates yourself.
- No Mac App Store build. An input method cannot be sandboxed, so Funput is distributed directly through GitHub Releases.
Updating
Open Settings → Check for updates. Funput reads the signed appcast.xml from GitHub Releases, verifies its Ed25519 signature, and installs the new version.
Funput never checks for updates in the background and does not notify you when a new version appears — you have to choose Check for updates.
To update manually:
- Download the new release from GitHub Releases
- Install over the previous version using the same method (
.pkgor.app.zip)
Uninstalling
macOS remembers input sources independently of the files on disk, so order matters:
- Open System Settings → Keyboard → Input Sources, select Funput, click −.
- Delete Funput's files (see below).
- Log out and back in, or restart, so macOS forgets the input source completely.
If you have the source checkout, the uninstall script cleans up everything — system-wide and per-user bundles, the entry-point app, the .pkg receipt, preferences and caches:
./scripts/uninstall.sh # remove everything
./scripts/uninstall.sh --keep-prefs # remove the apps but keep settings
Run the script as your normal user — not sudo ./uninstall.sh. It escalates with sudo exactly where needed; running the whole script as root would wipe root's preferences instead of yours.
To clean up by hand, these are all the paths involved:
sudo rm -rf "/Library/Input Methods/Funput.app" # .pkg install
rm -rf "$HOME/Library/Input Methods/Funput.app" # .app.zip install
sudo rm -rf /Applications/Funput.app # entry-point app (.pkg)
rm -rf "$HOME/Applications/Funput.app" # entry-point app (.app.zip)
sudo pkgutil --forget com.funput.installer # .pkg receipt
defaults delete app.funput.inputmethod.Funput # settings
defaults delete app.funput.Funput
Troubleshooting
Funput does not appear in Input Sources
- Log out and log back in once — macOS only rescans the Input Method list at the start of a login session.
- Confirm
Funput.appis in/Library/Input Methodsor~/Library/Input Methods. - Confirm your Mac runs macOS 26 or newer — older versions will not load the input method, see Requirements.
Spotlight cannot find "Funput"
That is expected: the input method sits in a folder Spotlight does not index. See Where to find Funput after installing — the entry-point app in Applications is what Spotlight sees.
Funput is selected but I still get English
Funput may be in English mode. Press ⌃ + \ to switch back, or click the VI menu bar icon to check the current state.
VNI typing produces no tone marks
VNI marks tones with digits (chao2 → chào), not letters. If chaof is what you are used to, you are typing Telex — switch method from the menu bar or in Settings → Typing.
Chrome / VS Code / Slack stops accepting characters
See Known limitations — this is a Chromium-side issue on macOS 26/27 beta, not a Funput bug.
macOS warns when opening the file
Official releases are signed and notarized. If you still see a warning:
- Make sure you downloaded from the official GitHub Releases, not an unofficial mirror.
- Verify the SHA-256 checksum (
.sha256file on the release page) to confirm the download is intact.
Verify SHA-256
On macOS, run this in Terminal (replace the filename as needed):
shasum -a 256 Funput-*.pkg
Compare the output with the contents of the .sha256 file on the release page.