7

I asked this on Github issues a while ago but nobody responded, so I'm trying again here.


When I'm working on my Linux client, I have music or video running on my Windows server. When I press media keys (like mute) when the Linux client is in focus, the mute key is forwarded to the Linux client properly, as it should. But: I would like all media keys (audio up, audio down, mute, play/pause etc.) to always register only on the server, no matter what screen is in focus. This way I can work on my Linux screen while listening on music on my Windows server, and I can click the pause media key to pause the music.

Poking around the wiki on Github I made this config:

section: screens
  beast:
  shiny:
end

section: links
  beast:
    left = shiny
  shiny:
    right = beast
end

section: options
    switchCorners = all
    switchCornerSize = 100
    switchDelay = 0

    keystroke(AudioMute) = keystroke(AudioMute,beast)
    keystroke(AudioDown) = keystroke(AudioDown,beast)
    keystroke(AudioUp) = keystroke(AudioUp,beast)
    keystroke(AudioPlay) = keystroke(AudioPlay,beast)
    keystroke(AudioPrev) = keystroke(AudioPrev,beast)
    keystroke(AudioNext) = keystroke(AudioNext,beast)
end

"beast" is the name of my Windows PC, "shiny" is the name of my Linux laptop. As you can see in the options section, I'm trying to get the media keys to register only on "beast", but what happens instead is that the media keys stop working completely.

As soon as I add the line keystroke(AudioMute) ... to the config and apply it, the mute button stops working completely both on the client and on the host. As soon as I stop Synergy, the button works again on the server (of course). This goes for all the audio buttons.

I am sure that "beast" is the right screen name, because the log has lines like:

switch from "beast" to "shiny" at 3439,464

The log says nothing when I try to press the mapped keyboard buttons.

I also tried to map the buttons to themselves, without specifying the screen:

keystroke(AudioMute) = keystroke(AudioMute)
keystroke(AudioDown) = keystroke(AudioDown)
keystroke(AudioUp) = keystroke(AudioUp)
keystroke(AudioPlay) = keystroke(AudioPlay)
keystroke(AudioPrev) = keystroke(AudioPrev)
keystroke(AudioNext) = keystroke(AudioNext)

Now the media keys work on the Linux client, but not on the Windows host. Is this perhaps a bug where the media keys can't be simulated on Windows hosts?

Is this a bug, or have I done something wrong? How do I accomplish what I'm trying to do?

(I'm using Synergy version 1.8.5-stable-a18eba7)

(Update 2017-02-15: Also tested with version 1.8.7-stable-9799e96)

6
  • Can you give this a try on Synergy 1.8.7? I've just tested it out and it seems to work fine for me - going from a Fedora 25 server to a Windows 10 Client and vice versa.
    – Sam Rimmer
    Feb 15, 2017 at 11:24
  • @SamRimmer So it works for you? I just tested with 1.8.7 without success. May I see your config file? Do you add this config to both sides, or just the host?
    – Hubro
    Feb 15, 2017 at 11:31
  • @Hubro Sorry for the late response on GitHub! Josh is on it :) Feb 21, 2017 at 14:32
  • 1
    @nbolton Awesome! :)
    – Hubro
    Feb 21, 2017 at 14:37
  • @Hubro I believe in the latest 1.1x series of Synergy this seems to be working more as you'd expect, where it only sends the keys to a defined "screen".
    – dragon788
    Oct 7, 2019 at 20:46

1 Answer 1

1

As long as both devices are configured with the same keyboard layout (E.G. English US) the media keys should be passed through without any specific config changes.

My Synergy between two devices (Windows 10 to Windows 10) is passing the media keys through without any specific config changes. My config file is attached.

section: screens
    TORBJORN:
        halfDuplexCapsLock = false
        halfDuplexNumLock = false
        halfDuplexScrollLock = false
        xtestIsXineramaUnaware = false
        switchCorners = none 
        switchCornerSize = 0
    MEKA:
        halfDuplexCapsLock = false
        halfDuplexNumLock = false
        halfDuplexScrollLock = false
        xtestIsXineramaUnaware = false
        switchCorners = none 
        switchCornerSize = 0
    HANA:
        halfDuplexCapsLock = false
        halfDuplexNumLock = false
        halfDuplexScrollLock = false
        xtestIsXineramaUnaware = false
        switchCorners = none 
        switchCornerSize = 0
end

section: aliases
end

section: links
    TORBJORN:
        down = HANA
    MEKA:
        right = HANA
    HANA:
        left = MEKA
        up = TORBJORN
end

section: options
    relativeMouseMoves = false
    screenSaverSync = true
    win32KeepForeground = false
    clipboardSharing = true
    switchCorners = none 
    switchCornerSize = 0
end
4
  • You appear to have misunderstood the question. The media keys are transmitted to the client from the host. I'm trying to make them not be transmitted. I want my media keys to always go to the host, no matter which screen currently has focus. This way I can play/pause music and adjust my volume no matter which screen I currently have in focus. Currently I have to stop what I'm doing and move my mouse to the host PC before I can pause my music, for example.
    – Hubro
    Feb 21, 2017 at 13:55
  • 1
    My apologies, unfortunately, that's a missing feature and would need to be a feature request. Feb 21, 2017 at 14:02
  • 2
    The weird thing is that it doesn't appear to be a missing feature. It's a documented feature in the Github wiki. keystroke(AudioMute,beast) is supposed to send that keystroke to the screen named "beast". Or have I misunderstood the documentation?
    – Hubro
    Feb 21, 2017 at 14:03
  • Yeah, I think we need a better answer :) Feb 21, 2017 at 14:32

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .