summaryrefslogtreecommitdiff
path: root/x11/xview-lib/patches/patch-at
blob: 39b576d63de68caf7078a571dc8febd88966df90 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
$NetBSD: patch-at,v 1.4 2007/05/12 00:22:16 tnn Exp $

--- ./lib/libxview/win/win_input.c.orig	1994-06-27 00:27:53.000000000 +0200
+++ ./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