LockIME
July 13, 2026 · View on GitHub
Приложение для строки меню macOS, которое блокирует источник ввода клавиатуры. Как только вы (или другое приложение) переключаете метод ввода, LockIME немедленно возвращает заблокированный — глобально, для каждого активного приложения или (в дополнительном расширенном режиме) для каждого URL в браузере.
macOS 14+ · Apple silicon и Intel — отдельные приложения, скачайте файл
-arm64или-x86_64, подходящий вашему Mac · создано на SwiftUI, Liquid Glass на macOS 26 (Tahoe).
Screenshots
Install
Установите через Homebrew (cask сам выберет сборку, соответствующую архитектуре вашего Mac):
brew install --cask oomol-lab/tap/lockime
Или скачайте .dmg, подходящий вашему Mac (-arm64 для Apple silicon, -x86_64 для Intel), со страницы последнего выпуска. В обоих случаях приложение автоматически обновляется через Sparkle.
Features
- Мгновенная повторная блокировка — возвращает активный источник ввода к заблокированному в тот же момент, когда вы (или другое приложение) его меняете, — глобально или для каждого приложения.
- Блокировать или переключать — правила для приложений и для URL могут блокировать источник ввода (повторно применяя его при любом отклонении) или один раз переключать на него при открытии приложения или страницы, а затем не мешать вам его менять.
- Блокировать глобально или просто переключать — задайте глобальному источнику ввода по умолчанию одно из трёх поведений: блокировать, чтобы закрепить его везде; переключать, чтобы один раз переключить вас на него каждый раз, когда приложение опирается на глобальный источник по умолчанию (у него нет собственного правила или его правило — Использовать по умолчанию), а затем оставить вас свободными; или Нет — вообще без глобального поведения: тогда LockIME действует только через ваши правила для приложений и для URL. Переключать активно переключает вас на него каждый раз, когда применяется значение по умолчанию; Нет не делает глобально ничего.
- Гибкое сопоставление URL — правила для URL (расширенный режим) сопоставляются по домену и его поддоменам, по точному домену, по ключевому слову домена или по регулярному выражению над всем URL, и применяются в порядке приоритета, который вы задаёте перетаскиванием, — побеждает первое совпадение.
- Управление из строки меню — включение/выключение, смена заблокированного источника ввода, просмотр текущего источника и счётчик срабатываний прямо в строке меню.
- Сочетания клавиш — настраиваемые глобальные сочетания для включения/выключения LockIME и перебора заблокированного источника ввода, а также сочетания для отдельных приложений, позволяющие переключать или удалять правило активного приложения.
- Запуск при входе в систему — стартует автоматически при входе (по умолчанию выключено).
- Светлая и тёмная темы — единый, нативный для системы язык дизайна, адаптирующийся к светлому и тёмному оформлению, плюс фирменная иконка приложения. См. docs/DESIGN.md.
- Смена языка на лету — мгновенно переключайтесь между 9 языками без перезапуска: English, 简体中文, 繁體中文, 日本語, Français, Deutsch, Español, Português, Русский.
- Журнал срабатываний за 24 часа — смотрите, что было переключено, почему и как долго.
- Резервная копия конфигурации — экспортируйте правила для приложений и для URL в файл
.lockimeи импортируйте их обратно; перед применением шаг предпросмотра покажет добавления, конфликты и удаления. - Автообновление — каналы stable и beta через Sparkle, с собственным окном обновления.
- Крошечная загрузка — всё приложение помещается в
.dmgразмером менее 3 MB. - Базовая блокировка не требует системных разрешений — дополнительный расширенный режим, защищённый разрешением Accessibility, открывает более тонкие правила для URL и поля с фокусом.
- Автоматизация — URL-схема
lockime://позволяет другим приложениям, скриптам и Shortcuts управлять LockIME (см. ниже).
Comparison
Две наиболее широко используемые альтернативы LockIME — это Input Source Pro и KeyboardHolder, наряду с длинным хвостом из менее известных инструментов с открытым кодом и CLI. Все они переключают источник ввода, когда вы перемещаетесь между приложениями или сайтами; LockIME же построен вокруг непрерывной блокировки, которая повторно применяет его в тот же момент, когда он отклоняется, — при этом любое правило по-прежнему может свестись к однократному переключению.
| LockIME | Input Source Pro | KeyboardHolder | |
|---|---|---|---|
| Цена | Бесплатно | Бесплатно | Бесплатно (пожертвование) |
| Открытый код | GPL-3.0 | GPL-3.0 | ✗ (закрытый) |
| Минимальная macOS | 14 | 11 | 10.15 |
| Размер загрузки | < 3 MB | ≈ 7.6 MB | ≈ 4.5 MB |
| Правила для приложений | ✓ | ✓ | ✓ |
| Правила для сайтов / URL | ✓ | ✓ | ✓ |
| Типы сопоставления URL | поддомен · точный · ключевое слово · регулярное выражение | поддомен · точный · регулярное выражение | домен (с подстановкой) |
| Правило для адресной строки (поле URL) | ✓ (блокировка/переключение/приоритет) | ✓ (источник по умолчанию) | — |
| Непрерывная повторная блокировка | ✓ | ✗ | ✗ |
| Блокировка или однократное переключение, для каждого правила | ✓ | ✗ | ✗ |
| Глобальные сочетания клавиш | ✓ | ✓ | ✗ |
| Управление из строки меню | ✓ | ✓ | ✓ |
| Экранные подсказки ввода | ✗ | ✓ | ✓ (опционально) |
| Журнал срабатываний за 24 часа | ✓ | ✗ | ✗ |
| Резервная копия / импорт конфигурации | ✓ (.lockime, с предпросмотром) | ✓ (экспорт/импорт + CLI) | — |
| Автоматизация через URL-схему | ✓ (lockime://, x-callback-url) | частично (импорт inputsourcepro://) | ✗ |
| Языки интерфейса | 9 (смена на лету) | 6 | zh · en · ja |
| Системные разрешения | не нужны для базовой · Accessibility для URL | не нужны для базовой · Accessibility для URL | Accessibility¹ |
| Автообновление | Sparkle (stable + beta) | ✓ | ✓ |
| Активно поддерживается (2026) | ✓ | ✓ | ✓ |
¹ KeyboardHolder не документирует свои требования к разрешениям; чтение адресной строки браузера для его правил по сайтам на практике требует доступа Accessibility. «—» обозначает недокументированную возможность, а не подтверждённое отсутствие.
Что выбрать: у Input Source Pro самое большое сообщество и самые богатые экранные подсказки ввода; KeyboardHolder — отточенная, не требующая настройки память для приложений. Обращайтесь к LockIME, когда хотите закрепить источник ввода — для приложения, URL или в адресной строке, с повторным применением в тот же миг, когда что-либо его меняет, — а не только переключать его при входе.
Другие инструменты: SwitchKey (только для приложений, больше не поддерживается), Kawa (ручное переключение по сочетаниям клавиш), InputSwitcher (freemium, только для приложений) и macism (CLI-компонент, а не графический переключатель).
Сравнение с Input Source Pro 2.11.0 и KeyboardHolder 1.14.10, середина 2026 года — детали меняются, поправки приветствуются.
Automation
LockIME предоставляет URL-схему lockime://, чтобы другие приложения, скрипты, Shortcuts и лаунчеры могли управлять им — включать и выключать его, менять источник ввода, управлять правилами и считывать состояние через колбэки x-callback-url. По умолчанию она выключена — включите её в Настройки ▸ Основные ▸ Автоматизация.
open "lockime://lock"
open "lockime://lock-to-source?id=com.apple.keylayout.ABC"
open "lockime://set-app-rule?bundle=com.apple.Terminal&mode=lock&source=com.apple.keylayout.ABC"
Полная справка: URL Scheme API.
Design
LockIME следует единой системе дизайна (Sources/LockIME/UI/DesignSystem.swift): семантические цвета, системные материалы и SF Symbols обеспечивают адаптацию к светлой/тёмной теме; Liquid Glass зарезервирован только за плавающим/навигационным слоем. Фирменный акцентный цвет «Lock Indigo» поставляется как ассет AccentColor. Полная спецификация — в docs/DESIGN.md.
Иконка приложения генерируется программно (без дизайнерских инструментов) — пересоздайте её командой:
./scripts/make-appicon.sh # renders the master via SwiftUI and rebuilds the appiconset
Development
Требуются Xcode 26+ (само приложение нацелено на macOS 14+), а также XcodeGen + xcbeautify (brew install xcodegen xcbeautify).
make gen # generate LockIME.xcodeproj from project.yml
make build # build (Debug)
make run # build & launch
make test # run unit tests
make archive # Release archive (Developer ID)
Проект Xcode генерируется из project.yml и не хранится в репозитории.
Интеграционные тесты, затрагивающие железо (реальное переключение TIS), исключены из make test; запускайте их через make test-hw (кратковременно меняет источник ввода).
Releasing
Нотаризованные релизы с Developer ID, запускаемые через dispatch, с автообновлением Sparkle по каналам stable и beta: запустите workflow Release (Actions → Release) — он вычислит версию по git-тегам, соберёт приложение и автоматически создаст тег и GitHub Release — никогда не пушьте тег вручную. Канал beta — это ночная сборка. Каждый релиз содержит отдельные приложения для Apple silicon и Intel, каждое со своим фидом обновлений (без universal-бинарника и без обновлений между архитектурами). См. docs/RELEASING.md.
Architecture
- LockIMEKit (статическая библиотека) — чистая, полностью покрытая модульными тестами логика, использующая только системные фреймворки: движок блокировки, монитор приложений, правила, расширенный (Accessibility) наблюдатель, модель журнала, локализация.
- LockIME (приложение) —
@main, интерфейс на SwiftUI, система дизайна и тонкие интеграционные прослойки для Sparkle, KeyboardShortcuts и PermissionFlow.
License
Copyright © 2026 Hangzhou Wumou Software Co., Ltd.