【barrier2.4.0】Mac⇔Windowsで「英数かな」が動かない(Macでビルドできない)&SSLフィンガープリントの不具合対策

実は、マウス&キーボードだけを共有化するソフトが存在します。画面は共有しないので遅延ほぼナシ。「Mouse Without Borders」「Synergy」「barrier」などが有名です。

その中でも「barrier」はオープンソースだしWin&Macに対応していて人気があるようですが、現時点では細かな不具合が散見されており、自前で修正やビルドなどが必要です。

SSLフィンガープリントが表示されない(SSL Fingerprint disabled)

2.4.0のバグ。そもそも最初は何も表示されないので不具合かどうかもわからない。設定画面(ポートなどが表示されるところ)に移動してOK→最初の画面に戻るとdisabledに。

おそらく一番手っ取り早い解決方法は、2.4.0をアンインストール→2.3.4を入れ直した後、2.3.4をアンインストール→2.4.0を入れ直す。Windows 11で動作確認できました。

または手動で対応する方法もあります。Macのみ動作確認しましたが以下実行すればOK。

// Macの場合、以下コマンドを叩いた後にbarrier再起動
// https://github.com/debauchee/barrier/issues/231#issuecomment-962421337
cd /Users/<user>/Library/Application Support/barrier/SSL
openssl req -x509 -nodes -days 365 -subj /CN=Barrier -newkey rsa:4096 -keyout Barrier.pem -out Barrier.pem
//
// Windowsの場合、事前にgitをインストールして以下コマンドを叩いた後にbarrier再起動
// https://github.com/debauchee/barrier/issues/231#issuecomment-958800595
cd into /Users/<user>/Library/Application Support/barrier/SSL
openssl req -x509 -nodes -days 365 -subj /CN=Barrier -newkey rsa:4096 -keyout Barrier.pem -out Barrier.pem

Mac⇔Windowsで「英数かな」が動かない(Macでビルドできない)

  1. barrierプロジェクトをforkし、以下の記事に従ってソースコードを修正→Pushする
    (2.4.0のせいなのか「JISキーボードの¥(|)キーが飛ばない」は修正されておらず)
    https://qiita.com/J4_dr/items/95046867833b70424f5e#%E4%BF%AE%E6%AD%A3%E3%82%B3%E3%83%BC%E3%83%89
    https://github.com/debauchee/barrier/compare/master…jdack41:keymapmod
  2. 「Azure Pipelines」を使ってビルドする。※実機ではビルドできなかったので注意

CapsLockをControlに変更する方法(クライアントMac側で確認済)

Win側に「Change Key」と「AutoHotkey」を入れ、Change Key 側で「CapsLock」→Scancodeで「0x0064(F13)」を設定、AutoHotkey側は「F13::LControl」を追記。

barrierの /src/lib/platform/OSXKeyState.cpp にあるkVK_F13をs_controlVKに変更。

- { kKeyF13,        kVK_F13 },
+ { kKeyF13,        s_controlVK },

あとは「Azure Pipelines」でビルドすればOK。これは以下の仕様を応用したものです。

  • Win→Macの場合、Mac側のKarabiner-Elementsやマウスのドライバは作動しない。
    ただ、Windows側で実行されているAutoHotkeyは無視されMacに送られている。
  • Mac→Winの場合、Win側のChange Keyは動かなかった(AutoHotkeyは動くかも)

実機でビルドしようと思って挫折するまでの流れ

  • OSのクリーンインストール&Xcodeの最新版&公式のwikiを確認(更新が2年前)。
  • 「library not found for -lSystem」エラーは、ターミナルで以下を叩くと直った。
export LIBRARY_PATH="$LIBRARY_PATH:/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib"
  • 「Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR) 」
    エラーは直せなかった。opensslやcurlを入れ直したり、以下も試したが解決せず。
export PATH=$(brew --prefix openssl)/bin:$PATH
export PATH=$(brew --prefix curl)/bin:$PATH

https://github.com/debauchee/barrier/blob/master/azure-pipelines.yml
のコードも参考にしたが微妙だった。cmakeの不具合とかかもしれない。

その他

  • そもそも2022年8月24日現在のmasterと配布されている2.4.0は別物となっている。
    現masterに手を加えずビルドし直したが、日本語キーボードの問題は解決ができず。
  • qiitaの記事を書かれた方のリポジトリ(2.3.3)そのままビルドしたら、エラーが発生。
    azure-pipelines.ymlを2.4.0に合わせて修正したら多少進むが途中でエラーになった。
  • よって「JISキーボードの¥(|)キーが飛ばない」を治す方法はすぐ分からず一旦保留。
  • OSXKeyState.cppを編集した場合、サーバー&クライアントどちらでも適用となる。
  • MacはControlキーの左右どちらかしか送れないらしい(kVK_Command等で検索)。