synergyでキーボードによるscreenの切り替えを設定する方法
背景
synergyには以下のようなGUIで簡単に設定できるようなツールがある。
これらを使用すると簡単に設定できるものの、一部設定できない項目がある。キーボードによるscreenを切り替え設定もその一つ。
普段xmonadとかvimperatorなどを使用してキーボード主体で生活しているため、synergyの切り替えもキーボードで操作したいと思ったのが動機。
基本設定
今回例に挙げる、自分が使用している以下の状況の設定をメモ。
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を再起動する必要はない。設定が正常なら、以下の設定が有効になる。
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でぐるぐる巡回させることができるようになる。