xrdp - как изменить раскладку клавиатуры

Когда я открываю сеанс xrdp с компьютера с Windows 7 на мой компьютер с Ubuntu, используется раскладка клавиатуры США. Тем не менее, моя раскладка клавиатуры по умолчанию отличается на машине с Ubuntu, и я хочу использовать ее во время сеансов xrdp. Как я могу это исправить?

7 ответов

Решение

Если вы установили xrdp, в вашей системе должен быть установлен пакет xrdp-genkeymap. утилита будет находиться в папке /etc/xrdp

Чтобы изменить раскладку клавиатуры, вам действительно нужно выполнить команду xrdp-genkeymap. Команду нужно запускать локально на компьютере с Ubuntu, а не из сеанса xrdp.
введите следующую команду, чтобы использовать нашу раскладку клавиатуры во время сеанса xrdp sudo xrdp-genkeymap /etc/xrdp/km-0409.ini

Если вам нужен другой языковой макет, вы должны найти правильный файл km-xxx.ini

Надеюсь, что эта помощь До следующего раза увидимся

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

Найдите нужный язык / ввод с клавиатуры здесь

Так, например, французы (Бельгия) 080C.

Затем выполните эти команды, чтобы сгенерировать раскладку клавиатуры для выбранного вами ввода.

xrdp-genkeymap km-080C.ini

Скопировать его в папку xrdp

sudo mv km-080C.ini /etc/xrdp

Помните, что вы должны изменить права доступа к файлу, чтобы его можно было использовать

sudo chown root:root /etc/xrdp/km-080C.ini

Перезапустите сервис, и он должен работать

sudo service xrdp restart

Для меня было достаточно выполнить следующую команду, чтобы установить правильную раскладку клавиатуры в X

setxkbmap be

где вы должны заменить "быть" с вашим земельным кодом. Вы можете увидеть текущее значение с

setxkbmap -query

К сожалению, ни один из приведенных выше ответов полностью не решил мою проблему.

После просмотра каталога sudo ls /etc/xrdp/я узнал что .iniВ файлах было больше префиксов 0, поэтому вместо этого мне пришлось сделать следующее, чтобы заставить его работать.

sudo xrdp-genkeymap /etc/xrdp/km-00000424.ini(словенская раскладка)

а потом дополнительно отредактировать файл sudo vi /etc/xrdp/xrdp-keyboard.iniи добавьте следующие строки после каждого раздела:

      [default_rdp_layouts]
rdp_layout_si=0x00000424

; <rdp layout name> = <X11 keyboard layout value>
[default_layouts_map]
rdp_layout_si=si

[rdp_layouts_map_mac]
rdp_layout_si=si

Я надеюсь, что это поможет кому-то.

К сожалению, манипуляции с ini файлами у меня не сработали. Максимум, что я смог получить, это дополнительные раскладки, которые тоже английские. В итоге у меня получилось 3 раскладки со странными названиями на английском языке. Что помогло, так это добавить это в начало/etc/xrdp/startwm.shа также /etc/xrdp/reconnectwm.shсразу после 1-й строки, например:

      ( sleep 3; setxkbmap -model pc105 -layout us,ru -option grp:alt_shift_toggle )&

Или, если вы хотите установить раскладку клавиатуры XRDP из общесистемного файла настроек, что, вероятно, вам нужно, вместо этого поместите это:

      . /etc/default/keyboard
( sleep 3; setxkbmap ${XKBMODEL:+-model "$XKBMODEL"} ${XKBLAYOUT:+-layout "$XKBLAYOUT"} ${XKBVARIANT:+-variant "$XKBVARIANT"} ${XKBOPTIONS:+-option "$XKBOPTIONS"} )&

Кстати, настройка общесистемного файла настроек клавиатуры /etc/default/keyboardсама может быть выполнена следующими способами:

  • Редактирование вручную
  • С помощью утилиты настройки: dpkg-reconfigure keyboard-configuration
  • С помощью утилиты командной строки: localectl set-x11-keymap us,ru pc105 , grp:alt_shift_toggle

Я был в той же ситуации, что и k3br, ответ Энрико мне не помог, и решение для меня было похоже на ответ k3br. Однако в моем случае имя файла km-xxxxxxxx.ini, которое я получил, просматривая свою клавиатуру по этой ссылке из ответа Энрико, не соответствовало файлу, который xrdp пытался открыть при входе в систему.

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

      sudo cat /var/log/xrdp.log | grep key

который дал этот вывод:

      [20220818-16:43:48] [INFO ] Cannot find keymap file /etc/xrdp/km-00001009.ini
[20220818-16:43:48] [INFO ] Loading keymap file /etc/xrdp/km-00000409.ini

Итак, в моем случае xrdp пытался открыть km-00001009.ini, но не смог его найти, поэтому по умолчанию используется km-00000409.ini, что является американской клавиатурой. Я понятия не имею, почему xrdp искал km-00001009.ini, так как это соответствует английской (канадской) клавиатуре по ссылке выше, а я использую французскую (канадскую) клавиатуру. Итак, что я сделал, так это сгенерировал файл km-00001009.ini из сеанса без xrdp на машине с Ubuntu, где была активна нужная мне клавиатура, используя

      xrdp-genkeymap km-00001009.ini

и скопировал его в /etc/xrdp/, как в ответе Энрико выше.

Наконец, мне пришлось добавить следующие строки в файл /etc/xrdp/xrdp_keyboard.ini, так как xrdp, по-видимому, проверяет наличие ключа, соответствующего файлу km внутри этого файла xrdp_keyboard.ini, и в противном случае отказывается:

      ...
[default_rdp_layouts]
...
rdp_layout_fr_ca=0x00001009
...
[default_layouts_map]
...
rdp_layout_fr_ca=ca
...

На самом деле я не знаю, насколько важны языковые буквы, следующие за rdp_layout_ (fr_ca, для французского канады в моем случае), я подозреваю, что это не так. Я также не знаю, имеет ли значение «ca» в rdp_layout_fr_ca=ca.ca — это буквы для французской канадской клавиатуры, поэтому я поставил ее, но я не пробовал с другими буквами, чтобы увидеть, будет ли она работать в любом случае.

Попробуйте локально запустить этот код не из сеанса xrdp:

xrdp-genkeymap /etc/xrdp/km-0409.ini

Перезапустите xrdp и попробуйте.

Другие вопросы по тегам