web-dev-qa-db-ja.com

Synergy:LinuxからMacにメディアキーを送信できません

1台のMacクライアント(Macbook Pro UK)(SiBook-Pro.local)にサービスを提供するLinux Synergyサーバー(Si-Linux)があります。

Linuxサーバーでは、ラップトップキーボード(コンパクトな英国)のexactレイアウトのUSB Appleキーボードを使用していますアルミキーボード)。

メディアキーを常にMacクライアントに送信したいのですが、synergy.confで次のことを試みました。

keystroke(AudioPlay) = keystroke(AudioPlay,SiBook-Pro.local)

これは機能していないようだったので、サーバーとクライアントの両方をフォアグラウンドプロセスとして実行し、デバッグを有効にして、次のことを確認しました。

サーバーログ:

DEBUG1: activate actions
DEBUG1: hotkey: keyDown(AudioPlay,SiBook-Pro.local)
DEBUG1: onKeyDown id=57523 mask=0x0000 button=0x0000
DEBUG1: send key down to "SiBook-Pro.local" id=57523, mask=0x0000, button=0x0000
DEBUG1: deactivate actions
DEBUG1: hotkey: keyUp(AudioPlay,SiBook-Pro.local)
DEBUG1: onKeyUp id=57523 mask=0x0000 button=0x0000
DEBUG1: send key up to "SiBook-Pro.local" id=57523, mask=0x0000, button=0x0000

クライアントログ:

DEBUG1: recv key down id=0x0000e0b3, mask=0x0000, button=0x0000
DEBUG1: mapKey e0b3 (57523) with mask 0000, start state: 0000
DEBUG1: key e0b3 is not on keyboard
DEBUG1: recv key up id=0x0000e0b3, mask=0x0000, button=0x0000
DEBUG1: recv enter, 1279,386 5 2000

ご覧のとおり、クライアントは、受け取ったキーがキーボード上にないと主張しています。 Macbookのキーボードと同じキーなのでわかりません。

Macbookの[再生]ボタンを押した場合に送信されたキーをキャプチャできるかどうかを確認するためにクライアントサーバー構成を逆にしようとしましたが、キーがSynergyに到達していないようです。ほとんどすべてのキーボードの押下はログに記録されますが、メディアキーはログをバイパスし、ローカルで機能を実行するようです。例えば。 Macbookで(Macbookをサーバーとして)再生を押すと、キーがMacbookで音楽を再生しますが、キーはデバッグログに記録されません。

4
sjbx

これは、Mac SynergyClientの制限です。 MacSynergyがマルチメディアキーを処理するのを妨げる2つのことがあります。

  1. Mac Synergyは、Macのキーボードレイアウト(アメリカ英語、フランス語など)からキーボードマップを作成しますが、これらにはメディアキーは含まれていません。
  2. Mac APIでは、マルチメディアキーの押下に対応する合成キー押下を生成することはできません。

私はMacSynergyにパッチを書きました(そしてそれをプロジェクトに提出しました http://synergy-foss.org/spit/issues/details/3375/ )これらの問題の両方を回避します、メディアキーを手動でレイアウトに挿入し、実際のキー押下中に記録されたシリアル化されたメディアキー押下を使用します。

パッチを自分でダウンロードして相乗効果をコンパイルするか、問題にメモを追加して統合を要求することができます。どちらも機能しない場合は、私に連絡してください。使用しているバイナリを送信できます...

6
Douglas Mayle