synergyでキーボードによるscreenの切り替えを設定する方法

背景

synergyには以下のようなGUIで簡単に設定できるようなツールがある。

これらを使用すると簡単に設定できるものの、一部設定できない項目がある。キーボードによるscreenを切り替え設定もその一つ。

普段xmonadとかvimperatorなどを使用してキーボード主体で生活しているため、synergyの切り替えもキーボードで操作したいと思ったのが動機。

基本設定

今回例に挙げる、自分が使用している以下の状況の設定をメモ。

  • mac
    • server. こちらのキーボードとマウスを共有。
  • ubuntu
    • client.

macの右端とubuntuの左端をつなげて、マウスで行き来できるようにする。この設定ではまだキーボードで移動はできない。section: screensにはそれぞれのPC名を指定する。

mac$ vim synergy.conf
section: screens
  mac:
  ubuntu:
end

section: links
  mac:
    right = ubuntu
  ubuntu:
    left = mac
end

この時点でおかしな点がないか動作確認。'-f'はsynergyをforegroundで動作させるオプション。正常に設定できているのなら、その旨のメッセージが表示される。

mac$ synergys -f --config synergy.conf
ubuntu$ synergyc -f mac

キーボードによる移動の設定

ここから本題。前述の設定に以下のsectionを追加する。

mac$ vim synergy.conf
section: options
  keystroke(alt+control+a) = switchToScreen(mac)
  keystroke(alt+control+s) = switchToScreen(ubuntu)
end

設定を追記したら、^Cやkillなどで、一度synergysを停止し、再度起動する。synergycを再起動する必要はない。設定が正常なら、以下の設定が有効になる。

  • alt + ctrl + a
    • macにフォーカスを合わせる
  • alt + ctrl + s
    • ubuntuにフォーカスを合わせる

synergyにはswitchToScreenというactionが用意されており、これを使用すると引数に指定したscreen名にフォーカスを合わせることができる。keystrokeオプションを設定し、そのactionとしてこれを指定することで今回の機能が設定できる。

その他設定や使用可能なキーの名前は以下のページで確認できる。
http://synergy2.sourceforge.net/configuration.html

toggleで移動する設定

上記の設定は特定のキーを押すとそのscreenに移動する設定だが、同じキーを押すことで順番にscreenを切り替えるように設定することもできる。以下がその設定の全文。

section: screens
  mac:
  ubuntu:
end

section: links
  mac:
    right = ubuntu
    left = ubuntu
  ubuntu:
    left = mac
    right = mac
end

section: options
  keystroke(alt+control+a) = switchInDirection(right)
end

screenにはswitchInDirectionというactionがあり、これを使うとlinks sectionで設定した画面の位置関係で移動するキーバインドが設定できる。screenの両端をそれぞれ繋げることで、switchInDirectionでぐるぐる巡回させることができるようになる。