Cross-platform text expander that replaces trigger phrases with emoji or any text when you press Tab.
Author: @hayk4700 (Edgar Oganyan)
- Type a trigger like
:heartand press Tab to expand it to❤️ - JSON configuration with custom triggers and replacements
- Hot-reload configuration without restart
- Windows MVP with UI Automation and low-level keyboard hook
- macOS and Linux platform ports included
Default config path:
- Windows:
%APPDATA%\cppets\config.json - macOS:
~/Library/Application Support/cppets/config.json - Linux:
~/.config/cppets/config.json
Example config.json:
{
"version": 1,
"triggerPrefix": ":",
"expansions": {
":heart": "❤️",
":knife": "🔪",
":thanks": "Спасибо! 🙏"
},
"options": {
"caseSensitive": true,
"maxTriggerLength": 64,
"consumeTab": true,
"hotReload": true
}
}cmake -S . -B build
cmake --build build --config ReleaseOn Windows with Visual Studio:
cmake -S . -B build
cmake --build build --config Releasecppets
cppets --config C:\path\to\config.json
cppets --install-autostart
cppets --uninstall-autostartWorks best in standard text controls:
- Notepad
- Microsoft Word
- Browser input fields and textareas
Some Electron apps and games may not expose caret position via UI Automation. In those cases cppets passes Tab through unchanged.
Requires Accessibility and Input Monitoring permissions.
X11 session with AT-SPI2. Wayland support is not included in the first release.
- Global keyboard hook intercepts Tab
- UI Automation / Accessibility reads text left of the caret
- Longest matching trigger suffix is found in config
- Trigger is deleted via simulated Backspace
- Replacement text is injected as Unicode input
MIT