2011年3月26日土曜日

Palm Pre Emulatorの日本語化

日本語化ソフトはミニーさんが公開しているのでそちらを利用させていただく。

Palm PDKにNovatermと同等のTerminalソフトが入っている。PDKのショートカットにはputty.vbsが入っているが、Windows7 64bitではどうもエラーが出てうまくいかない。やっている作業は単純に以下のバッチファイルを実行しているだけだった。

Palm Pre Emulatorを起動した上で、

C:\Program Files (x86)\Palm\PDK\bin\DeviceShell.bat

を実行する。すると、ルートログインされ、/var/home/rootディレクトリがホームディレクトリとなる。

あとは先のミニーさんのページに示されている、webOS 2.1.0 の場合の通りに実行する。

Localize210.shの中身は、wgetでLocalize210.zipをwgetして、ルートディレクトリで展開するスクリプト。
Localize210.zip自体はミニーさんのブログ(ローカライズ作業とは何だ)に書いてあるとおり、string.json(ボタンやメニューの表示に用いる)の英日の対応作業とビュー(htmlファイル)の日本語翻訳作業したファイル類を各アプリのフォルダ無いに存在する、resorcesディレクトリのjaフォルダ下に格納したもの。

ちなみにこの作業だけでは、日本語にはならない(ちょっとしばらく悩んだ)。

Mini’s Japanese Quick Setup Ⅱを実行する必要がある。locale_P102UEU.txtという、ロケールを/etc/palm/内のlocale.txtと置き換えている。おそらくver 1.xx系列では/usr/lib/luna/customizationにもlocale.txtがあったようだが、ver 2.xx系には無い模様。これでPreferenceのRegional Settingsのロケールで日本語が選択可能となる。

このシェルスクリプトはその後時刻表示の設定(日本語表記)と、日本語表示を変にするフォントをDisableしている。

まぁ、要するに普通のVer 2.1.0のデバイスと同じことをやれば良いだけ。ここまでやったら、Emulator側でも、ターミナル側でも良いので再起動。再起動した後に、PreferenceのRegional Settingsのロケールで日本語を選んで再起動すれば無事に日本語化が完了する。

とりあえずひらがな入力まで

AjaxIMEを参考にひらがな入力までやってみようと思う。

漢字変換もMecabを利用させてもらうのが簡単かな?
でもそうすると完全にmecab-skkserv for WebOSだな。

ある程度実装できたら、作者さんに連絡した方が良いのかもしれない。

...でも、今までに最後まで行ったことないんだよなぁ、自分(恥)。

2011年3月25日金曜日

AjaxIMEさん

JavaScriptとBookmarkletには感動した。

JavaScriptでローマ字→ひらがな変換までを実行して、ひらがなをサーバーサイドで変換している。

サーバーではMecabで形態素解析して漢字変換、その結果を戻すということみたい。

もじもかさんも変換はWebのAPIに出しているんだよなぁ...。

ひらがな漢字変換部分をなんとかPreの中に入れたいのですが。

どこでもJavaScriptで入力できるようにする

AjaxIMEより。JavaScriptが含まれていないページにJavaScriptを盛り込む関数ね。ちなみに、urlは盛り込みたいScriptの保存場所を記す。
function JSONRequest(url) {
  this.url_ = url;
  this.parent_ = document.getElementsByTagName('head').item(0);
  // headで示された行の内容
  this.obj_ = document.createElement('script');
  this.obj_.setAttribute('type', 'text/javascript');
  this.obj_.setAttribute('charset', 'utf-8');
  this.obj_.setAttribute('src', this.url_);
  // <script type="text/javascript" charset="utf-8" src="(引数であるURL)" >
  this.parent_.appendChild(this.obj_);
  //JavaScriptであるようにコードを追加。
}

JSONRequest.prototype.remove = function () {
  this.parent_.removeChild(this.obj_);
}
WebOSの日本語入力を考える。

  1. キーボードのスキャンはSDLライブラリに任せる。PDKでのサポートがあるから。
  2. 2.詳細な記述はUIMのソースを利用させて頂く
  3. 3.日本語への変換はanthyを利用する。
1,2が上手くいけば、3は別のシステムでも良いかと思っている。とりあえずはUIMのソースコードを見てみる。

あと、PDKのサンプルコードはVisual Studioでコンパイルできるのは分かったが、もうちょっとSDK側の理解が必要みたい。平行してSDKでのアプリケーション作成も進めてみる。

2011年3月24日木曜日

IMEを作るのなら、SDLを学ぶわけね。

まずはSDLでキーボードのキースキャンを学ぶわけですな。

 X-Window Programming
http://www-yano.is.tokushima-u.ac.jp/~mituhara/software_e/sdl.html

こちらのソースコードをベースに作業することになるのね。
あれ?意外に簡単にキーボードは行けそうだな。

キースキャンするPlug-inがアプリケーションをロードすればIMEとして行けるのかな?



#include <stdio.h>
#include <SDL/SDL.h> /* SDLを用いるために必要なヘッダファイルをインクルード */
/* SDLを用いるために,関数の引数を次のようにする*/
int main(int argc,char *argv[]){
 SDL_Event event; /* SDLによるイベントを検知するための構造体を宣言 */

 /* 無限ループ */
 while(SDL_PollEvent(&event)){
   /* イベントタイプ別に動作させる */
   switch (event.type) {
    /* キーボードが押された場合の処理 */
    case SDL_KEYDOWN:
     printf("Key Pressed\n");
     printf("--- The pressed key is %s.\n", SDL_GetKeyName(event.key.keysym.sym)); /* 押されたキーの名前を表示 */
     /* 押されたキーごとに処理(イベントのIDはevent.key.keysym.symに格納されている) */
     switch(event.key.keysym.sym){
      case SDLK_RETURN:
       printf("You pressed RETURN key.\n");
       break;
      case SDLK_ESCAPE:
       printf("You pressed ESCAPE key. This means EXIT.\n");
       exit(-1);
       break;
      default:
       break;
     }
     break;
    /* キーボードが離された場合の処理 */
    case SDL_KEYUP:
     printf("Key Released\n");
     break;
    /* 終了 (^C)が押されたときの処理 */
    case SDL_QUIT:
     SDL_Quit(); /* SDLの停止*/
     exit(-1);
     break;
   }
  }
 }
}

2011年3月22日火曜日

WebOS始めます

出来るかどうかはともかく、今日からWebOS始めます。

今日学んだこと。

WebOSの基本。
  1. アプリケーションはJavaScriptで作成される。
  2. ようするに、Google MapとかGmailみたいなAjaxとかそういったものを活用したものだ。
  3. Mojo Frameworkというライブラリで、JavaScriptベースながら、Local Storageにもアクセスできる。
でも、今やりたいことはIMEを作りたいこと。
これから調べてみます。