[ Mac ] 特定アプリの入力ソースを英数に限定する

# このアプリでは日本語入力したくないんだよ！
って思うことありません？僕はあります。

例えばUnity。スクリプト内にコメントとして日本語を入れる事はあるかもしれませんが、Unity本体を操作してる時日本語入力は全く使いません。ショートカットをいつでも使えるように英数(直接)入力のみで使用したいものです。

例えばMaya。PhotoshopやIllustratorはグラフィック素材として日本語を用いることは多いですが、Mayaを使っているときは日本語入力は全く使いません。海外製の2D/3Dアプリなどを使うときは多くの場合英数入力だけで事足りるんじゃないでしょうか？

というわけで今回は特定のアプリで英数入力のみ受け付けるようにするTipsです。

原理としては下記の通り。

- 対象アプリがアクティブに切り替わった際、入力ソースを自動的に英数にする
- 対象アプリがアクティブである最中は、常にかなキーを無効にする

以下対象アプリをUnityとした例で進めます。

※ 本記事はOS X10.9.5で書いてます。

## 入力ソースの自動切り替え
こちらを実現するために、有料[^1]のツール、AutoKeyboardをインストールします。

[AutoKeyboard を Mac App Store で](https://itunes.apple.com/jp/app/autokeyboard/id908553210?mt=12&ign-mpt=uo%3D4)

### AutoKeyboardを起動

起動するとメニューバーにアイコンが表示されるので、Settingsを実行します

![autokeyboard_run.jpg](https://qiita-image-store.s3.amazonaws.com/0/102012/52a64666-615f-6df4-4d45-5433d990b234.jpeg)

### 対象アプリの入力ソース設定
1. アプリケーション一覧から対象アプリを選択し、Change Input Sourceを実行します
2. 英数入力を選択します ※僕の環境ではAlphanumeric(Google）

![autokeyboard_setting01.jpg](https://qiita-image-store.s3.amazonaws.com/0/102012/0e572170-5a30-b42e-3d52-049619a9cb1a.jpeg)

![autokeyboard_setting02.jpg](https://qiita-image-store.s3.amazonaws.com/0/102012/d5ae21f3-6e90-1c2c-45bd-669c59df6221.jpeg)

ちなみにSelect Input Source(入力ソースの選択)で表示される項目は、システム環境設定 > キーボード > 入力ソースのものが表示されます。

![system_setting.jpg](https://qiita-image-store.s3.amazonaws.com/0/102012/c17d4773-2ae0-9944-6470-b958a0221baf.jpeg)

**これで対象アプリがアクティブに切り替わったタイミングで自動的に英数入力になりました！**

## 対象アプリ操作中、かなキーを無効に
上記設定でアプリがアクティブになった際は英数入力になったので、**操作中かなキーが無効になっていれば、ずっと英数入力のままで行けそうです。**

ここではキーリマッピングソフトのKarabiner[^2]を利用します。

[Karabiner - OS X用のソフトウェア](https://pqrs.org/osx/karabiner/index.html.ja)

### private.xmlの設定

Karabinerの詳しい設定方法は以前書いた[こちらの記事](http://qiita.com/kickbase/items/2e2806027b5d195eaf2a)を参考にしてください。
ここではかなキー無効に関係する部分のprivate.xmlのみ紹介します。



```private.xml
<?xml version="1.0"?>
<root>
	<appdef>
		<appname>UNITY</appname>
		<equal>com.unity3d.UnityEditor5.x</equal>
	</appdef>
	<item>
		<name>Private Mapping</name>
		<!-- Unity -->
		<item>
			<name>Custom Unity Invalid Kana</name>
			<identifier>private.invalid_kana_unity</identifier>
			<only>UNITY</only>
			<autogen>
				__KeyToKey__
				KeyCode::JIS_KANA,
				KeyCode::VK_NONE
			</autogen>
		</item>					        
	</item>
</root>

```

### 設定の反映

1. private.xmlを```/Users/[ユーザー名]/Library/Application Support/Karabiner/```以下に保存します
2. Reload XMLボタンをクリックして先ほどのprivate.xmlをリロードします
3. Change KeyタブにPrivate Mappingの項目ができるので、チェックを入れます

## まとめ

上記AutoKeyboardとKarabinerの設定を組み合わせることで、任意のアプリでも同様に英数入力のみで使用することができます。

ショートカットを押そうとしたら日本語が入力されてイライラする！という方におすすめなTipsでした。

## 備考
### App Language Chooser
最初AutoKeyboardではなく無料の開発ツール、App Language Chooserでチャレンジしていたのですが、本ツールは**アプリ起動時の入力ソースを指定する**もののようで、**アクティブになった際に切り替える**という機能はなさそうでしたので断念しました。

[App Language Chooser を Mac App Store で](https://itunes.apple.com/jp/app/app-language-chooser/id451732904?mt=12)

### 書類ごとに入力ソースを自動的に切り替える
AutoKeyboardの代替として、OS Xが提供している**「書類ごとに入力ソースを自動的に切り替える」**を使用する方法も補足しておきます。

この「書類ごとに入力ソースを自動的に切り替える」機能は、アプリを切り替えた際「そのアプリが直前に使っていた入力ソース」に自動的に切り替えてくれるようにするものです。


システム環境設定 > キーボード > 入力ソースに項目があります。

![system_source.jpg](https://qiita-image-store.s3.amazonaws.com/0/102012/842aa1fb-fcf9-e535-7dfe-65bd06bf2699.jpeg)

AutoKeyboardは**アプリがアクティブになったタイミングで強制的に英数入力にする**ことを可能[^3]にしてくれるので採用していますが、近い機能を無料で実現するのであれば「書類ごとに入力ソースを自動的に切り替える+Karabiner」でも良いでしょう。

[^1]: 2016/05/03現在240円
[^2]: 現行最新バージョンの10.18.0を使用
[^3]: 「書類ごとに入力ソースを自動的に切り替える」より踏み込んだ機能です