もじもか extentionモードについて
extentionモードとは
Symキーを押すことで表示される記号入力パネル用のシステムファイルを書き換えることで、「
もじもか for Palm webOS コンセプトバージョン
」による日本語入力を、他のアプリケーション上でも実行できるようにするモードです。
※システムファイルを書き換える性質上、デバイスやPalmEmulatorの環境が破壊される可能性があります。また、悪意のあるアプリケーション上で日本語入力を行った場合、変換リクエストなどを他のサーバーへ送信されるなど、通常のモードに比べてさらに第三者に変換内容を知られる可能性が上がります。そのことを十分に理解いただいた上でextentionモードをご利用ください。
※
extentionモードはPalmEmulator上でしか稼動実績がありません。デバイス上で稼動するかは不明です
【2009.11.23追記 実際のデバイス上でも動いたとのご連絡いただきました】。また、PalmEmulatorについてもSDK v.1.3.5.368の動作に合わせて調整したので、以前のバージョンでは動作しないかもしれません。
ダウンロード
extentionモードでも通常の「もじもか」と同じファイルを使います。「
もじもか for Palm webOS コンセプトバージョン
」のダウンロード項目からパッケージをダウンロードしてください。
extentionモード用ファイルのインストール
※ここではPalmEmulator上でのインストール方法を書いてあります。デバイスへのインストールやアンインストール方法については不明です(ファイルの編集やコピーができれば同じことが出来そうな気はしますが、よくわかりません)
まず最初に 「もじもか」をインストール後、通常のアプリケーション(以下、アプリモードと記述します)として動作するこを確認してください。
必須の作業ではありませんが、仮想マシンのスナップショットを作成するなど、OSが起動できなくなった場合に備えることをお奨めします。
PalmEmulator内の以下のファイルをバックアップしておいてください。
/usr/palm/frameworks/mojo/builtins/palmInitFramework347.js
/usr/palm/frameworks/mojo/submissions/347/javascripts/widget_charselector.js
※上記ファイル名の347はOSのバージョンなどにより異なります(今回はSDK v.1.4.5.465での値です)。該当するファイルが存在しない場合は、異なる値で保存されているファイルを探してみてください。
PalmEmulatorへputtyなどでloginしてください(login方法は「
Emulator – webOSdev – Palm
」などを参照)。
loignしたらviエディタなどを使い、/usr/palm/frameworks/mojo/builtins/palmInitFramework347.js内のMojo.Widget.CharSelectorで始まる行を、以下のように変更します(変更箇所は2つです)。
Mojo.Widget.CharSelector=Class.create({
を
Mojo.Widget.CharSelectorOrg=Class.create({
Mojo.Widget.CharSelector.prototype.hasKeyAlternates=function(keyCode){
を
Mojo.Widget.CharSelectorOrg.prototype.hasKeyAlternates=function(keyCode){
(どちらもMojo.Widget.CharSelectorの後ろへOrgを追加しています)
変更が完了したらPalmEmulatorを再起動してください。
再起動が完了したら再度PalmEmulatorへloginしてください。
loginできたら、「もじもか」がインストールされているフォルダに保存されているextention/mojimoca/の内容を、/usr/palm/frameworks/mojimoca/へコピーしてください。
※通常は以下の2コマンドを実行することで完了します。
SDK v.1.3.5.368より後のバージョンに付属のPalmEmulatro(Palm webOSのバージョンが1.3.5より後)の場合
mkdir /usr/palm/frameworks/mojimoca
cp -r /media/cryptofs/apps/usr/palm/applications/com.fc2.blog23.zawakei.app.mojimoca/extention/mojimoca/* /usr/palm/frameworks/mojimoca/
SDK v.1.3.1.314より前のバージョンに付属のPalmEmulator(Palm webOSのバージョンが1.3.1より前)の場合
mkdir /usr/palm/frameworks/mojimoca
cp -r /var/usr/palm/applications/com.fc2.blog23.zawakei.app.mojimoca/extention/mojimoca/* /usr/palm/frameworks/mojimoca/
続いて、「もじもか」がインストールされているフォルダに保存されているextention/widget_charselector.jsを、Mojoフレームワークのjavascriptsフォルダへコピーします。
※以下コマンドの実行の実行例です
SDK v.1.4.0.420に付属PalmEmulatroの場合(異なるバージョンのPalmEmulatorを使う場合は、ファイルパスの「330」の部分を書き換えてください)
cp /media/cryptofs/apps/usr/palm/applications/com.fc2.blog23.zawakei.app.mojimoca/extention/widget_charselector.js /usr/palm/frameworks/mojo/submissions/347/javascripts/widget_charselector.js
SDK v.1.3.1.314に付属のPalmEmulatorの場合(これよりも前のバージョンのPalmEmulatorを使う場合は、ファイルパスの「200.47」の部分を書き換えてください)
cp /var/usr/palm/applications/com.fc2.blog23.zawakei.app.mojimoca/extention/widget_charselector.js /usr/palm/frameworks/mojo/submissions/200.47/javascripts/widget_charselector.js
再度PalmEmulatorを再起動してください。
これで作業は完了です。
※以下は、SDK v.1.3.1.314に付属のPalmEmulatorに対して、手順5以降の作業を実際に行っている動画です、こちらも合わせて参照してみてください。
extentionモード用ファイルのアップデート
「もじもか」本体をアップデート後、通常のアプリケーションとして動作するこを確認してください。その後、上記「extentionモード用ファイルのインストール」項目を実行してください。なお、手順3のバックアップについては、前回インストール時に編集したファイルで上書きしてしまわないように注意してください。また、以下の2手順は、それぞれ状況にあわせて飛ばしてください。
手順5のファイルの編集については、既に編集が完了している場合は飛ばしてください(※OSの更新などを合わせて行っている場合、該当ファイルの変更箇所が編集前の状態に戻っている可能性もあります。手順を飛ばす場合でも、念のため、該当ファイルをエディタなどで開いて変更されているか確認することをお奨めします)。
手順8のフォルダを作成するコマンド(mkdir /usr/palm/frameworks/mojimoca)が「mkdir: cannot create directory '/usr/palm/frameworks/mojimoca': File exists」になった場合は既に該当フォルダが存在するので、cpコマンドのみ実行してください。
extentionモード用の設定
extentionモード用ファイルをインストールすると、「もじもか」のアプリ設定画面の下の方に「システム設定への書きこみ」ボタンが追加されます。このボタンを押すことで、その時点でのアプリモード用の設定をextentionモード用として書き出すことができます。ただし、1度この処理を実行すると、「もじもか」をアンインストールしてもシステム用の設定領域に削除できないキーが1つ残ります。そのようなキーを作成したくない場合は、このボタンを押さないでください(システムへ設定を書き出さなくても、デフォルト設定の状態でextentionモードを使うことはできます)。
なお、アプリモード用の設定をextentionモードの設定として書き出したとき、幾つかの項目が以下のように変更されます。
動作モードで「ダイレクト」を選択していても、「Yahoo!Pipes経由」を選択した状態になります。
「Yahoo!Pipes経由」および「Yahoo!Pipes->YQL経由」のPIPE IDを変更していても、デフォルトのPIPE IDを利用します。
extentionモード用ファイルのアンインストール
※extentionモード用ファイルのアンインストールは、「もじもか」アプリをアンインストールする前に実行してください。また、
簡易定型文用
のalternatetexts_table.jsonおよび
アプリ毎の設定用
としてappcustomsettings_table.jsonを作成している場合は、アンインストール作業を行うとどちらのファイルも削除されるので、必要であれば事前に他の安全な場所へバックアップしておいてください。
インストール時にバックアップしておいたpalmInitFramework347.jsを元の場所へ戻してください。
PalmEmulatorを再起動してください。
インストール時にバックアップしておいたwidget_charselector.jsを元の場所へ戻してください。
PalmEmulatorを再起動してPalmEmulatorへloginしてください。
loginしたら、/usr/palm/frameworks/mojimoca/を削除してください。
※通常は以下のコマンドを実行することで削除できます。
rm -r /usr/palm/frameworks/mojimoca
exntentionモード用の設定を書き出している場合は、「もじもか」設定画面から「システム設定のクリア」ボタンを押してください。
これで作業は完了です。「もじもか」アプリを削除する場合は、この後にLauncherの削除メニューから削除などを行ってください。
基本的な使い方
複数行テキストが入力できる場所(Memosの編集画面など)でSymキーを押すと、画面右下に「あ」アイコンが表示されます。この状態では、ひらがなをローマ字入力でき、Spaceキーで変換候補を表示しEnterキーで確定することができす。Symキーを再度押すことで「あ」アイコンが消えて通常の入力状態に戻ります。また、テキストが入力できる場所の種類によっては、Symキーを押したときに「あ」アイコンが表示されるかわりに、「もじもか」の編集画面が表示される場合があります。この編集画面で入力を行って、戻るジェスチャーなどで前の画面に戻ると、元の場所へ編集画面で入力していた文章が貼り付けられます。
なお、主な入力操作については、以下の動画も合わせて参照してみてください。
※以降、このドキュメント内では、「あ」アイコンのみが表示される状態を「ポップアップ入力」、編集画面が表示される状態を「cross入力」と記述することします。
※Symキーを押したときに、どちらの状態になるかはいくつかの条件から「もじもか」の内部で判定されますが、後述の
アプリ毎の設定ファイル
を作成することで、アプリ単位でなら制御することができます。
基本的な制限事項(相性のよくない入力操作)
ベースとなる「もじもか」アプリの制限事項はextentionモードでも同様に存在ますが、その他にも「もじもか」の入力処理と相性のよくない入力操作がわりとあります。主な傾向としては、「Enterキーでなんらかの処理が実行されるフールドへの入力」「入力に対してリアルタイムで反応するフィールドへの入力」「1行しかない入力フィールドへの入力」などは、変換処理から確定した文章が消えたり、予想外の処理が実行されることがあります。とくにMessagingのような、Enterキーの操作によりサーバーなどへテキストを送信するようなコミュニケーション系のアプリの場合は、enterキーによる確定操作を行っただけで、意図せずにテキストが送信されることになるので注意が必要です。
なお、意図せずにテキストが送信されてしまう具体的な状況については、以下の動画もあわせて参照してみてください。
※TO:フィールドに入力していなので、実際には送信されずエラーが表示されます。なお、この動画内ではタップで確定操作を行うことで回避していますが、 現在公開している「もじもか」ではMessagingに対しては個別に設定を変更しているため、Cross入力モードで入力することができます。
また、標準アプリで発生する主なケースについては以下の動画を、テスト中に判明した注意点などは動画内で取り上げたものも含め「
注意点など
」に列挙してありますので、それぞれ参照してみてください。
※こちらの動画のケースでも、最初の2つはタップで確定操作を行うことで問題を回避しています。3つ目については、cross入力画面からクリップボードを利用して回避しています。ただ、4つ目については、とりあえず日本語入力をオフにした後に、普通に文字を入力することで回避していますが、長めの文章を入力する場合は、extentionモードは使わずに、別の場所(Memosや「もじもか」アプリモード)で入力したものをコピーする方がよいかもしれません。
タップ操作による確定
extentionモードのポップアップ入力中でも、アプリモードと同じように画面をタップすることで確定操作を行うことができます。また、アプリモードとは一部レイアウトが異なっているため、変換候補のリストを表示しているときも、画面右下部分のタップ操作は常にenterキーを使って確定操作を行っているのと同じように動作します。上記のように、enterキーによる確定操作は相性のよくないケースが多いので、enterキーよりも画面右下タップをメインに使うと、相性の問題を軽減できるかもしれません(デバイス上でキーボードと画面を交互に操作したことがないので、実際の操作性などについてはよくわかりませんが…)。
※画面左下のYahoo!デベロッパーネットワークのクレジットが表示されている場所をタップすると、ブラウザーでYahoo!デベロッパーネットワークの「
ご利用ガイド
」ページを開きます。
クリップボード関連の処理
cross入力時にはメニューによる操作は行えますが、自動的にコピーする機能などは稼動していません。
簡易定型文
キー操作や設定ファイルのフォーマットなどはアプリモードと同じですが、ポップアップ入力用に設定ファイルを別途/usr/palm/frameworks/mojimoca/resources/alternatetexts_table.jsonへ作成する必要があります(cross入力時はアプリモードの設定ファイルを参照します)。なお、ポップアップ入力用とアプリモード用に2つのalternatetexts_table.jsonを作成した場合は、それぞれ以下のように表示されます。
・アプリモード:ポップアップ用とアプリモード用がマージされ表示される
・cross入力:ポップアップ用とアプリモード用がマージされ表示される
・ポップアップ入力:ポップアップ用のみが表示される
※ポップアップ入力用に作成する/usr/palm/frameworks/mojimoca/resources/alternatetexts_table.jsonは、デバイスやPalmEmulator内にインストールされている全てのアプリケーションから無制限に参照可能です。記述する内容には注意してください。
遅延入力
アプリモードと同じようにフィールド上の文字を範囲選択した状態でSymキーを押すと遅延入力ができます。ただし、「もじもか」による入力がオフのときにSymキーを押した場合は、入力がオンになるだけで遅延入力の処理は実行されません。オンになった状態で再度Symキーを押すことで処理が実行されます。
フィルターリストへの入力
フィルターリストのフィールドへ日本語を入力する場合は、Symキーを2回押すことでcross入力の編集画面が表示されます。
なお、フィルターリストへの入力は下記の設定ファイルの影響は受けません。常にcross入力となります。
アプリ毎の設定
/usr/palm/frameworks/mojimoca/resources/appcustomsettings_table.jsonというファイルを作成して、以下のような内容を保存すると、アプリ毎にポップアップとcross入力どちらを使うかを指定できます。また、入力モードの表示方法を指定することもできます。
{
"com.palm.app.calendar":{"*":{"cross":true,"inputModeDisp":null}},
"com.palm.app.contacts":{"*":{"cross":true,"inputModeDisp":null}}
}
この例の場合ですと、CalendarとContactsで常にcross入力が使われるようになります。なお、基本となるファイルのフォーマットはjsonファイルフォーマットで、アプリケーションのIDに対して以下のように設定内容を記述するようになっています。
"アプリケーションID":{"*":{"cross":crossを常に使うかの指定,"inputModeDisp":入力モード表示の指定}},
:crossを常に使うかの指定は以下の3種類が記述できます。
true→常にcross入力、false→常にcross入力しない、null→判定ロジックに従う
入力モード表示の指定は以下の4種類が記述できます。
"none"→表示なし、"banner"→Bannerによる表示、"dashboard"→Dashboardによる表示、null→設定に従う
なお、サンプルが/usr/palm/frameworks/mojimoca/resources/にappcustomsettings_table_sample.jsonとして
保存さています。最初に試すときは、これをappcustomsettings_table.jsonへリネームしてみると動作を確認することができると思います
注意点など
先の制限事項と重複する内容があったりと、あまりまとまった情報になっていませんが、テスト中に判明した注意点などを以下に列挙しておきます。
Phoneの番号検索フィールドではEnterキーで確定を行うとフィールドが閉じてしまう(確定をEnterではなく画面タップで行うと入力できる)。
Contacts のe-mail入力画面などでEnterキーで確定すると、フォーカスがずれて別のフィールドに入力されることがある。また、このとき「あ」アイコンが表 示されたままになり、同一画面上から日本語の入力ができなくなる(確定をEnterではなく画面タップで行うと入力できる)。
Enterキーで確定しようとしても無反応なときがある(確定をEnterではなく画面タップで行うと入力できる)。
1行しかないフィールド上では、変換した文章をEnterキーで確定した直後に文字を入力すると、他のフィールド上に入力されることがある(確定をEnterではなく画面タップで行うと入力できる)。
複数のフィールドが存在する画面では、変換した文章をEnterキーで確定した後に別のフィールドにフォーカスが移動するときがある(確定をEnterではなく画面タップで行うと入力できる)。
Mailのメール作成画面やMessageのTo選択フィールドではポップアップとCross入力どちらも正常に動作しない。
文章の確定後に画面上のカーソル位置が正しく更新されないときがある。
CalendarのDay画面でインライン編集している項目が上側に消えているとき確定すると、タイトルバーに隠れた位置にスクロールしてしまう。
1行しかない入力フィールドへ入力したときに、ポップアップとcross入力ともに横方向の表示がカーソル位置へ移動しない。
ブラウザー(WebViewWidget)上では他のアプリ上とは異なる動作をする。
ポップアップとcross入力ともに、文章確定後にカーソルがフィールド表示領域外へ移動したときに、カーソル位置へスクロールしない。
ポップアップとcross入力ともに遅延入力ができない。
crossモードで入力を行う場合、もとのフィールド上のテキストが入力画面上にコピーされない。
crossモードで入力を行う場合、もとのフィールド上へテキストを貼り付けた後にカーソル位置が更新されない。
ポップアップとcross入力ともに、入力できる場所からキーフォーカスが外れても、日本語入力モードがオフにならない(ローマ字入力から変換操作まではできるが、確定したあるいは元の画面に戻ったときに入力していた文章が消える)
Cardview画面ではctrlを押しても反応しない(Launcher画面を表示してからctrlを押せば表示されます)。
Launcher画面はCtrlを押しても「あ」アイコンが表示されないときがある(その場合、複数回押せば表示されます)。
メニューのPasteで貼り付けても反応しない場所では、入力した文字が認識されないことがある。
crossモードでテキストを挿入したとき、カーソル位置が正しく反映されないことがある。
Memosの編集画面など(SmartTextFieldを使っている入力フィールド)に対してcrossモードで入力を行う場合、元のフィールド上とのカーソル位置情報がやりとりされない。
フィルターリストが有効な画面で、Symを押した後に別途英字キーなどを押すと、その後にフィルターへ文字を入力できなくなる。
ランドスケープ表示のときに、Dashboardアイコンが表示されない。また、リマインダーが表示されるなどで表示幅が狭くなったとき、入力中の文章などの幅は縮まらない。
cross入力で画面が切り替わるときにインジケータが回転しない。動作にはとくに影響はありません。
SDK1.3.1.314 のPalmEmulatorでは、ポップアップ入力を行ったアプリが完全に終了しない状態になるときがあります(見た目は終了しているが、システム側に情報が残っている状態)。「もじもか」の設定画面から「入力モード表示」を「Dashboard」以外に変更することで回避できます。
Webブラウザー(WebViewWidget)上でShift+タップ操作で文字列を範囲指定した直後に、ひらがな(ローマ字)入力の状態であっても全角英数モードで入力される。→いったん入力した後に、BSで戻るとひらがな入力に戻る。
免責事項
このプログラムおよびパイプ等の関連リソース(それらをまとめてプログラムと呼称します)の不具合および、プログラムを使用することで生じる損害につい て、作者はその責任を一切負いません。また、プログラムの修正およびバージョンアップについて、作者はその義務を負いません。プログラムのインストールや ご使用等については、自己責任でお願いします。
戻る