Поддержка
В Win+Space появились языки, которых вы не добавляли
Это наша ошибка, и мы её исправили. Версии NeuroSwitcher до 0.7.1 при попытке исправить текст могли подгрузить в систему раскладку языка, которого у вас никогда не было — чаще всего иврит или немецкий. Такая раскладка появляется в переключателе Win+Space, но не попадает в список языков Windows, поэтому в «Параметрах» её и нечего удалить. Ниже — как убрать её за пару минут.
Быстрый путь — начните отсюда
В большинстве случаев хватает этого, и никакие команды не нужны.
Начиная с версии 0.7.2 приложение такие остатки больше не использует. Язык считается доступным, только если Windows хранит его постоянно — раскладку, подгруженную старой версией в текущий сеанс, приложение теперь игнорирует. Даже если она ещё видна в Win+Space, на ваш текст она уже не влияет: лишний язык не предлагается в подсказках и не мешает исправлять раскладку. Шаги ниже убирают её из системы совсем, но исправления работают правильно и до этого.
- Обновитесь до 0.7.2 или новее. Свежая версия — на главной странице. Установка поверх сохраняет все ваши настройки; текущую версию видно в Консоли внизу боковой панели.
- Откройте Консоль → раздел «Языки». У языка, которого вы не добавляли, будет кнопка «Убрать раскладку». Нажмите её — раскладка исчезнет из Win+Space сразу, без перезагрузки.
- Снимите галочку с этого языка в том же разделе и сохраните. Галочка означает «исправлять в этот язык» и настраивается отдельно от раскладки.
Если обновляться прямо сейчас не хочется: закройте NeuroSwitcher через значок в трее и перезагрузите компьютер. Раскладка, подгруженная старой версией, часто нигде не сохраняется и после перезагрузки исчезает сама — при условии, что старое приложение больше не запускается.
Почему так вышло
Чтобы исправить текст, набранный не в той раскладке, приложение должно переключить раскладку в активном окне. До 0.7.1 оно делало это через функцию Windows LoadKeyboardLayoutW. Название обманчиво: функция не «берёт» раскладку из установленных, а устанавливает её, если её не было.
Пока в системе есть все нужные языки, разницы не видно. Но стоило приложению ошибиться и решить, что перед ним иврит, оно просило раскладку иврита — и Windows её создавала. У человека, никогда не имевшего дела с ивритом, в переключателе появлялся иврит.
Такая раскладка живёт в стороне от списка «Предпочитаемые языки»: Win+Space её показывает, «Параметры → Время и язык → Язык и регион» — нет. Отсюда и тупик, в который упирались все, кто пробовал удалить её обычным способом.
В 0.7.1 мы убрали саму причину: приложение больше ничего не устанавливает и переключается только на раскладки, которые у вас уже есть. Языка нет в системе — значит, исправлять в него нечего, и это честно: набирать на нём вы всё равно не могли. В 0.7.2 добавили вторую половину — кнопку «Убрать раскладку», которая разбирает и то, что осталось от старых версий.
Если раскладка осталась: что именно у вас лежит
Раскладка может держаться в системе тремя разными способами, и убираются они по-разному. Сначала посмотрите, какой у вас случай. Откройте PowerShell (кнопка «Пуск» → наберите powershell → Enter) и вставьте обе команды сразу. Они только читают и ничего не меняют:
Get-ItemProperty 'HKCU:\Keyboard Layout\Preload'
Get-WinUserLanguageList | Select-Object LanguageTag, InputMethodTips
Коды раскладок, которые пригодятся при чтении вывода:
Случай А. Язык есть в списке языков Windows
Во второй команде среди LanguageTag видно he или de (de-DE).
Значит, язык действительно попал в список Windows — его убирает и кнопка «Убрать раскладку» в Консоли, и «Параметры → Язык и регион → „…“ напротив языка → Удалить». То же самое одной командой:
$list = Get-WinUserLanguageList
$list = $list | Where-Object { ($_.LanguageTag -split '-')[0] -notin @('he','de') }
Set-WinUserLanguageList $list -Force
Затем выйдите из системы и войдите снова.
Случай Б. Лишняя клавиатура подвешена к вашему языку
В списке языков только ваши (en-US, ru, …), но у кого-то из них в 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
Затем выйдите из системы и войдите снова.
Случай В. Раскладка есть только в реестре
В списке языков ничего лишнего, но в первой команде среди значений 1, 2, 3… стоит 0000040d или 00000407. Это тот самый случай, из-за которого «Параметры» бессильны.
Сначала попробуйте без реестра. «Параметры → Язык и регион → Добавить язык» → добавьте иврит (галочки «языковой пакет», «распознавание речи», «рукописный ввод» можно снять) → и сразу удалите его же через «…» → «Удалить». Windows уносит раскладку вместе с языком. То же самое с немецким.
Если не помогло — правка реестра. Сначала резервная копия:
reg export "HKCU\Keyboard Layout" "$env:USERPROFILE\Desktop\keyboard-layout-backup.reg"
Затем чистка. Номера в Preload должны идти подряд начиная с единицы, поэтому оставшиеся раскладки перенумеровываются:
$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++ }
Get-ItemProperty $key
В выводе последней команды должны остаться только ваши раскладки. Выйдите из системы и войдите снова.
Если раскладка вернулась
Значит, её кто-то добавляет заново. Проверьте по порядку:
- Старая версия NeuroSwitcher в автозагрузке. «Диспетчер задач → Автозагрузка»: запись должна быть одна. Если в системе стоят две сборки, старая продолжает делать своё.
- Другая программа. Мы не единственные, кто так делал: похожим образом ведут себя некоторые переключатели раскладки и игровые утилиты. Если NeuroSwitcher удалён, а язык возвращается — дело не в нас, и это тоже полезно знать.
- Синхронизация параметров Windows. При входе под учётной записью Microsoft языковые настройки могут приезжать с другого компьютера. «Параметры → Учётные записи → Резервное копирование Windows» → отключите синхронизацию языковых параметров и повторите уборку.
Не получилось — напишите нам
Пришлите вывод двух команд из раздела «Что именно осталось» и версию приложения из Консоли. Этого достаточно, чтобы ответить по делу, а не общими словами.
support@neuroswitcher.app — или через форму обратной связи.
И спасибо тем, кто написал об этом вместо того, чтобы молча удалить программу. Обе правки — и в 0.7.1, и в 0.7.2 — появились из таких писем.
Скачать свежую версию