rdp: refactor xkbRuleNames code

This code will eventually be used by RAIL as well, so let's
split it out now.

Co-authored-by: Steve Pronovost <spronovo@microsoft.com>
Co-authored-by: Brenton DeGeer <brdegeer@microsoft.com>
Signed-off-by: Hideyuki Nagase <hideyukn@microsoft.com>
Signed-off-by: Steve Pronovost <spronovo@microsoft.com>
Signed-off-by: Brenton DeGeer <brdegeer@microsoft.com>
dev
Hideyuki Nagase 3 years ago committed by Derek Foreman
parent a29bcb7031
commit 4d5605b3a0
  1. 39
      libweston/backend-rdp/rdp.c
  2. 3
      libweston/backend-rdp/rdp.h

@ -818,6 +818,29 @@ struct rdp_to_xkb_keyboard_layout rdp_keyboards[] = {
{0x00000000, 0, 0}, {0x00000000, 0, 0},
}; };
void
convert_rdp_keyboard_to_xkb_rule_names(UINT32 KeyboardType,
UINT32 KeyboardSubType,
UINT32 KeyboardLayout,
struct xkb_rule_names *xkbRuleNames)
{
int i;
memset(xkbRuleNames, 0, sizeof(*xkbRuleNames));
xkbRuleNames->model = "pc105";
for (i = 0; rdp_keyboards[i].rdpLayoutCode; i++) {
if (rdp_keyboards[i].rdpLayoutCode == KeyboardLayout) {
xkbRuleNames->layout = rdp_keyboards[i].xkbLayout;
xkbRuleNames->variant = rdp_keyboards[i].xkbVariant;
break;
}
}
weston_log("%s: matching model=%s layout=%s variant=%s options=%s\n",
__func__, xkbRuleNames->model, xkbRuleNames->layout,
xkbRuleNames->variant, xkbRuleNames->options);
}
static BOOL static BOOL
xf_peer_activate(freerdp_peer* client) xf_peer_activate(freerdp_peer* client)
{ {
@ -830,7 +853,6 @@ xf_peer_activate(freerdp_peer* client)
struct xkb_rule_names xkbRuleNames; struct xkb_rule_names xkbRuleNames;
struct xkb_keymap *keymap; struct xkb_keymap *keymap;
struct weston_output *weston_output; struct weston_output *weston_output;
int i;
pixman_box32_t box; pixman_box32_t box;
pixman_region32_t damage; pixman_region32_t damage;
char seat_name[50]; char seat_name[50];
@ -895,17 +917,10 @@ xf_peer_activate(freerdp_peer* client)
settings->KeyboardLayout, settings->KeyboardType, settings->KeyboardSubType, settings->KeyboardLayout, settings->KeyboardType, settings->KeyboardSubType,
settings->KeyboardFunctionKey); settings->KeyboardFunctionKey);
memset(&xkbRuleNames, 0, sizeof(xkbRuleNames)); convert_rdp_keyboard_to_xkb_rule_names(settings->KeyboardType,
xkbRuleNames.model = "pc105"; settings->KeyboardSubType,
for (i = 0; rdp_keyboards[i].rdpLayoutCode; i++) { settings->KeyboardLayout,
if (rdp_keyboards[i].rdpLayoutCode == settings->KeyboardLayout) { &xkbRuleNames);
xkbRuleNames.layout = rdp_keyboards[i].xkbLayout;
xkbRuleNames.variant = rdp_keyboards[i].xkbVariant;
weston_log("%s: matching layout=%s variant=%s\n", __FUNCTION__,
xkbRuleNames.layout, xkbRuleNames.variant);
break;
}
}
keymap = NULL; keymap = NULL;
if (xkbRuleNames.layout) { if (xkbRuleNames.layout) {

@ -134,6 +134,9 @@ typedef struct rdp_peer_context RdpPeerContext;
void void
rdp_debug_print(struct weston_log_scope *log_scope, bool cont, char *fmt, ...); rdp_debug_print(struct weston_log_scope *log_scope, bool cont, char *fmt, ...);
void
convert_rdp_keyboard_to_xkb_rule_names(UINT32 KeyboardType, UINT32 KeyboardSubType, UINT32 KeyboardLayout, struct xkb_rule_names *xkbRuleNames);
static inline struct rdp_head * static inline struct rdp_head *
to_rdp_head(struct weston_head *base) to_rdp_head(struct weston_head *base)
{ {

Loading…
Cancel
Save