SynergyでMac側をサーバにしたときに英数キーでIME-OFF、かなキーでIME-ONにすることに成功

目的はタイトルのとおり。

前回はMacのかなキーをWindowsの変換キーとして使うことに成功した。同様に次はMacの英数キーをWindowsの無変換キーに変換してみる。

Platform/COSXKeyState.cppやSynergy/KeyTypes.cppを見ても無変換キーにあたる定数は見当たらない。Windows用クライアントの配布元( http://naname.jp/index.php?Synergy )にある説明を見るとどうやら無変換キーは使えないらしい。代わりにカタカナ/ひらがなキーを使うことにする。Windows用クライアントのパッチファイルを見てみると、そこには

+static const KeyID kKeyOEMCopy = 0xEF27; /* OEMCopy(Kana in Japanese keyboard) */

のように書いてあり、これがカタカナ/ひらがなキーだ。
英数キーのキーコードは102なので、COSXKeyState.cppの上の方にあるs_controlKeys[]に以下の行を挿入する。

{ 0xEF27, 102 },// EISU

(追記:http://www.kreis-net.jp/blog/2006/07/synergy-1.htmlにあるWindows用クライアントであれば無変換が使えるようです。キーコードは0xEF22なので{ 0xEF22, 102 },となります)

次はWindowsMS-IMEの設定。
IMEのプロパティを開き、全般タブの設定アイコン(いつ見てもわかりにくい)をクリックして詳細プロパティを出す。

キー設定タブの中の変換キーの行の[入力/変換済み文字無し]をIME-オンに、ひらがなも同様にIME-オフに設定する。

これで完了・・のはずだったが、IMEがオンのときにひらがな/カタカナキーを押すとちゃんとIMEがオフになるのにどういうわけかIMEがオフのときに押すとIMEがオンになってしまう。(追記:無変換キーを使うなら問題ない)

仕方が無いのでMacの英数キーをWinの変換キーに、MacのかなキーをWinのひらがな/カタカナキーに割り当て、IMEの設定も変換キーがIME-オフ、ひらがな/カタカナキーをIME-オンにすることにした。COSXKeyState.cppの記述は以下のようにする。

{ kKeyHenkan, 102 },// EISU
{ 0xEF27, 104 },// KANA

これだとWindows単体で使いたいときにMacとは操作が逆になってしまうので、Windowsのキーマッピングを変更する必要がある。ChangeKeyというツールを使うことで変更が可能。この変更はSynergyMac側の動作には影響しない。

      • -

次はMacWindowsクリップボードショートカットやタスク切り替えの操作感をより近付けるために以下のようなマッピングを行う予定。

現在
cmd(Mac)<->Alt(Win)
Option(Mac)<->Win(Win)

理想
cmd(Mac)<->Ctrl(Win)
Option(Mac)<->Alt(Win)

(※現在はMacのキーボード設定でcapsキーにcmdを割り当てている)