PolterType
PolterType is a privacy-focused, open-source keyboard layout switcher that detects and automatically corrects words typed in the wrong language layout.
PolterType is an open-source, automatic keyboard layout switcher that helps users who frequently switch between different languages while typing. Created to address the frustration of typing words in the wrong layout, this tray-based application monitors keyboard input to identify when text appears as gibberish, automatically switches the keyboard layout, and retypes the word correctly. Developed in Rust, the tool is designed to be lightweight, privacy-focused, and non-intrusive for users on Windows, macOS, and Linux.
The core functionality of the tool involves buffering keystrokes in memory on a per-word basis to analyze them against bundled dictionaries and language heuristics. When it detects a high probability that a word was typed using an incorrect layout, it performs the correction instantly by erasing the misidentified word and outputting the correct characters in the appropriate language layout. It is built to operate efficiently without impacting system performance or logging any user data to persistent storage.
Some of the key features are:
- Smart Identifier Guard: Automatically avoids touching code-like tokens, snake_case, camelCase, or alphanumeric sequences to prevent accidental corrections while programming.
- Pluggable Language Support: Ships with fifteen pre-configured languages and allows users to add support for any other language using simple TOML configuration files.
- Per-App Exceptions: Users can define specific applications where the tool should remain silent, ensuring it does not interfere with specialized workflows or terminals.
- Privacy-First Design: The tool operates without telemetry, analytics, or persistent logging of typed content, with all processed data held in RAM only.
- Smart Command System: Acts as a pocket text expander, allowing users to define typed triggers for file opening, layout switching, or text snippets.
- Configurable Hotkeys: Includes rebindable shortcuts to manually force-fix the last word or pause/resume automatic layout switching.
- Zero-Dependency Core: Built as a native Rust binary without WebView or heavy frameworks, maintaining a small footprint of approximately 10-15 MB.
Operationally, the tool runs in the system tray and monitors low-level input events. On platforms where direct key monitoring is restricted, it employs specific backend techniques—such as evdev/uinput on Linux or accessibility APIs on other platforms—to maintain functionality. It handles corrections in real-time, often using a temporary keyboard grab to prevent interleaving of keys during the correction process. While advanced features like per-app rules rely on OS-specific accessibility interfaces, the primary correction engine remains functional across all supported platforms.
Some common use cases include:
- Multilingual Communication: Ideal for users who regularly switch between languages like English, Spanish, or Ukrainian and often mistype words due to keyboard layout mismatches.
- Software Development: Prevents the tool from 'fixing' technical identifiers, URLs, or command-line arguments, making it safe for use in IDEs and terminals.
- Content Creation: Streamlines writing workflows by eliminating the need to manually delete and retype text when the OS keyboard layout is set incorrectly.
- Text Expansion: Users can create custom snippets or file triggers to speed up their workflow by mapping short character sequences to longer strings or actions.