US配列とJIS配列のキーボードの設定を瞬時に変える (Mac)

Tech, ツール, 作ってみた

前置き

僕のMacbook ProはUS配列です。メルカリで間違えて買いました。

僕の愛用しているキーボードはMac純正のA1314です。JIS配列です。

これらを両方使うと悲劇が起こります

キーボードの認識の設定をBluetooth接続する都度やらないといけないのです。

通常の切り替えの場合は、
1.システム環境設定をクリック
2.「キーボード」をクリック
3.キーボードタブをクリック
4.「キーボードの種類を選択…」をクリック
5. etc….

の作業が必要です。気が狂いそう。
ミーティングで席を離れるたびにやってられないですよね。

ショートカットを作った

touch barに入れてみた

上記のように、タッチバーで簡単にJIS配列とUS(=ansi)配列を切り替えられるボタンを作りました。
タッチバー搭載モデルでなくても、キーボートショートカットを設定する方法があるので、ご安心ください

実際の動作

下記でショートカット実行時の動きがわかるかと思います。
裏で設定値を書き換えるというよりは、自動でクリックやボタンの押下を実行させるアプローチを取りました。

実装

設定はやや複雑ですが、ここに記した手順に従えば大丈夫です。検証済みOSは、 OSX 10.14.5です。

AppleScript. なにそれ。

僕は今回の問題にぶち当たり、初めてAppleScriptを知ったのですが、OSXを操作することができる言語があるようでした。
詳しい内容は、こちらのqiitaの記事がオススメです。
https://qiita.com/seiya1121/items/656fd596570f9e8276bc

作ったコード

下記にそれぞれANSIとJISに切り替えるコードを記載します。
ショートカットを設定したい方は、スクリプトエディタを開いて、下記のコードをお好きな名前で両方とも保存してください。


JISにセットするコード

tell application "System Preferences"
	activate
	set current pane to pane "com.apple.preference.keyboard"
	delay 0.4
end tell

tell application "System Events"
	tell process "System Preferences"
		tell tab group 1 of window "キーボード"
			click button "キーボードの種類を変更…"
			delay 0.4 
		end tell
	end tell
	tell window "キーボード設定アシスタント" of process "KeyboardSetupAssistant"
		click button "続ける"
		tell application "System Events" to keystroke "z" using command down
		delay 0.4
		click button "スキップ" of sheet 1
		delay 0.4
		tell radio group 1 of group 1
			click radio button "JIS(日本語)"
		end tell
		click button "完了"
	end tell
end tell

ANSIにセットするコード

tell application "System Preferences"
	activate
	set current pane to pane "com.apple.preference.keyboard"
	delay 0.4
end tell

tell application "System Events"
	tell process "System Preferences"
		tell tab group 1 of window "キーボード"
			click button "キーボードの種類を変更…"
			delay 0.4
		end tell
	end tell
	tell window "キーボード設定アシスタント" of process "KeyboardSetupAssistant"
		click button "続ける"
		tell application "System Events" to keystroke "z" using command down
		delay 0.4
		click button "スキップ" of sheet 1
		delay 0.4
		tell radio group 1 of group 1
			click radio button "ANSI(米国その他)"
		end tell
		click button "完了"
	end tell
end tell

保存したら、上記の再生ボタンをクリックすると、アクセス許可が求められると思いますので、許可してください。
許可すると、先程お見せしたgifのような動きをすると思います。

上記がうまくいかないとき

・PCのスペックによっては、画面遷移の待ち時間(delay 0.4のところ)が短いと、処理が先に走ってしまう可能性があります。delayを大きな値にして調整してください

・タブの選択などの状態が残っていると、正常に動作しないことがあります。
一度手動で、ANSIやJISに設定して、再度スクリプトを動かしてください。

ショートカットで呼び出す

automaterに登録

スクリプトが正常に動作したら、automatorに登録してショートカットで呼び出せるようにしましょう。
下記の流れをそれぞれANSI, JISで2回行います。

Automatorを起動
新規を選択
クイックアクションを選択

ショートカットに登録

automatorに登録すると、ショートカットに割り当てることができるようになります。
環境設定 -> キーボード -> ショートカット -> サービスを選択し、最下部までスクロールしましょう
僕は、Shift + F1とShift + F2を割り当ててみました。(下の画像参考)

僕の場合は、たまにショートカットが動かないのでTouch Barにも設定しました。

Touch barにも設定する場合は、環境設定 -> 機能拡張 -> Touch Bar -> Control Stripをカスタマイズ…
を選択し、「クイックアクション」をタッチバーまでドラッグ&ドロップすると設定できます

Tech, ツール, 作ってみた

Posted by kyogom