Skip to content

Plays an audio file sound when the Windows input language is changed. It reads it out with audio and helps users to hear, rather than see, the active input language.

License

Notifications You must be signed in to change notification settings

OneBitSoftware/OneBitSoftware.InputLanguageScreamer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

11 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎡 Input Language Screamer

A Windows application that plays language-specific audio files when you switch input languages using Alt+Shift.

NOTE: Automatically built with Claude Sonnet 4.0, no real coding.

.NET Windows License Build Release

πŸš€ Features

  • 🎯 Global Language Detection: Monitors language changes system-wide, regardless of which application has focus
  • 🎡 Custom Audio Playback: Plays language-specific MP3 files for each input language
  • πŸ”‡ Smart Fallback: Falls back to system beep if audio files are missing
  • πŸ“± System Tray Integration: Runs invisibly in the background with system tray access
  • ⚑ Lightweight: Minimal resource usage with clean architecture
  • πŸ›‘οΈ Robust Error Handling: Never crashes, always provides feedback

πŸ“‹ Requirements

  • Operating System: Windows 10/11
  • Framework: .NET 9.0 Runtime (included in self-contained builds)
  • Audio: Windows audio system

🎯 How It Works

  1. Detects Language Changes: Uses Windows API low-level keyboard hook to monitor Alt+Shift combinations
  2. Identifies Current Language: Determines the active input language from Windows
  3. Plays Corresponding Audio: Maps language names to MP3 files and plays the appropriate sound
  4. Runs in Background: Operates silently from the system tray

πŸ“ Project Structure

OneBitSoftware.InputLanguageScreamer/
β”œβ”€β”€ Desktop/
β”‚   β”œβ”€β”€ Audio/                          # Audio files directory
β”‚   β”‚   β”œβ”€β”€ English.mp3                 # English language audio
β”‚   β”‚   └── Bulgarian.mp3               # Bulgarian language audio
β”‚   β”œβ”€β”€ Program.cs                      # Application entry point
β”‚   β”œβ”€β”€ LanguageMonitorApp.cs           # System tray application
β”‚   β”œβ”€β”€ GlobalKeyboardHook.cs           # Windows API keyboard hook
β”‚   β”œβ”€β”€ LanguageAudioPlayer.cs          # MP3 audio playback
β”‚   └── Desktop.csproj                  # Project configuration
└── OneBitSoftware.InputLanguageScreamer.sln

πŸ› οΈ Installation

Option 1: Download Release (Recommended)

  1. Download the latest release from the Releases page
  2. Choose the appropriate package for your system:
    • Windows x64 (Recommended): InputLanguageScreamer-vX.X.X-win-x64.zip
    • Windows x86 (32-bit): InputLanguageScreamer-vX.X.X-win-x86.zip
    • Windows ARM64: InputLanguageScreamer-vX.X.X-win-arm64.zip
    • Portable (Minimal): InputLanguageScreamer-vX.X.X-portable.zip
  3. Extract the ZIP file to your desired location
  4. Add your MP3 audio files to the Audio folder
  5. Run Desktop.exe

Option 2: Build from Source

# Clone the repository
git clone https://github.com/OneBitSoftware/OneBitSoftware.InputLanguageScreamer.git
cd OneBitSoftware.InputLanguageScreamer

# Build the project
dotnet build --configuration Release

# Publish as single executable
dotnet publish Desktop/Desktop.csproj --configuration Release --output ./publish

πŸš€ Automated Releases

This project uses GitHub Actions for automated building and releasing:

Creating a New Release

  1. Tag a new version: git tag v1.0.1 && git push origin v1.0.1
  2. Automatic build: GitHub Actions will automatically build for all platforms
  3. Release creation: A new GitHub release will be created with all packages
  4. Multi-platform support: Builds for Windows x64, x86, and ARM64

Continuous Integration

  • Every push/PR: Automatic build verification
  • Quality checks: Code builds successfully on Windows
  • Status badges: Build status visible in README

🎡 Adding Audio Files

  1. Create MP3 files named after your input languages:

    • English.mp3 for English
    • Bulgarian.mp3 for Bulgarian
    • Spanish.mp3 for Spanish
    • etc.
  2. Place them in the Audio folder next to the executable

  3. The application will automatically detect and play the appropriate file when you switch languages

Supported Audio Formats

  • Primary: MP3 (recommended)
  • Fallback: System beep if MP3 files are missing

πŸš€ Usage

  1. Start the Application: Run Desktop.exe
  2. System Tray: The app will appear in your system tray
  3. Switch Languages: Use Alt+Shift to change input languages
  4. Hear Audio: The corresponding MP3 file will play
  5. Exit: Right-click the system tray icon and select "Exit"

βš™οΈ Configuration

Language Mapping

The application automatically maps Windows input languages to audio files:

Windows Language Audio File
English (United States) English.mp3
Bulgarian Bulgarian.mp3
Spanish Spanish.mp3
French French.mp3

Custom Languages

To add support for additional languages:

  1. Add the corresponding MP3 file to the Audio folder
  2. Name it using the English name of the language
  3. The application will automatically detect it

πŸ—οΈ Architecture

Core Components

  • LanguageMonitorApp: Main application context managing system tray
  • GlobalKeyboardHook: Windows API integration for global keyboard monitoring
  • LanguageAudioPlayer: MP3 playback using NAudio library
  • Program: Application entry point

Dependencies

  • NAudio: High-quality audio playback library
  • .NET Windows Forms: System tray and UI components
  • Windows API: Low-level keyboard hook functionality

πŸ”§ Development

Prerequisites

  • Visual Studio 2022 or VS Code
  • .NET 9.0 SDK
  • Windows 10/11

Building

# Debug build
dotnet build

# Release build
dotnet build --configuration Release

# Run locally
dotnet run --project Desktop/Desktop.csproj

Testing

  1. Build the application
  2. Add test MP3 files to the Audio folder
  3. Run the application
  4. Switch input languages using Alt+Shift
  5. Verify audio playback

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • NAudio: Excellent .NET audio library
  • Microsoft: Windows API documentation and .NET framework
  • Community: Feedback and feature suggestions

πŸ“ž Support

πŸ”„ Changelog

v1.0.0 (2025-01-16)

  • Initial release
  • Global language change detection
  • MP3 audio playback support
  • System tray integration
  • Support for English and Bulgarian languages

Made with ❀️ by OneBit Software

About

Plays an audio file sound when the Windows input language is changed. It reads it out with audio and helps users to hear, rather than see, the active input language.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages