MCPcopy Create free account
hub / github.com/cmauri/eviacam / SendMouseCommand

Method SendMouseCommand

wxutil/mousecontrol.cpp:375–466  ·  view source on GitHub ↗

Send a mouse control system command

Source from the content-addressed store, hash-verified

373
374// Send a mouse control system command
375void CMouseControl::SendMouseCommand (long x, long y, int flags)
376{
377#if defined(WIN32)
378 INPUT ip;
379
380 // Allways define MOUSEEVENTF_MOVE flag, other flags are coincident
381 // with native flags under windows
382 flags|= MOUSEEVENTF_MOVE;
383
384 if (flags & MOUSE_MOVE_ABS) {
385 // Normalize absolute motion
386 x= (x * 65535) / (m_ScreenWidth - 1);
387 y= (y * 65535) / (m_ScreenHeight - 1);
388 }
389
390 /* Need to swap buttons? */
391 if (flags & (MOUSE_LEFTDOWN | MOUSE_LEFTUP | MOUSE_RIGHTDOWN | MOUSE_RIGHTUP) &&
392 ::GetSystemMetrics(SM_SWAPBUTTON)) {
393 if (flags & MOUSE_LEFTDOWN) {
394 flags &= ~MOUSE_LEFTDOWN;
395 flags |= MOUSE_RIGHTDOWN;
396 }
397 else if (flags & MOUSE_RIGHTDOWN) {
398 flags &= ~MOUSE_RIGHTDOWN;
399 flags |= MOUSE_LEFTDOWN;
400 }
401 if (flags & MOUSE_LEFTUP) {
402 flags &= ~MOUSE_LEFTUP;
403 flags |= MOUSE_RIGHTUP;
404 }
405 else if (flags & MOUSE_RIGHTUP) {
406 flags &= ~MOUSE_RIGHTUP;
407 flags |= MOUSE_LEFTUP;
408 }
409 }
410
411 ip.type = INPUT_MOUSE;
412 ip.mi.dwFlags = flags;
413 ip.mi.mouseData = 0;
414 ip.mi.dwExtraInfo = MOUSE_EXTRA_INFO;
415 ip.mi.time = 0;
416 ip.mi.dx= x;
417 ip.mi.dy= y;
418
419 SendInput(1, &ip, sizeof(ip));
420#else
421 if (flags== MOUSE_MOVE_ABS)
422 // Absolute motion
423 XTestFakeMotionEvent(
424 static_cast<Display*>(m_pDisplay),
425 DefaultScreen(static_cast<Display*>(m_pDisplay)),
426 x, y,
427 CurrentTime
428 );
429 else if (flags== MOUSE_MOVE_REL)
430 // Relative motion
431 XTestFakeRelativeMotionEvent(static_cast<Display*>(m_pDisplay), x, y, CurrentTime);
432 else

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected