В Windows можно сменить раскладку клавиатуры через командную строку (CMD) или PowerShell с помощью утилиты `PowerShell` или `rundll32`.
### **1. Смена раскладки через PowerShell (рекомендуемый способ)**
Откройте **CMD** или **PowerShell** и выполните:
```powershell
powershell -command "Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.SendKeys]::SendWait('% ')"; [System.Windows.Forms.SendKeys]::SendWait('{SCROLLLOCK}'); [System.Windows.Forms.SendKeys]::SendWait('{SCROLLLOCK}')
```
Этот метод имитирует нажатие `Alt + Shift` (стандартное сочетание для переключения раскладки).
**Альтернативный вариант (если предыдущий не работает):**
```powershell
powershell -command "$klist = Get-WinUserLanguageList; $klist.Add('ru-RU'); Set-WinUserLanguageList -LanguageList $klist -Force"
```
(Но это добавляет русский язык, если его нет, а не переключает текущую раскладку.)
---
### **2. Смена раскладки через `rundll32` (устаревший способ, может не работать в новых версиях Windows)**
```cmd
rundll32 keyboard,{default layout hotkey}
```
Где `{default layout hotkey}` — это:
- `,,0x29` для переключения (`Alt+Shift`)
- `,,0x1` для английской
- `,,0x2` для русской
Но этот метод часто не работает в Windows 10/11.
---
### **3. Использование AutoHotkey (если нужен надежный способ)**
Можно создать скрипт **AutoHotkey** (`switch_layout.ahk`):
```autohotkey
!^s:: ; Alt+Ctrl+S для переключения
Send, {Alt down}{Shift down}{Shift up}{Alt up}
return
```
Запустите его, и тогда можно переключать раскладку по `Alt+Ctrl+S`.
---
### **Вывод**
Лучший вариант — **PowerShell с `SendKeys`** (первый способ). Если не работает, попробуйте AutoHotkey или добавление языка через `Set-WinUserLanguageList`.
Если нужно переключать раскладку в **батч-файле**, используйте:
```cmd
@echo off
powershell -command "$wshell = New-Object -ComObject wscript.shell; $wshell.SendKeys('%% ')"; exit
```
Попробуйте разные методы, так как поведение может зависеть от версии Windows.
-
- Пасиба. - teap0t(23.05.2025 17:51)