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

2台のPCでマウス&キーボードを共有化するソフト、Windowsは「Mouse Without Borders」、Macは「Teleport」が定番ですが、Win⇔Mac対応かつ日本語対応は絶望的です。

まず有料ソフトの Synergy ですが、執筆時点で最新版の「Synergy 3 Beta」はなぜか画面遷移できません。そして安定版の「Synergy 1」は「英数かな」が動きませんでした。

ShareMouse はホイール速度も変更できるし安定してて優秀な印象ですが、日本語未対応なのが惜しい。AcrossCenter はBluetooth接続だからか、まともに機能しませんでした。

その中でも「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」を追記。

;AutoHotkeyの「Run with UI access.」を使うと
;barrierに伝搬するので、barrier以外に適用する
#IfWinNotActive ahk_class BarrierDesk
F13::LControl
#If

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

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

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

  • Win→Macの場合、Mac側のKarabiner-Elementsやマウスのドライバは作動しない。
  • 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等で検索)。

2023年2月追記

barrierは開発が止まっており、有志によって「input-leap」へ移行されているようです。「英数かな」は動いてなかったけど、今後はこちらをベースに修正したほうが良いかも?

それと barrier でスクロールホイール量を変更する場合はこの記事を確認してください。