diff --git a/client_examples/SDLvncviewer.c b/client_examples/SDLvncviewer.c index 58884cf..e1fe3ff 100644 --- a/client_examples/SDLvncviewer.c +++ b/client_examples/SDLvncviewer.c @@ -208,9 +208,20 @@ int main(int argc,char** argv) { case SDL_VIDEOEXPOSE: SendFramebufferUpdateRequest(cl,0,0,cl->width,cl->height,FALSE); break; + case SDL_MOUSEBUTTONUP: case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEMOTION: { int x,y; - SDL_GetMouseState(&x,&y); + int state=SDL_GetMouseState(&x,&y); + struct { int sdl; int rfb; } buttonMapping[]={ + {SDL_BUTTON_LEFT, rfbButton1Mask}, + {SDL_BUTTON_RIGHT, rfbButton2Mask}, + {SDL_BUTTON_MIDDLE, rfbButton3Mask}, + {0,0} + }; + int i; + for(buttonMask=0,i=0;buttonMapping[i].sdl;i++) + if(state&SDL_BUTTON(buttonMapping[i].sdl)) + buttonMask|=buttonMapping[i].rfb; SendPointerEvent(cl,x,y,buttonMask); } break;