
Automatic keyboard layout switcher (RU↔EN). Detects mistyped words like "ghbdtn" and replaces with "привет" on the fly. Open-source replacement for the ...

Automatic keyboard layout switcher for macOS. Types "ghbdtn" in QWERTY by mistake? Bzz instantly converts it to "привет" before you hit Enter.
Bzz is the open-source MIT alternative to Caramba Switcher for macOS users who need automatic Cyrillic↔Latin layout switching — a 98K-word morphological dictionary, on-device only (no telemetry), and a one-time 490 ₽ price for Pro features instead of a yearly subscription. It also fills the gap left by Punto Switcher, which has been abandoned for macOS since 2017.
Windows support is planned.
.dmg from Releasesxattr -d com.apple.quarantine /Applications/Bzz.appRequirements: Go 1.26+ and make
git clone https://github.com/zlopixatel/bzz.git cd bzz make app # Creates Bzz.app in ./build/ make install # Copies to ~/Applications/
Or build the binary only:
go build -ldflags="-s -w" -o Bzz . ./Bzz
~/Library/Application Support/Bzz/config.yaml on first runJust type normally. Bzz watches for wrong keyboard layout:
Type: ghbdtn [Space] → Auto-corrects to: привет Type: GHBDTN [Space] → Auto-corrects to: ПРИВЕТ Type: Lfvecz, [Enter] → Auto-corrects to: Привет, [then submits]
When does it correct?
Press Cmd+Z within 5 seconds of a correction to revert:
ghbdtn [Space] → привет [Cmd+Z] → ghbdtn (reverted)
The undo window closes after 5 seconds or if you type something else.
Click the tray icon to toggle:
Or quit from the tray menu.
Edit ~/Library/Application Support/Bzz/config.yaml:
enabled: true # Enable/disable the app primary_language: ru # Primary language (ru or en) min_word_length: 2 # Minimum word length to check excluded_apps: # Apps where Bzz is disabled - idea # Example: JetBrains IDEs
Changes take effect immediately — no restart needed.
hook_darwin.go): CGEventTap intercepts keyboard events in real-timedetector.go): Analyzes text to determine if layout switch occurreddict.go): 98K Russian words + Snowball stemmer for lemmatizationreplacer_darwin.go): Sends backspace/character events to fix texttray_darwin.go): System menu bar integration for pause/resumebuffer.go): Accumulates characters to form words at phrase boundariesInput: "ghbdtn" Convert: "привет" (QWERTY → Russian keymap) Lookup: ✓ Found in dictionary Result: Correct to "привет" Input: "ghbdtna" (typo: extra 'a') Convert: "приветf" Fuzzy: Within 1 edit of "приветф" or "привет"? Result: Correct to "привет"
go build -ldflags="-s -w" -o Bzz .
make app # Creates Bzz.app with icon
make dmg # Creates Bzz.dmg
Windows support requires MinGW on macOS:
brew install mingw-w64 make build-windows
Creates Bzz.exe.
make release # Builds both macOS .dmg and Windows .exe
Run the test suite:
go test ./... -v
Key tests:
detect_test.go: Dictionary lookup and fuzzy matching logicshifted_test.go: Shifted key handling (Caps Lock, numbers)integration_test.go: End-to-end behavior with bufferBzz is open-source under the MIT license. Contributions welcome!
dicts/_freq.txt (one word per line)dict.go if availablekeymap.go for the target languagedetect_test.goThe dictionary at dicts/ru_freq.txt is frequency-ranked. To improve:
Bzz core is free under the MIT License — forever. This includes auto-correction,
fuzzy matching, Cmd+Z undo with per-app learning, Cmd+Shift+X manual selection
conversion, tray icon, LaunchAgent auto-start, and per-app exclusions via
config.yaml. None of these will ever move to a paid tier.
Bzz Pro (v0.4, planned Q3 2026) — one-time 490 ₽ purchase, lifetime:
the auto-corrector should respect
(one included in Pro, others +200 ₽ upgrade)
See marketing/PRO_FEATURES.md for the canonical
list and rationale. Pro will be sold through a Telegram bot with offline
Ed25519-signed license files — no servers, no telemetry, no recurring charges.
Until Pro ships, you can support development via Boosty / GitHub Sponsors
(TBA) — supporters do not get extra features (so we stay honest about
what Pro will be).
Bzz processes keystrokes locally only. There is no HTTP client in the
binary — grep -rE "net/http|net.Dial" *.go returns nothing. Read the
full Privacy Policy.
xattr -d com.apple.quarantine /Applications/Bzz.app open /Applications/Bzz.app
Or: Right-click Bzz.app → Open Anyway
log stream | grep Bzz~/Library/Application Support/Bzz/config.yaml for typosMIT License — see LICENSE for details.
Copyright © 2026 Roman Kovalev
Bzz — автоматический переключатель раскладки клавиатуры для macOS. Типите "ghbdtn" вместо "привет"? Bzz исправит это прямо при вводе.
#### Готовый бинарник
.dmg с Releases#### Сборка из исходников
git clone https://github.com/zlopixatel/bzz.git cd bzz make app # Создаёт Bzz.app make install # Копирует в ~/Applications/
#### Автоматическое исправление
Просто пишите. Bzz следит за ошибками раскладки:
Печатаете: ghbdtn [Space] → Исправляет на: привет Печатаете: Lfvecz, [Enter] → Исправляет на: Привет, [отправляет]
Исправляет когда:
#### Отмена
Cmd+Z в течение 5 секунд после исправления:
ghbdtn [Space] → привет [Cmd+Z] → ghbdtn (отменено)
#### Пауза/возобновление
Клик на иконку в трее:
Отредактируйте ~/Library/Application Support/Bzz/config.yaml:
enabled: true # Включено/отключено primary_language: ru # Основной язык (ru или en) min_word_length: 2 # Минимальная длина слова excluded_apps: # Приложения, где отключено - idea # Пример: JetBrains IDEs
"Bzz cannot be opened":
xattr -d com.apple.quarantine /Applications/Bzz.app
Нет разрешения на доступ:
Исправления не работают:
log stream | grep BzzMIT — см. LICENSE
© 2026 Roman Kovalev
100% Free & Open-Source native desktop software. Star the repository to support development.

Ten menu bar utilities in one app: a window manager with snap zones you draw yourself, workspaces that reopen your apps on the right monitor, on-device ...

Better input source switcher for macOS.

Tells you, in plain English, what each USB-C cable plugged into your Mac can do - speed, power, and e-marker info - from the menu bar.