jedをAndroidタブレットに導入する
jedをAndroidタブレットに入れて運用することにする。自分用に作成しているUTF-8対応Android版nanoと使い分けることに。
jedはemacsライクのテキストエディタ。emacsはLISPだけど、代わりにS-Langを使うらしい。
emacsライクだけあって、emacsキーバインド。nanoがemacsに近いキーバインドのためにあまり苦にならない。昔はemacsキーバインドって抵抗あったんだけどなぁ(それでもviと比べればかなりマシではある)。
インストールは Android端末にEmacs風テキストエディタjedを移植する を参照。すんなり導入成功。
以下変更点や嵌った点を。
Altキーが効かない
Android Terminal Emulator(以下ATE)の「AltキーでESCを送出する」にチェックをすることで、解決。
キーバインドの変更
多少nanoライクに。
キー | 設定内容 | 備考 |
---|---|---|
C-l | redraw | nanoと同じキーバインド |
C-u | yp_yank | nanoと同じキーバインド |
C-y | page_up | nanoと同じキーバインド |
C-z | undo | サスペンドはさせたくない | ` | self_insert_cmd | `はそのまま入力 |
M-a | smart_set_mark_cmd | nanoと同じキーバインド |
M-L | toggle_line_number_mode | 行番号の表示切り替え |
\e[3~ | delete_char_cmd | ATEでの[DEL] |
\e[1;5A | page_up | ATEの[CTRL]+[↑] |
\e[1;5B | page_down | ATEの[CTRL]+[↓] |
AndroidタブレットでPythonを使う。
昔ちょっとだけ書いたことあるけど、あんまり勉強していなかったんだよな。
Androidタブレットでコードを書こうとしたときに、まず試したのがさくらのVPSにsshでログインしてnanoで書くという方法。nanoなのは単に単純にキーバインドが慣れているからだが。実際に書いてみると悪くはないが、如何せんネットワーク前提なので移動中にセッションが切れると面倒なので、結局次の2つを使うことにした。
1つはQPython。Consoleがあるので確認がしやすい。エディタのキーバインドもクセがあまりない。一番のメリットはCtrl+Rで実行で簡単にできるのも良い。タブキーを使うとフォーカスが飛ぶので、Ctrl+]やCtrl+[を使う。nanoのインデント入力がAlt+Shift+]、Alt+Shift+[なので、あまり違和感はない。
もう1つは本家?であるSL4A+PY4A。コードの入力環境はお世辞にも良いとは言えないのでコーディングはDroid Editorを使うことにする。ちゃんとタブも効くし、キーボードショートカットを設定すればSL4Aを呼び出せるので、動作確認もしやすい。Ctrl+Shift+Rで実行するようにした。
PC側ではPyCharmを使うことにした。こっちもいろいろ調べてみよう。
自作ホームの今週の修正
ドロワー切り替え用のアイテムを追加出来るようにした。メニューやスワイプでも出来るようにしてはいたんだけど、一応出来るようにしておいたほうがいいかなと。
タブレットで使った場合に1つのアイコンが大きくなりすぎるので1画面の行数列数を変更できるように。あとは横画面のスクロールを微修正。
自作ホームをフルスクリーンアプリからの復帰に対応させる
自作ホームを横画面に対応した次は、フルスクリーンのアプリからの復帰の対応を行う。
フルスクリーンから復帰したときにViewの高さがステータスバーを含まない高さになっているようだ。自作ホームではViewの高さから各種アイテムの幅と高さを計算しているため、ステータスバーの分だけ描画がはみ出てしまうことになる。
解決策はDisplayの高さとViewの高さを比較して、差があった場合はステータスバーの高さとして記憶しておく。フルスクリーンの場合は同じ高さになるはずなので、同じ場合は記憶しておいた高さをViewの高さから引くことにする。
これでフルスクリーンから復帰したときに、表示が崩れることがなくなった。
自作ホームを本格的に横画面対応にする
当初縦画面のみの運用を考えていたので、横画面の対応は非常にいい加減だった。
横画面を使うときに問題になっていたのが、縦の狭さ。自作ホームでは縦5行×横4列+下に1行タスクを表示しているので都合縦6×横4となっている。縦画面の時はこれでよいのだが、横画面では縦が狭すぎる状態になってしまう。横も無駄に長い状態になってしまうし、不格好だ。
横画面用にアイコンの描写を変えたのだけども、それだけではやはり見た目が窮屈であるので、横画面の時は縦5行×4行+右に1列タスクという構成に変更することに。これで少しはまともになるはず。
一番トップレベルのレイアウトはLinearLayoutだったのだが、RelativeLayoutに書き換え。RelativeLayoutは融通が結構効くのでこういう時に対応がやりやすい。
タスク一覧もHorizontalScrollViewを使っていたのだけども、横画面の時はScrollViewで縦スクロールするように変更。
まだまだ修正しないといけない部分はあるのだけど、横画面でも縦画面並みには動くレベルにはなったかな。