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 >
Wrap
C/C++ Source or Header
|
1994-01-26
|
2KB
|
74 lines
/* $Id: getpntma.c 1.3 1994/01/26 19:07:06 ulrich Exp $ */
/*
* GetPntMap.c
*
* X library keyboard and pointer mapping functions.
*/
#include "Xlibemu.h"
#define XK_ARABIC
#include <X11/keysym.h>
#ifdef MIN /* some systems define this in <sys/param.h> */
#undef MIN
#endif
#define MIN(a, b) ((a) < (b) ? (a) : (b))
int XGetPointerMapping (dpy, map, nmaps)
register Display *dpy;
unsigned char *map; /* RETURN */
int nmaps;
{
if (--nmaps >= 0) map[0] = 1;
if (--nmaps >= 0) map[1] = 2;
if (--nmaps >= 0) map[2] = 3;
return ((int) 3);
}
/* Default keyboard mapping table */
static KeySym _DefaultKeyboardMapping[NUM_KEYCODES][4] = {
#include "modmap.h"
};
/* Keyboard mapping table */
static KeySym * _KeyboardMapping = NULL;
KeySym *XGetKeyboardMapping (dpy, first_keycode, count, keysyms_per_keycode)
register Display *dpy;
unsigned int first_keycode;
int count;
int *keysyms_per_keycode; /* RETURN */
{
long nbytes;
unsigned long nkeysyms;
register KeySym *mapping = NULL;
if (first_keycode < dpy->min_keycode
|| (first_keycode + count - 1) > dpy->max_keycode)
return (KeySym *) NULL;
nkeysyms = 4 * count;
if (nkeysyms > 0) {
nbytes = nkeysyms * sizeof (KeySym);
mapping = (KeySym *) Xmalloc ((unsigned) nbytes);
nbytes = nkeysyms << 2;
if (! mapping) {
return (KeySym *) NULL;
}
if (_KeyboardMapping == NULL) {
char *name = getenv ("XMODMAP");
if (name)
_KeyboardMapping = _WLoadKeyboardMappingFromXmodmap (name);
if (_KeyboardMapping == NULL)
_KeyboardMapping = &_DefaultKeyboardMapping[0][0];
}
memcpy (mapping,
_KeyboardMapping + 4 * (first_keycode - dpy->min_keycode),
nbytes);
}
*keysyms_per_keycode = 4;
return (mapping);
}