Index: lib/server/CClientProxy1_0.cpp =================================================================== RCS file: /cvsroot/synergy2/synergy/lib/server/CClientProxy1_0.cpp,v retrieving revision 1.9 diff -u -r1.9 CClientProxy1_0.cpp --- lib/server/CClientProxy1_0.cpp 17 Jun 2007 17:31:13 -0000 1.9 +++ lib/server/CClientProxy1_0.cpp 15 Mar 2008 11:06:18 -0000 @@ -336,6 +336,15 @@ CClientProxy1_0::mouseMove(SInt32 xAbs, SInt32 yAbs) { LOG((CLOG_DEBUG2 "send mouse move to \"%s\" %d,%d", getName().c_str(), xAbs, yAbs)); + if(xAbs > 1920) + { + yAbs -= 150; + static short n = 0; + if (!n) /* Don't print the message too often (it's slowing down too much) */ + LOG((CLOG_DEBUG "** ADJUSTED ** 2nd Screen Shift")); + if (++n > 100) + n = 0; + } CProtocolUtil::writef(getStream(), kMsgDMouseMove, xAbs, yAbs); } Index: lib/server/CServer.cpp =================================================================== RCS file: /cvsroot/synergy2/synergy/lib/server/CServer.cpp,v retrieving revision 1.17 diff -u -r1.17 CServer.cpp --- lib/server/CServer.cpp 17 Jun 2007 17:31:13 -0000 1.17 +++ lib/server/CServer.cpp 15 Mar 2008 11:06:18 -0000 @@ -1723,7 +1723,29 @@ } EDirection dir; - if (m_x < ax) { + if(m_x <= 1920 && m_y > 1200) + { + if (yOld >= m_y && xOld <= 1920) + { + LOG((CLOG_DEBUG "**** ADJUSTED **** Black Hole Region GOTO 2nd Screen")); + m_y = 1201; + m_yDelta = dy = -720; + goto omg_this_is_a_dirty_hack; + } + else + { + LOG((CLOG_DEBUG "**** ADJUSTED **** Black Hole Region GOTO Main Screen")); + dir = kBottom; + } + } + else if (m_x <= 1920 && xOld > 1920 && m_y > 1200 + 150) + { + LOG((CLOG_DEBUG "**** ADJUSTED **** Simulating fake border!")); + m_x = 1920; + m_xDelta = dx = 0; + goto omg_this_is_a_dirty_hack; + } + else if (m_x < ax) { dir = kLeft; } else if (m_x > ax + aw - 1) { @@ -1736,6 +1758,7 @@ dir = kBottom; } else { +omg_this_is_a_dirty_hack: // we haven't left the screen newScreen = m_active; jump = false;