diff --git a/CMakeLists.txt b/CMakeLists.txt index d46e5c78..78e518dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -294,10 +294,6 @@ else (UNIX) endif() -if (GAME_DEVICE_SUPPORT) - add_definitions(-DGAME_DEVICE_SUPPORT) -endif() - add_subdirectory(src) add_subdirectory(tools) diff --git a/hm.py b/hm.py index 37c70171..98c4031f 100644 --- a/hm.py +++ b/hm.py @@ -58,7 +58,7 @@ globalOptionsLong = ['no-prompts', 'generator=', 'verbose', 'make-gui'] cmd_opt_dict = { 'about' : ['', []], 'setup' : ['g:', []], - 'configure' : ['g:dr', ['debug', 'release', 'game-device', 'mac-sdk=']], + 'configure' : ['g:dr', ['debug', 'release', 'mac-sdk=']], 'build' : ['dr', ['debug', 'release']], 'clean' : ['dr', ['debug', 'release']], 'update' : ['', []], diff --git a/res/synergy.nsh b/res/synergy.nsh index b0d05ca5..ebf24582 100644 --- a/res/synergy.nsh +++ b/res/synergy.nsh @@ -36,8 +36,6 @@ !include "MUI2.nsh" !include "DefineIfExist.nsh" -${!defineifexist} gameDeviceSupport "${binDir}\Release\synxinhk.dll" - !insertmacro MUI_PAGE_LICENSE "..\\res\\License.rtf" !insertmacro MUI_PAGE_DIRECTORY @@ -63,6 +61,7 @@ InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\${product}" "" Delete "${dir}\synergyd.log" Delete "${dir}\launcher.exe" Delete "${dir}\synrgyhk.dll" + Delete "${dir}\synwinhk.dll" Delete "${dir}\libgcc_s_dw2-1.dll" Delete "${dir}\mingwm10.dll" Delete "${dir}\QtCore4.dll" @@ -70,8 +69,6 @@ InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\${product}" "" Delete "${dir}\QtNetwork4.dll" Delete "${dir}\Uninstall.exe" Delete "${dir}\uninstall.exe" - Delete "${dir}\synxinhk.dll" - Delete "${dir}\sxinpx13.dll" RMDir "${dir}" @@ -168,10 +165,10 @@ Section "Server and Client" core ; if the hook file exists, skip, assuming it couldn't be deleted ; because it was in use by some process. - ${If} ${FileExists} "synrgyhk.dll" - DetailPrint "Skipping synrgyhk.dll, file already exists." + ${If} ${FileExists} "synwinhk.dll" + DetailPrint "Skipping synwinhk.dll, file already exists." ${Else} - File "${binDir}\Release\synrgyhk.dll" + File "${binDir}\Release\synwinhk.dll" ${EndIf} ; windows firewall exception @@ -183,16 +180,6 @@ Section "Server and Client" core SectionEnd -!ifdef gameDeviceSupport -Section "Game Device Support" gamedev - - ; files for xinput support - File "${binDir}\Release\synxinhk.dll" - File "${binDir}\Release\sxinpx13.dll" - -SectionEnd -!endif - Section "Graphical User Interface" gui ; gui and qt libs diff --git a/src/cmd/synergyc/CMakeLists.txt b/src/cmd/synergyc/CMakeLists.txt index 283da54b..7c58c85c 100644 --- a/src/cmd/synergyc/CMakeLists.txt +++ b/src/cmd/synergyc/CMakeLists.txt @@ -47,6 +47,7 @@ set(inc ../../lib/net ../../lib/platform ../../lib/synergy + ../../lib/synwinhk ) if (UNIX) diff --git a/src/cmd/synergyp/CMakeLists.txt b/src/cmd/synergyp/CMakeLists.txt index cb65722e..ff91e315 100644 --- a/src/cmd/synergyp/CMakeLists.txt +++ b/src/cmd/synergyp/CMakeLists.txt @@ -47,6 +47,7 @@ set(inc ../../lib/platform ../../lib/synergy ../../lib/server + ../../lib/synwinhk ) if (UNIX) diff --git a/src/cmd/synergys/CMakeLists.txt b/src/cmd/synergys/CMakeLists.txt index 897f7bd3..17dba47f 100644 --- a/src/cmd/synergys/CMakeLists.txt +++ b/src/cmd/synergys/CMakeLists.txt @@ -47,6 +47,7 @@ set(inc ../../lib/platform ../../lib/synergy ../../lib/server + ../../lib/synwinhk ) if (UNIX) diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 1402c65b..c8bc7d87 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -25,3 +25,7 @@ add_subdirectory(net) add_subdirectory(platform) add_subdirectory(server) add_subdirectory(synergy) + +if (WIN32) + add_subdirectory(synwinhk) +endif() diff --git a/src/lib/arch/CMakeLists.txt b/src/lib/arch/CMakeLists.txt index dfcba1d0..dcd7ce1f 100644 --- a/src/lib/arch/CMakeLists.txt +++ b/src/lib/arch/CMakeLists.txt @@ -101,9 +101,3 @@ endif() include_directories(${inc}) add_library(arch STATIC ${src}) - -if (WIN32) - if (GAME_DEVICE_SUPPORT) - target_link_libraries(arch synxinhk) - endif() -endif() diff --git a/src/lib/base/CEventQueue.cpp b/src/lib/base/CEventQueue.cpp index 0502ec27..edd3177a 100644 --- a/src/lib/base/CEventQueue.cpp +++ b/src/lib/base/CEventQueue.cpp @@ -42,7 +42,6 @@ EVENT_TYPE_ACCESSOR(CServerApp) EVENT_TYPE_ACCESSOR(IKeyState) EVENT_TYPE_ACCESSOR(IPrimaryScreen) EVENT_TYPE_ACCESSOR(IScreen) -EVENT_TYPE_ACCESSOR(ISecondaryScreen) // interrupt handler. this just adds a quit event to the queue. static @@ -78,8 +77,7 @@ CEventQueue::CEventQueue() : m_typesForCServerApp(NULL), m_typesForIKeyState(NULL), m_typesForIPrimaryScreen(NULL), - m_typesForIScreen(NULL), - m_typesForISecondaryScreen(NULL) + m_typesForIScreen(NULL) { m_mutex = ARCH->newMutex(); ARCH->setSignalHandler(CArch::kINTERRUPT, &interrupt, this); diff --git a/src/lib/base/CEventQueue.h b/src/lib/base/CEventQueue.h index 70e2feed..fbe5a74c 100644 --- a/src/lib/base/CEventQueue.h +++ b/src/lib/base/CEventQueue.h @@ -151,7 +151,6 @@ public: IKeyStateEvents& forIKeyState(); IPrimaryScreenEvents& forIPrimaryScreen(); IScreenEvents& forIScreen(); - ISecondaryScreenEvents& forISecondaryScreen(); private: CClientEvents* m_typesForCClient; @@ -172,7 +171,6 @@ private: IKeyStateEvents* m_typesForIKeyState; IPrimaryScreenEvents* m_typesForIPrimaryScreen; IScreenEvents* m_typesForIScreen; - ISecondaryScreenEvents* m_typesForISecondaryScreen; }; #define EVENT_TYPE_ACCESSOR(type_) \ diff --git a/src/lib/base/CEventTypes.cpp b/src/lib/base/CEventTypes.cpp index 6dd6e404..ab5792a1 100644 --- a/src/lib/base/CEventTypes.cpp +++ b/src/lib/base/CEventTypes.cpp @@ -166,10 +166,6 @@ REGISTER_EVENT(IPrimaryScreen, hotKeyDown) REGISTER_EVENT(IPrimaryScreen, hotKeyUp) REGISTER_EVENT(IPrimaryScreen, fakeInputBegin) REGISTER_EVENT(IPrimaryScreen, fakeInputEnd) -REGISTER_EVENT(IPrimaryScreen, gameDeviceButtons) -REGISTER_EVENT(IPrimaryScreen, gameDeviceSticks) -REGISTER_EVENT(IPrimaryScreen, gameDeviceTriggers) -REGISTER_EVENT(IPrimaryScreen, gameDeviceTimingReq) // // IScreen @@ -183,13 +179,6 @@ REGISTER_EVENT(IScreen, resume) REGISTER_EVENT(IScreen, fileChunkSending) REGISTER_EVENT(IScreen, fileRecieveComplete) -// -// ISecondaryScreen -// - -REGISTER_EVENT(ISecondaryScreen, gameDeviceTimingResp) -REGISTER_EVENT(ISecondaryScreen, gameDeviceFeedback) - // // CIpcServer // diff --git a/src/lib/base/CEventTypes.h b/src/lib/base/CEventTypes.h index 31219b5e..b815220f 100644 --- a/src/lib/base/CEventTypes.h +++ b/src/lib/base/CEventTypes.h @@ -559,11 +559,7 @@ public: m_hotKeyDown(CEvent::kUnknown), m_hotKeyUp(CEvent::kUnknown), m_fakeInputBegin(CEvent::kUnknown), - m_fakeInputEnd(CEvent::kUnknown), - m_gameDeviceButtons(CEvent::kUnknown), - m_gameDeviceSticks(CEvent::kUnknown), - m_gameDeviceTriggers(CEvent::kUnknown), - m_gameDeviceTimingReq(CEvent::kUnknown) { } + m_fakeInputEnd(CEvent::kUnknown) { } //! @name accessors //@{ @@ -608,18 +604,6 @@ public: //! end of fake input event type CEvent::Type fakeInputEnd(); - //! game device buttons event type. - CEvent::Type gameDeviceButtons(); - - //! game device sticks event type. - CEvent::Type gameDeviceSticks(); - - //! game device triggers event type. - CEvent::Type gameDeviceTriggers(); - - //! game device timing request event type. - CEvent::Type gameDeviceTimingReq(); - //@} private: @@ -634,10 +618,6 @@ private: CEvent::Type m_hotKeyUp; CEvent::Type m_fakeInputBegin; CEvent::Type m_fakeInputEnd; - CEvent::Type m_gameDeviceButtons; - CEvent::Type m_gameDeviceSticks; - CEvent::Type m_gameDeviceTriggers; - CEvent::Type m_gameDeviceTimingReq; }; class IScreenEvents : public CEventTypes { @@ -707,25 +687,3 @@ private: CEvent::Type m_fileChunkSending; CEvent::Type m_fileRecieveComplete; }; - -class ISecondaryScreenEvents : public CEventTypes { -public: - ISecondaryScreenEvents() : - m_gameDeviceTimingResp(CEvent::kUnknown), - m_gameDeviceFeedback(CEvent::kUnknown) { } - - //! @name accessors - //@{ - - //! Get game device timing response event type. - CEvent::Type gameDeviceTimingResp(); - - //! Get game device feedback event type. - CEvent::Type gameDeviceFeedback(); - - //@} - -private: - CEvent::Type m_gameDeviceTimingResp; - CEvent::Type m_gameDeviceFeedback; -}; diff --git a/src/lib/base/IEventQueue.h b/src/lib/base/IEventQueue.h index d13ea700..dfdd7eb9 100644 --- a/src/lib/base/IEventQueue.h +++ b/src/lib/base/IEventQueue.h @@ -49,7 +49,6 @@ class CServerAppEvents; class IKeyStateEvents; class IPrimaryScreenEvents; class IScreenEvents; -class ISecondaryScreenEvents; //! Event queue interface /*! @@ -239,7 +238,6 @@ public: virtual IKeyStateEvents& forIKeyState() = 0; virtual IPrimaryScreenEvents& forIPrimaryScreen() = 0; virtual IScreenEvents& forIScreen() = 0; - virtual ISecondaryScreenEvents& forISecondaryScreen() = 0; }; #endif diff --git a/src/lib/client/CClient.cpp b/src/lib/client/CClient.cpp index 9f73aea5..d137c2b3 100644 --- a/src/lib/client/CClient.cpp +++ b/src/lib/client/CClient.cpp @@ -81,14 +81,6 @@ CClient::CClient(IEventQueue* events, getEventTarget(), new TMethodEventJob(this, &CClient::handleResume)); - m_events->adoptHandler(m_events->forISecondaryScreen().gameDeviceTimingResp(), - getEventTarget(), - new TMethodEventJob(this, - &CClient::handleGameDeviceTimingResp)); - m_events->adoptHandler(m_events->forISecondaryScreen().gameDeviceFeedback(), - getEventTarget(), - new TMethodEventJob(this, - &CClient::handleGameDeviceFeedback)); m_events->adoptHandler(m_events->forIScreen().fileChunkSending(), this, new TMethodEventJob(this, @@ -363,30 +355,6 @@ CClient::setOptions(const COptionsList& options) m_screen->setOptions(options); } -void -CClient::gameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) -{ - m_screen->gameDeviceButtons(id, buttons); -} - -void -CClient::gameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) -{ - m_screen->gameDeviceSticks(id, x1, y1, x2, y2); -} - -void -CClient::gameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) -{ - m_screen->gameDeviceTriggers(id, t1, t2); -} - -void -CClient::gameDeviceTimingReq() -{ - m_screen->gameDeviceTimingReq(); -} - CString CClient::getName() const { @@ -732,24 +700,6 @@ CClient::handleResume(const CEvent&, void*) } } -void -CClient::handleGameDeviceTimingResp(const CEvent& event, void*) -{ - IPlatformScreen::CGameDeviceTimingRespInfo* info = - reinterpret_cast(event.getData()); - - m_server->onGameDeviceTimingResp(info->m_freq); -} - -void -CClient::handleGameDeviceFeedback(const CEvent& event, void*) -{ - IPlatformScreen::CGameDeviceFeedbackInfo* info = - reinterpret_cast(event.getData()); - - m_server->onGameDeviceFeedback(info->m_id, info->m_m1, info->m_m2); -} - void CClient::handleFileChunkSending(const CEvent& event, void*) { diff --git a/src/lib/client/CClient.h b/src/lib/client/CClient.h index e2aea037..e9bab8dd 100644 --- a/src/lib/client/CClient.h +++ b/src/lib/client/CClient.h @@ -163,10 +163,6 @@ public: virtual void screensaver(bool activate); virtual void resetOptions(); virtual void setOptions(const COptionsList& options); - virtual void gameDeviceButtons(GameDeviceID id, GameDeviceButton buttons); - virtual void gameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2); - virtual void gameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2); - virtual void gameDeviceTimingReq(); virtual CString getName() const; private: @@ -193,8 +189,6 @@ private: void handleHello(const CEvent&, void*); void handleSuspend(const CEvent& event, void*); void handleResume(const CEvent& event, void*); - void handleGameDeviceTimingResp(const CEvent& event, void*); - void handleGameDeviceFeedback(const CEvent& event, void*); void handleFileChunkSending(const CEvent&, void*); public: diff --git a/src/lib/client/CServerProxy.cpp b/src/lib/client/CServerProxy.cpp index deea22f5..ff287b3a 100644 --- a/src/lib/client/CServerProxy.cpp +++ b/src/lib/client/CServerProxy.cpp @@ -294,22 +294,6 @@ CServerProxy::parseMessage(const UInt8* code) setOptions(); } - else if (memcmp(code, kMsgDGameButtons, 4) == 0) { - gameDeviceButtons(); - } - - else if (memcmp(code, kMsgDGameSticks, 4) == 0) { - gameDeviceSticks(); - } - - else if (memcmp(code, kMsgDGameTriggers, 4) == 0) { - gameDeviceTriggers(); - } - - else if (memcmp(code, kMsgCGameTimingReq, 4) == 0) { - gameDeviceTimingReq(); - } - else if (memcmp(code, kMsgDCryptoIv, 4) == 0) { cryptoIv(); } @@ -379,20 +363,6 @@ CServerProxy::onClipboardChanged(ClipboardID id, const IClipboard* clipboard) CProtocolUtil::writef(m_stream, kMsgDClipboard, id, m_seqNum, &data); } -void -CServerProxy::onGameDeviceTimingResp(UInt16 freq) -{ - LOG((CLOG_DEBUG1 "sending game device timing response freq=%d", freq)); - CProtocolUtil::writef(m_stream, kMsgCGameTimingResp, freq); -} - -void -CServerProxy::onGameDeviceFeedback(GameDeviceID id, UInt16 m1, UInt16 m2) -{ - LOG((CLOG_DEBUG1 "sending game device feedback id=%d, m1=%d, m2=%d", id, m1, m2)); - CProtocolUtil::writef(m_stream, kMsgDGameFeedback, id, m1, m2); -} - void CServerProxy::flushCompressedMouse() { @@ -789,55 +759,6 @@ CServerProxy::mouseWheel() m_client->mouseWheel(xDelta, yDelta); } -void -CServerProxy::gameDeviceButtons() -{ - // parse - GameDeviceID id; - GameDeviceButton buttons; - CProtocolUtil::readf(m_stream, kMsgDGameButtons + 4, &id, &buttons); - LOG((CLOG_DEBUG2 "recv game device id=%d buttons=%d", id, buttons)); - - // forward - m_client->gameDeviceButtons(id, buttons); -} - -void -CServerProxy::gameDeviceSticks() -{ - // parse - GameDeviceID id; - SInt16 x1, y1, x2, y2; - CProtocolUtil::readf(m_stream, kMsgDGameSticks + 4, &id, &x1, &y1, &x2, &y2); - LOG((CLOG_DEBUG2 "recv game device sticks id=%d s1=%+d,%+d s2=%+d,%+d", id, x1, y1, x2, y2)); - - // forward - m_client->gameDeviceSticks(id, x1, y1, x2, y2); -} - -void -CServerProxy::gameDeviceTriggers() -{ - // parse - GameDeviceID id; - UInt8 t1, t2; - CProtocolUtil::readf(m_stream, kMsgDGameTriggers + 4, &id, &t1, &t2); - LOG((CLOG_DEBUG2 "recv game device triggers id=%d t1=%d t2=%d", id, t1, t2)); - - // forward - m_client->gameDeviceTriggers(id, t1, t2); -} - -void -CServerProxy::gameDeviceTimingReq() -{ - // parse - LOG((CLOG_DEBUG2 "recv game device timing request")); - - // forward - m_client->gameDeviceTimingReq(); -} - void CServerProxy::cryptoIv() { diff --git a/src/lib/client/CServerProxy.h b/src/lib/client/CServerProxy.h index ea4adcb4..2bd6a527 100644 --- a/src/lib/client/CServerProxy.h +++ b/src/lib/client/CServerProxy.h @@ -22,7 +22,6 @@ #include "ClipboardTypes.h" #include "KeyTypes.h" #include "CEvent.h" -#include "GameDeviceTypes.h" #include "CStopwatch.h" class CClient; @@ -52,8 +51,6 @@ public: void onInfoChanged(); bool onGrabClipboard(ClipboardID); void onClipboardChanged(ClipboardID, const IClipboard*); - void onGameDeviceTimingResp(UInt16 freq); - void onGameDeviceFeedback(GameDeviceID id, UInt16 m1, UInt16 m2); //@} @@ -104,10 +101,6 @@ private: void mouseMove(); void mouseRelativeMove(); void mouseWheel(); - void gameDeviceButtons(); - void gameDeviceSticks(); - void gameDeviceTriggers(); - void gameDeviceTimingReq(); void cryptoIv(); void screensaver(); void resetOptions(); diff --git a/src/lib/platform/CMSWindowsDesks.cpp b/src/lib/platform/CMSWindowsDesks.cpp index 89ebd9bc..120f2b6b 100644 --- a/src/lib/platform/CMSWindowsDesks.cpp +++ b/src/lib/platform/CMSWindowsDesks.cpp @@ -18,7 +18,7 @@ #include "CMSWindowsDesks.h" #include "CMSWindowsScreen.h" -#include "CSynergyHook.h" +#include "synwinhk.h" #include "IScreenSaver.h" #include "XScreen.h" #include "CLock.h" diff --git a/src/lib/platform/CMSWindowsDesks.h b/src/lib/platform/CMSWindowsDesks.h index d16d767b..bd10d444 100644 --- a/src/lib/platform/CMSWindowsDesks.h +++ b/src/lib/platform/CMSWindowsDesks.h @@ -19,7 +19,7 @@ #ifndef CMSWINDOWSDESKS_H #define CMSWINDOWSDESKS_H -#include "CSynergyHook.h" +#include "synwinhk.h" #include "KeyTypes.h" #include "MouseTypes.h" #include "OptionTypes.h" @@ -220,7 +220,6 @@ private: void deskEnter(CDesk* desk); void deskLeave(CDesk* desk, HKL keyLayout); void deskThread(void* vdesk); - void xinputThread(); // desk switch checking and handling CDesk* addDesk(const CString& name, HDESK hdesk); diff --git a/src/lib/platform/CMSWindowsHookLibraryLoader.h b/src/lib/platform/CMSWindowsHookLibraryLoader.h index 884277b3..6592912d 100644 --- a/src/lib/platform/CMSWindowsHookLibraryLoader.h +++ b/src/lib/platform/CMSWindowsHookLibraryLoader.h @@ -21,7 +21,7 @@ #define WIN32_LEAN_AND_MEAN #include -#include "CSynergyHook.h" +#include "synwinhk.h" //! Loads Windows hook DLLs. class CMSWindowsHookLibraryLoader diff --git a/src/lib/platform/CMSWindowsScreen.cpp b/src/lib/platform/CMSWindowsScreen.cpp index a35055e6..96726841 100644 --- a/src/lib/platform/CMSWindowsScreen.cpp +++ b/src/lib/platform/CMSWindowsScreen.cpp @@ -84,7 +84,6 @@ CMSWindowsScreen* CMSWindowsScreen::s_screen = NULL; CMSWindowsScreen::CMSWindowsScreen( bool isPrimary, bool noHooks, - const CGameDeviceInfo& gameDeviceInfo, bool stopOnDeskSwitch, IEventQueue* events) : CPlatformScreen(events), @@ -114,8 +113,6 @@ CMSWindowsScreen::CMSWindowsScreen( m_keyState(NULL), m_hasMouse(GetSystemMetrics(SM_MOUSEPRESENT) != 0), m_showingMouse(false), - m_gameDeviceInfo(gameDeviceInfo), - m_gameDevice(NULL), m_events(events) { assert(s_windowInstance != NULL); @@ -124,7 +121,7 @@ CMSWindowsScreen::CMSWindowsScreen( s_screen = this; try { if (m_isPrimary && !m_noHooks) { - m_hookLibrary = openHookLibrary("synrgyhk"); + m_hookLibrary = openHookLibrary("synwinhk"); } m_screensaver = new CMSWindowsScreenSaver(); m_desks = new CMSWindowsDesks( @@ -163,25 +160,6 @@ CMSWindowsScreen::CMSWindowsScreen( // install the platform event queue m_events->adoptBuffer(new CMSWindowsEventQueueBuffer(m_events)); - - if ((gameDeviceInfo.m_mode == CGameDeviceInfo::kGameModeXInput) && - (gameDeviceInfo.m_poll != CGameDeviceInfo::kGamePollDynamic)) - LOG((CLOG_WARN "only dynamic polling is supported with xnput.")); - - if ((gameDeviceInfo.m_mode == CGameDeviceInfo::kGameModeJoyInfoEx) && - (gameDeviceInfo.m_poll != CGameDeviceInfo::kGamePollStatic)) - LOG((CLOG_WARN "only static polling is supported with joyinfoex.")); - - if (m_gameDeviceInfo.m_mode == CGameDeviceInfo::kGameModeXInput) { -#if GAME_DEVICE_SUPPORT - m_gameDevice = new CMSWindowsXInput(this, gameDeviceInfo); -#else if _AMD64_ - LOG((CLOG_WARN "xinput game device mode not supported for 64-bit.")); -#endif - } - else { - m_gameDevice = new CEventGameDevice(getEventTarget()); - } } CMSWindowsScreen::~CMSWindowsScreen() @@ -197,9 +175,6 @@ CMSWindowsScreen::~CMSWindowsScreen() destroyWindow(m_window); destroyClass(m_class); - if (m_gameDevice != NULL) - delete m_gameDevice; - if (m_hookLibrary != NULL) closeHookLibrary(m_hookLibrary); @@ -708,18 +683,6 @@ CMSWindowsScreen::getCursorCenter(SInt32& x, SInt32& y) const y = m_yCenter; } -void -CMSWindowsScreen::gameDeviceTimingResp(UInt16 freq) -{ - m_gameDevice->gameDeviceTimingResp(freq); -} - -void -CMSWindowsScreen::gameDeviceFeedback(GameDeviceID id, UInt16 m1, UInt16 m2) -{ - m_gameDevice->gameDeviceFeedback(id, m1, m2); -} - void CMSWindowsScreen::fakeMouseButton(ButtonID id, bool press) { @@ -744,34 +707,6 @@ CMSWindowsScreen::fakeMouseWheel(SInt32 xDelta, SInt32 yDelta) const m_desks->fakeMouseWheel(xDelta, yDelta); } -void -CMSWindowsScreen::fakeGameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) const -{ - LOG((CLOG_DEBUG "fake game device buttons id=%d buttons=%d", id, buttons)); - m_gameDevice->fakeGameDeviceButtons(id, buttons); -} - -void -CMSWindowsScreen::fakeGameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) const -{ - LOG((CLOG_DEBUG "fake game device sticks id=%d s1=%+d,%+d s2=%+d,%+d", id, x1, y1, x2, y2)); - m_gameDevice->fakeGameDeviceSticks(id, x1, y1, x2, y2); -} - -void -CMSWindowsScreen::fakeGameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) const -{ - LOG((CLOG_DEBUG "fake game device triggers id=%d t1=%d t2=%d", id, t1, t2)); - m_gameDevice->fakeGameDeviceTriggers(id, t1, t2); -} - -void -CMSWindowsScreen::queueGameDeviceTimingReq() const -{ - LOG((CLOG_DEBUG "queue game device timing request")); - m_gameDevice->queueGameDeviceTimingReq(); -} - void CMSWindowsScreen::updateKeys() { diff --git a/src/lib/platform/CMSWindowsScreen.h b/src/lib/platform/CMSWindowsScreen.h index 37d3c582..697ea3ed 100644 --- a/src/lib/platform/CMSWindowsScreen.h +++ b/src/lib/platform/CMSWindowsScreen.h @@ -20,14 +20,11 @@ #define CMSWINDOWSSCREEN_H #include "CPlatformScreen.h" -#include "CSynergyHook.h" +#include "synwinhk.h" #include "CCondVar.h" #include "CMutex.h" #include "CString.h" #include "CMSWindowsHookLibraryLoader.h" -#include "CGameDevice.h" -#include "CMSWindowsXInput.h" -#include "CEventGameDevice.h" #define WIN32_LEAN_AND_MEAN #include @@ -44,7 +41,6 @@ public: CMSWindowsScreen( bool isPrimary, bool noHooks, - const CGameDeviceInfo &gameDevice, bool stopOnDeskSwitch, IEventQueue* events); virtual ~CMSWindowsScreen(); @@ -89,18 +85,12 @@ public: virtual SInt32 getJumpZoneSize() const; virtual bool isAnyMouseButtonDown() const; virtual void getCursorCenter(SInt32& x, SInt32& y) const; - virtual void gameDeviceTimingResp(UInt16 freq); - virtual void gameDeviceFeedback(GameDeviceID id, UInt16 m1, UInt16 m2); // ISecondaryScreen overrides virtual void fakeMouseButton(ButtonID id, bool press); virtual void fakeMouseMove(SInt32 x, SInt32 y) const; virtual void fakeMouseRelativeMove(SInt32 dx, SInt32 dy) const; virtual void fakeMouseWheel(SInt32 xDelta, SInt32 yDelta) const; - virtual void fakeGameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) const; - virtual void fakeGameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) const; - virtual void fakeGameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) const; - virtual void queueGameDeviceTimingReq() const; // IKeyState overrides virtual void updateKeys(); @@ -325,14 +315,12 @@ private: MOUSEKEYS m_mouseKeys; MOUSEKEYS m_oldMouseKeys; - // loads synrgyhk.dll + // loads synwinhk.dll CMSWindowsHookLibraryLoader m_hookLibraryLoader; - const CGameDeviceInfo& m_gameDeviceInfo; - CGameDevice* m_gameDevice; - - static CMSWindowsScreen* s_screen; + static CMSWindowsScreen* + s_screen; IEventQueue* m_events; }; diff --git a/src/lib/platform/CMSWindowsXInput.cpp b/src/lib/platform/CMSWindowsXInput.cpp deleted file mode 100644 index c0b7d77c..00000000 --- a/src/lib/platform/CMSWindowsXInput.cpp +++ /dev/null @@ -1,363 +0,0 @@ -/* - * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2012 Bolton Software Ltd. - * Copyright (C) 2012 Nick Bolton - * - * This package is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * found in the file COPYING that should have accompanied this file. - * - * This package is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If notsee . - */ - -#include "CMSWindowsXInput.h" -#include "XScreen.h" -#include "CThread.h" -#include "TMethodJob.h" -#include "CLog.h" -#include "XInputHook.h" -#include "CMSWindowsScreen.h" - -#include "XInput.h" - -typedef DWORD (WINAPI *XInputGetStateFunc)(DWORD, XINPUT_STATE*); -typedef DWORD (WINAPI *XInputSetStateFunc)(DWORD, XINPUT_VIBRATION*); - -CMSWindowsXInput::CMSWindowsXInput(CMSWindowsScreen* screen, const CGameDeviceInfo& gameDeviceInfo) : -m_screen(screen), -m_gameDeviceInfo(gameDeviceInfo), -m_xInputPollThread(NULL), -m_xInputTimingThread(NULL), -m_xInputFeedbackThread(NULL), -m_gameButtonsLast(0), -m_gameLeftTriggerLast(0), -m_gameRightTriggerLast(0), -m_gameLeftStickXLast(0), -m_gameLeftStickYLast(0), -m_gameRightStickXLast(0), -m_gameRightStickYLast(0), -m_gameLastTimingSent(0), -m_gameTimingWaiting(false), -m_gameFakeLag(0), -m_gamePollFreq(kGamePollFreqDefault), -m_gamePollFreqAdjust(0), -m_gameFakeLagMin(kGamePollFreqDefault), -m_gameTimingStarted(false), -m_gameTimingFirst(0), -m_gameFakeLagLast(0), -m_gameTimingCalibrated(false), -m_xinputModule(NULL) -{ - m_xinputModule = LoadLibrary("xinput1_3.dll"); - if (m_xinputModule == NULL) - { - throw XScreenXInputFailure("could not load xinput library"); - } - - if (screen->isPrimary()) - { - // only capture xinput on the server. - m_xInputPollThread = new CThread(new TMethodJob( - this, &CMSWindowsXInput::xInputPollThread)); - } - else - { - // check for queued timing requests on client. - m_xInputTimingThread = new CThread(new TMethodJob( - this, &CMSWindowsXInput::xInputTimingThread)); - - // check for waiting feedback state on client. - m_xInputFeedbackThread = new CThread(new TMethodJob( - this, &CMSWindowsXInput::xInputFeedbackThread)); - } -} - -CMSWindowsXInput::~CMSWindowsXInput() -{ -} - -void -CMSWindowsXInput::fakeGameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) const -{ - SetXInputButtons(id, buttons); -} - -void -CMSWindowsXInput::fakeGameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) const -{ - SetXInputSticks(id, x1, y1, x2, y2); -} - -void -CMSWindowsXInput::fakeGameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) const -{ - SetXInputTriggers(id, t1, t2); -} - -void -CMSWindowsXInput::queueGameDeviceTimingReq() const -{ - QueueXInputTimingReq(); -} - -void -CMSWindowsXInput::gameDeviceTimingResp(UInt16 freq) -{ - if (!m_gameTimingStarted) - { - // record when timing started for calibration period. - m_gameTimingFirst = (UInt16)(ARCH->time() * 1000); - m_gameTimingStarted = true; - } - - m_gameTimingWaiting = false; - m_gameFakeLagLast = m_gameFakeLag; - m_gameFakeLag = (UInt16)((ARCH->time() - m_gameLastTimingSent) * 1000); - m_gameFakeLagRecord.push_back(m_gameFakeLag); - - if (m_gameFakeLag < m_gameFakeLagMin) - { - // record the lowest value so that the poll frequency - // is adjusted to track. - m_gameFakeLagMin = m_gameFakeLag; - } - else if (m_gameFakeLag > (m_gameFakeLagLast * 2)) - { - // if fake lag has increased significantly since the last - // timing, then we must have reached the safe minimum. - m_gameFakeLagMin = m_gameFakeLagLast; - } - - // only change poll frequency if it's a sensible value. - if (freq > kGamePollFreqMin && freq < kGamePollFreqMax) - { - m_gamePollFreq = freq; - } - - UInt16 timeSinceStart = ((UInt16)(ARCH->time() * 1000) - m_gameTimingFirst); - if (!m_gameTimingCalibrated && (timeSinceStart < kGameCalibrationPeriod)) - { - // during the calibration period, increase polling speed - // to try and find the lowest lag value. - m_gamePollFreqAdjust = 1; - LOG((CLOG_DEBUG2 "calibrating game device poll frequency, start=%d, now=%d, since=%d", - m_gameTimingFirst, (int)(ARCH->time() * 1000), timeSinceStart)); - } - else - { - // @bug - calibration seems to re-occur after a period of time, - // though, this would actually be a nice feature (but could be - // a bit risky -- could cause poor game play)... setting this - // stops calibration from happening again. - m_gameTimingCalibrated = true; - - // only adjust poll frequency if outside desired limits. - m_gamePollFreqAdjust = 0; - if (m_gameFakeLag > m_gameFakeLagMin * 3) - { - m_gamePollFreqAdjust = 1; - } - else if (m_gameFakeLag < m_gameFakeLagMin) - { - m_gamePollFreqAdjust = -1; - } - } - - LOG((CLOG_DEBUG3 "game device timing, lag=%dms, freq=%dms, adjust=%dms, min=%dms", - m_gameFakeLag, m_gamePollFreq, m_gamePollFreqAdjust, m_gameFakeLagMin)); - - if (m_gameFakeLagRecord.size() >= kGameLagRecordMax) - { - UInt16 v, min = 65535, max = 0, total = 0; - std::vector::iterator it; - for (it = m_gameFakeLagRecord.begin(); it < m_gameFakeLagRecord.end(); ++it) - { - v = *it; - if (v < min) - { - min = v; - } - if (v > max) - { - max = v; - } - total += v; - } - - LOG((CLOG_INFO "game device timing, min=%dms, max=%dms, avg=%dms", - min, max, (UInt16)(total / m_gameFakeLagRecord.size()))); - m_gameFakeLagRecord.clear(); - } -} - -void -CMSWindowsXInput::gameDeviceFeedback(GameDeviceID id, UInt16 m1, UInt16 m2) -{ - XInputSetStateFunc xInputSetStateFunc = - (XInputSetStateFunc)GetProcAddress(m_xinputModule, "XInputSetState"); - - if (xInputSetStateFunc == NULL) - { - throw XScreenXInputFailure("could not get function address: XInputSetState"); - } - - XINPUT_VIBRATION vibration; - ZeroMemory(&vibration, sizeof(XINPUT_VIBRATION)); - vibration.wLeftMotorSpeed = m1; - vibration.wRightMotorSpeed = m2; - xInputSetStateFunc(id, &vibration); -} - -void -CMSWindowsXInput::xInputPollThread(void*) -{ - LOG((CLOG_DEBUG "xinput poll thread started")); - - XInputGetStateFunc xInputGetStateFunc = - (XInputGetStateFunc)GetProcAddress(m_xinputModule, "XInputGetState"); - - if (xInputGetStateFunc == NULL) - { - throw XScreenXInputFailure("could not get function address: XInputGetState"); - } - - int index = 0; - XINPUT_STATE state; - bool end = false; - while (!end) - { - ZeroMemory(&state, sizeof(XINPUT_STATE)); - DWORD result = xInputGetStateFunc(index, &state); - - // timeout the timing request after 10 seconds - if (m_gameTimingWaiting && (ARCH->time() - m_gameLastTimingSent > 2)) - { - m_gameTimingWaiting = false; - LOG((CLOG_DEBUG "game device timing request timed out")); - } - - // xinput controller is connected - if (result == ERROR_SUCCESS) - { - // @todo game device state class - bool buttonsChanged = state.Gamepad.wButtons != m_gameButtonsLast; - bool leftTriggerChanged = state.Gamepad.bLeftTrigger != m_gameLeftTriggerLast; - bool rightTriggerChanged = state.Gamepad.bRightTrigger != m_gameRightTriggerLast; - bool leftStickXChanged = state.Gamepad.sThumbLX != m_gameLeftStickXLast; - bool leftStickYChanged = state.Gamepad.sThumbLY != m_gameLeftStickYLast; - bool rightStickXChanged = state.Gamepad.sThumbRX != m_gameRightStickXLast; - bool rightStickYChanged = state.Gamepad.sThumbRY != m_gameRightStickYLast; - - m_gameButtonsLast = state.Gamepad.wButtons; - m_gameLeftTriggerLast = state.Gamepad.bLeftTrigger; - m_gameRightTriggerLast = state.Gamepad.bRightTrigger; - m_gameLeftStickXLast = state.Gamepad.sThumbLX; - m_gameLeftStickYLast = state.Gamepad.sThumbLY; - m_gameRightStickXLast = state.Gamepad.sThumbRX; - m_gameRightStickYLast = state.Gamepad.sThumbRY; - - bool eventSent = false; - - if (buttonsChanged) - { - LOG((CLOG_DEBUG "xinput buttons changed")); - - // xinput buttons convert exactly to synergy buttons - m_screen->sendEvent(m_events->forIScreen().gameDeviceButtons(), - new IPrimaryScreen::CGameDeviceButtonInfo(index, state.Gamepad.wButtons)); - - eventSent = true; - } - - if (leftStickXChanged || leftStickYChanged || rightStickXChanged || rightStickYChanged) - { - LOG((CLOG_DEBUG "xinput sticks changed")); - - m_screen->sendEvent(m_events->forIScreen().gameDeviceSticks(), - new IPrimaryScreen::CGameDeviceStickInfo( - index, - m_gameLeftStickXLast, m_gameLeftStickYLast, - m_gameRightStickXLast, m_gameRightStickYLast)); - - eventSent = true; - } - - if (leftTriggerChanged || rightTriggerChanged) - { - LOG((CLOG_DEBUG "xinput triggers changed")); - - // @todo seems wrong re-using x/y for a single value... - m_screen->sendEvent(m_events->forIScreen().gameDeviceTriggers(), - new IPrimaryScreen::CGameDeviceTriggerInfo( - index, - state.Gamepad.bLeftTrigger, - state.Gamepad.bRightTrigger)); - - eventSent = true; - } - - if (/*eventSent && */!m_gameTimingWaiting && (ARCH->time() - m_gameLastTimingSent > .5)) - { - m_screen->sendEvent(m_events->forIScreen().gameDeviceTimingReq(), NULL); - m_gameLastTimingSent = ARCH->time(); - m_gameTimingWaiting = true; - - LOG((CLOG_DEBUG "game device timing request at %.4f", m_gameLastTimingSent)); - } - } - - UInt16 sleep = m_gamePollFreq + m_gamePollFreqAdjust; - LOG((CLOG_DEBUG5 "xinput poll sleeping for %dms", sleep)); - Sleep(sleep); - } -} - -void -CMSWindowsXInput::xInputTimingThread(void*) -{ - LOG((CLOG_DEBUG "xinput timing thread started")); - - bool end = false; - while (!end) - { - // if timing request was queued, a timing response is queued - // when the xinput status is faked; if it was faked, go tell - // the server when this happened. - if (DequeueXInputTimingResp()) - { - LOG((CLOG_DEBUG "dequeued game device timing response")); - m_screen->sendEvent(m_events->forIScreen().gameDeviceTimingResp(), - new IPrimaryScreen::CGameDeviceTimingRespInfo(GetXInputFakeFreqMillis())); - } - - // give the cpu a break. - Sleep(1); - } -} - -void -CMSWindowsXInput::xInputFeedbackThread(void*) -{ - LOG((CLOG_DEBUG "xinput feedback thread started")); - - int index = 0; - bool end = false; - while (!end) - { - WORD leftMotor, rightMotor; - if (DequeueXInputFeedback(&leftMotor, &rightMotor)) - { - LOG((CLOG_DEBUG "dequeued game device feedback")); - m_screen->sendEvent(m_events->forIScreen().gameDeviceFeedback(), - new IPrimaryScreen::CGameDeviceFeedbackInfo(index, leftMotor, rightMotor)); - } - - Sleep(50); - } -} diff --git a/src/lib/platform/CMSWindowsXInput.h b/src/lib/platform/CMSWindowsXInput.h deleted file mode 100644 index 5ef65e05..00000000 --- a/src/lib/platform/CMSWindowsXInput.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2012 Bolton Software Ltd. - * Copyright (C) 2012 Nick Bolton - * - * This package is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * found in the file COPYING that should have accompanied this file. - * - * This package is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "CGameDevice.h" -#include "CThread.h" -#include "CGameDevice.h" -#include "BasicTypes.h" -#include "GameDeviceTypes.h" -#include "IPrimaryScreen.h" - -#define WIN32_LEAN_AND_MEAN -#include -#include - -class CMSWindowsScreen; - -enum -{ - kGamePollFreqDefault = 100, - kGamePollFreqMin = 50, - kGamePollFreqMax = 200, - kGameCalibrationPeriod = 10000, // 10 seconds - kGameLagRecordMax = 10, -}; - -class CMSWindowsXInput : public CGameDevice -{ -public: - CMSWindowsXInput(CMSWindowsScreen* screen, const CGameDeviceInfo& gameDevice); - virtual ~CMSWindowsXInput(); - - void init(CMSWindowsScreen* screen); - - // thread for polling xinput state. - void xInputPollThread(void*); - - // thread for checking queued timing requests. - void xInputTimingThread(void*); - - // thread for checking pending feedback state. - void xInputFeedbackThread(void*); - - virtual void gameDeviceTimingResp(UInt16 freq); - virtual void gameDeviceFeedback(GameDeviceID id, UInt16 m1, UInt16 m2); - virtual void fakeGameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) const; - virtual void fakeGameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) const; - virtual void fakeGameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) const; - virtual void queueGameDeviceTimingReq() const; - -private: - CMSWindowsScreen* m_screen; - const CGameDeviceInfo& m_gameDeviceInfo; - CThread* m_xInputPollThread; - CThread* m_xInputTimingThread; - CThread* m_xInputFeedbackThread; - WORD m_gameButtonsLast; - BYTE m_gameLeftTriggerLast; - BYTE m_gameRightTriggerLast; - SHORT m_gameLeftStickXLast; - SHORT m_gameLeftStickYLast; - SHORT m_gameRightStickXLast; - SHORT m_gameRightStickYLast; - double m_gameLastTimingSent; - bool m_gameTimingWaiting; - UInt16 m_gameFakeLag; - UInt16 m_gameFakeLagMin; - UInt16 m_gamePollFreq; - SInt8 m_gamePollFreqAdjust; - UInt16 m_gameTimingStarted; - UInt16 m_gameTimingFirst; - UInt16 m_gameFakeLagLast; - bool m_gameTimingCalibrated; - std::vector m_gameFakeLagRecord; - HMODULE m_xinputModule; -}; diff --git a/src/lib/platform/CMakeLists.txt b/src/lib/platform/CMakeLists.txt index e44eb189..2a673018 100644 --- a/src/lib/platform/CMakeLists.txt +++ b/src/lib/platform/CMakeLists.txt @@ -33,7 +33,6 @@ if (WIN32) CMSWindowsHookLibraryLoader.h IMSWindowsClipboardFacade.h CMSWindowsDebugOutputter.h - CMSWindowsXInput.h ) set(src @@ -54,50 +53,10 @@ if (WIN32) CMSWindowsHookLibraryLoader.cpp CMSWindowsDebugOutputter.cpp ) - - set(inc_hook - CSynergyHook.h + + list(APPEND src + ${inc} ) - - set(src_hook - CSynergyHook.cpp - ) - - if (GAME_DEVICE_SUPPORT) - - list(APPEND inc - CMSWindowsXInput.h - ) - - list(APPEND src - CMSWindowsXInput.cpp - ) - - - set(inc_xinhook - XInputHook.h - HookDLL.h - ) - - set(src_xinhook - XInputHook.cpp - HookDLL.cpp - ) - - set(inc_xinproxy13 - XInput13.h - XInputProxy13.h - ) - - set(src_xinproxy13 - XInputProxy13.cpp - ) - - endif() - - list(APPEND src - ${inc} - ) elseif (APPLE) @@ -141,6 +100,7 @@ set(inc ../ipc ../net ../io + ../synwinhk ) if (UNIX) @@ -152,48 +112,6 @@ endif() include_directories(${inc}) add_library(platform STATIC ${src}) -if (WIN32) - add_library(synrgyhk SHARED ${inc_hook} ${src_hook}) - - # copy the dlls (and supporting files) from the lib dir to - # the bin dir, so that synergyc and synergys can easily find them. - # we should leave the other libraries compiling to the lib dir, - # so that the bin dir remains tidy. the path is relative to the - # build dir (in this case, that's: build\src\lib\platform). - add_custom_command( - TARGET synrgyhk - POST_BUILD - COMMAND xcopy /Y /Q - ..\\..\\..\\..\\lib\\${CMAKE_CFG_INTDIR}\\synrgyhk.* - ..\\..\\..\\..\\bin\\${CMAKE_CFG_INTDIR}\\ - ) - - if (GAME_DEVICE_SUPPORT) - include_directories($ENV{DXSDK_DIR}/Include) - add_library(synxinhk SHARED ${inc_xinhook} ${src_xinhook}) - - add_custom_command( - TARGET synxinhk - POST_BUILD - COMMAND xcopy /Y /Q - ..\\..\\..\\..\\lib\\${CMAKE_CFG_INTDIR}\\synxinhk.* - ..\\..\\..\\..\\bin\\${CMAKE_CFG_INTDIR}\\ - ) - - # synergy xinput1_3.dll proxy - include_directories($ENV{DXSDK_DIR}/Include) - add_library(sxinpx13 SHARED ${inc_xinproxy13} ${src_xinproxy13}) - target_link_libraries(sxinpx13 synxinhk) - add_custom_command( - TARGET sxinpx13 - POST_BUILD - COMMAND xcopy /Y /Q - ..\\..\\..\\..\\lib\\${CMAKE_CFG_INTDIR}\\sxinpx13.* - ..\\..\\..\\..\\bin\\${CMAKE_CFG_INTDIR}\\ - ) - endif() -endif() - if (UNIX) target_link_libraries(platform io net ipc synergy ${libs}) endif() diff --git a/src/lib/platform/COSXScreen.h b/src/lib/platform/COSXScreen.h index eae23804..9b3259e1 100644 --- a/src/lib/platform/COSXScreen.h +++ b/src/lib/platform/COSXScreen.h @@ -76,17 +76,12 @@ public: virtual SInt32 getJumpZoneSize() const; virtual bool isAnyMouseButtonDown() const; virtual void getCursorCenter(SInt32& x, SInt32& y) const; - virtual void gameDeviceTimingResp(UInt16 freq) { } // ISecondaryScreen overrides virtual void fakeMouseButton(ButtonID id, bool press); virtual void fakeMouseMove(SInt32 x, SInt32 y) const; virtual void fakeMouseRelativeMove(SInt32 dx, SInt32 dy) const; virtual void fakeMouseWheel(SInt32 xDelta, SInt32 yDelta) const; - virtual void fakeGameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) const { } - virtual void fakeGameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) const { } - virtual void fakeGameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) const { } - virtual void queueGameDeviceTimingReq() const { } // IPlatformScreen overrides virtual void enable(); @@ -102,7 +97,6 @@ public: virtual void setOptions(const COptionsList& options); virtual void setSequenceNumber(UInt32); virtual bool isPrimary() const; - virtual void gameDeviceFeedback(GameDeviceID id, UInt16 m1, UInt16 m2) { } protected: // IPlatformScreen overrides diff --git a/src/lib/platform/CXWindowsScreen.h b/src/lib/platform/CXWindowsScreen.h index c45eb18a..91261877 100644 --- a/src/lib/platform/CXWindowsScreen.h +++ b/src/lib/platform/CXWindowsScreen.h @@ -63,17 +63,12 @@ public: virtual SInt32 getJumpZoneSize() const; virtual bool isAnyMouseButtonDown() const; virtual void getCursorCenter(SInt32& x, SInt32& y) const; - virtual void gameDeviceTimingResp(UInt16 freq) { } // ISecondaryScreen overrides virtual void fakeMouseButton(ButtonID id, bool press); virtual void fakeMouseMove(SInt32 x, SInt32 y) const; virtual void fakeMouseRelativeMove(SInt32 dx, SInt32 dy) const; virtual void fakeMouseWheel(SInt32 xDelta, SInt32 yDelta) const; - virtual void fakeGameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) const { } - virtual void fakeGameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) const { } - virtual void fakeGameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) const { } - virtual void queueGameDeviceTimingReq() const { } // IPlatformScreen overrides virtual void enable(); @@ -89,7 +84,6 @@ public: virtual void setOptions(const COptionsList& options); virtual void setSequenceNumber(UInt32); virtual bool isPrimary() const; - virtual void gameDeviceFeedback(GameDeviceID id, UInt16 m1, UInt16 m2) { } protected: // IPlatformScreen overrides diff --git a/src/lib/platform/HookDLL.cpp b/src/lib/platform/HookDLL.cpp deleted file mode 100644 index c151133e..00000000 --- a/src/lib/platform/HookDLL.cpp +++ /dev/null @@ -1,342 +0,0 @@ -/* - * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2012 Bolton Software Ltd. - * Copyright (C) 2011 Chris Schoeneman - * - * This package is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * found in the file COPYING that should have accompanied this file. - * - * This package is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/*-------------------------------------------------------------------------------------------------------- - Original comment: - - APIHIJACK.CPP - Based on DelayLoadProfileDLL.CPP, by Matt Pietrek for MSJ February 2000. - http://msdn.microsoft.com/library/periodic/period00/hood0200.htm - Adapted by Wade Brainerd, wadeb@wadeb.com ---------------------------------------------------------------------------------------------------------*/ - -#define WIN32_LEAN_AND_MEAN -#include -#include -#include "HookDLL.h" - -#include -std::stringstream _hookDllLogStream; -#define LOG(s) \ - _hookDllLogStream.str(""); \ - _hookDllLogStream << "Synergy HookDLL: " << s << std::endl; \ - OutputDebugString( _hookDllLogStream.str().c_str() ); - -//=========================================================================== -// Called from the DLPD_IAT_STUB stubs. Increments "count" field of the stub - -void __cdecl DefaultHook( PVOID dummy ) -{ - // asm only supported on 32-bit -#ifdef _M_IX86 - __asm pushad // Save all general purpose registers - - // Get return address, then subtract 5 (size of a CALL X instruction) - // The result points at a DLPD_IAT_STUB - - // pointer math! &dummy-1 really subtracts sizeof(PVOID) - PDWORD pRetAddr = (PDWORD)(&dummy - 1); - - DLPD_IAT_STUB * pDLPDStub = (DLPD_IAT_STUB *)(*pRetAddr - 5); - - pDLPDStub->count++; - - #if 0 - // Remove the above conditional to get a cheezy API trace from - // the loader process. It's slow! - if ( !IMAGE_SNAP_BY_ORDINAL( pDLPDStub->pszNameOrOrdinal) ) - { - LOG( "Called hooked function: " ); - LOG( (PSTR)pDLPDStub->pszNameOrOrdinal ); - } - #endif - - __asm popad // Restore all general purpose registers -#endif -} - -// This function must be __cdecl!!! -void __cdecl DelayLoadProfileDLL_UpdateCount( PVOID dummy ); - -PIMAGE_IMPORT_DESCRIPTOR g_pFirstImportDesc; - -//=========================================================================== -// Given an HMODULE, returns a pointer to the PE header - -PIMAGE_NT_HEADERS PEHeaderFromHModule(HMODULE hModule) -{ - PIMAGE_NT_HEADERS pNTHeader = 0; - - __try - { - if ( PIMAGE_DOS_HEADER(hModule)->e_magic != IMAGE_DOS_SIGNATURE ) - __leave; - - pNTHeader = PIMAGE_NT_HEADERS(PBYTE(hModule) - + PIMAGE_DOS_HEADER(hModule)->e_lfanew); - - if ( pNTHeader->Signature != IMAGE_NT_SIGNATURE ) - pNTHeader = 0; - } - __except( EXCEPTION_EXECUTE_HANDLER ) - { - } - - return pNTHeader; -} - -//=========================================================================== -// Builds stubs for and redirects the IAT for one DLL (pImportDesc) - -bool RedirectIAT( SDLLHook* DLLHook, PIMAGE_IMPORT_DESCRIPTOR pImportDesc, PVOID pBaseLoadAddr ) -{ - PIMAGE_THUNK_DATA pIAT; // Ptr to import address table - PIMAGE_THUNK_DATA pINT; // Ptr to import names table - PIMAGE_THUNK_DATA pIteratingIAT; - - // Figure out which OS platform we're on - OSVERSIONINFO osvi; - osvi.dwOSVersionInfoSize = sizeof(osvi); - GetVersionEx( &osvi ); - - // If no import names table, we can't redirect this, so bail - if ( pImportDesc->OriginalFirstThunk == 0 ) - { - LOG( "no IAT available." ); - return false; - } - - pIAT = MakePtr( PIMAGE_THUNK_DATA, pBaseLoadAddr, pImportDesc->FirstThunk ); - pINT = MakePtr( PIMAGE_THUNK_DATA, pBaseLoadAddr, pImportDesc->OriginalFirstThunk ); - - // Count how many entries there are in this IAT. Array is 0 terminated - pIteratingIAT = pIAT; - unsigned cFuncs = 0; - while ( pIteratingIAT->u1.Function ) - { - cFuncs++; - pIteratingIAT++; - } - - if ( cFuncs == 0 ) // If no imported functions, we're done! - { - LOG( "no imported functions" ); - return false; - } - - // These next few lines ensure that we'll be able to modify the IAT, - // which is often in a read-only section in the EXE. - DWORD flOldProtect, flNewProtect, flDontCare; - MEMORY_BASIC_INFORMATION mbi; - - // Get the current protection attributes - VirtualQuery( pIAT, &mbi, sizeof(mbi) ); - - // remove ReadOnly and ExecuteRead attributes, add on ReadWrite flag - flNewProtect = mbi.Protect; - flNewProtect &= ~(PAGE_READONLY | PAGE_EXECUTE_READ); - flNewProtect |= (PAGE_READWRITE); - - if ( !VirtualProtect( pIAT, sizeof(PVOID) * cFuncs, - flNewProtect, &flOldProtect) ) - { - LOG( "could not remove ReadOnly and ExecuteRead attributes, or add ReadWrite flag" ); - return false; - } - - // If the Default hook is enabled, build an array of redirection stubs in the processes memory. - DLPD_IAT_STUB * pStubs = 0; - if ( DLLHook->UseDefault ) - { - // Allocate memory for the redirection stubs. Make one extra stub at the - // end to be a sentinel - pStubs = new DLPD_IAT_STUB[ cFuncs + 1]; - if ( !pStubs ) - { - LOG( "could not allocate memory for redirection stubs" ); - return false; - } - } - - // Scan through the IAT, completing the stubs and redirecting the IAT - // entries to point to the stubs - pIteratingIAT = pIAT; - - while ( pIteratingIAT->u1.Function ) - { - void* HookFn = 0; // Set to either the SFunctionHook or pStubs. - - if ( !IMAGE_SNAP_BY_ORDINAL( pINT->u1.Ordinal ) ) // import by name - { - PIMAGE_IMPORT_BY_NAME pImportName = MakePtr( PIMAGE_IMPORT_BY_NAME, pBaseLoadAddr, pINT->u1.AddressOfData ); - - LOG( "checking function with name: " << pImportName->Name ); - - // Iterate through the hook functions, searching for this import. - SFunctionHook* FHook = DLLHook->Functions; - while ( FHook->Name ) - { - if ( lstrcmpi( FHook->Name, (char*)pImportName->Name ) == 0 ) - { - // Save the old function in the SFunctionHook structure and get the new one. - FHook->OrigFn = (void*)pIteratingIAT->u1.Function; - HookFn = FHook->HookFn; - - LOG( "hooked function: " << pImportName->Name ); - - break; - } - - FHook++; - } - - // If the default function is enabled, store the name for the user. - if ( DLLHook->UseDefault ) - pStubs->pszNameOrOrdinal = (DWORD)&pImportName->Name; - } - else // added comparison for ordinal - { - LOG( "checking function at ordinal: " << pINT->u1.Ordinal ); - - SFunctionHook* FHook = DLLHook->Functions; - while ( FHook->Name ) - { - if ( (DWORD)FHook->Name == pINT->u1.Ordinal ) - { - // Save the old function in the SFunctionHook structure and get the new one. - FHook->OrigFn = (void*)pIteratingIAT->u1.Function; - HookFn = FHook->HookFn; - - LOG( "hooked ordinal: " << pINT->u1.Ordinal ); - - break; - } - FHook++; - } - // If the default function is enabled, store the ordinal for the user. - if ( DLLHook->UseDefault ) - pStubs->pszNameOrOrdinal = (DWORD)pINT->u1.Ordinal; - } - - // If the default function is enabled, fill in the fields to the stub code. - if ( DLLHook->UseDefault ) - { - pStubs->data_call = (DWORD)(PDWORD)DLLHook->DefaultFn - - (DWORD)(PDWORD)&pStubs->instr_JMP; - pStubs->data_JMP = *(PDWORD)pIteratingIAT - (DWORD)(PDWORD)&pStubs->count; - - // If it wasn't manually hooked, use the Stub function. - if ( !HookFn ) - HookFn = (void*)pStubs; - } - - // Replace the IAT function pointer if we have a hook. - if ( HookFn ) - { - // Cheez-o hack to see if what we're importing is code or data. - // If it's code, we shouldn't be able to write to it - if ( IsBadWritePtr( (PVOID)pIteratingIAT->u1.Function, 1 ) ) - { - pIteratingIAT->u1.Function = (DWORD)(PDWORD)HookFn; - } - else if ( osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS ) - { - // Special hack for Win9X, which builds stubs for imported - // functions in system DLLs (Loaded above 2GB). These stubs are - // writeable, so we have to explicitly check for this case - if ( pIteratingIAT->u1.Function > (DWORD)(PDWORD)0x80000000 ) - pIteratingIAT->u1.Function = (DWORD)(PDWORD)HookFn; - } - } - - if ( DLLHook->UseDefault ) - pStubs++; // Advance to next stub - - pIteratingIAT++; // Advance to next IAT entry - pINT++; // Advance to next INT entry - } - - if ( DLLHook->UseDefault ) - pStubs->pszNameOrOrdinal = 0; // Final stub is a sentinel - - // Put the page attributes back the way they were. - VirtualProtect( pIAT, sizeof(PVOID) * cFuncs, flOldProtect, &flDontCare); - - return true; -} - -//=========================================================================== -// Top level routine to find the EXE's imports, and redirect them -bool HookAPICalls( SDLLHook* hook ) -{ - if ( !hook ) - { - LOG("no hook"); - return false; - } - - HMODULE hModEXE = GetModuleHandle( 0 ); - - PIMAGE_NT_HEADERS pExeNTHdr = PEHeaderFromHModule( hModEXE ); - - if ( !pExeNTHdr ) - { - LOG("no PE header"); - return false; - } - - DWORD importRVA = pExeNTHdr->OptionalHeader.DataDirectory - [IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress; - if ( !importRVA ) - { - LOG("no virtual address for image directory entry import"); - return false; - } - - // Convert imports RVA to a usable pointer - PIMAGE_IMPORT_DESCRIPTOR pImportDesc = MakePtr( PIMAGE_IMPORT_DESCRIPTOR, - hModEXE, importRVA ); - - // Save off imports address in a global for later use - g_pFirstImportDesc = pImportDesc; - - // Iterate through each import descriptor, and redirect if appropriate - while ( pImportDesc->FirstThunk ) - { - PSTR pszImportModuleName = MakePtr( PSTR, hModEXE, pImportDesc->Name); - - if ( lstrcmpi( pszImportModuleName, hook->Name ) == 0 ) - { - LOG( "found " << hook->Name << " in process" ); - - if ( RedirectIAT( hook, pImportDesc, (PVOID)hModEXE ) ) - { - LOG( "redirected IAT ok" ); - return true; - } - else - { - LOG( "failed to redirect IAT" ); - } - } - - pImportDesc++; // Advance to next import descriptor - } - - return false; -} - diff --git a/src/lib/platform/HookDLL.h b/src/lib/platform/HookDLL.h deleted file mode 100644 index 2d3e843d..00000000 --- a/src/lib/platform/HookDLL.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2012 Bolton Software Ltd. - * Copyright (C) 2011 Chris Schoeneman - * - * This package is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * found in the file COPYING that should have accompanied this file. - * - * This package is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/*-------------------------------------------------------------------------------------------------------- - Original comment: - - APIHIJACK.H - Based on DelayLoadProfileDLL.CPP, by Matt Pietrek for MSJ February 2000. - http://msdn.microsoft.com/library/periodic/period00/hood0200.htm - Adapted by Wade Brainerd, wadeb@wadeb.com ---------------------------------------------------------------------------------------------------------*/ - -#pragma once - -#define WIN32_LEAN_AND_MEAN -#include - -#pragma warning(disable:4200) - -// Macro for convenient pointer addition. -// Essentially treats the last two parameters as DWORDs. The first -// parameter is used to typecast the result to the appropriate pointer type. -#define MakePtr(cast, ptr, addValue ) (cast)( (DWORD)(ptr)+(DWORD)(addValue)) - -// Default Hook Stub Structure: Contains data about the original function, Name/Ordinal, Address -// and a Count field. This is actually a block of assembly code. -#pragma pack( push, 1 ) -struct DLPD_IAT_STUB -{ - BYTE instr_CALL; - DWORD data_call; - BYTE instr_JMP; - DWORD data_JMP; - DWORD count; - DWORD pszNameOrOrdinal; - - DLPD_IAT_STUB() : instr_CALL( 0xE8 ), instr_JMP( 0xE9 ), count( 0 ) {} -}; -#pragma pack( pop ) - -// Example DefaultHook procedure, called from the DLPD_IAT_STUB stubs. -// Increments "count" field of the stub. -// See the implementation for more information. -void __cdecl DefaultHook( PVOID dummy ); - -struct SFunctionHook -{ - char* Name; // Function name, e.g. "DirectDrawCreateEx". - void* HookFn; // Address of your function. - void* OrigFn; // Stored by HookAPICalls, the address of the original function. -}; - -struct SDLLHook -{ - // Name of the DLL, e.g. "DDRAW.DLL" - char* Name; - - // Set true to call the default for all non-hooked functions before they are executed. - bool UseDefault; - void* DefaultFn; - - // Function hook array. Terminated with a NULL Name field. - SFunctionHook Functions[]; -}; - -// Hook functions one or more DLLs. -bool HookAPICalls( SDLLHook* hook ); diff --git a/src/lib/platform/XInput13.h b/src/lib/platform/XInput13.h deleted file mode 100644 index a1d5a180..00000000 --- a/src/lib/platform/XInput13.h +++ /dev/null @@ -1,229 +0,0 @@ -/*************************************************************************** -* * -* XInput.h -- This module defines XBOX controller APIs * -* and constansts for the Windows platform. * -* * -* Copyright (C) 2012 Bolton Software Ltd. -* Copyright (c) Microsoft Corp. All rights reserved. * -* * -***************************************************************************/ -#ifndef _XINPUT_H_ -#define _XINPUT_H_ - -#include - -// Current name of the DLL shipped in the same SDK as this header. -// The name reflects the current version -#ifndef XINPUT_USE_9_1_0 -#define XINPUT_DLL_A "xinput1_3.dll" -#define XINPUT_DLL_W L"xinput1_3.dll" -#else -#define XINPUT_DLL_A "xinput9_1_0.dll" -#define XINPUT_DLL_W L"xinput9_1_0.dll" -#endif -#ifdef UNICODE - #define XINPUT_DLL XINPUT_DLL_W -#else - #define XINPUT_DLL XINPUT_DLL_A -#endif - -// -// Device types available in XINPUT_CAPABILITIES -// -#define XINPUT_DEVTYPE_GAMEPAD 0x01 - -// -// Device subtypes available in XINPUT_CAPABILITIES -// -#define XINPUT_DEVSUBTYPE_GAMEPAD 0x01 - -#ifndef XINPUT_USE_9_1_0 - -#define XINPUT_DEVSUBTYPE_WHEEL 0x02 -#define XINPUT_DEVSUBTYPE_ARCADE_STICK 0x03 -#define XINPUT_DEVSUBTYPE_FLIGHT_SICK 0x04 -#define XINPUT_DEVSUBTYPE_DANCE_PAD 0x05 -#define XINPUT_DEVSUBTYPE_GUITAR 0x06 -#define XINPUT_DEVSUBTYPE_DRUM_KIT 0x08 - -#endif // !XINPUT_USE_9_1_0 - - - -// -// Flags for XINPUT_CAPABILITIES -// -#define XINPUT_CAPS_VOICE_SUPPORTED 0x0004 - -// -// Constants for gamepad buttons -// -#define XINPUT_GAMEPAD_DPAD_UP 0x0001 -#define XINPUT_GAMEPAD_DPAD_DOWN 0x0002 -#define XINPUT_GAMEPAD_DPAD_LEFT 0x0004 -#define XINPUT_GAMEPAD_DPAD_RIGHT 0x0008 -#define XINPUT_GAMEPAD_START 0x0010 -#define XINPUT_GAMEPAD_BACK 0x0020 -#define XINPUT_GAMEPAD_LEFT_THUMB 0x0040 -#define XINPUT_GAMEPAD_RIGHT_THUMB 0x0080 -#define XINPUT_GAMEPAD_LEFT_SHOULDER 0x0100 -#define XINPUT_GAMEPAD_RIGHT_SHOULDER 0x0200 -#define XINPUT_GAMEPAD_A 0x1000 -#define XINPUT_GAMEPAD_B 0x2000 -#define XINPUT_GAMEPAD_X 0x4000 -#define XINPUT_GAMEPAD_Y 0x8000 - - -// -// Gamepad thresholds -// -#define XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE 7849 -#define XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE 8689 -#define XINPUT_GAMEPAD_TRIGGER_THRESHOLD 30 - -// -// Flags to pass to XInputGetCapabilities -// -#define XINPUT_FLAG_GAMEPAD 0x00000001 - - -#ifndef XINPUT_USE_9_1_0 - -// -// Devices that support batteries -// -#define BATTERY_DEVTYPE_GAMEPAD 0x00 -#define BATTERY_DEVTYPE_HEADSET 0x01 - -// -// Flags for battery status level -// -#define BATTERY_TYPE_DISCONNECTED 0x00 // This device is not connected -#define BATTERY_TYPE_WIRED 0x01 // Wired device, no battery -#define BATTERY_TYPE_ALKALINE 0x02 // Alkaline battery source -#define BATTERY_TYPE_NIMH 0x03 // Nickel Metal Hydride battery source -#define BATTERY_TYPE_UNKNOWN 0xFF // Cannot determine the battery type - -// These are only valid for wireless, connected devices, with known battery types -// The amount of use time remaining depends on the type of device. -#define BATTERY_LEVEL_EMPTY 0x00 -#define BATTERY_LEVEL_LOW 0x01 -#define BATTERY_LEVEL_MEDIUM 0x02 -#define BATTERY_LEVEL_FULL 0x03 - -// User index definitions -#define XUSER_MAX_COUNT 4 - -#define XUSER_INDEX_ANY 0x000000FF - - -// -// Codes returned for the gamepad keystroke -// - -#define VK_PAD_A 0x5800 -#define VK_PAD_B 0x5801 -#define VK_PAD_X 0x5802 -#define VK_PAD_Y 0x5803 -#define VK_PAD_RSHOULDER 0x5804 -#define VK_PAD_LSHOULDER 0x5805 -#define VK_PAD_LTRIGGER 0x5806 -#define VK_PAD_RTRIGGER 0x5807 - -#define VK_PAD_DPAD_UP 0x5810 -#define VK_PAD_DPAD_DOWN 0x5811 -#define VK_PAD_DPAD_LEFT 0x5812 -#define VK_PAD_DPAD_RIGHT 0x5813 -#define VK_PAD_START 0x5814 -#define VK_PAD_BACK 0x5815 -#define VK_PAD_LTHUMB_PRESS 0x5816 -#define VK_PAD_RTHUMB_PRESS 0x5817 - -#define VK_PAD_LTHUMB_UP 0x5820 -#define VK_PAD_LTHUMB_DOWN 0x5821 -#define VK_PAD_LTHUMB_RIGHT 0x5822 -#define VK_PAD_LTHUMB_LEFT 0x5823 -#define VK_PAD_LTHUMB_UPLEFT 0x5824 -#define VK_PAD_LTHUMB_UPRIGHT 0x5825 -#define VK_PAD_LTHUMB_DOWNRIGHT 0x5826 -#define VK_PAD_LTHUMB_DOWNLEFT 0x5827 - -#define VK_PAD_RTHUMB_UP 0x5830 -#define VK_PAD_RTHUMB_DOWN 0x5831 -#define VK_PAD_RTHUMB_RIGHT 0x5832 -#define VK_PAD_RTHUMB_LEFT 0x5833 -#define VK_PAD_RTHUMB_UPLEFT 0x5834 -#define VK_PAD_RTHUMB_UPRIGHT 0x5835 -#define VK_PAD_RTHUMB_DOWNRIGHT 0x5836 -#define VK_PAD_RTHUMB_DOWNLEFT 0x5837 - -// -// Flags used in XINPUT_KEYSTROKE -// -#define XINPUT_KEYSTROKE_KEYDOWN 0x0001 -#define XINPUT_KEYSTROKE_KEYUP 0x0002 -#define XINPUT_KEYSTROKE_REPEAT 0x0004 - -#endif //!XINPUT_USE_9_1_0 - -// -// Structures used by XInput APIs -// -typedef struct _XINPUT_GAMEPAD -{ - WORD wButtons; - BYTE bLeftTrigger; - BYTE bRightTrigger; - SHORT sThumbLX; - SHORT sThumbLY; - SHORT sThumbRX; - SHORT sThumbRY; -} XINPUT_GAMEPAD, *PXINPUT_GAMEPAD; - -typedef struct _XINPUT_STATE -{ - DWORD dwPacketNumber; - XINPUT_GAMEPAD Gamepad; -} XINPUT_STATE, *PXINPUT_STATE; - -typedef struct _XINPUT_VIBRATION -{ - WORD wLeftMotorSpeed; - WORD wRightMotorSpeed; -} XINPUT_VIBRATION, *PXINPUT_VIBRATION; - -typedef struct _XINPUT_CAPABILITIES -{ - BYTE Type; - BYTE SubType; - WORD Flags; - XINPUT_GAMEPAD Gamepad; - XINPUT_VIBRATION Vibration; -} XINPUT_CAPABILITIES, *PXINPUT_CAPABILITIES; - -#ifndef XINPUT_USE_9_1_0 - -typedef struct _XINPUT_BATTERY_INFORMATION -{ - BYTE BatteryType; - BYTE BatteryLevel; -} XINPUT_BATTERY_INFORMATION, *PXINPUT_BATTERY_INFORMATION; - -typedef struct _XINPUT_KEYSTROKE -{ - WORD VirtualKey; - WCHAR Unicode; - WORD Flags; - BYTE UserIndex; - BYTE HidCode; -} XINPUT_KEYSTROKE, *PXINPUT_KEYSTROKE; - -#endif // !XINPUT_USE_9_1_0 - -// -// XInput APIs -// - -// now defined in proxy class. - -#endif //_XINPUT_H_ diff --git a/src/lib/platform/XInputHook.cpp b/src/lib/platform/XInputHook.cpp deleted file mode 100644 index d80079d3..00000000 --- a/src/lib/platform/XInputHook.cpp +++ /dev/null @@ -1,296 +0,0 @@ -/* - * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2012 Bolton Software Ltd. - * Copyright (C) 2011 Chris Schoeneman - * - * This package is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * found in the file COPYING that should have accompanied this file. - * - * This package is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#define WIN32_LEAN_AND_MEAN -#define SYNERGY_EXPORT_XINPUT_HOOKS -#define REQUIRED_XINPUT_DLL "xinput1_3.dll" -#define HOOK_TIMEOUT 10000 // 10 sec - -#include -#include -#include "XInputHook.h" -#include "HookDLL.h" -#include - -HINSTANCE dll; -char name[256]; - -#pragma data_seg(".SHARED") - -HHOOK s_hook = NULL; - -// @todo use a struct for multiple gamepad support -WORD s_buttons = 0; -SHORT s_leftStickX = 0; -SHORT s_leftStickY = 0; -SHORT s_rightStickX = 0; -SHORT s_rightStickY = 0; -BYTE s_leftTrigger = 0; -BYTE s_rightTrigger = 0; -BOOL s_timingReqQueued = FALSE; -BOOL s_timingRespQueued = FALSE; -DWORD s_lastFakeMillis = 0; -WORD s_fakeFreqMillis = 0; -DWORD s_packetNumber = 0; -WORD s_leftMotor = 0; -WORD s_rightMotor = 0; -BOOL s_feedbackQueued = FALSE; - -#pragma data_seg() - -#pragma comment(linker, "/SECTION:.SHARED,RWS") - -#include -std::stringstream _xInputHookLogStream; -#define LOG(s) \ - _xInputHookLogStream.str(""); \ - _xInputHookLogStream << "Synergy XInputHook: " << s << endl; \ - OutputDebugString( _xInputHookLogStream.str().c_str()) - -using namespace std; - -SDLLHook s_xInputHook = -{ - XINPUT_DLL, - false, NULL, - { - { (char*)(0x80000002), HookXInputGetState }, - { (char*)(0x80000003), HookXInputSetState }, - { (char*)(0x80000004), HookXInputGetCapabilities }, - } -}; - -BOOL APIENTRY -DllMain(HINSTANCE module, DWORD reason, LPVOID reserved) -{ - if (reason == DLL_PROCESS_ATTACH) - { - dll = module; - - // disable unwanted thread notifications to reduce overhead - DisableThreadLibraryCalls(dll); - - GetModuleFileName(GetModuleHandle(NULL), name, sizeof(name)); - - // don't hook synergys (this needs to detect real input) - if (string(name).find("synergy") == string::npos) - { - LOG("checking '" << name << "' for " << XINPUT_DLL); - HookAPICalls(&s_xInputHook); - } - } - - return TRUE; -} - -void -SetXInputButtons(DWORD userIndex, WORD buttons) -{ - s_buttons = buttons; - - s_packetNumber++; - - LOG("SetXInputButtons: idx=" << userIndex << ", btns=" << buttons); -} - -void -SetXInputSticks(DWORD userIndex, SHORT lx, SHORT ly, SHORT rx, SHORT ry) -{ - s_leftStickX = lx; - s_leftStickY = ly; - s_rightStickX = rx; - s_rightStickY = ry; - - s_packetNumber++; - - LOG("SetXInputSticks:" << - " l=" << s_leftStickX << "," << s_leftStickY << - " r=" << s_rightStickX << "," << s_rightStickY); -} - -void -SetXInputTriggers(DWORD userIndex, BYTE left, BYTE right) -{ - s_leftTrigger = left; - s_rightTrigger = right; - - s_packetNumber++; - - LOG("SetXInputTriggers: " << - "l=" << (int)left << " r=" << (int)right); -} - -void -QueueXInputTimingReq() -{ - s_timingReqQueued = TRUE; -} - -BOOL -DequeueXInputTimingResp() -{ - BOOL result = s_timingRespQueued; - s_timingRespQueued = FALSE; - return result; -} - -BOOL -DequeueXInputFeedback(WORD* leftMotor, WORD* rightMotor) -{ - if (s_feedbackQueued) - { - *leftMotor = s_leftMotor; - *rightMotor = s_rightMotor; - s_feedbackQueued = FALSE; - return TRUE; - } - return FALSE; -} - -WORD -GetXInputFakeFreqMillis() -{ - return s_fakeFreqMillis; -} - -DWORD WINAPI -HookXInputGetState(DWORD userIndex, XINPUT_STATE* state) -{ - // @todo multiple device support - if (userIndex != 0) - { - return ERROR_DEVICE_NOT_CONNECTED; - } - - DWORD now = GetTickCount(); - s_fakeFreqMillis = (WORD)(now - s_lastFakeMillis); - s_lastFakeMillis = now; - - state->dwPacketNumber = s_packetNumber; - state->Gamepad.wButtons = s_buttons; - state->Gamepad.bLeftTrigger = s_leftTrigger; - state->Gamepad.bRightTrigger = s_rightTrigger; - state->Gamepad.sThumbLX = s_leftStickX; - state->Gamepad.sThumbLY = s_leftStickY; - state->Gamepad.sThumbRX = s_rightStickX; - state->Gamepad.sThumbRY = s_rightStickY; - - LOG("HookXInputGetState" - << ", idx=" << userIndex - << ", pkt=" << state->dwPacketNumber - << ", btn=" << state->Gamepad.wButtons - << ", t1=" << (int)state->Gamepad.bLeftTrigger - << ", t2=" << (int)state->Gamepad.bRightTrigger - << ", s1=" << state->Gamepad.sThumbLX << "," << state->Gamepad.sThumbLY - << ", s2=" << state->Gamepad.sThumbRX << "," << state->Gamepad.sThumbRY); - - if (s_timingReqQueued) - { - s_timingRespQueued = TRUE; - s_timingReqQueued = FALSE; - LOG("timing response queued"); - } - - return ERROR_SUCCESS; -} - -DWORD WINAPI -HookXInputSetState(DWORD userIndex, XINPUT_VIBRATION* vibration) -{ - // @todo multiple device support - if (userIndex != 0) - { - return ERROR_DEVICE_NOT_CONNECTED; - } - - // only change values and queue feedback change if - // feedback has actually changed. - if ((s_leftMotor != vibration->wLeftMotorSpeed) || - (s_rightMotor != vibration->wRightMotorSpeed)) - { - s_leftMotor = vibration->wLeftMotorSpeed; - s_rightMotor = vibration->wRightMotorSpeed; - s_feedbackQueued = TRUE; - - LOG("HookXInputSetState" - ", idx=" << userIndex << - ", lm=" << s_leftMotor << - ", rm=" << s_rightMotor); - } - - return ERROR_SUCCESS; -} - -DWORD WINAPI -HookXInputGetCapabilities(DWORD userIndex, DWORD flags, XINPUT_CAPABILITIES* capabilities) -{ - // @todo multiple device support - if (userIndex != 0) - { - return ERROR_DEVICE_NOT_CONNECTED; - } - - LOG("HookXInputGetCapabilities" - ", idx=" << userIndex << - ", flags=" << flags); - - capabilities->Type = 1; - capabilities->SubType = 1; - capabilities->Flags = 4; - capabilities->Gamepad.bLeftTrigger = 1; - capabilities->Gamepad.bRightTrigger = 1; - capabilities->Gamepad.sThumbLX = 1; - capabilities->Gamepad.sThumbLY = 1; - capabilities->Gamepad.sThumbRX = 1; - capabilities->Gamepad.sThumbRY = 1; - capabilities->Gamepad.wButtons = 62463; - capabilities->Vibration.wLeftMotorSpeed = 1; - capabilities->Vibration.wRightMotorSpeed = 1; - - return ERROR_SUCCESS; -} - -synxinhk_API LRESULT CALLBACK -HookProc(int code, WPARAM wParam, LPARAM lParam) -{ - return CallNextHookEx(s_hook, code, wParam, lParam); -} - -synxinhk_API BOOL -InstallXInputHook() -{ - if (_stricmp(XINPUT_DLL, REQUIRED_XINPUT_DLL) != 0) - { - LOG("DLL not supported: " << XINPUT_DLL); - return FALSE; - } - - LOG("installing hook"); - s_hook = SetWindowsHookEx(WH_CBT, HookProc, dll, 0); - LOG("hook installed"); - - return TRUE; -} - -synxinhk_API void -RemoveXInputHook() -{ - LOG("removing hook"); - UnhookWindowsHookEx(s_hook); - LOG("hook removed"); -} diff --git a/src/lib/platform/XInputHook.h b/src/lib/platform/XInputHook.h deleted file mode 100644 index 08f3f66d..00000000 --- a/src/lib/platform/XInputHook.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2012 Bolton Software Ltd. - * Copyright (C) 2011 Chris Schoeneman - * - * This package is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * found in the file COPYING that should have accompanied this file. - * - * This package is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef synxinhk_EXPORTS -#define synxinhk_API __declspec(dllexport) -#else -#define synxinhk_API __declspec(dllimport) -#endif - -synxinhk_API LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam); -synxinhk_API BOOL InstallXInputHook(); -synxinhk_API void RemoveXInputHook(); -synxinhk_API void SetXInputButtons(DWORD userIndex, WORD buttons); -synxinhk_API void SetXInputSticks(DWORD userIndex, SHORT lx, SHORT ly, SHORT rx, SHORT ry); -synxinhk_API void SetXInputTriggers(DWORD userIndex, BYTE left, BYTE right); -synxinhk_API void QueueXInputTimingReq(); -synxinhk_API BOOL DequeueXInputTimingResp(); -synxinhk_API WORD GetXInputFakeFreqMillis(); -synxinhk_API BOOL DequeueXInputFeedback(WORD* leftMotor, WORD* rightMotor); - -#ifdef SYNERGY_EXPORT_XINPUT_HOOKS - -synxinhk_API DWORD WINAPI HookXInputGetState(DWORD dwUserIndex, XINPUT_STATE* pState); -synxinhk_API DWORD WINAPI HookXInputSetState(DWORD dwUserIndex, XINPUT_VIBRATION* pVibration); -synxinhk_API DWORD WINAPI HookXInputGetCapabilities(DWORD userIndex, DWORD flags, XINPUT_CAPABILITIES* capabilities); - -#endif diff --git a/src/lib/platform/XInputProxy13.cpp b/src/lib/platform/XInputProxy13.cpp deleted file mode 100644 index f3bac29f..00000000 --- a/src/lib/platform/XInputProxy13.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/* - * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2012 Bolton Software Ltd. - * Copyright (C) 2011 Chris Schoeneman - * - * This package is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * found in the file COPYING that should have accompanied this file. - * - * This package is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#define SYNERGY_EXPORT_XINPUT_HOOKS -#define WIN32_LEAN_AND_MEAN - -#include -#include "XInputProxy13.h" -#include "XInputHook.h" - -#pragma comment(linker, "/EXPORT:XInputGetState=_XInputGetState@8,@2") -#pragma comment(linker, "/EXPORT:XInputSetState=_XInputSetState@8,@3") -#pragma comment(linker, "/EXPORT:XInputGetCapabilities=_XInputGetCapabilities@12,@4") -#pragma comment(linker, "/EXPORT:XInputEnable=_XInputEnable@4,@5") -#pragma comment(linker, "/EXPORT:XInputGetDSoundAudioDeviceGuids=_XInputGetDSoundAudioDeviceGuids@12,@6") -#pragma comment(linker, "/EXPORT:XInputGetBatteryInformation=_XInputGetBatteryInformation@12,@7") -#pragma comment(linker, "/EXPORT:XInputGetKeystroke=_XInputGetKeystroke@12,@8") - -sxinpx13_API DWORD WINAPI -XInputGetState(DWORD dwUserIndex, XINPUT_STATE* pState) -{ - return HookXInputGetState(dwUserIndex, pState); -} - -sxinpx13_API DWORD WINAPI -XInputSetState(DWORD dwUserIndex, XINPUT_VIBRATION* pVibration) -{ - return HookXInputSetState(dwUserIndex, pVibration); -} - -sxinpx13_API DWORD WINAPI -XInputGetCapabilities(DWORD dwUserIndex, DWORD dwFlags, XINPUT_CAPABILITIES* pCapabilities) -{ - return HookXInputGetCapabilities(dwUserIndex, dwFlags, pCapabilities); -} - -sxinpx13_API void WINAPI -XInputEnable(BOOL enable) -{ -} - -sxinpx13_API DWORD WINAPI -XInputGetDSoundAudioDeviceGuids(DWORD dwUserIndex, GUID* pDSoundRenderGuid, GUID* pDSoundCaptureGuid) -{ - return ERROR_DEVICE_NOT_CONNECTED; -} - -sxinpx13_API DWORD WINAPI -XInputGetBatteryInformation(DWORD dwUserIndex, BYTE devType, XINPUT_BATTERY_INFORMATION* pBatteryInformation) -{ - return ERROR_DEVICE_NOT_CONNECTED; -} - -sxinpx13_API DWORD WINAPI -XInputGetKeystroke(DWORD dwUserIndex, DWORD dwReserved, PXINPUT_KEYSTROKE pKeystroke) -{ - return ERROR_DEVICE_NOT_CONNECTED; -} diff --git a/src/lib/platform/XInputProxy13.h b/src/lib/platform/XInputProxy13.h deleted file mode 100644 index 1d0cdb94..00000000 --- a/src/lib/platform/XInputProxy13.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2012 Bolton Software Ltd. - * Copyright (C) 2011 Chris Schoeneman - * - * This package is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * found in the file COPYING that should have accompanied this file. - * - * This package is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#ifdef sxinpx13_EXPORTS -#define sxinpx13_API __declspec(dllexport) -#else -#define sxinpx13_API __declspec(dllimport) -#endif - -#include "XInput13.h" - -#ifdef __cplusplus -extern "C" { -#endif - -sxinpx13_API DWORD WINAPI XInputGetState -( - __in DWORD dwUserIndex, // Index of the gamer associated with the device - __out XINPUT_STATE* pState // Receives the current state -); - -sxinpx13_API DWORD WINAPI XInputSetState -( - __in DWORD dwUserIndex, // Index of the gamer associated with the device - __in XINPUT_VIBRATION* pVibration // The vibration information to send to the controller -); - -sxinpx13_API DWORD WINAPI XInputGetCapabilities -( - __in DWORD dwUserIndex, // Index of the gamer associated with the device - __in DWORD dwFlags, // Input flags that identify the device type - __out XINPUT_CAPABILITIES* pCapabilities // Receives the capabilities -); - -sxinpx13_API void WINAPI XInputEnable -( - __in BOOL enable // [in] Indicates whether xinput is enabled or disabled. -); - -sxinpx13_API DWORD WINAPI XInputGetDSoundAudioDeviceGuids -( - __in DWORD dwUserIndex, // Index of the gamer associated with the device - __out GUID* pDSoundRenderGuid, // DSound device ID for render - __out GUID* pDSoundCaptureGuid // DSound device ID for capture -); - -sxinpx13_API DWORD WINAPI XInputGetBatteryInformation -( - __in DWORD dwUserIndex, // Index of the gamer associated with the device - __in BYTE devType, // Which device on this user index - __out XINPUT_BATTERY_INFORMATION* pBatteryInformation // Contains the level and types of batteries -); - -sxinpx13_API DWORD WINAPI XInputGetKeystroke -( - __in DWORD dwUserIndex, // Index of the gamer associated with the device - __reserved DWORD dwReserved, // Reserved for future use - __out PXINPUT_KEYSTROKE pKeystroke // Pointer to an XINPUT_KEYSTROKE structure that receives an input event. -); - -#ifdef __cplusplus -} -#endif \ No newline at end of file diff --git a/src/lib/server/CBaseClientProxy.h b/src/lib/server/CBaseClientProxy.h index 6f72b44d..7a473e4c 100644 --- a/src/lib/server/CBaseClientProxy.h +++ b/src/lib/server/CBaseClientProxy.h @@ -76,10 +76,6 @@ public: virtual void mouseMove(SInt32 xAbs, SInt32 yAbs) = 0; virtual void mouseRelativeMove(SInt32 xRel, SInt32 yRel) = 0; virtual void mouseWheel(SInt32 xDelta, SInt32 yDelta) = 0; - virtual void gameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) = 0; - virtual void gameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) = 0; - virtual void gameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) = 0; - virtual void gameDeviceTimingReq() = 0; virtual void screensaver(bool activate) = 0; virtual void resetOptions() = 0; virtual void setOptions(const COptionsList& options) = 0; diff --git a/src/lib/server/CClientProxy.h b/src/lib/server/CClientProxy.h index d2b952e2..e573bc8a 100644 --- a/src/lib/server/CClientProxy.h +++ b/src/lib/server/CClientProxy.h @@ -84,10 +84,6 @@ public: virtual void screensaver(bool activate) = 0; virtual void resetOptions() = 0; virtual void setOptions(const COptionsList& options) = 0; - virtual void gameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) = 0; - virtual void gameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) = 0; - virtual void gameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) = 0; - virtual void gameDeviceTimingReq() = 0; virtual void cryptoIv(const UInt8* iv) = 0; virtual void fileChunkSending(UInt8 mark, char* data, size_t dataSize) = 0; diff --git a/src/lib/server/CClientProxy1_0.cpp b/src/lib/server/CClientProxy1_0.cpp index 1dd3cc8f..0002d3a0 100644 --- a/src/lib/server/CClientProxy1_0.cpp +++ b/src/lib/server/CClientProxy1_0.cpp @@ -358,34 +358,6 @@ CClientProxy1_0::mouseWheel(SInt32, SInt32 yDelta) CProtocolUtil::writef(getStream(), kMsgDMouseWheel1_0, yDelta); } -void -CClientProxy1_0::gameDeviceButtons(GameDeviceID, GameDeviceButton) -{ - // ignore -- not supported in protocol 1.0 - LOG((CLOG_DEBUG "gameDeviceButtons not supported")); -} - -void -CClientProxy1_0::gameDeviceSticks(GameDeviceID, SInt16, SInt16, SInt16, SInt16) -{ - // ignore -- not supported in protocol 1.0 - LOG((CLOG_DEBUG "gameDeviceSticks not supported")); -} - -void -CClientProxy1_0::gameDeviceTriggers(GameDeviceID, UInt8, UInt8) -{ - // ignore -- not supported in protocol 1.0 - LOG((CLOG_DEBUG "gameDeviceTriggers not supported")); -} - -void -CClientProxy1_0::gameDeviceTimingReq() -{ - // ignore -- not supported in protocol 1.0 - LOG((CLOG_DEBUG "gameDeviceTimingReq not supported")); -} - void CClientProxy1_0::cryptoIv(const UInt8* iv) { diff --git a/src/lib/server/CClientProxy1_0.h b/src/lib/server/CClientProxy1_0.h index bed12e9d..d8f6ea7e 100644 --- a/src/lib/server/CClientProxy1_0.h +++ b/src/lib/server/CClientProxy1_0.h @@ -59,10 +59,6 @@ public: virtual void screensaver(bool activate); virtual void resetOptions(); virtual void setOptions(const COptionsList& options); - virtual void gameDeviceButtons(GameDeviceID id, GameDeviceButton buttons); - virtual void gameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2); - virtual void gameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2); - virtual void gameDeviceTimingReq(); virtual void cryptoIv(const UInt8* iv); virtual void fileChunkSending(UInt8 mark, char* data, size_t dataSize); diff --git a/src/lib/server/CClientProxy1_4.cpp b/src/lib/server/CClientProxy1_4.cpp index 12a98180..2690cece 100644 --- a/src/lib/server/CClientProxy1_4.cpp +++ b/src/lib/server/CClientProxy1_4.cpp @@ -40,34 +40,6 @@ CClientProxy1_4::~CClientProxy1_4() { } -void -CClientProxy1_4::gameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) -{ - LOG((CLOG_DEBUG2 "send game device buttons to \"%s\" id=%d buttons=%d", getName().c_str(), id, buttons)); - CProtocolUtil::writef(getStream(), kMsgDGameButtons, id, buttons); -} - -void -CClientProxy1_4::gameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) -{ - LOG((CLOG_DEBUG2 "send game device sticks to \"%s\" id=%d s1=%+d,%+d s2=%+d,%+d", getName().c_str(), id, x1, y1, x2, y2)); - CProtocolUtil::writef(getStream(), kMsgDGameSticks, id, x1, y1, x2, y2); -} - -void -CClientProxy1_4::gameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) -{ - LOG((CLOG_DEBUG2 "send game device triggers to \"%s\" id=%d t1=%d t2=%d", getName().c_str(), id, t1, t2)); - CProtocolUtil::writef(getStream(), kMsgDGameTriggers, id, t1, t2); -} - -void -CClientProxy1_4::gameDeviceTimingReq() -{ - LOG((CLOG_DEBUG2 "send game device timing request to \"%s\"", getName().c_str())); - CProtocolUtil::writef(getStream(), kMsgCGameTimingReq); -} - void CClientProxy1_4::keyDown(KeyID key, KeyModifierMask mask, KeyButton button) { @@ -108,47 +80,3 @@ CClientProxy1_4::cryptoIv() // the client won't be able to decrypt the new IV. cryptoStream->setEncryptIv(iv); } - -bool -CClientProxy1_4::parseMessage(const UInt8* code) -{ - // process message - if (memcmp(code, kMsgCGameTimingResp, 4) == 0) { - gameDeviceTimingResp(); - } - - else if (memcmp(code, kMsgDGameFeedback, 4) == 0) { - gameDeviceFeedback(); - } - - else { - return CClientProxy1_3::parseMessage(code); - } - - return true; -} - -void -CClientProxy1_4::gameDeviceFeedback() -{ - // parse - GameDeviceID id; - UInt16 m1, m2; - CProtocolUtil::readf(getStream(), kMsgDGameFeedback + 4, &id, &m1, &m2); - LOG((CLOG_DEBUG2 "recv game device feedback id=%d m1=%d m2=%d", id, m1, m2)); - - // forward - m_server->gameDeviceFeedback(id, m1, m2); -} - -void -CClientProxy1_4::gameDeviceTimingResp() -{ - // parse - UInt16 freq; - CProtocolUtil::readf(getStream(), kMsgCGameTimingResp + 4, &freq); - LOG((CLOG_DEBUG2 "recv game device timing response freq=%dms", freq)); - - // forward - m_server->gameDeviceTimingResp(freq); -} diff --git a/src/lib/server/CClientProxy1_4.h b/src/lib/server/CClientProxy1_4.h index bdd33622..6da2787c 100644 --- a/src/lib/server/CClientProxy1_4.h +++ b/src/lib/server/CClientProxy1_4.h @@ -19,7 +19,6 @@ #pragma once #include "CClientProxy1_3.h" -#include "GameDeviceTypes.h" class CServer; @@ -38,10 +37,6 @@ public: //@} // IClient overrides - virtual void gameDeviceButtons(GameDeviceID id, GameDeviceButton buttons); - virtual void gameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2); - virtual void gameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2); - virtual void gameDeviceTimingReq(); virtual void keyDown(KeyID key, KeyModifierMask mask, KeyButton button); virtual void keyRepeat(KeyID key, KeyModifierMask mask, SInt32 count, KeyButton button); virtual void keyUp(KeyID key, KeyModifierMask mask, KeyButton button); @@ -49,14 +44,5 @@ public: //! Send IV to make void cryptoIv(); -protected: - // CClientProxy overrides - virtual bool parseMessage(const UInt8* code); - -private: - // message handlers - void gameDeviceTimingResp(); - void gameDeviceFeedback(); - CServer* m_server; }; diff --git a/src/lib/server/CMakeLists.txt b/src/lib/server/CMakeLists.txt index 6affb1a1..02e33748 100644 --- a/src/lib/server/CMakeLists.txt +++ b/src/lib/server/CMakeLists.txt @@ -72,12 +72,6 @@ endif() include_directories(${inc}) add_library(server STATIC ${src}) -if (WIN32) - if (GAME_DEVICE_SUPPORT) - include_directories($ENV{DXSDK_DIR}/Include) - endif() -endif() - if (UNIX) target_link_libraries(server synergy) endif() diff --git a/src/lib/server/CPrimaryClient.cpp b/src/lib/server/CPrimaryClient.cpp index a76f77c0..d964b348 100644 --- a/src/lib/server/CPrimaryClient.cpp +++ b/src/lib/server/CPrimaryClient.cpp @@ -243,30 +243,6 @@ CPrimaryClient::mouseWheel(SInt32, SInt32) // ignore } -void -CPrimaryClient::gameDeviceButtons(GameDeviceID, GameDeviceButton) -{ - // ignore -} - -void -CPrimaryClient::gameDeviceSticks(GameDeviceID, SInt16, SInt16, SInt16, SInt16) -{ - // ignore -} - -void -CPrimaryClient::gameDeviceTriggers(GameDeviceID, UInt8, UInt8) -{ - // ignore -} - -void -CPrimaryClient::gameDeviceTimingReq() -{ - // ignore -} - void CPrimaryClient::screensaver(bool) { diff --git a/src/lib/server/CPrimaryClient.h b/src/lib/server/CPrimaryClient.h index 663362b0..ff9b05bc 100644 --- a/src/lib/server/CPrimaryClient.h +++ b/src/lib/server/CPrimaryClient.h @@ -141,10 +141,6 @@ public: virtual void mouseMove(SInt32 xAbs, SInt32 yAbs); virtual void mouseRelativeMove(SInt32 xRel, SInt32 yRel); virtual void mouseWheel(SInt32 xDelta, SInt32 yDelta); - virtual void gameDeviceButtons(GameDeviceID id, GameDeviceButton buttons); - virtual void gameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2); - virtual void gameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2); - virtual void gameDeviceTimingReq(); virtual void screensaver(bool activate); virtual void resetOptions(); virtual void setOptions(const COptionsList& options); diff --git a/src/lib/server/CServer.cpp b/src/lib/server/CServer.cpp index 9ffc70cc..882a8892 100644 --- a/src/lib/server/CServer.cpp +++ b/src/lib/server/CServer.cpp @@ -132,22 +132,6 @@ CServer::CServer(CConfig& config, CPrimaryClient* primaryClient, CScreen* screen m_primaryClient->getEventTarget(), new TMethodEventJob(this, &CServer::handleWheelEvent)); - m_events->adoptHandler(m_events->forIPrimaryScreen().gameDeviceButtons(), - m_primaryClient->getEventTarget(), - new TMethodEventJob(this, - &CServer::handleGameDeviceButtons)); - m_events->adoptHandler(m_events->forIPrimaryScreen().gameDeviceSticks(), - m_primaryClient->getEventTarget(), - new TMethodEventJob(this, - &CServer::handleGameDeviceSticks)); - m_events->adoptHandler(m_events->forIPrimaryScreen().gameDeviceTriggers(), - m_primaryClient->getEventTarget(), - new TMethodEventJob(this, - &CServer::handleGameDeviceTriggers)); - m_events->adoptHandler(m_events->forIPrimaryScreen().gameDeviceTimingReq(), - m_primaryClient->getEventTarget(), - new TMethodEventJob(this, - &CServer::handleGameDeviceTimingReq)); m_events->adoptHandler(m_events->forIPrimaryScreen().screensaverActivated(), m_primaryClient->getEventTarget(), new TMethodEventJob(this, @@ -358,18 +342,6 @@ CServer::disconnect() } } -void -CServer::gameDeviceTimingResp(UInt16 freq) -{ - m_screen->gameDeviceTimingResp(freq); -} - -void -CServer::gameDeviceFeedback(GameDeviceID id, UInt16 m1, UInt16 m2) -{ - m_screen->gameDeviceFeedback(id, m1, m2); -} - UInt32 CServer::getNumClients() const { @@ -1337,36 +1309,6 @@ CServer::handleWheelEvent(const CEvent& event, void*) onMouseWheel(info->m_xDelta, info->m_yDelta); } -void -CServer::handleGameDeviceButtons(const CEvent& event, void*) -{ - IPlatformScreen::CGameDeviceButtonInfo* info = - reinterpret_cast(event.getData()); - onGameDeviceButtons(info->m_id, info->m_buttons); -} - -void -CServer::handleGameDeviceSticks(const CEvent& event, void*) -{ - IPlatformScreen::CGameDeviceStickInfo* info = - reinterpret_cast(event.getData()); - onGameDeviceSticks(info->m_id, info->m_x1, info->m_y1, info->m_x2, info->m_y2); -} - -void -CServer::handleGameDeviceTriggers(const CEvent& event, void*) -{ - IPlatformScreen::CGameDeviceTriggerInfo* info = - reinterpret_cast(event.getData()); - onGameDeviceTriggers(info->m_id, info->m_t1, info->m_t2); -} - -void -CServer::handleGameDeviceTimingReq(const CEvent& event, void*) -{ - onGameDeviceTimingReq(); -} - void CServer::handleScreensaverActivatedEvent(const CEvent&, void*) { @@ -1968,34 +1910,6 @@ CServer::onMouseWheel(SInt32 xDelta, SInt32 yDelta) m_active->mouseWheel(xDelta, yDelta); } -void -CServer::onGameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) -{ - LOG((CLOG_DEBUG1 "onGameDeviceButtons id=%d buttons=%d", id, buttons)); - m_active->gameDeviceButtons(id, buttons); -} - -void -CServer::onGameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) -{ - LOG((CLOG_DEBUG1 "onGameDeviceSticks id=%d s1=%+d,%+d s2=%+d,%+d", id, x1, y1, x2, y2)); - m_active->gameDeviceSticks(id, x1, y1, x2, y2); -} - -void -CServer::onGameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) -{ - LOG((CLOG_DEBUG1 "onGameDeviceTriggers id=%d t1=%d t2=%d", id, t1, t2)); - m_active->gameDeviceTriggers(id, t1, t2); -} - -void -CServer::onGameDeviceTimingReq() -{ - LOG((CLOG_DEBUG1 "onGameDeviceTimingReq")); - m_active->gameDeviceTimingReq(); -} - void CServer::onFileChunkSending(const void* data) { diff --git a/src/lib/server/CServer.h b/src/lib/server/CServer.h index b2802a0b..6b24062a 100644 --- a/src/lib/server/CServer.h +++ b/src/lib/server/CServer.h @@ -138,12 +138,6 @@ public: */ void disconnect(); - //! Notify of game device timing response - void gameDeviceTimingResp(UInt16 freq); - - //! Notify of game device feedback - void gameDeviceFeedback(GameDeviceID id, UInt16 m1, UInt16 m2); - //! Clears the file buffer void clearReceivedFileData(); @@ -304,10 +298,6 @@ private: void handleMotionPrimaryEvent(const CEvent&, void*); void handleMotionSecondaryEvent(const CEvent&, void*); void handleWheelEvent(const CEvent&, void*); - void handleGameDeviceButtons(const CEvent&, void*); - void handleGameDeviceSticks(const CEvent&, void*); - void handleGameDeviceTriggers(const CEvent&, void*); - void handleGameDeviceTimingReq(const CEvent&, void*); void handleScreensaverActivatedEvent(const CEvent&, void*); void handleScreensaverDeactivatedEvent(const CEvent&, void*); void handleSwitchWaitTimeout(const CEvent&, void*); @@ -336,10 +326,6 @@ private: bool onMouseMovePrimary(SInt32 x, SInt32 y); void onMouseMoveSecondary(SInt32 dx, SInt32 dy); void onMouseWheel(SInt32 xDelta, SInt32 yDelta); - void onGameDeviceButtons(GameDeviceID id, GameDeviceButton buttons); - void onGameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2); - void onGameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2); - void onGameDeviceTimingReq(); void onFileChunkSending(const void* data); void onFileRecieveComplete(); diff --git a/src/lib/synergy/CApp.h b/src/lib/synergy/CApp.h index 330fb025..98bb80a3 100644 --- a/src/lib/synergy/CApp.h +++ b/src/lib/synergy/CApp.h @@ -169,17 +169,6 @@ private: #elif SYSAPI_WIN32 -#if GAME_DEVICE_SUPPORT -# define HELP_GAME_DEVICE \ - " --game-mode enable game device support. valid modes:\n" \ - " xinput, joyinfoex\n" \ - " --game-poll game polling mode. valid modes:\n" \ - " dynamic, static\n" \ - " --game-poll-freq frequency for static polling.\n" -#else -# define HELP_GAME_DEVICE "" -#endif - // windows args # define HELP_SYS_ARGS \ " [--service ] [--relaunch] [--exit-pause]" @@ -189,7 +178,5 @@ private: " --relaunch persistently relaunches process in current user \n" \ " session (useful for vista and upward).\n" \ " --exit-pause wait for key press on exit, can be useful for\n" \ - " reading error messages that occur on exit.\n" \ - HELP_GAME_DEVICE - + " reading error messages that occur on exit.\n" #endif diff --git a/src/lib/synergy/CAppUtilWindows.cpp b/src/lib/synergy/CAppUtilWindows.cpp index e352dbfd..794e24c1 100644 --- a/src/lib/synergy/CAppUtilWindows.cpp +++ b/src/lib/synergy/CAppUtilWindows.cpp @@ -70,27 +70,6 @@ CAppUtilWindows::parseArg(const int& argc, const char* const* argv, int& i) app().argsBase().m_pauseOnExit = true; } - else if (app().isArg(i, argc, argv, NULL, "--game-mode")) { - CString mode(argv[++i]); - if (mode == "xinput") { - app().argsBase().m_gameDevice.m_mode = CGameDeviceInfo::kGameModeXInput; - } - else if (mode == "joyinfoex") { - app().argsBase().m_gameDevice.m_mode = CGameDeviceInfo::kGameModeJoyInfoEx; - } - } - else if (app().isArg(i, argc, argv, NULL, "--game-poll")) { - CString mode(argv[++i]); - if (mode == "dynamic") { - app().argsBase().m_gameDevice.m_poll = CGameDeviceInfo::kGamePollDynamic; - } - else if (mode == "static") { - app().argsBase().m_gameDevice.m_poll = CGameDeviceInfo::kGamePollStatic; - } - } - else if (app().isArg(i, argc, argv, NULL, "--game-poll-freq")) { - app().argsBase().m_gameDevice.m_pollFreq = atoi(argv[++i]); - } else if (app().isArg(i, argc, argv, NULL, "--stop-on-desk-switch")) { app().argsBase().m_stopOnDeskSwitch = true; } diff --git a/src/lib/synergy/CArgsBase.h b/src/lib/synergy/CArgsBase.h index 9d388d4d..96d288c4 100644 --- a/src/lib/synergy/CArgsBase.h +++ b/src/lib/synergy/CArgsBase.h @@ -19,7 +19,6 @@ #pragma once #include "CString.h" -#include "CGameDevice.h" #include "CCryptoOptions.h" class CArgsBase { @@ -41,7 +40,6 @@ public: #if SYSAPI_WIN32 bool m_debugServiceWait; bool m_pauseOnExit; - CGameDeviceInfo m_gameDevice; bool m_stopOnDeskSwitch; #endif #if WINAPI_XWINDOWS diff --git a/src/lib/synergy/CClientApp.cpp b/src/lib/synergy/CClientApp.cpp index 31a19cdd..27d0ff16 100644 --- a/src/lib/synergy/CClientApp.cpp +++ b/src/lib/synergy/CClientApp.cpp @@ -42,11 +42,6 @@ #include "CArchMiscWindows.h" #endif -#if SYSAPI_WIN32 && GAME_DEVICE_SUPPORT -#include -#include "XInputHook.h" -#endif - #if WINAPI_MSWINDOWS #include "CMSWindowsScreen.h" #elif WINAPI_XWINDOWS @@ -230,7 +225,7 @@ CClientApp::createScreen() { #if WINAPI_MSWINDOWS return new CScreen(new CMSWindowsScreen( - false, args().m_noHooks, args().m_gameDevice, args().m_stopOnDeskSwitch, m_events), m_events); + false, args().m_noHooks, args().m_stopOnDeskSwitch, m_events), m_events); #elif WINAPI_XWINDOWS return new CScreen(new CXWindowsScreen( args().m_display, false, args().m_disableXInitThreads, @@ -468,18 +463,6 @@ CClientApp::startClient() LOG((CLOG_NOTE "started client")); } -#if SYSAPI_WIN32 && GAME_DEVICE_SUPPORT - if (args().m_gameDevice.m_mode == CGameDeviceInfo::kGameModeXInput) - { - // TODO: currently this is failing because we're not - // forcing compile with the DX XInput.h (so the win - // SDK is being used)... we need to figure out how to - // tell cmake to prefer the DX include path. - LOG((CLOG_DEBUG "installing xinput hook")); - InstallXInputHook(); - } -#endif - s_client->connect(); updateStatus(); @@ -516,14 +499,6 @@ CClientApp::startClient() void CClientApp::stopClient() { -#if SYSAPI_WIN32 && GAME_DEVICE_SUPPORT - if (args().m_gameDevice.m_mode == CGameDeviceInfo::kGameModeXInput) - { - LOG((CLOG_DEBUG "removing xinput hook")); - RemoveXInputHook(); - } -#endif - closeClient(s_client); closeClientScreen(s_clientScreen); s_client = NULL; diff --git a/src/lib/synergy/CDaemonApp.cpp b/src/lib/synergy/CDaemonApp.cpp index c219aece..1da77fd6 100644 --- a/src/lib/synergy/CDaemonApp.cpp +++ b/src/lib/synergy/CDaemonApp.cpp @@ -223,8 +223,7 @@ CDaemonApp::mainLoop(bool logToFile) // HACK: create a dummy screen, which can handle system events // (such as a stop request from the service controller). CMSWindowsScreen::init(CArchMiscWindows::instanceWin32()); - CGameDeviceInfo gameDevice; - CScreen dummyScreen(new CMSWindowsScreen(false, true, gameDevice, false, m_events), m_events); + CScreen dummyScreen(new CMSWindowsScreen(false, true, false, m_events), m_events); CString command = ARCH->setting("Command"); bool elevate = ARCH->setting("Elevate") == "1"; diff --git a/src/lib/synergy/CEventGameDevice.cpp b/src/lib/synergy/CEventGameDevice.cpp deleted file mode 100644 index 44dd1387..00000000 --- a/src/lib/synergy/CEventGameDevice.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/* - * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2012 Bolton Software Ltd. - * Copyright (C) 2012 Nick Bolton - * - * This package is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * found in the file COPYING that should have accompanied this file. - * - * This package is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "CEventGameDevice.h" - -CEventGameDevice::CEventGameDevice(void* eventTarget) : - m_eventTarget(eventTarget) -{ -} - -CEventGameDevice::~CEventGameDevice() -{ -} - -void -CEventGameDevice::gameDeviceTimingResp(UInt16 freq) -{ -} - -void -CEventGameDevice::gameDeviceFeedback(GameDeviceID id, UInt16 m1, UInt16 m2) -{ -} - -void -CEventGameDevice::fakeGameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) const -{ -} - -void -CEventGameDevice::fakeGameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) const -{ -} - -void -CEventGameDevice::fakeGameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) const -{ -} - -void -CEventGameDevice::queueGameDeviceTimingReq() const -{ -} diff --git a/src/lib/synergy/CEventGameDevice.h b/src/lib/synergy/CEventGameDevice.h deleted file mode 100644 index 757fad18..00000000 --- a/src/lib/synergy/CEventGameDevice.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2012 Bolton Software Ltd. - * Copyright (C) 2012 Nick Bolton - * - * This package is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * found in the file COPYING that should have accompanied this file. - * - * This package is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "CGameDevice.h" - -class CEventGameDevice : public CGameDevice -{ -public: - CEventGameDevice(void* eventTarget); - virtual ~CEventGameDevice(); - - void gameDeviceTimingResp(UInt16 freq); - void gameDeviceFeedback(GameDeviceID id, UInt16 m1, UInt16 m2); - void fakeGameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) const; - void fakeGameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) const; - void fakeGameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) const; - void queueGameDeviceTimingReq() const; -private: - void* m_eventTarget; -}; diff --git a/src/lib/synergy/CFileChunker.cpp b/src/lib/synergy/CFileChunker.cpp index fb9efe92..41d6ab53 100644 --- a/src/lib/synergy/CFileChunker.cpp +++ b/src/lib/synergy/CFileChunker.cpp @@ -48,7 +48,7 @@ CFileChunker::sendFileChunks(char* filename, IEventQueue* events, void* eventTar // send first message (file size) CString fileSize = intToString(size); - UInt32 sizeLength = fileSize.size(); + size_t sizeLength = fileSize.size(); CFileChunk* sizeMessage = new CFileChunk(sizeLength + 2); char* chunkData = sizeMessage->m_chunk; diff --git a/src/lib/synergy/CGameDevice.cpp b/src/lib/synergy/CGameDevice.cpp deleted file mode 100644 index a0563fd7..00000000 --- a/src/lib/synergy/CGameDevice.cpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2012 Bolton Software Ltd. - * Copyright (C) 2012 Nick Bolton - * - * This package is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * found in the file COPYING that should have accompanied this file. - * - * This package is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "CGameDevice.h" - -CGameDeviceInfo::CGameDeviceInfo() : -m_mode(CGameDeviceInfo::kGameModeNone), -m_poll(CGameDeviceInfo::kGamePollDynamic), -m_pollFreq(60) -{ -} - -CGameDeviceInfo::~CGameDeviceInfo() -{ -} - -CGameDevice::CGameDevice() -{ -} - -CGameDevice::~CGameDevice() -{ -} diff --git a/src/lib/synergy/CGameDevice.h b/src/lib/synergy/CGameDevice.h deleted file mode 100644 index 14602b59..00000000 --- a/src/lib/synergy/CGameDevice.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2012 Bolton Software Ltd. - * Copyright (C) 2012 Nick Bolton - * - * This package is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * found in the file COPYING that should have accompanied this file. - * - * This package is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "GameDeviceTypes.h" - -class CGameDeviceInfo -{ -public: - - enum EGameMode { - kGameModeNone, - kGameModeXInput, - kGameModeJoyInfoEx - }; - - enum EGamePoll { - kGamePollDynamic, - kGamePollStatic - }; - - CGameDeviceInfo(); - virtual ~CGameDeviceInfo(); - EGameMode m_mode; - EGamePoll m_poll; - int m_pollFreq; -}; - -class CGameDevice -{ -public: - CGameDevice(); - virtual ~CGameDevice(); - - virtual void gameDeviceTimingResp(UInt16 freq) = 0; - virtual void gameDeviceFeedback(GameDeviceID id, UInt16 m1, UInt16 m2) = 0; - virtual void fakeGameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) const = 0; - virtual void fakeGameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) const = 0; - virtual void fakeGameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) const = 0; - virtual void queueGameDeviceTimingReq() const = 0; -}; diff --git a/src/lib/synergy/CMakeLists.txt b/src/lib/synergy/CMakeLists.txt index d7b0eba5..aa30fd3d 100644 --- a/src/lib/synergy/CMakeLists.txt +++ b/src/lib/synergy/CMakeLists.txt @@ -43,12 +43,10 @@ set(inc ProtocolTypes.h XScreen.h XSynergy.h - GameDeviceTypes.h CDaemonApp.h CAppUtil.h CArgsBase.h IAppUtil.h - CEventGameDevice.h CFileChunker.h ) @@ -76,15 +74,12 @@ set(src CDaemonApp.cpp CAppUtil.cpp CArgsBase.cpp - CEventGameDevice.cpp - CGameDevice.cpp CFileChunker.cpp ) if (WIN32) list(APPEND inc CAppUtilWindows.h - CGameDevice.h ) list(APPEND src @@ -109,6 +104,7 @@ set(inc ../platform ../server ../synergy + ../synwinhk ../.. ../../../tools ) diff --git a/src/lib/synergy/CPlatformScreen.h b/src/lib/synergy/CPlatformScreen.h index eb56b5a2..9ef393b9 100644 --- a/src/lib/synergy/CPlatformScreen.h +++ b/src/lib/synergy/CPlatformScreen.h @@ -50,17 +50,12 @@ public: virtual SInt32 getJumpZoneSize() const = 0; virtual bool isAnyMouseButtonDown() const = 0; virtual void getCursorCenter(SInt32& x, SInt32& y) const = 0; - virtual void gameDeviceTimingResp(UInt16 freq) = 0; // ISecondaryScreen overrides virtual void fakeMouseButton(ButtonID id, bool press) = 0; virtual void fakeMouseMove(SInt32 x, SInt32 y) const = 0; virtual void fakeMouseRelativeMove(SInt32 dx, SInt32 dy) const = 0; virtual void fakeMouseWheel(SInt32 xDelta, SInt32 yDelta) const = 0; - virtual void fakeGameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) const = 0; - virtual void fakeGameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) const = 0; - virtual void fakeGameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) const = 0; - virtual void queueGameDeviceTimingReq() const = 0; // IKeyState overrides virtual void updateKeyMap(); diff --git a/src/lib/synergy/CScreen.cpp b/src/lib/synergy/CScreen.cpp index 34f81a1d..823b0ced 100644 --- a/src/lib/synergy/CScreen.cpp +++ b/src/lib/synergy/CScreen.cpp @@ -250,34 +250,6 @@ CScreen::mouseWheel(SInt32 xDelta, SInt32 yDelta) m_screen->fakeMouseWheel(xDelta, yDelta); } -void -CScreen::gameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) -{ - assert(!m_isPrimary); - m_screen->fakeGameDeviceButtons(id, buttons); -} - -void -CScreen::gameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) -{ - assert(!m_isPrimary); - m_screen->fakeGameDeviceSticks(id, x1, y1, x2, y2); -} - -void -CScreen::gameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) -{ - assert(!m_isPrimary); - m_screen->fakeGameDeviceTriggers(id, t1, t2); -} - -void -CScreen::gameDeviceTimingReq() -{ - assert(!m_isPrimary); - m_screen->queueGameDeviceTimingReq(); -} - void CScreen::resetOptions() { @@ -526,15 +498,3 @@ CScreen::leaveSecondary() // release any keys we think are still down m_screen->fakeAllKeysUp(); } - -void -CScreen::gameDeviceTimingResp(UInt16 freq) -{ - m_screen->gameDeviceTimingResp(freq); -} - -void -CScreen::gameDeviceFeedback(GameDeviceID id, UInt16 m1, UInt16 m2) -{ - m_screen->gameDeviceFeedback(id, m1, m2); -} diff --git a/src/lib/synergy/CScreen.h b/src/lib/synergy/CScreen.h index 915e5572..f5972253 100644 --- a/src/lib/synergy/CScreen.h +++ b/src/lib/synergy/CScreen.h @@ -24,7 +24,6 @@ #include "KeyTypes.h" #include "MouseTypes.h" #include "OptionTypes.h" -#include "GameDeviceTypes.h" class IClipboard; class IPlatformScreen; @@ -172,42 +171,6 @@ public: */ void mouseWheel(SInt32 xDelta, SInt32 yDelta); - //! Notify of game device buttons changed - /*! - Synthesize game device button states. - */ - virtual void gameDeviceButtons(GameDeviceID id, GameDeviceButton buttons); - - //! Notify of game device sticks changed - /*! - Synthesize game device stick states. - */ - virtual void gameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2); - - //! Notify of game device trigger changes - /*! - Synthesize game device trigger states. - */ - virtual void gameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2); - - //! Notify of game device timing request - /*! - Causes a game device timing response when state is next faked. - */ - virtual void gameDeviceTimingReq(); - - //! Notify of game device timing response - /*! - Handles a game device timing response coming back from the client. - */ - virtual void gameDeviceTimingResp(UInt16 freq); - - //! Notify of game device feedback changes - /*! - Sets the game device state with new feedback values. - */ - virtual void gameDeviceFeedback(GameDeviceID id, UInt16 m1, UInt16 m2); - //! Notify of options changes /*! Resets all options to their default values. diff --git a/src/lib/synergy/CServerApp.cpp b/src/lib/synergy/CServerApp.cpp index 9421bad2..b3fbe55f 100644 --- a/src/lib/synergy/CServerApp.cpp +++ b/src/lib/synergy/CServerApp.cpp @@ -622,7 +622,7 @@ CServerApp::createScreen() { #if WINAPI_MSWINDOWS return new CScreen(new CMSWindowsScreen( - true, args().m_noHooks, args().m_gameDevice, args().m_stopOnDeskSwitch, m_events), m_events); + true, args().m_noHooks, args().m_stopOnDeskSwitch, m_events), m_events); #elif WINAPI_XWINDOWS return new CScreen(new CXWindowsScreen( args().m_display, true, args().m_disableXInitThreads, 0, m_events), m_events); diff --git a/src/lib/synergy/GameDeviceTypes.h b/src/lib/synergy/GameDeviceTypes.h deleted file mode 100644 index 8f6208a2..00000000 --- a/src/lib/synergy/GameDeviceTypes.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * synergy -- mouse and keyboard sharing utility - * Copyright (C) 2012 Bolton Software Ltd. - * Copyright (C) 2011 Chris Schoeneman - * - * This package is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * found in the file COPYING that should have accompanied this file. - * - * This package is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "BasicTypes.h" - -//! Game device ID -/*! -Type to hold a game device ID. -*/ -typedef UInt8 GameDeviceID; - -//! Game device button -/*! -Type to hold a game device button. -*/ -typedef UInt16 GameDeviceButton; - -//! @name Game device buttons -//@{ -static const GameDeviceButton kGameDeviceDpadUp = 0x0001; -static const GameDeviceButton kGameDeviceDpadDown = 0x0002; -static const GameDeviceButton kGameDeviceDpadLeft = 0x0004; -static const GameDeviceButton kGameDeviceDpadRight = 0x0008; -static const GameDeviceButton kGameDeviceButtonStart = 0x0010; -static const GameDeviceButton kGameDeviceButtonBack = 0x0020; -static const GameDeviceButton kGameDeviceThumb1 = 0x0040; -static const GameDeviceButton kGameDeviceThumb2 = 0x0080; -static const GameDeviceButton kGameDeviceShoulder1 = 0x0100; -static const GameDeviceButton kGameDeviceShoulder2 = 0x0200; -static const GameDeviceButton kGameDeviceButton1 = 0x1000; -static const GameDeviceButton kGameDeviceButton2 = 0x2000; -static const GameDeviceButton kGameDeviceButton3 = 0x4000; -static const GameDeviceButton kGameDeviceButton4 = 0x8000; -//@} - -static const UInt8 NumGameDeviceButtons = 14; diff --git a/src/lib/synergy/IClient.h b/src/lib/synergy/IClient.h index c49f4275..da7da298 100644 --- a/src/lib/synergy/IClient.h +++ b/src/lib/synergy/IClient.h @@ -25,7 +25,6 @@ #include "MouseTypes.h" #include "OptionTypes.h" #include "CString.h" -#include "GameDeviceTypes.h" //! Client interface /*! @@ -141,30 +140,6 @@ public: */ virtual void mouseWheel(SInt32 xDelta, SInt32 yDelta) = 0; - //! Notify of game device buttons changed - /*! - Synthesize game device button states. - */ - virtual void gameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) = 0; - - //! Notify of game device sticks changed - /*! - Synthesize game device stick states. - */ - virtual void gameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) = 0; - - //! Notify of game device trigger changes - /*! - Synthesize game device trigger states. - */ - virtual void gameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) = 0; - - //! Notify of game device timing request - /*! - Causes a game device timing response when state is next faked. - */ - virtual void gameDeviceTimingReq() = 0; - //! Notify of screen saver change virtual void screensaver(bool activate) = 0; diff --git a/src/lib/synergy/IPlatformScreen.h b/src/lib/synergy/IPlatformScreen.h index 7dab0632..1e4bea9d 100644 --- a/src/lib/synergy/IPlatformScreen.h +++ b/src/lib/synergy/IPlatformScreen.h @@ -159,18 +159,12 @@ public: virtual SInt32 getJumpZoneSize() const = 0; virtual bool isAnyMouseButtonDown() const = 0; virtual void getCursorCenter(SInt32& x, SInt32& y) const = 0; - virtual void gameDeviceTimingResp(UInt16 freq) = 0; - virtual void gameDeviceFeedback(GameDeviceID id, UInt16 m1, UInt16 m2) = 0; // ISecondaryScreen overrides virtual void fakeMouseButton(ButtonID id, bool press) = 0; virtual void fakeMouseMove(SInt32 x, SInt32 y) const = 0; virtual void fakeMouseRelativeMove(SInt32 dx, SInt32 dy) const = 0; virtual void fakeMouseWheel(SInt32 xDelta, SInt32 yDelta) const = 0; - virtual void fakeGameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) const = 0; - virtual void fakeGameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) const = 0; - virtual void fakeGameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) const = 0; - virtual void queueGameDeviceTimingReq() const = 0; // IKeyState overrides virtual void updateKeyMap() = 0; diff --git a/src/lib/synergy/IPrimaryScreen.h b/src/lib/synergy/IPrimaryScreen.h index a8aa830e..74a865bc 100644 --- a/src/lib/synergy/IPrimaryScreen.h +++ b/src/lib/synergy/IPrimaryScreen.h @@ -23,7 +23,6 @@ #include "KeyTypes.h" #include "MouseTypes.h" #include "CEvent.h" -#include "GameDeviceTypes.h" #include "CEventTypes.h" //! Primary screen interface @@ -71,55 +70,6 @@ public: public: UInt32 m_id; }; - //! Game device button event data - class CGameDeviceButtonInfo { - public: - CGameDeviceButtonInfo(GameDeviceID id, GameDeviceButton buttons) : - m_id(id), m_buttons(buttons) { } - public: - GameDeviceID m_id; - GameDeviceButton m_buttons; - }; - //! Game device sticks event data - class CGameDeviceStickInfo { - public: - CGameDeviceStickInfo(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) : - m_id(id), m_x1(x1), m_x2(x2), m_y1(y1), m_y2(y2) { } - public: - GameDeviceID m_id; - SInt16 m_x1; - SInt16 m_x2; - SInt16 m_y1; - SInt16 m_y2; - }; - //! Game device triggers event data - class CGameDeviceTriggerInfo { - public: - CGameDeviceTriggerInfo(GameDeviceID id, UInt8 t1, UInt8 t2) : - m_id(id), m_t1(t1), m_t2(t2) { } - public: - GameDeviceID m_id; - UInt8 m_t1; - UInt8 m_t2; - }; - //! Game device timing response event data - class CGameDeviceTimingRespInfo { - public: - CGameDeviceTimingRespInfo(UInt16 freq) : - m_freq(freq) { } - public: - UInt16 m_freq; - }; - //! Game device feedback event data - class CGameDeviceFeedbackInfo { - public: - CGameDeviceFeedbackInfo(GameDeviceID id, UInt16 m1, UInt16 m2) : - m_id(id), m_m1(m1), m_m2(m2) { } - public: - GameDeviceID m_id; - UInt16 m_m1; - UInt16 m_m2; - }; //! @name manipulators //@{ @@ -211,12 +161,6 @@ public: the edges of the screen, typically the center. */ virtual void getCursorCenter(SInt32& x, SInt32& y) const = 0; - - //! Handle incoming game device timing responses. - virtual void gameDeviceTimingResp(UInt16 freq) = 0; - - //! Handle incoming game device feedback changes. - virtual void gameDeviceFeedback(GameDeviceID id, UInt16 m1, UInt16 m2) = 0; //@} }; diff --git a/src/lib/synergy/ISecondaryScreen.h b/src/lib/synergy/ISecondaryScreen.h index a8c68d74..248e0710 100644 --- a/src/lib/synergy/ISecondaryScreen.h +++ b/src/lib/synergy/ISecondaryScreen.h @@ -21,7 +21,6 @@ #include "IInterface.h" #include "MouseTypes.h" -#include "GameDeviceTypes.h" #include "CEvent.h" #include "CEventTypes.h" @@ -58,24 +57,6 @@ public: Synthesize a mouse wheel event of amount \c xDelta and \c yDelta. */ virtual void fakeMouseWheel(SInt32 xDelta, SInt32 yDelta) const = 0; - - //! Fake game device buttons - /*! - Synthesize game device buttons state. - */ - virtual void fakeGameDeviceButtons(GameDeviceID id, GameDeviceButton buttons) const = 0; - - //! Fake game device sticks - /*! - Synthesize game device sticks state. - */ - virtual void fakeGameDeviceSticks(GameDeviceID id, SInt16 x1, SInt16 y1, SInt16 x2, SInt16 y2) const = 0; - - //! Fake game device triggers - /*! - Synthesize game device triggers state. - */ - virtual void fakeGameDeviceTriggers(GameDeviceID id, UInt8 t1, UInt8 t2) const = 0; //@} }; diff --git a/src/lib/synergy/ProtocolTypes.cpp b/src/lib/synergy/ProtocolTypes.cpp index 6eb6e9f7..58d45beb 100644 --- a/src/lib/synergy/ProtocolTypes.cpp +++ b/src/lib/synergy/ProtocolTypes.cpp @@ -29,8 +29,6 @@ const char* kMsgCScreenSaver = "CSEC%1i"; const char* kMsgCResetOptions = "CROP"; const char* kMsgCInfoAck = "CIAK"; const char* kMsgCKeepAlive = "CALV"; -const char* kMsgCGameTimingReq = "CGRQ"; -const char* kMsgCGameTimingResp = "CGRS%2i"; const char* kMsgDKeyDown = "DKDN%2i%2i%2i"; const char* kMsgDKeyDown1_0 = "DKDN%2i%2i"; const char* kMsgDKeyRepeat = "DKRP%2i%2i%2i%2i"; @@ -46,10 +44,6 @@ const char* kMsgDMouseWheel1_0 = "DMWM%2i"; const char* kMsgDClipboard = "DCLP%1i%4i%s"; const char* kMsgDInfo = "DINF%2i%2i%2i%2i%2i%2i%2i"; const char* kMsgDSetOptions = "DSOP%4I"; -const char* kMsgDGameButtons = "DGBT%1i%2i"; -const char* kMsgDGameSticks = "DGST%1i%2i%2i%2i%2i"; -const char* kMsgDGameTriggers = "DGTR%1i%1i%1i"; -const char* kMsgDGameFeedback = "DGFB%1i%2i%2i"; const char* kMsgDCryptoIv = "DCIV%s"; const char* kMsgDFileTransfer = "DFTR%1i%s"; const char* kMsgQInfo = "QINF"; diff --git a/src/lib/synergy/ProtocolTypes.h b/src/lib/synergy/ProtocolTypes.h index 85ebe960..23ea00ef 100644 --- a/src/lib/synergy/ProtocolTypes.h +++ b/src/lib/synergy/ProtocolTypes.h @@ -27,7 +27,7 @@ // 1.2: adds mouse relative motion // 1.3: adds keep alive and deprecates heartbeats, // adds horizontal mouse scrolling -// 1.4: adds game device support +// 1.4: adds crypto support (game device support added then removed) static const SInt16 kProtocolMajorVersion = 1; static const SInt16 kProtocolMinorVersion = 5; @@ -163,20 +163,6 @@ extern const char* kMsgCInfoAck; // defined by an option. extern const char* kMsgCKeepAlive; -// game device timing: primary -> secondary -// periodically, sent from primary to secondary when game device device is polled. -// this causes a game timing response to be queued, which is dequeued when -// the device is next faked. -extern const char* kMsgCGameTimingReq; - -// game device timing: primary <- secondary -// in response, sent from secondary to primary when game device device is faked. -// the difference between when the message was sent and received is a -// measurement of time it took for the game device device state to reach the -// game device device user. a timing request is not retransmitted until after -// the pending timing response is received. -extern const char* kMsgCGameTimingResp; - // // data codes // @@ -237,31 +223,6 @@ extern const char* kMsgDMouseWheel; // like as kMsgDMouseWheel except only sends $1 = yDelta. extern const char* kMsgDMouseWheel1_0; -// game device buttons: primary -> secondary -// $1 = device id -// $2 = buttons bit mask -extern const char* kMsgDGameButtons; - -// game device sticks: primary -> secondary -// $1 = device id -// $2 = x1 -// $3 = y1 -// $4 = x2 -// $5 = y2 -extern const char* kMsgDGameSticks; - -// game device triggers: primary -> secondary -// $1 = device id -// $2 = t1 -// $3 = t2 -extern const char* kMsgDGameTriggers; - -// game device feedback: secondary -> primary -// $1 = device id -// $2 = motor 1 -// $3 = motor 2 -extern const char* kMsgDGameFeedback; - // clipboard data: primary <-> secondary // $2 = sequence number, $3 = clipboard data. the sequence number // is 0 when sent by the primary. secondary screens should use the diff --git a/src/lib/synwinhk/CMakeLists.txt b/src/lib/synwinhk/CMakeLists.txt new file mode 100644 index 00000000..f20591cf --- /dev/null +++ b/src/lib/synwinhk/CMakeLists.txt @@ -0,0 +1,47 @@ +# synergy -- mouse and keyboard sharing utility +# Copyright (C) 2013 Bolton Software Ltd. +# +# This package is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# found in the file COPYING that should have accompanied this file. +# +# This package is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +set(inc + synwinhk.h +) + +set(src + synwinhk.cpp +) + +list(APPEND src + ${inc} +) + +set(inc + ../common + ../synergy +) + +include_directories(${inc}) +add_library(synwinhk SHARED ${inc} ${src}) + +# copy the dlls (and supporting files) from the lib dir to +# the bin dir, so that synergyc and synergys can easily find them. +# we should leave the other libraries compiling to the lib dir, +# so that the bin dir remains tidy. the path is relative to the +# build dir (in this case, that's: build\src\lib\platform). +add_custom_command( + TARGET synwinhk + POST_BUILD + COMMAND xcopy /Y /Q + ..\\..\\..\\..\\lib\\${CMAKE_CFG_INTDIR}\\synwinhk.* + ..\\..\\..\\..\\bin\\${CMAKE_CFG_INTDIR}\\ +) diff --git a/src/lib/platform/CSynergyHook.cpp b/src/lib/synwinhk/synwinhk.cpp similarity index 99% rename from src/lib/platform/CSynergyHook.cpp rename to src/lib/synwinhk/synwinhk.cpp index 9e195416..70313ea4 100644 --- a/src/lib/platform/CSynergyHook.cpp +++ b/src/lib/synwinhk/synwinhk.cpp @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -#include "CSynergyHook.h" +#include "synwinhk.h" #include "ProtocolTypes.h" #include #include @@ -910,7 +910,7 @@ init(DWORD threadID) // clean up after old process. the system should've already // removed the hooks so we just need to reset our state. - g_hinstance = GetModuleHandle(_T("synrgyhk")); + g_hinstance = GetModuleHandle(_T("synwinhk")); g_processID = GetCurrentProcessId(); g_wheelSupport = kWheelNone; g_threadID = 0; diff --git a/src/lib/platform/CSynergyHook.h b/src/lib/synwinhk/synwinhk.h similarity index 92% rename from src/lib/platform/CSynergyHook.h rename to src/lib/synwinhk/synwinhk.h index ba83eea6..d980a738 100644 --- a/src/lib/platform/CSynergyHook.h +++ b/src/lib/synwinhk/synwinhk.h @@ -31,10 +31,7 @@ #define WIN32_LEAN_AND_MEAN #include -// fix: cmake defines the library name in lower case (synrgyhk_EXPORTS) as -// opposed to upper case (SYNRGYHK_EXPORTS), so rather than figuring out -// how to change cmake's behaviour, it's easier to just change the code. -#if defined(synrgyhk_EXPORTS) +#if defined(synwinhk_EXPORTS) #define CSYNERGYHOOK_API __declspec(dllexport) #else #define CSYNERGYHOOK_API __declspec(dllimport) diff --git a/src/plugin/winmmjoy/winmmjoy.cpp b/src/plugin/winmmjoy/winmmjoy.cpp index 51e69a56..8e5198ed 100644 --- a/src/plugin/winmmjoy/winmmjoy.cpp +++ b/src/plugin/winmmjoy/winmmjoy.cpp @@ -59,6 +59,7 @@ cleanup() DWORD WINAPI mainLoop(void* data) { + // TODO: use a different message - e.g. DPLG%s (data - plugin) const char* buttonsEvent = "IPrimaryScreen::getGameDeviceButtonsEvent"; const char* sticksEvent = "IPrimaryScreen::getGameDeviceSticksEvent"; const char* triggersEvent = "IPrimaryScreen::getGameDeviceTriggersEvent"; diff --git a/src/test/integtests/CMakeLists.txt b/src/test/integtests/CMakeLists.txt index ddebe311..58a93567 100644 --- a/src/test/integtests/CMakeLists.txt +++ b/src/test/integtests/CMakeLists.txt @@ -59,6 +59,7 @@ set(inc ../../lib/platform ../../lib/server ../../lib/synergy + ../../lib/synwinhk ../../../tools/gtest-1.6.0/include ../../../tools/gmock-1.6.0/include ../unittests @@ -70,12 +71,6 @@ if (UNIX) ) endif() -if (WIN32) - if (GAME_DEVICE_SUPPORT) - link_directories("$ENV{DXSDK_DIR}/Lib/x86") - endif() -endif() - include_directories(${inc}) add_executable(integtests ${src}) target_link_libraries(integtests diff --git a/src/test/integtests/NetworkTests.cpp b/src/test/integtests/NetworkTests.cpp index 7d55b296..a90d304f 100644 --- a/src/test/integtests/NetworkTests.cpp +++ b/src/test/integtests/NetworkTests.cpp @@ -398,7 +398,7 @@ NetworkTests::sendMockData(void* eventTarget) { // send first message (file size) CString size = intToString(kMockDataSize); - UInt32 sizeLength = size.size(); + size_t sizeLength = size.size(); CFileChunker::CFileChunk* sizeMessage = new CFileChunker::CFileChunk(sizeLength + 2); char* chunkData = sizeMessage->m_chunk; @@ -461,13 +461,13 @@ newMockData(size_t size) memcpy(data, head, headSize); data += headSize; - SInt32 times = (size - headSize - tailSize) / synergyRocksSize; + size_t times = (size - headSize - tailSize) / synergyRocksSize; for (SInt32 i = 0; i < times; ++i) { memcpy(data, synergyRocks, synergyRocksSize); data += synergyRocksSize; } - SInt32 remainder = (size - headSize - tailSize) % synergyRocksSize; + size_t remainder = (size - headSize - tailSize) % synergyRocksSize; if (remainder != 0) { memset(data, '.', remainder); data += remainder; diff --git a/src/test/integtests/platform/CMSWindowsKeyStateTests.cpp b/src/test/integtests/platform/CMSWindowsKeyStateTests.cpp index 26945888..b0e508f7 100644 --- a/src/test/integtests/platform/CMSWindowsKeyStateTests.cpp +++ b/src/test/integtests/platform/CMSWindowsKeyStateTests.cpp @@ -41,8 +41,8 @@ class CMSWindowsKeyStateTests : public ::testing::Test protected: virtual void SetUp() { - // load synrgyhk.dll - m_hookLibrary = m_hookLibraryLoader.openHookLibrary("synrgyhk"); + // load synwinhk.dll + m_hookLibrary = m_hookLibraryLoader.openHookLibrary("synwinhk"); m_screensaver = new CMSWindowsScreenSaver(); } diff --git a/src/test/unittests/CMakeLists.txt b/src/test/unittests/CMakeLists.txt index 667bdc5c..2d270cad 100644 --- a/src/test/unittests/CMakeLists.txt +++ b/src/test/unittests/CMakeLists.txt @@ -62,12 +62,6 @@ if (UNIX) ) endif() -if (WIN32) - if (GAME_DEVICE_SUPPORT) - link_directories("$ENV{DXSDK_DIR}/Lib/x86") - endif() -endif() - include_directories(${inc}) add_executable(unittests ${src}) target_link_libraries(unittests diff --git a/src/test/unittests/synergy/CMockEventQueue.h b/src/test/unittests/synergy/CMockEventQueue.h index 034f4bf4..e7e8e87a 100644 --- a/src/test/unittests/synergy/CMockEventQueue.h +++ b/src/test/unittests/synergy/CMockEventQueue.h @@ -61,7 +61,6 @@ public: MOCK_METHOD0(forIKeyState, IKeyStateEvents&()); MOCK_METHOD0(forIPrimaryScreen, IPrimaryScreenEvents&()); MOCK_METHOD0(forIScreen, IScreenEvents&()); - MOCK_METHOD0(forISecondaryScreen, ISecondaryScreenEvents&()); }; #endif diff --git a/tools/build/toolchain.py b/tools/build/toolchain.py index 13e99510..99fd6f68 100644 --- a/tools/build/toolchain.py +++ b/tools/build/toolchain.py @@ -62,9 +62,6 @@ class InternalCommands: # by default, don't compile the gui enable_make_gui = False - - # by default, do not compile with game device support. - gameDevice = False # by default, let cmake decide macSdk = None @@ -184,11 +181,6 @@ class InternalCommands: if generator.cmakeName.find('Unix Makefiles') != -1: cmake_args += ' -DCMAKE_BUILD_TYPE=' + target.capitalize() - if self.gameDevice: - cmake_args += " -DGAME_DEVICE_SUPPORT:BOOL=TRUE" - else: - cmake_args += " -DGAME_DEVICE_SUPPORT:BOOL=FALSE" - if self.macSdk: path = "/Developer/SDKs/MacOSX" + self.macSdk + ".sdk/" cmake_args += " -DCMAKE_OSX_SYSROOT=" + path @@ -389,7 +381,7 @@ class InternalCommands: self.signFile(pfx, pwd, 'bin/Release', 'synergyc.exe') self.signFile(pfx, pwd, 'bin/Release', 'synergys.exe') self.signFile(pfx, pwd, 'bin/Release', 'synergyd.exe') - self.signFile(pfx, pwd, 'bin/Release', 'synrgyhk.dll') + self.signFile(pfx, pwd, 'bin/Release', 'synwinhk.dll') def signFile(self, pfx, pwd, dir, file): self.try_chdir(dir) @@ -1228,8 +1220,6 @@ class CommandHandler: self.vcRedistDir = a elif o == '--qt-dir': self.qtDir = a - elif o == '--game-device': - self.ic.gameDevice = True elif o == '--mac-sdk': self.ic.macSdk = a