$NetBSD: patch-at,v 1.5 2009/12/10 20:35:57 abs Exp $ --- lib/libxview/win/win_input.c.orig 1994-06-26 22:27:53.000000000 +0000 +++ lib/libxview/win/win_input.c @@ -56,6 +56,7 @@ static int BlockForEvent(); static int GetButtonEvent(); static int win_translate_KP_keysym(); static int translate_key(); +static int xevent_to_event(); extern struct rectlist *win_get_damage(); extern void server_set_timestamp(); @@ -853,7 +854,9 @@ ContProcess: #ifdef X11R6 /* lumpi@dobag.in-berlin.de */ int ksym_pcc; - XGetKeyboardMapping(display,NoSymbol,0,&ksym_pcc); + int tc_min_keycode, tc_max_keycode; + XDisplayKeycodes(display, &tc_min_keycode, &tc_max_keycode); + XGetKeyboardMapping(display,tc_min_keycode,tc_max_keycode-tc_min_keycode-1,&ksym_pcc); for (index = 0; index < ksym_pcc; index++) { #else for (index = 0; index < display->keysyms_per_keycode; index++) { @@ -861,7 +864,7 @@ ContProcess: if ((ksym = XLookupKeysym(ek, index)) != NoSymbol) if (IsKeypadKey(ksym)) { /* See if key has been rebound. */ - if (!translate_key(display, ksym, ek->state, + if (translate_key(display, ksym, ek->state, buffer, BUFFERSIZE)) { (void)win_translate_KP_keysym(ksym, buffer); } @@ -2316,7 +2319,7 @@ chording(display, bEvent, timeout) /* XView does a passive grab on the SELECT button! */ window_x_allow_events(display); - return BlockForEvent(display, xevent, timeout * 1000, GetButtonEvent, + return BlockForEvent(display, &xevent, timeout * 1000, GetButtonEvent, (char *) bEvent); } @@ -2341,7 +2344,6 @@ BlockForEvent(display, xevent, usec, pre int result; struct timeval timeout; struct timeval starttime, curtime, diff1, diff2; - extern int errno; timeout.tv_sec = 0; timeout.tv_usec = usec; @@ -2720,8 +2722,10 @@ win_translate_KP_keysym(keysym, buffer) * Xlib's. */ -#ifdef X11R6 -/* lumpi@dobag.in-berlin.de */ +#ifdef X11R6 +/* lumpi@dobag.in-berlin.de + tom@sees.bangor.ac.uk this replacement for X11R6 doesn't work. At least + it should now return sensible values though. */ static int translate_key(dpy, symbol, modifiers, buffer, nbytes) Display *dpy; @@ -2731,11 +2735,18 @@ translate_key(dpy, symbol, modifiers, bu int nbytes; { /* This is _very_ rude ! */ - strcpy(buffer,XKeysymToString(symbol)); + char *string; + string = XKeysymToString(symbol); + if (string) { + strncpy(buffer,XKeysymToString(symbol),nbytes); + return(strlen(buffer)); + } + else + return 0; } -#else +#else static int translate_key(dpy, symbol, modifiers, buffer, nbytes) Display *dpy; @@ -2761,4 +2772,4 @@ translate_key(dpy, symbol, modifiers, bu } return 0; } -#endif +#endif