LINUX.ORG.RU
ФорумAdmin

XRDP Русская раскладка

 ,


1

4

Здравствуйте!

Прошу совета в ремонте русской раскладки в XRDP

# dpkg -l |grep xrdp
ii  xorgxrdp                              0.9.1-9                                     amd64        Remote Desktop Protocol (RDP) modules for X.org
ii  xrdp                                  0.9.1-9                                     amd64        Remote Desktop Protocol (RDP) server
Key-maps перегенирировал (в запущененной XRDP сессии)
xrdp-genkeymap /tmp/km-00000419.ini
и заменил в папке /etc/xrdp
# ls -l /etc/xrdp |grep 419
-rw-r--r-- 1 root root 14778 авг 22 05:44 km-00000419.ini
-rw-r--r-- 1 root root 11320 май  4 19:59 km-00000419.ini_
Перезапустил xrdp
service xrdp restart

подключился к сесиии XRDP и выполнил

setxkbmap -layout "us,ru(winkeys)" -model "pc105" -option "grp:ctrl_shift_toggle,grp_led:scroll"
Результатат 0. Правда если содержимым km-00000419.ini заполнить файл km-00000409.ini то тогда руский ввод при любой расскаладке, всегда.!Использую
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1

★★★★★

Последнее исправление: petav (всего исправлений: 2)

Поправил файл xrdp_keyboard.ini согласно найденного прмиера Example of xrdp_keyboard.ini for russian keyboard

[default_rdp_layouts]
rdp_layout_us=0x00000409
rdp_layout_de=0x00000407
rdp_layout_fr=0x0000040C
rdp_layout_it=0x00000410
rdp_layout_jp=0x00000411
rdp_layout_jp2=0xe0010411
rdp_layout_jp3=0xe0200411
rdp_layout_jp4=0xe0210411
rdp_layout_ru=0x00000419
rdp_layout_se=0x0000041D
rdp_layout_pt=0x00000816
rdp_layout_br=0x00000416
rdp_layout_pl=0x00000415

[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
model=pc105
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru

[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru
Сравниваю выводы setxkbmap -print -varbose 10
Нативно на железном экране (где us/ru работает) получаю:
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      pc105
layout:     us,ru,ru
variant:    ,,
options:    grp:alt_shift_toggle,grp_led:scroll
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete+ledscroll(group_lock)
symbols:    pc+us+ru:2+ru:3+inet(evdev)+group(alt_shift_toggle)
geometry:   pc(pc105)
xkb_keymap {
        xkb_keycodes  { include "evdev+aliases(qwerty)" };
        xkb_types     { include "complete"      };
        xkb_compat    { include "complete+ledscroll(group_lock)"        };
        xkb_symbols   { include "pc+us+ru:2+ru:3+inet(evdev)+group(alt_shift_toggle)"   };
        xkb_geometry  { include "pc(pc105)"     };
};
В запущенной сессии xrdp
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      pc105
layout:     us
options:    grp:alt_shift_toggle,grp_led:scroll
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete+ledscroll(group_lock)
symbols:    pc+us+inet(evdev)+group(alt_shift_toggle)
geometry:   pc(pc105)
xkb_keymap {
        xkb_keycodes  { include "evdev+aliases(qwerty)" };
        xkb_types     { include "complete"      };
        xkb_compat    { include "complete+ledscroll(group_lock)"        };
        xkb_symbols   { include "pc+us+inet(evdev)+group(alt_shift_toggle)"     };
        xkb_geometry  { include "pc(pc105)"     };
}
Сравнение файлов
# diff setxkbmap_native.txt setxkbmap_rdpses.txt
9,10c9
< layout:     us,ru,ru
< variant:    ,,
---
> layout:     us
16c15
< symbols:    pc+us+ru:2+ru:3+inet(evdev)+group(alt_shift_toggle)
---
> symbols:    pc+us+inet(evdev)+group(alt_shift_toggle)
22c21
<       xkb_symbols   { include "pc+us+ru:2+ru:3+inet(evdev)+group(alt_shift_toggle)"   };
---
>       xkb_symbols   { include "pc+us+inet(evdev)+group(alt_shift_toggle)"     };

Я так понимаю, что если выхлоп setxkbmap_rdpses привести к виду setxkbmap_native, то все заработает!?

petav ★★★★★
() автор топика
Ответ на: комментарий от petav

Добился идентичности

# diff setxkbmap_native.txt setxkbmap_rdpses_v2.txt
# cat setxkbmap_rdpses_v2.txt
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      pc105
layout:     us,ru,ru
variant:    ,,
options:    grp:alt_shift_toggle,grp_led:scroll
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete+ledscroll(group_lock)
symbols:    pc+us+ru:2+ru:3+inet(evdev)+group(alt_shift_toggle)
geometry:   pc(pc105)
xkb_keymap {
        xkb_keycodes  { include "evdev+aliases(qwerty)" };
        xkb_types     { include "complete"      };
        xkb_compat    { include "complete+ledscroll(group_lock)"        };
        xkb_symbols   { include "pc+us+ru:2+ru:3+inet(evdev)+group(alt_shift_toggle)"   };
        xkb_geometry  { include "pc(pc105)"     };
};
Но ru не работает все равно пока

petav ★★★★★
() автор топика
Ответ на: комментарий от petav

По Alt+Shiftпереключение происходит, но физические кнопки не соответствуют виртуальным. Причем с Win клиента работает только русский, на любой раскладке. С remmina английский и «испорченный» русский

petav ★★★★★
() автор топика
Ответ на: комментарий от Lord87

Локализовал до этого в Xrdp сессии:
К железу Xrdp сервера подключена pc104 keyboard

# hwinfo |grep XkbModel
    XkbModel: pc104
Она же правильно размечена в default
# cat /etc/default/keyboard
XKBLAYOUT=ru,us
XKBVARIANT=,
BACKSPACE=guess
XKBMODEL=pc104
XKBOPTIONS=grp:alt_shift_toggle,grp_led:scroll
В настройках Xrdp указана верная модель
# cat  /etc/xrdp/xrdp_keyboard.ini
[default_rdp_layouts]
rdp_layout_us=0x00000409
rdp_layout_de=0x00000407
rdp_layout_fr=0x0000040C
rdp_layout_it=0x00000410
rdp_layout_jp=0x00000411
rdp_layout_jp2=0xe0010411
rdp_layout_jp3=0xe0200411
rdp_layout_jp4=0xe0210411
rdp_layout_ru=0x00000419
rdp_layout_se=0x0000041D
rdp_layout_pt=0x00000816
rdp_layout_br=0x00000416
rdp_layout_pl=0x00000415

[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
model=pc104
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru

[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru
но если взглянуть на setxkbmap
$ setxkbmap -print -verbose
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete+ledscroll(group_lock)
symbols:    pc+us+ru:2+ru:3+inet(evdev)+group(alt_shift_toggle)
geometry:   pc(pc105)
xkb_keymap {
        xkb_keycodes  { include "evdev+aliases(qwerty)" };
        xkb_types     { include "complete"      };
        xkb_compat    { include "complete+ledscroll(group_lock)"        };
        xkb_symbols   { include "pc+us+ru:2+ru:3+inet(evdev)+group(alt_shift_toggle)"   };
        xkb_geometry  { include "pc(pc105)"     };
};
т.е физически клавиатура pc104 и у сервера (и у клиента с которого происходит подкл.), и везде в конфигурации она же, а в сессии Xrdp становится pc105.

petav ★★★★★
() автор топика
20 декабря 2017 г.

Похоже единственный путь - собрать из исходников.

Deleted
()
Ответ на: комментарий от petav

попробуй такое шаманское действо - в запущенной сессии зайди в гуёвые настройки клавиатуры и передерни порядок следования раскладок

т.е. если идет EN/RU - поставь RU/EN (и наоборот). потом верни всё взад и закрой окно настройки

anonymous
()

В общем есть некоторый результат. Я собрал из сорцов и всё было так же печально.
Применил конфиг из https://github.com/neutrinolabs/xrdp/wiki/Example-of-xrdp_keyboard.ini-for-ru... и это тоже не помогло.
Потом я нагуглил такой совет : cp km-00000409.ini km-00000419.ini и это помогло. Вообще не понимаю как это рабтает.
Единственный косяк - не работает переключалка языков из андроидного клиента от некрософт.
Полагаю что из сорцов собирать и не обязательно было. Я это проверю чуть позже.

Deleted
()
Ответ на: комментарий от Deleted

В версии из репы переключение раскладки начинает работать только после вышеописанных манипуляций и запуска setxkbmap us,ru .

Deleted
()
2 ноября 2018 г.
Ответ на: комментарий от Deleted

Может кому поможет

Не мог переключать язык в сессии xrdp, спасла выдача прав на km-00000419.ini и sudo service xrdp restart

в оригинале было

sudo chown xrdp.xrdp /etc/xrdp/km-0809.ini sudo chmod 644 /etc/xrdp/km-0809.ini sudo service xrdp restart

но я в mc всем на все выдал права на чтение, запуск и запись))

freeman611
()
4 февраля 2019 г.
Ответ на: Может кому поможет от freeman611

Проверил на Федоре. Это не работает. Кроме того, написано довольно путано.

km-00000809.ini - english_GB (английский британский). А нафига нужен английский британский, когда обычно используется

km-00000409.ini - english_US (английский американский)?

Это остаётся авторской загадкой.

UserXX
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.