工夫が楽しい(^^)

コメント欄で質問をいただきましたので回答を。

いただいた要件としては2つ。 

  1. テンキー下の部分(IME ON/OFFの機能)を表示しない。
  2. ATOK設定」キーの機能をIME ON/OFFにしたい。

テンキー下の部分の非表示

スクリプトの中でSIPの各部分の高さの定義で使っている変数と現在の設定値は以下のとおりです。

ガイド部分--テンキーの上の部分   BHH   20ドット
ガイド部分--テンキーの上の部分   PANEL_GUIDE_HEIGHT   20ドット
テンキー部分キー1個あたり高さ   BH   27ドット
テンキー部分キー高さ   PANEL_KEY_HEIGHT   108ドット
フッター部分--テンキーの下の部分   BFH   12ドット
フッター部分--テンキーの下の部分   PANEL_IMESW_HEIGHT   12ドット
SIPの表示部分の高さ   PANELSIZE_H   140ドット

で,今回の要件を満たすためにBFH = PANEL_IMESW_HEIGHT = 0ドットにして,微調整したものを↓に上げときました。 (修正箇所は「081125」で検索をかけていただくとわかるはずです。)

http://indigomode.web.fc2.com/touchkeysip/20081102/p905i_nt_sip_cust.txt

SIPの画像ファイルはそのままでスクリプトを上のものに入れ替えていただくとテンキー下の部分が表示されなくなります。

ATOK設定」キーの機能をIME ON/OFFに

こちらでも「ATOK設定」キーに「VK_F7」を割り当ててみましたが,やはりうまくいきませんでした。
PQzIIではIMEタブのIMEの欄に0x76を指定しているのですが...。
もしかすると0x76の他にSHIFTとかWINとかのモディファイアが必要かと思って,キーコードをチェックしてみましたが,EMONSTERの場合 QWERTYキーボード側の文字キーを押したときのキーコードは
   D  0xE9
   D  0x5C
   U  0x5C
   U  0xE9
となっていました。 おそらく0x76に置き換える前の生のコードですね...。
ということで,IME ON/OFFするためのキーコードがわからない状態です(^-^;

ではp905i_nt_sipではどうやってIME ON/OFFをどうやって行っているかというとF_KANJIという関数で行っています。 
なので,イベントテーブルで「ATOK設定」キーに対して
F_DOWN_KEY 168 0
となっているところを
F_KANJI 0 0
に置き換えてあげるというのが最も簡単なのかもしれませんが,機能キーについても全モードごとにイベントテーブルに同じ内容を定義しているため,修正箇所が多くなってしまいます。

そこで次のような対処方法がいいかなぁと思います。
1.IME ON/OFFを行うアプリケーション(例:FepTgl)を導入する。
2.スクリプトの1931行目を修正し,「ATOK設定」キーを押したときに送信する仮想キーコードを定義する。
3.PQzIIで2.で定義した仮想キーコード押下時に1.で導入したアプリケーションを起動するように定義する。
4.スクリプトを読み込み直す。

説明不足

現在の公開中の最新版p905i_nt_sipについて23日のコメント欄で質問をいただいたのでまとめてみます。
P905i(パナソニックモバイルの携帯電話)で文字入力をする場合,コピーやペーストなどの編集機能は,携帯電話アプリケーション側の実装でソフトキーから呼び出すようになっています。 WindowsMobileの場合も,編集機能は基本的にエディタなどのアプリケーション側で実装するわけですが,できれば利用するアプリケーションに関係なく編集機能が利用できればいいなと思い,なんとかtouchkeysip側の工夫でなんとかできないかと思ったわけです。

しかし,touchkeysip側が日本語入力を行うアプリケーションとのやり取りを監視したり,クリップボードとのやり取りを管理したりはできないわけで,そうなると「Ctrl+C」や「Ctrl+V」のWindwosの標準のコピペのキーコードを送信する,とかEasyClipなどのような文字入力補助アプリを呼び出そうというところに行き着きまして。

で,今は編集キー押下時に実際のキーボード入力からは送信されないであろう仮のキーコード「0xC6」を送信するように定義し,SortInchKeyやPQzIIなどの特定のキーコードに対してアクションを定義できるユーティリティで仮のキーコード「0xC6」が押されたらEasyClipやPasteHelper2,MCHARなどの文字入力補助アプリを起動するように登録しておくことで,p905i_nt_sipで用意した編集キーから呼び出せるようにしています。

準備としては
1.キーコードに対してアクションを定義できるユーティリティ(PQzIIやSortInchKeyなど。 AE ButtonPlusなんかでもイケるんでしょうか?)で,キーコード「0xC6」に対してアクションを定義


↑アイコンでわかる人はわかると思いますが,EasyClipを定義しています。

と,これだけです(^-^; これでp905i_nt_sipで「編集」キーを押すと

↑こんな感じでEasyClipのメニューが表示されるようになります。
同じようにして定義するアプリケーションをPasteHelper2を利用してクリップボード履歴を利用できるようにしたり,MCHARを利用して顔文字を入力できるようにするなんてのもよいのではないでしょうか?

ちなみにこんな無駄なことにキーを使うな,とかキーコード「0xC6」は他の用途ですでに使ってるということであれば以下のようにして変更していただくことが可能です。

1.p905i_nt_sipをエディタで開く(行数が表示できるものだと便利かも)
2.1930行付近にある「0xC6」を変更したいキーコードに書き換える。

 

3.上書き保存する。
4.p905i_nt_sip.txtを読み込みしなおす。

テーブル作成中

現在,p905i_nt_sipはローマ入力をエミュレートしているため,「ゃ」や「っ」などの入力時には
 ゃ = 「L」「Y」「A」
 っ = 「L」「T」「U」
のように3キー分の送信を行っています。
そのため,場合によっては単純にキー入力に対する表示や,「あ→ぁ」キーを押したときの反応が低下してしまいます。 そこでem1key用のoyayubiwmスクリプトを参考にして,カナ入力をエミュレートするように修正中しようと考えています。 まず今日のところは文字テーブルの作成中。 今日中に文字テーブルの作成は完了して,週末にはテスト的にリリースしたいと思っていますがさてどうなることやら。
小さい「ワ」や小さい「ケ」の入力が出来なくなってしまうので,記号にカナ(の一部だけでも)追加する必要があるため,完全な対応完了までは時間がかかると思いますが,あんまり小さい「ワ」なんて使わないですからね(^-^;

それが完了したら,現在の

キー押下イベント発生 → 文字コード取得 → 文字入力のキー情報取得 → キー送信処理実行

...という遠回りな処理の流れを

キー押下イベント発生 → キー送信処理

と簡略化したいなぁと思っています。 まあキリがないわけで(^-^;
ただ今の反応は感覚的にもあまり良くないなぁと思っちゃうんですよねぇ。