RDP Keymap выглядит правильно, но не работает

Я пытаюсь заставить xrdp работать правильно в Ubuntu 16.04, используя xfce на AMD64. Я использую это как среду разработки, и я просто хочу иметь возможность использовать phpstorm, но вкладки, стрелки и т. Д. Просто не работают.

После долгих поисков и множества неудачных попыток я оказался здесь: http://cloclotron.net/xrdp_keyboard_layout_workaround.html

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

например, в моей раскладке консоли строка клавиш табуляции выглядит так: 23 0xff09 (вкладка) 0xfe20 (ISO_Left_Tab) 0xff09 (Tab) 0xfe20 (ISO_Left_Tab) который говорит мне, что код должен быть либо (dec) 65056, либо 65289, но строка 23 km-0409 уже показывает 65289, когда я устанавливаю его на 65056, это не имеет значения, и клавиша табуляции по-прежнему не работает.

У меня такая же проблема с клавишами со стрелками, и я убедился, что они тоже верны.

Как я могу проверить, какая раскладка клавиатуры действительно используется xrdp?

Где хранится этот параметр?

Есть ли лучший способ получить рабочую раскладку клавиатуры?

tightvnc также имеет неправильную раскладку клавиатуры.

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

0
задан 23 February 2018 в 08:14

1 ответ

Уже поздно, но я все равно постараюсь ответить на ваши вопросы на будущее.

Как я могу проверить, какая раскладка клавиатуры на самом деле используется xrdp?

setxkbmap -query

Где хранится этот параметр?

Вы можете найти настройки keuborad в /etc/xrdp/xrdp_keyboard.ini: файл содержит сопоставление между языками и раскладками клавиатуры в шестнадцатеричном формате.

Есть ли лучший способ получить рабочую раскладку клавиатуры?

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

  1. Определите шестнадцатеричное число, соответствующее желаемой раскладке, просмотрев вышеупомянутый файл (xrdp_keyboard.ini).

  2. Создайте резервную копию раскладки по умолчанию (США), используемой xrdp:

    sudo cp /etc/xrdp/km-00000409.ini /etc/xrdp/km-00000409.ini.bak

  3. Создайте файл текущей раскладки раскладки присвоив ему имя по умолчанию:

    sudo xrdp-genkeymap /etc/xrdp/km-00000409.ini

  4. Перезапустите xrdp и попробуйте войти в машину через подключение к удаленному рабочему столу

    sudo systemctl перезапустить xrdp

Имейте в виду, что более ранние версии xrdp называют файлы раскладок более короткими: km-0409.ini вместо km-00000409.ini.

Чтобы узнать, что происходит, просмотрите журналы xrdp:

tail -f /var/log/xrdp.log

ОБНОВЛЕНИЕ: тем не менее, вы можете снова столкнуться с той же проблемой при повторном подключении к тому же хосту: это известная проблема. Я не знаю, как это решить, но, пожалуйста, рассмотрите также языковые настройки в Панели управления клиента Windows (или любого другого вашего клиента).Кто-то в вышеупомянутом выпуске предложил изменить исходный код, чтобы смягчить проблему, возникающую при повторном подключении:

  1. изменить функцию rdpLoadLayout (изменить параметры макета и код комментариев по умолчанию, когда он должен быть повторно применен с параметрами информации о клиенте):

static int rdpLoadLayout (rdpKeyboard * клавиатура, структура xrdp_client_info * client_info) { Набор XkbRMLVOSet;

    int keylayout = client_info->keylayout;

    LLOGLN(0, ("rdpLoadLayout: keylayout 0x%8.8x variant %s display %s", keylayout, client_info->variant, display));
    memset(&set, 0, sizeof(set));
    set.rules = "base";

    set.model = "pc105";
    set.layout = "us,ru";
    set.variant = "";
    set.options = "grp:ctrl_shift_toggle";

    reload_xkb(keyboard->device, &set);
    reload_xkb(inputInfo.keyboard, &set);
    return 0;
}
  1. изменить функцию rdpkeybControl
 set.model = "pc105";
 set.layout = "us,ru";
 set.variant = "";
 set.options = "grp:ctrl_shift_toggle";
1
ответ дан 11 February 2021 в 11:52

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

Похожие вопросы: