A lightweight Windows utility that remaps the Win key (Left/Right) to switch keyboard layouts using your system's Alt+Shift combination.
Technically it:
- Installs a low-level keyboard hook (
WH_KEYBOARD_LL) to interceptLWin/RWin - Solo Win press (tap and release) switches keyboard layout via
SendInput(emulatingAlt+Shift) - Win + other keys (e.g.,
Win+D,Win+E,Win+L) work normally — the utility re-injects the Win key event to preserve standard Windows shortcuts
Important: Many games/anti-cheats may flag any input hooks as suspicious. Use at your own risk.
- Windows 10/11
- .NET SDK 8 (for building from source)
- Download
WinKeySwitchSetup.exefrom the latest release - Run installer → optional checkbox “Start WinKeySwitch automatically when I sign in” adds HKCU\Run autostart
# From the project directory
$env:PATH = [System.Environment]::GetEnvironmentVariable('Path','Machine') + ';' + [System.Environment]::GetEnvironmentVariable('Path','User')
dotnet build .\WinKeySwitch.csproj -c Release
Start-Process .\bin\Release\net8.0-windows\WinKeySwitch.exeThe compiled binary will be at: bin\Release\net8.0-windows\WinKeySwitch.exe
- Press Win solo (quick tap: press/release without other keys) — the keyboard layout will switch, Start menu will not open
- Win + other keys (e.g.,
Win+D,Win+E,Win+L,Win+1-9) work as usual — all standard Windows shortcuts are preserved
Two manual methods if you skip the installer checkbox:
$exe = (Resolve-Path .\bin\Release\net8.0-windows\WinKeySwitch.exe).Path
New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "WinKeySwitch" -PropertyType String -Value "`"$exe`"" -Force | Out-Null$exe = (Resolve-Path .\bin\Release\net8.0-windows\WinKeySwitch.exe).Path
$startup = "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup"
$WshShell = New-Object -ComObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$startup\WinKeySwitch.lnk")
$Shortcut.TargetPath = $exe
$Shortcut.WorkingDirectory = Split-Path $exe
$Shortcut.Save()Stop the process:
Stop-Process -Name WinKeySwitch -ErrorAction SilentlyContinueRemove from autostart (registry):
Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "WinKeySwitch" -ErrorAction SilentlyContinueRemove shortcut from Startup:
Remove-Item "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\WinKeySwitch.lnk" -ErrorAction SilentlyContinueThe application writes logs to:
%LOCALAPPDATA%\WinKeySwitch\WinKeySwitch.log
Useful for diagnostics (e.g., if SendInput returns an error).
- The utility assumes Windows layout switching is configured to use Alt+Shift
- Some applications/games may block input hooks