NeuroSwitcher Скачать
← NeuroSwitcher Поддержка

В Win+Space появился язык, которого вы не добавляли

Это была наша ошибка, и она исправлена. Версии до 0.7.1 могли подгрузить в систему раскладку языка, которого у вас никогда не было, — чаще всего иврит или немецкий. В «Параметрах» её не видно, поэтому и удалить там нечего. Вот как убрать её за пару минут.

Быстрый путь

Начните отсюда — в большинстве случаев этого достаточно

  1. Обновитесь до последней версии

    Кнопка скачивания — вверху страницы. Установка поверх сохраняет все настройки. С версии 0.7.2 подгруженная старыми версиями раскладка уже не влияет на исправления, даже если ещё видна в Win+Space.

  2. Консоль → «Языки» → «Убрать раскладку»

    Кнопка стоит у языка, которого вы не добавляли. Раскладка исчезнет из Win+Space сразу, без перезагрузки.

  3. Снимите галочку с этого языка и сохраните

    Галочка значит «исправлять в этот язык» и настраивается отдельно от раскладки.

Не хочется обновляться прямо сейчас? Закройте NeuroSwitcher через трей и перезагрузите компьютер: подгруженная раскладка часто нигде не сохраняется и исчезает сама.
Если раскладка осталась

Посмотрите, что именно лежит в системе

Откройте 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 и приложите вывод первых двух команд.