Windows server 2019 раскладка клавиатуры в rdp сеансе

подключившегося к серверу появляется в сеансе лишняя раскладка клавиатуры РУС-US, которая мешает переключению с русского на английский язык. Давайте решим эту

rds farm logoДобрый день! Уважаемые читатели и гости IP блога Pyatilistnik.org. В прошлый раз мы с вами разобрали причины черного экрана на терминальной ферме Windows Server 2012 R2, многим статья оказалась полезной. Сегодня я вам покажу еще одну не приятную вещь, которую вы можете повстречать на RDS-фермах и терминалах, начиная от Windows Server 2008 R2 и вплоть до сервера 2019, проблема заключается в том, что у человека подключившегося к серверу появляется в сеансе лишняя раскладка клавиатуры РУС-US, которая мешает переключению с русского на английский язык. Давайте решим эту проблему.

Описание проблемы с раскладкой

И так есть терминальная RDS-ферма, построенная на Windows Server 2012 R2, где работает около 1500 человек. В какой-то из рабочих дней в техническую поддержку обратились несколько сотрудников, с таким странным поведением удаленного рабочего стола на терминале, связано это было с некой третьей раскладкой клавиатуры. Подключившись к теневую сессию данного пользователя я увидел вот такую картину, в системной области уведомления присутствовала лишняя раскладка РУС-US (Russian-US Keybord).

третья раскладка РУС-US на терминальном сервере-01

Такой же глюк я поймал на другом из серверов, на окне авторизации пользователя, где так же при вводе английских символов, почему-то писались русские и так же присутствовала лишняя раскладка РУС-US (Русский-США клавиатура)

третья раскладка РУС-US на Экране авторизации

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

третья раскладка РУС-US на терминальном сервере-03

Как решить проблему с левыми клавиатурами

Понятно, что заставлять всех пользователей иметь по умолчанию английскую клавиатуру будет заставлять не совсем корректно, они же не администраторы. Мы пойдем в обход, как говорил один персонаж детских сказок. Мы будем делать манипуляции непосредственно на сервере к которому идет удаленное RDP подключение. Логинимся на сервер с правами администратора и открываем реестр Windows, через окно выполнить.

Запуск редактора реестра

Переходим в нем в ветку:

HKLMSystemCurrentControlSetControlKeyboard Layout

Тут вам необходимо создать отдельный ключ типа DWORD32

Создаем ключ реестра решающий проблему третьей раскладки

Имя у данного ключа должно быть IgnoreRemoteKeyboardLayout, и значение должно стоять 1 (Подробнее про параметр можно почитать на Microsoft https://support.microsoft.com/ru-ru/help/924852/how-the-regional-and-language-options-settings-in-windows-server-2003)

третья раскладка РУС-US на терминальном сервере-06

Для лентяев, кто не хочет сам лазить по реестру, то вот вам готовый файлик со всеми нужными действиями. Скачиваете его, распаковываете и запускаете, согласившись с внесением изменений. Когда вы это сделали, то многие советуют перезагрузиться, но как проверено оперативным путем, достаточно пользователю у кого есть проблемы с лишней раскладкой на RDS-ферме, просто сделать завершение сеанса (Log OF), а после заново подключиться. На этом у меня все, а с вами был Иван Семин, автор и создать IT блога Pyatilistnik.org.

Инструкция, как убрать лишние раскладки в rdp, или как избавиться от лишнего языка при подключении через remote desktop.

Лишняя раскладка клавиатуры в rdp

Всем привет! На связи Александр Глебов. Данная статья — заметка. Судя по кей коллектору мало у кого есть похожие проблемы. Короче, в ней я рассказываю, как убирается лишняя раскладка клавиатуры в rdp (удаленном рабочем столе).

Суть проблемы «Лишняя раскладка клавиатуры в rdp» заключается в следующем, вы подключаетесь через удаленный рабочий стол  к своему компьютеру с Windows 8 или Windows 2012, начинаете, где либо печатать текст, и вдруг вам надо сменить язык. Вы нажимаете свое сочетание горячих клавиш для переключения раскладки и снова печатаете, однако посмотрев на экран видите, что язык то не поменялся.

Данная проблема появляется из-за шибко умного клиента «Подключение к удаленному рабочему столу», он передает вашу текущую раскладку в удаленный сеанс. И в итоге на удаленном рабочем столе, щелкнув по значку языка видим следующую картину:Лишняя раскладка клавиатуры в rdp

И переключение горячими клавишами осуществляется между «Русский — США клавиатура», и «Английский (США) США клавиатура». Что не реально раздражает. Давайте теперь перейдем к решению проблемы лишний раскладки клавиатуры.

Лишняя раскладка клавиатуры в rdp — решение проблемы

Решение простое как пять копеек, для этого выполним следующие шаги:

Если вручную делать не охота, то можно скачать файл импорта ключа реестра, ниже в этой статье.

  1. Подключаемся через удаленный рабочий стол на наш компьютер.
  2. Запускаем редактор реестра от имени администратора.
  3. Идем по пути: «HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlKeyboard Layout».
  4. Создаем новый ключ:
    Имя Тип Значение
    IgnoreRemoteKeyboardLayout REG_DWORD 1

    Ключ IgnoreRemoteKeyboardLayout

  5. После создания ключа, необходимо перезагрузить компьютер.

Как и обещал, выкладываю ссылку на файл импорта ключа в реестр. Для установки скачайте файл IgnoreRemoteKeyboardLayout.reg себе на удаленный компьютер  и щелкните два раза кнопкой мыши. Система сделает предупреждение: Файл IgnoreRemoteKeyboardLayout.reg

Нажимаем «Да», следующее окно напишет, что данные успешно внесены в реестр. Нажимаем «OK». Перезагружаем компьютер.

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

И по традиции, если остались вопросы, замечания, предложения, прошу писать в комментариях. А если вам моя статья помогла, то буду безумно рад, если вы вступить в мою группу в контакте!

Загрузка…

Интересные статьи по теме:

Иногда такое случается, что подключаясь к разным серверам по RDP со своего ноутбука, замечал, что появлялась какая-то лишняя раскладка «РУС US, Русский США клавиатура», которая жутко бесила. Из-за неё я печатал на английском, переключал на русский и всё равно продолжал печатать на английском. Запутывался окончательно, потому что не мог обратно переключиться на русский. То есть теперь я переключал не РУС на ENG и обратно, а ENG, потом РУС-US и только потом РУС-РУС. Иногда для этого приходилось использовать не только Alt+Shift, но ещё и Ctrl+Shift. В этой статье я расскажу, как убрать раскладку клавиатуры РУС US раз и навсегда

Как убрать раскладку клавиатуры РУС US?

Надоедливая раскладка РУС US

Как я убирал лишнюю раскладкой клавиатуры РУС US

Ранее в своём другом блоге я выкладывал решение для удаления английской США раскладки с русского языка. Она подходила для Windows Server 2008, 2008 R2 и даже 2012 и 2012R2. Достаточно было зайти в настройки раскладки, сначала добавить фактически эту раскладку, а потом её удалить. Проблема решалась на какое-то время, многим это помогло. Но это было временное решение, у многих затем она появлялась повторно, да к тому же ещё и в Windows Server 2016 и 2019 пропала возможность добавить английскую qwerty раскладку к русскому языку. Раз я и сам начал переход на современные версии Windows Server, то решил разобраться с этой проблемой.

Откуда появляется qwerty раскладка в русском языке?

Опытным путём стало понятно, что раскладка РУС-US появляется в основном на серверных версиях Windows и, в большинстве своём, при подключении RDP. Временное удаление, а затем повторное появление даёт понять, что проблема появляется при установлении новых подключений. По аналогии могу привести в пример проблему с принтерами в старых версиях Windows Server, когда появлялись некие фантомные принтеры и могли зависнуть. Возможно, проблема появляется, когда ENG раскладка нашего клиента на сервере определяется как дополнительная РУС-US и падает в Русский язык, но как США клавиатура. Я пока не проверял теорию о том, замешан ли тут Punto Switcher, поэтому есть только факт, что Пунто установлен на моём ноутбуке + у меня также появляются проблема с раскладками.

  • Параметры языков ввода
  • Панель управления — управление языками ввода
Скриншоты с сервера

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

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlKeyboard Layout

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

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

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

Для тех, кому нужны картинки, ловите:

  • пуск — regedit от имени администратора
  • создаём новый параметр
  • переименовываем параметр
  • присваиваем ему значение 1
Добавляем параметр в реестр

Есть такой нюанс, что реестр могут править только администраторы, поэтому, если у вас простая учётная запись без администраторских прав, то попросите вашего сисадмина сделать описанное в статье за вас. Достаточно просто прислать ему ссылку на эту статью.

Второй способ как всё это провернуть — через reg-файл

Также можно создать reg-файл в Блокноте, затем простым двойным щелчком добавить в реестр без копания по его веткам и параметрам. Для этого выполняем следующее:

Открываем Блокнот, Вставляем туда следующий текст

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlKeyboard Layout]
"IgnoreRemoteKeyboardLayout"=dword:00000001
  • В меню выбираем ФайлСохранить как
  • В выпадающем списке Тип файла выбираем Все файлы (*.*)
  • Имя файла пишем любое название, но в конце добавляем .reg

убрать раскладку клавиатуры РУС US через блокнот. сохраняем как reg-файл

Сохраняем текст с расширением .reg

После этого вы получите файл, запускаете его, соглашаетесь с предоставлением администраторских прав, выполняете завершение сеанса и потом заново заходите. Готово, у нас получилось убрать раскладку клавиатуры РУС US!

Для простоты я выложил файлик на Яндекс.Диск, откуда вы можете скачать и просто добавить в реестр двойным кликом.

Кстати, вы заметили, что с каждым обновлением Windows 10 всё труднее попасть в старую добрую панель управления? В статье Как открыть Панель управления в Windows 10 я выкладываю несколько лайфхаков

Отблагдарить автора статьи также можно переводом, +100 вам в карму!

На RDS серверах под Windows Server 2012 R2 / Windows Server 2016 есть довольно старый баг. После того, как администратор или сотрудник техподдержки отключается от RDP сессии пользователя в режиме управления через теневое подключение (shadow), в сеансе пользователя пропадает языковая панель. В итоге пользователь не может переключить язык в своей RDS сессии, горячие клавиши на переключение языка также не работают. Если администратор снова подключится к сессии пользователя – языковая панель опять появляется, при отключении – снова исчезает. Аналогичный баг возникает при Shadow подключении к рабочим станциям с Windows 10 и Windows 8.1.

Как оказалось, эта проблема проявляется только в тех случаях, если администратор инициирует теневое подключение с языковой раскладкой, которая не совпадает с языком системы (Display language) на компьютере пользователя. Т.е. если у пользователя установлен русский интерфейс системы, и к нему подключается админ с русской раскладкой – проблемы нет. Если подключается админ с английской раскладкой – языковая панель при отключении сессии пропадает.

пропадает языковая панель после отключения shadow подключения

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

Чтобы вернуть языковую панель, на клиенте нужно зайти в Панель управленияЧасы, язык и регионЯзык, выбрать любой язык и кнопками Вверх/Вниз переместить его.

переместить языки в панели управления

Для автоматизации этого действия можно добавить следующий PowerShell скрипт на рабочий стол пользователя:

addlanguage.ps1

$1 = New-WinUserLanguageList en-US
$1.Add("ru-RU")
Set-WinUserLanguageList $1 -force

В общем получается ручной костыль да еще и с ручным приводом.

Совет. Наткнулся еще на интересный параметр реестра IgnoreRemoteKeyboardLayout. Если на RDS сервере в ветке HKLMSystemCurrentControlSetControlKeyboard создать новый параметр типа DWORD со значением 1 (нужна перезагрузка), то сервер начинает игнорировать раскладку клавиатуры клиента.

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlKeyboard Layout]

"IgnoreRemoteKeyboardLayout"=dword:00000001

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

Попробуем немного автоматизировать костыль. При отключении от теневой сессии пользователя в журнале Microsoft -> Windows -> TerminalServices -> RemoteConnectionManager -> Operational появляется событие с «Shadow Control Session Ended» с EventId 20507.

Событие Shadow Control Session Ended» с EventId 20507.

Нам нужно привязать задание планировщика к этому событию (пункт Attach task to this event), которое бы запускало скрипт fixlangauge.ps1, который формирует новое задание планировщика и выполняет его у в сеансе пользователя.

fixlangauge.ps1

$User=Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational" | Where-Object {$_.ID -eq "20507"} |select-object -first 1 | ForEach-Object{"$($_.Properties[2].Value)"}
schtasks.exe /create /RU $User /IT /TN $User /TR "powershell.exe -File c:psaddlanguage.ps1" /SC DAILY
schtasks.exe /run /TN $User
Start-Sleep -Milliseconds 10000
schtasks.exe /Delete /TN $User /F

В задании запускается указанный выше PS скрипт addlanguage.ps1.

powershell скрипт для вовзрата языковой панели в RDS сеансе

Таким образом, после того, как администратор отключает теневое сессию к пользователю, в системе срабатывает триггер по событию 20507 и из-под пользователя автоматически отрабатывает команда добавления языка.

В Windows Server при подключении к нему по rdp наблюдается такое явление, как две языковые панели у терминального пользователя. Одна с текстовым индикатором (RU|EN), вторая — с изображением клавиатуры. И при нажатии Alt-Shift или Ctrl-Shift (как у кого настроено) язык ввода не переключается.

Есть несколько способов решения данной проблемы:

Вариант 1.

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

Вариант 2.

1. Заходим — пуск — панель управления — язык и региональные стандарты.
2. Вкладка «Языки и клавиатуры» — жмем кнопку — Изменить клавиатуру…
3. На вкладке «Общее» — Ставим язык ввода по умолчанию — английский, далее удаляем русский язык, жмем применить, ок.
4. Проделываем пункт 2 еще раз.
5. На вкладке «Общее» добавляем русский язык (англ. так и оставляем стоять по умолчанию)
6. На вкладке «Языковая панель» должна стоять галочка «Отображать текстовые метки на языковой панели», если не стоит — ставим.
7. На вкладке «Переключение клавиатуры», жмем «Сменить сочетание клавиш» 
8. В графе «Смена языка ввода», ставим переключение клавиатуры как нам надо. В графе «Смена раскладки клавиатуры» ставим — не назначено. Жмем «ОК» — «Применить» — «ОК» — «ОК»
9. Перегружаемся.

Помогает в 90%.

Вариант 3.

На терминальном сервере от имени администратора внести изменения в реестр в ветке

HKLMSystemCurrentControlSetControlKeyboard Layout:

создать параметр IgnoreRemoteKeyboardLayout типа REG_DWORD(32bit) и установить значение 1.

Либо создать файл time.reg с таким содержанием

Windows Registry Editor Version 5.00

[HKLMSystemCurrentControlSetControlKeyboard Layout]
«IgnoreRemoteKeyboardLayout»=dword:00000001

И исполнить его.

Перезагрузка.
Помогает в 100% случаях.

Предупреждение. Неправильное изменение параметров системного реестра с помощью редактора реестра или любым иным способом может привести к серьезным неполадкам. Для их устранения может потребоваться переустановка операционной системы. Корпорация Майкрософт не гарантирует, что эти неполадки можно будет устранить. Ответственность за изменение реестра несет пользователь.

Иногда, после обновления Windows 10 возникает неприятная ситуация, связанная с раскладками клавиатуры.

Проявляется она в основном при подключении к компьютеру по удаленному рабочему столу (RDP, Remote Desktop Protocol) и выражается в том, что появляется лишняя раскладка, которая мешает нормальному переключению языка с русского на английский.

Выглядит это примерно так:

раскладки до изменений

При переключении через назначенную клавишу (например, <Alt+Shift>) происходит двойное переключение раскладки.
В данном случае на рисунке лишней является выделенная раскладка Russian (US keyboard).

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

Решение выглядит следующим образом:

Необходимо отредактировать реестр и установить (если его нет) или исправить значение флага IgnoreRemoteKeyboardLayout по следующему адресу:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlKeyboard Layout

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

  • Нажимаем <WIN+R>, вводим regedit и жмем <Enter>.
  • Далее ищем ветку реестра:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlKeyboard Layout

Если параметра IgnoreRemoteKeyboardLayout там нет — добавляем вручную «ПКМ — Создать — Параметр DWORD (32 бита)» (RBM — New — DWORD (32-bit) Value).

  • Устанавливаем значение: dword:00000001
редактор реестра

Вы также можете сохранить следующий блок в текстовый файл с расширением .reg и запустить его.

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlKeyboard Layout]
"IgnoreRemoteKeyboardLayout"=dword:00000001

После этого обязательно перезагружаемся через меню
“Пуск — Питание — Перезагрузка” (Start — Power — Restart)

В результате лишняя раскладка исчезнет

раскладки после изменений

И двойное переключение раскладки больше не будет раздражать.

Все статьи на тему RDP и устранения проблем в его работе на нашем сайте.

(Visited 2 213 times, 2 visits today)

Posted by SnowLeo

I have the following issue when connecting to Windows Server 2019 over remote desktop:

  • When I connect for the first time (= no disconnected session for my user exists), the keyboard on the remote server is correctly synchronized with my client PC = I have Czech keyboard set on both devices.
  • However when I’m connecting to an existing disconnected session on Windows Server 2019, keyboard on the server is set to English. When I log off the session completely and then connect again, keyboard is synchronized properly until I disconnect and reconnect the session. Then it’s swichted to English again. I can even see for a short moment in the GUI that keyboard on server is Czech and the immediately switched to English.

This is not happening on older versions of Windows Servers in our environment. I am also pretty sure it is not caused by group policies, because these are mostly the same for both Win 2016 and 2019. I have also tested moving the server to container where no policies are applied — same behavior. I have tested on couple of different servers and also connecting from different client OS and different tools (mstsc, rdcman, mRemoteNG). It always behaves like I described.

I am able to resolve this with manually adding Czech as default language in Settings. However this was not needed in Win Server 2016 so I wonder if this how Windows Server 2019 behaves for everyone or if it must be something in our environment?

Thanks for any suggestions what to try or check.

asked Sep 14, 2021 at 8:23

rko281's user avatar

we had exactly the same issue in our environment. We reported it to the MS and they released fix in below KB which solved above issue.

KB5010427

Addresses an issue that causes a mismatch between a Remote Desktop session’s keyboard and the Remote Desktop Protocol (RDP) client when signing in.

answered Mar 3, 2022 at 16:21

Jan Krejci's user avatar

I have the following issue when connecting to Windows Server 2019 over remote desktop:

  • When I connect for the first time (= no disconnected session for my user exists), the keyboard on the remote server is correctly synchronized with my client PC = I have Czech keyboard set on both devices.
  • However when I’m connecting to an existing disconnected session on Windows Server 2019, keyboard on the server is set to English. When I log off the session completely and then connect again, keyboard is synchronized properly until I disconnect and reconnect the session. Then it’s swichted to English again. I can even see for a short moment in the GUI that keyboard on server is Czech and the immediately switched to English.

This is not happening on older versions of Windows Servers in our environment. I am also pretty sure it is not caused by group policies, because these are mostly the same for both Win 2016 and 2019. I have also tested moving the server to container where no policies are applied — same behavior. I have tested on couple of different servers and also connecting from different client OS and different tools (mstsc, rdcman, mRemoteNG). It always behaves like I described.

I am able to resolve this with manually adding Czech as default language in Settings. However this was not needed in Win Server 2016 so I wonder if this how Windows Server 2019 behaves for everyone or if it must be something in our environment?

Thanks for any suggestions what to try or check.

asked Sep 14, 2021 at 8:23

rko281's user avatar

we had exactly the same issue in our environment. We reported it to the MS and they released fix in below KB which solved above issue.

KB5010427

Addresses an issue that causes a mismatch between a Remote Desktop session’s keyboard and the Remote Desktop Protocol (RDP) client when signing in.

answered Mar 3, 2022 at 16:21

Jan Krejci's user avatar

Понравилась статья? Поделить с друзьями:
  • Windows server 2019 кэширование записи на диск
  • Windows server 2019 различия в версиях
  • Windows server 2019 купить официальный сайт
  • Windows server 2019 продление ознакомительной версии
  • Windows server 2019 купить лицензию у официального дилера