Windows раскладка клавиатуры реестр

Несколько раз в Windows 10 замечал странный баг, когда в списке раскладок клавиатуры языковой панели появляются лишние языки. Например, у меня на ноутбуке было установлено 2 языка: русский, английский. Но после очередного обновления Windows 10, в списке языков появились еще два дополнительных языка – English (United Kingdom) и English (Canada), хотя я их не добавлял. Теперь в списке раскладок клавиатуры у меня отображается четыре языка. Причем Windows не дает удалить дополнительные языки (кнопка Remove в языковой панели неактивна). При переключении языков клавишами
Shift+Alt
, или через языковую панель в трее, приходится переключаться между 4 раскладками клавиатуры вместо 2, что очень неудобно!

после установки WIndows 10 1803 появились дополнительные языки

Рассмотрим, как удалить такие неудаляемые раскладки клавиатуры в Windows 10 и Windows 11.

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

Первый раз баг с неудаляемой раскладкой клавиатуры появился после апгрейда до Windows 10 1803 (в этом билде было много других сюрпризов, например дополнительный раздел восстановления, который появился после обновления).

Баг проявляется, если добавить дополнительный язык, который использует тот же базовый язык, что и текущий язык отображения Windows. Такой дополнительный язык язык удалить нельзя.

К примеру, если английский язык (United States) является текущим языком интерфейса Windows, то после добавления английского языка (United Kingdom) вы не сможете удалить оба этих языка из списка предпочтительных. И, конечно, очень неудобно, что в языковой панели в системно трее (области уведомлений) появился лишний ненужный язык.

С помощью команды lpksetup вы не сможете удалить дополнительные языки из системы, т.к. этих языковых пакетов в Windows не установлено:

lpksetup /u en-gb
lpksetup /u en-ca

Удаление лишнего языка в Windows 10 с помощью PowerShell

Удалить ненужный дополнительный язык можно только с помощью PowerShell.

  1. Запустите Windows PowerShellс правами администратора;
  2. Выведите список установленных в Windows 10 языков пользователя командой:
    Get-WinUserLanguageList

    Get-WinUserLanguageList

  3. Запомните значение LanguageTag для предпочитаемого языка. К примеру, Ваш предпочитаемый язык English (United States):
    LanguageTag = en-US
  4. Сохраните значение предпочитаемого языка в переменную:
    $1=New-WinUserLanguageList en-US
  5. Теперь можно установить данный язык в качестве основного, удалив все остальные дополнительные языки:
    Set-WinUserLanguageList $1
  6. Клавишей Y нужно подтвердить удаление дополнительных языков.
    Set-WinUserLanguageList удаление дополнительных языков

  7. Убедитесь, что все дополнительные языки клавиатуры пропали.

Если вы хотите оставить в Windows несколько языковых раскладок клавиатуры, можно удалить только ненужные языки. К примеру, вы хотите удалить языки с LanguageTag en-Gb и zh-Hans-CN.

$LanguageList = Get-WinUserLanguageList
$DeleteLang = $LanguageList | where LanguageTag -eq "en-Gb"
$LanguageList.Remove($DeleteLang)
Set-WinUserLanguageList $LanguageList –Force

Для удаления китайского языка, замените вторую строку на:

$DeleteLang = $LanguageList | where LanguageTag -eq "zh-Hans-CN"

Или вы можете указать список языков, которые нужно оставить:

$1=New-WinUserLanguageList en-US
$1.Add("eu-US")
$1.Add("ru")

Set-WinUserLanguageList $1

Закройте консоль PowerShell и убедитесь, что все лишние языки в языковой панели Windows исчезли.

Как удалить лишнюю языковую раскладку через реестр Windows?

Если дополнительные языки удалились из списка языков ввода, но все еще отображаются в раскладках клавиатуры, нужно вручную удалить их из реестра.

  1. Запустите
    regedit.exe
    с правами администратора;
  2. Перейдите в ветку реестра
    HKEY_USERS\.DEFAULT\Keyboard Layout\Preload
    . Здесь отображается список языков, доступных на экране входа в систему;
  3. В ветке
    HKEY_CURRENT_USER\Keyboard Layout\Preload
    отображаются активные раскладки клавиатуры текущего пользователя. Например, 00000419 – русская раскладка, 0000409 – английская раскладка, 00000407 – немецкий и т.д.;

    раздел реестра keyboard layout preload содержит список включенных раскладок клавиатуры

  4. Удалите все ненужные языковые раскладки из реестра. Если нужно, измените нумерацию параметров реестра (названия параметров должны быть последовательными и начинаться с 1).

После этого ненужный язык пропадет из списка языков ввода.

Если дополнительные раскладки клавиатуры появляются на рабочем столе в удаленной RDP/RDS сессии, вы можете заблокировать передачу локальных раскладок клавиатуры на удаленном хосте с помощью параметра реестра:

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout" /v IgnoreRemoteKeyboardLayout /t REG_DWORD /d 1

Если вы уверены, что вам не нужна определенная раскладка, вы можете ее полностью заблокировать. Полный список раскладок клавиатуры хранится в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\.

Например, вы хотите заблокировать языковую раскладку
00000404 (Chinese (Traditional) - US Keyboard)
.

  1. Сначала удалите лишние языки с помощью PowerShell (описано выше);
  2. Найдите подраздел 00000404 в указанной ветке реестра и переименуйте его в 00000404-no;
    полностью удалить язык ввода в Windows

  3. Перезагрузите Windows;
  4. Проверьте, что указанная раскладка клавиатуры больше не отображается.

Решение проблемы одно: создаём скрипт (PowerShell ISE), в который добавляем нужные языки через запятую.

Вызываем реестр через Win+R командой regedit!

1. Я создал в корне диска С:/fix_languages.ps1

Get-WinUserLanguageList
Set-WinUserLanguageList -LanguageList ru,pl,en-US -Confirm
Set-WinUserLanguageList -LanguageList ru,pl –Confirm

Команды просто добавят в список языков ваши. Захотите ещё один язык, добавляем новый язык (в последнюю строчку!) после запятой и активируем снова: …ru, pl, ch … – пример!
Но! Во второй строчки постарайтесь ввести тот язык, который у вас прилетает из космоса (который хотите удалить).

2. Идём в реестр, по пути:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
И добавляем строковый параметр с путём (кавычки необязательно): «‪C:\fix_languages.bat»‬‬‬‬
Название любое.
Путь должен быть ваш. При загрузке всё сработает, но можно вызывать вручную из каталога.
Потом! Выделяем всё и нажимаем F8! Ну то есть делаем это вручную!
Всё…
Всё, что можно сделать.
Можете, конечно, ходить в панель управления, добавлять язык за каждым разом и удалять.
Нет другого варианта. Чистка реестра и выдуманные строковое параметры вам не помогут!
Это проблема системы, не ваша.

В Windows 11 скрипты как-то ещё работают, раз на 2. То сработает, то нет.
Приходится запускать его вручную. Здесь скрипты вообще не работают.
PowerShell сделан таким образом, чтобы пользователь всегда запускал его вручную.
Вот когда, наконец-то, соединят CMD и PowerShell, что является полным бредом, будут скрипты работать. Пускай удаляют CMD, мы будем сидеть на PowerShell и будем счастливы.
CMD оставили только потому, что он простой и он им нравиться! Они его просто не бояться…
А пока предлагаю написать несколько потоков для связи CMD и PowerShell, чтобы данная программа запускалась автоматически и сама себя выполняла. Ну как вам?
Нет сегодня системы. Есть только радио!

Ещё добавлю: забудьте про Linux. Хватит мучаться с ним. Это система СЛОМАНА!
Linux написан на JAVA. Там JVM подключается, а JVM не работает. Их виртуальная машина изначально работала плохо по той причине, что JAVA язык несовершенный (испорченный с самого начала). Здесь ничего не поделать, нужно просто писать новую систему на новом языке. Моё предложение: С !
Так вот Android и iOs, MacOS (~ Linux) туда же… Там тоже JVM.
Вспоминаем историю с дохлым Symbian (изначально, в проекте: Deli). Туда тоже запихнули JVM и на теперешний момент эта система не работает.
Microsoft передаем привет, потому что данную проблему они не могут решить с 1998 года, ещё с Windows Net x86.

Вы тут: Главная Popular Как удалить неудаляемые языки и раскладки клавиатуры в Windows

В чате @winsiders участник Kato пожаловался на необычную проблему после обновления до Windows 10 1803. Изначально у него в системе было три языка – английский (US), русский и украинский, а после обновления добавилось еще два английских – United Kingdom и Canada, которые не удалялись в Параметрах (кнопка Remove недоступна). Соответственно, эти языки появлялись в списке раскладок клавиатуры, хотя в настройках их не было.

PowerShell Language

[+] Сегодня в программе

Теория

В общем случае, можно удалить любой язык, который не используется по умолчанию. Например, если в системе только английский и русский языки, то первый можно удалить, если основным назначен второй. При этом неважно, каким был исходный язык системы (дистрибутива), что легко определяется в PowerShell командой:

(Get-CimInstance Win32_OperatingSystem).oslanguage

Команда выводит идентификатор языка, где 1033 – английский (US), 1049 – русский, остальные тут в десятичном виде или у Microsoft в шестнадцатеричном (вставляйте значения в калькулятор программиста).

На проблемной ОС эта команда выдала 2057, что соответствует English (United Kingdom). В сочетании с картиной из параметров это было очень странно, потому что у языка дистрибутива никаких языковых пакетов быть не должно, поскольку он и так есть в системе.

Для начала мы попытались удалить языковые пакеты UK и Canada командами lpksetup. Однако к успеху это ни привело, что намекало на фактические отсутствие этих языковых пакетов, но не приближало к решению проблемы фантомных языков. Пришлось зайти с черного хода.

Удаление неудаялемых языков

У PowerShell есть два командлета для управления языками пользователя – Get-WinUserLanguageList и Set-WinUserLanguageList. Первый умеет получать список языков, а второй задавать его. В PowerShell список соответствовал картине в параметрах.

PowerShell Language

Из справки второго командлета не вполне очевидно, как удалить ненужные языки. Зато она дает достаточно толстый намек на то, что вывод первого командлета представляет собой массив. Это можно использовать во благо. Нам нужны только первые три языка из списка.

$List = Get-WinUserLanguageList
Set-WinUserLanguageList $($list[0], $list[1], $list[2]) -Force
Get-WinUserLanguageList

Первая команда помещает в переменную массив из списка языков, а вторая задает в качестве текущих языков первые три элемента массива. При этом остальные языки удаляются! Третья команда выводит список языков для проверки.

PowerShell Language

Решено! В который уже раз PowerShell позволяет элегантно решить задачу без запредельных усилий. Если будете экспериментировать под учетной записью Microsoft, отключите синхронизацию языковых параметров во избежание нежелательных эффектов (я словил несколько странностей :).

Удаление неудаялемых раскладок клавиатуры

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

Игнорирование дистанционных раскладок

Примените твик и перезагрузитесь. См. также пост в канале Telegram с кратким объяснением и готовым REG-файлом.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"IgnoreRemoteKeyboardLayout"=dword:00000001

Удаление раскладок из разделов Preload

HKEY_USERS\.DEFAULT\Keyboard Layout\Preload
HKEY_CURRENT_USER\Keyboard Layout\Preload

Копирование языковых параметров

Читатель Yaroslav Chernousov сообщил, что после установки раскладки Бирмана ненужные раскладки возвращались даже после их удаления из разделов Preload. Ему помогло копирование текущих языковых параметров в экран приветствия / системные учетные записи и новые учетные записи пользователей. Win + Rintl.cpl — дальше на картинке.

Удаление раскладок из системы

Это подходит в случае, если раскладка не нужна в принципе. Раскладки прописаны в разделе

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\<LCID>

Нужно удалять подраздел с нежелательной раскладкой.

Удаление раскладки после смены кодовой страницы (языка для неюникодных программ)

В современных Windows при смене кодовой страницы (например, с английской на русскую) автоматически добавляется для всех пользователей и метод ввода этого языка. Причем сам язык не добавляется! Однако в большинстве случаев этот язык уже установлен у пользователей, поэтому они ничего не замечают. Но бывает иначе. Варианты решения:

  • Добавить в параметрах такой же язык, как установлен для кодовой страницы, а затем удалить его. В результате удаляется и ненужная раскладка. Самый простой способ, но у одного из читателей после перезагрузки раскладка возвращалась.
  • Добавлять и тут же удалять язык скриптом из автозагрузки. Прием против лома — возвращения раскладки после перезагрузки.
  • Заменить в языке проблемный метод ввода на несуществующий. Элегантное решение, недоступное в графическом интерфейсе.

В Windows 10 1803 языковые настройки практически полностью перекочевали из классической панели управления в Параметры (исключение составляет классическое окно с настройками сочетаний клавиш и языковой панели). В связи с этим я обновил статью про 6 языковых настроек, которые могут поставить вас в тупик в контексте изменившегося интерфейса.

После очередных «волшебных» обновлений MS появилась раскладка клавиатуры RUS US (Windows 2012, Windows 8.1)

Для удаления раскладки выполним следующее:
Заходим в Панель управления -> Язык -> Дополнительный параметры
В поле Переопределение языка интерфейса Windows ставим — русский
В поле Переопределение метода ввода по умолчанию ставим — английский
Далее перелогиниваемся.

Как решить проблему с лишней раскладкой РУС US раз и навсегда

При подключении, к сожалению я не нашёл настроек, передавать ли раскладки с клиента на сервер, но нашёл интересный параметр, отвечающий за приём этих перенаправлений раскладки со стороны сервера. Хранится он в реестре, в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
Параметр называется IgnoreRemoteKeyboardLayout, который так и переводится «Игнорировать удалённые раскладки клавиатуры». Соответственно указывая ему параметры 0 или 1 мы выключаем его или включаем. По умолчанию он выключен, а значит он не игнорирует раскладки и принимает их с клиентов. Если на серверы уже добавлены обе раскладки (РУС и ENG), то и смысла в добавлении клиентских не имеется. Поэтому включаем игнорирование.

Делается это через реестр.

Подключаемся к удалённому рабочему столу
Нажимаем кнопку Пуск
вводим regedit
справа выбираем Запуск от имени администратора
открываем путь HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
создаём параметр IgnoreRemoteKeyboardLayout
для этого нажимаем справа Правой Кнопкой Мышки
выбираем Создать
далее Параметр DWORD (32 бита)
Новый параметр #1 переименовываем в IgnoreRemoteKeyboardLayout
меняем его значение с 0 на 1, открыв его двойным щелчком
закрываем все программы, сохраняем документы
завершаем сеанс, заново переподключаемся.
Теперь у вас только русская раскладка РУС и английская ENG

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Подходят ли драйвера от windows vista к windows 7
  • Windows 7 какого года программа
  • Настройка taskbar windows 11
  • Dowland windows 10 official
  • Regmon for windows 10