Coverage for /home/antoine/projects/xpra-git/dist/python3/lib64/python/xpra/server/rfb/rfb_const.py : 100%
Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# This file is part of Xpra.
2# Copyright (C) 2017 Antoine Martin <antoine@xpra.org>
3# Xpra is released under the terms of the GNU GPL v2, or, at your option, any
4# later version. See the file COPYING for details.
6import struct
8#merge header and packet if packet is smaller than:
9PIXEL_FORMAT = b"BBBBHHHBBBBBB"
12class RFBClientMessage:
13 """ client to server messages """
14 SETPIXELFORMAT = 0
15 SETENCODINGS = 2
16 FRAMEBUFFERUPDATEREQUEST = 3
17 KEYEVENT = 4
18 POINTEREVENT = 5
19 CLIENTCUTTEXT = 6
20 #optional:
21 FILETRANSFER = 7
22 SETSCALE = 8
23 SETSERVERINPUT = 9
24 SETSW = 10
25 TEXTCHAT = 11
26 KEYFRAMEREQUEST = 12
27 KEEPALIVE = 13
28 SETSCALEFACTOR = 15
29 REQUESTSESSION = 20
30 SETSESSION = 21
31 NOTIFYPLUGINSTREAMING = 80
32 VMWARE = 127
33 CARCONNECTIVITY = 128
34 ENABLECONTINUOUSUPDATES = 150
35 CLIENTFENCE = 248
36 OLIVECALLCONTROL = 249
37 XVPCLIENTMESSAGE = 250
38 SETDESKTOPSIZE = 251
39 TIGHT = 252
40 GIICLIENTMESSAGE = 253
41 VMWARE = 254
42 QEMUCLIENTMESSAGE = 255
44 PACKET_TYPE_STR = {
45 SETPIXELFORMAT : "SetPixelFormat",
46 SETENCODINGS : "SetEncodings",
47 FRAMEBUFFERUPDATEREQUEST : "FramebufferUpdateRequest",
48 KEYEVENT : "KeyEvent",
49 POINTEREVENT : "PointerEvent",
50 CLIENTCUTTEXT : "ClientCutText",
51 #optional:
52 FILETRANSFER : "FileTransfer",
53 SETSCALE : "SetScale",
54 SETSERVERINPUT : "SetServerInput",
55 SETSW : "SetSW",
56 TEXTCHAT : "TextChat",
57 KEYFRAMEREQUEST : "KeyFrameRequest",
58 KEEPALIVE : "KeepAlive",
59 SETSCALEFACTOR : "SetScaleFactor",
60 REQUESTSESSION : "RequestSession",
61 SETSESSION : "SetSession",
62 NOTIFYPLUGINSTREAMING : "NotifiyPluginStreaming",
63 VMWARE : "VMWare",
64 CARCONNECTIVITY : "CarConnectivity",
65 ENABLECONTINUOUSUPDATES : "EnableContiniousUpdates",
66 CLIENTFENCE : "ClientFence",
67 OLIVECALLCONTROL : "OliveCallControl",
68 XVPCLIENTMESSAGE : "XvpClientMessage",
69 SETDESKTOPSIZE : "SetDesktopSize",
70 TIGHT : "Tight",
71 GIICLIENTMESSAGE : "GIIClientMessage",
72 VMWARE : "VMWare",
73 QEMUCLIENTMESSAGE : "QEMUClientMessage",
74 }
75 PACKET_FMT = {
76 SETPIXELFORMAT : b"!BBBB"+PIXEL_FORMAT,
77 SETENCODINGS : b"!BBH",
78 FRAMEBUFFERUPDATEREQUEST : b"!BBHHHH",
79 KEYEVENT : b"!BBBBi",
80 POINTEREVENT : b"!BBHH",
81 CLIENTCUTTEXT : b"!BBBBi",
82 }
83 PACKET_STRUCT = {}
84 for ptype, fmt in PACKET_FMT.items():
85 PACKET_STRUCT[ptype] = struct.Struct(fmt)
88class RFBServerMessage:
89 #server to client messages:
90 FRAMEBUFFERUPDATE = 0
91 SETCOLORMAPENTRIES = 1
92 BELL = 2
93 SERVERCUTTEXT = 3
94 #optional:
95 RESIZEFRAMEBUFFER1 = 4
96 KEYFRAMEUPDATE = 4
97 FILETRANSFER = 7
98 TEXTCHAT = 11
99 KEEPALIVE = 13
100 RESIZEFRAMEBUFFER2 = 15
101 VMWARE1 = 127
102 CARCONNECTIVITY = 128
103 ENDOFCONTINOUSUPDATES = 150
104 SERVERSTATE = 173
105 SERVERFENCE = 248
106 OLIVECALLCONTROL = 249
107 XVPSERVERMESSAGE = 250
108 TIGHT = 252
109 GIISERVERMESSAGE = 253
110 VMWARE2 = 254
111 QEMUSERVERMESSAGE = 255
113 PACKET_TYPE_STR = {
114 FRAMEBUFFERUPDATE : "FramebufferUpdate",
115 SETCOLORMAPENTRIES : "SetColorMapEntries",
116 BELL : "Bell",
117 SERVERCUTTEXT : "ServerCutText",
118 #optional:
119 RESIZEFRAMEBUFFER1 : "ResizeFrameBuffer1",
120 KEYFRAMEUPDATE : "KeyFrameUpdate",
121 FILETRANSFER : "FileTransfer",
122 TEXTCHAT : "TextChat",
123 KEEPALIVE : "KeepAlive",
124 RESIZEFRAMEBUFFER2 : "ResizeFrameBuffer2",
125 VMWARE1 : "VMWare1",
126 CARCONNECTIVITY : "CarConnectivity",
127 ENDOFCONTINOUSUPDATES : "EndOfContinousUpdates",
128 SERVERSTATE : "ServerState",
129 SERVERFENCE : "ServerFence",
130 OLIVECALLCONTROL : "OliveCallControl",
131 XVPSERVERMESSAGE : "XvpServerMessage",
132 TIGHT : "Tight",
133 GIISERVERMESSAGE : "GIIServerMessage",
134 VMWARE2 : "VMWare2",
135 QEMUSERVERMESSAGE : "QEMUServerMessage",
136 }
138class RFBEncoding:
139 RAW = 0
140 COPYRECT = 1
141 RRE = 2
142 CORRE = 4
143 HEXTILE = 5
144 ZLIB = 6
145 TIGHT = 7
146 ZLIBHEX = 8
147 TRLE = 15
148 ZRLE = 16
149 H264 = 20
150 JPEG = 21
151 JRLE = 22
152 HITACHI_ZYWRLE = 17
153 DESKTOPSIZE = -223
154 LASTRECT = -224
155 CURSOR = -239
156 XCURSOR = -240
157 QEMU_POINTER = -257
158 QEMU_KEY = -258
159 QEMU_AUDIO = -259
160 GII = -305
161 DESKTOPNAME = -307
162 EXTENDEDDESKTOPSIZE = -308
163 XVP = -309
164 FENCE = -312
165 CONTINUOUSUPDATES = -313
166 CURSORWITHALPHA = -314
167 VA_H264 = 0x48323634
169 #-23 to -32 JPEG Quality Level Pseudo-encoding
170 #-247 to -256 Compression Level Pseudo-encoding
171 #-412 to -512 JPEG Fine-Grained Quality Level Pseudo-encoding
172 #-763 to -768 JPEG Subsampling Level Pseudo-encoding
174 ENCODING_STR = {
175 RAW : "Raw",
176 COPYRECT : "CopyRect",
177 RRE : "RRE",
178 CORRE : "CoRRE",
179 HEXTILE : "Hextile",
180 ZLIB : "Zlib",
181 TIGHT : "Tight",
182 ZLIBHEX : "ZlibHex",
183 TRLE : "TRLE",
184 ZRLE : "ZRLE",
185 H264 : "H264",
186 JPEG : "JPEG",
187 JRLE : "JRLE",
188 HITACHI_ZYWRLE : "HITACHI_ZYWRLE",
189 DESKTOPSIZE : "DesktopSize",
190 LASTRECT : "LastRect",
191 CURSOR : "Cursor",
192 XCURSOR : "XCursor",
193 QEMU_POINTER : "QEMU Pointer",
194 QEMU_KEY : "QEMU Key",
195 QEMU_AUDIO : "QEMU Audio",
196 GII : "GII",
197 DESKTOPNAME : "DesktopName",
198 EXTENDEDDESKTOPSIZE : "ExtendedDesktopSize",
199 XVP : "Xvp",
200 FENCE : "Fence",
201 CONTINUOUSUPDATES : "ContinuousUpdates",
202 CURSORWITHALPHA : "CursorWithAlpha",
203 VA_H264 : "VA_H264",
204 }
207class RFBAuth:
208 INVALID = 0
209 NONE = 1
210 VNC = 2
211 TIGHT = 16
212 AUTH_STR = {
213 INVALID : "Invalid",
214 NONE : "None",
215 VNC : "VNC",
216 TIGHT : "Tight",
217 5 : "RA2",
218 6 : "RA2ne",
219 17 : "Ultra",
220 18 : "TLS",
221 19 : "VeNCrypt",
222 20 : "SASL",
223 21 : "MD5",
224 22 : "xvp",
225 }
226 for i in (3, 4):
227 AUTH_STR[i] = "RealVNC"
228 for i in range(7, 16):
229 AUTH_STR[i] = "RealVNC"
230 for i in range(128, 255):
231 AUTH_STR[i] = "RealVNC"
232 for i in range(30, 35):
233 AUTH_STR[i] = "Apple"
236RFB_KEYNAMES = {
237 0xff08 : "BackSpace",
238 0xff09 : "Tab",
239 0xff0d : "Return",
240 0xff1b : "Escape",
241 0xff63 : "Insert",
242 0xffff : "Delete",
243 0xff50 : "Home",
244 0xff57 : "End",
245 0xff55 : "PageUp",
246 0xff56 : "PageDown",
247 0xff51 : "Left",
248 0xff52 : "Up",
249 0xff53 : "Right",
250 0xff54 : "Down",
251 0xffe1 : "Shift_L",
252 0xffe2 : "Shift_R",
253 0xffe3 : "Control_L",
254 0xffe4 : "Control_R",
255 0xffe7 : "Meta_L",
256 0xffe8 : "Meta_R",
257 0xffe9 : "Alt_L",
258 0xffea : "Alt_R",
259 0x20 : "space",
260 0x60 : "grave",
261 0x2d : "minus",
262 0x3d : "equal",
263 0x2b : "plus",
264 0x5f : "underscore",
265 0xac : "notsign",
266 0x21 : "exclam",
267 0x22 : "quotedbl",
268 0x24 : "dollar",
269 0x5e : "asciicircum",
270 0x26 : "ampersand",
271 0x2a : "asterisk",
272 0x28 : "parenleft",
273 0x29 : "parenright",
274 0x5c : "backslash",
275 0x7c : "bar",
276 0x5b : "bracketleft",
277 0x5d : "bracketright",
278 0x7b : "braceleft",
279 0x7d : "braceright",
280 0x3b : "semicolon",
281 0x27 : "apostrophe",
282 0x23 : "numbersign",
283 0x3a : "colon",
284 0x40 : "at",
285 0x7e : "asciitilde",
286 0x2c : "comma",
287 0x2e : "period",
288 0x2f : "slash",
289 0x3c : "less",
290 0x3e : "greater",
291 0x3f : "question",
292 0xffb0 : "KP_0",
293 0xffb1 : "KP_1",
294 0xffb2 : "KP_2",
295 0xffb3 : "KP_3",
296 0xffb4 : "KP_4",
297 0xffb5 : "KP_5",
298 0xffb6 : "KP_6",
299 0xffb7 : "KP_7",
300 0xffb8 : "KP_8",
301 0xffb9 : "KP_9",
302 0xffae : "KP_Decimal",
303 0xffaf : "KP_Divide",
304 0xffaa : "KP_Multiply",
305 0xffad : "KP_Subtract",
306 0xffab : "KP_Add",
307 0xff8d : "KP_Enter",
308 0xff7f : "Num_Lock",
309 0xff9f : "KP_Delete",
310 0xff9e : "KP_Insert",
311 0xff9c : "KP_End",
312 0xff9b : "KP_Down",
313 #0xffb3 : "KP_Next",
314 0xff96 : "KP_Left",
315 0xff9d : "KP_Begin",
316 0xff98 : "KP_Right",
317 0xff95 : "KP_Home",
318 0xff97 : "KP_Up",
319 0xff9a : "KP_Prior",
320 0xff14 : "Scroll_Lock",
321 0xff13 : "Pause",
322 0x1008ff26 : "XF86Back",
323 0x1008ff27 : "XF86Forward",
324 0x1008ff18 : "XF86HomePage",
325 }
327for i in range(1, 13):
328 RFB_KEYNAMES[0xffbe+(i-1)] = "F%i" % i