TaskerとAutoToolsで仮想キーボード切り替え

# TaskerとAutoToolsで仮想キーボード切り替え

## 0. 前書き
[0. 前書き](#0-前書き)

前記事の[Android版のGNU Emacsについて](https://qiita.com/ayatakesi/items/54e5bcd5f76d96163040)で少し触れた、Androidでアプリケーション毎に仮想キーボードを切り替える方法について説明します。参考にしたのは[How to Automatically Change your Keyboard on a Per-App Basis](https://www.xda-developers.com/how-to-automatically-change-your-keyboard-on-a-per-app-basis/)という記事です。

## 1. 事前準備
キーボード切り替えにはTaskerとAutoToolsというアプリケーションを使うことにします。それらをインストールしたり切り替えに必要な権限を付与したりします。

### 1.1 Androidデバイス
まずは実際に切り替えを行いたい実機であるスマホ、すなわちAndroidデバイス側の順日です。

#### 1.1.1 Taskerのインストール
[Google PlayのTasker](https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&hl=ja&gl=US&referrer=utm_source%3Dgoogle%26utm_medium%3Dorganic%26utm_term%3Dandroid+tasker&pcampaignid=APPU_1_sr-FZcLeL_qU2roP6fyDqAw)をインストールします。お値段は$3.49。

#### 1.1.2 AutoToolsのインストール
`./configure && make && make install`によるパッケージのビルドとインストールを実現するために、[GNUにもautotoolsと総称されるツール群](https://ja.m.wikipedia.org/wiki/Autotools)が存在しますが、今回インストールしたいのは[Google PlayのAutoTools](https://play.google.com/store/apps/details?id=com.joaomgcd.autotools&hl=ja&gl=US&referrer=utm_source%3Dgoogle%26utm_medium%3Dorganic%26utm_term%3Dandroid+autotools+%E6%9C%89%E6%96%99%E7%89%88&pcampaignid=APPU_1_08GFZfuWFM_m2roPyIaH6Ac)という別物です。こちらは無料版をインストールしてからアプリ内購入($3くらいだったか?)して完全版をインストールしました。

#### 1.1.3 開発者向けオプション
機種ごとに若干異なると思われますが設定->端末情報->ソフトウェア情報のビルド番号、あるいは設定->タブレット情報のビルド番号、あるいはカーネルバージョンを激しくタップしてください(グラディウスⅢのアーケードモード突入時みたいな感じ)。設定に開発者オプションというページが追加される筈です。そのページでUSBデバッグをオンにしてください。

:::note info
Android 11からはUSBに加えてWifi経由のデバッグが可能らしいので、PCを使わずAndroidのTermuxにandroid-toolsをインストール、ワイヤレスデバッグ経由で自デバイス(127.0.0.1:5555とか)に接続してadbコマンド叩けるかもしれないです。わたしのスマホはAndroid 8.0.0なので最初だけUSBで繋いで[Is there a way to enable wireless debugging on an Android 8.0 device?](https://stackoverflow.com/questions/68908299/is-there-a-way-to-enable-wireless-debugging-on-an-android-8-0-device)の記事を参考にワイヤレス接続したりしてますが、特に必要ではありません。
:::

### 1.2 PCホスト
AndroidにインストールしたTaskerに権限を付与するためには、そのAndroidデバイスに接続してadbコマンドで権限を付与する必要があるのでadbコマンドをインストールします。

#### 1.2.1 adbのインストール
Android Studioをインストールすれば一緒にインストールされるようですが、adbコマンドさえあれば良いので、手元の環境に合わせてインストールしてください(わたし?場合は`sudo apt-get install adb`でした)。

### 1.3 PCホストとAndroidデバイスを接続
USBでデバイスとホストを接続します。デバイスにアクセスを許可するか同意を求めるダイアログが表示されるので許可してください。許可した後にホスト側で`adb devices`というコマンドを叩くと以下のように表示される筈です。

```shell
~$ adb devices
List of devices attached
e82ee5ae        device
```
#### 1.3.1 adbでAutoToolsに権限付与
ホスト側で以下のコマンドを叩きます。これで準備は終了。

```shell
~$ adb shell pm grant com.joaomgcd.autotools android.permission.WRITE_SECURE_SETTINGS
```

## 2. タスク作成
TaskerとAutoToolsどちらも起動すると色々権限を許可するようポップアップ表示歯てくると思います。わたしは面倒なので片端から権限を与えましたがバッテリー最適化の無効、システム設定変更可能の権限を付与すれば大丈夫でしょう。

### 2.1 Taskの作成
Taskerを起動して色々なTipsやリマインダーを抜けるとプロファイル画面が表示されるので右下にある+印をタップ、TaskerNetの既存のプロファイルを入手するか、あるいは自分で作成するかというリマインダーが表示されるのでリマインダーを閉じるかCreateをタップします。すると以下のようなポップアップが表示されるのでアプリをタップしてください。

![Screenshot_20231223-000948.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134669/81b6f83e-3d76-608a-2f03-245730a27490.png)

すると以下のようにデバイスにインストール済みのアプリの一覧が表示されるのでプロファイルを作成したいアプリ、今回の場合はEmacsを選択してから前画面に戻ってください(戻るだけです)。

![Screenshot_20231223-001026.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134669/6021eb7d-35e1-5db2-2bdf-fd917475cf9b.png)

プロファイル画面にタスクが空のEmacs用プロファイルとともに新しいタスクというポップアップが表示されている筈です。それをタップしてタスクを追加します。

![Screenshot_20231223-001058.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134669/4f1197bd-5aa2-ee2b-918f-ca13d0463ca9.png)

オプションを入力するらしい?ポップアップが表示されますが、何も入力せずに右のレ点をタップします。

![Screenshot_20231223-001125.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134669/1ad0fdc5-0438-e4b2-5b3d-40cb6dce5e85.png)

タスク編集という画面が表示されるので+印をタップしてください。するとアクションのカテゴリーを選択するためのポップアップが表示されます。

![Screenshot_20231223-001126.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134669/6d1d9892-6fce-730f-5912-0da2fed1443d.png)

カテゴリーからプラグインを選択すると、システムで利用可能なプラグインがポップアップされます。AutoToolsと課金版にアップグレードしたときに追加されたっぽいAutoAppsとAutoInput、わたしはTermuxにTermux:Taskerというプラグインもインストールしてるのでそれも追加されています。

![Screenshot_20231223-001245.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134669/2eff402d-d88e-92ca-d912-ce1a32e4f41d.png)

:::note info
Termux:Taskerというプラグイン、使いどころがいまいち判らず関心もなかったんですが、名前のとおりTaskerのプラグインとしてTermuxのコマンド(や自身のTermuxプログラムとかスクリプト)を実行できるのが嬉しいプラグインだったのですねー。(たしか)Termux-APIでインストールされる`$PREFIX/usr/bin/termux-*`にはスマホのHWを制御できるコマンドが沢山あるので、こりゃ面白そうでござる。
:::

他のプラグインも気になりますがとりあえずAutoToolsを選択、するとアクションを選択するためのポップアップが表示されるのでSecure Settingsを選択してください。「絶対動くとは限らんで〜」みたいな警告は構わず閉じてしまいましょう。

![Screenshot_20231223-001305.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134669/ea99ffea-0414-db14-2c3c-7e42dbef404a.png)

![Screenshot_20231223-001345.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134669/ece4d64d-0d99-2206-fe28-20d3853c30fc.png)

するとアクション編集画面が表示されます。右上にある鉛筆アイコンをタップしてください。

![Screenshot_20231223-111653.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134669/d0e5d82c-8118-a3aa-ed76-381beff5f948.png)

今度はフィールド入力画面が表示されるのでServicesをタップしましょう。
![Screenshot_20231223-111706.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134669/24c59401-6466-8577-bf67-61bd6c1641e2.png)

サービス入力画面が表示されたら一番上にあるInput Methodをタップ。
![Screenshot_20231223-111715.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134669/022c5d76-8483-2feb-344a-0bc1e95e8932.png)

IM選択
![Screenshot_20231223-001437.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134669/8185bef0-7051-81e5-ab69-624f6bda327a.png)

何か同意を求める画面がでたら許可しましょう。
![Screenshot_20231223-001550.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134669/8651778d-1c89-ebed-72f8-2b9fbc383166.png)

Taskerの一番前の画面まで戻るとEmacsアプリケーション遷移時のアクションが登録されている筈です。緑色矢印右側にあるアクションをロングタップするとオプションがいくつか表示されるので終了タスクを追加を選択してください。

![Screenshot_20231223-001705.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134669/fc44ceda-2d58-e5ab-6156-5c6466ff2ee2.png)

後はこれまでの手順を繰り返してEmacsから他アプリに遷移する際にInput Methodにデフォルトのキーボードを指定すればOKです。使った感じでは瞬時に切り替わるのではなく、2秒ほど切り替えにかかります。

おしまい