XRDP добавить макет
На Debian 8 установлен XRDP + xfce4. Нет возможности добавить новый макет в систему - кнопка "Добавить" отключена: после входа в систему перейдите в "Меню приложений - Настройки - Клавиатура", выберите "Макет" и увидите следующую картинку: см. Скриншот.
В каталоге /etc/xrdp/
есть файлы:
km-0407.ini
km-0409.ini
km-040c.ini
km-0410.ini
km-0419.ini
km-041d.ini
rsakeys.ini
sesman.ini
startwm.sh
xrdp.ini
km-0419.ini
- макет, который мне нужен.
Как добавить раскладку клавиатуры?
Я пытался запустить в терминальной сессии (под root) команды:
setxkbmap
а также
xrdp-genkeymap /etc/xrdp/km-0419.ini
В ответ на первую команду я получаю:
XKB extention not present on: 10.0
второй молча исполняется, ничего не происходит.
Та же команда сообщает о сеансе терминала (на хост-машине):
Can not open display «default display»
а также
unable to open display ""
2 ответа
У меня были проблемы с Debian 9 + xfce + xrdp.
Проблема была в том, что дополнительные макеты исчезли, когда я снова подключился по RDP.
Я не уверен, что это именно то, что вы ищете, я прошу прощения, если это не так. Возможно, мой опыт поможет вам понять, как решить вашу проблему. Также я не знаю, работает ли он для вашей версии xrdp.
Например вот решение для русской клавиатуры.
Он возвращает все настройки раскладки клавиатуры к значениям по умолчанию при запуске нового сеанса RDP. Таким образом, есть два способа решить это.
Запустите команду, чтобы изменить свои настройки на предпочтительные после любого входа в RDP.
setxkbmap -layout us,ru -variant ',winkeys' -option 'grp:alt_shift_toggle,grp_led:scroll'
Или измените конфигурацию xrdp, чтобы использовать нужные настройки.
Что мне помогло, так это исправление файла /etc/xrdp/xrdp_keyboard.ini(обратите внимание на разделы [rdp_keyboard_ru] и [layouts_map_ru])
Вы можете использовать его для чужих языков по аналогии.
Вот пример моего файла /etc/xrdp/xrdp_keyboard.ini. Вы можете увидеть в конце файла, который я использую мои пользовательские наборы:
;
; RDP Keyboard <-> X11 Keyboard layout map
;
; How this file works:
; 1. load the file and scan each section to find matching "keyboard_type"
; and "keyboard_subtype" based on the values received from the client.
; If not found, then jump to default section.
; 2. in the selected section, look for "rdp_layouts" and "layouts_map".
; Based on the "keylayout" value from the client, find the right x11
; layout value.
; 3. model/variant are inferred based on the "keyboard_type" and
; "keyboard_subtype", but they can be overridden.
;
;
; RDP Keyboard Type (http://msdn.microsoft.com/en-us/library/cc240563.aspx)
;
; 0 is not a valid value
;
; 1 - IBM PC/XT or compatible (83-key) keyboard
; 2 - Olivetti "ICO" (102-key) keyboard
; 3 - IBM PC/AT (84-key) or similar keyboard
; 4 - IBM enhanced (101- or 102-key) keyboard
; 5 - Nokia 1050 and similar keyboards
; 6 - Nokia 9140 and similar keyboards
; 7 - Japanese keyboard
;
; RDP Keyboard Subtype is vendor dependent. XRDP defines as follows:
;
; 0 is not a valid value
;
; 1 - Standard
; 2 - FreeRDP JP keyboard
; 3 - Macintosh
; ... - < any vendor dependent subtype >
;
; The list can be augmented.
;
; default
[default]
; keyboard_type and keyboard_subtype is not read for default section. It
; is only a placeholder to keep consistency. Default model/variant are
; platform dependent, and could be overridden if needed.
keyboard_type=0
keyboard_subtype=0
; user could override variant and model, but generally they should be inferred
; automatically based on keyboard type and subtype
;variant=
;model=
; A list of supported RDP keyboard layouts
rdp_layouts=default_rdp_layouts
; The map from RDP keyboard layout to X11 keyboard layout
layouts_map=default_layouts_map
[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_jp=0xe0010411
rdp_layout_jp=0xe0200411
rdp_layout_jp=0xe0210411
rdp_layout_kr=0x00000412
rdp_layout_ru=0x00000419
rdp_layout_se=0x0000041D
rdp_layout_ch=0x00000807
rdp_layout_pt=0x00000816
rdp_layout_br=0x00000416
rdp_layout_pl=0x00000415
; <rdp layout name> = <X11 keyboard layout value>
[default_layouts_map]
rdp_layout_us=us
rdp_layout_de=de
rdp_layout_fr=fr
rdp_layout_it=it
rdp_layout_jp=jp
rdp_layout_kr=kr
rdp_layout_ru=ru
rdp_layout_se=se
rdp_layout_ch=ch
rdp_layout_pt=pt
rdp_layout_br=br(abnt2)
rdp_layout_pl=pl
; if two sections have the same keyboard_type and keyboard_subtype, then
; the latter could override the former.
[rdp_keyboard_mac]
keyboard_type=4
keyboard_subtype=3
rdp_layouts=default_rdp_layouts
layouts_map=rdp_layouts_map_mac
[rdp_keyboard_jp]
keyboard_type=7
keyboard_subtype=2
model=pc105
rdp_layouts=default_rdp_layouts
layouts_map=default_layouts_map
[rdp_layouts_map_mac]
rdp_layout_us=us
rdp_layout_de=de
rdp_layout_fr=fr
rdp_layout_jp=jp
rdp_layout_kr=kr
rdp_layout_it=it
rdp_layout_ru=ru
rdp_layout_se=se
rdp_layout_ch=ch
rdp_layout_pt=pt
rdp_layout_br=br(abnt2)
rdp_layout_pl=pl
[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
model=pc105
options=grp:lctrl_lshift_toggle,compose:ralt
variant=,
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru
[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru
- посмотрите $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml
- setxkbmap -layout us,ru -variant ',' -option 'grp:win_space_toggle'