18c9fbc29Smrg/************************************************************ 28c9fbc29Smrg Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc. 38c9fbc29Smrg 48c9fbc29Smrg Permission to use, copy, modify, and distribute this 58c9fbc29Smrg software and its documentation for any purpose and without 68c9fbc29Smrg fee is hereby granted, provided that the above copyright 78c9fbc29Smrg notice appear in all copies and that both that copyright 88c9fbc29Smrg notice and this permission notice appear in supporting 94cd6a3aeSmrg documentation, and that the name of Silicon Graphics not be 104cd6a3aeSmrg used in advertising or publicity pertaining to distribution 118c9fbc29Smrg of the software without specific prior written permission. 124cd6a3aeSmrg Silicon Graphics makes no representation about the suitability 138c9fbc29Smrg of this software for any purpose. It is provided "as is" 148c9fbc29Smrg without any express or implied warranty. 154cd6a3aeSmrg 164cd6a3aeSmrg SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 174cd6a3aeSmrg SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 188c9fbc29Smrg AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON 194cd6a3aeSmrg GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL 204cd6a3aeSmrg DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 214cd6a3aeSmrg DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 228c9fbc29Smrg OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH 238c9fbc29Smrg THE USE OR PERFORMANCE OF THIS SOFTWARE. 248c9fbc29Smrg 258c9fbc29Smrg ********************************************************/ 268c9fbc29Smrg 278c9fbc29Smrg#ifndef _XKMFORMAT_H_ 288c9fbc29Smrg#define _XKMFORMAT_H_ 1 298c9fbc29Smrg 308c9fbc29Smrg#include <X11/extensions/XKB.h> 318c9fbc29Smrg#include <X11/extensions/XKBproto.h> 328c9fbc29Smrg#include <X11/extensions/XKM.h> 338c9fbc29Smrg 348c9fbc29Smrgtypedef struct _xkmFileInfo { 358c9fbc29Smrg CARD8 type; 368c9fbc29Smrg CARD8 min_kc; 378c9fbc29Smrg CARD8 max_kc; 388c9fbc29Smrg CARD8 num_toc; 3954044362Smrg CARD16 present; 4054044362Smrg CARD16 pad; 418c9fbc29Smrg} xkmFileInfo; 428c9fbc29Smrg#define sz_xkmFileInfo 8 438c9fbc29Smrg 448c9fbc29Smrgtypedef struct _xkmSectionInfo { 4554044362Smrg CARD16 type; 4654044362Smrg CARD16 format; 4754044362Smrg CARD16 size; 4854044362Smrg CARD16 offset; 498c9fbc29Smrg} xkmSectionInfo; 508c9fbc29Smrg#define sz_xkmSectionInfo 8 518c9fbc29Smrg 528c9fbc29Smrgtypedef struct _xkmKeyTypeDesc { 538c9fbc29Smrg CARD8 realMods; 548c9fbc29Smrg CARD8 numLevels; 5554044362Smrg CARD16 virtualMods; 568c9fbc29Smrg CARD8 nMapEntries; 578c9fbc29Smrg CARD8 nLevelNames; 588c9fbc29Smrg CARD8 preserve; 598c9fbc29Smrg CARD8 pad; 608c9fbc29Smrg} xkmKeyTypeDesc; 618c9fbc29Smrg#define sz_xkmKeyTypeDesc 8 628c9fbc29Smrg 638c9fbc29Smrgtypedef struct _xkmKTMapEntryDesc { 648c9fbc29Smrg CARD8 level; 658c9fbc29Smrg CARD8 realMods; 6654044362Smrg CARD16 virtualMods; 678c9fbc29Smrg} xkmKTMapEntryDesc; 688c9fbc29Smrg#define sz_xkmKTMapEntryDesc 4 698c9fbc29Smrg 708c9fbc29Smrgtypedef struct _xkmModsDesc { 718c9fbc29Smrg CARD8 realMods; 728c9fbc29Smrg CARD8 pad; 7354044362Smrg CARD16 virtualMods; 748c9fbc29Smrg} xkmModsDesc; 758c9fbc29Smrg#define sz_xkmModsDesc 4 768c9fbc29Smrg 778c9fbc29Smrgtypedef struct _xkmVModMapDesc { 788c9fbc29Smrg CARD8 key; 798c9fbc29Smrg CARD8 pad; 8054044362Smrg CARD16 vmods; 818c9fbc29Smrg} xkmVModMapDesc; 828c9fbc29Smrg#define sz_xkmVModMapDesc 4 838c9fbc29Smrg 848c9fbc29Smrgtypedef struct _xkmSymInterpretDesc { 8554044362Smrg CARD32 sym; 868c9fbc29Smrg CARD8 mods; 878c9fbc29Smrg CARD8 match; 888c9fbc29Smrg CARD8 virtualMod; 898c9fbc29Smrg CARD8 flags; 908c9fbc29Smrg CARD8 actionType; 918c9fbc29Smrg CARD8 actionData[7]; 928c9fbc29Smrg} xkmSymInterpretDesc; 938c9fbc29Smrg#define sz_xkmSymInterpretDesc 16 948c9fbc29Smrg 958c9fbc29Smrgtypedef struct _xkmBehaviorDesc { 968c9fbc29Smrg CARD8 type; 978c9fbc29Smrg CARD8 data; 9854044362Smrg CARD16 pad; 998c9fbc29Smrg} xkmBehaviorDesc; 1008c9fbc29Smrg#define sz_xkmBehaviorDesc 4 1018c9fbc29Smrg 1028c9fbc29Smrgtypedef struct _xkmActionDesc { 1038c9fbc29Smrg CARD8 type; 1048c9fbc29Smrg CARD8 data[7]; 1058c9fbc29Smrg} xkmActionDesc; 1068c9fbc29Smrg#define sz_xkmActionDesc 8 1078c9fbc29Smrg 1088c9fbc29Smrg#define XkmKeyHasTypes (0x0f) 1098c9fbc29Smrg#define XkmKeyHasGroup1Type (1<<0) 1108c9fbc29Smrg#define XkmKeyHasGroup2Type (1<<1) 1118c9fbc29Smrg#define XkmKeyHasGroup3Type (1<<2) 1128c9fbc29Smrg#define XkmKeyHasGroup4Type (1<<3) 1138c9fbc29Smrg#define XkmKeyHasActions (1<<4) 1148c9fbc29Smrg#define XkmKeyHasBehavior (1<<5) 1158c9fbc29Smrg#define XkmRepeatingKey (1<<6) 1168c9fbc29Smrg#define XkmNonRepeatingKey (1<<7) 1178c9fbc29Smrg 1188c9fbc29Smrgtypedef struct _xkmKeySymMapDesc { 1198c9fbc29Smrg CARD8 width; 1208c9fbc29Smrg CARD8 num_groups; 1218c9fbc29Smrg CARD8 modifier_map; 1228c9fbc29Smrg CARD8 flags; 1238c9fbc29Smrg} xkmKeySymMapDesc; 1248c9fbc29Smrg#define sz_xkmKeySymMapDesc 4 1258c9fbc29Smrg 1268c9fbc29Smrgtypedef struct _xkmIndicatorMapDesc { 1278c9fbc29Smrg CARD8 indicator; 1288c9fbc29Smrg CARD8 flags; 1298c9fbc29Smrg CARD8 which_mods; 1308c9fbc29Smrg CARD8 real_mods; 13154044362Smrg CARD16 vmods; 1328c9fbc29Smrg CARD8 which_groups; 1338c9fbc29Smrg CARD8 groups; 13454044362Smrg CARD32 ctrls; 1358c9fbc29Smrg} xkmIndicatorMapDesc; 1368c9fbc29Smrg#define sz_xkmIndicatorMapDesc 12 1378c9fbc29Smrg 1388c9fbc29Smrgtypedef struct _xkmGeometryDesc { 13954044362Smrg CARD16 width_mm; 14054044362Smrg CARD16 height_mm; 1418c9fbc29Smrg CARD8 base_color_ndx; 1428c9fbc29Smrg CARD8 label_color_ndx; 14354044362Smrg CARD16 num_properties; 14454044362Smrg CARD16 num_colors; 14554044362Smrg CARD16 num_shapes; 14654044362Smrg CARD16 num_sections; 14754044362Smrg CARD16 num_doodads; 14854044362Smrg CARD16 num_key_aliases; 14954044362Smrg CARD16 pad1; 1508c9fbc29Smrg} xkmGeometryDesc; 1518c9fbc29Smrg#define sz_xkmGeometryDesc 20 1528c9fbc29Smrg 1538c9fbc29Smrgtypedef struct _xkmPointDesc { 15454044362Smrg INT16 x; 15554044362Smrg INT16 y; 1568c9fbc29Smrg} xkmPointDesc; 1578c9fbc29Smrg#define sz_xkmPointDesc 4 1588c9fbc29Smrg 1598c9fbc29Smrgtypedef struct _xkmOutlineDesc { 1608c9fbc29Smrg CARD8 num_points; 1618c9fbc29Smrg CARD8 corner_radius; 16254044362Smrg CARD16 pad; 1638c9fbc29Smrg} xkmOutlineDesc; 1648c9fbc29Smrg#define sz_xkmOutlineDesc 4 1658c9fbc29Smrg 1668c9fbc29Smrgtypedef struct _xkmShapeDesc { 1678c9fbc29Smrg CARD8 num_outlines; 1688c9fbc29Smrg CARD8 primary_ndx; 1698c9fbc29Smrg CARD8 approx_ndx; 1708c9fbc29Smrg CARD8 pad; 1714cd6a3aeSmrg} xkmShapeDesc; 1728c9fbc29Smrg#define sz_xkmShapeDesc 4 1738c9fbc29Smrg 1748c9fbc29Smrgtypedef struct _xkmSectionDesc { 17554044362Smrg INT16 top; 17654044362Smrg INT16 left; 17754044362Smrg CARD16 width; 17854044362Smrg CARD16 height; 17954044362Smrg INT16 angle; 1808c9fbc29Smrg CARD8 priority; 1818c9fbc29Smrg CARD8 num_rows; 1828c9fbc29Smrg CARD8 num_doodads; 1838c9fbc29Smrg CARD8 num_overlays; 18454044362Smrg CARD16 pad2; 1858c9fbc29Smrg} xkmSectionDesc; 1868c9fbc29Smrg#define sz_xkmSectionDesc 16 1878c9fbc29Smrg 1888c9fbc29Smrgtypedef struct _xkmRowDesc { 18954044362Smrg INT16 top; 19054044362Smrg INT16 left; 1918c9fbc29Smrg CARD8 num_keys; 1928c9fbc29Smrg BOOL vertical; 19354044362Smrg CARD16 pad; 1948c9fbc29Smrg} xkmRowDesc; 1958c9fbc29Smrg#define sz_xkmRowDesc 8 1968c9fbc29Smrg 1978c9fbc29Smrgtypedef struct _xkmKeyDesc { 1988c9fbc29Smrg CARD8 name[XkbKeyNameLength]; 19954044362Smrg INT16 gap; 2008c9fbc29Smrg CARD8 shape_ndx; 2018c9fbc29Smrg CARD8 color_ndx; 2028c9fbc29Smrg} xkmKeyDesc; 2038c9fbc29Smrg#define sz_xkmKeyDesc 8 2048c9fbc29Smrg 2058c9fbc29Smrgtypedef struct _xkmOverlayDesc { 2068c9fbc29Smrg CARD8 num_rows; 2078c9fbc29Smrg CARD8 pad1; 20854044362Smrg CARD16 pad2; 2098c9fbc29Smrg} xkmOverlayDesc; 2108c9fbc29Smrg#define sz_xkmOverlayDesc 4 2118c9fbc29Smrg 2128c9fbc29Smrgtypedef struct _xkmOverlayRowDesc { 2138c9fbc29Smrg CARD8 row_under; 2148c9fbc29Smrg CARD8 num_keys; 21554044362Smrg CARD16 pad; 2168c9fbc29Smrg} xkmOverlayRowDesc; 2178c9fbc29Smrg#define sz_xkmOverlayRowDesc 4 2188c9fbc29Smrg 2198c9fbc29Smrgtypedef struct _xkmOverlayKeyDesc { 2208c9fbc29Smrg char over[XkbKeyNameLength]; 2218c9fbc29Smrg char under[XkbKeyNameLength]; 2228c9fbc29Smrg} xkmOverlayKeyDesc; 2238c9fbc29Smrg#define sz_xkmOverlayKeyDesc 8 2248c9fbc29Smrg 2258c9fbc29Smrgtypedef struct _xkmShapeDoodadDesc { 2268c9fbc29Smrg CARD8 type; 2278c9fbc29Smrg CARD8 priority; 22854044362Smrg INT16 top; 22954044362Smrg INT16 left; 23054044362Smrg INT16 angle; 2318c9fbc29Smrg CARD8 color_ndx; 2328c9fbc29Smrg CARD8 shape_ndx; 23354044362Smrg CARD16 pad; 23454044362Smrg CARD32 pad1; 2358c9fbc29Smrg} xkmShapeDoodadDesc; 2368c9fbc29Smrg#define sz_xkmShapeDoodadDesc 16 2378c9fbc29Smrg 2388c9fbc29Smrgtypedef struct _xkmTextDoodadDesc { 2398c9fbc29Smrg CARD8 type; 2408c9fbc29Smrg CARD8 priority; 24154044362Smrg INT16 top; 24254044362Smrg INT16 left; 24354044362Smrg INT16 angle; 24454044362Smrg CARD16 width; 24554044362Smrg CARD16 height; 2468c9fbc29Smrg CARD8 color_ndx; 2478c9fbc29Smrg CARD8 pad1; 24854044362Smrg CARD16 pad2; 2498c9fbc29Smrg} xkmTextDoodadDesc; 2508c9fbc29Smrg#define sz_xkmTextDoodadDesc 16 2518c9fbc29Smrg 2528c9fbc29Smrgtypedef struct _xkmIndicatorDoodadDesc { 2538c9fbc29Smrg CARD8 type; 2548c9fbc29Smrg CARD8 priority; 25554044362Smrg INT16 top; 25654044362Smrg INT16 left; 2578c9fbc29Smrg CARD8 shape_ndx; 2588c9fbc29Smrg CARD8 on_color_ndx; 2598c9fbc29Smrg CARD8 off_color_ndx; 2608c9fbc29Smrg CARD8 pad1; 26154044362Smrg CARD16 pad2; 26254044362Smrg CARD32 pad3; 2638c9fbc29Smrg} xkmIndicatorDoodadDesc; 2648c9fbc29Smrg#define sz_xkmIndicatorDoodadDesc 16 2658c9fbc29Smrg 2668c9fbc29Smrgtypedef struct _xkmLogoDoodadDesc { 2678c9fbc29Smrg CARD8 type; 2688c9fbc29Smrg CARD8 priority; 26954044362Smrg INT16 top; 27054044362Smrg INT16 left; 27154044362Smrg INT16 angle; 2728c9fbc29Smrg CARD8 color_ndx; 2738c9fbc29Smrg CARD8 shape_ndx; 27454044362Smrg CARD16 pad; 27554044362Smrg CARD32 pad1; 2768c9fbc29Smrg} xkmLogoDoodadDesc; 2778c9fbc29Smrg#define sz_xkmLogoDoodadDesc 16 2788c9fbc29Smrg 2798c9fbc29Smrgtypedef struct _xkmAnyDoodadDesc { 2808c9fbc29Smrg CARD8 type; 2818c9fbc29Smrg CARD8 priority; 28254044362Smrg INT16 top; 28354044362Smrg INT16 left; 28454044362Smrg CARD16 pad1; 28554044362Smrg CARD32 pad2; 28654044362Smrg CARD32 pad3; 2878c9fbc29Smrg} xkmAnyDoodadDesc; 2888c9fbc29Smrg#define sz_xkmAnyDoodadDesc 16 2898c9fbc29Smrg 2908c9fbc29Smrgtypedef union _xkmDoodadDesc { 2918c9fbc29Smrg xkmAnyDoodadDesc any; 2928c9fbc29Smrg xkmShapeDoodadDesc shape; 2938c9fbc29Smrg xkmTextDoodadDesc text; 2948c9fbc29Smrg xkmIndicatorDoodadDesc indicator; 2958c9fbc29Smrg xkmLogoDoodadDesc logo; 2968c9fbc29Smrg} xkmDoodadDesc; 2978c9fbc29Smrg#define sz_xkmDoodadDesc 16 2988c9fbc29Smrg 2998c9fbc29Smrg#endif /* _XKMFORMAT_H_ */ 300