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
90
|
There are several code fragments that need to be placed in the device
dependent part of the server. These are described below. These code
fragments are device and implementation dependent.
This code fragment should go in your ddx InitInput() routine:
#ifdef XTESTEXT1
extern KeyCode xtest_command_key;
#endif
#ifdef XTESTEXT1
xtest_command_key = <whatever-is-a-good-keycode-for-your-keyboard>;
#endif
This code fragment should go at the front of the file that handles
keyboards:
#ifdef XTESTEXT1
/*
* defined in xtestext1di.c
*/
extern int on_steal_input;
extern Bool XTestStealKeyData();
#endif XTESTEXT1
This code fragment should go in the function that parses input from the
keyboard or pointer after you know what input action has occurred, but before
you have told the server about it. If conditionalizes the actual function
call to pass the information on:
#ifdef XTESTEXT1
if (!on_steal_input ||
XTestStealKeyData(code, direction, dev_type, x, y))
#endif /* XTESTEXT1 */
handle_device_event(...);
This code fragment should go in the function that handles mouse motion after
you have figured out how much the mouse has moved:
#ifdef XTESTEXT1
if (on_steal_input)
XTestStealMotionData(dx, dy, dev, x, y);
#endif XTESTEXT1
This code fragment should go at the front of the os-specific code where
you wait (by doing a select on the socket in our implementation) for
something to happen:
#ifdef XTESTEXT1
extern int playback_on;
void XTestComputeWaitTime();
#endif XTESTEXT1
These code fragments should go in the os-specific code on both sides of
where you wait (by doing a select on the socket in our implementation)
for something to happen:
#ifdef XTESTEXT1
if (playback_on)
XTestComputeWaitTime(wt = &waittime);
#endif XTESTEXT1
... code to do select ...
WakeupHandler(i, LastSelectMask);
#ifdef XTESTEXT1
if (playback_on)
i = XTestProcessInputAction(i, &waittime);
#endif XTESTEXT1
You also need to implement the following routines (documentation
is needed; for now, see server/ddx/hp/hp/x_hil.c):
void
XTestGenerateEvent(dev_type, keycode, keystate, mousex, mousey)
int dev_type;
int keycode;
int keystate;
int mousex;
int mousey;
void
XTestGetPointerPos(fmousex, fmousey)
short *fmousex, *fmousey;
void
XTestJumpPointer(jx, jy, dev_type)
int jx;
int jy;
int dev_type;
|