以前こちらで書いたように Android 9.0 Pie 以降は、外付けキーボード利用時に Control + SPACE のキー入力ができなくなっています。「キーボードレイアウトの切り替え」操作に割り当てられているためです。
ソフトウエアによっては Ctrl + SPACE を使いたい場合も多いので、無理やり使えるようにしてみました。
Ctrl + [SPACE] を乗っ取っているのは Android なので、Android 側で Ctrl を利用頻度の低いキーと交換してしまいます。例えば [F12] など。ただし入れ替えは UserLAnd + Linux (xmodmap) で識別可能なキーに限ります。本当は Caps が使えればよかったのですが Linux 側でうまく識別できませんでした。
もちろん Android 側では Ctrl キーが [F12] に置き換わってしまうため、ハードウエアキーボードで Ctrl を使った操作が困難になります。また xmodmap を使ったキー入れ替えは VNC/XSDL のみ有効で UserLAnd の SSH では使えません。
Step 1 : Android 側の入れ替え (kcm)
[Ctrl] ←→ [F12]
・Android 側の「キーボードレイアウト切り替え操作」 は [F12]+[SPACE] になります。
Step 2 : UserLAnd Linux 側の入れ替え (xmodmap)
[F12] ←→ [Ctrl]
・[F12] に偽装した本来の [Ctrl] キーを Ctrl として使えるようになります。
● (1) kcm キーレイアウト作成
Android 側でキー入れ替えを行うには kcm ファイルを作成し、新しいキーボードレイアウトを登録します。今回は下記 nakajit さんの code を利用させていただきました。
・GitHub: nakajit/InputDevices4J
InputDevices4J/res/raw/keyboard_layout_japanese_ime_cc_ek.kcm を下記のように書き換えました。(Caps ←→ Ctrl, ESC ←→ 半全 が不要な場合は他のファイルを使用してください)
↓ 該当部分を下記のように修正
● (2) 書き換えたプロジェクトを apk にビルドしてインストールします
● (3) 設定からレイアウトを選択
設定→システム→言語と入力→物理キーボード→キーボードレイアウトの設定
keyboard_layout_japanese_ime_cc_ek.kcm の場合は「日本語 106/109 (IME用, C-C, E-H/Z)」を選びます。
選択すると Caps キーが [F12] に置き換わるので注意。
● (4) xmodmap での設定
UserLAnd から VNC を起動して xmodmap ファイルを作ります。
↑この内容を仮に .Xmodmap-F12 で保存したら
を実行します。
これで Android 9.0 でも UserLAnd (X11) 上で [Ctrl]+[SPACE] が使えるようになりました。
同じように、[半角/全角] キーや [変換] キーなども [F11], [F10] とか割り当ててしまえばおそらく UserLAnd 上で使用できるようになると思われます。
関連エントリ
・Android Termux で日本語入力を行う / UserLAnd との併用
・Android 9.0 と Bluetooth Keyboard による日本語入力
・Android で動く Linux 環境 UserLAnd が XServer XSDL に対応
・Oculus Go を文章書き&開発マシンにする
・UserLAnd とブラウザ
・Android 上の開発環境と UserLAnd
・OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
ソフトウエアによっては Ctrl + SPACE を使いたい場合も多いので、無理やり使えるようにしてみました。
Ctrl + [SPACE] を乗っ取っているのは Android なので、Android 側で Ctrl を利用頻度の低いキーと交換してしまいます。例えば [F12] など。ただし入れ替えは UserLAnd + Linux (xmodmap) で識別可能なキーに限ります。本当は Caps が使えればよかったのですが Linux 側でうまく識別できませんでした。
もちろん Android 側では Ctrl キーが [F12] に置き換わってしまうため、ハードウエアキーボードで Ctrl を使った操作が困難になります。また xmodmap を使ったキー入れ替えは VNC/XSDL のみ有効で UserLAnd の SSH では使えません。
Step 1 : Android 側の入れ替え (kcm)
[Ctrl] ←→ [F12]
・Android 側の「キーボードレイアウト切り替え操作」 は [F12]+[SPACE] になります。
Step 2 : UserLAnd Linux 側の入れ替え (xmodmap)
[F12] ←→ [Ctrl]
・[F12] に偽装した本来の [Ctrl] キーを Ctrl として使えるようになります。
● (1) kcm キーレイアウト作成
Android 側でキー入れ替えを行うには kcm ファイルを作成し、新しいキーボードレイアウトを登録します。今回は下記 nakajit さんの code を利用させていただきました。
・GitHub: nakajit/InputDevices4J
InputDevices4J/res/raw/keyboard_layout_japanese_ime_cc_ek.kcm を下記のように書き換えました。(Caps ←→ Ctrl, ESC ←→ 半全 が不要な場合は他のファイルを使用してください)
~ map key 58 CTRL_LEFT # CAPS_LOCK ~
↓ 該当部分を下記のように修正
~ map key 58 F12 # CAPS_LOCK map key 88 CTRL_LEFT # F12 ~
● (2) 書き換えたプロジェクトを apk にビルドしてインストールします
● (3) 設定からレイアウトを選択
設定→システム→言語と入力→物理キーボード→キーボードレイアウトの設定
keyboard_layout_japanese_ime_cc_ek.kcm の場合は「日本語 106/109 (IME用, C-C, E-H/Z)」を選びます。
選択すると Caps キーが [F12] に置き換わるので注意。
● (4) xmodmap での設定
UserLAnd から VNC を起動して xmodmap ファイルを作ります。
remove Control = Control_L keysym Control_L = F12 keysym F12 = Control_L add Control = Control_L
↑この内容を仮に .Xmodmap-F12 で保存したら
$ xmodmap .Xmodmap-F12
を実行します。
これで Android 9.0 でも UserLAnd (X11) 上で [Ctrl]+[SPACE] が使えるようになりました。
同じように、[半角/全角] キーや [変換] キーなども [F11], [F10] とか割り当ててしまえばおそらく UserLAnd 上で使用できるようになると思われます。
関連エントリ
・Android Termux で日本語入力を行う / UserLAnd との併用
・Android 9.0 と Bluetooth Keyboard による日本語入力
・Android で動く Linux 環境 UserLAnd が XServer XSDL に対応
・Oculus Go を文章書き&開発マシンにする
・UserLAnd とブラウザ
・Android 上の開発環境と UserLAnd
・OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
2019/02/24
Android 9.0 と Bluetooth Keyboard による日本語入力
Termux や SSH Terminal では外付けの Bluetooth Keyboard を使うと快適なのですが、Android 上の日本語入力はなかなか思い通りにならないことがあります。OS Version や端末、キーボードソフトウエアによってキー操作や挙動が異なっています。また Terminal 上で On/Off できるかどうかもソフトによって差があります。
例えば Android 9.0 Pie では下記の操作が有効になっています。
(1) キーボード切り替え (Win + SPACE)
複数のキーボードソフトを入れているとそれらを順番に切り替えます。例えば Google 日本語入力 と ATOK を両方有効にしているなら [Win] + [SPACE] で交互に切り替わります。
(2) 日本語入力切り替え
日本語入力切り替え操作はキーボードソフトウエアによって異なります。
ハードウエアキーボード利用時の日本語入力切り替えキーまとめ
・[半全] = [半角/全角] キーで切り替えられるかどうか
・ALT+[半全] = [ALT] + [半角/全角] キーで切り替えられるかどうか
・Term = Termux/ConnectBot 上で日本語 On/Off できるかどうか (変換中文字表示なし)
ATOK は複数の操作ができますがどれも同じ機能です。ATOK は [変換] キーが使えます。FSKAREN / Wnn は英数時に直接入力と変換入力切り替えの使い分けができます。ただし FSKAREN と Wnn は操作が逆でした。
(3) 物理キーボードレイアウト切り替え (Ctrl + SPACE)
これは Android 9.0 から追加された操作で Android 8.1 以前にはありません。以降は Essential Phone、Android 9.0 での画面です。
Bluetooth または USB Keyboard をつないだ状態で設定を開きます。「システム」→「言語と入力」→「物理キーボード」を開くとキーボードの名前が表示されているので選択

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

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

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

おそらく 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 を使った日本語入力↓ができます。

ただし 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
例えば 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 をつないだ状態で設定を開きます。「システム」→「言語と入力」→「物理キーボード」を開くとキーボードの名前が表示されているので選択

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

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

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

おそらく 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 を使った日本語入力↓ができます。

ただし 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
2019/02/17
Snapdragon 835 と 845 のコンパイル時間の比較&浮動小数点演算能力
Snapdragon 835 (MSM8998) のデータを追加しました。コンパイル時間と VFP Benchmark の結果を載せています。ついでに Oculus Go でもコンパイル時間を調べてみました。(前回1) (前回2)
●コンパイル時間の比較 (Termux+clang)
・Time (秒) が小さい方が高速。
●浮動小数点演算能力ピーク値 (VFPBenchmark)
・GFLOPS が大きい方が高速。
演算ユニットの数が同じなので浮動小数点演算ピーク値はクロック数に比例した結果となっています。特に Total 値では 835 と 845 の差が少なくほぼ同じくらいの数値です。
それと比べるとコンパイル時間の方には若干差が付きました。CPU 自体も 2 命令 decode の Out-of-order から 3 命令 decode Out-of-order に増えていますので、Snapdragon 845 は big core のクロック差だけでなく IPC も向上しています。ベースとなった CPU core は ARM によると 20% 以上速いとのこと。UserLAnd + Termux を使っていても VNC 経由なのに十分満足できるもので、過去に使った Nexus 7 (2012) や Nexus 5 の Linux とは別物です。
Oculus Go で動く UserLAnd や Termux はどこでも大画面で作業場が作れるので魅力的なのですが、ビルドは残念ながら低速です。同じ Snapdragon 821 の Zenfone AR と比べても 2.5 倍時間がかかりました。使用したのは Oculus TV + Termux です。VR 空間の描画にパフォーマンスが取られているのだと思われます。VR 描画は両眼分必要で、また処理落ちは酔いにつながるため VR 描画が優先されます。
●スマートフォン以外のデバイスを含めたコンパイル時間の比較
他のデバイスとの比較表も更新しました。835 も十分速いです。ただし条件が一定ではないので参考程度にお願いします。特に Windows 10 PC は仮想環境を使っています。
・Time (秒) が小さい方が高速。
関連ページ
・VFP Benchmark Log 計測結果まとめ
関連エントリ
・Snapdragon 845 の浮動小数点演算速度
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
・ARM CPU 上の開発環境とコンパイル時間の比較
・AMD CPU Ryzen とコンパイル時間の比較 (2)
・AMD CPU Ryzen とコンパイル時間の比較
・ARM CPU の浮動小数点演算能力まとめ
・HTC 10 Snapdragon 820 Kyro の浮動小数点演算能力
・iPhone SE, Apple A9 の浮動小数点演算速度
・Raspberry Pi 3 の速度比較, Cortex-A53 の速度
・ARM Cortex-A53 の浮動小数点演算速度とコンパイル時間の比較
・2955U vs N3150/J1900/Athlon5350 (コンパイル時間の比較)
・iPod touch 6 の浮動小数点演算速度は Core 2 Duo ライン超え
・Raspberry Pi 2 で速くなったコンパイル時間の比較
・iPad Air 2 (Apple A8X) の浮動小数点演算能力
・BayTrail vs Kabini (Celeron J1900 vs Athlon 5350)
・コンパイル時間の比較 BayTrail
・Atom vs Core i7
●コンパイル時間の比較 (Termux+clang)
Smartphone | SoC | RAM | Thread | Time | 速度比 |
---|---|---|---|---|---|
Pixel 3 | Snapdragon 845 | 4GB | 8/8 | 32 | 4.2x |
Essential Phone | Snapdragon 835 | 4GB | 8/8 | 38 | 3.6x |
Galaxy S6 Edge | Exynos 7420 | 3GB | 8/8 | 77 | 1.8x |
ZenFone AR | Snapdragon 821 | 8GB | 4/4 | 111 | 1.2x |
Nexus 5X | Snapdragon 808 | 2GB | 6/6 | 135 | 1.0x |
Oculus Go | Snapdragon 821 | 3GB | 4/4 | 275 | 0.5x |
・Time (秒) が小さい方が高速。
●浮動小数点演算能力ピーク値 (VFPBenchmark)
Smartphone | SoC | RAM | Thread | big/L | GFLOPS |
---|---|---|---|---|---|
Pixel 3 | Snapdragon 845 | 4GB | 8/8 | 84/55 | 139.3 |
Essential Phone | Snapdragon 835 | 4GB | 8/8 | 75/59 | 134.5 |
Galaxy S6 Edge | Exynos 7420 | 3GB | 8/8 | 56/47 | 102.6 |
Nexus 5X | Snapdragon 808 | 2GB | 6/6 | 29/45 | 74.0 |
ZenFone AR | Snapdragon 821 | 8GB | 4/4 | 37/25 | 62.7 |
・GFLOPS が大きい方が高速。
演算ユニットの数が同じなので浮動小数点演算ピーク値はクロック数に比例した結果となっています。特に Total 値では 835 と 845 の差が少なくほぼ同じくらいの数値です。
それと比べるとコンパイル時間の方には若干差が付きました。CPU 自体も 2 命令 decode の Out-of-order から 3 命令 decode Out-of-order に増えていますので、Snapdragon 845 は big core のクロック差だけでなく IPC も向上しています。ベースとなった CPU core は ARM によると 20% 以上速いとのこと。UserLAnd + Termux を使っていても VNC 経由なのに十分満足できるもので、過去に使った Nexus 7 (2012) や Nexus 5 の Linux とは別物です。
Oculus Go で動く UserLAnd や Termux はどこでも大画面で作業場が作れるので魅力的なのですが、ビルドは残念ながら低速です。同じ Snapdragon 821 の Zenfone AR と比べても 2.5 倍時間がかかりました。使用したのは Oculus TV + Termux です。VR 空間の描画にパフォーマンスが取られているのだと思われます。VR 描画は両眼分必要で、また処理落ちは酔いにつながるため VR 描画が優先されます。
●スマートフォン以外のデバイスを含めたコンパイル時間の比較
他のデバイスとの比較表も更新しました。835 も十分速いです。ただし条件が一定ではないので参考程度にお願いします。特に Windows 10 PC は仮想環境を使っています。
Device | SoC/CPU | RAM | Thread | Time |
---|---|---|---|---|
Desktop W10+VMware | Ryzen 7 1800X | 16GB | 16/8 | 24 |
Desktop W10+WSL | Ryzen 7 1800X | 32GB | 16/8 | 26 |
Desktop W10+VMware | Core i7-6700K | 16GB | 8/4 | 29 |
Pixel 3 | Snapdragon 845 | 4GB | 8/8 | 32 |
Desktop W10+VMware | Core i7-4790K | 8GB | 8/4 | 35 |
Essential Phone | Snapdragon 835 | 4GB | 8/8 | 38 |
Desktop W10+VMware | Core i7-4770 | 8GB | 8/4 | 39 |
MacMini 2012 | Core i7-3615QM | 16GB | 8/4 | 43 |
Galaxy S6 Edge | Exynos 7420 | 3GB | 8/8 | 77 |
Desktop Linux | A10-7870K | 8GB | 4/2 | 82 |
Chromebook C101PA | RK3399 | 4GB | 6/6 | 87 |
MacBook Pro 2013 | Core i5-3210M | 8GB | 4/2 | 97 |
Desktop Linux | Celeron J1900 | 8GB | 4/4 | 108 |
ZenFone AR | Snapdragon 821 | 8GB | 4/4 | 111 |
Nexus 5X | Snapdragon 808 | 2GB | 6/6 | 135 |
Tegra Note 7 | Tegra 4 | 1GB | 4/4 | 148 |
Note W10+WSL | Atom x7-Z8700 | 4GB | 4/4 | 200 |
Chromebook C720 | Celeron 2955U | 4GB | 2/2 | 222 |
Nexus 9 | Tegra K1 | 2GB | 2/2 | 272 |
Nexus 7 2013 | Snapdragon S4 Pro | 2GB | 4/4 | 275 |
Oculus Go | Snapdragon 821 | 3GB | 4/4 | 275 |
MeMO Pad 7 ME176C | Atom Z3745 | 1GB | 4/4 | 312 |
・Time (秒) が小さい方が高速。
関連ページ
・VFP Benchmark Log 計測結果まとめ
関連エントリ
・Snapdragon 845 の浮動小数点演算速度
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
・ARM CPU 上の開発環境とコンパイル時間の比較
・AMD CPU Ryzen とコンパイル時間の比較 (2)
・AMD CPU Ryzen とコンパイル時間の比較
・ARM CPU の浮動小数点演算能力まとめ
・HTC 10 Snapdragon 820 Kyro の浮動小数点演算能力
・iPhone SE, Apple A9 の浮動小数点演算速度
・Raspberry Pi 3 の速度比較, Cortex-A53 の速度
・ARM Cortex-A53 の浮動小数点演算速度とコンパイル時間の比較
・2955U vs N3150/J1900/Athlon5350 (コンパイル時間の比較)
・iPod touch 6 の浮動小数点演算速度は Core 2 Duo ライン超え
・Raspberry Pi 2 で速くなったコンパイル時間の比較
・iPad Air 2 (Apple A8X) の浮動小数点演算能力
・BayTrail vs Kabini (Celeron J1900 vs Athlon 5350)
・コンパイル時間の比較 BayTrail
・Atom vs Core i7
root 無しで簡単に Linux を起動できる UserLAnd が XSDL (X11 Server) との連携に対応しました。SSH, VNC 同様メニューから選べるようになったので試してみました。スマートフォンは ZenFone AR (ZS571KL) Android 7.0 を使っています。
Google Play ストアから UserLAnd をインストール。起動すると Linux Distribution を選択できます。今回の手順は Debian を選択しています。

Distribution を選択すると共有ストレージへのパーミッションを求めてきますが、これは /sdcard をマウントするため。
ユーザー名とパスワードの設定をします。

新しく XSDL が選択できるようになっています。

XServer XSDL をインストールしていない場合はここで Play Store に飛びます。先にインストールしておいた方が良いかもしれません。Bluetooth Keyboard と Bluetooth Mouse も先にペアリングしておくことをお勧めします。
インストールしたらもう一度 UserLAnd から Debian を選択。XSDL が起動し、一瞬切り替わったあと↓この画面で止まったように見えますがそのまま待ってください。

暫く待つと起動が終わり、左上に小さいターミナルウィンドウが出ます。止まったように見えたのは背景画像が残ってしまっているため。

xterm のウィンドウが小さいのは Native 解像度 (上の例は 2560x1440) で起動しているからです。
● XSDL の解像度変更方法
解像度の変更は XSDL 起動時の下記の画面で、カウントダウン中に画面をタップします。

↓選択画面になるので 1280x720 あたりを選択。

↓次にフォントスケールの選択。潰れて読めないけど X0.7~X0.4 あたりを選択。いろいろ試して見やすいように調整してください。

↓ウィンドウが大きくなりました。

● lxde を使う方法
UserLAnd から起動すると twm + xterm の最小限で立ち上がります。Desktop を使うには Script の書き換えが必要でした。
Desktop lxde の install 手順
一旦 SSH でログインしておきます。(Distribution 名長押し→ App Stop → App Info)
下記のファイルを編集します。
/support/startXSDLServer.sh
元の内容
下記のように書き換える
sleep の部分は適当に調節してください。これで XSDL に切り替えて起動すると、しばらく待ったあとに青い画面から下記のような desktop 画面になります。起動は気長に待ってください。

日本語化等の情報はこちらを参照してください。
・Hyperでんち: UserLAnd
●いくつかの問題点
・XSDL が Android 9 で動かない。
・lxde 起動には script 書き換えが必要
・Android で物理キーボードのレイアウトに日本語配列を選択していると一部のキーが入力できない
Android 9 Pie では XSDL が restart を繰り返してしまい起動しないので、UserLAnd 上でも選択できないようになっています。
関連ページ
・Android の上の開発環境: UserLAnd
関連エントリ
・Oculus Go を文章書き&開発マシンにする
・UserLAnd とブラウザ
・Android 上の開発環境と UserLAnd
・OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
Google Play ストアから UserLAnd をインストール。起動すると Linux Distribution を選択できます。今回の手順は Debian を選択しています。

Distribution を選択すると共有ストレージへのパーミッションを求めてきますが、これは /sdcard をマウントするため。
ユーザー名とパスワードの設定をします。

新しく XSDL が選択できるようになっています。

XServer XSDL をインストールしていない場合はここで Play Store に飛びます。先にインストールしておいた方が良いかもしれません。Bluetooth Keyboard と Bluetooth Mouse も先にペアリングしておくことをお勧めします。
インストールしたらもう一度 UserLAnd から Debian を選択。XSDL が起動し、一瞬切り替わったあと↓この画面で止まったように見えますがそのまま待ってください。

暫く待つと起動が終わり、左上に小さいターミナルウィンドウが出ます。止まったように見えたのは背景画像が残ってしまっているため。

xterm のウィンドウが小さいのは Native 解像度 (上の例は 2560x1440) で起動しているからです。
● XSDL の解像度変更方法
解像度の変更は XSDL 起動時の下記の画面で、カウントダウン中に画面をタップします。

↓選択画面になるので 1280x720 あたりを選択。

↓次にフォントスケールの選択。潰れて読めないけど X0.7~X0.4 あたりを選択。いろいろ試して見やすいように調整してください。

↓ウィンドウが大きくなりました。

● lxde を使う方法
UserLAnd から起動すると twm + xterm の最小限で立ち上がります。Desktop を使うには Script の書き換えが必要でした。
Desktop lxde の install 手順
一旦 SSH でログインしておきます。(Distribution 名長押し→ App Stop → App Info)
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install lxde
$ sudo apt upgrade
$ sudo apt install lxde
下記のファイルを編集します。
/support/startXSDLServer.sh
元の内容
#! /bin/bash
if [[ -z "${DISPLAY}" ]]; then
DISPLAY=:4721
fi
if [[ -z "${PULSE_SERVER}" ]]; then
PULSE_SERVER=localhost:4721
fi
if [[ -z "${INITIAL_USERNAME}" ]]; then
INITIAL_USERNAME="user"
fi
until env DISPLAY=:4721 ; do sleep 1 ; done
nohup twm & echo $! > /tmp/xsdl.pidfile
while [ ! -f /tmp/xsdl.pidfile ]
do
sleep 1
done
su $INITIAL_USERNAME -c 'xterm -geometry 80x24+0+0 -e /bin/bash --login &'
if [[ -z "${DISPLAY}" ]]; then
DISPLAY=:4721
fi
if [[ -z "${PULSE_SERVER}" ]]; then
PULSE_SERVER=localhost:4721
fi
if [[ -z "${INITIAL_USERNAME}" ]]; then
INITIAL_USERNAME="user"
fi
until env DISPLAY=:4721 ; do sleep 1 ; done
nohup twm & echo $! > /tmp/xsdl.pidfile
while [ ! -f /tmp/xsdl.pidfile ]
do
sleep 1
done
su $INITIAL_USERNAME -c 'xterm -geometry 80x24+0+0 -e /bin/bash --login &'
下記のように書き換える
#! /bin/bash
if [[ -z "${DISPLAY}" ]]; then
DISPLAY=:4721
fi
if [[ -z "${PULSE_SERVER}" ]]; then
PULSE_SERVER=localhost:4721
fi
if [[ -z "${INITIAL_USERNAME}" ]]; then
INITIAL_USERNAME="user"
fi
until env DISPLAY=:4721 ; do sleep 1 ; done
# ここから下を改変
sleep 20
su $INITIAL_USERNAME -c 'startlxde &'
su $INITIAL_USERNAME -c 'xterm -geometry 80x24+0+0 -e /bin/bash --login &'
if [[ -z "${DISPLAY}" ]]; then
DISPLAY=:4721
fi
if [[ -z "${PULSE_SERVER}" ]]; then
PULSE_SERVER=localhost:4721
fi
if [[ -z "${INITIAL_USERNAME}" ]]; then
INITIAL_USERNAME="user"
fi
until env DISPLAY=:4721 ; do sleep 1 ; done
# ここから下を改変
sleep 20
su $INITIAL_USERNAME -c 'startlxde &'
su $INITIAL_USERNAME -c 'xterm -geometry 80x24+0+0 -e /bin/bash --login &'
sleep の部分は適当に調節してください。これで XSDL に切り替えて起動すると、しばらく待ったあとに青い画面から下記のような desktop 画面になります。起動は気長に待ってください。

日本語化等の情報はこちらを参照してください。
・Hyperでんち: UserLAnd
●いくつかの問題点
・XSDL が Android 9 で動かない。
・lxde 起動には script 書き換えが必要
・Android で物理キーボードのレイアウトに日本語配列を選択していると一部のキーが入力できない
Android 9 Pie では XSDL が restart を繰り返してしまい起動しないので、UserLAnd 上でも選択できないようになっています。
関連ページ
・Android の上の開発環境: UserLAnd
関連エントリ
・Oculus Go を文章書き&開発マシンにする
・UserLAnd とブラウザ
・Android 上の開発環境と UserLAnd
・OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd