今どきなSynergyにパッチを充ててJISキーボードの日本語キーが飛ぶMac版をビルドしよう

※Yosemite用のみですが、ビルドしたものをダウンロードできるようにしました。

その昔、SynergyKMというMac用のGUI付きSynergyで、MacのJISキーボードの「英数」と「かな」キーが飛ぶようにパッチを充てたもの作って、5-6年くらい使っていました。

ただ、Windowsがバージョンアップするに従ってUACでのアクセス制御が厳しくなり、1.2から1.3系列のSynergyは最新のWindows10ではほとんど実用にならないです。

一方、その間にSynergyは10ドルまたは29ドル寄付しないとリリース版のバイナリがダウンロードが出来ないソフトウェアとなりましたが、Nightly Buildはダウンロードできます。最新のWindowsUACにほぼ完全対応しており、設定次第でログイン時からクライアント(操作される側)として動作が可能になるなど、かなり良い感じに進化しています。

また、1.4以降にWindowsの日本語キーボード対応がある程度行われており、下記のキーは飛ぶようになっているようです。

  • 変換キー
  • カタカナ・ひらがなキー
  • 半角/全角キー

ただ、Mac版にはこれらのキーに対応するキーがソースコード上で定義されていないのでアウト。

プロジェクトの正式リリース版こそ寄付が必須なソフトウェアとなりましたが、ソースコード自体はGPLGitHubから落とせるようになってるので、前と同じようにパッチを充てて(数行書き換えて)ビルドすれば良いはず。

本当は無変換キーを飛ばしたいところところですが、Windows版のビルドはなんか大変そうなので、HomebrewからいくつかInstallするだけでビルドできそうなMacだけビルドし、Windowsは既存のバイナリをそのまま使うことにして、とりあえず下記のキーを飛ばすことにします。

  • Macの「かな」キーと、Windowsの「変換」キーを対応させる
  • Macの「英数」キーと、Windowsの「半角/全角」キーを対応させる

まずは、下記のリンクから安定版の最新のソースコード(2015/08/19時点ではv1.7.4-stable)を適当に落としてきて。

こんな感じでWindowsで設定されているキーの定義を適当に足して。

--- a/src/lib/platform/OSXKeyState.cpp
+++ b/src/lib/platform/OSXKeyState.cpp
@@ -46,6 +46,10 @@ static const UInt32 s_capsLockVK = 57;
 static const UInt32 s_numLockVK  = 71;
 #endif

+// for JIS Keybaord
+static const UInt32 s_kanaVK = 104;
+static const UInt32 s_eisuVK = 102;
+
 static const UInt32 s_osxNumLock = 1 << 16;

 struct KeyEntry {
@@ -170,6 +174,11 @@ static const KeyEntry    s_controlKeys[] = {
     { kKeyMeta_L,        s_superVK },
     { kKeyMeta_R,        s_superVK }, // 61

+    // for JIS Keyboard
+    { kKeyHenkan,        s_kanaVK },
+    //{ kKeyHiraganaKatakana,        s_kanaVK },
+    { kKeyZenkaku,        s_eisuVK },
+
     // toggle modifiers
     { kKeyNumLock,        s_numLockVK },
     { kKeyCapsLock,        s_capsLockVK }

試してみたら¥マークが飛ばなかったので追加で修正。¥マークのキーが飛ばないと、Path関連の操作が何もできないからね。

@@ -49,6 +49,7 @@ static const UInt32 s_numLockVK  = 71;
 // for JIS Keybaord
 static const UInt32 s_kanaVK = 104;
 static const UInt32 s_eisuVK = 102;
+static const UInt32 s_yenVK = 93;
 
 static const UInt32 s_osxNumLock = 1 << 16;
 
@@ -178,6 +179,7 @@ static const KeyEntry	s_controlKeys[] = {
 	{ kKeyHenkan,		s_kanaVK },
 	//{ kKeyHiraganaKatakana,		s_kanaVK },
 	{ kKeyZenkaku,		s_eisuVK },
+	{ 0x005c,		s_yenVK},
 
 	// toggle modifiers
 	{ kKeyNumLock,		s_numLockVK },

あとは下記のリンクに従ってビルドするだけです。

前のSynergyKMのパッチ適用版と同様、キーバインドのカスタマイズが必要ではありますが、状況はかなり改善すると思います。