Windows, Macを両方使う環境を整えた 2020
ここ2年ほどはMacをメインPCとして使っていたが、時々Windowsでしかできない作業をしたくなる。 そこで、Logicool Flowを中心に、いい感じに ひとつのマウス・キーボードで、できるだけ同じキー操作で、 両方使える環境を整えた。
物理的な配置
まずはどのように2台のPCを並べているか
▲この写真のように、左にMacを、右にWindowsを配置している。
普通に並べているだけなので、特に工夫点はない。
Logicool Flowによるマウス・キーボード共有
PCを2台並べると必ずぶつかるのが、マウス・キーボードどうするか問題だ。 2セット用意すると、場所を取るし持ち替えるのが面倒。 ひとつのマウス・キーボードをKVMスイッチ等で切り替える手もあるが、その切り替え作業も面倒。
そこで、Logicool Flowというものを使うことにした。これは 複数のPC間でマウス・キーボードの切り替えをシームレスに行えるソフトウェア である。 まるでデュアルディスプレイとしてつながっているかのように、画面端から隣のPCにスッと移動することができる。 クリップボードの共有機能までついてる。
▲Logicoolのサイトにあった画像。まさにこんなイメージ
Logicool Flowと使うためには、Logicool製の対応マウス・キーボードが必要になる。 自分はこの2つを使っている。
これでひとつのマウス・キーボードで面倒な切り替えや持ち替えをせずに2つのPCを使い分けられるようになった。最高!
…と書いたが、いくつか不満だった点もある。
Logicoolの一部製品に縛られる
Logicoolの技術なので、仕方ないのだがLogicoolの対応したマウス・キーボードでないとこの機能は使えない。 マウスは元々Logicool使いだったので問題なかったが、キーボードは元々愛用していたMagic Keyboardが使えなくなってしまった。
一応、Logicoolに依存していなくて似たような機能を持つソフトウェアとしてSynergyやShare Mouseというものがあるらしいがまだ試せていない。
時々動作が不安定になる
長時間使っていると、ときどきマウスは切り替わったのに、キーボードが移動前のPCの方に認識されたままになっていることがあった。 PCを再起動したら大抵直るのだが、こういったやや不安定ぎみなところは気になってしまう。
Keyhacによるキー操作問題の解消
Logicool Flowによって2台のPC間の移動が楽になった。 しかし、まだ問題は残る。当たり前だがWindowsとMacは別のOSなので基本的な操作が異なる部分がたくさんある。
マウス操作に関しては問題ない。カーソルを動かし、左右のクリックがある。ここは変わらない。
一方、キーボード操作は問題がある!たとえば頻繁に使う「コピー」の操作はWindowsではCtrl+Cだが、MacではCmd+Cになっている。 メインで使っているのはMacなので、できるだけMacに合わせたい。
MX Keysでは修飾キーの割当は次のようになっている
- Optionキー(Mac)←→ Windowsキー(Windows)
- Commandキー(Mac) ←→ Altキー(Windows)
よって、いつものMacの癖でCmd+Cでコピーしようとすると、WindowsではAlt+Cを押したことになり、コピーされない。
そこでWindows上ではKeyHacというキーの割当をカスタマイズできるツールを使った。 このツールの素晴らしい点は、プログラミング言語Pythonで設定ファイルを記述できること。 テキストとしてコピペするだけで他の環境に持ち運んだりバックアップを取ったりがすぐできるのでうれしい。
config.py のソースコードを下にそのまま貼るが、だいたい次のようなことをしている。
- Cmd+C, Cmd+V など頻繁に使うコマンドをMacと同じ操作でできるように
- Macでよく使ってたCtrl+A,E,N,P,F,Bによるテキストカーソルの移動(いわゆるEmacs風バインド)をWindowsでもできるように
- 「かな」「英数」による日本語入力のON/OFFをMacと同じ操作でできるように(この記事を参考にした)
import sys
import os
import datetime
import pyauto
from keyhac import *
def configure(keymap):
keymap.setFont( "MS Gothic", 12 )
keymap.setTheme("black")
# Global keymap which affects any windows
if 1:
keymap_global = keymap.defineWindowKeymap()
keymap_global["Alt-S"] = "Ctrl-S"
keymap_global["Alt-C"] = "Ctrl-C"
keymap_global["Alt-V"] = "Ctrl-V"
keymap_global["Alt-A"] = "Ctrl-A"
keymap_global["Alt-Enter"] = "Ctrl-Enter"
keymap_global[ "LCtrl-A" ] = "Home"
keymap_global[ "LCtrl-E" ] = "End"
keymap_global[ "LCtrl-N" ] = "Down"
keymap_global[ "LCtrl-P" ] = "Up"
keymap_global[ "LCtrl-F" ] = "Right"
keymap_global[ "LCtrl-B" ] = "Left"
# 無変換キーを空打ちするとime_off
keymap_global["O-RCtrl"] = lambda: switch_ime(False)
# 変換キーを空打ちするとime_on
keymap_global["(28)"] = lambda: switch_ime(True)
## IMEを切り替える
# @param flag 切り替えフラグ(True:IME ON / False:IME OFF)
def switch_ime(flag):
BALLOON_TIMEOUT_MSEC = 500
# if not flag:
if flag:
ime_status = 1
message = u"[あ]"
else:
ime_status = 0
message = u"[_A]"
keymap.wnd.setImeStatus(ime_status)
keymap.popBalloon("ime_status", message, BALLOON_TIMEOUT_MSEC)
これで普段の作業は大抵、MacとWindowsでストレスなく同じように操作ができるようになった。 キーを置き換えているので、置き換え元の Alt+C などは使えなくなるのだが、普段PCで作業していて Alt-C を押す機会はないので問題なし。