Search Results


バグ報告をいただいたので修正しました。
定数の値数で、-129 ~ -32768 の範囲の場合のみ符号が失われてしまいます。
値から一目瞭然ですが 1byte、2byte、4byte のそれぞれの範囲で定数の扱いを
区別しており、2byte の場合のみ符号が考慮されていなかったことが原因でした。

touchkeysip v1.07



WindowsMobile 用のソフトウエアキーボード touchkeysip に、
前から考えていた機能をいくつか追加しました。

ダウンロード
touchkeysip v1.10


●加速センサー対応

加速センサーに対応した専用バージョン touchkeysip GS をリリースしました。
アーカイブやインストーラを標準版と分けてあります。

Script 内でセンサー値を直接受け取ることが出来ます。
サンプル gsensorsip では本体を傾けることで画像をスクロールしているだけですが、
本体を傾ける向きで 日本語、英数、記号などの入力パネルを切り替えたり、
カーソルを移動させるといった応用も考えられます。
本体のアクションをきちんと処理するのは難しいですが、Script 処理次第では
何らかの動作で文字入力することも出来るかもしれません。


●ステータス領域のアイコン画像の切り替え

標準の SIP だと「あ」「A」など入力文字の状態が表示されているエリアです。
あらかじめ作成したアイコン画像を用意しておけば、状態に合わせて表示を切り替える
ことが出来るようになりました。

またキーボードをデザインした人が touchkeysip ではなく自前のアイコンを表示
したい、といった用途にも使えます。


●管理可能な画像を増量

アイコン表示追加に伴い、複数枚の画像の読み込みにきちんと対応しました。
従来は 2枚まで読み込めましたが、DisplayList に使えないなど中途半端な実装でした。
8 枚まで読み込めてかつ表示やステータスアイコンとして利用できます。
でも表示するデータはできるだけ 1枚にまとめた方が処理は高速だと思われます。


●タイマーの追加

加速センサー対応によって、従来のキーリピートとは別にポーリング用のタイマーが
必要となりました。よって複数のタイマー機能を使えるようにしています。
上限は容易に撤廃できますが API としてはとりあえず 4個まで。


●読み込める画像形式の追加

bmp 以外も読み込めるようになりました。jpeg など。
Script の命令自体は LoadBitmap のままです。
16bit RGB bitmap は直接読み込めないことがあるようです。


●サンプル

gsensorsip v1.00 はこれらの追加機能を実際に使用しています。
実用性は全く無く、あくまで機能のテスト用です。


●注意点

機能の追加や変更が多いため、互換性など何らかの問題がある場合は旧バージョン
v1.09 等を使用してください。
制作時に動作テスト可能な機種や環境も限られるため、必ずしも完全にテストが
行われているわけではない点にご注意ください。


関連エントリ
HTC Touch Diamond タッチセンサー API
WindowsMobile touchkeysip v1.07
WindowsMobile touchkeysip / ctrlswapmini



WindowsMobile 用のフリーソフトウエアは CAB 形式で配布しています。
CAB ファイルは explorer から実行するだけでインストールできるので扱いも簡単です。

今なら別の方法があるのかもしれませんが、昔から VisualStudio に付属している
cabwiz を使用しています。というか WindowsCE / PocketPC の頃に作った設定
ファイルをほとんどテンプレートとして、ずっとそのまま使ってきました。

d3dmclock の場合 (d3dmclock.inf)

[Version]
Signature	= "$Windows NT$"
Provider	= "HYP"
CESignature	= "$Windows CE$"

[CEStrings]
AppName		= d3dmclock
InstallDir	= %CE1%\%AppName%

[CEDevice.ARMWM6]
VersionMin	= 5.0
VersionMax	= 32767.0
ProcessorType	= 2577

[DestinationDirs]
Shortcuts.All = 0,%CE11%
Files.Common = 0,%InstallDir%
DefaultDestDir = 0,%InstallDir%

[Shortcuts.All]
d3dmclock,0,d3dmclock.exe,%CE11%

[SourceDisksNames]
1 = , "Common files",,C:\usr\ce\gclock

[SourceDisksNames.ARMWM6]
2 = , "ARMfiles",,C:\usr\ce\gclock\ARMV4I\Release

[SourceDisksFiles]
d3dmclock.txt = 1
font.dds = 1
bgimage0.bmp = 1
bgimage1.bmp = 1
bgimage2.bmp = 1
textimage0.dds = 1
textimage1.dds = 1
textimage2.dds = 1
textimage3.dds = 1
textimage4.dds = 1
textimage5.dds = 1
textimage6.dds = 1
textimage7.dds = 1

[SourceDisksFiles.ARMWM6]
d3dmclock.exe = 2

[DefaultInstall]
CEShortcuts	= Shortcuts.All

[DefaultInstall.ARMWM6]
CopyFiles	= Files.Common, Files.ARMWM6

[Files.Common]
d3dmclock.txt,,,0
font.dds,,,0
bgimage0.bmp,,,0
bgimage1.bmp,,,0
bgimage2.bmp,,,0
textimage0.dds,,,0
textimage1.dds,,,0
textimage2.dds,,,0
textimage3.dds,,,0
textimage4.dds,,,0
textimage5.dds,,,0
textimage6.dds,,,0
textimage7.dds,,,0

[Files.ARMWM6]
d3dmclock.exe,,,0x80000000

CEString は他で参照する定数の定義です。%~% で参照しています。
Install 先フォルダをここに記述しています。%CE1% は \Program Files

SourceDisksNames はインストールするファイルが置かれている実在のパスを指定します。

SourceDisksFiles はアーカイブするファイルがどこにあるか指定します。
後ろの番号は SourceDisksNames の番号に対応しています。

Files が実際にインストールコピーされるファイルリスト。

".ARMWM6" がついた定義名は、もともと WindowsCE が複数の CPU に対応しており
対象 CPU 毎に CAB を用意していた頃の名残です。CPU 毎に別ファイルを指定する
場合と、共通に含めるファイルを分けて記述できるようになっています。

(1) DestinationDirs でインストール先フォルダを指定。
  %InstallDir% の定義は CEStrings にあります。
(2) SourceDisksNames.* にアーカイブするファイルの場所を記述
(3) SourceDisksFiles.* に必要なファイルを記述
  (数値は SourceDisksNames の番号に対応している)
(4) Files.* にアーカイブするファイルを記述

詳しくはこちら
MSDN スマート デバイスの .inf ファイルの概要


touchkeysip の場合 (touchkeysip.inf)

[Version]
Signature	= "$Windows NT$"
Provider	= "HYP"
CESignature	= "$Windows CE$"

[CEStrings]
AppName		= touchkeysip
InstallDir	= %CE1%\%AppName%

[CEDevice.ARM]
VersionMin	= 5.0
VersionMax	= 1000.0
ProcessorType	= 2577

[CEDevice.ARMGS]
VersionMin	= 5.0
VersionMax	= 1000.0
ProcessorType	= 2577

[DestinationDirs]
Files.Common = 0,%InstallDir%
DefaultDestDir = 0,%CE2%

[SourceDisksNames]
1 = , "Common files",,C:\usr\ce\minisip2

[SourceDisksNames.ARM]
2 = , "ARMfiles",,C:\usr\ce\minisip2

[SourceDisksNames.ARMGS]
3 = , "ARMfiles",,C:\usr\ce\minisip2\gs

[SourceDisksFiles]
touchkeysip.txt = 1
defaultscript.txt = 1
defaultkeyboard.bmp = 1

[SourceDisksFiles.ARM]
touchkeysip.dll = 2

[SourceDisksFiles.ARMGS]
touchkeysip.dll = 3

[DefaultInstall]

[DefaultInstall.ARM]
CopyFiles	= Files.Common, Files.ARM
CESelfRegister	= touchkeysip.dll

[DefaultInstall.ARMGS]
CopyFiles	= Files.Common, Files.ARMGS
CESelfRegister	= touchkeysip.dll

[Files.Common]
touchkeysip.txt,,,0
defaultscript.txt,,,0
defaultkeyboard.bmp,,,0

[Files.ARM]
touchkeysip.dll,,,0x80000000

[Files.ARMGS]
touchkeysip.dll,,,0x80000000

コマンドの実行手順は Makefile に記述しています。(install.mak)

ZIPFILEARM	= touchkeysip***.zip
CABFILEARM	= touchkeysip.ARM.CAB
EXEARM		= touchkeysip.dll

all: \
	$(EXEARM) \
	$(CABFILEARM) \
	$(ZIPFILEARM) \


zip: $(ZIPFILEARM)


_MANUALFILE	= touchkeysip.txt	\
		CommandManual.txt	\


_CABSRCFILE	= touchkeysip.txt	\
		defaultscript.txt	\
		defaultkeyboard.bmp	\


_SRCFILEARM	= $(EXEARM) \
		$(_CABSRCFILE) \


ZIPSRCFILEARM	= $(CABFILEARM)   $(_MANUALFILE)


$(ZIPFILEARM):	$(ZIPSRCFILEARM)
	7z a -tzip $(ZIPFILEARM) $(ZIPSRCFILEARM)


CABWIZE	= C:\Program Files (x86)\Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools\Cabwiz.exe

$(CABFILEARM): touchkeysip.inf $(_SRCFILEARM)
	"$(CABWIZE)" touchkeysip.inf  /cpu ARM

VisualStudio で作成&動作確認が終わったら、nmake の実行だけで CAB の生成と
zip の作成もいっぺんに行われます。上のファイルは install.mak という名前で
各プロジェクトのフォルダに置いてあります。実行はコマンドラインから

nmake -f install.mak

プログラムの数も非常に多いし、開発中はそれぞれが頻繁に更新されるので
公開までの手順は自動化されています。
ドキュメントを修正した場合も nmake だけでアーカイブが作られます。

普段使っているスクリプトファイルを入れて

touchkeysip.dll + スクリプト

といった自分専用の CAB を作っておけば、デバイスの再インストール時に
ちょっとだけ手間が減るかもしれません。


英語配列対応の touchkeysip 用データを作ってみました。

eckeyboardsip v1.00

EMONSTER lite S12HT はキーボードを英語配列と認識するため、touchkeysip
データで一部記号で表記と入力される文字が異なっていました。
eckeyboardsip は日本語キーボード用と英語キーボード用、両方のデータを
同梱しています。

日本で販売されている WindowsMobile 端末には、日本語キーボードと認識する
ものと英語キーボードと認識するものと 2種類あります。

詳しくはこちらのエントリを参照してください。


EMONSTER lite (S12HT) の場合いくつか注意点があります。

 (1) 内部でキーボードを英語配列と見なしている
 (2) 標準 Advanced Wnn では、touchkeysip で [1]~[9],[0] のキーを押しても
   かな や英数のトグル入力になってしまう。

(1) は英語配列対応の script データを使うことで解決できます。
(2) は、スライドキーボードを開いているときのみ有効なので、閉じた状態では
 問題が起こりません。または MS-IME に切り換えることで対処可能です。


関連エントリ
WindowsMobile キーボードと S12HT の TouchFLO
EMONSTER lite S12HT の文字入力を MS-IME に切り替える
EMONSTER lite S12HT と文字入力



キーボードが 15パズル になっていて、自由にキー入れ替えできる
ソフトウエアキーボード (sip) です。

puzzlesip v1.00

スライドして入れ替え。

puzzlesip

WindowsMobile touchkeysip 用です。



以前「続 キーボードの作り方 / WindowsMobile (SIP)
で書いたように、指で直接操作できる新しい SIP を作ってみました。

touchkeysip
WindowsMobile5/6 で動作します。

スクリプトにより各キーの機能やレイアウトなどもすべて再構築
できます。
キーボードの画像は文字を並べてるわけではなくて bmp の一枚絵です。
こちらも簡単に作成&入れ替え可能です。

最近は外付けキーボードしか使ってなかったので、
bluetooth か USB ホストがあればこれで十分な気がしてきました。

さまざまな機種での動作報告とか、キーボードのデータ絵とか、
カスタマイズデータとかできましたら、
ぜひご連絡いただけたらなと思っております。


また ctrlswapmini の方ですが、拡張かな時に Advanced W-ZERO3[es]
WS011SH の場合、カーソルキー右でトグル操作を区切れないとの報告が
入っています。

たとえば 「かか」と入力する場合、[2か][→][2か]と操作しても
右カーソルキーが実際に機能してしまうそうです。

W-ZERO3[es] WS007SH ではきちんと動作しているので、機種依存の問題の
可能性があります。実機がないため確認及び調査できませんが、
より詳しい情報をお持ちの方がいましたらご連絡お願いいたします。



いくつか複数の問い合わせが重なったので更新してみました。
使用期間が短いため問題ある場合は引き続き旧バージョンをお使いください。

touchkeysip v1.11 ソフトウエア入力パネル

●複数の sip 登録

オプション画面を拡張しました。オプション画面の開き方は次の通り。

  スタートメニューから
    設定 → 入力 → 入力方法: touchkeysip → オプション

右上のプルダウンメニューで「Sip 0」~「Sip 2」の切り替えが出来ます。
3 種類それぞれに対して個別に

 ・Script Path / 割り当てるスクリプトファイル名
 ・Enable / 有効・無効 切り替え

の設定が出来ます。有効にすると Sip 一覧に touchkeysip 1, 2 のエントリが表示
され、それぞれが独立した Sip のように振る舞います。

touchkeysip111_01.jpg
↑EM・ONE S01SH (WM6) の場合

touchkeysip111_02.jpg
↑Touch Diamond (S21HT) の場合

複数有効にしてもインスタンスは共有されるので、追加のメモリ消費はほとんど
無いはずです。現在選択している SIP 以外のりソースは解放されるので、
メモリに読み込まれているスクリプトも常に 1つだけです。

これで複数のキーボードデータを使い分けることが出来ると思います。
レジストリへ登録する CLSID を増やすだけなので、原理的にはいくらでも増やすことが出来ます。


●回転時の動作

T-01A で画面回転時に位置が不定になるとの報告をいただきました。
SIP を閉じた状態で画面を回転すると、センタリング位置が不定になる問題は修正
しました。

ただし、T-01A で発生している症状は他の機種では再現しないため、根本的に直って
いるかどうかはわかりません。現物がないと原因を特定できないかもしれません。
WindowsMobile 6.x ではタッチ用に UI が変更またはカスタマイズされており、
細かい動作が端末によって異なっている可能性があります。


●消費メモリの軽減

画像読み込み時のみ必要な dll はすぐに解放するようにしました。
bmp 指定時は dll を使わずに古いローダーを用いるように変更しました。


●パネル

スクリプトでパネルを切り替える方法について質問をいただきました。
以下その説明です。

画面(パネル)切り替えという概念は、script の機能を用いて仮想的に実現しています。
各パネルの機能を作るには下記のデータが必要となります。

・ディスプレイリスト
・イベントテーブル

スクリプトでは、この 2つデータを切り替えることでパネルを変更しています。


◎画像データ

パネルの絵は LoadBitmap コマンドで読み込み、必要なタイミングで描画しています。
描画は自分で行う場合と、ウィンドウシステムが必要なときに勝手に描画する場合が
あります。

例えば上に重なった別のウィンドウを閉じたとき、下のウィンドウの絵を復元しなければ
なりません。
このように再描画が必要になった場合に、どのデータを画面に描画するのかあらかじめ
登録しておくのが「ディスプレイリスト」です。


◎ディスプレイリストの登録

SetDisplayList 命令を使います。
画像の転送元や転送範囲、転送先の座標を登録するだけです。
複数登録しておくと順番に描画します。

SetWindowDisplayList 命令を使って、ウィンドウ毎にディスプレイリストを割り付ける
ことが出来ます。


◎直接描画

ディスプレイリストを登録してもすぐには画面が書き換わりません。
再描画が必要なタイミングにならないと呼び出されないからです。

アニメーションの表現や、パネル切り替えなどで即座に画面を書き換えたい場合は
直接描画する命令を使います。
DrawDisplayList は、指定したディスプレイリストをその場で直接描画する命令です。


◎描画のまとめ

ディスプレリストとは描画手順のこと。

SetDisplayList 命令で登録しておくことができます。

描画手順は二通り。この二つを状況に応じて使い分けることになります。

・ディスプレイリストをウィンドウに割り当てる SetWindowDisplayList
  再描画が必要になったら勝手に呼び出して描画してくれます。
  元の描画に戻す手順です。登録しておかないと再描画で元に戻らなくなります。

・その場で画面に書き込みたいなら DrawDisplayList
  すぐ描画します。一度限りなので、他のウィンドウで消されても戻りません。
  アニメーションや、パネル切り替えなどその場で更新したい場合に使います。


◎イベントテーブル

どの座標をタッチしたらどの関数を呼び出すのか、このようなアクションを登録して
おけるのがイベントテーブルです。

talbe <名前>
dataw <ボタンの個数>
dataw EVENT_DOWN  0 16  32  32  FuncPushA  0  0
~
endtable

テーブルは座標範囲と呼び出す関数名、関数に渡す引数で構成されています。
これをボタンの数だけ並べておけば、タッチしたときに任意のスクリプトが走ります。

実際の動作は関数依存なので、任意の文字を送信してもいいし、パネル切り替えなどの
機能を作ることも出来ます。

イベントテーブルは複数作っておくことが出来るので、パネル毎に設定し直すだけで
動作を好きなように変えられるわけです。

テーブルはウィンドウ毎に指定可能で SetEventTable 命令を使います。
SetEventTable には一度に複数のテーブルを与えることが出来ます。
複数のパネルで同じように使うボタンがあれば、イベントテーブルを共通化しておくことが出来ます。


◎ウィンドウ

CommandManual.txt にも説明がありますが、ウィンドウという概念を持っています。
メインパネルはウィンドウの 0 番 (= WIN_MAIN) に相当します。

サブウィンドウを開くことが出来るので、例えばポップアップ小さい画面を重ねて
情報を出すような表現を作ることが出来ます。

WindowsMobile に最初から入っている SIP はメインパネルだけで出来ています。
touchkeysip も複雑なことをしなければ WIN_MAIN だけで sip として機能します。


◎パネルを切り替える方法

ほぼ下記の命令をセットで用いています。
サンプルスクリプトなどで探してみてください。

SetDisplayList ~       # 描画手順の変更、再登録や書き換えなど
SetWindowDisplayList ~ # ウィンドウに DisplayList を割り当て(変更無ければ不要)
DrawDisplayList ~      # その場で画面を書き換えて表示を更新
SetEventTable ~        # ボタンを押したときの動作を変更する

現在選択しているパネルの状態は、適当なグローバル変数を使って管理しています。


関連エントリ
WindowsMobile touchkeysip v1.10 加速センサーで文字入力


WindowsMobile6.x がもう一世代継続されるようです。

米マイクロソフト、スペインで「Windows Mobile 6.5」発表

今でもプラグインが多いと SIP が読み込めなかったり切り替わらなかったり、
ブラウザのようなメモリを多く消費するアプリが不安定になったりしています。
WindowsMobile6.x のカーネルは WindowsCE5.2 で、WindowsMobile5.0 とそれほど
大きく変わっていません。
下記のページで詳しく解説されています。

Windows CE .NET の高度なメモリ管理

これを見ると CE4~5 のメモリ管理は下記の構造になっていることがわかります。

(1プロセス 32MB × 32プロセス) + 32MB の XIP DLL 空間 (ROM DLL)
  + ラージメモリ空間(992MB) + カーネル空間(2GB)

CE の限界は、上記の通り 1プロセスあたりのメモリ空間が 32MB に制限されていること。
最近の端末では 128MB~256MB の RAM を搭載していますが、1つのアプリケーションが
メモリ空間的に限界に達しているときは、いくら物理メモリを増やしても効果がない
ことがわかります。(desktop Windows でも 32bit OS だと 2GB まで、という制限に似ています)

32MB の XIP DLL 空間は、ROM にあらかじめ組み込まれている DLL を配置するための
領域だそうです。system の共有 DLL が XIP 空間に配置されている場合は 32MB の
プロセス領域を消費しません。

ROM に含まれていない (XIP でない) DLL は XIP 空間に配置できません。
こちらはプロセスのメモリを消費します。さらに DLL はプロセス間で共有されるために
ロードしたアドレスが固定されてしまうようです。
よって SIP プラグインなど、後から追加した dll が多数読み込まれている場合は、
各アプリケーションで使用可能なメモリ空間を食いつぶしてしまう可能性があります。

たとえば XIP でない DLL の合計が 16MB あって、かつ最もよく使われる dll が
一番下位のメモリにロードされてしまった場合。またはアプリケーションが複数の
dll をロードする構造の場合、最悪アプリケーションが使用可能なメモリ空間も
16MB になってしまうということです。

これらのこの問題に拍車をかけているのがもう 1つの制限、プロセス数の上限が
32個ということ。常駐するアプリケーションはプロセスを消費しないようサービス
として dll 化することが推奨されていているため、dll 空間を余計圧迫している
可能性があります。また単一のプロセス空間を取り合うため、dll を配置する
サービス用の空間自体も限界に達してしまう可能性もあります。

常駐する dll が多い場合、追加で dll 自体をロードできなくなる場合があること、
またブラウザなどの大きなアプリが不安定になる可能性があることがわかります。
メモリが大量にある場合、dll の共有はかえって逆効果なのかもしれません。

ただ実際に touchkeysip が読み込まれなくなる場合、どの段階で限界が来ており
どこのメモリ確保でエラーが出ているのかきちんと調べたわけではないので、
上の説明もいろいろと憶測が含まれています。あらかじめご了承ください。
単に touchkeysip が悪いだけの可能性もあります。

データ領域に限っていえば、ラージメモリ領域を使用することが出来るためまだ余裕は
ありそうです。上の MSDN のページに書いてある方法で大きなメモリブロックを
まとめて VirtualAlloc で予約すると、ラージメモリ領域に配置されるとのこと。

・常駐する dll を減らす。
・常駐する dll は一番先に読み込ませておく。
・アプリが消費するヒープメモリは自分でラージメモリから確保する。
・アプリを使い終わったらすぐ終了させる。特に独自の dll を使うもの。

等が有効かもしれません。

WindowsCE6.0 (WindowsMobile7) 以降は一般的な 32bit OS と同じ 2GB に拡張され、
プロセス数の制限もなくなるはずです。逆に普通の Windows に近づくので
CE である必要性が徐々に薄れていくような気もします。
先があることがわかっている中に出る 6.5 は Me を思い出してしまいます。


関連エントリ
emobile EM・ONE 使い切れないメインメモリ



以前下記エントリで書いた ctrlswapmini についてです。
WindowsMobile touchkeysip / ctrlswapmini

Advanced W-ZERO3[es] WS011SH での ctrlswapmini 動作に関して、
拡張かな時に [→] キーの判定が効かなくなるのは他のソフトとの
相性が原因だったと報告をいただきました。
ただ同条件にしても W-ZERO3[es] WS007SH では問題が発生しないため、
本当の原因は特定できていません。

また別件で、Advanced W-ZERO3[es] WS011SH では ctrlswapmini の
回転時キーマップが有効にならないとの報告をいただきました。
こちらも W-ZERO3[es] WS007SH では動作しているので、
機種依存の問題の可能性があります。
やはり実機がないとわからないですが、何か追加情報等ありましたら
ご連絡ください。

ctrlswapmini



●大きさ

s12ht

小さいけど そのうち出るらしい Touch Diamond には負ける
S12HT 102x51x11.35 120g
Diamond 107x55x15.8 110g

テンキーは付いているものの、ソフトキー も OK ボタンも無いため
操作には画面タップが必要となります。


●画面

320x240 QVGA で、320 dot 側 (縦) が 5.2cm (5.2x3.9cm)
ちょうど EM・ONE の縦 (480dot) と同じ長さ (9.0x5.4cm)


●メニュー

メニューが複数入っています。

・普通のスタートメニュー
  ウィンドウズキー

・TouchFLO
  画面下のメニューバーを上に持ち上げる感じにスライド

・クイックリスト
  終話ボタン長押し

・クイックタスク
  テンキースライド

・クイックメニュー
  Today 画面右上から、タスクメニュー

・ホーム画面
  Today に表示されているメニュー


●通信

EM・ONE で契約した データプランの SIM でも通信可能
 → emb を選ぶ

タイトルバーのアンテナマークやアイコンが正しく表示されないことがあるけど、
接続自体は問題無さそう。

接続→接続→詳細設定→ネットワークの選択
  プルダウンメニューで EMnet から emb に変更する

ネット接続を手動でやるなら
  設定→接続→接続→既存の接続を管理→ポップアップメニューから接続
  ブラウザやインターネット共有でも可能

切断は CommManager
  設定→接続→CommManager →データ接続をタップ


●PC から接続 (インターネットの共有)

EM・ONE と違い、PC 側でモデムとしてダイヤルアップ設定を行うわけでは
ないようです。インターネットの共有を使います。

プログラム→インターネットの共有→接続
  PCとの接続方法は、USB または Bluetooth PAN を選択できる
  ここでも接続先を選択可能 → emb 等

S12HT 側で 接続 したら、PC 側から Bluetooth PAN で繋ぎます。

Vista の場合、ネットワークのプロパティから
  ネットワーク接続の管理→ Bluetooth ネットワークの接続
あらかじめペアリング等の設定が必要。

一応 EeePC 901 内蔵 Bluetooth + Vista の環境で接続できました。

Bluetooth 経由でも EM・ONE より高速です。


●ソフトの動作確認

touchkeysip
  問題無く動作します。ただし英語キーボード配列のキーコードが必要なので、
  一部の記号は修正が必要となるようです。
  (Today 画面には一切 plugin を入れていません。ホーム画面も外しています)

ChiRaKS
  きちんと動作しました。EM・ONE ではアクセラレータノ関係か描画に問題が
  ありましたが、EMONSTER lite S12HT では大丈夫です。


● ctrlswapmini や em1key に関して

EMONSTER lite S12HT は、キーボードを英語配列と見なしているようです。
その場合次の問題があります。

・キー配列が異なるため記号部分のキーコード修正が必要となる
・Advanced Wnn はテンキー入力専用なので、MS-IME に切り換えておく必要あり
・MS-IME が JISかな入力モードにならない

特に日本語入力のカスタマイズでは、JISかな入力の操作をシミュレートしている
ためうまく動作しないようです。

文字入力と関係ない単なるキーコードの置換のためなら em1key は利用できるかも
しれません。

em1key
ctrlswapmini


関連エントリ
EMONSTER lite S12HT の文字入力を MS-IME に切り替える
EMONSTER lite S12HT と文字入力



FSKAREN は WindowsMobile 用の日本語入力&漢字変換ソフト (IME) です。
自作ソフトの関係で質問を頂いたので試しに使ってみました。

FSKAREN for Windows Mobile 富士ソフト

上記の公式ページを見ても、対応機種も載ってないし すっきりしない説明でかなり
わかりにくくなっています。
ダウンロード販売のページに飛ぶと、やっと対応機種一覧を見ることが出来ます。

・Windows Mobile 5.0/6 Standeard/6 Professional
・Softbank X01HT
・Softbank X02HT
・Softbank X03HT
・Softbank X01T
・NTT Docomo hTc Z
・EMOBILE EMONSTER S11HT
・EMOBILE EMONSTER lite S12HT

要は IME の一種で、ATOK 等と同じように WindowsMobile 端末にインストールして
MS-IME の代わりに使用することが可能です。
実際に購入してみると、対応機種にインストールすべき CAB ファイルが分かれていました。

FSKAREN_HT1100-S12HT.CAB
FSKAREN_hTcZ.CAB
FSKAREN_S11HT.CAB
FSKAREN_X01HT.CAB
FSKAREN_X01T.CAB
FSKAREN_X02HT.CAB
FSKAREN_X03HT.CAB

よく見ると対応機種一覧に載っていないはずの Docomo HT1100 があります。
pdf のマニュアルにも HT1100 としっかり書かれています。
HT1100 と S12HT は機能的に同じ端末と見なして良いのかもしれません。
(ctrlswapmini lite も HT1100 でそのまま動く可能性があります)

ニュース: 富士ソフト

上記ニュースリリースの段階では S12HT も対象機種に含まれていませんでしたし、
「※上記以外の端末も、今後順次ご提供予定」と書かれていますので、今後さらに
対象機種が増える可能性があります。


実際に EMONSTER lite S12HT に FSKAREN_HT1100-S12HT.CAB をインストールしてみました。
ちなみに S12HT は標準で Advanced Wnn が入っています。

現在の使用環境は下記の通りです。

・Today プラグイン無し、標準の HTC のプラグインも全部外してまっさらな状態
・常駐ソフトは em1key のみ
・SIP として touchkeysip + eckeyboardsip を組み込み

em1key はテンキーの文字入力と干渉するので、FSKAREN 利用時は外しました。
FSKAREN を使って、テンキーで文字入力できるようになりました。

設定は \Windows の FSKAREN.cfg に保存されているようです。


●FSKAREN によるテンキー文字入力

Advanced Wnn とほぼ同じキーアサインになっています。

・文字種切り替えは [*] キー
・[#] キーで逆トグル可能

文字入力の直後は [*] キーで濁点半濁点変換と大文字小文字変換になります。
標準の Advanced Wnn だと大文字小文字変換できなかったので、この点は FSKAREN
の方が優れています。
ctrlswapmini でいえば後変換キー相当で、au 系端末に近い操作です。

キー長押しはトグル操作のキーリピートになってしまい意味がありません。
文字種切り換えメニューも出ず、数字入力にもなりません。
この点は Advanced Wnn より劣ります。

同じキーの文字を連続入力する場合、[→] キーによる確定操作に補正がかかりません。
カーソルキーを左に戻してから、同じ文字を挿入しようとして [→] を押すと
カーソルが右に移動してしまいます。
この点は一般の携帯電話よりも操作性が劣ります。
Advanced Wnn も同じ問題を抱えています。

pdf のマニュアルは不完全で、テンキーを使った文字入力方法の説明が載って
いませんでした。


●外付け Bluetooth キーボードによる入力

Advanced Wnn と違い、スライドキーボードを開いた状態でも特に入力を取りこぼす
ことはなく普通に入力出来ました。
ただし数字入力に問題があります。
外付けキーボードの [0]~[9] のキーを押しても、テンキーと同じように文字の
トグル入力が行われてしまいます。

Advanced Wnn と違ってスライドキーボードを閉じても直りません。
外付けキーボード向けに、入力モードを変更する機能が欲しいところです。


●操作に限定した FSKAREN のメリット (Advanced Wnn との比較)

・[*] で大文字小文字変換が出来るようになる
 ただしトグル自体にも小文字を含むので、ショートトグルが好みなら合わないかも


●Advanced Wnn と同じ問題点

・テンキーだけで単独改行は出来ない。決定キーが必要なので、決定を改行以外の
 用途で使うソフトだと改行入力出来ないことがあります。

・[→]キーでトグル入力状態だけ解除したいのにカーソルも移動してしまう。


●FSKAREN の問題点

・長押しで数字入力出来ない。

・キーリピート速度を最速に設定していると、トグル入力のリピートが発生して
 入力ミスが起こりやすい。

・外付けキーボードから入力する場合に問題あり。
 数字キーがテンキーとして取られてしまう。


●ソフト

touchkeysip は一応動きますが文字種切り換えの問題が生じます。
IME が off になると入力モードが英字 [A] に戻ってしまいます。
キーボード側で文字種を切り換えなければなりません。
ただし数字入力は衝突せず、ソフトキーから [0]~[9] を入力しても文字トグルに
ならずに入力可能でした。

ctrlswapmini lite は一応動作しますが、ほぼ Advanced Wnn 同様の問題が
あります。文字種切り替えできず、高速に連続入力した場合に IME 切り替えを伴う
ケースで、判定タイミングのずれが発生します。
IME の種類が増えるとますます対応が困難になりそうです。


●変換その他

他の IME では必ず予測変換などの候補ウィンドウを off にして使っていました。
FSKAREN は確かに表示が速いようです。
今回はこのままデフォルトの設定で使ってみます。

要望点
・テンキーのキーリピートを無視して欲しい (長押しはできれば数字入力に)
・外付けキーボード用に、数字キーの判定モードを切り換えられるように
・IME のキーバインドを変更したい
・未確定バッファを確定するけど、未確定バッファが空でも改行しない操作が欲しい



WindowsMobile 端末には、キーボードを英語配列と認識するものと
日本語配列と認識するものの 2種類あるようです。

この違いは主に、外付けキーボードを繋いだ場合や、キー入力をシミュレートする
ツールで問題となります。touchkeysip での文字入力もその一つです。

想定しているキーボードと内部で認識しているキーボードの配列が異なっている場合、
キーの刻印と入力される文字にずれが生じます。

Bluetooth keyboard を販売している Reudo のページに、機種による配列の違いが
まとめられています。

Rboard for Keitai RBK-2000シリーズ

内蔵の QWERY キーボードを持っている日本向け端末は、日本語配列を採用している
可能性が高いようです。(100% ではない)
逆に QWERTY キーボードを持っていない端末は、単体での利用では特に影響が
ないためか、英語配列のものが多いようです。

おそらく日本語配列にするメリットは変換や漢字などのキーを認識できることで、
英語配列のメリットはカスタマイズする(変更する)コストが低いことだと考えられます。

ローマ字入力では問題ないものの、JISかな入力を利用するソフトだとこの違いが
致命的となります。特に ctrlswapmini では 一時かな モードを多用しているので
英語配列の機種ではうまく動作しないようです。
逆に日本語キーボード配列を採用している端末では、ある程度は動作する可能性が
残っているといえます。

一時かなモードは、W-ZERO3[es] 系の端末がテンキー入力で使用している特殊な
キーストロークです。
IME 自体はローマ字入力モードでありながら、送られてきたキーをその場限りで
JISかな入力と見なすことができます。

KEYDOWN, KEYUP のそれぞれ両方を、VK_KANA の DOWN/UP で囲みます。

KANA DOWN
KEY DOWN
KANA UP
KANA DOWN
KEY UP
KANA UP

この場合の KEY DOWN, KEY UP は JISかなモードの入力と見なされます。
この動作は便利なのですが WindowsMobile でしか使用できず
PC の IME では機能しませんでした。


● TouchFLO

EMONSTER lite S12HT には、TouchFLO と呼ばれる特殊なユーザーインターフェースが
搭載されています。
どの画面でも呼び出すことが出来、指だけで操作できるため便利そうではあるものの
メニューの内容が固定でカスタマイズできませんでした。

このメニューの内容は下記のレジストリを書き換えることで変更できるようです。

HKEY_LOCAL_MACHINE\Software\HTC\Biotouch
 ActionScreen
	新電子メール
	新規 SMS
	新規 MMS
	新しい予定
	新しい仕事
	新しいメモ
	新しい連絡先
 APLauncher
	電子メール
	Internet Explorer
	コミュニケーションマネージャ
	SMS/MMS
	タスク
	予定表
 MediaHubMini
	ミュージック
	フォト
	ビデオ

実際に APLauncher の "\Windows\iexplorer.exe" を
"\Program Files\NetFront Browser v3.5\NFBrowser.exe" に書き換えて、
NetFront を登録することが出来ました。


関連エントリ
EMONSTER lite S12HT の文字入力を MS-IME に切り替える
EMONSTER lite S12HT と文字入力
EMONSTER lite S12HT メニューや通信など


使いやすくてびっくりした!

YouTube gesture10key改造版(g10k3)デモ on 03
↑大変わかりやすいです。


詳細は下記から
gesture10key/gesture10keyr

様々なバリエーション
gesture10key改造ファイル


●他の sip データも探してみました。
どれも工夫されたものばかりで良く作り込まれています。


hp49g+
とあるhx2490bユーザーのメモ hp49g+
  ダウンロードはこちらから


ニコタッチ (2タッチ/ポケベル入力)
ときどきもばいる p905i_nt_sip


タイ語、HTC Touch Dual 風
El Camino Real 英語 日本語 タイ語 入力 スクリプト
El Camino Real HTC Touch Dual 風 各種入力パネル


emonsip
Desire for wealth emonsip

emonsip バリエーション
C_andY の iPHONE + WINDOWSMOBILE メモ emonsip★ネイル用スキン完成\(*^▽^*)/

  C_andY の冷蔵庫

emonsip バリエーション 英語キーボード対応
Smart Phone memo emonsipのキーコードをX01HT仕様に変更成功!


ページ送りキー
伊藤浩一のW-ZERO3応援団 pageupdownsip3color


srkeyboardsip 改良版
小人閑居為不善 SIPローマ字変換用スクリプト改変(続)


フルキータイプ
モバイル日記(旧ほぼW-ZERO3[es]日記?) TouchKeySip用自分カスタマイズキーボードV1.2 [WM(自作ツール未満・・・)]


他にもあるかと思います。抜けていたらごめんなさい。