From 79205c321cd76f0135e05d695af24b09ddea0221 Mon Sep 17 00:00:00 2001 From: Filippo Argiolas Date: Sat, 15 Apr 2023 06:39:18 +0200 Subject: [PATCH] rdp backend: reset default keymap if mapping fails Reload default global compositor keymap when no xkb mapping is found for current keyboard layout. This will default to the keymap in weston.ini or to "us" if no keymap is defined there. Should allow to use custom KLC layouts for keymaps that exist in Linux but have no correspondence in Windows (e.g. altgr-intl). This should also partially fix #173. Still need a way to export weston.ini to the user. --- libweston/backend-rdp/rdprail.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libweston/backend-rdp/rdprail.c b/libweston/backend-rdp/rdprail.c index 5da545e87..39e002938 100644 --- a/libweston/backend-rdp/rdprail.c +++ b/libweston/backend-rdp/rdprail.c @@ -1001,6 +1001,14 @@ rail_client_LanguageImeInfo_callback(bool freeOnly, void *arg) __func__, new_keyboard_layout, settings->KeyboardType, settings->KeyboardSubType); + + rdp_debug_error(b, "%s: Resetting default keymap\n", __func__); + keymap = xkb_keymap_new_from_names(peer_ctx->item.seat->compositor->xkb_context, + &peer_ctx->item.seat->compositor->xkb_names, + 0); + weston_seat_update_keymap(peer_ctx->item.seat, keymap); + xkb_keymap_unref(keymap); + settings->KeyboardLayout = new_keyboard_layout; } } }