我有一个 Linux Synergy 服务器(Si-Linux),仅为一个 Mac 客户端(Macbook Pro UK)(SiBook-Pro.local)提供服务。
在我的 Linux 服务器上,我使用带有精确的笔记本电脑键盘的布局(紧凑型英国铝制键盘)。
我希望始终将媒体密钥发送到 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 上播放音乐,并且该键未记录到调试日志中。
答案1
这是 Mac Synergy 客户端的一个限制。有两个因素阻碍了 Mac Synergy 处理多媒体键:
- Mac Synergy 根据 Mac 键盘布局(例如美式英语、法语等)构建键盘映射,这些键盘映射不包含媒体键
- Mac API 不允许您生成与按下多媒体键相对应的合成按键。
我为 Mac Synergy 编写了一个补丁(并将其提交给http://synergy-foss.org/spit/issues/details/3375/) 解决了这两个问题,通过手动将媒体按键插入布局,并使用在实际按键期间记录的序列化媒体按键。
您可以自行下载补丁并编译 synergy,或者在问题中添加注释以请求集成。如果这两种方法都不起作用,请联系我,我可以向您发送我正在使用的二进制文件...