76

Обновление: это длинный пост, вы можете сразу перейти к ответу ниже


Примечание . Быстрый список языков относится к списку на снимке экрана ниже, доступному через ярлык Win + Пробел

У меня есть два языка для проверки орфографии в моей системе:английский (США) и французский (Швейцария), но, несмотря на то, что оба языка правильно настроены с помощью клавиатуры "Швейцарский французский", ввод с клавиатуры США продолжает появляться в этом списке:

Вот настройки для английского (США) языка, вы можете видеть только ввод "Swiss French":

То же самое для Français (Suisse), единственный ввод - "швейцарский французский":

На панели управления оба также установлены как швейцарский французский:

Все мои настройки настроены на использование "списка языков":

Вот несколько вещей, которые я уже попробовал:

  • Мне уже удалось удалить это с помощью какой-то языковой гимнастики конфигурации, добавляя и удаляя языки, она всегда в конечном итоге возвращается
  • Я уже сделал это: https://superuser.com/a/484595/168632
  • Там нет упоминания о клавиатуре США в моих настройках реестра:

Пожалуйста, помогите, я в отчаянии, это мой третий компьютер с Windows 10, и все они делают то же самое.

9 ответов9

74

Чтобы устранить эту проблему, удалите папку Preload реестра и выйти или перезагрузить компьютер:

HKEY_USERS\.DEFAULT\Keyboard Layout\Preload

Эта папка, кажется, является некоторым устаревшим остатком, который содержит неуказанные пользователем раскладки клавиатуры, которые будут добавлены в список языков при входе пользователя. Хотя само исправление работает через перезапуски, на момент написания статьи есть вещи, которые возвращают эту надоедливую папку, вот некоторые, с которыми я столкнулся лично:

  • Удаленный рабочий стол к компьютеру с американским макетом
  • Win 10 Anniversary update
  • Использование той же учетной записи Microsoft на другом ПК, на котором все еще есть эта проблема

Всякий раз, когда проблема возвращается, эту папку реестра необходимо удалить снова.

Изменить: я создал текстовый файл RemovePreload.reg со следующим содержанием, таким образом, это исправление может быть легко повторно применено каждый раз без навигации по реестру:

Windows Registry Editor Version 5.00

[-HKEY_USERS\.DEFAULT\Keyboard Layout\Preload]

Чтобы использовать это, сохраните его в текстовом файле и измените расширение с .txt на .reg . Затем, когда он вернется, вы можете просто дважды щелкнуть по нему и перезапустить или выйти.

47

На самом деле, решение довольно простое и не требует редактирования реестра!

  • Перейдите в раздел « Регион и язык» (ранее назывались "Языковые настройки"), нажмите « Английский (США)» и выберите « Параметры».

  • Если вы видите "Клавиатуру США" там, удалите ее, и все готово.

  • ОДНАКО, если вы его там не видите, нажмите « Добавить клавиатуру», добавьте "Клавиатура США", затем удалите эту клавиатуру, и все готово.

Я понял это после проб и ошибок, пробуя разные вещи, у меня была та же проблема.

4

У меня не было 409 записей в реестре (см. Принятый ответ). Шаги, которые я предпринял, чтобы удалить английский (США) из меню быстрого выбора:

  1. Откройте "Языковые настройки" в меню быстрого выбора.
  2. Добавить английский (США) язык.
  3. Удалить английский (США) язык.

Совет: В Панели управления \ Все элементы панели управления \ Язык \ Расширенные настройки -> Изменить горячие клавиши языковой панели вы можете установить действие горячей клавиши для "Между языками ввода" на «(Нет)», чтобы избежать случайного переключения раскладки клавиатуры.

4

Это не постоянное исправление, а удобный пакетный файл, который добавляет раскладку клавиатуры en-US и затем удаляет ее. (Вы должны сначала добавить его, чтобы иметь возможность удалить его.)

Remove_en-US.xml:

<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">

    <!--User List-->
    <gs:UserList>
        <gs:User UserID="Current"/>
    </gs:UserList>

    <!--input preferences--> 
    <gs:InputPreferences>
        <!--add en-US keyboard input-->
        <gs:InputLanguageID Action="add" ID="0409:00000409"/>
        <!--remove en-US keyboard input-->
        <gs:InputLanguageID Action="remove" ID="0409:00000409"/>
    </gs:InputPreferences>

</gs:GlobalizationServices>

Remove_en-US.bat:

control intl.cpl,, /f:"%CD%\Add_en-US.xml"

Затем вы можете просто запустить Remove_en-US.bat чтобы удалить макет. У меня есть ярлык для этого командного файла в моих программах запуска.

Здесь 0409 - это locale ID а 00000409 - значения раскладки клавиатуры. Список значений locale ID:keyboard layout value см. По адресу https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-8.1-and-8/hh825682(v=win. 10)

4

Theres есть два места для конфигурации клавиатуры в Windows 10, панель управления -> Язык

Другой в настройке, как ваш скриншот

Вносит изменения и там, это должно исправить проблему.

2
  1. Панель управления
  2. Часы, язык и регион
  3. язык
  4. Изменить методы ввода
  5. Расширенные настройки
  6. Переопределить для метода ввода по умолчанию
  7. Выберите предпочитаемый макет (вместо "Использовать список языков")
  8. Сохранить

Скриншот настроек ввода -> Расширенные настройки

2

Ответ Микеля выше исправляет это .... но на тот случай, если это появится у вас (как и у меня): возможно, у вас есть собственный ярлык AutoHotkey для изменения раскладки клавиатуры?

Проблема заключалась в том, что мой скрипт AutoHotkey содержал следующие строки кода:

; This should be replaced by whatever your native language is. See 
; http://msdn.microsoft.com/en-us/library/dd318693%28v=vs.85%29.aspx
; for the language identifiers list.
el := DllCall("LoadKeyboardLayout", "Str", "00000408", "Int", 1)
en := DllCall("LoadKeyboardLayout", "Str", "00000409", "Int", 1

Так что, хотя на моем рабочем столе это будет работать прекрасно и переключиться с английского (раскладка клавиатуры в Великобритании) на греческий (раскладка клавиатуры GR) и наоборот, на моем ноутбуке с клавиатурой в США этот скрипт будет отвечать за дополнительные раскладки, появляющиеся из синий на моем переключателе языка.

Надеюсь, это поможет!

0

В юбилейном выпуске Windows 10 содержится новая "функция", в которой предполагается, что региональные и языковые настройки имеют обязательную раскладку клавиатуры. Эти макеты не могут быть удалены через графический интерфейс настроек.

Но я смог преодолеть это с помощью PowerShell с помощью такого скрипта:

$1=New-WinUserLanguageList en-US
$1.Add("nl-NL")
$1.Add("de-DE")
Set-WinUserLanguageList $1

Скопируйте и вставьте его в окно PowerShell.

Демонстрация выше настраивает макет США по умолчанию с дополнительными макетами NL и BE. Отрегулируйте по мере необходимости.

0

На самом деле кажется, что проблема связана с тем же ключом в вашем реальном профиле пользователя (HKEY_USERS\S-1-5-21 -...\ Раскладка клавиатуры \ Preload), а не только HKEY_USERS\.ПО УМОЛЧАНИЮ \ Раскладка клавиатуры \ Предварительная загрузка.

Я могу повторить это довольно последовательно - когда я добавляю ключ 00000429 (персидский), например, туда и перезагружаюсь, я автоматически добавляю персидскую клавиатуру, и когда я удаляю ее и перезагружаю, перс больше не существует.

В итоге вы можете убедиться, что у вас нет нежелательных языков ни в HKEY_USERS\.DEFAULT\Keyboard Layout\Preload или HKEY_USERS\S-1-5-21-...\Keyboard Layout\Preload .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .