SynergyでMac側をサーバにしたときにcmdやoptionのマッピングを変える 解決編

SynergyでMac側をサーバにしたときにcmdやoptionのマッピングを変える 目的編の続き。

手探りでPlatform/COSXKeyState.cppの中のそれっぽいコードを下記のように書き換えてみたら動いてくれた。

- { kKeyAlt_L,		s_altVK },
- { kKeyAlt_R,		s_altVK },
- { kKeySuper_L,		s_superVK },
- { kKeySuper_R,		s_superVK }, // 61
- { kKeyMeta_L,		s_superVK },
- { kKeyMeta_R,		s_superVK }, // 61
+ { kKeyAlt_L,		s_superVK },
+ { kKeyControl_L,	s_altVK },

- if ((mask & cmdKey) != 0) {
- 	outMask |= KeyModifierAlt;
- }
- if ((mask & optionKey) != 0) {
- 	outMask |= KeyModifierSuper;
- }
- if ((mask & rightOptionKey) != 0) {
- 	outMask |= KeyModifierSuper;
- }
+ if ((mask & cmdKey) != 0) {
+ 	outMask |= KeyModifierControl;
+ }
+ if ((mask & optionKey) != 0) {
+ 	outMask |= KeyModifierAlt;
+ }
+ if ((mask & rightOptionKey) != 0) {
+ 	outMask |= KeyModifierAlt;
+ }

- if ((mask & KeyModifierAlt) != 0) {
- 	macModifierMask |= cmdKey;
- }
- if ((mask & KeyModifierSuper) != 0) {
- 	macModifierMask |= optionKey;
- }
+ if ((mask & KeyModifierControl) != 0) {
+ 	macModifierMask |= cmdKey;
+ }
+ if ((mask & KeyModifierAlt) != 0) {
+ 	macModifierMask |= optionKey;
+ }

- if ((changed & KeyModifierAlt) != 0) {
- 	handleModifierKey(target, s_altVK, kKeyAlt_L,
- 						(newMask & KeyModifierAlt) != 0, newMask);
- }
- if ((changed & KeyModifierSuper) != 0) {
- 	handleModifierKey(target, s_superVK, kKeySuper_L,
- 						(newMask & KeyModifierSuper) != 0, newMask);
- }
+ if ((changed & KeyModifierControl) != 0) {
+ 	handleModifierKey(target, s_altVK, kKeyControl_L,
+ 					  (newMask & KeyModifierControl) != 0, newMask);
+ }
+ if ((changed & KeyModifierAlt) != 0) {
+ 	handleModifierKey(target, s_superVK, kKeyAlt_L,
+ 					  (newMask & KeyModifierAlt) != 0, newMask);
+ }

やったー!!