diff options
author | Jeff Morriss <jeff.morriss@ulticom.com> | 2010-04-20 00:18:51 +0000 |
---|---|---|
committer | Jeff Morriss <jeff.morriss@ulticom.com> | 2010-04-20 00:18:51 +0000 |
commit | ea254104154f58affdedbb6b641235e8c66a3049 (patch) | |
tree | 3ffe6b27bbd8427cd6747a44bcf5e02c7d56ec47 /epan/dissectors/x11-extension-implementation.h | |
parent | c10087d7f4a907364c1a41be9038e5ea10e8096c (diff) |
From Peter Harris via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4481 :
The XKEYBOARD extension is a pain in the... so XCB had to grow new ways to
describe the protocol.
This patch adds support to the Wireshark dissector, so it can successfully
process the XCB description of the XKEYBOARD extension.
Without this patch, "make x11-dissector" chokes on the current xcbproto from
git.
Also update the script to deal with the new mesa directory structure.
svn path=/trunk/; revision=32520
Diffstat (limited to 'epan/dissectors/x11-extension-implementation.h')
-rw-r--r-- | epan/dissectors/x11-extension-implementation.h | 7743 |
1 files changed, 7728 insertions, 15 deletions
diff --git a/epan/dissectors/x11-extension-implementation.h b/epan/dissectors/x11-extension-implementation.h index 813dbb3d2c..48eced50fe 100644 --- a/epan/dissectors/x11-extension-implementation.h +++ b/epan/dissectors/x11-extension-implementation.h @@ -1,6 +1,6 @@ /* Do not modify this file. */ /* It was automatically generated by ../../tools/process-x11-xcb.pl - using xcbproto version 1.5-5-g4f4d43e */ + using xcbproto version 1.6-4-g2d873a3 */ /* $Id$ */ /* @@ -4882,6 +4882,26 @@ static void register_bigreq(void) set_handler("BIG-REQUESTS", dispatch_bigreq, bigreq_errors, bigreq_events, bigreq_replies); } +static void struct_POINT(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_x; + int f_y; + + item = proto_tree_add_item(root, hf_x11_struct_POINT, tvb, *offsetp, 4, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_x = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_POINT_x, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_y = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_POINT_y, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + } +} + static void struct_RECTANGLE(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) { int i; @@ -5955,6 +5975,370 @@ static void register_dpms(void) set_handler("DPMS", dispatch_dpms, dpms_errors, dpms_events, dpms_replies); } +static void struct_DRI2Buffer(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_attachment; + int f_name; + int f_pitch; + int f_cpp; + int f_flags; + + item = proto_tree_add_item(root, hf_x11_struct_DRI2Buffer, tvb, *offsetp, 20, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_attachment = field32(tvb, offsetp, t, hf_x11_struct_DRI2Buffer_attachment, little_endian); + f_name = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_DRI2Buffer_name, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_pitch = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_DRI2Buffer_pitch, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_cpp = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_DRI2Buffer_cpp, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_flags = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_DRI2Buffer_flags, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } +} + +static void struct_AttachFormat(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_attachment; + int f_format; + + item = proto_tree_add_item(root, hf_x11_struct_AttachFormat, tvb, *offsetp, 8, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_attachment = field32(tvb, offsetp, t, hf_x11_struct_AttachFormat_attachment, little_endian); + f_format = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_AttachFormat_format, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } +} + +static void dri2QueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_major_version; + int f_minor_version; + f_major_version = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_QueryVersion_major_version, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_minor_version = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_QueryVersion_minor_version, tvb, *offsetp, 4, little_endian); + *offsetp += 4; +} +static void dri2QueryVersion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_major_version; + int f_minor_version; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-QueryVersion"); + + REPLY(reply); + UNUSED(1); + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (dri2-QueryVersion)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_major_version = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_QueryVersion_reply_major_version, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_minor_version = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_QueryVersion_reply_minor_version, tvb, *offsetp, 4, little_endian); + *offsetp += 4; +} + +static void dri2Connect(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_window; + int f_driver_type; + f_window = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_Connect_window, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_driver_type = field32(tvb, offsetp, t, hf_x11_dri2_Connect_driver_type, little_endian); +} +static void dri2Connect_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_driver_name_length; + int f_device_name_length; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-Connect"); + + REPLY(reply); + UNUSED(1); + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (dri2-Connect)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_driver_name_length = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_Connect_reply_driver_name_length, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_device_name_length = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_Connect_reply_device_name_length, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + UNUSED(16); + listOfByte(tvb, offsetp, t, hf_x11_dri2_Connect_reply_driver_name, f_driver_name_length, little_endian); + listOfByte(tvb, offsetp, t, hf_x11_dri2_Connect_reply_device_name, f_device_name_length, little_endian); +} + +static void dri2Authenticate(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_window; + int f_magic; + f_window = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_Authenticate_window, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_magic = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_Authenticate_magic, tvb, *offsetp, 4, little_endian); + *offsetp += 4; +} +static void dri2Authenticate_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_authenticated; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-Authenticate"); + + REPLY(reply); + UNUSED(1); + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (dri2-Authenticate)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_authenticated = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_Authenticate_reply_authenticated, tvb, *offsetp, 4, little_endian); + *offsetp += 4; +} + +static void dri2CreateDrawable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_drawable; + f_drawable = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_CreateDrawable_drawable, tvb, *offsetp, 4, little_endian); + *offsetp += 4; +} + +static void dri2DestroyDrawable(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_drawable; + f_drawable = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_DestroyDrawable_drawable, tvb, *offsetp, 4, little_endian); + *offsetp += 4; +} + +static void dri2GetBuffers(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_drawable; + int f_count; + f_drawable = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_GetBuffers_drawable, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_count = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_GetBuffers_count, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + listOfCard32(tvb, offsetp, t, hf_x11_dri2_GetBuffers_attachments, hf_x11_dri2_GetBuffers_attachments_item, (length - 12) / 4, little_endian); +} +static void dri2GetBuffers_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_width; + int f_height; + int f_count; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-GetBuffers"); + + REPLY(reply); + UNUSED(1); + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (dri2-GetBuffers)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_width = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_GetBuffers_reply_width, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_height = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_GetBuffers_reply_height, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_count = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_GetBuffers_reply_count, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + UNUSED(12); + struct_DRI2Buffer(tvb, offsetp, t, little_endian, f_count); +} + +static void dri2CopyRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_drawable; + int f_region; + int f_dest; + int f_src; + f_drawable = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_CopyRegion_drawable, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_region = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_CopyRegion_region, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_dest = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_CopyRegion_dest, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_src = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_CopyRegion_src, tvb, *offsetp, 4, little_endian); + *offsetp += 4; +} +static void dri2CopyRegion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-CopyRegion"); + + REPLY(reply); + UNUSED(1); + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (dri2-CopyRegion)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; +} + +static void dri2GetBuffersWithFormat(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_drawable; + int f_count; + f_drawable = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_drawable, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_count = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_count, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + struct_AttachFormat(tvb, offsetp, t, little_endian, (length - 12) / 8); +} +static void dri2GetBuffersWithFormat_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_width; + int f_height; + int f_count; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-GetBuffersWithFormat"); + + REPLY(reply); + UNUSED(1); + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (dri2-GetBuffersWithFormat)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_width = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_reply_width, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_height = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_reply_height, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_count = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_dri2_GetBuffersWithFormat_reply_count, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + UNUSED(12); + struct_DRI2Buffer(tvb, offsetp, t, little_endian, f_count); +} +static const value_string dri2_extension_minor[] = { + { 0, "QueryVersion" }, + { 1, "Connect" }, + { 2, "Authenticate" }, + { 3, "CreateDrawable" }, + { 4, "DestroyDrawable" }, + { 5, "GetBuffers" }, + { 6, "CopyRegion" }, + { 7, "GetBuffersWithFormat" }, + { 0, NULL } +}; +const x11_event_info dri2_events[] = { + { NULL, NULL } +}; +static x11_reply_info dri2_replies[] = { + { 0, dri2QueryVersion_Reply }, + { 1, dri2Connect_Reply }, + { 2, dri2Authenticate_Reply }, + { 5, dri2GetBuffers_Reply }, + { 6, dri2CopyRegion_Reply }, + { 7, dri2GetBuffersWithFormat_Reply }, + { 0, NULL } +}; + +static void dispatch_dri2(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int minor, length; + minor = CARD8(dri2_extension_minor); + length = REQUEST_LENGTH(); + + col_append_fstr(pinfo->cinfo, COL_INFO, "-%s", + val_to_str(minor, dri2_extension_minor, + "<Unknown opcode %d>")); + switch (minor) { + case 0: + dri2QueryVersion(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 1: + dri2Connect(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 2: + dri2Authenticate(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 3: + dri2CreateDrawable(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 4: + dri2DestroyDrawable(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 5: + dri2GetBuffers(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 6: + dri2CopyRegion(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 7: + dri2GetBuffersWithFormat(tvb, pinfo, offsetp, t, little_endian, length); + break; + /* No need for a default case here, since Unknown is printed above, + and UNDECODED() is taken care of by dissect_x11_request */ + } +} + +static void register_dri2(void) +{ + set_handler("DRI2", dispatch_dri2, dri2_errors, dri2_events, dri2_replies); +} + static void geQueryVersion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) { int f_client_major_version; @@ -11303,7 +11687,6 @@ static void struct_NotifyData(tvbuff_t *tvb, int *offsetp, proto_tree *root, int for (i = 0; i < count; i++) { proto_item *item; proto_tree *t; - item = proto_tree_add_item(root, hf_x11_union_NotifyData, tvb, base, 28, little_endian); t = proto_item_add_subtree(item, ett_x11_rectangle); @@ -14776,8 +15159,6 @@ static void xf86driOpenConnection(tvbuff_t *tvb, packet_info *pinfo _U_, int *of static void xf86driOpenConnection_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) { int f_length, length, sequence_number; - int f_drm_client_key_low; - int f_drm_client_key_high; int f_sarea_handle_low; int f_sarea_handle_high; int f_bus_id_len; @@ -14794,12 +15175,6 @@ static void xf86driOpenConnection_Reply(tvbuff_t *tvb, packet_info *pinfo, int * length = f_length * 4 + 32; proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); *offsetp += 4; - f_drm_client_key_low = VALUE32(tvb, *offsetp); - proto_tree_add_item(t, hf_x11_xf86dri_OpenConnection_reply_drm_client_key_low, tvb, *offsetp, 4, little_endian); - *offsetp += 4; - f_drm_client_key_high = VALUE32(tvb, *offsetp); - proto_tree_add_item(t, hf_x11_xf86dri_OpenConnection_reply_drm_client_key_high, tvb, *offsetp, 4, little_endian); - *offsetp += 4; f_sarea_handle_low = VALUE32(tvb, *offsetp); proto_tree_add_item(t, hf_x11_xf86dri_OpenConnection_reply_sarea_handle_low, tvb, *offsetp, 4, little_endian); *offsetp += 4; @@ -14866,15 +15241,15 @@ static void xf86driGetClientDriverName_Reply(tvbuff_t *tvb, packet_info *pinfo, static void xf86driCreateContext(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) { - int f_visual; int f_screen; + int f_visual; int f_context; - f_visual = VALUE32(tvb, *offsetp); - proto_tree_add_item(t, hf_x11_xf86dri_CreateContext_visual, tvb, *offsetp, 4, little_endian); - *offsetp += 4; f_screen = VALUE32(tvb, *offsetp); proto_tree_add_item(t, hf_x11_xf86dri_CreateContext_screen, tvb, *offsetp, 4, little_endian); *offsetp += 4; + f_visual = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xf86dri_CreateContext_visual, tvb, *offsetp, 4, little_endian); + *offsetp += 4; f_context = VALUE32(tvb, *offsetp); proto_tree_add_item(t, hf_x11_xf86dri_CreateContext_context, tvb, *offsetp, 4, little_endian); *offsetp += 4; @@ -16689,7 +17064,7 @@ static void xfixesFetchRegion_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offs *offsetp += 4; struct_RECTANGLE(tvb, offsetp, t, little_endian, 1); UNUSED(16); - struct_RECTANGLE(tvb, offsetp, t, little_endian, f_length); + struct_RECTANGLE(tvb, offsetp, t, little_endian, (f_length / 2)); } static void xfixesSetGCClipRegion(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) @@ -18832,6 +19207,7342 @@ static void register_xinput(void) set_handler("XInputExtension", dispatch_xinput, xinput_errors, xinput_events, xinput_replies); } +static void struct_AXOption(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + int base = *offsetp; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_fbopt; + int f_skopt; + item = proto_tree_add_item(root, hf_x11_union_AXOption, tvb, base, 2, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + + *offsetp = base; + f_fbopt = field16(tvb, offsetp, t, hf_x11_union_AXOption_fbopt, little_endian); + *offsetp = base; + f_skopt = field16(tvb, offsetp, t, hf_x11_union_AXOption_skopt, little_endian); + base += 2; + } + *offsetp = base; +} + +static void struct_IndicatorMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_flags; + int f_whichGroups; + int f_groups; + int f_whichMods; + int f_mods; + int f_realMods; + int f_vmods; + int f_ctrls; + + item = proto_tree_add_item(root, hf_x11_struct_IndicatorMap, tvb, *offsetp, 12, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_flags = field8(tvb, offsetp, t, hf_x11_struct_IndicatorMap_flags, little_endian); + f_whichGroups = field8(tvb, offsetp, t, hf_x11_struct_IndicatorMap_whichGroups, little_endian); + f_groups = field8(tvb, offsetp, t, hf_x11_struct_IndicatorMap_groups, little_endian); + f_whichMods = field8(tvb, offsetp, t, hf_x11_struct_IndicatorMap_whichMods, little_endian); + f_mods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_IndicatorMap_mods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_mods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_realMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_IndicatorMap_realMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_realMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_vmods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_IndicatorMap_vmods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_IndicatorMap_vmods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_ctrls = field32(tvb, offsetp, t, hf_x11_struct_IndicatorMap_ctrls, little_endian); + } +} + +static void struct_ModDef(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_mask; + int f_realMods; + int f_vmods; + + item = proto_tree_add_item(root, hf_x11_struct_ModDef, tvb, *offsetp, 4, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_mask = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_ModDef_mask, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_mask_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_realMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_ModDef_realMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_realMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_vmods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_ModDef_vmods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_ModDef_vmods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + } +} + +static void struct_KeyName(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + + item = proto_tree_add_item(root, hf_x11_struct_KeyName, tvb, *offsetp, 1, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + listOfByte(tvb, offsetp, t, hf_x11_struct_KeyName_name, 4, little_endian); + } +} + +static void struct_KeyAlias(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + + item = proto_tree_add_item(root, hf_x11_struct_KeyAlias, tvb, *offsetp, 2, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + listOfByte(tvb, offsetp, t, hf_x11_struct_KeyAlias_real, 4, little_endian); + listOfByte(tvb, offsetp, t, hf_x11_struct_KeyAlias_alias, 4, little_endian); + } +} + +static int struct_size_CountedString16(tvbuff_t *tvb, int *offsetp, int little_endian _U_) +{ + int size = 0; + int f_length; + f_length = VALUE16(tvb, *offsetp + size + 0); + size += f_length * 1; + return size + 3; +} + +static void struct_CountedString16(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_length; + + item = proto_tree_add_item(root, hf_x11_struct_CountedString16, tvb, *offsetp, struct_size_CountedString16(tvb, offsetp, little_endian), little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_length = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_CountedString16_length, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + listOfByte(tvb, offsetp, t, hf_x11_struct_CountedString16_string, f_length, little_endian); + UNUSED(1); + } +} + +static void struct_KTMapEntry(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_active; + int f_mods_mask; + int f_level; + int f_mods_mods; + int f_mods_vmods; + + item = proto_tree_add_item(root, hf_x11_struct_KTMapEntry, tvb, *offsetp, 8, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_active = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_KTMapEntry_active, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_mods_mask = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KTMapEntry_mods_mask, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mask_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_level = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_KTMapEntry_level, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_mods_mods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KTMapEntry_mods_mods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_mods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_mods_vmods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KTMapEntry_mods_vmods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTMapEntry_mods_vmods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + UNUSED(2); + } +} + +static int struct_size_KeyType(tvbuff_t *tvb, int *offsetp, int little_endian _U_) +{ + int size = 0; + int f_nMapEntries; + int f_hasPreserve; + f_nMapEntries = VALUE8(tvb, *offsetp + size + 5); + f_hasPreserve = VALUE8(tvb, *offsetp + size + 6); + size += f_nMapEntries * 8; + size += (f_hasPreserve * f_nMapEntries) * 4; + return size + 8; +} + +static void struct_KeyType(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_mods_mask; + int f_mods_mods; + int f_mods_vmods; + int f_numLevels; + int f_nMapEntries; + int f_hasPreserve; + + item = proto_tree_add_item(root, hf_x11_struct_KeyType, tvb, *offsetp, struct_size_KeyType(tvb, offsetp, little_endian), little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_mods_mask = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KeyType_mods_mask, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mask_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_mods_mods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KeyType_mods_mods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_mods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_mods_vmods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KeyType_mods_vmods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyType_mods_vmods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_numLevels = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_KeyType_numLevels, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nMapEntries = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_KeyType_nMapEntries, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_hasPreserve = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_KeyType_hasPreserve, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + struct_KTMapEntry(tvb, offsetp, t, little_endian, f_nMapEntries); + struct_ModDef(tvb, offsetp, t, little_endian, (f_hasPreserve * f_nMapEntries)); + } +} + +static int struct_size_KeySymMap(tvbuff_t *tvb, int *offsetp, int little_endian _U_) +{ + int size = 0; + int f_nSyms; + f_nSyms = VALUE16(tvb, *offsetp + size + 6); + size += f_nSyms * 4; + return size + 8; +} + +static void struct_KeySymMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_groupInfo; + int f_width; + int f_nSyms; + + item = proto_tree_add_item(root, hf_x11_struct_KeySymMap, tvb, *offsetp, struct_size_KeySymMap(tvb, offsetp, little_endian), little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + listOfByte(tvb, offsetp, t, hf_x11_struct_KeySymMap_kt_index, 4, little_endian); + f_groupInfo = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_KeySymMap_groupInfo, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_width = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_KeySymMap_width, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nSyms = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_KeySymMap_nSyms, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + listOfCard32(tvb, offsetp, t, hf_x11_struct_KeySymMap_syms, hf_x11_struct_KeySymMap_syms_item, f_nSyms, little_endian); + } +} + +static void struct_CommonBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_data; + + item = proto_tree_add_item(root, hf_x11_struct_CommonBehavior, tvb, *offsetp, 2, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_CommonBehavior_type, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_data = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_CommonBehavior_data, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + } +} + +static void struct_DefaultBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + + item = proto_tree_add_item(root, hf_x11_struct_DefaultBehavior, tvb, *offsetp, 2, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_DefaultBehavior_type, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + } +} + +static void struct_RadioGroupBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_group; + + item = proto_tree_add_item(root, hf_x11_struct_RadioGroupBehavior, tvb, *offsetp, 2, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_RadioGroupBehavior_type, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_group = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_RadioGroupBehavior_group, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + } +} + +static void struct_Overlay1Behavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_key; + + item = proto_tree_add_item(root, hf_x11_struct_Overlay1Behavior, tvb, *offsetp, 2, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Overlay1Behavior_type, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_key = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Overlay1Behavior_key, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + } +} + +static void struct_Overlay2Behavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_key; + + item = proto_tree_add_item(root, hf_x11_struct_Overlay2Behavior, tvb, *offsetp, 2, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Overlay2Behavior_type, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_key = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Overlay2Behavior_key, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + } +} + +static void struct_Behavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + int base = *offsetp; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + item = proto_tree_add_item(root, hf_x11_union_Behavior, tvb, base, 2, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + + *offsetp = base; + struct_CommonBehavior(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_DefaultBehavior(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_DefaultBehavior(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_RadioGroupBehavior(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_Overlay1Behavior(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_Overlay2Behavior(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_DefaultBehavior(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_RadioGroupBehavior(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_Overlay1Behavior(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_Overlay2Behavior(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + f_type = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_union_Behavior_type, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + base += 2; + } + *offsetp = base; +} + +static void struct_SetBehavior(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_keycode; + + item = proto_tree_add_item(root, hf_x11_struct_SetBehavior, tvb, *offsetp, 4, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_keycode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SetBehavior_keycode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + struct_Behavior(tvb, offsetp, t, little_endian, 1); + UNUSED(1); + } +} + +static void struct_SetExplicit(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_keycode; + int f_explicit; + + item = proto_tree_add_item(root, hf_x11_struct_SetExplicit, tvb, *offsetp, 2, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_keycode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SetExplicit_keycode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_explicit = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SetExplicit_explicit, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_KeyType1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_KeyType2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_KeyType3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_KeyType4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_Interpret, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_AutoRepeat, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_Behavior, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetExplicit_explicit_mask_VModMap, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + } +} + +static void struct_KeyModMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_keycode; + int f_mods; + + item = proto_tree_add_item(root, hf_x11_struct_KeyModMap, tvb, *offsetp, 2, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_keycode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_KeyModMap_keycode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_mods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KeyModMap_mods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyModMap_mods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + } +} + +static void struct_KeyVModMap(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_keycode; + int f_vmods; + + item = proto_tree_add_item(root, hf_x11_struct_KeyVModMap, tvb, *offsetp, 4, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_keycode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_KeyVModMap_keycode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + f_vmods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KeyVModMap_vmods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KeyVModMap_vmods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + } +} + +static void struct_KTSetMapEntry(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_level; + int f_realMods; + int f_virtualMods; + + item = proto_tree_add_item(root, hf_x11_struct_KTSetMapEntry, tvb, *offsetp, 4, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_level = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_KTSetMapEntry_level, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_realMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KTSetMapEntry_realMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_realMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_virtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_KTSetMapEntry_virtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_KTSetMapEntry_virtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + } +} + +static int struct_size_SetKeyType(tvbuff_t *tvb, int *offsetp, int little_endian _U_) +{ + int size = 0; + int f_nMapEntries; + int f_preserve; + f_nMapEntries = VALUE8(tvb, *offsetp + size + 5); + f_preserve = VALUE8(tvb, *offsetp + size + 6); + size += f_nMapEntries * 4; + size += (f_preserve * f_nMapEntries) * 4; + return size + 8; +} + +static void struct_SetKeyType(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_mask; + int f_realMods; + int f_virtualMods; + int f_numLevels; + int f_nMapEntries; + int f_preserve; + + item = proto_tree_add_item(root, hf_x11_struct_SetKeyType, tvb, *offsetp, struct_size_SetKeyType(tvb, offsetp, little_endian), little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_mask = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SetKeyType_mask, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_mask_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_realMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SetKeyType_realMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_realMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_virtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SetKeyType_virtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SetKeyType_virtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_numLevels = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SetKeyType_numLevels, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nMapEntries = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SetKeyType_nMapEntries, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_preserve = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SetKeyType_preserve, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + struct_KTSetMapEntry(tvb, offsetp, t, little_endian, f_nMapEntries); + struct_KTSetMapEntry(tvb, offsetp, t, little_endian, (f_preserve * f_nMapEntries)); + } +} + +static int struct_size_Property(tvbuff_t *tvb, int *offsetp, int little_endian _U_) +{ + int size = 0; + int f_valueLength; + int f_nameLength; + f_nameLength = VALUE16(tvb, *offsetp + size + 0); + size += f_nameLength * 1; + f_valueLength = VALUE16(tvb, *offsetp + size + 2); + size += f_valueLength * 1; + return size + 4; +} + +static void struct_Property(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_nameLength; + int f_valueLength; + + item = proto_tree_add_item(root, hf_x11_struct_Property, tvb, *offsetp, struct_size_Property(tvb, offsetp, little_endian), little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_nameLength = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Property_nameLength, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + listOfByte(tvb, offsetp, t, hf_x11_struct_Property_name, f_nameLength, little_endian); + f_valueLength = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Property_valueLength, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + listOfByte(tvb, offsetp, t, hf_x11_struct_Property_value, f_valueLength, little_endian); + } +} + +static int struct_size_Outline(tvbuff_t *tvb, int *offsetp, int little_endian _U_) +{ + int size = 0; + int f_nPoints; + f_nPoints = VALUE8(tvb, *offsetp + size + 0); + size += f_nPoints * 4; + return size + 4; +} + +static void struct_Outline(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_nPoints; + int f_cornerRadius; + + item = proto_tree_add_item(root, hf_x11_struct_Outline, tvb, *offsetp, struct_size_Outline(tvb, offsetp, little_endian), little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_nPoints = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Outline_nPoints, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_cornerRadius = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Outline_cornerRadius, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(2); + struct_POINT(tvb, offsetp, t, little_endian, f_nPoints); + } +} + +static int struct_size_Shape(tvbuff_t *tvb, int *offsetp, int little_endian _U_) +{ + int size = 0; + int i, off; + int f_nOutlines; + f_nOutlines = VALUE8(tvb, *offsetp + size + 4); + for (i = 0; i < f_nOutlines; i++) { + off = (*offsetp) + size + 8; + size += struct_size_Outline(tvb, &off, little_endian); + } + return size + 8; +} + +static void struct_Shape(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_name; + int f_nOutlines; + int f_primaryNdx; + int f_approxNdx; + + item = proto_tree_add_item(root, hf_x11_struct_Shape, tvb, *offsetp, struct_size_Shape(tvb, offsetp, little_endian), little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_name = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Shape_name, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_nOutlines = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Shape_nOutlines, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_primaryNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Shape_primaryNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_approxNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Shape_approxNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + struct_Outline(tvb, offsetp, t, little_endian, f_nOutlines); + } +} + +static void struct_Key(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_gap; + int f_shapeNdx; + int f_colorNdx; + + item = proto_tree_add_item(root, hf_x11_struct_Key, tvb, *offsetp, 5, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + listOfByte(tvb, offsetp, t, hf_x11_struct_Key_name, 4, little_endian); + f_gap = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Key_gap, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_shapeNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Key_shapeNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_colorNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Key_colorNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + } +} + +static void struct_OverlayKey(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + + item = proto_tree_add_item(root, hf_x11_struct_OverlayKey, tvb, *offsetp, 2, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + listOfByte(tvb, offsetp, t, hf_x11_struct_OverlayKey_over, 4, little_endian); + listOfByte(tvb, offsetp, t, hf_x11_struct_OverlayKey_under, 4, little_endian); + } +} + +static int struct_size_OverlayRow(tvbuff_t *tvb, int *offsetp, int little_endian _U_) +{ + int size = 0; + int f_nKeys; + f_nKeys = VALUE8(tvb, *offsetp + size + 1); + size += f_nKeys * 2; + return size + 4; +} + +static void struct_OverlayRow(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_rowUnder; + int f_nKeys; + + item = proto_tree_add_item(root, hf_x11_struct_OverlayRow, tvb, *offsetp, struct_size_OverlayRow(tvb, offsetp, little_endian), little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_rowUnder = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_OverlayRow_rowUnder, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_OverlayRow_nKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(2); + struct_OverlayKey(tvb, offsetp, t, little_endian, f_nKeys); + } +} + +static int struct_size_Overlay(tvbuff_t *tvb, int *offsetp, int little_endian _U_) +{ + int size = 0; + int i, off; + int f_nRows; + f_nRows = VALUE8(tvb, *offsetp + size + 4); + for (i = 0; i < f_nRows; i++) { + off = (*offsetp) + size + 8; + size += struct_size_OverlayRow(tvb, &off, little_endian); + } + return size + 8; +} + +static void struct_Overlay(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_name; + int f_nRows; + + item = proto_tree_add_item(root, hf_x11_struct_Overlay, tvb, *offsetp, struct_size_Overlay(tvb, offsetp, little_endian), little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_name = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Overlay_name, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_nRows = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Overlay_nRows, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(3); + struct_OverlayRow(tvb, offsetp, t, little_endian, f_nRows); + } +} + +static int struct_size_Row(tvbuff_t *tvb, int *offsetp, int little_endian _U_) +{ + int size = 0; + int f_nKeys; + f_nKeys = VALUE8(tvb, *offsetp + size + 4); + size += f_nKeys * 5; + return size + 8; +} + +static void struct_Row(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_top; + int f_left; + int f_nKeys; + int f_vertical; + + item = proto_tree_add_item(root, hf_x11_struct_Row, tvb, *offsetp, struct_size_Row(tvb, offsetp, little_endian), little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_top = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Row_top, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_left = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Row_left, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Row_nKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_vertical = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Row_vertical, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(2); + struct_Key(tvb, offsetp, t, little_endian, f_nKeys); + } +} + +static void struct_CommonDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_name; + int f_type; + int f_priority; + int f_top; + int f_left; + int f_angle; + + item = proto_tree_add_item(root, hf_x11_struct_CommonDoodad, tvb, *offsetp, 12, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_name = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_CommonDoodad_name, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_type = field8(tvb, offsetp, t, hf_x11_struct_CommonDoodad_type, little_endian); + f_priority = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_CommonDoodad_priority, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_top = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_CommonDoodad_top, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_left = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_CommonDoodad_left, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_angle = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_CommonDoodad_angle, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + } +} + +static void struct_ShapeDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_name; + int f_type; + int f_priority; + int f_top; + int f_left; + int f_angle; + int f_colorNdx; + int f_shapeNdx; + + item = proto_tree_add_item(root, hf_x11_struct_ShapeDoodad, tvb, *offsetp, 20, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_name = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_name, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_type = field8(tvb, offsetp, t, hf_x11_struct_ShapeDoodad_type, little_endian); + f_priority = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_priority, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_top = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_top, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_left = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_left, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_angle = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_angle, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_colorNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_colorNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_shapeNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_ShapeDoodad_shapeNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(6); + } +} + +static void struct_TextDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_name; + int f_type; + int f_priority; + int f_top; + int f_left; + int f_angle; + int f_width; + int f_height; + int f_colorNdx; + + item = proto_tree_add_item(root, hf_x11_struct_TextDoodad, tvb, *offsetp, 20, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_name = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_TextDoodad_name, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_type = field8(tvb, offsetp, t, hf_x11_struct_TextDoodad_type, little_endian); + f_priority = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_TextDoodad_priority, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_top = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_TextDoodad_top, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_left = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_TextDoodad_left, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_angle = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_TextDoodad_angle, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_width = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_TextDoodad_width, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_height = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_TextDoodad_height, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_colorNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_TextDoodad_colorNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(3); + struct_CountedString16(tvb, offsetp, t, little_endian, 1); + struct_CountedString16(tvb, offsetp, t, little_endian, 1); + } +} + +static void struct_IndicatorDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_name; + int f_type; + int f_priority; + int f_top; + int f_left; + int f_angle; + int f_shapeNdx; + int f_onColorNdx; + int f_offColorNdx; + + item = proto_tree_add_item(root, hf_x11_struct_IndicatorDoodad, tvb, *offsetp, 20, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_name = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_name, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_type = field8(tvb, offsetp, t, hf_x11_struct_IndicatorDoodad_type, little_endian); + f_priority = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_priority, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_top = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_top, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_left = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_left, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_angle = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_angle, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_shapeNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_shapeNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_onColorNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_onColorNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_offColorNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_IndicatorDoodad_offColorNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(5); + } +} + +static void struct_LogoDoodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_name; + int f_type; + int f_priority; + int f_top; + int f_left; + int f_angle; + int f_colorNdx; + int f_shapeNdx; + + item = proto_tree_add_item(root, hf_x11_struct_LogoDoodad, tvb, *offsetp, 20, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_name = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_LogoDoodad_name, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_type = field8(tvb, offsetp, t, hf_x11_struct_LogoDoodad_type, little_endian); + f_priority = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_LogoDoodad_priority, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_top = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_LogoDoodad_top, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_left = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_LogoDoodad_left, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_angle = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_LogoDoodad_angle, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_colorNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_LogoDoodad_colorNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_shapeNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_LogoDoodad_shapeNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(6); + struct_CountedString16(tvb, offsetp, t, little_endian, 1); + } +} + +static void struct_Doodad(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + int base = *offsetp; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + item = proto_tree_add_item(root, hf_x11_union_Doodad, tvb, base, 20, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + + *offsetp = base; + struct_CommonDoodad(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_ShapeDoodad(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_TextDoodad(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_IndicatorDoodad(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_LogoDoodad(tvb, offsetp, t, little_endian, 1); + base += 20; + } + *offsetp = base; +} + +static int struct_size_Section(tvbuff_t *tvb, int *offsetp, int little_endian _U_) +{ + int size = 0; + int i, off; + int f_nOverlays; + int f_nDoodads; + int f_nRows; + f_nRows = VALUE8(tvb, *offsetp + size + 15); + f_nDoodads = VALUE8(tvb, *offsetp + size + 16); + f_nOverlays = VALUE8(tvb, *offsetp + size + 17); + for (i = 0; i < f_nRows; i++) { + off = (*offsetp) + size + 20; + size += struct_size_Row(tvb, &off, little_endian); + } + size += f_nDoodads * 20; + for (i = 0; i < f_nOverlays; i++) { + off = (*offsetp) + size + 20; + size += struct_size_Overlay(tvb, &off, little_endian); + } + return size + 20; +} + +static void struct_Section(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_name; + int f_top; + int f_left; + int f_width; + int f_height; + int f_angle; + int f_priority; + int f_nRows; + int f_nDoodads; + int f_nOverlays; + + item = proto_tree_add_item(root, hf_x11_struct_Section, tvb, *offsetp, struct_size_Section(tvb, offsetp, little_endian), little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_name = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Section_name, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_top = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Section_top, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_left = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Section_left, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_width = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Section_width, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_height = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Section_height, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_angle = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Section_angle, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_priority = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Section_priority, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nRows = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Section_nRows, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nDoodads = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Section_nDoodads, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nOverlays = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Section_nOverlays, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(2); + struct_Row(tvb, offsetp, t, little_endian, f_nRows); + struct_Doodad(tvb, offsetp, t, little_endian, f_nDoodads); + struct_Overlay(tvb, offsetp, t, little_endian, f_nOverlays); + } +} + +static int struct_size_Listing(tvbuff_t *tvb, int *offsetp, int little_endian _U_) +{ + int size = 0; + int f_length; + f_length = VALUE16(tvb, *offsetp + size + 2); + size += f_length * 1; + return size + 4; +} + +static void struct_Listing(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_flags; + int f_length; + + item = proto_tree_add_item(root, hf_x11_struct_Listing, tvb, *offsetp, struct_size_Listing(tvb, offsetp, little_endian), little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_flags = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Listing_flags, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_length = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_Listing_length, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + listOfByte(tvb, offsetp, t, hf_x11_struct_Listing_string, f_length, little_endian); + } +} + +static int struct_size_DeviceLedInfo(tvbuff_t *tvb, int *offsetp, int little_endian _U_) +{ + int size = 0; + int f_mapsPresent; + int f_namesPresent; + f_namesPresent = VALUE32(tvb, *offsetp + size + 4); + f_mapsPresent = VALUE32(tvb, *offsetp + size + 8); + size += popcount(f_namesPresent) * 4; + size += popcount(f_mapsPresent) * 12; + return size + 20; +} + +static void struct_DeviceLedInfo(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_ledClass; + int f_ledID; + int f_namesPresent; + int f_mapsPresent; + int f_physIndicators; + int f_state; + + item = proto_tree_add_item(root, hf_x11_struct_DeviceLedInfo, tvb, *offsetp, struct_size_DeviceLedInfo(tvb, offsetp, little_endian), little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_ledClass = field16(tvb, offsetp, t, hf_x11_struct_DeviceLedInfo_ledClass, little_endian); + f_ledID = field16(tvb, offsetp, t, hf_x11_struct_DeviceLedInfo_ledID, little_endian); + f_namesPresent = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_DeviceLedInfo_namesPresent, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_mapsPresent = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_DeviceLedInfo_mapsPresent, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_physIndicators = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_DeviceLedInfo_physIndicators, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_state = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_DeviceLedInfo_state, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + listOfCard32(tvb, offsetp, t, hf_x11_struct_DeviceLedInfo_names, hf_x11_struct_DeviceLedInfo_names_item, popcount(f_namesPresent), little_endian); + struct_IndicatorMap(tvb, offsetp, t, little_endian, popcount(f_mapsPresent)); + } +} + +static void struct_SANoAction(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + + item = proto_tree_add_item(root, hf_x11_struct_SANoAction, tvb, *offsetp, 8, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = field8(tvb, offsetp, t, hf_x11_struct_SANoAction_type, little_endian); + UNUSED(7); + } +} + +static void struct_SASetMods(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_flags; + int f_mask; + int f_realMods; + int f_vmodsHigh; + int f_vmodsLow; + + item = proto_tree_add_item(root, hf_x11_struct_SASetMods, tvb, *offsetp, 8, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = field8(tvb, offsetp, t, hf_x11_struct_SASetMods_type, little_endian); + f_flags = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetMods_flags, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_flags_mask_ClearLocks, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_flags_mask_LatchToLock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_flags_mask_GroupAbsolute, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_mask = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetMods_mask, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_mask_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_realMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetMods_realMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_realMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_vmodsHigh = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetMods_vmodsHigh, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_8, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_9, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_10, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_11, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_12, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_13, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_14, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsHigh_mask_15, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_vmodsLow = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetMods_vmodsLow, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_0, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_6, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetMods_vmodsLow_mask_7, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + UNUSED(2); + } +} + +static void struct_SASetGroup(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_flags; + int f_group; + + item = proto_tree_add_item(root, hf_x11_struct_SASetGroup, tvb, *offsetp, 8, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = field8(tvb, offsetp, t, hf_x11_struct_SASetGroup_type, little_endian); + f_flags = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetGroup_flags, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetGroup_flags_mask_ClearLocks, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetGroup_flags_mask_LatchToLock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetGroup_flags_mask_GroupAbsolute, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_group = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SASetGroup_group, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(5); + } +} + +static void struct_SAMovePtr(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_flags; + int f_xHigh; + int f_xLow; + int f_yHigh; + int f_yLow; + + item = proto_tree_add_item(root, hf_x11_struct_SAMovePtr, tvb, *offsetp, 8, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = field8(tvb, offsetp, t, hf_x11_struct_SAMovePtr_type, little_endian); + f_flags = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAMovePtr_flags, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAMovePtr_flags_mask_NoAcceleration, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAMovePtr_flags_mask_MoveAbsoluteX, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAMovePtr_flags_mask_MoveAbsoluteY, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_xHigh = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SAMovePtr_xHigh, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_xLow = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SAMovePtr_xLow, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_yHigh = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SAMovePtr_yHigh, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_yLow = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SAMovePtr_yLow, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(2); + } +} + +static void struct_SAPtrBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_flags; + int f_count; + int f_button; + + item = proto_tree_add_item(root, hf_x11_struct_SAPtrBtn, tvb, *offsetp, 8, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = field8(tvb, offsetp, t, hf_x11_struct_SAPtrBtn_type, little_endian); + f_flags = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SAPtrBtn_flags, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_count = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SAPtrBtn_count, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_button = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SAPtrBtn_button, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(4); + } +} + +static void struct_SALockPtrBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_flags; + int f_button; + + item = proto_tree_add_item(root, hf_x11_struct_SALockPtrBtn, tvb, *offsetp, 8, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = field8(tvb, offsetp, t, hf_x11_struct_SALockPtrBtn_type, little_endian); + f_flags = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SALockPtrBtn_flags, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + f_button = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SALockPtrBtn_button, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(4); + } +} + +static void struct_SASetPtrDflt(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_flags; + int f_affect; + int f_value; + + item = proto_tree_add_item(root, hf_x11_struct_SASetPtrDflt, tvb, *offsetp, 8, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = field8(tvb, offsetp, t, hf_x11_struct_SASetPtrDflt_type, little_endian); + f_flags = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetPtrDflt_flags, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetPtrDflt_flags_mask_AffectDfltButton, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetPtrDflt_flags_mask_DfltBtnAbsolute, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_affect = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetPtrDflt_affect, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetPtrDflt_affect_mask_AffectDfltButton, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetPtrDflt_affect_mask_DfltBtnAbsolute, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_value = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SASetPtrDflt_value, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(4); + } +} + +static void struct_SAIsoLock(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_flags; + int f_mask; + int f_realMods; + int f_group; + int f_affect; + int f_vmodsHigh; + int f_vmodsLow; + + item = proto_tree_add_item(root, hf_x11_struct_SAIsoLock, tvb, *offsetp, 8, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = field8(tvb, offsetp, t, hf_x11_struct_SAIsoLock_type, little_endian); + f_flags = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_flags, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_flags_mask_NoLock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_flags_mask_NoUnlock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_flags_mask_GroupAbsolute, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_flags_mask_ISODfltIsGroup, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_mask = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_mask, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_mask_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_realMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_realMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_realMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_group = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SAIsoLock_group, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_affect = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_affect, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_affect_mask_Ctrls, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_affect_mask_Ptr, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_affect_mask_Group, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_affect_mask_Mods, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_vmodsHigh = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_vmodsHigh, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_8, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_9, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_10, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_11, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_12, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_13, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_14, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsHigh_mask_15, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_vmodsLow = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAIsoLock_vmodsLow, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_0, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_6, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAIsoLock_vmodsLow_mask_7, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + } +} + +static void struct_SATerminate(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + + item = proto_tree_add_item(root, hf_x11_struct_SATerminate, tvb, *offsetp, 8, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = field8(tvb, offsetp, t, hf_x11_struct_SATerminate_type, little_endian); + UNUSED(7); + } +} + +static void struct_SASwitchScreen(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_flags; + int f_newScreen; + + item = proto_tree_add_item(root, hf_x11_struct_SASwitchScreen, tvb, *offsetp, 8, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = field8(tvb, offsetp, t, hf_x11_struct_SASwitchScreen_type, little_endian); + f_flags = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SASwitchScreen_flags, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_newScreen = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SASwitchScreen_newScreen, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(5); + } +} + +static void struct_SASetControls(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_boolCtrlsHigh; + int f_boolCtrlsLow; + + item = proto_tree_add_item(root, hf_x11_struct_SASetControls, tvb, *offsetp, 8, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = field8(tvb, offsetp, t, hf_x11_struct_SASetControls_type, little_endian); + UNUSED(3); + f_boolCtrlsHigh = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetControls_boolCtrlsHigh, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsHigh_mask_AccessXFeedback, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsHigh_mask_AudibleBell, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsHigh_mask_Overlay1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsHigh_mask_Overlay2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsHigh_mask_IgnoreGroupLock, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_boolCtrlsLow = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SASetControls_boolCtrlsLow, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_RepeatKeys, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_SlowKeys, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_BounceKeys, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_StickyKeys, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_MouseKeys, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_MouseKeysAccel, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_AccessXKeys, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SASetControls_boolCtrlsLow_mask_AccessXTimeout, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + UNUSED(2); + } +} + +static void struct_SAActionMessage(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_flags; + + item = proto_tree_add_item(root, hf_x11_struct_SAActionMessage, tvb, *offsetp, 3, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = field8(tvb, offsetp, t, hf_x11_struct_SAActionMessage_type, little_endian); + f_flags = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SAActionMessage_flags, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAActionMessage_flags_mask_OnPress, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAActionMessage_flags_mask_OnRelease, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SAActionMessage_flags_mask_GenKeyEvent, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + listOfByte(tvb, offsetp, t, hf_x11_struct_SAActionMessage_message, 6, little_endian); + } +} + +static void struct_SARedirectKey(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_newkey; + int f_mask; + int f_realModifiers; + int f_vmodsMaskHigh; + int f_vmodsMaskLow; + int f_vmodsHigh; + int f_vmodsLow; + + item = proto_tree_add_item(root, hf_x11_struct_SARedirectKey, tvb, *offsetp, 8, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = field8(tvb, offsetp, t, hf_x11_struct_SARedirectKey_type, little_endian); + f_newkey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SARedirectKey_newkey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_mask = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_mask, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_mask_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_realModifiers = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_realModifiers, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_realModifiers_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_vmodsMaskHigh = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_vmodsMaskHigh, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_8, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_9, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_10, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_11, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_12, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_13, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_14, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskHigh_mask_15, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_vmodsMaskLow = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_vmodsMaskLow, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_0, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_6, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsMaskLow_mask_7, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_vmodsHigh = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_vmodsHigh, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_8, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_9, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_10, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_11, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_12, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_13, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_14, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsHigh_mask_15, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_vmodsLow = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SARedirectKey_vmodsLow, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_0, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_6, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SARedirectKey_vmodsLow_mask_7, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + } +} + +static void struct_SADeviceBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_flags; + int f_count; + int f_button; + int f_device; + + item = proto_tree_add_item(root, hf_x11_struct_SADeviceBtn, tvb, *offsetp, 8, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = field8(tvb, offsetp, t, hf_x11_struct_SADeviceBtn_type, little_endian); + f_flags = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SADeviceBtn_flags, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_count = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SADeviceBtn_count, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_button = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SADeviceBtn_button, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_device = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SADeviceBtn_device, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(3); + } +} + +static void struct_SALockDeviceBtn(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_flags; + int f_button; + int f_device; + + item = proto_tree_add_item(root, hf_x11_struct_SALockDeviceBtn, tvb, *offsetp, 5, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = field8(tvb, offsetp, t, hf_x11_struct_SALockDeviceBtn_type, little_endian); + f_flags = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_struct_SALockDeviceBtn_flags, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SALockDeviceBtn_flags_mask_NoLock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_struct_SALockDeviceBtn_flags_mask_NoUnlock, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + UNUSED(1); + f_button = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SALockDeviceBtn_button, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_device = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SALockDeviceBtn_device, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + } +} + +static void struct_SADeviceValuator(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + int f_device; + int f_val1what; + int f_val1index; + int f_val1value; + int f_val2what; + int f_val2index; + int f_val2value; + + item = proto_tree_add_item(root, hf_x11_struct_SADeviceValuator, tvb, *offsetp, 8, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + f_type = field8(tvb, offsetp, t, hf_x11_struct_SADeviceValuator_type, little_endian); + f_device = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SADeviceValuator_device, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_val1what = field8(tvb, offsetp, t, hf_x11_struct_SADeviceValuator_val1what, little_endian); + f_val1index = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SADeviceValuator_val1index, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_val1value = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SADeviceValuator_val1value, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_val2what = field8(tvb, offsetp, t, hf_x11_struct_SADeviceValuator_val2what, little_endian); + f_val2index = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SADeviceValuator_val2index, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_val2value = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_struct_SADeviceValuator_val2value, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + } +} + +static void struct_Action(tvbuff_t *tvb, int *offsetp, proto_tree *root, int little_endian, int count) +{ + int i; + int base = *offsetp; + for (i = 0; i < count; i++) { + proto_item *item; + proto_tree *t; + int f_type; + item = proto_tree_add_item(root, hf_x11_union_Action, tvb, base, 8, little_endian); + t = proto_item_add_subtree(item, ett_x11_rectangle); + + *offsetp = base; + struct_SANoAction(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SASetMods(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SASetMods(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SASetMods(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SASetGroup(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SASetGroup(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SASetGroup(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SAMovePtr(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SAPtrBtn(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SALockPtrBtn(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SASetPtrDflt(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SAIsoLock(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SATerminate(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SASwitchScreen(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SASetControls(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SASetControls(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SAActionMessage(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SARedirectKey(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SADeviceBtn(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SALockDeviceBtn(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + struct_SADeviceValuator(tvb, offsetp, t, little_endian, 1); + *offsetp = base; + f_type = field8(tvb, offsetp, t, hf_x11_union_Action_type, little_endian); + base += 8; + } + *offsetp = base; +} + +static void xkbUseExtension(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_wantedMajor; + int f_wantedMinor; + f_wantedMajor = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_UseExtension_wantedMajor, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_wantedMinor = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_UseExtension_wantedMinor, tvb, *offsetp, 2, little_endian); + *offsetp += 2; +} +static void xkbUseExtension_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_supported; + int f_serverMajor; + int f_serverMinor; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-UseExtension"); + + REPLY(reply); + f_supported = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_UseExtension_reply_supported, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (xkb-UseExtension)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_serverMajor = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_UseExtension_reply_serverMajor, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_serverMinor = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_UseExtension_reply_serverMinor, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(20); +} + +static void xkbSelectEvents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_affectWhich; + int f_clear; + int f_selectAll; + int f_affectMap; + int f_map; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SelectEvents_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_affectWhich = field16(tvb, offsetp, t, hf_x11_xkb_SelectEvents_affectWhich, little_endian); + f_clear = field16(tvb, offsetp, t, hf_x11_xkb_SelectEvents_clear, little_endian); + f_selectAll = field16(tvb, offsetp, t, hf_x11_xkb_SelectEvents_selectAll, little_endian); + f_affectMap = field16(tvb, offsetp, t, hf_x11_xkb_SelectEvents_affectMap, little_endian); + f_map = field16(tvb, offsetp, t, hf_x11_xkb_SelectEvents_map, little_endian); + if (((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1 << 0)) != 0) { + int f_affectNewKeyboard; + int f_newKeyboardDetails; + f_affectNewKeyboard = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard_mask_Keycodes, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard_mask_Geometry, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_affectNewKeyboard_mask_DeviceID, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_newKeyboardDetails = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_NewKeyboardNotify_newKeyboardDetails, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_newKeyboardDetails_mask_Keycodes, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_newKeyboardDetails_mask_Geometry, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NewKeyboardNotify_newKeyboardDetails_mask_DeviceID, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + } + if (((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1 << 2)) != 0) { + int f_affectState; + int f_stateDetails; + f_affectState = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_StateNotify_affectState, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_ModifierState, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_ModifierBase, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_ModifierLatch, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_ModifierLock, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GroupState, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GroupBase, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GroupLatch, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GroupLock, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_CompatState, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_GrabMods, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_CompatGrabMods, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_LookupMods, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_CompatLookupMods, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_affectState_mask_PointerButtons, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_stateDetails = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_StateNotify_stateDetails, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_ModifierState, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_ModifierBase, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_ModifierLatch, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_ModifierLock, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GroupState, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GroupBase, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GroupLatch, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GroupLock, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_CompatState, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_GrabMods, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_CompatGrabMods, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_LookupMods, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_CompatLookupMods, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_StateNotify_stateDetails_mask_PointerButtons, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + } + if (((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1 << 3)) != 0) { + int f_affectCtrls; + int f_ctrlDetails; + f_affectCtrls = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_GroupsWrap, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_InternalMods, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_IgnoreLockMods, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_PerKeyRepeat, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_affectCtrls_mask_ControlsEnabled, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + f_ctrlDetails = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_GroupsWrap, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_InternalMods, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_IgnoreLockMods, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_PerKeyRepeat, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ControlsNotify_ctrlDetails_mask_ControlsEnabled, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + } + if (((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1 << 4)) != 0) { + int f_affectIndicatorState; + int f_indicatorStateDetails; + f_affectIndicatorState = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SelectEvents_IndicatorStateNotify_affectIndicatorState, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_indicatorStateDetails = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SelectEvents_IndicatorStateNotify_indicatorStateDetails, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if (((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1 << 5)) != 0) { + int f_affectIndicatorMap; + int f_indicatorMapDetails; + f_affectIndicatorMap = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SelectEvents_IndicatorMapNotify_affectIndicatorMap, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_indicatorMapDetails = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SelectEvents_IndicatorMapNotify_indicatorMapDetails, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if (((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1 << 6)) != 0) { + int f_affectNames; + int f_namesDetails; + f_affectNames = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_NamesNotify_affectNames, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Keycodes, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Geometry, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Symbols, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_PhysSymbols, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Types, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_Compat, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_KeyTypeNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_KTLevelNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_IndicatorNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_KeyNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_KeyAliases, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_VirtualModNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_GroupNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_affectNames_mask_RGNames, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_namesDetails = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Keycodes, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Geometry, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Symbols, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_PhysSymbols, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Types, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_Compat, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_KeyTypeNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_KTLevelNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_IndicatorNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_KeyNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_KeyAliases, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_VirtualModNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_GroupNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_NamesNotify_namesDetails_mask_RGNames, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + } + if (((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1 << 7)) != 0) { + int f_affectCompat; + int f_compatDetails; + f_affectCompat = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_CompatMapNotify_affectCompat, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_CompatMapNotify_affectCompat_mask_SymInterp, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_CompatMapNotify_affectCompat_mask_GroupCompat, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_compatDetails = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_CompatMapNotify_compatDetails, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_CompatMapNotify_compatDetails_mask_SymInterp, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_CompatMapNotify_compatDetails_mask_GroupCompat, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + } + if (((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1 << 8)) != 0) { + int f_affectBell; + int f_bellDetails; + f_affectBell = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SelectEvents_BellNotify_affectBell, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_bellDetails = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SelectEvents_BellNotify_bellDetails, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + } + if (((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1 << 9)) != 0) { + int f_affectMsgDetails; + int f_msgDetails; + f_affectMsgDetails = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ActionMessage_affectMsgDetails, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_msgDetails = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ActionMessage_msgDetails, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + } + if (((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1 << 10)) != 0) { + int f_affectAccessX; + int f_accessXDetails; + f_affectAccessX = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_SKPress, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_SKAccept, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_SKReject, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_SKRelease, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_BKAccept, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_BKReject, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_affectAccessX_mask_AXKWarning, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_accessXDetails = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_SKPress, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_SKAccept, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_SKReject, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_SKRelease, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_BKAccept, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_BKReject, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_AccessXNotify_accessXDetails_mask_AXKWarning, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + } + if (((f_affectWhich & ((~f_clear) & (~f_selectAll))) & (1 << 11)) != 0) { + int f_affectExtDev; + int f_extdevDetails; + f_affectExtDev = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_Keyboards, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_ButtonActions, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_IndicatorNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_affectExtDev_mask_IndicatorState, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_extdevDetails = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_Keyboards, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_ButtonActions, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_IndicatorNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SelectEvents_ExtensionDeviceNotify_extdevDetails_mask_IndicatorState, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + } +} + +static void xkbBell(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_bellClass; + int f_bellID; + int f_percent; + int f_forceSound; + int f_eventOnly; + int f_pitch; + int f_duration; + int f_name; + int f_window; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_Bell_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_bellClass = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_Bell_bellClass, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_bellID = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_Bell_bellID, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_percent = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_Bell_percent, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_forceSound = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_Bell_forceSound, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_eventOnly = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_Bell_eventOnly, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + f_pitch = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_Bell_pitch, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_duration = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_Bell_duration, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(2); + f_name = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_Bell_name, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_window = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_Bell_window, tvb, *offsetp, 4, little_endian); + *offsetp += 4; +} + +static void xkbGetState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetState_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(2); +} +static void xkbGetState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_deviceID; + int f_mods; + int f_baseMods; + int f_latchedMods; + int f_lockedMods; + int f_group; + int f_lockedGroup; + int f_baseGroup; + int f_latchedGroup; + int f_compatState; + int f_grabMods; + int f_compatGrabMods; + int f_compatLookupMods; + int f_ptrBtnState; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-GetState"); + + REPLY(reply); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetState_reply_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (xkb-GetState)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_mods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_mods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_mods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_baseMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_baseMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_baseMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_latchedMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_latchedMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_latchedMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_lockedMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_lockedMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_lockedMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_group = field8(tvb, offsetp, t, hf_x11_xkb_GetState_reply_group, little_endian); + f_lockedGroup = field8(tvb, offsetp, t, hf_x11_xkb_GetState_reply_lockedGroup, little_endian); + f_baseGroup = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetState_reply_baseGroup, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_latchedGroup = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetState_reply_latchedGroup, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_compatState = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_compatState, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatState_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_grabMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_grabMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_grabMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_compatGrabMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_compatGrabMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatGrabMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_compatLookupMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_compatLookupMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_compatLookupMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + UNUSED(1); + f_ptrBtnState = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetState_reply_ptrBtnState, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Shift, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Lock, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Control, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Mod5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetState_reply_ptrBtnState_mask_Button5, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + UNUSED(6); +} + +static void xkbLatchLockState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_affectModLocks; + int f_modLocks; + int f_lockGroup; + int f_groupLock; + int f_affectModLatches; + int f_latchGroup; + int f_groupLatch; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_LatchLockState_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_affectModLocks = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_LatchLockState_affectModLocks, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLocks_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_modLocks = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_LatchLockState_modLocks, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_modLocks_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_lockGroup = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_LatchLockState_lockGroup, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_groupLock = field8(tvb, offsetp, t, hf_x11_xkb_LatchLockState_groupLock, little_endian); + f_affectModLatches = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_LatchLockState_affectModLatches, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_LatchLockState_affectModLatches_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + UNUSED(1); + f_latchGroup = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_LatchLockState_latchGroup, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_groupLatch = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_LatchLockState_groupLatch, tvb, *offsetp, 2, little_endian); + *offsetp += 2; +} + +static void xkbGetControls(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetControls_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(2); +} +static void xkbGetControls_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_deviceID; + int f_mouseKeysDfltBtn; + int f_numGroups; + int f_groupsWrap; + int f_internalModsMask; + int f_ignoreLockModsMask; + int f_internalModsRealMods; + int f_ignoreLockModsRealMods; + int f_internalModsVmods; + int f_ignoreLockModsVmods; + int f_repeatDelay; + int f_repeatInterval; + int f_slowKeysDelay; + int f_debounceDelay; + int f_mouseKeysDelay; + int f_mouseKeysInterval; + int f_mouseKeysTimeToMax; + int f_mouseKeysMaxSpeed; + int f_mouseKeysCurve; + int f_accessXTimeout; + int f_accessXTimeoutMask; + int f_accessXTimeoutValues; + int f_enabledControls; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-GetControls"); + + REPLY(reply); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (xkb-GetControls)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_mouseKeysDfltBtn = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysDfltBtn, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_numGroups = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_numGroups, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_groupsWrap = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_groupsWrap, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_internalModsMask = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_internalModsMask, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsMask_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_ignoreLockModsMask = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_ignoreLockModsMask, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsMask_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_internalModsRealMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_internalModsRealMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsRealMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_ignoreLockModsRealMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsRealMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + UNUSED(1); + f_internalModsVmods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_internalModsVmods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_internalModsVmods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_ignoreLockModsVmods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetControls_reply_ignoreLockModsVmods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_repeatDelay = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_repeatDelay, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_repeatInterval = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_repeatInterval, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_slowKeysDelay = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_slowKeysDelay, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_debounceDelay = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_debounceDelay, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_mouseKeysDelay = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysDelay, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_mouseKeysInterval = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysInterval, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_mouseKeysTimeToMax = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysTimeToMax, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_mouseKeysMaxSpeed = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysMaxSpeed, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_mouseKeysCurve = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_mouseKeysCurve, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + struct_AXOption(tvb, offsetp, t, little_endian, 1); + f_accessXTimeout = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetControls_reply_accessXTimeout, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + struct_AXOption(tvb, offsetp, t, little_endian, 1); + struct_AXOption(tvb, offsetp, t, little_endian, 1); + UNUSED(2); + f_accessXTimeoutMask = field32(tvb, offsetp, t, hf_x11_xkb_GetControls_reply_accessXTimeoutMask, little_endian); + f_accessXTimeoutValues = field32(tvb, offsetp, t, hf_x11_xkb_GetControls_reply_accessXTimeoutValues, little_endian); + f_enabledControls = field32(tvb, offsetp, t, hf_x11_xkb_GetControls_reply_enabledControls, little_endian); + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetControls_reply_perKeyRepeat, 32, little_endian); +} + +static void xkbSetControls(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_affectInternalRealMods; + int f_interanlRealMods; + int f_affectIgnoreLockRealMods; + int f_ignoreLockRealMods; + int f_affectInternalVirtualMods; + int f_internalVirtualMods; + int f_affectInternalLockVirtualMods; + int f_internalLockVirtualMods; + int f_mouseKeysDfltBtn; + int f_groupsWrap; + int f_affectEnabledControls; + int f_enabledControls; + int f_changeControls; + int f_repeatDelay; + int f_repeatInterval; + int f_slowKeysDelay; + int f_debounceDelay; + int f_mouseKeysDelay; + int f_mouseKeysInterval; + int f_mouseKeysTimeToMax; + int f_mouseKeysMaxSpeed; + int f_mouseKeysCurve; + int f_accessXTimeout; + int f_accessXTimeoutMask; + int f_accessXTimeoutValues; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetControls_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_affectInternalRealMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_affectInternalRealMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalRealMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_interanlRealMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_interanlRealMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_interanlRealMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_affectIgnoreLockRealMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_affectIgnoreLockRealMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectIgnoreLockRealMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_ignoreLockRealMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_ignoreLockRealMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_ignoreLockRealMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_affectInternalVirtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_affectInternalVirtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalVirtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_internalVirtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_internalVirtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalVirtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_affectInternalLockVirtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_affectInternalLockVirtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_affectInternalLockVirtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_internalLockVirtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_internalLockVirtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_internalLockVirtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_mouseKeysDfltBtn = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysDfltBtn, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_groupsWrap = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetControls_groupsWrap, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + struct_AXOption(tvb, offsetp, t, little_endian, 1); + UNUSED(2); + f_affectEnabledControls = field32(tvb, offsetp, t, hf_x11_xkb_SetControls_affectEnabledControls, little_endian); + f_enabledControls = field32(tvb, offsetp, t, hf_x11_xkb_SetControls_enabledControls, little_endian); + f_changeControls = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetControls_changeControls, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_changeControls_mask_GroupsWrap, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_changeControls_mask_InternalMods, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_changeControls_mask_IgnoreLockMods, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_changeControls_mask_PerKeyRepeat, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetControls_changeControls_mask_ControlsEnabled, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + f_repeatDelay = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetControls_repeatDelay, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_repeatInterval = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetControls_repeatInterval, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_slowKeysDelay = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetControls_slowKeysDelay, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_debounceDelay = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetControls_debounceDelay, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_mouseKeysDelay = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysDelay, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_mouseKeysInterval = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysInterval, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_mouseKeysTimeToMax = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysTimeToMax, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_mouseKeysMaxSpeed = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysMaxSpeed, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_mouseKeysCurve = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetControls_mouseKeysCurve, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_accessXTimeout = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetControls_accessXTimeout, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_accessXTimeoutMask = field32(tvb, offsetp, t, hf_x11_xkb_SetControls_accessXTimeoutMask, little_endian); + f_accessXTimeoutValues = field32(tvb, offsetp, t, hf_x11_xkb_SetControls_accessXTimeoutValues, little_endian); + struct_AXOption(tvb, offsetp, t, little_endian, 1); + struct_AXOption(tvb, offsetp, t, little_endian, 1); + listOfByte(tvb, offsetp, t, hf_x11_xkb_SetControls_perKeyRepeat, 32, little_endian); + length -= 32 * 1; +} + +static void xkbGetMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_full; + int f_partial; + int f_firstType; + int f_nTypes; + int f_firstKeySym; + int f_nKeySyms; + int f_firstKeyAction; + int f_nKeyActions; + int f_firstKeyBehavior; + int f_nKeyBehaviors; + int f_virtualMods; + int f_firstKeyExplicit; + int f_nKeyExplicit; + int f_firstModMapKey; + int f_nModMapKeys; + int f_firstVModMapKey; + int f_nVModMapKeys; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_full = field16(tvb, offsetp, t, hf_x11_xkb_GetMap_full, little_endian); + f_partial = field16(tvb, offsetp, t, hf_x11_xkb_GetMap_partial, little_endian); + f_firstType = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_firstType, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nTypes = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_nTypes, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeySym = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_firstKeySym, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeySyms = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_nKeySyms, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyAction = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_firstKeyAction, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyActions = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_nKeyActions, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyBehavior = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_firstKeyBehavior, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyBehaviors = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_nKeyBehaviors, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_virtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetMap_virtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_virtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_firstKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_firstKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_nKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstModMapKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_firstModMapKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_nModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstVModMapKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_firstVModMapKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nVModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_nVModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(2); +} +static void xkbGetMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_deviceID; + int f_minKeyCode; + int f_maxKeyCode; + int f_present; + int f_firstType; + int f_nTypes; + int f_totalTypes; + int f_firstKeySym; + int f_totalSyms; + int f_nKeySyms; + int f_firstKeyAction; + int f_totalActions; + int f_nKeyActions; + int f_firstKeyBehavior; + int f_nKeyBehaviors; + int f_totalKeyBehaviors; + int f_firstKeyExplicit; + int f_nKeyExplicit; + int f_totalKeyExplicit; + int f_firstModMapKey; + int f_nModMapKeys; + int f_totalModMapKeys; + int f_firstVModMapKey; + int f_nVModMapKeys; + int f_totalVModMapKeys; + int f_virtualMods; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-GetMap"); + + REPLY(reply); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (xkb-GetMap)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + UNUSED(2); + f_minKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_minKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_maxKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_maxKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_present = field16(tvb, offsetp, t, hf_x11_xkb_GetMap_reply_present, little_endian); + f_firstType = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstType, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nTypes = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nTypes, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalTypes = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalTypes, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeySym = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstKeySym, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalSyms = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalSyms, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nKeySyms = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nKeySyms, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyAction = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstKeyAction, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalActions = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalActions, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nKeyActions = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nKeyActions, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyBehavior = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstKeyBehavior, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyBehaviors = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nKeyBehaviors, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalKeyBehaviors = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalKeyBehaviors, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstModMapKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstModMapKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstVModMapKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_firstVModMapKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nVModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_nVModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalVModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_totalVModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + f_virtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetMap_reply_virtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetMap_reply_virtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + if ((f_present & (1 << 0)) != 0) { + struct_KeyType(tvb, offsetp, t, little_endian, f_nTypes); + } + if ((f_present & (1 << 1)) != 0) { + struct_KeySymMap(tvb, offsetp, t, little_endian, f_nKeySyms); + } + if ((f_present & (1 << 4)) != 0) { + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetMap_reply_KeyActions_acts_rtrn_count, f_nKeyActions, little_endian); + struct_Action(tvb, offsetp, t, little_endian, f_totalActions); + } + if ((f_present & (1 << 5)) != 0) { + struct_SetBehavior(tvb, offsetp, t, little_endian, f_totalKeyBehaviors); + } + if ((f_present & (1 << 6)) != 0) { + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetMap_reply_VirtualMods_vmods_rtrn, f_nVModMapKeys, little_endian); + } + if ((f_present & (1 << 3)) != 0) { + struct_SetExplicit(tvb, offsetp, t, little_endian, f_totalKeyExplicit); + } + if ((f_present & (1 << 2)) != 0) { + struct_KeyModMap(tvb, offsetp, t, little_endian, f_totalModMapKeys); + } + if ((f_present & (1 << 7)) != 0) { + struct_KeyVModMap(tvb, offsetp, t, little_endian, f_totalVModMapKeys); + } +} + +static void xkbSetMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_present; + int f_flags; + int f_minKeyCode; + int f_maxKeyCode; + int f_firstType; + int f_nTypes; + int f_firstKeySym; + int f_nKeySyms; + int f_totalSyms; + int f_firstKeyAction; + int f_nKeyActions; + int f_totalActions; + int f_firstKeyBehavior; + int f_nKeyBehaviors; + int f_totalKeyBehaviors; + int f_firstKeyExplicit; + int f_nKeyExplicit; + int f_totalKeyExplicit; + int f_firstModMapKey; + int f_nModMapKeys; + int f_totalModMapKeys; + int f_firstVModMapKey; + int f_nVModMapKeys; + int f_totalVModMapKeys; + int f_virtualMods; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_present = field16(tvb, offsetp, t, hf_x11_xkb_SetMap_present, little_endian); + f_flags = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetMap_flags, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_flags_mask_ResizeTypes, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_flags_mask_RecomputeActions, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_minKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_minKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_maxKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_maxKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstType = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_firstType, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nTypes = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_nTypes, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeySym = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_firstKeySym, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeySyms = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_nKeySyms, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalSyms = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_totalSyms, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_firstKeyAction = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_firstKeyAction, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyActions = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_nKeyActions, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalActions = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_totalActions, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_firstKeyBehavior = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_firstKeyBehavior, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyBehaviors = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_nKeyBehaviors, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalKeyBehaviors = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_totalKeyBehaviors, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_firstKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_nKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_totalKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstModMapKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_firstModMapKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_nModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_totalModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstVModMapKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_firstVModMapKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nVModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_nVModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalVModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetMap_totalVModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_virtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetMap_virtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetMap_virtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + if ((f_present & (1 << 0)) != 0) { + struct_SetKeyType(tvb, offsetp, t, little_endian, f_nTypes); + length -= f_nTypes * 0; + } + if ((f_present & (1 << 1)) != 0) { + struct_KeySymMap(tvb, offsetp, t, little_endian, f_nKeySyms); + length -= f_nKeySyms * 0; + } + if ((f_present & (1 << 4)) != 0) { + listOfByte(tvb, offsetp, t, hf_x11_xkb_SetMap_KeyActions_actionsCount, f_nKeyActions, little_endian); + length -= f_nKeyActions * 1; + struct_Action(tvb, offsetp, t, little_endian, f_totalActions); + length -= f_totalActions * 8; + } + if ((f_present & (1 << 5)) != 0) { + struct_SetBehavior(tvb, offsetp, t, little_endian, f_totalKeyBehaviors); + length -= f_totalKeyBehaviors * 4; + } + if ((f_present & (1 << 6)) != 0) { + listOfByte(tvb, offsetp, t, hf_x11_xkb_SetMap_VirtualMods_vmods, f_nVModMapKeys, little_endian); + length -= f_nVModMapKeys * 1; + } + if ((f_present & (1 << 3)) != 0) { + struct_SetExplicit(tvb, offsetp, t, little_endian, f_totalKeyExplicit); + length -= f_totalKeyExplicit * 2; + } + if ((f_present & (1 << 2)) != 0) { + struct_KeyModMap(tvb, offsetp, t, little_endian, f_totalModMapKeys); + length -= f_totalModMapKeys * 2; + } + if ((f_present & (1 << 7)) != 0) { + struct_KeyVModMap(tvb, offsetp, t, little_endian, f_totalVModMapKeys); + length -= f_totalVModMapKeys * 4; + } +} + +static void xkbGetCompatMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_groups; + int f_getAllSI; + int f_firstSI; + int f_nSI; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_groups = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_groups, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_groups_mask_Group1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_groups_mask_Group2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_groups_mask_Group3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_groups_mask_Group4, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_getAllSI = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_getAllSI, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstSI = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_firstSI, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nSI = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_nSI, tvb, *offsetp, 2, little_endian); + *offsetp += 2; +} +static void xkbGetCompatMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_deviceID; + int f_groupsRtrn; + int f_firstSIRtrn; + int f_nSIRtrn; + int f_nTotalSI; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-GetCompatMap"); + + REPLY(reply); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (xkb-GetCompatMap)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_groupsRtrn = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_groupsRtrn, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_reply_groupsRtrn_mask_Group1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_reply_groupsRtrn_mask_Group2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_reply_groupsRtrn_mask_Group3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetCompatMap_reply_groupsRtrn_mask_Group4, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + UNUSED(1); + f_firstSIRtrn = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_firstSIRtrn, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nSIRtrn = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_nSIRtrn, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nTotalSI = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetCompatMap_reply_nTotalSI, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(16); + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetCompatMap_reply_si_rtrn, (16 * f_nSIRtrn), little_endian); + struct_ModDef(tvb, offsetp, t, little_endian, popcount(f_groupsRtrn)); +} + +static void xkbSetCompatMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_recomputeActions; + int f_truncateSI; + int f_groups; + int f_firstSI; + int f_nSI; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(1); + f_recomputeActions = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_recomputeActions, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_truncateSI = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_truncateSI, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_groups = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_groups, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetCompatMap_groups_mask_Group1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetCompatMap_groups_mask_Group2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetCompatMap_groups_mask_Group3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetCompatMap_groups_mask_Group4, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_firstSI = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_firstSI, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nSI = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetCompatMap_nSI, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(2); + listOfByte(tvb, offsetp, t, hf_x11_xkb_SetCompatMap_si, (16 * f_nSI), little_endian); + length -= (16 * f_nSI) * 1; + struct_ModDef(tvb, offsetp, t, little_endian, popcount(f_groups)); + length -= popcount(f_groups) * 4; +} + +static void xkbGetIndicatorState(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetIndicatorState_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(2); +} +static void xkbGetIndicatorState_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_deviceID; + int f_state; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-GetIndicatorState"); + + REPLY(reply); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetIndicatorState_reply_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (xkb-GetIndicatorState)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_state = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetIndicatorState_reply_state, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + UNUSED(20); +} + +static void xkbGetIndicatorMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_which; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(2); + f_which = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_which, tvb, *offsetp, 4, little_endian); + *offsetp += 4; +} +static void xkbGetIndicatorMap_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_deviceID; + int f_which; + int f_realIndicators; + int f_nIndicators; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-GetIndicatorMap"); + + REPLY(reply); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_reply_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (xkb-GetIndicatorMap)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_which = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_reply_which, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_realIndicators = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_reply_realIndicators, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_nIndicators = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetIndicatorMap_reply_nIndicators, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(15); + struct_IndicatorMap(tvb, offsetp, t, little_endian, f_nIndicators); +} + +static void xkbSetIndicatorMap(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_which; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetIndicatorMap_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(2); + f_which = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetIndicatorMap_which, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + struct_IndicatorMap(tvb, offsetp, t, little_endian, popcount(f_which)); + length -= popcount(f_which) * 12; +} + +static void xkbGetNamedIndicator(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_ledClass; + int f_ledID; + int f_indicator; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_ledClass = field16(tvb, offsetp, t, hf_x11_xkb_GetNamedIndicator_ledClass, little_endian); + f_ledID = field16(tvb, offsetp, t, hf_x11_xkb_GetNamedIndicator_ledID, little_endian); + UNUSED(2); + f_indicator = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_indicator, tvb, *offsetp, 4, little_endian); + *offsetp += 4; +} +static void xkbGetNamedIndicator_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_deviceID; + int f_indicator; + int f_found; + int f_on; + int f_realIndicator; + int f_ndx; + int f_map_flags; + int f_map_whichGroups; + int f_map_groups; + int f_map_whichMods; + int f_map_mods; + int f_map_realMods; + int f_map_vmod; + int f_map_ctrls; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-GetNamedIndicator"); + + REPLY(reply); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (xkb-GetNamedIndicator)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_indicator = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_indicator, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_found = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_found, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_on = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_on, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_realIndicator = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_realIndicator, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_ndx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_ndx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_map_flags = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_flags, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_flags_mask_LEDDrivesKB, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_flags_mask_NoAutomatic, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_flags_mask_NoExplicit, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_map_whichGroups = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseBase, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseLatched, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseLocked, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseEffective, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichGroups_mask_UseCompat, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_map_groups = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_groups, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_groups_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_map_whichMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseBase, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseLatched, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseLocked, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseEffective, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_whichMods_mask_UseCompat, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_map_mods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_mods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_mods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_map_realMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_realMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_realMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_map_vmod = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_vmod, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_vmod_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_map_ctrls = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_RepeatKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_SlowKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_BounceKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_StickyKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_MouseKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_AccessXKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNamedIndicator_reply_map_ctrls_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + UNUSED(3); +} + +static void xkbSetNamedIndicator(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_ledClass; + int f_ledID; + int f_indicator; + int f_setState; + int f_on; + int f_setMap; + int f_createMap; + int f_map_flags; + int f_map_whichGroups; + int f_map_groups; + int f_map_whichMods; + int f_map_realMods; + int f_map_vmods; + int f_map_ctrls; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_ledClass = field16(tvb, offsetp, t, hf_x11_xkb_SetNamedIndicator_ledClass, little_endian); + f_ledID = field16(tvb, offsetp, t, hf_x11_xkb_SetNamedIndicator_ledID, little_endian); + UNUSED(2); + f_indicator = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_indicator, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_setState = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_setState, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_on = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_on, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_setMap = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_setMap, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_createMap = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_createMap, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + f_map_flags = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_flags, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_flags_mask_LEDDrivesKB, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_flags_mask_NoAutomatic, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_flags_mask_NoExplicit, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_map_whichGroups = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_whichGroups, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseBase, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseLatched, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseLocked, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseEffective, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichGroups_mask_UseCompat, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_map_groups = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_groups, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_groups_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_map_whichMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_whichMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseBase, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseLatched, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseLocked, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseEffective, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_whichMods_mask_UseCompat, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_map_realMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_realMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_realMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_map_vmods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_vmods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_vmods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_map_ctrls = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNamedIndicator_map_ctrls, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_RepeatKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_SlowKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_BounceKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_StickyKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_MouseKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_AccessXKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNamedIndicator_map_ctrls_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; +} + +static void xkbGetNames(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_which; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNames_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(2); + f_which = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNames_which, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_Keycodes, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_Geometry, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_Symbols, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_PhysSymbols, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_Types, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_Compat, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_KeyTypeNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_KTLevelNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_IndicatorNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_KeyNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_KeyAliases, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_VirtualModNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_GroupNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_which_mask_RGNames, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; +} +static void xkbGetNames_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_deviceID; + int f_which; + int f_minKeyCode; + int f_maxKeyCode; + int f_nTypes; + int f_groupNames; + int f_virtualMods; + int f_firstKey; + int f_nKeys; + int f_indicators; + int f_nRadioGroups; + int f_nKeyAliases; + int f_nKTLevels; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-GetNames"); + + REPLY(reply); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (xkb-GetNames)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_which = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_which, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_Keycodes, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_Geometry, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_Symbols, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_PhysSymbols, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_Types, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_Compat, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_KeyTypeNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_KTLevelNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_IndicatorNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_KeyNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_KeyAliases, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_VirtualModNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_GroupNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_which_mask_RGNames, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + f_minKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_minKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_maxKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_maxKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nTypes = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nTypes, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_groupNames = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_groupNames, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_groupNames_mask_Group1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_groupNames_mask_Group2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_groupNames_mask_Group3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_groupNames_mask_Group4, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_virtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_virtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetNames_reply_virtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_firstKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_firstKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_indicators = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_indicators, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_nRadioGroups = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nRadioGroups, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyAliases = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nKeyAliases, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKTLevels = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_nKTLevels, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(4); + if ((f_which & (1 << 0)) != 0) { + int f_keycodesName; + f_keycodesName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Keycodes_keycodesName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 1)) != 0) { + int f_geometryName; + f_geometryName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Geometry_geometryName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 2)) != 0) { + int f_symbolsName; + f_symbolsName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Symbols_symbolsName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 3)) != 0) { + int f_physSymbolsName; + f_physSymbolsName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_PhysSymbols_physSymbolsName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 4)) != 0) { + int f_typesName; + f_typesName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Types_typesName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 5)) != 0) { + int f_compatName; + f_compatName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetNames_reply_Compat_compatName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 6)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_KeyTypeNames_typeNames, hf_x11_xkb_GetNames_reply_KeyTypeNames_typeNames_item, f_nTypes, little_endian); + } + if ((f_which & (1 << 7)) != 0) { + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_KTLevelNames_nLevelsPerType, f_nKTLevels, little_endian); + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_KTLevelNames_ktLevelNames, hf_x11_xkb_GetNames_reply_KTLevelNames_ktLevelNames_item, (length - 56) / 4, little_endian); + } + if ((f_which & (1 << 8)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_IndicatorNames_indicatorNames, hf_x11_xkb_GetNames_reply_IndicatorNames_indicatorNames_item, popcount(f_indicators), little_endian); + } + if ((f_which & (1 << 11)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_VirtualModNames_virtualModNames, hf_x11_xkb_GetNames_reply_VirtualModNames_virtualModNames_item, popcount(f_virtualMods), little_endian); + } + if ((f_which & (1 << 12)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_GroupNames_groups, hf_x11_xkb_GetNames_reply_GroupNames_groups_item, popcount(f_groupNames), little_endian); + } + if ((f_which & (1 << 9)) != 0) { + struct_KeyName(tvb, offsetp, t, little_endian, f_nKeys); + } + if ((f_which & (1 << 10)) != 0) { + struct_KeyAlias(tvb, offsetp, t, little_endian, f_nKeyAliases); + } + if ((f_which & (1 << 13)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetNames_reply_RGNames_radioGroupNames, hf_x11_xkb_GetNames_reply_RGNames_radioGroupNames_item, f_nRadioGroups, little_endian); + } +} + +static void xkbSetNames(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_virtualMods; + int f_which; + int f_firstType; + int f_nTypes; + int f_firstKTLevelt; + int f_nKTLevels; + int f_indicators; + int f_groupNames; + int f_nRadioGroups; + int f_firstKey; + int f_nKeys; + int f_nKeyAliases; + int f_totalKTLevelNames; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNames_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_virtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNames_virtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_virtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_which = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNames_which, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_Keycodes, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_Geometry, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_Symbols, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_PhysSymbols, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_Types, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_Compat, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_KeyTypeNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_KTLevelNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_IndicatorNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_KeyNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_KeyAliases, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_VirtualModNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_GroupNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_which_mask_RGNames, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + f_firstType = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNames_firstType, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nTypes = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNames_nTypes, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKTLevelt = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNames_firstKTLevelt, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKTLevels = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNames_nKTLevels, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_indicators = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNames_indicators, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_groupNames = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetNames_groupNames, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_groupNames_mask_Group1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_groupNames_mask_Group2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_groupNames_mask_Group3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetNames_groupNames_mask_Group4, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_nRadioGroups = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNames_nRadioGroups, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNames_firstKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNames_nKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyAliases = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNames_nKeyAliases, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + f_totalKTLevelNames = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNames_totalKTLevelNames, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + if ((f_which & (1 << 0)) != 0) { + int f_keycodesName; + f_keycodesName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNames_Keycodes_keycodesName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 1)) != 0) { + int f_geometryName; + f_geometryName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNames_Geometry_geometryName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 2)) != 0) { + int f_symbolsName; + f_symbolsName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNames_Symbols_symbolsName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 3)) != 0) { + int f_physSymbolsName; + f_physSymbolsName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNames_PhysSymbols_physSymbolsName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 4)) != 0) { + int f_typesName; + f_typesName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNames_Types_typesName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 5)) != 0) { + int f_compatName; + f_compatName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetNames_Compat_compatName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 6)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_KeyTypeNames_typeNames, hf_x11_xkb_SetNames_KeyTypeNames_typeNames_item, f_nTypes, little_endian); + length -= f_nTypes * 4; + } + if ((f_which & (1 << 7)) != 0) { + listOfByte(tvb, offsetp, t, hf_x11_xkb_SetNames_KTLevelNames_nLevelsPerType, f_nKTLevels, little_endian); + length -= f_nKTLevels * 1; + listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_KTLevelNames_ktLevelNames, hf_x11_xkb_SetNames_KTLevelNames_ktLevelNames_item, (length - 52) / 4, little_endian); + length -= (length - 52) / 4 * 4; + } + if ((f_which & (1 << 8)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_IndicatorNames_indicatorNames, hf_x11_xkb_SetNames_IndicatorNames_indicatorNames_item, popcount(f_indicators), little_endian); + length -= popcount(f_indicators) * 4; + } + if ((f_which & (1 << 11)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_VirtualModNames_virtualModNames, hf_x11_xkb_SetNames_VirtualModNames_virtualModNames_item, popcount(f_virtualMods), little_endian); + length -= popcount(f_virtualMods) * 4; + } + if ((f_which & (1 << 12)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_GroupNames_groups, hf_x11_xkb_SetNames_GroupNames_groups_item, popcount(f_groupNames), little_endian); + length -= popcount(f_groupNames) * 4; + } + if ((f_which & (1 << 9)) != 0) { + struct_KeyName(tvb, offsetp, t, little_endian, f_nKeys); + length -= f_nKeys * 1; + } + if ((f_which & (1 << 10)) != 0) { + struct_KeyAlias(tvb, offsetp, t, little_endian, f_nKeyAliases); + length -= f_nKeyAliases * 2; + } + if ((f_which & (1 << 13)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_SetNames_RGNames_radioGroupNames, hf_x11_xkb_SetNames_RGNames_radioGroupNames_item, f_nRadioGroups, little_endian); + length -= f_nRadioGroups * 4; + } +} + +static void xkbGetGeometry(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_name; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetGeometry_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(2); + f_name = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetGeometry_name, tvb, *offsetp, 4, little_endian); + *offsetp += 4; +} +static void xkbGetGeometry_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_deviceID; + int f_name; + int f_found; + int f_widthMM; + int f_heightMM; + int f_nProperties; + int f_nColors; + int f_nShapes; + int f_nSections; + int f_nDoodads; + int f_nKeyAliases; + int f_baseColorNdx; + int f_labelColorNdx; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-GetGeometry"); + + REPLY(reply); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (xkb-GetGeometry)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_name = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_name, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_found = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_found, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + f_widthMM = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_widthMM, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_heightMM = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_heightMM, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nProperties = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nProperties, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nColors = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nColors, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nShapes = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nShapes, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nSections = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nSections, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nDoodads = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nDoodads, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nKeyAliases = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_nKeyAliases, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_baseColorNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_baseColorNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_labelColorNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetGeometry_reply_labelColorNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + struct_CountedString16(tvb, offsetp, t, little_endian, 1); + struct_Property(tvb, offsetp, t, little_endian, f_nProperties); + struct_CountedString16(tvb, offsetp, t, little_endian, f_nColors); + struct_Shape(tvb, offsetp, t, little_endian, f_nShapes); + struct_Section(tvb, offsetp, t, little_endian, f_nSections); + struct_Doodad(tvb, offsetp, t, little_endian, f_nDoodads); + struct_KeyAlias(tvb, offsetp, t, little_endian, f_nKeyAliases); +} + +static void xkbSetGeometry(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_nShapes; + int f_nSections; + int f_name; + int f_widthMM; + int f_heightMM; + int f_nProperties; + int f_nColors; + int f_nDoodads; + int f_nKeyAliases; + int f_baseColorNdx; + int f_labelColorNdx; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetGeometry_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nShapes = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nShapes, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nSections = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nSections, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_name = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetGeometry_name, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_widthMM = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetGeometry_widthMM, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_heightMM = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetGeometry_heightMM, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nProperties = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nProperties, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nColors = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nColors, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nDoodads = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nDoodads, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nKeyAliases = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetGeometry_nKeyAliases, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_baseColorNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetGeometry_baseColorNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_labelColorNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetGeometry_labelColorNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(2); + struct_CountedString16(tvb, offsetp, t, little_endian, 1); + struct_Property(tvb, offsetp, t, little_endian, f_nProperties); + length -= f_nProperties * 0; + struct_CountedString16(tvb, offsetp, t, little_endian, f_nColors); + length -= f_nColors * 0; + struct_Shape(tvb, offsetp, t, little_endian, f_nShapes); + length -= f_nShapes * 0; + struct_Section(tvb, offsetp, t, little_endian, f_nSections); + length -= f_nSections * 0; + struct_Doodad(tvb, offsetp, t, little_endian, f_nDoodads); + length -= f_nDoodads * 20; + struct_KeyAlias(tvb, offsetp, t, little_endian, f_nKeyAliases); + length -= f_nKeyAliases * 2; +} + +static void xkbPerClientFlags(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_change; + int f_value; + int f_ctrlsToChange; + int f_autoCtrls; + int f_autoCtrlsValues; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(2); + f_change = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_change, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_change_mask_DetectableAutoRepeat, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_change_mask_GrabsUseXKBState, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_change_mask_AutoResetControls, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_change_mask_LookupStateWhenGrabbed, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_change_mask_SendEventUsesXKBState, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + f_value = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_value, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_value_mask_DetectableAutoRepeat, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_value_mask_GrabsUseXKBState, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_value_mask_AutoResetControls, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_value_mask_LookupStateWhenGrabbed, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_value_mask_SendEventUsesXKBState, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + f_ctrlsToChange = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_ctrlsToChange, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_RepeatKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_SlowKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_BounceKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_StickyKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_MouseKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_AccessXKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_ctrlsToChange_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + f_autoCtrls = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_autoCtrls, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_RepeatKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_SlowKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_BounceKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_StickyKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_MouseKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_AccessXKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrls_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + f_autoCtrlsValues = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_autoCtrlsValues, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_RepeatKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_SlowKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_BounceKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_StickyKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_MouseKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_AccessXKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_autoCtrlsValues_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; +} +static void xkbPerClientFlags_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_deviceID; + int f_supported; + int f_value; + int f_autoCtrls; + int f_autoCtrlsValues; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-PerClientFlags"); + + REPLY(reply); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_reply_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (xkb-PerClientFlags)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_supported = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_reply_supported, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_supported_mask_DetectableAutoRepeat, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_supported_mask_GrabsUseXKBState, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_supported_mask_AutoResetControls, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_supported_mask_LookupStateWhenGrabbed, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_supported_mask_SendEventUsesXKBState, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + f_value = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_reply_value, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_value_mask_DetectableAutoRepeat, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_value_mask_GrabsUseXKBState, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_value_mask_AutoResetControls, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_value_mask_LookupStateWhenGrabbed, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_value_mask_SendEventUsesXKBState, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + f_autoCtrls = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_reply_autoCtrls, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_RepeatKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_SlowKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_BounceKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_StickyKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_MouseKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_AccessXKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrls_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + f_autoCtrlsValues = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_RepeatKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_SlowKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_BounceKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_StickyKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_MouseKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_AccessXKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_PerClientFlags_reply_autoCtrlsValues_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + UNUSED(8); +} + +static void xkbListComponents(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_maxNames; + int f_keymapsSpecLen; + int f_keycodesSpecLen; + int f_typesSpecLen; + int f_compatMapSpecLen; + int f_symbolsSpecLen; + int f_geometrySpecLen; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ListComponents_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_maxNames = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ListComponents_maxNames, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_keymapsSpecLen = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ListComponents_keymapsSpecLen, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_keymapsSpec, f_keymapsSpecLen, little_endian); + length -= f_keymapsSpecLen * 1; + f_keycodesSpecLen = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ListComponents_keycodesSpecLen, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_keycodesSpec, f_keycodesSpecLen, little_endian); + length -= f_keycodesSpecLen * 1; + f_typesSpecLen = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ListComponents_typesSpecLen, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_typesSpec, f_typesSpecLen, little_endian); + length -= f_typesSpecLen * 1; + f_compatMapSpecLen = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ListComponents_compatMapSpecLen, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_compatMapSpec, f_compatMapSpecLen, little_endian); + length -= f_compatMapSpecLen * 1; + f_symbolsSpecLen = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ListComponents_symbolsSpecLen, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_symbolsSpec, f_symbolsSpecLen, little_endian); + length -= f_symbolsSpecLen * 1; + f_geometrySpecLen = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ListComponents_geometrySpecLen, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + listOfByte(tvb, offsetp, t, hf_x11_xkb_ListComponents_geometrySpec, f_geometrySpecLen, little_endian); + length -= f_geometrySpecLen * 1; +} +static void xkbListComponents_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_deviceID; + int f_nKeymaps; + int f_nKeycodes; + int f_nTypes; + int f_nCompatMaps; + int f_nSymbols; + int f_nGeometries; + int f_extra; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-ListComponents"); + + REPLY(reply); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (xkb-ListComponents)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_nKeymaps = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nKeymaps, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nKeycodes = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nKeycodes, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nTypes = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nTypes, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nCompatMaps = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nCompatMaps, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nSymbols = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nSymbols, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nGeometries = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_nGeometries, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_extra = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ListComponents_reply_extra, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(10); + struct_Listing(tvb, offsetp, t, little_endian, f_nKeymaps); + struct_Listing(tvb, offsetp, t, little_endian, f_nKeycodes); + struct_Listing(tvb, offsetp, t, little_endian, f_nTypes); + struct_Listing(tvb, offsetp, t, little_endian, f_nCompatMaps); + struct_Listing(tvb, offsetp, t, little_endian, f_nSymbols); + struct_Listing(tvb, offsetp, t, little_endian, f_nGeometries); +} + +static void xkbGetKbdByName(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_need; + int f_want; + int f_load; + int f_keymapsSpecLen; + int f_keycodesSpecLen; + int f_typesSpecLen; + int f_compatMapSpecLen; + int f_symbolsSpecLen; + int f_geometrySpecLen; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_need = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_need, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_Types, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_CompatMap, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_ClientSymbols, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_ServerSymbols, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_KeyNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_Geometry, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_need_mask_OtherNames, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_want = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_want, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_Types, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_CompatMap, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_ClientSymbols, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_ServerSymbols, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_KeyNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_Geometry, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_want_mask_OtherNames, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_load = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_load, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + f_keymapsSpecLen = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_keymapsSpecLen, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_keymapsSpec, f_keymapsSpecLen, little_endian); + length -= f_keymapsSpecLen * 1; + f_keycodesSpecLen = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_keycodesSpecLen, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_keycodesSpec, f_keycodesSpecLen, little_endian); + length -= f_keycodesSpecLen * 1; + f_typesSpecLen = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_typesSpecLen, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_typesSpec, f_typesSpecLen, little_endian); + length -= f_typesSpecLen * 1; + f_compatMapSpecLen = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_compatMapSpecLen, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_compatMapSpec, f_compatMapSpecLen, little_endian); + length -= f_compatMapSpecLen * 1; + f_symbolsSpecLen = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_symbolsSpecLen, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_symbolsSpec, f_symbolsSpecLen, little_endian); + length -= f_symbolsSpecLen * 1; + f_geometrySpecLen = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_geometrySpecLen, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_geometrySpec, f_geometrySpecLen, little_endian); + length -= f_geometrySpecLen * 1; +} +static void xkbGetKbdByName_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_deviceID; + int f_minKeyCode; + int f_maxKeyCode; + int f_loaded; + int f_newKeyboard; + int f_found; + int f_reported; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-GetKbdByName"); + + REPLY(reply); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (xkb-GetKbdByName)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_minKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_minKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_maxKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_maxKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_loaded = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_loaded, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_newKeyboard = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_newKeyboard, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_found = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_found, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_Types, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_CompatMap, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_ClientSymbols, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_ServerSymbols, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_KeyNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_Geometry, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_found_mask_OtherNames, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_reported = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_reported, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_Types, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_CompatMap, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_ClientSymbols, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_ServerSymbols, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_KeyNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_Geometry, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_reported_mask_OtherNames, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + UNUSED(16); + if ((f_reported & (1 << 0)) != 0) { + int f_typeDeviceID; + int f_typeMinKeyCode; + int f_typeMaxKeyCode; + int f_present; + int f_firstType; + int f_nTypes; + int f_totalTypes; + int f_firstKeySym; + int f_totalSyms; + int f_nKeySyms; + int f_firstKeyAction; + int f_totalActions; + int f_nKeyActions; + int f_firstKeyBehavior; + int f_nKeyBehaviors; + int f_totalKeyBehaviors; + int f_firstKeyExplicit; + int f_nKeyExplicit; + int f_totalKeyExplicit; + int f_firstModMapKey; + int f_nModMapKeys; + int f_totalModMapKeys; + int f_firstVModMapKey; + int f_nVModMapKeys; + int f_totalVModMapKeys; + int f_virtualMods; + f_typeDeviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_typeDeviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(2); + f_typeMinKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_typeMinKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_typeMaxKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_typeMaxKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_present = field16(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_Types_present, little_endian); + f_firstType = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstType, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nTypes = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nTypes, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalTypes = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalTypes, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeySym = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstKeySym, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalSyms = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalSyms, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nKeySyms = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nKeySyms, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyAction = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstKeyAction, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalActions = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalActions, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nKeyActions = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nKeyActions, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyBehavior = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstKeyBehavior, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyBehaviors = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nKeyBehaviors, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalKeyBehaviors = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalKeyBehaviors, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstModMapKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstModMapKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstVModMapKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_firstVModMapKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nVModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_nVModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalVModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_totalVModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + f_virtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_Types_virtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + if ((f_present & (1 << 0)) != 0) { + struct_KeyType(tvb, offsetp, t, little_endian, f_nTypes); + } + if ((f_present & (1 << 1)) != 0) { + struct_KeySymMap(tvb, offsetp, t, little_endian, f_nKeySyms); + } + if ((f_present & (1 << 4)) != 0) { + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_Types_KeyActions_acts_rtrn_count, f_nKeyActions, little_endian); + struct_Action(tvb, offsetp, t, little_endian, f_totalActions); + } + if ((f_present & (1 << 5)) != 0) { + struct_SetBehavior(tvb, offsetp, t, little_endian, f_totalKeyBehaviors); + } + if ((f_present & (1 << 6)) != 0) { + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_Types_VirtualMods_vmods_rtrn, f_nVModMapKeys, little_endian); + } + if ((f_present & (1 << 3)) != 0) { + struct_SetExplicit(tvb, offsetp, t, little_endian, f_totalKeyExplicit); + } + if ((f_present & (1 << 2)) != 0) { + struct_KeyModMap(tvb, offsetp, t, little_endian, f_totalModMapKeys); + } + if ((f_present & (1 << 7)) != 0) { + struct_KeyVModMap(tvb, offsetp, t, little_endian, f_totalVModMapKeys); + } + } + if ((f_reported & (1 << 1)) != 0) { + int f_compatDeviceID; + int f_groupsRtrn; + int f_firstSIRtrn; + int f_nSIRtrn; + int f_nTotalSI; + f_compatDeviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_compatDeviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_groupsRtrn = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn_mask_Group1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn_mask_Group2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn_mask_Group3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_CompatMap_groupsRtrn_mask_Group4, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + UNUSED(1); + f_firstSIRtrn = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_firstSIRtrn, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nSIRtrn = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_nSIRtrn, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nTotalSI = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_CompatMap_nTotalSI, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(16); + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_CompatMap_si_rtrn, (16 * f_nSIRtrn), little_endian); + struct_ModDef(tvb, offsetp, t, little_endian, popcount(f_groupsRtrn)); + } + if ((f_reported & (1 << 2)) != 0) { + int f_clientDeviceID; + int f_clientMinKeyCode; + int f_clientMaxKeyCode; + int f_present; + int f_firstType; + int f_nTypes; + int f_totalTypes; + int f_firstKeySym; + int f_totalSyms; + int f_nKeySyms; + int f_firstKeyAction; + int f_totalActions; + int f_nKeyActions; + int f_firstKeyBehavior; + int f_nKeyBehaviors; + int f_totalKeyBehaviors; + int f_firstKeyExplicit; + int f_nKeyExplicit; + int f_totalKeyExplicit; + int f_firstModMapKey; + int f_nModMapKeys; + int f_totalModMapKeys; + int f_firstVModMapKey; + int f_nVModMapKeys; + int f_totalVModMapKeys; + int f_virtualMods; + f_clientDeviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_clientDeviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(2); + f_clientMinKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_clientMinKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_clientMaxKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_clientMaxKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_present = field16(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_present, little_endian); + f_firstType = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstType, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nTypes = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nTypes, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalTypes = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalTypes, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeySym = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstKeySym, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalSyms = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalSyms, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nKeySyms = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nKeySyms, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyAction = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstKeyAction, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalActions = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalActions, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nKeyActions = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nKeyActions, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyBehavior = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstKeyBehavior, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyBehaviors = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nKeyBehaviors, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalKeyBehaviors = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalKeyBehaviors, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstModMapKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstModMapKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstVModMapKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_firstVModMapKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nVModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_nVModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalVModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_totalVModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + f_virtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_virtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + if ((f_present & (1 << 0)) != 0) { + struct_KeyType(tvb, offsetp, t, little_endian, f_nTypes); + } + if ((f_present & (1 << 1)) != 0) { + struct_KeySymMap(tvb, offsetp, t, little_endian, f_nKeySyms); + } + if ((f_present & (1 << 4)) != 0) { + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_KeyActions_acts_rtrn_count, f_nKeyActions, little_endian); + struct_Action(tvb, offsetp, t, little_endian, f_totalActions); + } + if ((f_present & (1 << 5)) != 0) { + struct_SetBehavior(tvb, offsetp, t, little_endian, f_totalKeyBehaviors); + } + if ((f_present & (1 << 6)) != 0) { + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ClientSymbols_VirtualMods_vmods_rtrn, f_nVModMapKeys, little_endian); + } + if ((f_present & (1 << 3)) != 0) { + struct_SetExplicit(tvb, offsetp, t, little_endian, f_totalKeyExplicit); + } + if ((f_present & (1 << 2)) != 0) { + struct_KeyModMap(tvb, offsetp, t, little_endian, f_totalModMapKeys); + } + if ((f_present & (1 << 7)) != 0) { + struct_KeyVModMap(tvb, offsetp, t, little_endian, f_totalVModMapKeys); + } + } + if ((f_reported & (1 << 3)) != 0) { + int f_serverDeviceID; + int f_serverMinKeyCode; + int f_serverMaxKeyCode; + int f_present; + int f_firstType; + int f_nTypes; + int f_totalTypes; + int f_firstKeySym; + int f_totalSyms; + int f_nKeySyms; + int f_firstKeyAction; + int f_totalActions; + int f_nKeyActions; + int f_firstKeyBehavior; + int f_nKeyBehaviors; + int f_totalKeyBehaviors; + int f_firstKeyExplicit; + int f_nKeyExplicit; + int f_totalKeyExplicit; + int f_firstModMapKey; + int f_nModMapKeys; + int f_totalModMapKeys; + int f_firstVModMapKey; + int f_nVModMapKeys; + int f_totalVModMapKeys; + int f_virtualMods; + f_serverDeviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_serverDeviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(2); + f_serverMinKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_serverMinKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_serverMaxKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_serverMaxKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_present = field16(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_present, little_endian); + f_firstType = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstType, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nTypes = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nTypes, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalTypes = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalTypes, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeySym = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstKeySym, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalSyms = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalSyms, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nKeySyms = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nKeySyms, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyAction = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstKeyAction, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalActions = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalActions, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nKeyActions = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nKeyActions, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyBehavior = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstKeyBehavior, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyBehaviors = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nKeyBehaviors, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalKeyBehaviors = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalKeyBehaviors, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstModMapKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstModMapKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstVModMapKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_firstVModMapKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nVModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_nVModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalVModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_totalVModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + f_virtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_virtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + if ((f_present & (1 << 0)) != 0) { + struct_KeyType(tvb, offsetp, t, little_endian, f_nTypes); + } + if ((f_present & (1 << 1)) != 0) { + struct_KeySymMap(tvb, offsetp, t, little_endian, f_nKeySyms); + } + if ((f_present & (1 << 4)) != 0) { + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_KeyActions_acts_rtrn_count, f_nKeyActions, little_endian); + struct_Action(tvb, offsetp, t, little_endian, f_totalActions); + } + if ((f_present & (1 << 5)) != 0) { + struct_SetBehavior(tvb, offsetp, t, little_endian, f_totalKeyBehaviors); + } + if ((f_present & (1 << 6)) != 0) { + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_ServerSymbols_VirtualMods_vmods_rtrn, f_nVModMapKeys, little_endian); + } + if ((f_present & (1 << 3)) != 0) { + struct_SetExplicit(tvb, offsetp, t, little_endian, f_totalKeyExplicit); + } + if ((f_present & (1 << 2)) != 0) { + struct_KeyModMap(tvb, offsetp, t, little_endian, f_totalModMapKeys); + } + if ((f_present & (1 << 7)) != 0) { + struct_KeyVModMap(tvb, offsetp, t, little_endian, f_totalVModMapKeys); + } + } + if ((f_reported & (1 << 4)) != 0) { + int f_indicatorDeviceID; + int f_which; + int f_realIndicators; + int f_nIndicators; + f_indicatorDeviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_indicatorDeviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_which = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_which, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_realIndicators = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_realIndicators, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_nIndicators = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_IndicatorMaps_nIndicators, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(15); + struct_IndicatorMap(tvb, offsetp, t, little_endian, f_nIndicators); + } + if ((f_reported & (1 << 5)) != 0) { + int f_keyDeviceID; + int f_which; + int f_keyMinKeyCode; + int f_keyMaxKeyCode; + int f_nTypes; + int f_groupNames; + int f_virtualMods; + int f_firstKey; + int f_nKeys; + int f_indicators; + int f_nRadioGroups; + int f_nKeyAliases; + int f_nKTLevels; + f_keyDeviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_keyDeviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_which = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_which, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Keycodes, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Geometry, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Symbols, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_PhysSymbols, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Types, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_Compat, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_KeyTypeNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_KTLevelNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_IndicatorNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_KeyNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_KeyAliases, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_VirtualModNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_GroupNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_which_mask_RGNames, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + f_keyMinKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_keyMinKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_keyMaxKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_keyMaxKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nTypes = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nTypes, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_groupNames = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames_mask_Group1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames_mask_Group2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames_mask_Group3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_groupNames_mask_Group4, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_virtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_KeyNames_virtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_firstKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_firstKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_indicators = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_indicators, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_nRadioGroups = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nRadioGroups, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyAliases = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nKeyAliases, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKTLevels = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_nKTLevels, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(4); + if ((f_which & (1 << 0)) != 0) { + int f_keycodesName; + f_keycodesName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Keycodes_keycodesName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 1)) != 0) { + int f_geometryName; + f_geometryName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Geometry_geometryName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 2)) != 0) { + int f_symbolsName; + f_symbolsName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Symbols_symbolsName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 3)) != 0) { + int f_physSymbolsName; + f_physSymbolsName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_PhysSymbols_physSymbolsName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 4)) != 0) { + int f_typesName; + f_typesName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Types_typesName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 5)) != 0) { + int f_compatName; + f_compatName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_KeyNames_Compat_compatName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 6)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_KeyTypeNames_typeNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_KeyTypeNames_typeNames_item, f_nTypes, little_endian); + } + if ((f_which & (1 << 7)) != 0) { + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_KTLevelNames_nLevelsPerType, f_nKTLevels, little_endian); + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_KTLevelNames_ktLevelNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_KTLevelNames_ktLevelNames_item, (length - 230) / 4, little_endian); + } + if ((f_which & (1 << 8)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_IndicatorNames_indicatorNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_IndicatorNames_indicatorNames_item, popcount(f_indicators), little_endian); + } + if ((f_which & (1 << 11)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_VirtualModNames_virtualModNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_VirtualModNames_virtualModNames_item, popcount(f_virtualMods), little_endian); + } + if ((f_which & (1 << 12)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_GroupNames_groups, hf_x11_xkb_GetKbdByName_reply_KeyNames_GroupNames_groups_item, popcount(f_groupNames), little_endian); + } + if ((f_which & (1 << 9)) != 0) { + struct_KeyName(tvb, offsetp, t, little_endian, f_nKeys); + } + if ((f_which & (1 << 10)) != 0) { + struct_KeyAlias(tvb, offsetp, t, little_endian, f_nKeyAliases); + } + if ((f_which & (1 << 13)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_KeyNames_RGNames_radioGroupNames, hf_x11_xkb_GetKbdByName_reply_KeyNames_RGNames_radioGroupNames_item, f_nRadioGroups, little_endian); + } + } + if ((f_reported & (1 << 7)) != 0) { + int f_otherDeviceID; + int f_which; + int f_otherMinKeyCode; + int f_otherMaxKeyCode; + int f_nTypes; + int f_groupNames; + int f_virtualMods; + int f_firstKey; + int f_nKeys; + int f_indicators; + int f_nRadioGroups; + int f_nKeyAliases; + int f_nKTLevels; + f_otherDeviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_otherDeviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_which = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_which, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_Keycodes, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_Geometry, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_Symbols, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_PhysSymbols, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_Types, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_Compat, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_KeyTypeNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_KTLevelNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_IndicatorNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_KeyNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_KeyAliases, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_VirtualModNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_GroupNames, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_which_mask_RGNames, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + f_otherMinKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_otherMinKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_otherMaxKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_otherMaxKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nTypes = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_nTypes, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_groupNames = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_groupNames, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_groupNames_mask_Group1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_groupNames_mask_Group2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_groupNames_mask_Group3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_groupNames_mask_Group4, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_virtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetKbdByName_reply_OtherNames_virtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_firstKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_firstKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_nKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_indicators = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_indicators, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_nRadioGroups = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_nRadioGroups, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyAliases = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_nKeyAliases, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKTLevels = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_nKTLevels, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(4); + if ((f_which & (1 << 0)) != 0) { + int f_keycodesName; + f_keycodesName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_Keycodes_keycodesName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 1)) != 0) { + int f_geometryName; + f_geometryName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_Geometry_geometryName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 2)) != 0) { + int f_symbolsName; + f_symbolsName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_Symbols_symbolsName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 3)) != 0) { + int f_physSymbolsName; + f_physSymbolsName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_PhysSymbols_physSymbolsName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 4)) != 0) { + int f_typesName; + f_typesName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_Types_typesName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 5)) != 0) { + int f_compatName; + f_compatName = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_OtherNames_Compat_compatName, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + } + if ((f_which & (1 << 6)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_KeyTypeNames_typeNames, hf_x11_xkb_GetKbdByName_reply_OtherNames_KeyTypeNames_typeNames_item, f_nTypes, little_endian); + } + if ((f_which & (1 << 7)) != 0) { + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_KTLevelNames_nLevelsPerType, f_nKTLevels, little_endian); + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_KTLevelNames_ktLevelNames, hf_x11_xkb_GetKbdByName_reply_OtherNames_KTLevelNames_ktLevelNames_item, (length - 279) / 4, little_endian); + } + if ((f_which & (1 << 8)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_IndicatorNames_indicatorNames, hf_x11_xkb_GetKbdByName_reply_OtherNames_IndicatorNames_indicatorNames_item, popcount(f_indicators), little_endian); + } + if ((f_which & (1 << 11)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_VirtualModNames_virtualModNames, hf_x11_xkb_GetKbdByName_reply_OtherNames_VirtualModNames_virtualModNames_item, popcount(f_virtualMods), little_endian); + } + if ((f_which & (1 << 12)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_GroupNames_groups, hf_x11_xkb_GetKbdByName_reply_OtherNames_GroupNames_groups_item, popcount(f_groupNames), little_endian); + } + if ((f_which & (1 << 9)) != 0) { + struct_KeyName(tvb, offsetp, t, little_endian, f_nKeys); + } + if ((f_which & (1 << 10)) != 0) { + struct_KeyAlias(tvb, offsetp, t, little_endian, f_nKeyAliases); + } + if ((f_which & (1 << 13)) != 0) { + listOfCard32(tvb, offsetp, t, hf_x11_xkb_GetKbdByName_reply_OtherNames_RGNames_radioGroupNames, hf_x11_xkb_GetKbdByName_reply_OtherNames_RGNames_radioGroupNames_item, f_nRadioGroups, little_endian); + } + } + if ((f_reported & (1 << 6)) != 0) { + int f_geometryDeviceID; + int f_name; + int f_geometryFound; + int f_widthMM; + int f_heightMM; + int f_nProperties; + int f_nColors; + int f_nShapes; + int f_nSections; + int f_nDoodads; + int f_nKeyAliases; + int f_baseColorNdx; + int f_labelColorNdx; + f_geometryDeviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_geometryDeviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_name = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_name, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_geometryFound = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_geometryFound, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + f_widthMM = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_widthMM, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_heightMM = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_heightMM, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nProperties = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nProperties, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nColors = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nColors, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nShapes = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nShapes, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nSections = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nSections, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nDoodads = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nDoodads, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nKeyAliases = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_nKeyAliases, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_baseColorNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_baseColorNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_labelColorNdx = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetKbdByName_reply_Geometry_labelColorNdx, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + struct_CountedString16(tvb, offsetp, t, little_endian, 1); + struct_Property(tvb, offsetp, t, little_endian, f_nProperties); + struct_CountedString16(tvb, offsetp, t, little_endian, f_nColors); + struct_Shape(tvb, offsetp, t, little_endian, f_nShapes); + struct_Section(tvb, offsetp, t, little_endian, f_nSections); + struct_Doodad(tvb, offsetp, t, little_endian, f_nDoodads); + struct_KeyAlias(tvb, offsetp, t, little_endian, f_nKeyAliases); + } +} + +static void xkbGetDeviceInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_wanted; + int f_allButtons; + int f_firstButton; + int f_nButtons; + int f_ledClass; + int f_ledID; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_wanted = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_wanted, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_wanted_mask_Keyboards, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_wanted_mask_ButtonActions, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_wanted_mask_IndicatorNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_wanted_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_wanted_mask_IndicatorState, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_allButtons = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_allButtons, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstButton = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_firstButton, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nButtons = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_nButtons, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + f_ledClass = field16(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_ledClass, little_endian); + f_ledID = field16(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_ledID, little_endian); +} +static void xkbGetDeviceInfo_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_deviceID; + int f_present; + int f_supported; + int f_unsupported; + int f_nDeviceLedFBs; + int f_firstBtnWanted; + int f_nBtnsWanted; + int f_firstBtnRtrn; + int f_nBtnsRtrn; + int f_totalBtns; + int f_hasOwnState; + int f_dfltKbdFB; + int f_dfltLedFB; + int f_devType; + int f_nameLen; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-GetDeviceInfo"); + + REPLY(reply); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (xkb-GetDeviceInfo)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_present = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_present, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_present_mask_Keyboards, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_present_mask_ButtonActions, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_present_mask_IndicatorNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_present_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_present_mask_IndicatorState, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_supported = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_supported, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_supported_mask_Keyboards, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_supported_mask_ButtonActions, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_supported_mask_IndicatorNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_supported_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_supported_mask_IndicatorState, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_unsupported = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_unsupported, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_Keyboards, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_ButtonActions, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_IndicatorNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_GetDeviceInfo_reply_unsupported_mask_IndicatorState, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_nDeviceLedFBs = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_nDeviceLedFBs, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_firstBtnWanted = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_firstBtnWanted, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nBtnsWanted = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_nBtnsWanted, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstBtnRtrn = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_firstBtnRtrn, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nBtnsRtrn = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_nBtnsRtrn, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_totalBtns = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_totalBtns, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_hasOwnState = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_hasOwnState, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_dfltKbdFB = field16(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_reply_dfltKbdFB, little_endian); + f_dfltLedFB = field16(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_reply_dfltLedFB, little_endian); + UNUSED(2); + f_devType = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_devType, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_nameLen = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_GetDeviceInfo_reply_nameLen, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + listOfByte(tvb, offsetp, t, hf_x11_xkb_GetDeviceInfo_reply_name, f_nameLen, little_endian); + struct_Action(tvb, offsetp, t, little_endian, f_nBtnsRtrn); + struct_DeviceLedInfo(tvb, offsetp, t, little_endian, f_nDeviceLedFBs); +} + +static void xkbSetDeviceInfo(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_deviceSpec; + int f_firstBtn; + int f_nBtns; + int f_change; + int f_nDeviceLedFBs; + f_deviceSpec = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_deviceSpec, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_firstBtn = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_firstBtn, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nBtns = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_nBtns, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_change = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_change, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetDeviceInfo_change_mask_Keyboards, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetDeviceInfo_change_mask_ButtonActions, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetDeviceInfo_change_mask_IndicatorNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetDeviceInfo_change_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_SetDeviceInfo_change_mask_IndicatorState, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_nDeviceLedFBs = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetDeviceInfo_nDeviceLedFBs, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + struct_Action(tvb, offsetp, t, little_endian, f_nBtns); + length -= f_nBtns * 8; + struct_DeviceLedInfo(tvb, offsetp, t, little_endian, f_nDeviceLedFBs); + length -= f_nDeviceLedFBs * 0; +} + +static void xkbSetDebuggingFlags(tvbuff_t *tvb, packet_info *pinfo _U_, int *offsetp, proto_tree *t, int little_endian, int length _U_) +{ + int f_msgLength; + int f_affectFlags; + int f_flags; + int f_affectCtrls; + int f_ctrls; + f_msgLength = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_msgLength, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(2); + f_affectFlags = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_affectFlags, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_flags = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_flags, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_affectCtrls = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_affectCtrls, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_ctrls = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_ctrls, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + listOfByte(tvb, offsetp, t, hf_x11_xkb_SetDebuggingFlags_message, f_msgLength, little_endian); + length -= f_msgLength * 1; +} +static void xkbSetDebuggingFlags_Reply(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int f_length, length, sequence_number; + int f_currentFlags; + int f_currentCtrls; + int f_supportedFlags; + int f_supportedCtrls; + + col_append_fstr(pinfo->cinfo, COL_INFO, "-SetDebuggingFlags"); + + REPLY(reply); + UNUSED(1); + sequence_number = VALUE16(tvb, *offsetp); + proto_tree_add_uint_format(t, hf_x11_reply_sequencenumber, tvb, *offsetp, 2, sequence_number, + "sequencenumber: %d (xkb-SetDebuggingFlags)", sequence_number); + *offsetp += 2; + f_length = VALUE32(tvb, *offsetp); + length = f_length * 4 + 32; + proto_tree_add_item(t, hf_x11_replylength, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_currentFlags = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_reply_currentFlags, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_currentCtrls = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_reply_currentCtrls, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_supportedFlags = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_reply_supportedFlags, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_supportedCtrls = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_SetDebuggingFlags_reply_supportedCtrls, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + UNUSED(8); +} + +static void xkbNewKeyboardNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian) +{ + int f_time; + int f_deviceID; + int f_oldDeviceID; + int f_minKeyCode; + int f_maxKeyCode; + int f_oldMinKeyCode; + int f_oldMaxKeyCode; + int f_requestMajor; + int f_requestMinor; + int f_changed; + f_time = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_time, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + CARD16(event_sequencenumber); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_oldDeviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_oldDeviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_minKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_minKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_maxKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_maxKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_oldMinKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_oldMinKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_oldMaxKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_oldMaxKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_requestMajor = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_requestMajor, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_requestMinor = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_requestMinor, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_changed = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_NewKeyboardNotify_changed, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NewKeyboardNotify_changed_mask_Keycodes, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NewKeyboardNotify_changed_mask_Geometry, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NewKeyboardNotify_changed_mask_DeviceID, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + UNUSED(14); +} + +static void xkbMapNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian) +{ + int f_time; + int f_deviceID; + int f_ptrBtnActions; + int f_changed; + int f_minKeyCode; + int f_maxKeyCode; + int f_firstType; + int f_nTypes; + int f_firstKeySym; + int f_nKeySyms; + int f_firstKeyAct; + int f_nKeyActs; + int f_firstKeyBehavior; + int f_nKeyBehavior; + int f_firstKeyExplicit; + int f_nKeyExplicit; + int f_firstModMapKey; + int f_nModMapKeys; + int f_firstVModMapKey; + int f_nVModMapKeys; + int f_virtualMods; + f_time = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_time, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + CARD16(event_sequencenumber); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_ptrBtnActions = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_ptrBtnActions, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_changed = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_MapNotify_changed, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_KeyTypes, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_KeySyms, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_ModifierMap, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_ExplicitComponents, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_KeyActions, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_KeyBehaviors, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_VirtualMods, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_changed_mask_VirtualModMap, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_minKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_minKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_maxKeyCode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_maxKeyCode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstType = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstType, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nTypes = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_nTypes, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeySym = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstKeySym, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeySyms = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_nKeySyms, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyAct = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstKeyAct, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyActs = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_nKeyActs, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyBehavior = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstKeyBehavior, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyBehavior = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_nKeyBehavior, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyExplicit = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_nKeyExplicit, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstModMapKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstModMapKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_nModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstVModMapKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_firstVModMapKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nVModMapKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_MapNotify_nVModMapKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_virtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_MapNotify_virtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_MapNotify_virtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + UNUSED(2); +} + +static void xkbStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian) +{ + int f_time; + int f_deviceID; + int f_mods; + int f_baseMods; + int f_latchedMods; + int f_lockedMods; + int f_group; + int f_baseGroup; + int f_latchedGroup; + int f_lockedGroup; + int f_compatState; + int f_grabMods; + int f_compatGrabMods; + int f_lookupMods; + int f_compatLoockupMods; + int f_ptrBtnState; + int f_changed; + int f_keycode; + int f_eventType; + int f_requestMajor; + int f_requestMinor; + f_time = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_StateNotify_time, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + CARD16(event_sequencenumber); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_StateNotify_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_mods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_mods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_mods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_baseMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_baseMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_baseMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_latchedMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_latchedMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_latchedMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_lockedMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_lockedMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lockedMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_group = field8(tvb, offsetp, t, hf_x11_xkb_StateNotify_group, little_endian); + f_baseGroup = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_StateNotify_baseGroup, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_latchedGroup = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_StateNotify_latchedGroup, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_lockedGroup = field8(tvb, offsetp, t, hf_x11_xkb_StateNotify_lockedGroup, little_endian); + f_compatState = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_compatState, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatState_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_grabMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_grabMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_grabMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_compatGrabMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_compatGrabMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatGrabMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_lookupMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_lookupMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_lookupMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_compatLoockupMods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_compatLoockupMods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_compatLoockupMods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_ptrBtnState = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_ptrBtnState, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Shift, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Lock, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Control, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Mod5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Button1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Button2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Button3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Button4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_ptrBtnState_mask_Button5, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_changed = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_StateNotify_changed, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_ModifierState, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_ModifierBase, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_ModifierLatch, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_ModifierLock, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_GroupState, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_GroupBase, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_GroupLatch, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_GroupLock, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_CompatState, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_GrabMods, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_CompatGrabMods, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_LookupMods, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_CompatLookupMods, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_StateNotify_changed_mask_PointerButtons, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_keycode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_StateNotify_keycode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_eventType = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_StateNotify_eventType, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_requestMajor = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_StateNotify_requestMajor, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_requestMinor = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_StateNotify_requestMinor, tvb, *offsetp, 1, little_endian); + *offsetp += 1; +} + +static void xkbControlsNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian) +{ + int f_time; + int f_deviceID; + int f_numGroups; + int f_changedControls; + int f_enabledControls; + int f_enabledControlChanges; + int f_keycode; + int f_eventType; + int f_requestMajor; + int f_requestMinor; + f_time = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_time, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + CARD16(event_sequencenumber); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_numGroups = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_numGroups, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(2); + f_changedControls = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_changedControls, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_changedControls_mask_GroupsWrap, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_changedControls_mask_InternalMods, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_changedControls_mask_IgnoreLockMods, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_changedControls_mask_PerKeyRepeat, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_changedControls_mask_ControlsEnabled, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + f_enabledControls = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_enabledControls, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_RepeatKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_SlowKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_BounceKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_StickyKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_MouseKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_AccessXKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControls_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + f_enabledControlChanges = VALUE32(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_enabledControlChanges, tvb, *offsetp, 4, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_RepeatKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_SlowKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_BounceKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_StickyKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_MouseKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_MouseKeysAccel, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_AccessXKeys, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_AccessXTimeoutMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_AccessXFeedbackMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_AudibleBellMask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_Overlay1Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_Overlay2Mask, tvb, *offsetp, 4, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ControlsNotify_enabledControlChanges_mask_IgnoreGroupLockMask, tvb, *offsetp, 4, little_endian); + } + *offsetp += 4; + f_keycode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_keycode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_eventType = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_eventType, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_requestMajor = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_requestMajor, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_requestMinor = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ControlsNotify_requestMinor, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(4); +} + +static void xkbIndicatorStateNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian) +{ + int f_time; + int f_deviceID; + int f_state; + int f_stateChanged; + f_time = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_IndicatorStateNotify_time, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + CARD16(event_sequencenumber); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_IndicatorStateNotify_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(3); + f_state = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_IndicatorStateNotify_state, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_stateChanged = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_IndicatorStateNotify_stateChanged, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + UNUSED(12); +} + +static void xkbIndicatorMapNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian) +{ + int f_time; + int f_deviceID; + int f_state; + int f_mapChanged; + f_time = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_IndicatorMapNotify_time, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + CARD16(event_sequencenumber); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_IndicatorMapNotify_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(3); + f_state = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_IndicatorMapNotify_state, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_mapChanged = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_IndicatorMapNotify_mapChanged, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + UNUSED(12); +} + +static void xkbNamesNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian) +{ + int f_time; + int f_deviceID; + int f_changed; + int f_firstType; + int f_nTypes; + int f_firstLevelName; + int f_nLevelNames; + int f_nRadioGroups; + int f_nKeyAliases; + int f_changedGroupNames; + int f_changedVirtualMods; + int f_firstKey; + int f_nKeys; + int f_changedIndicators; + f_time = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NamesNotify_time, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + CARD16(event_sequencenumber); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NamesNotify_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + f_changed = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_NamesNotify_changed, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_Keycodes, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_Geometry, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_Symbols, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_PhysSymbols, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_Types, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_Compat, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_KeyTypeNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_KTLevelNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_IndicatorNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_KeyNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_KeyAliases, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_VirtualModNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_GroupNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changed_mask_RGNames, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_firstType = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NamesNotify_firstType, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nTypes = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nTypes, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_firstLevelName = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NamesNotify_firstLevelName, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nLevelNames = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nLevelNames, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + f_nRadioGroups = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nRadioGroups, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeyAliases = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nKeyAliases, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_changedGroupNames = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_NamesNotify_changedGroupNames, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedGroupNames_mask_Group1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedGroupNames_mask_Group2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedGroupNames_mask_Group3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedGroupNames_mask_Group4, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_changedVirtualMods = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_NamesNotify_changedVirtualMods, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_0, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_1, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_2, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_3, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_4, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_5, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_6, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_7, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_8, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_9, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_10, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_11, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_12, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_13, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_14, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_NamesNotify_changedVirtualMods_mask_15, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_firstKey = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NamesNotify_firstKey, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nKeys = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NamesNotify_nKeys, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_changedIndicators = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_NamesNotify_changedIndicators, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + UNUSED(4); +} + +static void xkbCompatMapNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian) +{ + int f_time; + int f_deviceID; + int f_changedGroups; + int f_firstSI; + int f_nSI; + int f_nTotalSI; + f_time = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_time, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + CARD16(event_sequencenumber); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_changedGroups = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_changedGroups, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_CompatMapNotify_changedGroups_mask_Group1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_CompatMapNotify_changedGroups_mask_Group2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_CompatMapNotify_changedGroups_mask_Group3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_CompatMapNotify_changedGroups_mask_Group4, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_firstSI = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_firstSI, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nSI = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_nSI, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_nTotalSI = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_CompatMapNotify_nTotalSI, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(16); +} + +static void xkbBellNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian) +{ + int f_time; + int f_deviceID; + int f_bellClass; + int f_bellID; + int f_percent; + int f_pitch; + int f_duration; + int f_name; + int f_window; + int f_eventOnly; + f_time = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_BellNotify_time, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + CARD16(event_sequencenumber); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_BellNotify_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_bellClass = field8(tvb, offsetp, t, hf_x11_xkb_BellNotify_bellClass, little_endian); + f_bellID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_BellNotify_bellID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_percent = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_BellNotify_percent, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_pitch = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_BellNotify_pitch, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_duration = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_BellNotify_duration, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_name = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_BellNotify_name, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_window = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_BellNotify_window, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_eventOnly = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_BellNotify_eventOnly, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(7); +} + +static void xkbActionMessage(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian) +{ + int f_time; + int f_deviceID; + int f_keycode; + int f_press; + int f_keyEventFollows; + int f_mods; + int f_group; + f_time = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ActionMessage_time, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + CARD16(event_sequencenumber); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ActionMessage_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_keycode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ActionMessage_keycode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_press = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ActionMessage_press, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_keyEventFollows = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ActionMessage_keyEventFollows, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_mods = VALUE8(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ActionMessage_mods, tvb, *offsetp, 1, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_Shift, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_Lock, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_Control, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_1, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_2, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_3, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_4, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_5, tvb, *offsetp, 1, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ActionMessage_mods_mask_Any, tvb, *offsetp, 1, little_endian); + } + *offsetp += 1; + f_group = field8(tvb, offsetp, t, hf_x11_xkb_ActionMessage_group, little_endian); + listOfByte(tvb, offsetp, t, hf_x11_xkb_ActionMessage_message, 8, little_endian); + UNUSED(10); +} + +static void xkbAccessXNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian) +{ + int f_time; + int f_deviceID; + int f_keycode; + int f_detailt; + int f_slowKeysDelay; + int f_debounceDelay; + f_time = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_time, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + CARD16(event_sequencenumber); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_keycode = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_keycode, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_detailt = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_detailt, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_SKPress, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_SKAccept, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_SKReject, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_SKRelease, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_BKAccept, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_BKReject, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_AccessXNotify_detailt_mask_AXKWarning, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_slowKeysDelay = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_slowKeysDelay, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + f_debounceDelay = VALUE16(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_AccessXNotify_debounceDelay, tvb, *offsetp, 2, little_endian); + *offsetp += 2; + UNUSED(16); +} + +static void xkbExtensionDeviceNotify(tvbuff_t *tvb, int *offsetp, proto_tree *t, int little_endian) +{ + int f_time; + int f_deviceID; + int f_reason; + int f_ledClass; + int f_ledID; + int f_ledsDefined; + int f_ledState; + int f_firstButton; + int f_nButtons; + int f_supported; + int f_unsupported; + f_time = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_time, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + CARD16(event_sequencenumber); + f_deviceID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_deviceID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + UNUSED(1); + f_reason = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_reason, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_reason_mask_Keyboards, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_reason_mask_ButtonActions, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_reason_mask_IndicatorNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_reason_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_reason_mask_IndicatorState, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_ledClass = field16(tvb, offsetp, t, hf_x11_xkb_ExtensionDeviceNotify_ledClass, little_endian); + f_ledID = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_ledID, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_ledsDefined = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_ledsDefined, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_ledState = VALUE32(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_ledState, tvb, *offsetp, 4, little_endian); + *offsetp += 4; + f_firstButton = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_firstButton, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_nButtons = VALUE8(tvb, *offsetp); + proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_nButtons, tvb, *offsetp, 1, little_endian); + *offsetp += 1; + f_supported = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_supported, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_supported_mask_Keyboards, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_supported_mask_ButtonActions, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_supported_mask_IndicatorNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_supported_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_supported_mask_IndicatorState, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + f_unsupported = VALUE16(tvb, *offsetp); + { + proto_item *ti = proto_tree_add_item(t, hf_x11_xkb_ExtensionDeviceNotify_unsupported, tvb, *offsetp, 2, little_endian); + proto_tree *bitmask_tree = proto_item_add_subtree(ti, ett_x11_rectangle); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_Keyboards, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_ButtonActions, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_IndicatorNames, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_IndicatorMaps, tvb, *offsetp, 2, little_endian); + proto_tree_add_item(bitmask_tree, hf_x11_xkb_ExtensionDeviceNotify_unsupported_mask_IndicatorState, tvb, *offsetp, 2, little_endian); + } + *offsetp += 2; + UNUSED(2); +} +static const value_string xkb_extension_minor[] = { + { 0, "UseExtension" }, + { 1, "SelectEvents" }, + { 3, "Bell" }, + { 4, "GetState" }, + { 5, "LatchLockState" }, + { 6, "GetControls" }, + { 7, "SetControls" }, + { 8, "GetMap" }, + { 9, "SetMap" }, + { 10, "GetCompatMap" }, + { 11, "SetCompatMap" }, + { 12, "GetIndicatorState" }, + { 13, "GetIndicatorMap" }, + { 14, "SetIndicatorMap" }, + { 15, "GetNamedIndicator" }, + { 16, "SetNamedIndicator" }, + { 17, "GetNames" }, + { 18, "SetNames" }, + { 19, "GetGeometry" }, + { 20, "SetGeometry" }, + { 21, "PerClientFlags" }, + { 22, "ListComponents" }, + { 23, "GetKbdByName" }, + { 24, "GetDeviceInfo" }, + { 25, "SetDeviceInfo" }, + { 101, "SetDebuggingFlags" }, + { 0, NULL } +}; +const x11_event_info xkb_events[] = { + { "xkb-NewKeyboardNotify", xkbNewKeyboardNotify }, + { "xkb-MapNotify", xkbMapNotify }, + { "xkb-StateNotify", xkbStateNotify }, + { "xkb-ControlsNotify", xkbControlsNotify }, + { "xkb-IndicatorStateNotify", xkbIndicatorStateNotify }, + { "xkb-IndicatorMapNotify", xkbIndicatorMapNotify }, + { "xkb-NamesNotify", xkbNamesNotify }, + { "xkb-CompatMapNotify", xkbCompatMapNotify }, + { "xkb-BellNotify", xkbBellNotify }, + { "xkb-ActionMessage", xkbActionMessage }, + { "xkb-AccessXNotify", xkbAccessXNotify }, + { "xkb-ExtensionDeviceNotify", xkbExtensionDeviceNotify }, + { NULL, NULL } +}; +static x11_reply_info xkb_replies[] = { + { 0, xkbUseExtension_Reply }, + { 4, xkbGetState_Reply }, + { 6, xkbGetControls_Reply }, + { 8, xkbGetMap_Reply }, + { 10, xkbGetCompatMap_Reply }, + { 12, xkbGetIndicatorState_Reply }, + { 13, xkbGetIndicatorMap_Reply }, + { 15, xkbGetNamedIndicator_Reply }, + { 17, xkbGetNames_Reply }, + { 19, xkbGetGeometry_Reply }, + { 21, xkbPerClientFlags_Reply }, + { 22, xkbListComponents_Reply }, + { 23, xkbGetKbdByName_Reply }, + { 24, xkbGetDeviceInfo_Reply }, + { 101, xkbSetDebuggingFlags_Reply }, + { 0, NULL } +}; + +static void dispatch_xkb(tvbuff_t *tvb, packet_info *pinfo, int *offsetp, proto_tree *t, int little_endian) +{ + int minor, length; + minor = CARD8(xkb_extension_minor); + length = REQUEST_LENGTH(); + + col_append_fstr(pinfo->cinfo, COL_INFO, "-%s", + val_to_str(minor, xkb_extension_minor, + "<Unknown opcode %d>")); + switch (minor) { + case 0: + xkbUseExtension(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 1: + xkbSelectEvents(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 3: + xkbBell(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 4: + xkbGetState(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 5: + xkbLatchLockState(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 6: + xkbGetControls(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 7: + xkbSetControls(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 8: + xkbGetMap(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 9: + xkbSetMap(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 10: + xkbGetCompatMap(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 11: + xkbSetCompatMap(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 12: + xkbGetIndicatorState(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 13: + xkbGetIndicatorMap(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 14: + xkbSetIndicatorMap(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 15: + xkbGetNamedIndicator(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 16: + xkbSetNamedIndicator(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 17: + xkbGetNames(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 18: + xkbSetNames(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 19: + xkbGetGeometry(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 20: + xkbSetGeometry(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 21: + xkbPerClientFlags(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 22: + xkbListComponents(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 23: + xkbGetKbdByName(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 24: + xkbGetDeviceInfo(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 25: + xkbSetDeviceInfo(tvb, pinfo, offsetp, t, little_endian, length); + break; + case 101: + xkbSetDebuggingFlags(tvb, pinfo, offsetp, t, little_endian, length); + break; + /* No need for a default case here, since Unknown is printed above, + and UNDECODED() is taken care of by dissect_x11_request */ + } +} + +static void register_xkb(void) +{ + set_handler("XKEYBOARD", dispatch_xkb, xkb_errors, xkb_events, xkb_replies); +} + static int struct_size_PRINTER(tvbuff_t *tvb, int *offsetp, int little_endian _U_) { int size = 0; @@ -22023,6 +29734,7 @@ static void register_x11_extensions(void) register_composite(); register_damage(); register_dpms(); + register_dri2(); register_ge(); register_glx(); register_randr(); @@ -22040,6 +29752,7 @@ static void register_x11_extensions(void) register_xfixes(); register_xinerama(); register_xinput(); + register_xkb(); register_xprint(); register_xselinux(); register_xtest(); |