MacとWindowsを、画面もマウスもキーボードも一発で切り替える

木の机の上に置いたAbleton Push。白いパッドが並んでいる
この記事を読むのにかかる時間:約 2 分

ロジクールは最強ですんで。

MacとWindowsの2台を、一台のモニターで使っています。

画面の切り替えと、マウスとキーボードの切り替えが別々。毎回2回押す。これが最悪でした。

一発にしました。ロジクールのキーボードと、少しのコードで。2台持ちの人なら、たぶん同じようにできます。

目次

しくみ

  1. キーボードのEasy-Switchボタン(つなぐ先のパソコンを選ぶボタン)を押す
  2. キーボードとマウスがWindowsへ移る(ロジクールのFlow)
  3. Macからキーボードがいなくなる。それをMacが見つけて、モニターの切り替えのショートカットを押す
  4. 画面もWindowsへ移る

戻すときも同じです。

用意するもの

  • Logi Options+(両方のパソコンに。Flowでマウスとキーボードを一緒に移す)
  • Hammerspoon(Mac用の無料ソフト。下のコードを動かす)
  • モニターの入力を、Macのショートカットで切り替えられるソフト(うちはEIZOのソフト)

コード

Hammerspoonの設定ファイル(init.lua)に入れます。ファイルはGoogleドライブにも置いてあります。

-- MX Keys の端末切り替えに合わせて、EIZO の入力を切り替える
--   2(Windows)を押す → キーボードが Mac から外れる → Ctrl+Cmd+S(HDMI)
--   1(Mac)を押す     → キーボードが Mac につながる → Ctrl+Cmd+A(USB-C)
-- ショートカットは EIZO のソフトで設定したホットキーと同じもの
local KB_NAME  = "MX KEYS S"  -- Mac から見えるキーボードの名前
local POLL_SEC = 0.5          -- 何秒ごとに確認するか
local OFF_WAIT = 1            -- 外れてから何秒で切り替えるか(一瞬の切断は無視)

local kbPrev, kbOffSince = nil, nil

local function sendSwitch(toMac)
  if toMac then
    hs.eventtap.keyStroke({"ctrl", "cmd"}, "a", 200000)
  else
    hs.eventtap.keyStroke({"ctrl", "cmd"}, "s", 200000)
  end
end

local function check()
  local out = hs.execute("/usr/sbin/ioreg -r -l -c IOHIDDevice") or ""
  local now = out:find('"Product" = "' .. KB_NAME, 1, true) ~= nil
  if kbPrev == nil then kbPrev = now; return end
  if now then
    kbOffSince = nil
    if kbPrev == false then sendSwitch(true) end
    kbPrev = true
  elseif kbPrev == true then
    kbOffSince = kbOffSince or hs.timer.secondsSinceEpoch()
    if hs.timer.secondsSinceEpoch() - kbOffSince >= OFF_WAIT then
      sendSwitch(false)
      kbPrev = false
    end
  end
end

kbTimer = hs.timer.doEvery(POLL_SEC, check)
check()

キーボードの名前は、Macからの見え方に合わせます。うちでは「MX KEYS S」と大文字でした。ここが違うと何も起きません。ショートカットも、自分で割り当てたものに合わせてください。

環境

  • Mac:Mac Studio(USB-Cケーブルでモニターにつなぐ)
  • Windows:ノートPC(HDMIケーブルでモニターにつなぐ)
  • モニター:EIZO FlexScan
  • キーボード:Logicool MX Keys S
  • マウス:Logicool MX Ergo S

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

作編曲家/電気主任技術者

YNU ☉⁠➛ 太陽光 †⁠➛ 学校 ⏚⁠➛ 半導体 ∴⁠➛ 独立

コメント

コメントする

目次