Раскладка клавиатуры в RDP-сеансе

Проблема: В системном трее язык переключается как обычно (к примеру, с RU на EN), но при этом ввод продолжает оставаться в раскладке RU, а рядом со значком EN появляется значок в форме клавиатуры, кликнув на который мышью можно уже вручную в появившемся контекстном меню изменить язык ввода – и вот тогда он действительно заменится на выбранный.




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

Есть и решение – можно заставить сервер игнорировать раскладку клавиатуры, с которой производилось клиентское подключение. К сожалению, разработчики из Microsoft не удосужились добавить графический интерфейс для этой опции, поэтому потребуется вносить изменения в реестр вручную. 

  • Открываем редактор реестра (regedit.exe);
  • Открываем ключ HKLM\System\CurrentControlSet\Control\Keyboard Layout; 
  • Создаем параметр IgnoreRemoteKeyboardLayout (REG_DWORD) и присваиваем ему значение “1”; 
  • Перезагружаем сервер. 

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

PS: Описанное актуально для английской версии WinServ2008R2 + русскоязычного MUI; возможно, для других комбинаций языков поведение этой чудо-системы отличается.
Оригинальный источник: Ссылка


Подозреваю, терминал может схватывать настройки локальной станции, с которой клиент терминалится.

Чтобы отключить автоперенос настроек раскладок в терминал, укажите в реестре терминального сервера:

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