Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nx-libs
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
dimbor
nx-libs
Commits
6f5e20bc
Commit
6f5e20bc
authored
Oct 10, 2011
by
Reinhard Tartler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Imported nxagent-3.3.0-9.tar.gz
Summary: Imported nxagent-3.3.0-9.tar.gz Keywords: Imported nxagent-3.3.0-9.tar.gz into Git repository
parent
45b970f2
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
675 additions
and
133 deletions
+675
-133
CHANGELOG
nx-X11/programs/Xserver/hw/nxagent/CHANGELOG
+21
-0
Events.c
nx-X11/programs/Xserver/hw/nxagent/Events.c
+17
-9
Font.c
nx-X11/programs/Xserver/hw/nxagent/Font.c
+37
-4
Keyboard.c
nx-X11/programs/Xserver/hw/nxagent/Keyboard.c
+355
-105
Keyboard.h
nx-X11/programs/Xserver/hw/nxagent/Keyboard.h
+4
-0
Reconnect.c
nx-X11/programs/Xserver/hw/nxagent/Reconnect.c
+6
-5
Render.c
nx-X11/programs/Xserver/hw/nxagent/Render.c
+5
-2
NXevents.c
nx-X11/programs/Xserver/hw/nxagent/X/NXevents.c
+115
-4
NXevents.c.NX.original
nx-X11/programs/Xserver/hw/nxagent/X/NXevents.c.NX.original
+115
-4
No files found.
nx-X11/programs/Xserver/hw/nxagent/CHANGELOG
View file @
6f5e20bc
ChangeLog:
ChangeLog:
nxagent-3.3.0-9
- Added /usr/NX/share/base to alternate font paths. This would fix
TR11F02130 if fonts fixed and cursor are installed there.
- Changed Keyboard initialization and reset. This change should fix
TR11F02129, TR11F02131, TR11F02132.
nxagent-3.3.0-8
- Fixed TR12F02144. Image bits of render glyphs are copied before they
are cleaned. This will avoid a memory corruption.
- Fixed TR12F02145. When dispatching a MotionNotify event, check if a
top-level window has been entered before trying to show the pulldown
dialog.
nxagent-3.3.0-7
- Added debug code for pointer input.
nxagent-3.3.0-6
nxagent-3.3.0-6
- Fixed compile warnings.
- Fixed compile warnings.
...
...
nx-X11/programs/Xserver/hw/nxagent/Events.c
View file @
6f5e20bc
...
@@ -63,7 +63,13 @@
...
@@ -63,7 +63,13 @@
#include "NXproto.h"
#include "NXproto.h"
#include "xfixesproto.h"
#include "xfixesproto.h"
#define Window XlibWindow
#define Atom XlibAtom
#define Time XlibXID
#include <X11/extensions/Xfixes.h>
#include <X11/extensions/Xfixes.h>
#undef Window
#undef Atom
#undef Time
#ifdef NXAGENT_FIXKEYS
#ifdef NXAGENT_FIXKEYS
#include "inputstr.h"
#include "inputstr.h"
...
@@ -789,8 +795,9 @@ void nxagentDispatchEvents(PredicateFuncPtr predicate)
...
@@ -789,8 +795,9 @@ void nxagentDispatchEvents(PredicateFuncPtr predicate)
}
}
x
.
u
.
u
.
type
=
KeyRelease
;
x
.
u
.
u
.
type
=
KeyRelease
;
x
.
u
.
u
.
detail
=
X
.
xkey
.
keycode
;
x
.
u
.
u
.
detail
=
nxagentConvertKeycode
(
X
.
xkey
.
keycode
);
x
.
u
.
keyButtonPointer
.
time
=
nxagentLastKeyPressTime
+
(
X
.
xkey
.
time
-
nxagentLastServerTime
);
x
.
u
.
keyButtonPointer
.
time
=
nxagentLastKeyPressTime
+
(
X
.
xkey
.
time
-
nxagentLastServerTime
);
nxagentLastServerTime
=
X
.
xkey
.
time
;
nxagentLastServerTime
=
X
.
xkey
.
time
;
...
@@ -918,7 +925,7 @@ void nxagentDispatchEvents(PredicateFuncPtr predicate)
...
@@ -918,7 +925,7 @@ void nxagentDispatchEvents(PredicateFuncPtr predicate)
#ifdef NX_DEBUG_INPUT
#ifdef NX_DEBUG_INPUT
if
(
nxagentDebugInput
==
1
)
if
(
nxagentDebugInput
==
1
)
{
{
fprintf
(
stderr
,
"nxagentDispatchEvents: Going to handle new Button
Press
event.
\n
"
);
fprintf
(
stderr
,
"nxagentDispatchEvents: Going to handle new Button
Release
event.
\n
"
);
}
}
#endif
#endif
...
@@ -1016,11 +1023,10 @@ void nxagentDispatchEvents(PredicateFuncPtr predicate)
...
@@ -1016,11 +1023,10 @@ void nxagentDispatchEvents(PredicateFuncPtr predicate)
nxagentLastEnteredWindow
=
pWin
;
nxagentLastEnteredWindow
=
pWin
;
}
}
if
(
nxagentPulldownDialogPid
==
0
&&
(
X
.
xmotion
.
y_root
<
if
(
nxagentPulldownDialogPid
==
0
&&
nxagentLastEnteredTopLevelWindow
&&
nxagentLastEnteredTopLevelWindow
->
drawable
.
y
+
4
))
(
X
.
xmotion
.
y_root
<
nxagentLastEnteredTopLevelWindow
->
drawable
.
y
+
4
))
{
{
if
(
pWin
&&
nxagentLastEnteredTopLevelWindow
&&
if
(
pWin
&&
nxagentClientIsDialog
(
wClient
(
pWin
))
==
0
&&
nxagentClientIsDialog
(
wClient
(
pWin
))
==
0
&&
nxagentLastEnteredTopLevelWindow
->
parent
==
WindowTable
[
0
]
&&
nxagentLastEnteredTopLevelWindow
->
parent
==
WindowTable
[
0
]
&&
nxagentLastEnteredTopLevelWindow
->
overrideRedirect
==
False
&&
nxagentLastEnteredTopLevelWindow
->
overrideRedirect
==
False
&&
X
.
xmotion
.
x_root
>
(
nxagentLastEnteredTopLevelWindow
->
drawable
.
x
+
X
.
xmotion
.
x_root
>
(
nxagentLastEnteredTopLevelWindow
->
drawable
.
x
+
...
@@ -1052,7 +1058,8 @@ void nxagentDispatchEvents(PredicateFuncPtr predicate)
...
@@ -1052,7 +1058,8 @@ void nxagentDispatchEvents(PredicateFuncPtr predicate)
#ifdef NX_DEBUG_INPUT
#ifdef NX_DEBUG_INPUT
if
(
nxagentDebugInput
==
1
)
if
(
nxagentDebugInput
==
1
)
{
{
fprintf
(
stderr
,
"nxagentDispatchEvents: Adding motion event [%d, %d] to the queue.
\n
"
,
x
.
u
.
keyButtonPointer
.
rootX
,
x
.
u
.
keyButtonPointer
.
rootY
);
fprintf
(
stderr
,
"nxagentDispatchEvents: Adding motion event [%d, %d] to the queue.
\n
"
,
x
.
u
.
keyButtonPointer
.
rootX
,
x
.
u
.
keyButtonPointer
.
rootY
);
}
}
#endif
#endif
...
@@ -1911,8 +1918,9 @@ int nxagentHandleKeyPress(XEvent *X, enum HandleEventResult *result)
...
@@ -1911,8 +1918,9 @@ int nxagentHandleKeyPress(XEvent *X, enum HandleEventResult *result)
nxagentLastEventTime
=
nxagentLastKeyPressTime
=
GetTimeInMillis
();
nxagentLastEventTime
=
nxagentLastKeyPressTime
=
GetTimeInMillis
();
x
.
u
.
u
.
type
=
KeyPress
;
x
.
u
.
u
.
type
=
KeyPress
;
x
.
u
.
u
.
detail
=
X
->
xkey
.
keycode
;
x
.
u
.
u
.
detail
=
nxagentConvertKeycode
(
X
->
xkey
.
keycode
)
;
x
.
u
.
keyButtonPointer
.
time
=
nxagentLastKeyPressTime
;
x
.
u
.
keyButtonPointer
.
time
=
nxagentLastKeyPressTime
;
nxagentLastServerTime
=
X
->
xkey
.
time
;
nxagentLastServerTime
=
X
->
xkey
.
time
;
...
...
nx-X11/programs/Xserver/hw/nxagent/Font.c
View file @
6f5e20bc
...
@@ -65,26 +65,34 @@ is" without express or implied warranty.
...
@@ -65,26 +65,34 @@ is" without express or implied warranty.
#define NXAGENT_ALTERNATE_FONT_DIR "/usr/share/X11/fonts"
#define NXAGENT_ALTERNATE_FONT_DIR "/usr/share/X11/fonts"
#define NXAGENT_ALTERNATE_FONT_DIR_2 "/usr/share/fonts/X11"
#define NXAGENT_ALTERNATE_FONT_DIR_2 "/usr/share/fonts/X11"
#define NXAGENT_ALTERNATE_FONT_DIR_3 "/usr/share/fonts"
#define NXAGENT_ALTERNATE_FONT_DIR_3 "/usr/share/fonts"
#define NXAGENT_ALTERNATE_FONT_DIR_4 "/usr/NX/share/fonts"
#define NXAGENT_DEFAULT_FONT_PATH \
#define NXAGENT_DEFAULT_FONT_PATH \
"/usr/X11R6/lib/X11/fonts/misc/,/usr/X11R6/lib/X11/fonts/Speedo/,\
"/usr/X11R6/lib/X11/fonts/misc/,/usr/X11R6/lib/X11/fonts/Speedo/,\
/usr/X11R6/lib/X11/fonts/Type1/,/usr/X11R6/lib/X11/fonts/75dpi/,\
/usr/X11R6/lib/X11/fonts/Type1/,/usr/X11R6/lib/X11/fonts/75dpi/,\
/usr/X11R6/lib/X11/fonts/100dpi/,/usr/X11R6/lib/X11/fonts/TTF/"
/usr/X11R6/lib/X11/fonts/100dpi/,/usr/X11R6/lib/X11/fonts/TTF/,\
/usr/NX/share/fonts/base"
#define NXAGENT_ALTERNATE_FONT_PATH \
#define NXAGENT_ALTERNATE_FONT_PATH \
"/usr/share/X11/fonts/misc/,/usr/share/X11/fonts/Speedo/,\
"/usr/share/X11/fonts/misc/,/usr/share/X11/fonts/Speedo/,\
/usr/share/X11/fonts/Type1/,/usr/share/X11/fonts/75dpi/,\
/usr/share/X11/fonts/Type1/,/usr/share/X11/fonts/75dpi/,\
/usr/share/X11/fonts/100dpi/,/usr/share/X11/fonts/TTF/"
/usr/share/X11/fonts/100dpi/,/usr/share/X11/fonts/TTF/,\
/usr/NX/share/fonts/base"
#define NXAGENT_ALTERNATE_FONT_PATH_2 \
#define NXAGENT_ALTERNATE_FONT_PATH_2 \
"/usr/share/fonts/X11/misc/,/usr/share/fonts/X11/Speedo/,\
"/usr/share/fonts/X11/misc/,/usr/share/fonts/X11/Speedo/,\
/usr/share/fonts/X11/Type1/,/usr/share/fonts/X11/75dpi/,\
/usr/share/fonts/X11/Type1/,/usr/share/fonts/X11/75dpi/,\
/usr/share/fonts/X11/100dpi/,/usr/share/fonts/X11/TTF/"
/usr/share/fonts/X11/100dpi/,/usr/share/fonts/X11/TTF/,\
/usr/NX/share/fonts/base"
#define NXAGENT_ALTERNATE_FONT_PATH_3 \
#define NXAGENT_ALTERNATE_FONT_PATH_3 \
"/usr/share/fonts/misc/,/usr/share/fonts/Speedo/,\
"/usr/share/fonts/misc/,/usr/share/fonts/Speedo/,\
/usr/share/fonts/Type1/,/usr/share/fonts/75dpi/,\
/usr/share/fonts/Type1/,/usr/share/fonts/75dpi/,\
/usr/share/fonts/100dpi/,/usr/share/fonts/TTF/"
/usr/share/fonts/100dpi/,/usr/share/fonts/TTF/,\
/usr/NX/share/fonts/base"
#define NXAGENT_ALTERNATE_FONT_PATH_4 \
"/usr/NX/share/fonts/base"
#undef NXAGENT_FONTCACHE_DEBUG
#undef NXAGENT_FONTCACHE_DEBUG
#undef NXAGENT_RECONNECT_FONT_DEBUG
#undef NXAGENT_RECONNECT_FONT_DEBUG
...
@@ -1553,6 +1561,31 @@ void nxagentVerifyDefaultFontPath(void)
...
@@ -1553,6 +1561,31 @@ void nxagentVerifyDefaultFontPath(void)
strcat
(
fontPath
,
NXAGENT_ALTERNATE_FONT_PATH_3
);
strcat
(
fontPath
,
NXAGENT_ALTERNATE_FONT_PATH_3
);
}
}
if
(
stat
(
NXAGENT_ALTERNATE_FONT_DIR_4
,
&
dirStat
)
==
0
&&
S_ISDIR
(
dirStat
.
st_mode
)
!=
0
)
{
/*
* Let's use the "/usr/NX/share/fonts" path.
*/
#ifdef TEST
fprintf
(
stderr
,
"nxagentVerifyDefaultFontPath: Assuming fonts in directory [%s].
\n
"
,
validateString
(
NXAGENT_ALTERNATE_FONT_DIR_4
));
#endif
if
(
*
fontPath
!=
'\0'
)
{
fontPath
=
realloc
(
fontPath
,
strlen
(
fontPath
)
+
strlen
(
NXAGENT_ALTERNATE_FONT_PATH_4
)
+
2
);
strcat
(
fontPath
,
","
);
}
else
{
fontPath
=
realloc
(
fontPath
,
strlen
(
fontPath
)
+
strlen
(
NXAGENT_ALTERNATE_FONT_PATH_4
)
+
1
);
}
strcat
(
fontPath
,
NXAGENT_ALTERNATE_FONT_PATH_4
);
}
if
(
*
fontPath
==
'\0'
)
if
(
*
fontPath
==
'\0'
)
{
{
#ifdef WARNING
#ifdef WARNING
...
...
nx-X11/programs/Xserver/hw/nxagent/Keyboard.c
View file @
6f5e20bc
...
@@ -75,6 +75,8 @@ is" without express or implied warranty.
...
@@ -75,6 +75,8 @@ is" without express or implied warranty.
static
int
nxagentXkbGetNames
(
char
**
rules
,
char
**
model
,
char
**
layout
,
static
int
nxagentXkbGetNames
(
char
**
rules
,
char
**
model
,
char
**
layout
,
char
**
variant
,
char
**
options
);
char
**
variant
,
char
**
options
);
static
void
nxagentKeycodeConversionSetup
(
void
);
#endif
/* XKB */
#endif
/* XKB */
/*
/*
...
@@ -189,6 +191,281 @@ unsigned int nxagentAltMetaMask;
...
@@ -189,6 +191,281 @@ unsigned int nxagentAltMetaMask;
void
nxagentCheckAltMetaKeys
(
CARD8
,
int
);
void
nxagentCheckAltMetaKeys
(
CARD8
,
int
);
static
CARD8
nxagentConvertedKeycodes
[]
=
{
/* evdev pc105*/
/* 0 */
0
,
/* 1 */
1
,
/* 2 */
2
,
/* 3 */
3
,
/* 4 */
4
,
/* 5 */
5
,
/* 6 */
6
,
/* 7 */
7
,
/* 8 */
8
,
/* 9 */
9
,
/* 10 */
10
,
/* 11 */
11
,
/* 12 */
12
,
/* 13 */
13
,
/* 14 */
14
,
/* 15 */
15
,
/* 16 */
16
,
/* 17 */
17
,
/* 18 */
18
,
/* 19 */
19
,
/* 20 */
20
,
/* 21 */
21
,
/* 22 */
22
,
/* 23 */
23
,
/* 24 */
24
,
/* 25 */
25
,
/* 26 */
26
,
/* 27 */
27
,
/* 28 */
28
,
/* 29 */
29
,
/* 30 */
30
,
/* 31 */
31
,
/* 32 */
32
,
/* 33 */
33
,
/* 34 */
34
,
/* 35 */
35
,
/* 36 */
36
,
/* 37 */
37
,
/* 38 */
38
,
/* 39 */
39
,
/* 40 */
40
,
/* 41 */
41
,
/* 42 */
42
,
/* 43 */
43
,
/* 44 */
44
,
/* 45 */
45
,
/* 46 */
46
,
/* 47 */
47
,
/* 48 */
48
,
/* 49 */
49
,
/* 50 */
50
,
/* 51 */
51
,
/* 52 */
52
,
/* 53 */
53
,
/* 54 */
54
,
/* 55 */
55
,
/* 56 */
56
,
/* 57 */
57
,
/* 58 */
58
,
/* 59 */
59
,
/* 60 */
60
,
/* 61 */
61
,
/* 62 */
62
,
/* 63 */
63
,
/* 64 */
64
,
/* 65 */
65
,
/* 66 */
66
,
/* 67 */
67
,
/* 68 */
68
,
/* 69 */
69
,
/* 70 */
70
,
/* 71 */
71
,
/* 72 */
72
,
/* 73 */
73
,
/* 74 */
74
,
/* 75 */
75
,
/* 76 */
76
,
/* 77 */
77
,
/* 78 */
78
,
/* 79 */
79
,
/* 80 */
80
,
/* 81 */
81
,
/* 82 */
82
,
/* 83 */
83
,
/* 84 */
84
,
/* 85 */
85
,
/* 86 */
86
,
/* 87 */
87
,
/* 88 */
88
,
/* 89 */
89
,
/* 90 */
90
,
/* 91 */
91
,
/* 92 */
124
,
/* 93 */
93
,
/* 94 */
94
,
/* 95 */
95
,
/* 96 */
96
,
/* 97 */
211
,
/* 98 */
98
,
/* 99 */
99
,
/* 100 */
100
,
/* 101 */
208
,
/* 102 */
102
,
/* 103 */
103
,
/* 104 */
108
,
/* 105 */
109
,
/* 106 */
112
,
/* 107 */
111
,
/* 108 */
113
,
/* 109 */
109
,
/* 110 */
97
,
/* 111 */
98
,
/* 112 */
99
,
/* 113 */
100
,
/* 114 */
102
,
/* 115 */
103
,
/* 116 */
104
,
/* 117 */
105
,
/* 118 */
106
,
/* 119 */
107
,
/* 120 */
120
,
/* 121 */
121
,
/* 122 */
122
,
/* 123 */
123
,
/* 124 */
124
,
/* 125 */
126
,
/* 126 */
126
,
/* 127 */
110
,
/* 128 */
128
,
/* 129 */
129
,
/* 130 */
130
,
/* 131 */
131
,
/* 132 */
133
,
/* 133 */
115
,
/* 134 */
116
,
/* 135 */
117
,
/* 136 */
136
,
/* 137 */
137
,
/* 138 */
138
,
/* 139 */
139
,
/* 140 */
140
,
/* 141 */
141
,
/* 142 */
142
,
/* 143 */
143
,
/* 144 */
144
,
/* 145 */
145
,
/* 146 */
146
,
/* 147 */
147
,
/* 148 */
148
,
/* 149 */
149
,
/* 150 */
150
,
/* 151 */
151
,
/* 152 */
152
,
/* 153 */
153
,
/* 154 */
154
,
/* 155 */
155
,
/* 156 */
156
,
/* 157 */
157
,
/* 158 */
158
,
/* 159 */
159
,
/* 160 */
160
,
/* 161 */
161
,
/* 162 */
162
,
/* 163 */
163
,
/* 164 */
164
,
/* 165 */
165
,
/* 166 */
166
,
/* 167 */
167
,
/* 168 */
168
,
/* 169 */
169
,
/* 170 */
170
,
/* 171 */
171
,
/* 172 */
172
,
/* 173 */
173
,
/* 174 */
174
,
/* 175 */
175
,
/* 176 */
176
,
/* 177 */
177
,
/* 178 */
178
,
/* 179 */
179
,
/* 180 */
180
,
/* 181 */
181
,
/* 182 */
182
,
/* 183 */
183
,
/* 184 */
184
,
/* 185 */
185
,
/* 186 */
186
,
/* 187 */
187
,
/* 188 */
188
,
/* 189 */
189
,
/* 190 */
190
,
/* 191 */
118
,
/* 192 */
119
,
/* 193 */
120
,
/* 194 */
121
,
/* 195 */
122
,
/* 196 */
196
,
/* 197 */
197
,
/* 198 */
198
,
/* 199 */
199
,
/* 200 */
200
,
/* 201 */
201
,
/* 202 */
202
,
/* 203 */
93
,
/* 204 */
125
,
/* 205 */
156
,
/* 206 */
127
,
/* 207 */
128
,
/* 208 */
208
,
/* 209 */
209
,
/* 210 */
210
,
/* 211 */
211
,
/* 212 */
212
,
/* 213 */
213
,
/* 214 */
214
,
/* 215 */
215
,
/* 216 */
216
,
/* 217 */
217
,
/* 218 */
218
,
/* 219 */
219
,
/* 220 */
220
,
/* 221 */
221
,
/* 222 */
222
,
/* 223 */
223
,
/* 224 */
224
,
/* 225 */
225
,
/* 226 */
226
,
/* 227 */
227
,
/* 228 */
228
,
/* 229 */
229
,
/* 230 */
230
,
/* 231 */
231
,
/* 232 */
232
,
/* 233 */
233
,
/* 234 */
234
,
/* 235 */
235
,
/* 236 */
236
,
/* 237 */
237
,
/* 238 */
238
,
/* 239 */
239
,
/* 240 */
240
,
/* 241 */
241
,
/* 242 */
242
,
/* 243 */
243
,
/* 244 */
244
,
/* 245 */
245
,
/* 246 */
246
,
/* 247 */
247
,
/* 248 */
248
,
/* 249 */
249
,
/* 250 */
250
,
/* 251 */
251
,
/* 252 */
252
,
/* 253 */
253
,
/* 254 */
254
,
/* 255 */
255
};
static
int
nxagentKeycodeConversion
=
0
;
CARD8
nxagentConvertKeycode
(
CARD8
k
)
{
if
(
nxagentKeycodeConversion
!=
0
)
{
return
nxagentConvertedKeycodes
[
k
];
}
else
{
return
k
;
}
}
static
int
nxagentSaveKeyboardDeviceData
(
DeviceIntPtr
dev
,
DeviceIntPtr
devBackup
);
static
int
nxagentSaveKeyboardDeviceData
(
DeviceIntPtr
dev
,
DeviceIntPtr
devBackup
);
static
int
nxagentRestoreKeyboardDeviceData
(
DeviceIntPtr
devBackup
,
DeviceIntPtr
dev
);
static
int
nxagentRestoreKeyboardDeviceData
(
DeviceIntPtr
devBackup
,
DeviceIntPtr
dev
);
...
@@ -398,13 +675,6 @@ int nxagentKeyboardProc(DeviceIntPtr pDev, int onoff)
...
@@ -398,13 +675,6 @@ int nxagentKeyboardProc(DeviceIntPtr pDev, int onoff)
int
ret
;
int
ret
;
char
*
remoteRules
=
NULL
;
char
*
remoteModel
=
NULL
;
unsigned
int
remoteRulesLen
;
XkbRF_VarDefsRec
remoteDefs
;
switch
(
onoff
)
switch
(
onoff
)
{
{
case
DEVICE_INIT
:
case
DEVICE_INIT
:
...
@@ -676,14 +946,21 @@ XkbError:
...
@@ -676,14 +946,21 @@ XkbError:
xkb
=
XkbGetKeyboard
(
nxagentDisplay
,
XkbGBN_AllComponentsMask
,
XkbUseCoreKbd
);
xkb
=
XkbGetKeyboard
(
nxagentDisplay
,
XkbGBN_AllComponentsMask
,
XkbUseCoreKbd
);
nxagentKeycodeConversionSetup
();
if
(
xkb
==
NULL
||
xkb
->
geom
==
NULL
)
if
(
xkb
==
NULL
||
xkb
->
geom
==
NULL
)
{
{
#ifdef TEST
#ifdef TEST
fprintf
(
stderr
,
"nxagentKeyboardProc: No current keyboard.
\n
"
);
fprintf
(
stderr
,
"nxagentKeyboardProc: No current keyboard.
\n
"
);
#endif
if
(
xkb
==
NULL
)
{
#ifdef TEST
fprintf
(
stderr
,
"nxagentKeyboardProc: xkb is null.
\n
"
);
fprintf
(
stderr
,
"nxagentKeyboardProc: No keyboard, going to set rules and init device.
\n
"
);
}
else
{
fprintf
(
stderr
,
"nxagentKeyboardProc: xkb->geom is null.
\n
"
);
}
fprintf
(
stderr
,
"nxagentKeyboardProc: Going to set rules and init device.
\n
"
);
#endif
#endif
XkbSetRulesDflts
(
rules
,
model
,
layout
,
variants
,
options
);
XkbSetRulesDflts
(
rules
,
model
,
layout
,
variants
,
options
);
...
@@ -699,40 +976,6 @@ XkbError:
...
@@ -699,40 +976,6 @@ XkbError:
goto
XkbEnd
;
goto
XkbEnd
;
}
}
if
(
xkb
!=
NULL
)
{
char
*
drules
=
0
;
char
*
dmodel
=
0
;
char
*
dlayout
=
0
;
char
*
dvariant
=
0
;
char
*
doptions
=
0
;
remoteRulesLen
=
nxagentXkbGetNames
(
&
drules
,
&
dmodel
,
&
dlayout
,
&
dvariant
,
&
doptions
);
if
(
remoteRulesLen
!=
0
&&
drules
!=
NULL
&&
dmodel
!=
NULL
)
{
#ifdef DEBUG
fprintf
(
stderr
,
"nxagentKeyboardProc: Remote: [%s,%s,%s,%s,%s].
\n
"
,
drules
,
dmodel
,
dlayout
,
dvariant
,
doptions
);
#endif
remoteRules
=
drules
;
remoteModel
=
dmodel
;
remoteDefs
.
model
=
dmodel
;
remoteDefs
.
layout
=
dlayout
;
remoteDefs
.
variant
=
dvariant
;
remoteDefs
.
options
=
doptions
;
}
#ifdef DEBUG
else
{
fprintf
(
stderr
,
"nxagentKeyboardProc: Failed to retrieve remote "
"rules"
);
}
#endif
}
XkbGetControls
(
nxagentDisplay
,
XkbAllControlsMask
,
xkb
);
XkbGetControls
(
nxagentDisplay
,
XkbAllControlsMask
,
xkb
);
nxagentXkbConfigFilePathSize
=
strlen
(
XkbBaseDirectory
)
+
nxagentXkbConfigFilePathSize
=
strlen
(
XkbBaseDirectory
)
+
...
@@ -813,66 +1056,6 @@ XkbError:
...
@@ -813,66 +1056,6 @@ XkbError:
free
(
nxagentXkbConfigFilePath
);
free
(
nxagentXkbConfigFilePath
);
if
(
xkb
!=
NULL
&&
nxagentOption
(
ClientOs
)
==
ClientOsLinux
&&
remoteRules
!=
NULL
&&
remoteModel
!=
NULL
&&
(
strcmp
(
remoteRules
,
"evdev"
)
==
0
||
strcmp
(
remoteModel
,
"evdev"
)
==
0
)
&&
pDev
->
key
->
xkbInfo
!=
NULL
&&
pDev
->
key
->
xkbInfo
->
desc
!=
NULL
)
{
XkbDescPtr
xkbt
;
void
*
tmp
;
#ifdef _XSERVER64
int
i
;
#endif
xkbt
=
pDev
->
key
->
xkbInfo
->
desc
;
xkbt
->
min_key_code
=
xkb
->
min_key_code
;
xkbt
->
max_key_code
=
xkb
->
max_key_code
;
if
(
xkbt
->
map
!=
NULL
&&
xkb
->
map
!=
NULL
)
{
tmp
=
(
void
*
)
xkbt
->
map
;
xkbt
->
map
=
xkb
->
map
;
xkb
->
map
=
(
XkbClientMapPtr
)
tmp
;
#ifdef _XSERVER64
tmp
=
(
void
*
)
xkbt
->
map
->
syms
;
xkbt
->
map
->
syms
=
xalloc
(
xkbt
->
map
->
size_syms
*
sizeof
(
KeySym
));
for
(
i
=
0
;
i
<
xkbt
->
map
->
size_syms
;
i
++
)
{
xkbt
->
map
->
syms
[
i
]
=
((
KeySym64
*
)
tmp
)[
i
];
}
#endif
}
if
(
xkbt
->
server
!=
NULL
&&
xkb
->
server
!=
NULL
)
{
tmp
=
(
void
*
)
xkbt
->
server
;
xkbt
->
server
=
xkb
->
server
;
xkb
->
server
=
(
XkbServerMapPtr
)
tmp
;
}
if
(
xkbt
->
compat
!=
NULL
&&
xkb
->
compat
!=
NULL
)
{
tmp
=
(
void
*
)
xkbt
->
compat
;
xkbt
->
compat
=
xkb
->
compat
;
xkb
->
compat
=
(
XkbCompatMapPtr
)
tmp
;
}
XkbSetRulesDflts
(
remoteRules
,
remoteDefs
.
model
,
remoteDefs
.
layout
,
remoteDefs
.
variant
,
remoteDefs
.
options
);
XkbSetRulesUsed
(
&
remoteDefs
);
free
(
remoteRules
);
goto
XkbEnd
;
}
if
(
!
nxagentKeyboard
||
if
(
!
nxagentKeyboard
||
(
nxagentKeyboard
&&
(
strcmp
(
nxagentKeyboard
,
"query"
)
==
0
)))
(
nxagentKeyboard
&&
(
strcmp
(
nxagentKeyboard
,
"query"
)
==
0
)))
{
{
...
@@ -1562,4 +1745,71 @@ static int nxagentXkbGetNames(char **rules, char **model, char **layout,
...
@@ -1562,4 +1745,71 @@ static int nxagentXkbGetNames(char **rules, char **model, char **layout,
return
n
;
return
n
;
}
}
void
nxagentKeycodeConversionSetup
(
void
)
{
char
*
drules
=
0
;
char
*
dmodel
=
0
;
char
*
dlayout
=
0
;
char
*
dvariant
=
0
;
char
*
doptions
=
0
;
unsigned
int
drulesLen
;
nxagentKeycodeConversion
=
0
;
drulesLen
=
nxagentXkbGetNames
(
&
drules
,
&
dmodel
,
&
dlayout
,
&
dvariant
,
&
doptions
);
#ifdef DEBUG
if
(
drulesLen
!=
0
&&
drules
!=
NULL
&&
dmodel
!=
NULL
)
{
fprintf
(
stderr
,
"nxagentKeycodeConversionSetup: "
"Remote: [%s,%s,%s,%s,%s].
\n
"
,
drules
,
dmodel
,
dlayout
,
dvariant
,
doptions
);
}
else
{
fprintf
(
stderr
,
"nxagentKeycodeConversionSetup: "
"Failed to retrieve remote rules.
\n
"
);
}
#endif
if
(
nxagentOption
(
ClientOs
)
==
ClientOsLinux
&&
drules
!=
NULL
&&
dmodel
!=
NULL
&&
(
strcmp
(
drules
,
"evdev"
)
==
0
||
strcmp
(
dmodel
,
"evdev"
)
==
0
))
{
nxagentKeycodeConversion
=
1
;
}
if
(
drules
!=
NULL
)
{
XFree
(
drules
);
}
}
void
nxagentResetKeycodeConversion
(
void
)
{
int
result
;
XkbAgentInfoRec
info
;
XkbDescPtr
xkb
;
result
=
XkbQueryExtension
(
nxagentDisplay
,
&
info
.
Opcode
,
&
info
.
EventBase
,
&
info
.
ErrorBase
,
&
info
.
MajorVersion
,
&
info
.
MinorVersion
);
if
(
result
!=
0
)
{
nxagentKeycodeConversionSetup
();
}
else
{
#ifdef WARNING
fprintf
(
stderr
,
"nxagentResetKeycodeConversion: "
"WARNING! Failed to query XKB extension.
\n
"
);
#endif
nxagentKeycodeConversion
=
0
;
}
}
#endif
#endif
nx-X11/programs/Xserver/hw/nxagent/Keyboard.h
View file @
6f5e20bc
...
@@ -109,6 +109,10 @@ void nxagentEnableXkbExtension(void);
...
@@ -109,6 +109,10 @@ void nxagentEnableXkbExtension(void);
void
nxagentTuneXkbWrapper
(
void
);
void
nxagentTuneXkbWrapper
(
void
);
void
nxagentResetKeycodeConversion
(
void
);
#endif
#endif
CARD8
nxagentConvertKeycode
(
CARD8
k
);
#endif
/* __Keyboard_H__ */
#endif
/* __Keyboard_H__ */
nx-X11/programs/Xserver/hw/nxagent/Reconnect.c
View file @
6f5e20bc
...
@@ -547,13 +547,11 @@ Bool nxagentReconnectSession(void)
...
@@ -547,13 +547,11 @@ Bool nxagentReconnectSession(void)
goto
nxagentReconnectError
;
goto
nxagentReconnectError
;
}
}
if
(
nxagentOption
(
ResetKeyboardAtResume
))
if
(
nxagentOption
(
ResetKeyboardAtResume
)
==
1
&&
{
(
nxagentKeyboard
==
NULL
||
nxagentOldKeyboard
==
NULL
||
if
(
nxagentKeyboard
==
NULL
||
nxagentOldKeyboard
==
NULL
||
strcmp
(
nxagentKeyboard
,
nxagentOldKeyboard
)
!=
0
||
strcmp
(
nxagentKeyboard
,
nxagentOldKeyboard
)
!=
0
||
strcmp
(
nxagentKeyboard
,
"query"
)
==
0
)
strcmp
(
nxagentKeyboard
,
"query"
)
==
0
)
)
{
{
if
(
nxagentResetKeyboard
()
==
0
)
if
(
nxagentResetKeyboard
()
==
0
)
{
{
#ifdef WARNING
#ifdef WARNING
...
@@ -568,6 +566,9 @@ Bool nxagentReconnectSession(void)
...
@@ -568,6 +566,9 @@ Bool nxagentReconnectSession(void)
goto
nxagentReconnectError
;
goto
nxagentReconnectError
;
}
}
}
}
else
{
nxagentResetKeycodeConversion
();
}
}
nxagentXkbState
.
Initialized
=
0
;
nxagentXkbState
.
Initialized
=
0
;
...
...
nx-X11/programs/Xserver/hw/nxagent/Render.c
View file @
6f5e20bc
...
@@ -2270,8 +2270,7 @@ void nxagentAddGlyphs(GlyphSetPtr glyphSet, Glyph *gids, xGlyphInfo *gi,
...
@@ -2270,8 +2270,7 @@ void nxagentAddGlyphs(GlyphSetPtr glyphSet, Glyph *gids, xGlyphInfo *gi,
normalizedImages
=
NULL
;
normalizedImages
=
NULL
;
if
(
glyphDepths
[
glyphSet
->
fdepth
]
==
1
&&
if
(
sizeImages
>
0
)
nxagentServerOrder
()
!=
BitmapBitOrder
(
nxagentDisplay
))
{
{
normalizedImages
=
xalloc
(
sizeImages
);
normalizedImages
=
xalloc
(
sizeImages
);
...
@@ -2279,8 +2278,12 @@ void nxagentAddGlyphs(GlyphSetPtr glyphSet, Glyph *gids, xGlyphInfo *gi,
...
@@ -2279,8 +2278,12 @@ void nxagentAddGlyphs(GlyphSetPtr glyphSet, Glyph *gids, xGlyphInfo *gi,
{
{
memcpy
(
normalizedImages
,
images
,
sizeImages
);
memcpy
(
normalizedImages
,
images
,
sizeImages
);
if
(
glyphDepths
[
glyphSet
->
fdepth
]
==
1
&&
nxagentServerOrder
()
!=
BitmapBitOrder
(
nxagentDisplay
))
{
BitOrderInvert
((
unsigned
char
*
)
normalizedImages
,
sizeImages
);
BitOrderInvert
((
unsigned
char
*
)
normalizedImages
,
sizeImages
);
}
}
}
else
else
{
{
#ifdef PANIC
#ifdef PANIC
...
...
nx-X11/programs/Xserver/hw/nxagent/X/NXevents.c
View file @
6f5e20bc
...
@@ -189,6 +189,10 @@ xEvent *xeviexE;
...
@@ -189,6 +189,10 @@ xEvent *xeviexE;
#include "Windows.h"
#include "Windows.h"
#include "Args.h"
#include "Args.h"
#ifdef NX_DEBUG_INPUT
extern
int
nxagentDebugInput
;
#endif
extern
Display
*
nxagentDisplay
;
extern
Display
*
nxagentDisplay
;
extern
WindowPtr
nxagentLastEnteredWindow
;
extern
WindowPtr
nxagentLastEnteredWindow
;
...
@@ -1682,11 +1686,28 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
...
@@ -1682,11 +1686,28 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
int
i
;
int
i
;
int
type
;
int
type
;
#ifdef DEBUG
#ifdef NX_DEBUG_INPUT
if
(
grab
&&
nxagentDebugInput
&&
grab
->
window
)
{
fprintf
(
stderr
,
"TryClientEvents: Grab window is [0x%x].
\n
"
,
(
unsigned
int
)
grab
->
window
->
drawable
.
id
);
if
(
!
SameClient
(
grab
,
client
))
fprintf
(
stderr
,
"TryClientEvents: Events are going to be "
"discarded.
\n
"
);
}
#endif
#if defined(DEBUG) || defined(NX_DEBUG_INPUT)
#ifdef NX_DEBUG_INPUT
if
(
nxagentDebugInput
==
1
)
fprintf
(
stderr
,
"Event([%d, %d], mask=0x%x), client=%d"
,
pEvents
->
u
.
u
.
type
,
pEvents
->
u
.
u
.
detail
,
(
unsigned
int
)
mask
,
client
->
index
);
#else
if
(
debug_events
)
ErrorF
(
if
(
debug_events
)
ErrorF
(
"Event([%d, %d], mask=0x%x), client=%d"
,
"Event([%d, %d], mask=0x%x), client=%d"
,
pEvents
->
u
.
u
.
type
,
pEvents
->
u
.
u
.
detail
,
mask
,
client
->
index
);
pEvents
->
u
.
u
.
type
,
pEvents
->
u
.
u
.
detail
,
mask
,
client
->
index
);
#endif
#endif
#endif
if
((
client
)
&&
(
client
!=
serverClient
)
&&
(
!
client
->
clientGone
)
&&
if
((
client
)
&&
(
client
!=
serverClient
)
&&
(
!
client
->
clientGone
)
&&
((
filter
==
CantBeFiltered
)
||
(
mask
&
filter
)))
((
filter
==
CantBeFiltered
)
||
(
mask
&
filter
)))
{
{
...
@@ -1700,10 +1721,17 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
...
@@ -1700,10 +1721,17 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
if
(
WID
(
inputInfo
.
pointer
->
valuator
->
motionHintWindow
)
==
if
(
WID
(
inputInfo
.
pointer
->
valuator
->
motionHintWindow
)
==
pEvents
->
u
.
keyButtonPointer
.
event
)
pEvents
->
u
.
keyButtonPointer
.
event
)
{
{
#ifdef DEBUG
#if defined(DEBUG) || defined(NX_DEBUG_INPUT)
#ifdef NX_DEBUG_INPUT
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"
\n
motionHintWindow == keyButtonPointer.event
\n
"
);
}
#else
if
(
debug_events
)
ErrorF
(
"
\n
"
);
if
(
debug_events
)
ErrorF
(
"
\n
"
);
fprintf
(
stderr
,
"motionHintWindow == keyButtonPointer.event
\n
"
);
fprintf
(
stderr
,
"motionHintWindow == keyButtonPointer.event
\n
"
);
#endif
#endif
#endif
return
1
;
/* don't send, but pretend we did */
return
1
;
/* don't send, but pretend we did */
}
}
pEvents
->
u
.
u
.
detail
=
NotifyHint
;
pEvents
->
u
.
u
.
detail
=
NotifyHint
;
...
@@ -1740,16 +1768,26 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
...
@@ -1740,16 +1768,26 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
}
}
WriteEventsToClient
(
client
,
count
,
pEvents
);
WriteEventsToClient
(
client
,
count
,
pEvents
);
#ifdef DEBUG
#if defined(DEBUG) || defined(NX_DEBUG_INPUT)
#ifdef NX_DEBUG_INPUT
if
(
nxagentDebugInput
==
1
)
fprintf
(
stderr
,
" delivered
\n
"
);
#else
if
(
debug_events
)
ErrorF
(
" delivered
\n
"
);
if
(
debug_events
)
ErrorF
(
" delivered
\n
"
);
#endif
#endif
#endif
return
1
;
return
1
;
}
}
else
else
{
{
#ifdef DEBUG
#if defined(DEBUG) || defined(NX_DEBUG_INPUT)
#ifdef NX_DEBUG_INPUT
if
(
nxagentDebugInput
==
1
)
fprintf
(
stderr
,
"
\n
"
);
#else
if
(
debug_events
)
ErrorF
(
"
\n
"
);
if
(
debug_events
)
ErrorF
(
"
\n
"
);
#endif
#endif
#endif
return
0
;
return
0
;
}
}
}
}
...
@@ -3116,6 +3154,12 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
...
@@ -3116,6 +3154,12 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
xevieEventSent
=
0
;
xevieEventSent
=
0
;
else
{
else
{
xeviemouse
=
mouse
;
xeviemouse
=
mouse
;
#ifdef NX_DEBUG_INPUT
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"ProcessPointerEvent: Going to send XEVIE event.
\n
"
);
}
#endif
WriteToClient
(
clients
[
xevieClientIndex
],
sizeof
(
xEvent
),
(
char
*
)
xE
);
WriteToClient
(
clients
[
xevieClientIndex
],
sizeof
(
xEvent
),
(
char
*
)
xE
);
return
;
return
;
}
}
...
@@ -3170,14 +3214,38 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
...
@@ -3170,14 +3214,38 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
#if !defined(XFree86Server) || !defined(XINPUT)
#if !defined(XFree86Server) || !defined(XINPUT)
xE
->
u
.
u
.
detail
=
butc
->
map
[
key
];
xE
->
u
.
u
.
detail
=
butc
->
map
[
key
];
#endif
#endif
#ifdef NX_DEBUG_INPUT
if
(
xE
->
u
.
u
.
detail
==
0
)
{
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"ProcessPointerEvent: WARNING! detail == 0"
" for ButtonPress.
\n
"
);
}
return
;
}
#else
if
(
xE
->
u
.
u
.
detail
==
0
)
if
(
xE
->
u
.
u
.
detail
==
0
)
return
;
return
;
#endif
if
(
xE
->
u
.
u
.
detail
<=
5
)
if
(
xE
->
u
.
u
.
detail
<=
5
)
butc
->
state
|=
(
Button1Mask
>>
1
)
<<
xE
->
u
.
u
.
detail
;
butc
->
state
|=
(
Button1Mask
>>
1
)
<<
xE
->
u
.
u
.
detail
;
filters
[
MotionNotify
]
=
Motion_Filter
(
butc
);
filters
[
MotionNotify
]
=
Motion_Filter
(
butc
);
if
(
!
grab
)
if
(
!
grab
)
#ifdef NX_DEBUG_INPUT
if
(
CheckDeviceGrabs
(
mouse
,
xE
,
0
,
count
))
{
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"ProcessPointerEvent: CheckDeviceGrabs"
" returned True for ButtonPress.
\n
"
);
}
return
;
}
#else
if
(
CheckDeviceGrabs
(
mouse
,
xE
,
0
,
count
))
if
(
CheckDeviceGrabs
(
mouse
,
xE
,
0
,
count
))
return
;
return
;
#endif
break
;
break
;
case
ButtonRelease
:
case
ButtonRelease
:
mouse
->
valuator
->
motionHintWindow
=
NullWindow
;
mouse
->
valuator
->
motionHintWindow
=
NullWindow
;
...
@@ -3189,8 +3257,20 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
...
@@ -3189,8 +3257,20 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
#if !defined(XFree86Server) || !defined(XINPUT)
#if !defined(XFree86Server) || !defined(XINPUT)
xE
->
u
.
u
.
detail
=
butc
->
map
[
key
];
xE
->
u
.
u
.
detail
=
butc
->
map
[
key
];
#endif
#endif
#ifdef NX_DEBUG_INPUT
if
(
xE
->
u
.
u
.
detail
==
0
)
{
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"ProcessPointerEvent: WARNING! detail == 0"
" for ButtonRelease.
\n
"
);
}
return
;
}
#else
if
(
xE
->
u
.
u
.
detail
==
0
)
if
(
xE
->
u
.
u
.
detail
==
0
)
return
;
return
;
#endif
if
(
xE
->
u
.
u
.
detail
<=
5
)
if
(
xE
->
u
.
u
.
detail
<=
5
)
butc
->
state
&=
~
((
Button1Mask
>>
1
)
<<
xE
->
u
.
u
.
detail
);
butc
->
state
&=
~
((
Button1Mask
>>
1
)
<<
xE
->
u
.
u
.
detail
);
filters
[
MotionNotify
]
=
Motion_Filter
(
butc
);
filters
[
MotionNotify
]
=
Motion_Filter
(
butc
);
...
@@ -3201,6 +3281,36 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
...
@@ -3201,6 +3281,36 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
FatalError
(
"bogus pointer event from ddx"
);
FatalError
(
"bogus pointer event from ddx"
);
}
}
}
}
#ifdef NX_DEBUG_INPUT
else
if
(
!
CheckMotion
(
xE
))
{
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"ProcessPointerEvent: CheckMotion returned False"
" for MotionNotify.
\n
"
);
}
return
;
}
if
(
grab
)
{
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"ProcessPointerEvent: Going to deliver grabbed "
"events (count = %d).
\n
"
,
count
);
}
DeliverGrabbedEvent
(
xE
,
mouse
,
deactivateGrab
,
count
);
}
else
{
if
(
nxagentDebugInput
==
1
)
{
fprintf
(
stderr
,
"ProcessPointerEvent: Going to deliver device "
"events (count = %d).
\n
"
,
count
);
}
DeliverDeviceEvents
(
sprite
.
win
,
xE
,
NullGrab
,
NullWindow
,
mouse
,
count
);
}
#else
else
if
(
!
CheckMotion
(
xE
))
else
if
(
!
CheckMotion
(
xE
))
return
;
return
;
if
(
grab
)
if
(
grab
)
...
@@ -3208,6 +3318,7 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
...
@@ -3208,6 +3318,7 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
else
else
DeliverDeviceEvents
(
sprite
.
win
,
xE
,
NullGrab
,
NullWindow
,
DeliverDeviceEvents
(
sprite
.
win
,
xE
,
NullGrab
,
NullWindow
,
mouse
,
count
);
mouse
,
count
);
#endif
if
(
deactivateGrab
)
if
(
deactivateGrab
)
(
*
mouse
->
DeactivateGrab
)(
mouse
);
(
*
mouse
->
DeactivateGrab
)(
mouse
);
}
}
...
...
nx-X11/programs/Xserver/hw/nxagent/X/NXevents.c.NX.original
View file @
6f5e20bc
...
@@ -189,6 +189,10 @@ xEvent *xeviexE;
...
@@ -189,6 +189,10 @@ xEvent *xeviexE;
#include "Windows.h"
#include "Windows.h"
#include "Args.h"
#include "Args.h"
#ifdef NX_DEBUG_INPUT
extern int nxagentDebugInput;
#endif
extern Display *nxagentDisplay;
extern Display *nxagentDisplay;
extern WindowPtr nxagentLastEnteredWindow;
extern WindowPtr nxagentLastEnteredWindow;
...
@@ -1682,11 +1686,28 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
...
@@ -1682,11 +1686,28 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
int i;
int i;
int type;
int type;
#ifdef DEBUG
#ifdef NX_DEBUG_INPUT
if (grab && nxagentDebugInput && grab->window)
{
fprintf(stderr, "TryClientEvents: Grab window is [0x%x].\n",
(unsigned int)grab->window->drawable.id);
if (!SameClient(grab, client))
fprintf(stderr, "TryClientEvents: Events are going to be "
"discarded.\n");
}
#endif
#if defined(DEBUG) || defined(NX_DEBUG_INPUT)
#ifdef NX_DEBUG_INPUT
if (nxagentDebugInput == 1)
fprintf(stderr, "Event([%d, %d], mask=0x%x), client=%d",
pEvents->u.u.type, pEvents->u.u.detail, (unsigned int)mask,
client->index);
#else
if (debug_events) ErrorF(
if (debug_events) ErrorF(
"Event([%d, %d], mask=0x%x), client=%d",
"Event([%d, %d], mask=0x%x), client=%d",
pEvents->u.u.type, pEvents->u.u.detail, mask, client->index);
pEvents->u.u.type, pEvents->u.u.detail, mask, client->index);
#endif
#endif
#endif
if ((client) && (client != serverClient) && (!client->clientGone) &&
if ((client) && (client != serverClient) && (!client->clientGone) &&
((filter == CantBeFiltered) || (mask & filter)))
((filter == CantBeFiltered) || (mask & filter)))
{
{
...
@@ -1700,10 +1721,17 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
...
@@ -1700,10 +1721,17 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
if (WID(inputInfo.pointer->valuator->motionHintWindow) ==
if (WID(inputInfo.pointer->valuator->motionHintWindow) ==
pEvents->u.keyButtonPointer.event)
pEvents->u.keyButtonPointer.event)
{
{
#ifdef DEBUG
#if defined(DEBUG) || defined(NX_DEBUG_INPUT)
#ifdef NX_DEBUG_INPUT
if (nxagentDebugInput == 1)
{
fprintf(stderr,"\nmotionHintWindow == keyButtonPointer.event\n");
}
#else
if (debug_events) ErrorF("\n");
if (debug_events) ErrorF("\n");
fprintf(stderr,"motionHintWindow == keyButtonPointer.event\n");
fprintf(stderr,"motionHintWindow == keyButtonPointer.event\n");
#endif
#endif
#endif
return 1; /* don't send, but pretend we did */
return 1; /* don't send, but pretend we did */
}
}
pEvents->u.u.detail = NotifyHint;
pEvents->u.u.detail = NotifyHint;
...
@@ -1740,16 +1768,26 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
...
@@ -1740,16 +1768,26 @@ TryClientEvents (ClientPtr client, xEvent *pEvents, int count, Mask mask,
}
}
WriteEventsToClient(client, count, pEvents);
WriteEventsToClient(client, count, pEvents);
#ifdef DEBUG
#if defined(DEBUG) || defined(NX_DEBUG_INPUT)
#ifdef NX_DEBUG_INPUT
if (nxagentDebugInput == 1)
fprintf(stderr, " delivered\n");
#else
if (debug_events) ErrorF( " delivered\n");
if (debug_events) ErrorF( " delivered\n");
#endif
#endif
#endif
return 1;
return 1;
}
}
else
else
{
{
#ifdef DEBUG
#if defined(DEBUG) || defined(NX_DEBUG_INPUT)
#ifdef NX_DEBUG_INPUT
if (nxagentDebugInput == 1)
fprintf(stderr, "\n");
#else
if (debug_events) ErrorF("\n");
if (debug_events) ErrorF("\n");
#endif
#endif
#endif
return 0;
return 0;
}
}
}
}
...
@@ -3116,6 +3154,12 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
...
@@ -3116,6 +3154,12 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
xevieEventSent = 0;
xevieEventSent = 0;
else {
else {
xeviemouse = mouse;
xeviemouse = mouse;
#ifdef NX_DEBUG_INPUT
if (nxagentDebugInput == 1)
{
fprintf(stderr, "ProcessPointerEvent: Going to send XEVIE event.\n");
}
#endif
WriteToClient(clients[xevieClientIndex], sizeof(xEvent), (char *)xE);
WriteToClient(clients[xevieClientIndex], sizeof(xEvent), (char *)xE);
return;
return;
}
}
...
@@ -3170,14 +3214,38 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
...
@@ -3170,14 +3214,38 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
#if !defined(XFree86Server) || !defined(XINPUT)
#if !defined(XFree86Server) || !defined(XINPUT)
xE->u.u.detail = butc->map[key];
xE->u.u.detail = butc->map[key];
#endif
#endif
#ifdef NX_DEBUG_INPUT
if (xE->u.u.detail == 0)
{
if (nxagentDebugInput == 1)
{
fprintf(stderr, "ProcessPointerEvent: WARNING! detail == 0"
" for ButtonPress.\n");
}
return;
}
#else
if (xE->u.u.detail == 0)
if (xE->u.u.detail == 0)
return;
return;
#endif
if (xE->u.u.detail <= 5)
if (xE->u.u.detail <= 5)
butc->state |= (Button1Mask >> 1) << xE->u.u.detail;
butc->state |= (Button1Mask >> 1) << xE->u.u.detail;
filters[MotionNotify] = Motion_Filter(butc);
filters[MotionNotify] = Motion_Filter(butc);
if (!grab)
if (!grab)
#ifdef NX_DEBUG_INPUT
if (CheckDeviceGrabs(mouse, xE, 0, count))
{
if (nxagentDebugInput == 1)
{
fprintf(stderr, "ProcessPointerEvent: CheckDeviceGrabs"
" returned True for ButtonPress.\n");
}
return;
}
#else
if (CheckDeviceGrabs(mouse, xE, 0, count))
if (CheckDeviceGrabs(mouse, xE, 0, count))
return;
return;
#endif
break;
break;
case ButtonRelease:
case ButtonRelease:
mouse->valuator->motionHintWindow = NullWindow;
mouse->valuator->motionHintWindow = NullWindow;
...
@@ -3189,8 +3257,20 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
...
@@ -3189,8 +3257,20 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
#if !defined(XFree86Server) || !defined(XINPUT)
#if !defined(XFree86Server) || !defined(XINPUT)
xE->u.u.detail = butc->map[key];
xE->u.u.detail = butc->map[key];
#endif
#endif
#ifdef NX_DEBUG_INPUT
if (xE->u.u.detail == 0)
{
if (nxagentDebugInput == 1)
{
fprintf(stderr, "ProcessPointerEvent: WARNING! detail == 0"
" for ButtonRelease.\n");
}
return;
}
#else
if (xE->u.u.detail == 0)
if (xE->u.u.detail == 0)
return;
return;
#endif
if (xE->u.u.detail <= 5)
if (xE->u.u.detail <= 5)
butc->state &= ~((Button1Mask >> 1) << xE->u.u.detail);
butc->state &= ~((Button1Mask >> 1) << xE->u.u.detail);
filters[MotionNotify] = Motion_Filter(butc);
filters[MotionNotify] = Motion_Filter(butc);
...
@@ -3201,6 +3281,36 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
...
@@ -3201,6 +3281,36 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
FatalError("bogus pointer event from ddx");
FatalError("bogus pointer event from ddx");
}
}
}
}
#ifdef NX_DEBUG_INPUT
else if (!CheckMotion(xE))
{
if (nxagentDebugInput == 1)
{
fprintf(stderr, "ProcessPointerEvent: CheckMotion returned False"
" for MotionNotify.\n");
}
return;
}
if (grab)
{
if (nxagentDebugInput == 1)
{
fprintf(stderr, "ProcessPointerEvent: Going to deliver grabbed "
"events (count = %d).\n", count);
}
DeliverGrabbedEvent(xE, mouse, deactivateGrab, count);
}
else
{
if (nxagentDebugInput == 1)
{
fprintf(stderr, "ProcessPointerEvent: Going to deliver device "
"events (count = %d).\n", count);
}
DeliverDeviceEvents(sprite.win, xE, NullGrab, NullWindow,
mouse, count);
}
#else
else if (!CheckMotion(xE))
else if (!CheckMotion(xE))
return;
return;
if (grab)
if (grab)
...
@@ -3208,6 +3318,7 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
...
@@ -3208,6 +3318,7 @@ ProcessPointerEvent (register xEvent *xE, register DeviceIntPtr mouse, int count
else
else
DeliverDeviceEvents(sprite.win, xE, NullGrab, NullWindow,
DeliverDeviceEvents(sprite.win, xE, NullGrab, NullWindow,
mouse, count);
mouse, count);
#endif
if (deactivateGrab)
if (deactivateGrab)
(*mouse->DeactivateGrab)(mouse);
(*mouse->DeactivateGrab)(mouse);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment