home *** CD-ROM | disk | FTP | other *** search
/ PC Shareware 1999 March / PCShareware-3-99.iso / IMPLE / DJGPP.RAR / DJGPP2 / XLIB-SR0.ZIP / SRC / XLIBEMU / GETPNTMA.C < prev    next >
C/C++ Source or Header  |  1994-01-26  |  2KB  |  74 lines

  1. /* $Id: getpntma.c 1.3 1994/01/26 19:07:06 ulrich Exp $ */
  2. /*
  3.  * GetPntMap.c 
  4.  *
  5.  * X library keyboard and pointer mapping functions.
  6.  */
  7.  
  8. #include "Xlibemu.h"
  9. #define XK_ARABIC
  10. #include <X11/keysym.h>
  11.  
  12. #ifdef MIN        /* some systems define this in <sys/param.h> */
  13. #undef MIN
  14. #endif
  15. #define MIN(a, b) ((a) < (b) ? (a) : (b))
  16.  
  17. int XGetPointerMapping (dpy, map, nmaps)
  18.     register Display *dpy;
  19.     unsigned char *map;    /* RETURN */
  20.     int nmaps;
  21.  
  22. {
  23.   if (--nmaps >= 0) map[0] = 1;
  24.   if (--nmaps >= 0) map[1] = 2;
  25.   if (--nmaps >= 0) map[2] = 3;
  26.   return ((int) 3);
  27. }
  28.  
  29. /* Default keyboard mapping table */
  30. static KeySym    _DefaultKeyboardMapping[NUM_KEYCODES][4] = {
  31. #include "modmap.h"
  32. };
  33. /* Keyboard mapping table */
  34. static KeySym *    _KeyboardMapping = NULL;
  35.  
  36.  
  37. KeySym *XGetKeyboardMapping (dpy, first_keycode, count, keysyms_per_keycode)
  38.     register Display *dpy;
  39.     unsigned int first_keycode;
  40.     int count;
  41.     int *keysyms_per_keycode;        /* RETURN */
  42. {
  43.     long nbytes;
  44.     unsigned long nkeysyms;
  45.     register KeySym *mapping = NULL;
  46.  
  47.     if (first_keycode < dpy->min_keycode 
  48.     || (first_keycode + count - 1) > dpy->max_keycode)
  49.       return (KeySym *) NULL;
  50.  
  51.     nkeysyms = 4 * count;
  52.     if (nkeysyms > 0) {
  53.     nbytes = nkeysyms * sizeof (KeySym);
  54.     mapping = (KeySym *) Xmalloc ((unsigned) nbytes);
  55.     nbytes = nkeysyms << 2;
  56.     if (! mapping) {
  57.         return (KeySym *) NULL;
  58.     }
  59.     if (_KeyboardMapping == NULL) {
  60.       char *name = getenv ("XMODMAP");
  61.       if (name)
  62.         _KeyboardMapping = _WLoadKeyboardMappingFromXmodmap (name);
  63.       if (_KeyboardMapping == NULL)
  64.         _KeyboardMapping = &_DefaultKeyboardMapping[0][0];
  65.     }
  66.     memcpy (mapping,
  67.         _KeyboardMapping + 4 * (first_keycode - dpy->min_keycode),
  68.         nbytes);
  69.     }
  70.     *keysyms_per_keycode = 4;
  71.     return (mapping);
  72. }
  73.  
  74.