1.3.1 ALTが押されたままになる問題の対応 (サーバではローレベルフックをスルーするように)

早速ソース公開頂きありがとうございます。 >Takenoriさん http://www.kaede-software.com/2008/01/synergy_1.html
暇を見て私も試してみようかと思います。
とりあえずその該当部分の変更箇所をメモ・・

--- synergy-1.3.1/lib/platform/CSynergyHook.cpp	Wed Mar 08 20:07:18 2006
+++ synergy_src_20080204/lib/platform/CSynergyHook.cpp	Sun Jan 20 19:11:38 2008
@@ -187,6 +187,10 @@
 bool
 doKeyboardHookHandler(WPARAM wParam, LPARAM lParam)
 {
+	// クライアントスクリーン上でない時はすべてスルー
+	if( g_mode != kHOOK_RELAY_EVENTS )
+		return false;
+
 	// check for special events indicating if we should start or stop
 	// passing events through and not report them to the server.  this
 	// is used to allow the server to synthesize events locally but
@@ -638,27 +642,29 @@
 keyboardLLHook(int code, WPARAM wParam, LPARAM lParam)
 {
 	if (code >= 0) {
-		// decode the message
-		KBDLLHOOKSTRUCT* info = reinterpret_cast<KBDLLHOOKSTRUCT*>(lParam);
-		WPARAM wParam = info->vkCode;
-		LPARAM lParam = 1;							// repeat code
-		lParam      |= (info->scanCode << 16);		// scan code
-		if (info->flags & LLKHF_EXTENDED) {
-			lParam  |= (1lu << 24);					// extended key
-		}
-		if (info->flags & LLKHF_ALTDOWN) {
-			lParam  |= (1lu << 29);					// context code
-		}
-		if (info->flags & LLKHF_UP) {
-			lParam  |= (1lu << 31);					// transition
-		}
-		// FIXME -- bit 30 should be set if key was already down but
-		// we don't know that info.  as a result we'll never generate
-		// key repeat events.
-
-		// handle the message
-		if (keyboardHookHandler(wParam, lParam)) {
-			return 1;
+		if( g_mode == kHOOK_RELAY_EVENTS ) {
+			// decode the message
+			KBDLLHOOKSTRUCT* info = reinterpret_cast<KBDLLHOOKSTRUCT*>(lParam);
+			WPARAM wParam = info->vkCode;
+			LPARAM lParam = 1;							// repeat code
+			lParam      |= (info->scanCode << 16);		// scan code
+			if (info->flags & LLKHF_EXTENDED) {
+				lParam  |= (1lu << 24);					// extended key
+			}
+			if (info->flags & LLKHF_ALTDOWN) {
+				lParam  |= (1lu << 29);					// context code
+			}
+			if (info->flags & LLKHF_UP) {
+				lParam  |= (1lu << 31);					// transition
+			}
+			// FIXME -- bit 30 should be set if key was already down but
+			// we don't know that info.  as a result we'll never generate
+			// key repeat events.
+
+			// handle the message
+			if (keyboardHookHandler(wParam, lParam)) {
+				return 1;
+			}
 		}
 	}

とりあえずVistaに対応させたい・・・