{"id":35419609,"url":"https://github.com/tech-tonic-coder/keyboard-language-indicator","last_synced_at":"2026-02-13T18:13:31.047Z","repository":{"id":330440007,"uuid":"1122763039","full_name":"tech-tonic-coder/keyboard-language-indicator","owner":"tech-tonic-coder","description":"A light weight indicator for keyboard language","archived":false,"fork":false,"pushed_at":"2026-01-30T17:28:31.000Z","size":524,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-31T06:07:15.831Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tech-tonic-coder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-25T13:02:52.000Z","updated_at":"2026-01-30T11:22:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tech-tonic-coder/keyboard-language-indicator","commit_stats":null,"previous_names":["tech-tonic-coder/keyboard-language-indicator"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/tech-tonic-coder/keyboard-language-indicator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tech-tonic-coder%2Fkeyboard-language-indicator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tech-tonic-coder%2Fkeyboard-language-indicator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tech-tonic-coder%2Fkeyboard-language-indicator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tech-tonic-coder%2Fkeyboard-language-indicator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tech-tonic-coder","download_url":"https://codeload.github.com/tech-tonic-coder/keyboard-language-indicator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tech-tonic-coder%2Fkeyboard-language-indicator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29414277,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T06:24:03.484Z","status":"ssl_error","status_checked_at":"2026-02-13T06:23:12.830Z","response_time":78,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-02T16:14:29.024Z","updated_at":"2026-02-13T18:13:31.036Z","avatar_url":"https://github.com/tech-tonic-coder.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Keyboard Language Indicator\n\n![License](https://img.shields.io/badge/license-GPL--3.0-green.svg)\n![Platform](https://img.shields.io/badge/platform-Windows-lightgrey.svg)\n![Version](https://img.shields.io/badge/version-4.1.0-blue.svg)\n\nA powerful Windows utility that not only displays on-screen notifications when you switch keyboard input languages, but also includes intelligent text conversion to fix typing mistakes when you forget to switch keyboard layouts. Choose between traditional screen-positioned notifications or a dynamic cursor-following indicator that stays right at your fingertips.\n\n## ✨ Features\n\n### Core Functionality\n- **Real-time language change notifications** - Instantly see which language you've switched to\n- **🆕 Intelligent Text Conversion** - Automatically convert mistyped text to the correct language layout\n- **Cursor follower mode** - Language indicator follows your mouse cursor\n- **Multi-monitor support** - Choose which monitor displays notifications, or show on all monitors\n- **Cursor monitor detection** - Automatically display on the monitor where your cursor is located\n- **Customizable colors per language** - Set unique colors for each language you use\n- **Language configuration editor** - Edit and manage your configured languages with ease\n- **Dark mode support** - Comfortable viewing in any lighting condition\n- **System tray integration** - Runs quietly in the background\n- **Automatic updates** - Stay up-to-date with the latest features\n- **Persistent mode** - Keep notifications visible until dismissed with Ctrl+Q\n- **Flexible positioning** - Place notifications anywhere on screen\n- **Adjustable appearance** - Customize size, opacity, and duration\n- **Live color preview** - See notification appearance instantly before saving\n- **Toggle notifications** - Enable/disable screen notifications independently from the cursor follower\n\n### 🆕 Text Conversion Feature (New in v4.0.0!)\n\nEver typed in the wrong keyboard layout? Now you can fix it instantly!\n\n**How it works:**\n1. Select the mistyped text in any application\n2. Press `Ctrl+Shift+Space`\n3. The text is automatically converted to the correct language layout\n\n**Supported conversions:**\n- **English ↔ Persian/Farsi** (both Standard \u0026 Legacy layouts)\n- **English ↔ Arabic**\n- **English ↔ Russian**\n- **English ↔ Turkish**\n- **English ↔ Hebrew**\n\n**Smart Detection:**\n- Automatically detects source and target languages\n- Tries multiple layout variations (e.g., Persian Standard vs Legacy)\n- Works in any Windows application (Word, Notepad, browsers, IDEs, etc.)\n- Preserves clipboard contents after conversion\n\n**Example:**\n- You meant to type \"سلام\" (hello in Persian)\n- But typed \"sghl\" because the keyboard was in English\n- Select \"sghl\" → Press `Ctrl+Shift+Space` → Get \"سلام\"!\n\n### Notification Modes\n\n#### Traditional Mode\nClassic screen-positioned notifications that appear at your chosen location (corners, edges, or center). Perfect for users who prefer a fixed notification area.\n\n#### Cursor Follower Mode\nA revolutionary way to view language changes - the indicator follows your cursor in real-time! This mode:\n- Positions the language indicator near your mouse cursor\n- Updates position dynamically as you move the mouse\n- Automatically scales based on your screen resolution\n- Supports customizable offset adjustments\n- Can be persistent or auto-hide after a set duration\n- Adapts to DPI scaling on different monitors\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- Windows 10 (1809 or later) / Windows 11\n- .NET 10.0 Runtime (included in installer and portable versions)\n\n### Installation\n\n#### Option 1: Installer (Recommended)\n1. Download `KeyboardLanguageIndicator-Setup.exe` from the [Releases](https://github.com/tech-tonic-coder/keyboard-language-indicator/releases) page\n2. Run the installer\n3. Follow the installation wizard\n4. The application will start automatically and minimize to the system tray\n\n#### Option 2: Portable Version\n1. Download either `KeyboardLanguageIndicator-x64.exe` or `KeyboardLanguageIndicator-x86.exe` from the [Releases](https://github.com/tech-tonic-coder/keyboard-language-indicator/releases) page\n2. Place the executable in your preferred location\n3. Run the application - no installation required!\n\n### Quick Start\n\n1. **Launch the app** - It will run in the system tray\n2. **Switch languages** - Press your keyboard language switch shortcut (e.g., Alt+Shift)\n3. **See the notification** - A visual indicator will appear showing your current language\n4. **Try text conversion** - Type in wrong layout, select text, press `Ctrl+Shift+Space`\n5. **Configure settings** - Double-click the tray icon to open settings\n\n## ⚙️ Configuration\n\n### General Settings\n\n#### Enable/Disable Notifications\n- **Enable screen notifications** - Toggle on-screen position-based notifications\n- Works independently from the cursor follower mode\n\n#### Display Options\n- **Display Monitor** - Select which monitor shows notifications (multi-monitor setups)\n- **Show on All Monitors** - Display notifications on every connected monitor simultaneously\n- **Show on Cursor Monitor** - Automatically detect and show on the monitor containing your cursor\n- **Notification Position** - Choose from 7 positions (corners, centers, middle)\n\n#### Appearance\n- **Duration** - Set how long notifications stay visible (0.5-10 seconds)\n- **Persistent Mode** - Keep notifications visible until you press Ctrl+Q\n- **Font Size** - Adjust text size (12-48pt)\n- **Opacity** - Control notification transparency (10-100%)\n\n### Cursor Follower Settings\n\nEnable cursor follower mode for a dynamic, mouse-tracking language indicator:\n\n- **Enable Cursor Follower** - Toggle cursor-following mode on/off\n- **Persistent Mode** - Keep the cursor follower always visible (or auto-hide)\n- **Duration** - How long to show before auto-hiding (when not persistent)\n- **Offset X** - Horizontal distance from cursor (pixels)\n- **Offset Y** - Vertical distance from cursor (pixels)\n- **Opacity** - Transparency level of the cursor follower\n\nThe cursor follower is automatically:\n- Scales font size based on your screen resolution\n- Adjusts for DPI scaling on multi-monitor setups\n- Updates position in real-time (10ms intervals)\n- Recalculates dimensions when moving between monitors\n\n### Appearance Settings\n\n#### Application Theme\n- **Enable Dark Mode** - Toggle between light and dark application themes\n\n#### Notification Colors with Live Preview\n- **Default Colors** - Set default background and text colors for all languages\n- **Live Preview** - See how your notification will look before saving\n- **Test Current Colors** - Click to preview notification with selected colors\n- **Language-Specific Colors** - Assign unique colors to individual languages\n  - Select a language from the dropdown or type a custom code\n  - Choose your preferred colors using the color pickers\n  - Preview the colors before adding\n  - Click \"Add Language with Current Colors\"\n  - Edit existing language configurations\n  - Remove languages you no longer need\n\n### Language Configuration Editor\n\nManage your configured languages with an intuitive interface:\n\n1. **View configured languages** - See all languages with custom colors\n2. **Add new languages** - Select from 35+ presets or add custom codes\n3. **Edit existing languages** - Click \"Edit\" to modify colors for any configured language\n4. **Remove languages** - Delete language configurations you no longer use\n5. **Visual preview** - See color swatches for each configured language\n\n### 🆕 Text Conversion Settings (New!)\n\nConfigure the text conversion feature:\n\n- **Keyboard Shortcut** - `Ctrl+Shift+Space` (fixed for now, customization coming soon)\n- **Supported Languages** - EN, FA, AR, RU, TR, HE\n- **Test Guide** - Click \"Text Conversion Guide\" to see detailed examples\n\n### Behavior Settings\n\n- **Start with Windows** - Launch automatically on system startup\n- **Check for Updates** - Enable automatic update checking (daily)\n- **Manual Update Check** - Check for updates on demand\n- **Minimize to Tray** - Hide to system tray when minimized\n- **Close to Tray** - Keep running in the background when the window is closed\n\n## 🎯 Keyboard Shortcuts\n\n- **Ctrl+Q** - Dismiss persistent notifications and cursor follower\n- **🆕 Ctrl+Shift+Space** - Convert selected text to correct language layout\n\n## 🎨 Color Customization\n\nYou can customize colors in three ways:\n\n### 1. Default Colors\nApplied to all languages without specific settings:\n- Select colors in the color pickers\n- Click \"Test Current Colors\" to preview\n- Click \"Set as Default Colors\" to save\n\n### 2. Language-Specific Colors\nOverride defaults for specific languages:\n- Select colors in the color pickers\n- Click \"Test Current Colors\" to preview\n- Choose a language from the dropdown\n- Click \"Add Language with Current Colors\"\n- The language will be added to your configured list\n- Edit colors later using the \"Edit\" button\n\n### 3. Live Preview\nSee exactly how your notification will look:\n- Adjust colors using the color pickers\n- Click the \"Test Current Colors\" button\n- A sample notification appears on your screen\n- Fine-tune colors until perfect\n\n### Supported Languages\n\nThe app includes presets for 35+ common languages, including:\n\n**European Languages:**\n- English, Spanish, French, German, Italian, Portuguese\n- Dutch, Swedish, Danish, Norwegian, Finnish\n- Polish, Czech, Slovak, Hungarian, Romanian\n- Croatian, Slovenian, Estonian, Latvian, Lithuanian\n- Bulgarian, Greek\n\n**Middle Eastern \u0026 Asian Languages:**\n- Arabic, Persian, Hebrew, Turkish\n- Russian, Ukrainian\n- Chinese, Japanese, Korean\n- Thai, Vietnamese, Indonesian\n\nYou can also add custom language codes manually for any language not in the preset list.\n\n## 🔧 Text Conversion Examples\n\n### Example 1: English to Persian\n**Scenario:** You wanted to type \"سلام\", but the keyboard was in English mode\n\n1. You typed: `sghl`\n2. Select the text: `sghl`\n3. Press: `Ctrl+Shift+Space`\n4. Result: `سلام`\n\n### Example 2: Persian to English\n**Scenario:** You wanted to type \"hello\" but the keyboard was in Persian mode\n\n1. You typed: `اثممخ` (looks like gibberish)\n2. Select the text\n3. Press: `Ctrl+Shift+Space`\n4. Result: `hello`\n\n### Example 3: Russian to English\n**Scenario:** You wanted to type \"привет\" but the keyboard was in English mode\n\n1. You typed: `ghbdtn`\n2. Select the text\n3. Press: `Ctrl+Shift+Space`\n4. Result: `привет`\n\n### Example 4: Arabic to English\n**Scenario:** Text typed in the wrong layout\n\n1. Select mistyped text\n2. Press: `Ctrl+Shift+Space`\n3. Text automatically converts to the correct layout\n\n## 💡 Tips \u0026 Best Practices\n\n### Using Text Conversion\n- Works in any application: Notepad, Word, browsers, messaging apps, IDEs, etc.\n- The conversion is smart - it tries multiple layout variations automatically\n- Clipboard contents are preserved (restored after conversion)\n- If conversion doesn't work, check if the language pair is supported\n- For Persian: Both Standard and Legacy keyboard layouts are supported\n\n### Using Cursor Follower Mode\n- Enable persistent mode if you want constant visibility\n- Use non-persistent mode to reduce screen clutter\n- Adjust offsets to find your ideal position relative to the cursor\n- Lower opacity if you find it distracting during work\n\n### Multi-Monitor Setups\n- Use \"Show on Cursor Monitor\" for automatic monitor detection\n- Use \"Show on All Monitors\" if you switch focus frequently\n- Cursor follower works seamlessly across monitors with different DPIs\n\n### Language Colors\n- Use contrasting colors for better visibility\n- Match colors to your language preferences (e.g., green for English, blue for Spanish)\n- Use the preview feature to test colors before committing\n- Edit existing configurations to fine-tune your setup\n\n### Notifications vs Cursor Follower\n- Both can be enabled simultaneously\n- Disable screen notifications if you only want the cursor follower\n- Use screen notifications for important language switches\n- Use cursor follower for subtle, always-available language indication\n\n## 📋 System Requirements\n\n- **Operating System**: Windows 10 (1809 or later) / Windows 11\n- **Framework**: .NET 10.0 Runtime (included in installer and portable versions)\n- **Memory**: 50 MB RAM (60 MB with cursor follower active)\n- **Storage**: \n  - Installer: ~30 MB download, ~50 MB installed\n  - Portable x64: ~25 MB\n  - Portable x86: ~22 MB\n- **Display**: Any resolution (optimized for multi-monitor setups)\n- **DPI Scaling**: Fully supported on all monitors\n\n## 🔄 Updates\n\nThe application automatically checks for updates on startup (once per day). You can also manually check for updates from the Behavior or About tabs.\n\nWhen an update is available, you'll receive a notification with:\n- Current version number\n- Latest version number\n- Direct download link\n\n## 🐛 Troubleshooting\n\n### Notification not appearing\n\n- Ensure the app is running (check system tray)\n- Verify your language switching shortcut is working\n- Check that the selected monitor is connected\n- Try adjusting the notification position\n- If using cursor follower, ensure it's enabled in settings\n- Check if \"Enable screen notifications\" is turned on\n\n### Text Conversion not working\n\n- Make sure you select the text before pressing `Ctrl+Shift+Space`\n- Verify the language pair is supported (check supported conversions list)\n- Ensure the text contains characters from a supported keyboard layout\n- Try in a different application to rule out app-specific issues\n- Check Windows clipboard access permissions\n\n### Cursor follower not tracking properly\n\n- Check that \"Enable Cursor Follower\" is toggled on\n- Verify cursor follower opacity is not set to 0\n- Try adjusting X/Y offset values\n- Restart the application\n\n### Colors not changing per language\n\n- Make sure you've added the language in the Appearance tab\n- Verify the language code matches what Windows uses\n- Click \"Save\" or \"Add Language\" after making changes\n- Test with the \"Show Test Notification\" button\n\n### Cursor follower appears in the wrong position\n\n- Adjust the Offset X and Offset Y values in settings\n- The follower appears above the cursor by default\n- Positive X moves it right, positive Y moves it further up\n- Values are in pixels and can be negative\n\n### App not starting with Windows\n\n- Re-enable \"Start with Windows\" in Behavior settings\n- Check Windows Task Manager \u003e Startup tab\n- Ensure you have proper user permissions\n\n### Text conversion converts to the wrong language\n\n- The app uses the current and previous keyboard language to determine conversion direction\n- Switch to your target language keyboard before converting\n- For bidirectional pairs (like EN↔FA), make sure you're on the target keyboard layout\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n## 📄 License\n\nThis project is licensed under the GNU General Public License v3.0 - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- Built with [WPF](https://github.com/dotnet/wpf) and [.NET 10](https://dotnet.microsoft.com/)\n- UI components by [HandyControl](https://github.com/HandyOrg/HandyControl)\n- System tray integration by [Hardcodet.NotifyIcon.Wpf](https://github.com/hardcodet/wpf-notifyicon)\n\n## 📞 Support\n\n- **Issues**: [GitHub Issues](https://github.com/tech-tonic-coder/keyboard-language-indicator/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/tech-tonic-coder/keyboard-language-indicator/discussions)\n- **Email**: Contact the maintainer through GitHub\n\n## 🗺️ Roadmap\n\n### Planned Features\n- [ ] Custom keyboard shortcut configuration for text conversion\n- [ ] More language pairs for text conversion (Greek, Ukrainian, etc.)\n- [ ] Text conversion history/undo\n- [ ] Custom notification sounds per language\n- [ ] Animation effects for transitions\n- [ ] Multiple notification style presets\n- [ ] Mouse badge indicator option\n- [ ] Export/import settings profiles\n- [ ] Auto-detect and convert on paste\n\n### Completed in v4.0.0\n- [x] Intelligent text conversion with Ctrl+Shift+Space\n- [x] Support for EN↔FA, EN↔AR, EN↔RU conversions\n- [x] Smart layout detection (Persian Standard vs Legacy)\n- [x] Live color preview before saving\n- [x] Enable/disable notifications toggle\n- [x] Extensive keyboard layout detection (150+ layouts)\n- [x] Toast notifications for conversion status\n\n### Completed in v3.0.0\n- [x] Cursor follower mode with real-time tracking\n- [x] Language configuration editor\n- [x] Multi-monitor display options (all monitors, cursor monitor)\n- [x] Dynamic DPI scaling across different monitors\n- [x] Enhanced language color management\n\n## 📊 Changelog\n\n### Version 4.0.0 (Current) - 🆕 Intelligent Text Conversion Release\n**Major New Features:**\n- **Intelligent Text Conversion**: Automatically convert mistyped text with Ctrl+Shift+Space\n  - Support for EN↔FA, EN↔AR, EN↔RU, EN↔TR, EN↔HE\n  - Smart layout detection (Persian Standard vs Legacy)\n  - Works in any Windows application\n  - Preserves clipboard contents\n- **Live Color Preview**: Test notification colors before saving\n- **Notification Toggle**: Enable/disable screen notifications independently\n- **Enhanced Keyboard Layout Detection**: Support for 150+ Windows keyboard layouts\n- **Toast Notifications**: Visual feedback for conversion status\n\n**Improvements:**\n- Better About section with updated feature list\n- Comprehensive text conversion guide\n- Improved UI organization\n- Enhanced error handling for text conversion\n- Better multi-language support detection\n\n**Bug Fixes:**\n- Fixed Persian keyboard layout detection\n- Improved clipboard handling\n- Better hotkey registration\n\n### Version 3.0.1\n- Fixed \"0x0000\" display issue in terminal applications\n- Added explicit mappings for 150+ Windows keyboard layouts\n- Enhanced language detection algorithm\n- Improved fallback for unknown layouts\n\n### Version 3.0.0\n- Added cursor follower mode\n- Implemented language configuration editor\n- Added multi-monitor display options\n- Improved DPI scaling\n- Enhanced language color management\n\n### Version 2.0.0\n- Multi-monitor support\n- Customizable colors per language\n- Automatic updates\n- Dark mode support\n\n---\n\n**Made with ❤️ by [tech-tonic-coder](https://github.com/tech-tonic-coder)**\n\n⭐ If you find this project useful, please consider giving it a star!\n\n## 🎯 Use Cases\n\n- **Multilingual Writers** - Fix typing mistakes instantly when you forget to switch keyboards\n- **Translators** - Quickly convert mistyped text without retyping\n- **Developers** - Convert code comments or documentation typed in the wrong layout\n- **Students** - Stay aware of the language mode during language learning and fix mistakes easily\n- **Content Creators** - Ensure correct language input for multilingual content\n- **Customer Support** - Handle multi-language support tickets efficiently with instant text conversion\n- **Anyone who types in multiple languages** - Save time by converting instead of retyping!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftech-tonic-coder%2Fkeyboard-language-indicator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftech-tonic-coder%2Fkeyboard-language-indicator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftech-tonic-coder%2Fkeyboard-language-indicator/lists"}