A native macOS Bengali (Bangla) phonetic input method for Apple Silicon. Type in English and get Bengali text — just like the original Avro Keyboard, but modernized for current macOS.
The original iAvro was built for Intel Macs and will stop working in upcoming macOS versions. Avro Silicon is a from-source modernization that:
- Builds and runs natively on Apple Silicon (arm64)
- Removes all legacy dependencies (CocoaPods, RegexKitLite, FMDB)
- Uses only system frameworks (Foundation, InputMethodKit, sqlite3)
- Preserves the exact same phonetic typing behavior
- Phonetic Bengali input — type
amito getআমি,banglato getবাংলা - Smart candidate suggestions — dictionary-backed suggestions sorted by edit distance
- Suffix-aware completion — intelligently handles Bengali suffixes and conjuncts
- AutoCorrect / emoticon support — shorthand expansions
- User learning — remembers your preferred candidates across sessions
- Candidate panel — configurable single-column or single-row layout
- Lightweight — no external dependencies, fast startup
- Download the latest
.tar.gzfrom the Releases page. - Extract to get
Avro Silicon.app. - Copy it to
~/Library/Input Methods/. - Run this command in your terminal:
xattr -d com.apple.quarantine ~/Library/Input\ Methods/Avro\ Silicon.app - Open System Settings > Keyboard > Input Sources and add Avro Silicon under Bangla.
# Build
xcodebuild \
-project AvroKeyboard.xcodeproj \
-scheme "Avro Silicon" \
-configuration Release \
-sdk macosx \
CODE_SIGNING_ALLOWED=NO \
SYMROOT="$(pwd)/build" \
build
# Install
scripts/install.shIf the input source doesn't appear, run:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f ~/Library/Input\ Methods/Avro\ Silicon.app
killall TextInputMenuAgentmain.m — App entry point, IMKServer setup
AvroKeyboardController — InputMethodKit controller (composition, candidates, key handling)
AvroParser — Phonetic-to-Bengali transliteration engine (data.json rules)
RegexParser — Regex pattern generator for dictionary matching (regex.json rules)
Database — SQLite3 dictionary lookup with caching and literal fast-path
Suggestion — Composite suggestion pipeline (parser + dictionary + autocorrect + suffix)
CacheManager — Persistent weight cache + in-session phonetic/suffix caches
AutoCorrect — Emoticon and shorthand expansion (autodict.plist)
NSString+Levenshtein — Edit distance calculation + regex helpers
Data files: data.json (transliteration rules), regex.json (pattern rules), database.db3 (word dictionary), autodict.plist (autocorrect entries).
scripts/run_regression_tests.shdefaults write com.omicronlab.inputmethod.AvroSilicon EnablePerfLog -bool true
# Use the IME, then:
scripts/perf_report.sh 10m- CI:
.github/workflows/ci.yml— runs regression tests and builds on every push/PR - Release:
.github/workflows/release.yml— builds and publishes onv*tags
git tag vX.Y.Z
git push origin vX.Y.ZThe release workflow publishes .tar.gz and .sha256 to GitHub Releases automatically.
Contributions are welcome! Here's how to get started:
- Fork the repository and clone it.
- Build the project (see "From Source" above).
- Run the regression tests to make sure everything passes.
- Make your changes and add test cases for new behavior.
- Submit a pull request.
- Code signing and notarization — if you have an Apple Developer account, you can help sign and distribute the app
- Testing on different macOS versions — especially older versions (macOS 11-13)
- Expanding the dictionary — adding more Bengali words to
database.db3 - UI improvements — modernizing the preferences panel
- Objective-C with manual retain/release (no ARC)
- Singleton pattern for shared instances (AvroParser, Database, Suggestion, etc.)
- Preference keys centralized in
AvroPreferenceKeys.h - Resource path resolution via
AvroResourcePath.h - Debug-only performance instrumentation behind
#ifdef DEBUG
Input source not visible:
- Confirm app path is
~/Library/Input Methods/Avro Silicon.app - Run the
lsregister+killall TextInputMenuAgentcommands above
No perf data in report:
- Ensure
EnablePerfLogis set totrue - Generate typing activity, then run
scripts/perf_report.sh 5m
This fork was improved with the help of Claude Code. I'm not a macOS developer — I just needed this keyboard to keep working on Apple Silicon. Since the codebase changes were largely AI-assisted, I wasn't confident enough in the internals to open a PR on the original repository. I didn't want to waste the original developer's time reviewing AI-generated code they'd have to maintain. If you're a macOS developer and these changes look solid to you, feel free to upstream them.
This project is licensed under the Mozilla Public License 1.1, same as the original iAvro by OmicronLab.
- Original iAvro by Rifat Nabi / OmicronLab
- Apple Silicon modernization and improvements by the open-source community
- Code improvements assisted by Claude Code