void xf_kbd_init(xfInfo* xfi)
{
memset(xfi->pressed_keys, 0, 256 * sizeof(boolean));
+ xfi->keyboard_layout_id = xfi->instance->settings->kbd_layout;
xfi->keyboard_layout_id = freerdp_kbd_init(xfi->display, xfi->keyboard_layout_id);
xfi->instance->settings->kbd_layout = xfi->keyboard_layout_id;
}
stream_read_uint16(s, inputFlags); /* inputFlags (2 bytes) */
stream_seek_uint16(s); /* pad2OctetsA (2 bytes) */
- stream_read_uint32(s, settings->kbd_layout); /* keyboardLayout (4 bytes) */
- stream_read_uint32(s, settings->kbd_type); /* keyboardType (4 bytes) */
- stream_read_uint32(s, settings->kbd_subtype); /* keyboardSubType (4 bytes) */
- stream_read_uint32(s, settings->kbd_fn_keys); /* keyboardFunctionKeys (4 bytes) */
+
+ if (settings->server_mode)
+ {
+ stream_read_uint32(s, settings->kbd_layout); /* keyboardLayout (4 bytes) */
+ stream_read_uint32(s, settings->kbd_type); /* keyboardType (4 bytes) */
+ stream_read_uint32(s, settings->kbd_subtype); /* keyboardSubType (4 bytes) */
+ stream_read_uint32(s, settings->kbd_fn_keys); /* keyboardFunctionKeys (4 bytes) */
+ }
+ else
+ {
+ stream_seek_uint32(s); /* keyboardLayout (4 bytes) */
+ stream_seek_uint32(s); /* keyboardType (4 bytes) */
+ stream_seek_uint32(s); /* keyboardSubType (4 bytes) */
+ stream_seek_uint32(s); /* keyboardFunctionKeys (4 bytes) */
+ }
+
stream_seek(s, 64); /* imeFileName (64 bytes) */
if ((inputFlags & INPUT_FLAG_FASTPATH_INPUT) == 0 && (inputFlags & INPUT_FLAG_FASTPATH_INPUT2) == 0)
}
settings->port = atoi(argv[index]);
}
+ else if (strcmp("-k", argv[index]) == 0)
+ {
+ index++;
+ if (index == argc)
+ {
+ printf("missing keyboard layout id\n");
+ return -1;
+ }
+ sscanf(argv[index], "%X", &(settings->kbd_layout));
+ }
else if (strcmp("-n", argv[index]) == 0)
{
index++;