Tech Racho エンジニアの「?」を「!」に。
  • IT Tips

macOS: iPhoneとのUSBテザリングをオン/オフするショートカットの設定方法

こんにちは、hachi8833です。平日の通勤に電車で片道2時間かかっているので、車内での作業環境の快適化を長らく模索してきました。

結果、Macbook ProとiPhone(7)の間をUSBケーブルでつないでテザリングするのが今の所最も快適です。パケ死さえ除けば...

必要なもの

  • BetterTouchTool -- ショートカット設定以外にもウィンドウサイズ修正やスクリーンショット撮影など非常に細やかな機能が満載です。
  • dark-mode -- メニューバーを白黒反転してテザリング中であることを示すのに使っています。つなぎっぱなしを防ぐためです。
  • USBケーブル: iPhoneとMacbook Proの接続用。

設定&コード

今後のOSアップデートの影響を受けにくそうなシェルスクリプトにしました。

macOSのネットワークプロファイルを追加する

当初はmacOSのネットワーク設定をスクリプトでコントロールしようと躍起になってましたが、それよりもネットワークプロファイル複数作って切り替える方が断然楽でした。

  • USB-iPhone接続がオンのプロファイル(以下では「自動」と表示されていますが、スクリプトでは「Automatic」という名前でアクセスします) -- デフォルト
  • USB-iPhone接続がオフのプロファイル(以下ではUSB_Tethering_offという名前) -- これを追加しました

「自動」プロファイルは通常用の設定にし、それを複製してUSB_Tethering_offのプロファイルを作成してから「iPhone USB」という設定を削除しておきます。

dark-modeのインストール

Homebrewで以下を実行してインストールしました。npmでもインストールできるようです。

$ brew install dark-mode

テザリングをトグルするシェルスクリプト

BetterTouchToolからシェルスクリプトを呼び出す場合は、スクリプト内のパスを絶対パスにしておく必要があります。これに気づくのにちょっとかかりました。

#!/usr/bin/env bash
# -*- coding: utf-8 -*-

## iPhone USBへの接続をトグルする。BetterTouchToolの ⌘ + F10 から起動

# set -eux

LOCATION=`networksetup -getcurrentlocation`

if [ $LOCATION = "USB_tethering_off" ]
  then
  scselect Automatic
  echo "Connected to iPhone USB"
  /usr/local/bin/dark-mode on
else
  scselect USB_tethering_off
  echo "Disconnected from iPhone USB"
  /usr/local/bin/dark-mode off
fi

BetterTouchToolの設定

BetterTouchToolで「execute terminal command」を追加して適当なキーを割り当てます。

以下の設定を追加します。これも絶対パスにする必要がありました。

以上で快適な車内テザリングができるようになりました。

おまけ

おまけ1: Wi-Fiをトグルするシェルスクリプト

#!/usr/bin/env bash
# -*- coding: utf-8 -*-

## Wi-Fiをトグルする。BetterTouchToolの ⌘ + F9 から起動

set -eux

networkList="$(networksetup -listallhardwareports)"
wifiDEV="$(echo "$networkList" |grep -E '(Wi-Fi|AirPort)' -A 1 | grep -o "en[0-9]")"

# switch wi-fi
if [ -n $wifiDEV ]
  then
  wifiST="$(networksetup -getairportpower $wifiDEV)"
  [[ $wifiST == *On ]] && val=Off || val=On
  networksetup -setairportpower $wifiDEV $val && exit 0
fi

おまけ2: Bluetoothをトグルするシェルスクリプト

これを使うにはblueutilのインストールが必要です。


#!/usr/bin/env bash # -*- coding: utf-8 -*- ## Bluetoothの接続をトグルする。BetterTouchToolの ⌘ + F8 から起動 # set -eux BLUEUTIL='/Users/hachi8833/bin/blueutil' STATUS=`$BLUEUTIL status` if [[ $STATUS = 'Status: off' ]] then $BLUEUTIL on echo "Bluetooth: on" else $BLUEUTIL off echo "Bluetooth: off" fi

関連記事

macOSのアップデート失敗後にダウンロード前の状態に戻す

Mac: homebrew caskを一括アップデートできるhomebrew-cask-upgrade


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。