LockIME
July 13, 2026 · View on GitHub
Um app de barra de menus para macOS que bloqueia a sua fonte de entrada do teclado. Sempre que você (ou outro app) troca o método de entrada, o LockIME volta imediatamente para o que está bloqueado — globalmente, por app em primeiro plano, ou (com o modo aprimorado opcional) por URL do navegador.
macOS 14+ · Apple silicon e Intel — apps separados, baixe o arquivo
-arm64ou-x86_64correspondente ao seu Mac · construído com SwiftUI, Liquid Glass no macOS 26 (Tahoe).
Screenshots
Install
Instale com o Homebrew (o cask escolhe a build correspondente à arquitetura do seu Mac):
brew install --cask oomol-lab/tap/lockime
Ou baixe o .dmg correspondente ao seu Mac (-arm64 para Apple silicon,
-x86_64 para Intel) na
última versão.
De qualquer forma, o app se mantém atualizado sozinho via Sparkle.
Features
- Rebloqueio instantâneo — devolve a fonte de entrada ativa para a bloqueada no momento em que você (ou outro app) a troca, globalmente ou por app.
- Bloquear ou alternar — as regras por app e por URL podem bloquear uma fonte de entrada (reaplicada sempre que ela desvia) ou apenas alternar para ela uma vez quando você foca o app ou a página, deixando você livre para mudá-la depois.
- Bloquear globalmente, ou apenas alternar — dê à fonte de entrada padrão global um de três comportamentos: bloquear para fixá-la em todo lugar; alternar para alternar você para ela uma vez sempre que um app recorre ao padrão global, depois deixá-lo livre (disparando de novo cada vez que um app recorre ao padrão global); ou Nenhuma para nenhum comportamento global — o LockIME age apenas através de regras por app e por URL. Alternar alterna você ativamente sempre que um app recorre ao padrão global; Nenhuma não faz nada globalmente.
- Correspondência flexível de URL — as regras por URL (modo aprimorado) correspondem por um domínio e seus subdomínios, por um domínio exato, por uma palavra-chave de domínio, ou por uma expressão regular sobre a URL inteira, e se aplicam em uma ordem de prioridade que você arrasta para organizar — a primeira correspondência vence.
- Controle pela barra de menus — ative/desative, troque a fonte de entrada bloqueada, veja a fonte atual e acompanhe o contador de ativações pela barra de menus.
- Atalhos de teclado — atalhos globais configuráveis para ativar/desativar o LockIME e percorrer a fonte de entrada bloqueada, além de atalhos por app para percorrer ou remover a regra do app em primeiro plano.
- Iniciar no login — inicia automaticamente quando você faz login (desativado por padrão).
- Modo claro e escuro — uma linguagem de design unificada e nativa do sistema, que se adapta às aparências clara e escura, além de um ícone de app sob medida. Veja docs/DESIGN.md.
- Troca de idioma ao vivo — alterne instantaneamente entre 9 idiomas, sem reiniciar: English, 简体中文, 繁體中文, 日本語, Français, Deutsch, Español, Português, Русский.
- Registro de ativações de 24 horas — veja o que foi trocado, por quê e por quanto tempo.
- Backup da configuração — exporte suas regras por app e por URL para um arquivo
.lockimee importe-as de volta, com uma etapa de prévia que lista adições, conflitos e remoções antes de aplicar qualquer coisa. - Atualização automática — canais stable e beta via Sparkle, com uma janela de atualização personalizada.
- Download minúsculo — o app inteiro cabe em um
.dmgcom menos de 3 MB. - Sem permissões do sistema para o bloqueio básico — um modo aprimorado opcional, condicionado à permissão de Accessibility, libera regras mais finas por URL e por campo em foco.
- Automação — um esquema de URL
lockime://permite que outros apps, scripts e o Shortcuts controlem o LockIME (veja abaixo).
Comparison
As duas alternativas ao LockIME mais usadas são o Input Source Pro e o KeyboardHolder, ao lado de uma longa cauda de ferramentas menores de código aberto e de linha de comando. Todas elas alternam a fonte de entrada conforme você se move entre apps ou sites; o LockIME é construído em torno de um bloqueio contínuo que a reaplica no momento em que ela desvia — ao mesmo tempo em que qualquer regra ainda pode recorrer a uma alternância única.
| LockIME | Input Source Pro | KeyboardHolder | |
|---|---|---|---|
| Preço | Grátis | Grátis | Grátis (doação) |
| Código aberto | GPL-3.0 | GPL-3.0 | ✗ (fechado) |
| macOS mínimo | 14 | 11 | 10.15 |
| Tamanho do download | < 3 MB | ≈ 7.6 MB | ≈ 4.5 MB |
| Regras por app | ✓ | ✓ | ✓ |
| Regras por site / URL | ✓ | ✓ | ✓ |
| Tipos de correspondência de URL | subdomínio · exato · palavra-chave · regex | subdomínio · exato · regex | domínio (curinga) |
| Regra da barra de endereços (campo de URL) | ✓ (bloqueio/alternância/prioridade) | ✓ (fonte padrão) | — |
| Rebloqueio contínuo | ✓ | ✗ | ✗ |
| Bloquear ou alternar uma vez, por regra | ✓ | ✗ | ✗ |
| Atalhos de teclado globais | ✓ | ✓ | ✗ |
| Controle pela barra de menus | ✓ | ✓ | ✓ |
| Dicas de entrada na tela | ✗ | ✓ | ✓ (opcional) |
| Registro de ativações de 24 horas | ✓ | ✗ | ✗ |
| Backup / importação da configuração | ✓ (.lockime, com prévia) | ✓ (exportar/importar + CLI) | — |
| Automação por esquema de URL | ✓ (lockime://, x-callback-url) | parcial (importação inputsourcepro://) | ✗ |
| Idiomas da interface | 9 (troca ao vivo) | 6 | zh · en · ja |
| Permissões do sistema | nenhuma para o básico · Accessibility por URL | nenhuma para o básico · Accessibility por URL | Accessibility¹ |
| Atualização automática | Sparkle (stable + beta) | ✓ | ✓ |
| Mantido ativamente (2026) | ✓ | ✓ | ✓ |
¹ O KeyboardHolder não documenta seus requisitos de permissão; ler a barra de endereços do navegador para suas regras por site exige acesso de Accessibility na prática. Um "—" marca uma capacidade não documentada, não uma ausência confirmada.
Escolhendo entre eles: o Input Source Pro tem a maior comunidade e as dicas de entrada na tela mais ricas; o KeyboardHolder é uma memória por app refinada e sem configuração. Recorra ao LockIME quando você quer uma fonte de entrada fixada — por app, por URL ou na barra de endereços, reaplicada no instante em que qualquer coisa a muda — em vez de apenas alternada quando você chega.
Outras ferramentas: SwitchKey (apenas por app, sem manutenção), Kawa (manual, acionado por atalhos), InputSwitcher (freemium, apenas por app) e macism (um bloco de construção de linha de comando, não um alternador com interface gráfica).
Comparado com o Input Source Pro 2.11.0 e o KeyboardHolder 1.14.10, em meados de 2026 — os detalhes mudam; correções são bem-vindas.
Automation
O LockIME expõe um esquema de URL lockime:// para que outros apps, scripts, o Shortcuts e launchers possam controlá-lo — ativá-lo ou desativá-lo, redirecionar a fonte de entrada, gerenciar regras e ler o estado de volta com callbacks x-callback-url. Ela está desativada por padrão — ative-a em Ajustes ▸ Geral ▸ Automação.
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"
Referência completa: URL Scheme API.
Design
O LockIME segue um único sistema de design (Sources/LockIME/UI/DesignSystem.swift): cores semânticas, materiais do sistema e SF Symbols conduzem a adaptação claro/escuro; o Liquid Glass fica reservado apenas à camada flutuante/de navegação. A cor de destaque da marca, "Lock Indigo", é distribuída como asset AccentColor. A especificação completa está em docs/DESIGN.md.
O ícone do app é gerado programaticamente (sem ferramenta de design) — regenere-o com:
./scripts/make-appicon.sh # renders the master via SwiftUI and rebuilds the appiconset
Development
Requer Xcode 26+ (o app em si tem como alvo o macOS 14+), além de 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)
O projeto do Xcode é gerado a partir de project.yml e não é versionado.
Os testes de integração que tocam o hardware (troca real de TIS) estão excluídos do make test; execute-os com make test-hw (muda brevemente a fonte de entrada).
Releasing
Lançamentos Developer ID notarizados e acionados por dispatch, com atualização automática via Sparkle nos canais stable e beta: execute o workflow Release (Actions → Release) — ele calcula a versão a partir das tags do git, compila e cria a tag e a GitHub Release automaticamente — nunca envie uma tag manualmente. O canal beta é a build nightly. Cada lançamento traz apps separados para Apple silicon e Intel, cada um com seu próprio feed de atualização (sem binário universal, sem atualizações entre arquiteturas). Veja docs/RELEASING.md.
Architecture
- LockIMEKit (biblioteca estática) — lógica pura, totalmente coberta por testes unitários, usando apenas frameworks do sistema: motor de bloqueio, monitor de apps, regras, observador aprimorado (Accessibility), modelo de registro, localização.
- LockIME (app) —
@main, a interface SwiftUI, o sistema de design e as finas camadas de integração para Sparkle, KeyboardShortcuts e PermissionFlow.
License
Copyright © 2026 Hangzhou Wumou Software Co., Ltd.