@@ -228,24 +228,35 @@ def sendPointerEvent(self, x, y, button, isPressed):
228
228
return
229
229
230
230
try :
231
- event = pdu . data . PointerEvent ()
232
- if isPressed :
233
- event . pointerFlags . value |= pdu . data . PointerFlag . PTRFLAGS_DOWN
234
-
235
- if button == 1 :
236
- event . pointerFlags . value |= pdu . data . PointerFlag . PTRFLAGS_BUTTON1
237
- elif button == 2 :
238
- event . pointerFlags . value |= pdu . data . PointerFlag . PTRFLAGS_BUTTON2
239
- elif button == 3 :
240
- event . pointerFlags . value |= pdu . data . PointerFlag . PTRFLAGS_BUTTON3
231
+ if button == 4 or button == 5 :
232
+ event = pdu . data . PointerExEvent ()
233
+ if isPressed :
234
+ event . pointerFlags . value |= pdu . data . PointerExFlag . PTRXFLAGS_DOWN
235
+
236
+ if button == 4 :
237
+ event . pointerFlags . value |= pdu . data . PointerExFlag . PTRXFLAGS_BUTTON1
238
+ elif button == 5 :
239
+ event . pointerFlags . value |= pdu . data . PointerExFlag . PTRXFLAGS_BUTTON2
240
+
241
241
else :
242
- event .pointerFlags .value |= pdu .data .PointerFlag .PTRFLAGS_MOVE
242
+ event = pdu .data .PointerEvent ()
243
+ if isPressed :
244
+ event .pointerFlags .value |= pdu .data .PointerFlag .PTRFLAGS_DOWN
245
+
246
+ if button == 1 :
247
+ event .pointerFlags .value |= pdu .data .PointerFlag .PTRFLAGS_BUTTON1
248
+ elif button == 2 :
249
+ event .pointerFlags .value |= pdu .data .PointerFlag .PTRFLAGS_BUTTON2
250
+ elif button == 3 :
251
+ event .pointerFlags .value |= pdu .data .PointerFlag .PTRFLAGS_BUTTON3
252
+ else :
253
+ event .pointerFlags .value |= pdu .data .PointerFlag .PTRFLAGS_MOVE
243
254
244
- #position
255
+ # position
245
256
event .xPos .value = x
246
257
event .yPos .value = y
247
258
248
- #send proper event
259
+ # send proper event
249
260
self ._pduLayer .sendInputEvents ([event ])
250
261
251
262
except InvalidValue :
@@ -500,7 +511,7 @@ def onSlowPathInput(self, slowPathInputEvents):
500
511
#unicode
501
512
elif event .messageType .value == pdu .data .InputMessageType .INPUT_EVENT_UNICODE :
502
513
observer .onKeyEventUnicode (event .slowPathInputData .unicode .value , not (event .slowPathInputData .keyboardFlags .value & pdu .data .KeyboardFlag .KBDFLAGS_RELEASE ))
503
- #mouse event
514
+ #mouse events
504
515
elif event .messageType .value == pdu .data .InputMessageType .INPUT_EVENT_MOUSE :
505
516
isPressed = event .slowPathInputData .pointerFlags .value & pdu .data .PointerFlag .PTRFLAGS_DOWN
506
517
button = 0
@@ -511,6 +522,15 @@ def onSlowPathInput(self, slowPathInputEvents):
511
522
elif event .slowPathInputData .pointerFlags .value & pdu .data .PointerFlag .PTRFLAGS_BUTTON3 :
512
523
button = 3
513
524
observer .onPointerEvent (event .slowPathInputData .xPos .value , event .slowPathInputData .yPos .value , button , isPressed )
525
+ elif event .messageType .value == pdu .data .InputMessageType .INPUT_EVENT_MOUSEX :
526
+ isPressed = event .slowPathInputData .pointerFlags .value & pdu .data .PointerExFlag .PTRXFLAGS_DOWN
527
+ button = 0
528
+ if event .slowPathInputData .pointerFlags .value & pdu .data .PointerExFlag .PTRXFLAGS_BUTTON1 :
529
+ button = 4
530
+ elif event .slowPathInputData .pointerFlags .value & pdu .data .PointerExFlag .PTRXFLAGS_BUTTON2 :
531
+ button = 5
532
+ observer .onPointerEvent (event .slowPathInputData .xPos .value , event .slowPathInputData .yPos .value , button , isPressed )
533
+
514
534
515
535
def sendUpdate (self , destLeft , destTop , destRight , destBottom , width , height , bitsPerPixel , isCompress , data ):
516
536
"""
@@ -698,7 +718,7 @@ def onPointerEvent(self, x, y, button, isPressed):
698
718
@summary: Event call on mouse event
699
719
@param x: x position
700
720
@param y: y position
701
- @param button: 1, 2 or 3 button
721
+ @param button: 1, 2, 3, 4 or 5 button
702
722
@param isPressed: True if mouse button is pressed
703
723
"""
704
724
raise CallPureVirtualFuntion ("%s:%s defined by interface %s" % (self .__class__ , "onPointerEvent" , "RDPServerObserver" ))
0 commit comments