- int buf_x = DOOR_GFX_PAGEX3, buf_y = DOOR_GFX_PAGEY1;
-
-#if 1
- /* special method to avoid flickering interference with BackToFront() */
- XCopyArea(display,backbuffer,pix[PIX_DB_DOOR],gc,dest_x-pad_x,dest_y-pad_y,
- width+2*pad_x,height+2*pad_y, buf_x,buf_y);
- XSetClipOrigin(display,clip_gc[PIX_TOONS],dest_x-src_x,dest_y-src_y);
- XCopyArea(display,pix[PIX_TOONS],backbuffer,clip_gc[PIX_TOONS],
- src_x,src_y, width,height, dest_x,dest_y);
- XCopyArea(display,backbuffer,window,gc, dest_x-pad_x,dest_y-pad_y,
- width+2*pad_x,height+2*pad_y, dest_x-pad_x,dest_y-pad_y);
- BackToFront();
- XCopyArea(display,pix[PIX_DB_DOOR],backbuffer,gc, buf_x,buf_y,
- width+2*pad_x,height+2*pad_y, dest_x-pad_x,dest_y-pad_y);
-#else
- /* normal method, causing flickering interference with BackToFront() */
- XCopyArea(display,backbuffer,pix[PIX_DB_DOOR],gc,dest_x-pad_x,dest_y-pad_y,
- width+2*pad_x,height+2*pad_y, buf_x,buf_y);
- XSetClipOrigin(display,clip_gc[PIX_TOONS],
- buf_x-src_x+pad_x,buf_y-src_y+pad_y);
- XCopyArea(display,pix[PIX_TOONS],pix[PIX_DB_DOOR],clip_gc[PIX_TOONS],
- src_x,src_y, width,height, buf_x+pad_x,buf_y+pad_y);
- XCopyArea(display,pix[PIX_DB_DOOR],window,gc, buf_x,buf_y,
- width+2*pad_x,height+2*pad_y, dest_x-pad_x,dest_y-pad_y);
+ void *ptr;
+
+ ptr = malloc(size);
+
+ if (ptr == NULL)
+ Error(ERR_EXIT, "cannot allocate %d bytes -- out of memory", size);
+
+ return ptr;
+}
+
+char *getKeySymName(KeySym key)
+{
+ static char key_name[20];
+ static struct
+ {
+ KeySym keysym;
+ char *name;
+ } translate[] =
+ {
+ { XK_Left, "cursor left" },
+ { XK_Right, "cursor right" },
+ { XK_Up, "cursor up" },
+ { XK_Down, "cursor down" },
+
+#ifdef XK_KP_Left
+ { XK_KP_Left, "keypad left" },
+ { XK_KP_Right, "keypad right" },
+ { XK_KP_Up, "keypad up" },
+ { XK_KP_Down, "keypad down" },