Home | History | Annotate | Download | only in extensions
      1 /* $Xorg: XKBgeom.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ */
      2 /************************************************************
      3 Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
      4 
      5 Permission to use, copy, modify, and distribute this
      6 software and its documentation for any purpose and without
      7 fee is hereby granted, provided that the above copyright
      8 notice appear in all copies and that both that copyright
      9 notice and this permission notice appear in supporting
     10 documentation, and that the name of Silicon Graphics not be
     11 used in advertising or publicity pertaining to distribution
     12 of the software without specific prior written permission.
     13 Silicon Graphics makes no representation about the suitability
     14 of this software for any purpose. It is provided "as is"
     15 without any express or implied warranty.
     16 
     17 SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
     18 SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
     19 AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
     20 GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
     21 DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
     22 DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
     23 OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
     24 THE USE OR PERFORMANCE OF THIS SOFTWARE.
     25 
     26 ********************************************************/
     27 /* $XFree86: xc/include/extensions/XKBgeom.h,v 3.9 2002/09/18 17:11:40 tsi Exp $ */
     28 
     29 #ifndef _XKBGEOM_H_
     30 #define	_XKBGEOM_H_
     31 
     32 #include <X11/extensions/XKBstr.h>
     33 
     34 #ifdef XKB_IN_SERVER
     35 #define XkbAddGeomKeyAlias 		SrvXkbAddGeomKeyAlias
     36 #define XkbAddGeomColor 		SrvXkbAddGeomColor
     37 #define XkbAddGeomDoodad		SrvXkbAddGeomDoodad
     38 #define XkbAddGeomKey			SrvXkbAddGeomKey
     39 #define XkbAddGeomOutline		SrvXkbAddGeomOutline
     40 #define XkbAddGeomOverlay		SrvXkbAddGeomOverlay
     41 #define XkbAddGeomOverlayRow		SrvXkbAddGeomOverlayRow
     42 #define	XkbAddGeomOverlayKey		SrvXkbAddGeomOverlayKey
     43 #define XkbAddGeomProperty		SrvXkbAddGeomProperty
     44 #define XkbAddGeomRow			SrvXkbAddGeomRow
     45 #define XkbAddGeomSection		SrvXkbAddGeomSection
     46 #define XkbAddGeomShape			SrvXkbAddGeomShape
     47 #define XkbAllocGeomKeyAliases		SrvXkbAllocGeomKeyAliases
     48 #define XkbAllocGeomColors		SrvXkbAllocGeomColors
     49 #define XkbAllocGeomDoodads		SrvXkbAllocGeomDoodads
     50 #define XkbAllocGeomKeys		SrvXkbAllocGeomKeys
     51 #define XkbAllocGeomOutlines		SrvXkbAllocGeomOutlines
     52 #define XkbAllocGeomPoints		SrvXkbAllocGeomPoints
     53 #define XkbAllocGeomProps		SrvXkbAllocGeomProps
     54 #define XkbAllocGeomRows		SrvXkbAllocGeomRows
     55 #define XkbAllocGeomSectionDoodads	SrvXkbAllocGeomSectionDoodads
     56 #define XkbAllocGeomSections		SrvXkbAllocGeomSections
     57 #define	XkbAllocGeomOverlays		SrvXkbAllocGeomOverlays
     58 #define	XkbAllocGeomOverlayRows		SrvXkbAllocGeomOverlayRows
     59 #define	XkbAllocGeomOverlayKeys		SrvXkbAllocGeomOverlayKeys
     60 #define XkbAllocGeomShapes		SrvXkbAllocGeomShapes
     61 #define XkbAllocGeometry		SrvXkbAllocGeometry
     62 #define XkbFreeGeomKeyAliases		SrvXkbFreeGeomKeyAliases
     63 #define XkbFreeGeomColors		SrvXkbFreeGeomColors
     64 #define XkbFreeGeomDoodads		SrvXkbFreeGeomDoodads
     65 #define XkbFreeGeomProperties		SrvXkbFreeGeomProperties
     66 #define	XkbFreeGeomOverlayKeys		SrvXkbFreeGeomOverlayKeys
     67 #define	XkbFreeGeomOverlayRows		SrvXkbFreeGeomOverlayRows
     68 #define	XkbFreeGeomOverlays		SrvXkbFreeGeomOverlays
     69 #define	XkbFreeGeomKeys			SrvXkbFreeGeomKeys
     70 #define	XkbFreeGeomRows			SrvXkbFreeGeomRows
     71 #define XkbFreeGeomSections		SrvXkbFreeGeomSections
     72 #define	XkbFreeGeomPoints		SrvXkbFreeGeomPoints
     73 #define	XkbFreeGeomOutlines		SrvXkbFreeGeomOutlines
     74 #define XkbFreeGeomShapes		SrvXkbFreeGeomShapes
     75 #define XkbFreeGeometry			SrvXkbFreeGeometry
     76 #endif
     77 
     78 typedef	struct _XkbProperty {
     79 	char	*name;
     80 	char	*value;
     81 } XkbPropertyRec,*XkbPropertyPtr;
     82 
     83 typedef struct _XkbColor {
     84 	unsigned int 	pixel;
     85 	char *		spec;
     86 } XkbColorRec,*XkbColorPtr;
     87 
     88 typedef	struct _XkbPoint {
     89 	short	x;
     90 	short	y;
     91 } XkbPointRec, *XkbPointPtr;
     92 
     93 typedef struct	_XkbBounds {
     94 	short	x1,y1;
     95 	short	x2,y2;
     96 } XkbBoundsRec, *XkbBoundsPtr;
     97 #define	XkbBoundsWidth(b)	(((b)->x2)-((b)->x1))
     98 #define	XkbBoundsHeight(b)	(((b)->y2)-((b)->y1))
     99 
    100 typedef struct _XkbOutline {
    101 	unsigned short	num_points;
    102 	unsigned short	sz_points;
    103 	unsigned short	corner_radius;
    104 	XkbPointPtr	points;
    105 } XkbOutlineRec, *XkbOutlinePtr;
    106 
    107 typedef struct _XkbShape {
    108 	Atom	 	 name;
    109 	unsigned short	 num_outlines;
    110 	unsigned short	 sz_outlines;
    111 	XkbOutlinePtr	 outlines;
    112 	XkbOutlinePtr	 approx;
    113 	XkbOutlinePtr	 primary;
    114 	XkbBoundsRec	 bounds;
    115 } XkbShapeRec, *XkbShapePtr;
    116 #define	XkbOutlineIndex(s,o)	((int)((o)-&(s)->outlines[0]))
    117 
    118 typedef struct _XkbShapeDoodad {
    119 	Atom		 name;
    120 	unsigned char	 type;
    121 	unsigned char	 priority;
    122 	short		 top;
    123 	short		 left;
    124 	short	 	 angle;
    125 	unsigned short	 color_ndx;
    126 	unsigned short	 shape_ndx;
    127 } XkbShapeDoodadRec, *XkbShapeDoodadPtr;
    128 #define	XkbShapeDoodadColor(g,d)	(&(g)->colors[(d)->color_ndx])
    129 #define	XkbShapeDoodadShape(g,d)	(&(g)->shapes[(d)->shape_ndx])
    130 #define	XkbSetShapeDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
    131 #define	XkbSetShapeDoodadShape(g,d,s)	((d)->shape_ndx= (s)-&(g)->shapes[0])
    132 
    133 typedef struct _XkbTextDoodad {
    134 	Atom		 name;
    135 	unsigned char	 type;
    136 	unsigned char	 priority;
    137 	short	 	 top;
    138 	short	 	 left;
    139 	short	 	 angle;
    140 	short	 	 width;
    141 	short		 height;
    142 	unsigned short	 color_ndx;
    143 	char *		 text;
    144 	char *		 font;
    145 } XkbTextDoodadRec, *XkbTextDoodadPtr;
    146 #define	XkbTextDoodadColor(g,d)	(&(g)->colors[(d)->color_ndx])
    147 #define	XkbSetTextDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
    148 
    149 typedef struct _XkbIndicatorDoodad {
    150 	Atom		 name;
    151 	unsigned char	 type;
    152 	unsigned char	 priority;
    153 	short	 	 top;
    154 	short	 	 left;
    155 	short		 angle;
    156 	unsigned short	 shape_ndx;
    157 	unsigned short	 on_color_ndx;
    158 	unsigned short	 off_color_ndx;
    159 } XkbIndicatorDoodadRec, *XkbIndicatorDoodadPtr;
    160 #define	XkbIndicatorDoodadShape(g,d)	(&(g)->shapes[(d)->shape_ndx])
    161 #define	XkbIndicatorDoodadOnColor(g,d)	(&(g)->colors[(d)->on_color_ndx])
    162 #define	XkbIndicatorDoodadOffColor(g,d)	(&(g)->colors[(d)->off_color_ndx])
    163 #define	XkbSetIndicatorDoodadOnColor(g,d,c) \
    164 				((d)->on_color_ndx= (c)-&(g)->colors[0])
    165 #define	XkbSetIndicatorDoodadOffColor(g,d,c) \
    166 				((d)->off_color_ndx= (c)-&(g)->colors[0])
    167 #define	XkbSetIndicatorDoodadShape(g,d,s) \
    168 				((d)->shape_ndx= (s)-&(g)->shapes[0])
    169 
    170 typedef struct _XkbLogoDoodad {
    171 	Atom		 name;
    172 	unsigned char	 type;
    173 	unsigned char	 priority;
    174 	short		 top;
    175 	short		 left;
    176 	short	 	 angle;
    177 	unsigned short	 color_ndx;
    178 	unsigned short	 shape_ndx;
    179 	char *		 logo_name;
    180 } XkbLogoDoodadRec, *XkbLogoDoodadPtr;
    181 #define	XkbLogoDoodadColor(g,d)		(&(g)->colors[(d)->color_ndx])
    182 #define	XkbLogoDoodadShape(g,d)		(&(g)->shapes[(d)->shape_ndx])
    183 #define	XkbSetLogoDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
    184 #define	XkbSetLogoDoodadShape(g,d,s)	((d)->shape_ndx= (s)-&(g)->shapes[0])
    185 
    186 typedef struct _XkbAnyDoodad {
    187 	Atom		 name;
    188 	unsigned char	 type;
    189 	unsigned char	 priority;
    190 	short	 	 top;
    191 	short	 	 left;
    192 	short		 angle;
    193 } XkbAnyDoodadRec, *XkbAnyDoodadPtr;
    194 
    195 typedef union _XkbDoodad {
    196 	XkbAnyDoodadRec		any;
    197 	XkbShapeDoodadRec	shape;
    198 	XkbTextDoodadRec	text;
    199 	XkbIndicatorDoodadRec	indicator;
    200 	XkbLogoDoodadRec	logo;
    201 } XkbDoodadRec, *XkbDoodadPtr;
    202 
    203 #define	XkbUnknownDoodad	0
    204 #define	XkbOutlineDoodad	1
    205 #define	XkbSolidDoodad		2
    206 #define	XkbTextDoodad		3
    207 #define	XkbIndicatorDoodad	4
    208 #define	XkbLogoDoodad		5
    209 
    210 typedef struct _XkbKey {
    211 	XkbKeyNameRec	 name;
    212 	short		 gap;
    213 	unsigned char	 shape_ndx;
    214 	unsigned char	 color_ndx;
    215 } XkbKeyRec, *XkbKeyPtr;
    216 #define	XkbKeyShape(g,k)	(&(g)->shapes[(k)->shape_ndx])
    217 #define	XkbKeyColor(g,k)	(&(g)->colors[(k)->color_ndx])
    218 #define	XkbSetKeyShape(g,k,s)	((k)->shape_ndx= (s)-&(g)->shapes[0])
    219 #define	XkbSetKeyColor(g,k,c)	((k)->color_ndx= (c)-&(g)->colors[0])
    220 
    221 typedef struct _XkbRow {
    222 	short	 	top;
    223 	short	 	left;
    224 	unsigned short	num_keys;
    225 	unsigned short	sz_keys;
    226 	int		vertical;
    227 	XkbKeyPtr	keys;
    228 	XkbBoundsRec	bounds;
    229 } XkbRowRec, *XkbRowPtr;
    230 
    231 typedef struct _XkbSection {
    232 	Atom		 name;
    233 	unsigned char	 priority;
    234 	short	 	 top;
    235 	short	 	 left;
    236 	unsigned short	 width;
    237 	unsigned short	 height;
    238 	short	 	 angle;
    239 	unsigned short	 num_rows;
    240 	unsigned short	 num_doodads;
    241 	unsigned short	 num_overlays;
    242 	unsigned short	 sz_rows;
    243 	unsigned short	 sz_doodads;
    244 	unsigned short	 sz_overlays;
    245 	XkbRowPtr	 rows;
    246 	XkbDoodadPtr	 doodads;
    247 	XkbBoundsRec	 bounds;
    248 	struct _XkbOverlay *overlays;
    249 } XkbSectionRec, *XkbSectionPtr;
    250 
    251 typedef	struct _XkbOverlayKey {
    252 	XkbKeyNameRec	over;
    253 	XkbKeyNameRec	under;
    254 } XkbOverlayKeyRec,*XkbOverlayKeyPtr;
    255 
    256 typedef struct _XkbOverlayRow {
    257 	unsigned short		row_under;
    258 	unsigned short		num_keys;
    259 	unsigned short		sz_keys;
    260 	XkbOverlayKeyPtr	keys;
    261 } XkbOverlayRowRec,*XkbOverlayRowPtr;
    262 
    263 typedef struct _XkbOverlay {
    264 	Atom			name;
    265 	XkbSectionPtr		section_under;
    266 	unsigned short		num_rows;
    267 	unsigned short		sz_rows;
    268 	XkbOverlayRowPtr	rows;
    269 	XkbBoundsPtr		bounds;
    270 } XkbOverlayRec,*XkbOverlayPtr;
    271 
    272 typedef struct _XkbGeometry {
    273 	Atom		 name;
    274 	unsigned short	 width_mm;
    275 	unsigned short	 height_mm;
    276 	char *		 label_font;
    277 	XkbColorPtr	 label_color;
    278 	XkbColorPtr	 base_color;
    279 	unsigned short	 sz_properties;
    280 	unsigned short	 sz_colors;
    281 	unsigned short	 sz_shapes;
    282 	unsigned short   sz_sections;
    283 	unsigned short	 sz_doodads;
    284 	unsigned short	 sz_key_aliases;
    285 	unsigned short	 num_properties;
    286 	unsigned short	 num_colors;
    287 	unsigned short	 num_shapes;
    288 	unsigned short	 num_sections;
    289 	unsigned short	 num_doodads;
    290 	unsigned short	 num_key_aliases;
    291 	XkbPropertyPtr	 properties;
    292 	XkbColorPtr	 colors;
    293 	XkbShapePtr	 shapes;
    294 	XkbSectionPtr	 sections;
    295 	XkbDoodadPtr	 doodads;
    296 	XkbKeyAliasPtr	 key_aliases;
    297 } XkbGeometryRec;
    298 #define	XkbGeomColorIndex(g,c)	((int)((c)-&(g)->colors[0]))
    299 
    300 #define	XkbGeomPropertiesMask	(1<<0)
    301 #define	XkbGeomColorsMask	(1<<1)
    302 #define	XkbGeomShapesMask	(1<<2)
    303 #define	XkbGeomSectionsMask	(1<<3)
    304 #define	XkbGeomDoodadsMask	(1<<4)
    305 #define	XkbGeomKeyAliasesMask	(1<<5)
    306 #define	XkbGeomAllMask		(0x3f)
    307 
    308 typedef struct _XkbGeometrySizes {
    309 	unsigned int	which;
    310 	unsigned short	num_properties;
    311 	unsigned short	num_colors;
    312 	unsigned short	num_shapes;
    313 	unsigned short	num_sections;
    314 	unsigned short	num_doodads;
    315 	unsigned short	num_key_aliases;
    316 } XkbGeometrySizesRec,*XkbGeometrySizesPtr;
    317 
    318 _XFUNCPROTOBEGIN
    319 
    320 extern	XkbPropertyPtr
    321 XkbAddGeomProperty(
    322     XkbGeometryPtr	/* geom */,
    323     char *		/* name */,
    324     char *		/* value */
    325 );
    326 
    327 extern	XkbKeyAliasPtr
    328 XkbAddGeomKeyAlias(
    329     XkbGeometryPtr	/* geom */,
    330     char *		/* alias */,
    331     char *		/* real */
    332 );
    333 
    334 extern	XkbColorPtr
    335 XkbAddGeomColor(
    336     XkbGeometryPtr	/* geom */,
    337     char *		/* spec */,
    338     unsigned int	/* pixel */
    339 );
    340 
    341 extern	XkbOutlinePtr
    342 XkbAddGeomOutline(
    343     XkbShapePtr		/* shape */,
    344     int			/* sz_points */
    345 );
    346 
    347 extern XkbShapePtr
    348 XkbAddGeomShape(
    349     XkbGeometryPtr	/* geom */,
    350     Atom		/* name */,
    351     int			/* sz_outlines */
    352 );
    353 
    354 extern XkbKeyPtr
    355 XkbAddGeomKey(
    356     XkbRowPtr		/* row */
    357 );
    358 
    359 extern XkbRowPtr
    360 XkbAddGeomRow(
    361     XkbSectionPtr	/* section */,
    362     int			/* sz_keys */
    363 );
    364 
    365 extern XkbSectionPtr
    366 XkbAddGeomSection(
    367     XkbGeometryPtr	/* geom */,
    368     Atom		/* name */,
    369     int			/* sz_rows */,
    370     int			/* sz_doodads */,
    371     int			/* sz_overlays */
    372 );
    373 
    374 extern XkbOverlayPtr
    375 XkbAddGeomOverlay(
    376     XkbSectionPtr	/* section */,
    377     Atom		/* name */,
    378     int			/* sz_rows */
    379 );
    380 
    381 extern XkbOverlayRowPtr
    382 XkbAddGeomOverlayRow(
    383     XkbOverlayPtr	/* overlay */,
    384     int			/* row_under */,
    385     int			/* sz_keys */
    386 );
    387 
    388 extern XkbOverlayKeyPtr
    389 XkbAddGeomOverlayKey(
    390     XkbOverlayPtr	/* overlay */,
    391     XkbOverlayRowPtr	/* row */,
    392     char *		/* over */,
    393     char *		/* under */
    394 );
    395 
    396 extern XkbDoodadPtr
    397 XkbAddGeomDoodad(
    398     XkbGeometryPtr	/* geom */,
    399     XkbSectionPtr	/* section */,
    400     Atom		/* name */
    401 );
    402 
    403 
    404 extern void
    405 XkbFreeGeomKeyAliases(
    406     XkbGeometryPtr	/* geom */,
    407     int			/* first */,
    408     int			/* count */,
    409     Bool		/* freeAll */
    410 );
    411 
    412 extern void
    413 XkbFreeGeomColors(
    414     XkbGeometryPtr	/* geom */,
    415     int			/* first */,
    416     int			/* count */,
    417     Bool		/* freeAll */
    418 );
    419 
    420 extern void
    421 XkbFreeGeomDoodads(
    422     XkbDoodadPtr	/* doodads */,
    423     int			/* nDoodads */,
    424     Bool		/* freeAll */
    425 );
    426 
    427 
    428 extern void
    429 XkbFreeGeomProperties(
    430     XkbGeometryPtr	/* geom */,
    431     int			/* first */,
    432     int			/* count */,
    433     Bool		/* freeAll */
    434 );
    435 
    436 extern void
    437 XkbFreeGeomOverlayKeys(
    438     XkbOverlayRowPtr	/* row */,
    439     int			/* first */,
    440     int			/* count */,
    441     Bool		/* freeAll */
    442 );
    443 
    444 extern void
    445 XkbFreeGeomOverlayRows(
    446     XkbOverlayPtr	/* overlay */,
    447     int			/* first */,
    448     int			/* count */,
    449     Bool		/* freeAll */
    450 );
    451 
    452 extern void
    453 XkbFreeGeomOverlays(
    454     XkbSectionPtr	/* section */,
    455     int			/* first */,
    456     int			/* count */,
    457     Bool		/* freeAll */
    458 );
    459 
    460 extern void
    461 XkbFreeGeomKeys(
    462     XkbRowPtr		/* row */,
    463     int			/* first */,
    464     int			/* count */,
    465     Bool		/* freeAll */
    466 );
    467 
    468 extern void
    469 XkbFreeGeomRows(
    470     XkbSectionPtr	/* section */,
    471     int			/* first */,
    472     int			/* count */,
    473     Bool		/* freeAll */
    474 );
    475 
    476 extern void
    477 XkbFreeGeomSections(
    478     XkbGeometryPtr	/* geom */,
    479     int			/* first */,
    480     int			/* count */,
    481     Bool		/* freeAll */
    482 );
    483 
    484 
    485 extern void
    486 XkbFreeGeomPoints(
    487     XkbOutlinePtr	/* outline */,
    488     int			/* first */,
    489     int			/* count */,
    490     Bool		/* freeAll */
    491 );
    492 
    493 extern void
    494 XkbFreeGeomOutlines(
    495     XkbShapePtr		/* shape */,
    496     int			/* first */,
    497     int			/* count */,
    498     Bool		/* freeAll */
    499 );
    500 
    501 extern void
    502 XkbFreeGeomShapes(
    503     XkbGeometryPtr	/* geom */,
    504     int			/* first */,
    505     int			/* count */,
    506     Bool		/* freeAll */
    507 );
    508 
    509 extern void
    510 XkbFreeGeometry(
    511     XkbGeometryPtr	/* geom */,
    512     unsigned int	/* which */,
    513     Bool		/* freeMap */
    514 );
    515 
    516 extern Status
    517 XkbAllocGeomProps(
    518     XkbGeometryPtr	/* geom */,
    519     int			/* nProps */
    520 );
    521 
    522 extern Status
    523 XkbAllocGeomKeyAliases(
    524     XkbGeometryPtr	/* geom */,
    525     int			/* nAliases */
    526 );
    527 
    528 extern Status
    529 XkbAllocGeomColors(
    530     XkbGeometryPtr	/* geom */,
    531     int			/* nColors */
    532 );
    533 
    534 extern Status
    535 XkbAllocGeomShapes(
    536     XkbGeometryPtr	/* geom */,
    537     int			/* nShapes */
    538 );
    539 
    540 extern Status
    541 XkbAllocGeomSections(
    542     XkbGeometryPtr	/* geom */,
    543     int			/* nSections */
    544 );
    545 
    546 extern Status
    547 XkbAllocGeomOverlays(
    548     XkbSectionPtr	/* section */,
    549     int			/* num_needed */
    550 );
    551 
    552 extern Status
    553 XkbAllocGeomOverlayRows(
    554     XkbOverlayPtr	/* overlay */,
    555     int			/* num_needed */
    556 );
    557 
    558 extern Status
    559 XkbAllocGeomOverlayKeys(
    560     XkbOverlayRowPtr	/* row */,
    561     int			/* num_needed */
    562 );
    563 
    564 extern Status
    565 XkbAllocGeomDoodads(
    566     XkbGeometryPtr	/* geom */,
    567     int			/* nDoodads */
    568 );
    569 
    570 extern Status
    571 XkbAllocGeomSectionDoodads(
    572     XkbSectionPtr	/* section */,
    573     int			/* nDoodads */
    574 );
    575 
    576 extern Status
    577 XkbAllocGeomOutlines(
    578     XkbShapePtr		/* shape */,
    579     int			/* nOL */
    580 );
    581 
    582 extern Status
    583 XkbAllocGeomRows(
    584     XkbSectionPtr	/* section */,
    585     int			/* nRows */
    586 );
    587 
    588 extern Status
    589 XkbAllocGeomPoints(
    590     XkbOutlinePtr	/* ol */,
    591     int			/* nPts */
    592 );
    593 
    594 extern Status
    595 XkbAllocGeomKeys(
    596     XkbRowPtr		/* row */,
    597     int			/* nKeys */
    598 );
    599 
    600 extern	Status
    601 XkbAllocGeometry(
    602 	XkbDescPtr		/* xkb */,
    603 	XkbGeometrySizesPtr	/* sizes */
    604 );
    605 
    606 extern	Status
    607 XkbSetGeometry(
    608 	Display *		/* dpy */,
    609 	unsigned		/* deviceSpec */,
    610 	XkbGeometryPtr		/* geom */
    611 );
    612 
    613 extern	Bool
    614 XkbComputeShapeTop(
    615 	XkbShapePtr		/* shape */,
    616 	XkbBoundsPtr		/* bounds */
    617 );
    618 
    619 extern	Bool
    620 XkbComputeShapeBounds(
    621 	XkbShapePtr		/* shape */
    622 );
    623 
    624 extern	Bool
    625 XkbComputeRowBounds(
    626 	XkbGeometryPtr		/* geom */,
    627 	XkbSectionPtr		/* section */,
    628 	XkbRowPtr		/* row */
    629 );
    630 
    631 extern	Bool
    632 XkbComputeSectionBounds(
    633 	XkbGeometryPtr		/* geom */,
    634 	XkbSectionPtr		/* section */
    635 );
    636 
    637 extern	char *
    638 XkbFindOverlayForKey(
    639 	XkbGeometryPtr		/* geom */,
    640 	XkbSectionPtr		/* wanted */,
    641 	char *			/* under */
    642 );
    643 
    644 extern	Status
    645 XkbGetGeometry(
    646     Display *			/* dpy */,
    647     XkbDescPtr			/* xkb */
    648 );
    649 
    650 extern	Status
    651 XkbGetNamedGeometry(
    652     Display *			/* dpy */,
    653     XkbDescPtr			/* xkb */,
    654     Atom			/* name */
    655 );
    656 
    657 _XFUNCPROTOEND
    658 
    659 #endif /* _XKBSTR_H_ */
    660