2011/09/10

ConnectBotのフォント変更

AndroidでSSHと言ったら、まず候補に上がるConnectBot
ハードウェアキーボード非搭載の端末では、
色々使い勝手の問題があるものの、Hacker's Keyboardを入れると実用性が増す。
更にもう一歩踏み込んでみた。

[やりたいこと]

  1. ターミナルのフォント変更
  2. ターミナルスクリーンサイズの固定
[ 結果(WVGA@AVD) ]
ConnectBot+Hacker's Keyboard オリジナル

ConnectBot+Hacker's Keyboard +TakaoGothic

1. ターミナルのフォント変更
大体の*nixでは、ターミナルでのフォントとプラットフォーム自体のフォントは別管理されている。
けれど、Androidでは色々な都合で好みのフォントが利用できないことが多い。
但し、アプリ限定であれば、多少イケル!という話。
幸いにして、ConnectBotはCanvasを主体にゴリゴリ実装されている?為、
簡単に変更できた。
まずは、ConnectBotソースを用意する。
ターミナルフォントには、Takaoフォントを利用しているので、
これを利用する。

次に、ソースをテキトーに展開して、
  • assetsに「TakaoGothic.ttf」、
  • toolsに「progaurd.jar」( README参照 )
を設置する。

最後に、「TerminalBridge.java」中、
defaultPaint.setTypeface(Typeface.MONOSPACE);

defaultPaint.setTypeface(Typeface.createFromAsset( manager.getAssets() , "TakaoGothic.ttf"));
に変更する。

後は、ビルドしてAVDや実機に投入する。

2.ターミナルスクリーンサイズの固定
これをやらないと、006sh実機ではスクリーン上にソフトウェアキーボードが乗ってしまって、
キーボードでターミナル末尾が見えない上になってしまっていた。
色々とソースを眺めたり、ググっている最中に「サイズ強制」メニューの存在を初めて知った・・・
画面スケールは、ボリューム操作キーで自動スケール、「サイズ強制」で指定画面サイズにスケールする仕様らしい。
但し、固定したサイズの永続化は実装されていないので、
セッション再接続時に再設定が必要な仕様となっている。
ここは実装したかったけれど、時間都合で諦めた。
とりあえず、当面は端末毎に最適値を覚えて接続時に手入力で我慢する。

以上で、少しはマシな環境が構築できた

0 件のコメント: