В Win+Space появился язык, которого вы не добавляли
Это была наша ошибка, и она исправлена. Версии до 0.7.1 могли подгрузить в систему раскладку языка, которого у вас никогда не было, — чаще всего иврит или немецкий. В «Параметрах» её не видно, поэтому и удалить там нечего. Вот как убрать её за пару минут.
Начните отсюда — в большинстве случаев этого достаточно
- Обновитесь до последней версии
Кнопка скачивания — вверху страницы. Установка поверх сохраняет все настройки. С версии 0.7.2 подгруженная старыми версиями раскладка уже не влияет на исправления, даже если ещё видна в Win+Space.
- Консоль → «Языки» → «Убрать раскладку»
Кнопка стоит у языка, которого вы не добавляли. Раскладка исчезнет из Win+Space сразу, без перезагрузки.
- Снимите галочку с этого языка и сохраните
Галочка значит «исправлять в этот язык» и настраивается отдельно от раскладки.
Посмотрите, что именно лежит в системе
Откройте PowerShell («Пуск» → наберите powershell → Enter) и выполните обе команды. Они только читают и ничего не меняют:
Get-ItemProperty 'HKCU:\Keyboard Layout\Preload'
Get-WinUserLanguageList | Select-Object LanguageTag, InputMethodTips
| Код | Раскладка |
|---|---|
| 00000409 | английская (США) |
| 00000419 | русская |
| 0000040D | иврит |
| 00000407 | немецкая |
Язык есть в списке языков Windows
Во второй команде среди LanguageTag видно he или de-DE. Его убирает и кнопка в Консоли, и «Параметры → Язык и регион → … → Удалить». Или одной командой:
$list = Get-WinUserLanguageList
$list = $list | Where-Object { ($_.LanguageTag -split '-')[0] -notin @('he','de') }
Set-WinUserLanguageList $list -Force
Затем выйдите из системы и войдите снова.
Лишняя клавиатура подвешена к вашему языку
Языки только ваши, но у одного из них в InputMethodTips стоит 0000040D или 00000407. Уберите её в «Параметры → Язык и регион → … → Параметры языка → Клавиатуры» или командой:
$list = Get-WinUserLanguageList
foreach ($l in $list) {
@($l.InputMethodTips | Where-Object { $_ -match '(0000040D|00000407)$' }) |
ForEach-Object { [void]$l.InputMethodTips.Remove($_) }
}
Set-WinUserLanguageList $list -Force
Затем выйдите из системы и войдите снова.
Раскладка есть только в реестре
В списке языков ничего лишнего, но в первой команде есть 0000040d или 00000407. Сначала попробуйте без реестра: добавьте этот язык в «Параметрах» и сразу удалите — Windows унесёт раскладку вместе с ним. Если не помогло — сохраните резервную копию и почистите реестр:
reg export "HKCU\Keyboard Layout" "$env:USERPROFILE\Desktop\keyboard-layout-backup.reg"
$key = 'HKCU:\Keyboard Layout\Preload'
$props = (Get-ItemProperty $key).PSObject.Properties |
Where-Object { $_.Name -match '^\d+$' } | Sort-Object { [int]$_.Name }
$keep = @($props | ForEach-Object { $_.Value } | Where-Object { $_ -notin @('0000040d','00000407') })
$props | ForEach-Object { Remove-ItemProperty $key -Name $_.Name }
$i = 1; foreach ($v in $keep) { New-ItemProperty $key -Name "$i" -Value $v -PropertyType String | Out-Null; $i++ }
Номера в Preload должны идти подряд с единицы, поэтому оставшиеся раскладки перенумеровываются. Затем выйдите из системы и войдите снова. Не получилось — напишите на support@neuroswitcherapp.ru и приложите вывод первых двух команд.