Android 9.0 と Bluetooth Keyboard による日本語入力

Termux や SSH Terminal では外付けの Bluetooth Keyboard を使うと快適なのですが、Android 上の日本語入力はなかなか思い通りにならないことがあります。OS Version や端末、キーボードソフトウエアによってキー操作や挙動が異なっています。また Terminal 上で On/Off できるかどうかもソフトによって差があります。

例えば Android 9.0 Pie では下記の操作が有効になっています。

(1) [Win] + [SPACE] キーボードの切り替え (Gboard←→ATOK 等)
(2) [SHIFT] + [SPACE] 他 Gboard/Google 日本語入力の 日本語 On/Off
(3) [Ctrl] + [SPACE] 物理キーボードレイアウトの切り替え (QWERTY←→Dvorak等)

(1) キーボード切り替え (Win + SPACE)

複数のキーボードソフトを入れているとそれらを順番に切り替えます。例えば Google 日本語入力 と ATOK を両方有効にしているなら [Win] + [SPACE] で交互に切り替わります。

(2) 日本語入力切り替え

日本語入力切り替え操作はキーボードソフトウエアによって異なります。

ハードウエアキーボード利用時の日本語入力切り替えキーまとめ

Keyboard Software [半全]以外の On/Off キー [半全] ALT+[半全] Term
Gboard (+日本語) [SHIFT] + [SPACE] Y
Google 日本語入力 [SHIFT] + [SPACE] Y
ATOK for Android [ALT] + [SPACE] / [変換] Y Y Y
FSKAREN for Android 無し Y Y
Wnn Keyboard Lab [SHIFT] + [SPACE] Y Y

[半全] = [半角/全角] キーで切り替えられるかどうか
ALT+[半全] = [ALT] + [半角/全角] キーで切り替えられるかどうか
Term = Termux/ConnectBot 上で日本語 On/Off できるかどうか (変換中文字表示なし)

ATOK は複数の操作ができますがどれも同じ機能です。ATOK は [変換] キーが使えます。FSKAREN / Wnn は英数時に直接入力と変換入力切り替えの使い分けができます。ただし FSKAREN と Wnn は操作が逆でした。

Keyboard Software On/Off (直接入力) 英数/日本語 (変換入力)
Gboard (+日本語) [SHIFT]+[SPACE] / [半全]
Google 日本語入力 [SHIFT]+[SPACE] / [半全]
ATOK for Android [ALT]+[SPACE] / [半全] / [ALT]+[半全] / [変換]
FSKAREN for Android [ALT]+[半全] [半全]
Wnn Keyboard Lab [半全] [SHIFT]+[SPACE] / [ALT]+[半全]

(3) 物理キーボードレイアウト切り替え (Ctrl + SPACE)

これは Android 9.0 から追加された操作で Android 8.1 以前にはありません。以降は Essential Phone、Android 9.0 での画面です。

Bluetooth または USB Keyboard をつないだ状態で設定を開きます。「システム」→「言語と入力」→「物理キーボード」を開くとキーボードの名前が表示されているので選択

AndroidKeyboard

「キーボードレイアウトの選択」画面がでます。

AndroidKeyboard

右下の「キーボードレイアウトの選択」を選ぶと複数のレイアウトを選択できます。

AndroidKeyboard

複数のレイアウトにチェックをれて戻ると下記の通り。この画面でようやく Ctrl+スペース の操作が割り当てられていることがわかります。

AndroidKeyboard

おそらく QWERTY と Dvorak のように、キーボードレイアウト自体をいつでも切り替えられるように設けられた機能だと思われます。

ただし弊害があります。この機能が原因で Android 9.0 では Terminal アプリケーションで [Ctrl] + [SPACE] の操作ができなくなっているのだと思われます。例えば Termux や SSH Terminal 、UserLAnd や VNC 上で [Ctrl] + [SPACE] を使おうとしても、入力できずにレイアウトが切り替わってしまいます。

[Ctrl]+[SPACE] で日本語切り替えしたい場合や、Emacs のマーク操作で困ります。Android 8.1 以前は問題なく [Ctrl]+[SPACE] が使えました。

● Termux で日本語入力を行う

Termux 上で Android 上の日本語変換を使う場合は、切り替え操作が思うようにできないだけでなく変換途中の文字列が表示されない問題もあります。なので、いっそ Android 側の日本語入力機能を諦めてしまうのも一つの手です。

UserLAnd のおかげで Android 内に簡単に Linux Distribution をインストールできるようになりました。つまり UserLAnd を GUI&日本語入力対応の SSH Terminal として利用します。

Termux 上で予め sshd を立ち上げてから UserLAnd 上で ssh localhost -p 8022 で接続します。これで Termux 上で uim-mozc や fcitx-mozc を使った日本語入力↓ができます。

UserLAnd_Termux

ただし Android 9.0 の場合は Ctrl+SPACE が使えない問題は相変わらず残ります。

UserLAnd 使うなら、そもそも Termux は必要ないのではないかと思うかもしれませんが、詳しくは次回に続きます。
続き: Android Termux で日本語入力を行う / UserLAnd との併用

関連ページ
Android の上の開発環境: UserLAnd
Android の上の開発環境: Termux

関連エントリ
Android で動く Linux 環境 UserLAnd が XServer XSDL に対応
Oculus Go を文章書き&開発マシンにする
UserLAnd とブラウザ
Android 上の開発環境と UserLAnd
OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd