俺#

新潟市でIT業を営むおっさんのブログ。

HYBRID W-ZERO3(WS027SH)のハードウェアキーカスタマイズ

標準のキーショートカット(←でOK、WinLiveで逆トグル、*長押しでマナー、ボリュームやカメラ操作など)を生かしたまま、好みのキーフックソフトを使って任意のキーの動作をカスタマイズをする方法です。

普通にキーフックソフトを導入すると、標準のキーショートカットは無効になってしまいます。そのため全ての機能をキーフックソフトで設定してあげる必要がありますが、現状では逆トグルやカメラフォーカスなどを再現できません。

ネタ元は2chのハイブリ板。毎度ながら2chの有志の努力には感服してしまいます。散々既出な情報も含まれると思いますが、自分用まとめということで。5台のW-ZERO3シリーズを使ってきましたが、キーフックを使ったカスタマイズをしたのはハイブリが初めてだったりします。

■必要なソフト

いずれもフリーソフトです。作者に感謝して使いましょう。

http://geocities.yahoo.co.jp/gl/hou_ming_2/view/20070906/1189012118

「MultiKeyHook」。Windows Mobileはキーフックがシステムで1個しか有効にならないので、複数のキーフックを行うソフトを併用する場合に必要になります。これ、どうやって実装してあるのか見当が付かないんですよね(苦笑)

http://www.dotfred.net/TaskMgr.htm

「Task Manager application(TaskMgr)」。その名の通りのソフトで、プロセスやサービスのの詳細を表示・変更できるなど、Windowsのタスクマネージャのような機能があります。コマンドラインでサービスの制御を行うこともできます。

http://d.hatena.ne.jp/xianon/00000000/

「SortInchKey」。軽量かつ柔軟性の高いキーフックソフト。これは好みで他のソフトにしてもOKです。また、キーリピートなど異なる機能を提供するソフトを複数組み合わせている人も結構いるようです。

http://www.geocities.co.jp/SiliconValley-Cupertino/2039/

「gsGetFile.dll インターナショナル版」。機能が拡張されたファイル選択ダイアログ。MultiKeyHookが必要とします。

http://kaguray.hp.infoseek.co.jp/GSFinder-C/

「GSFinder+ Custom」。ファイルエクスプローラの無敵版。ファイルの操作にあったほうが良いです。

■設定手順

1)gsGetFile.dll、MultiKeyHook、TaskMgr、SortInchKeyをインストールします。

gsGetFile.dllとMultiKeyHook.cplは\Windowsフォルダにコピー、TaskMgrとSortInchKeyは通常のcabインストーラです。

2)TaskMgrを使用して、標準のキーショットカットを提供するサービスの起動方法を変更します。サービスは通常はOS起動時に開始しますが、この設定を行うと手動で開始するまで開始しなくなります。

「スタート→System→TaskMgr」を起動→「Applications▼」をクリックして「Services」を選択→「C5 Misc Service(SHW0:)」をホールドタップ→「Set Manual」を選択

3)C5 Misc Serviceを起動するショートカットを作成します。

TaskMgrに/startsvcオプションを付けて起動するとサービスを開始できます。リンク先が

"\Program Files\FdcSoft\TaskMgr\TaskMgr.exe" /startsvc "MiscService"

のショートカット(.lnkファイル)を作成して適当な場所に置きます。

4)MultiKeyHookに、キーフックソフトとサービスを起動するショートカットを登録します。

「スタート→設定→システム→Multi Key Hook」を起動→「Add」ボタンでキーフックソフトのexeを登録→「Add」ボタンで3)で作成したショートカットを登録

キーフックソフトが複数ある場合は優先度が高い順に登録し、サービス起動のショートカットは一番最後に登録します。

5)キーフックソフトの設定を行います。

SortInchKeyの場合はSortInchKey.iniファイルを作成して、SortInchKeyのインストール先のフォルダに置きます。SortInchKeyには設定画面があるのですが、ハイブリでは現時点ではうまく動作しません。これについての詳細はキーフックソフトに依存する話なので後述します。

6)ライトメールを起動するショートカットをスタートアップに作成します。

C5 Misc Serviceを手動で開始する設定にした場合、何故かライトメール自動起動しなくなってしまうので、その対策です。リンク先が

"\Windows\lightmail.exe"

のショートカット(.lnkファイル)を作成して「\Windows\スタートアップ」に置きます。

7)再起動する

標準のキーショートカットと、キーフックソフトで設定した操作が可能かどうか確認しましょう。

8)モーションセンサによる画面縦横切り替えが動作しなくなるのを諦める

これも6)と同じくC5 Misc Serviceを手動で開始する設定にした場合の障害です。起動後に「スタート→設定→システム→モーションセンサ」からOFF/ONすると復活しますが、自動復旧させる手段が見つかっていません。

■どうしてこんなに手間がかかるのか?

標準のキーショットカットもキーフックで実現されています。なので「MultiKeyHook」を使うだけでイケると思いきや、標準のキーショットカットはアプリ(普通のexe)ではなくサービス(起動時に開始するアプリと仕組みが異なる常駐ソフト)として実装されているので、ちょっと工夫が必要な訳です。

また、サービスの起動方法を変更せずに、MultiExecとTaskMgrを併用してサービス停止→再開させる方法もありますが、サービスを停止する時や再開する時に例外を吐いて安定しない環境が多いようです。私もそのパターンでハマりました。また、そのようにして運用しても8)の問題だけは回避できませんでした。

■SortInchKeyの設定について

有志が「雛形になるSortInchKey.ini」を各所で公開してくれているので、それを拾ってくるなりコピペするのがラクで良いです。特殊キーのキーコードを調べる手間も省けます。私の場合の設定ファイルを以下にコピペします。

[Settings]
holdDuration=250
doubleDuration=300


[Define]
WIN=0x5b
OK=0x5c+0x75
ACTION=0x86+0x0d
ENTER=0x0d
LEFT=0x25
UP=0x26
RIGHT=0x27
DOWN=0x28
SOFT1=0x70
SOFT2=0x71
BACK=0x08
TAB=0x09
SHIFT=0x10
CTRL=0x11
ALT=0x12
HOME=0x24
END=0x23
PAGEUP=0x21
PAGEDOWN=0x22
APP1=0x5b+0xc1
APP2=0x5b+0xc2
APP3=0x5b+0xc3
APP4=0x5b+0xc4
APP5=0x5b+0xc5
APP6=0x5b+0xc6
APP7=0x5b+0xc7
HYPER=0xfe
MOJI=0xed+0x8f
XCRAWLUP=0x26+0x83
XCRAWLDOWN=0x28+0x83
MAIL=0xf3
ARROW=0xf4
RingOn=0x72
RingOff=0x73
SlideOpen=0xe9
SlideClose=0xea
LIVE=0xc3
VOLUP=0xf2
VOLDOWN=0xf1
ROTATE=0xc4
CAMERA=0xee


[MAIL カメラアプリ]
code=MAIL
with=
scan=
mode=short
direction=both
activeKind=appli
activeName=カメラアプリ
keyClick=MAIL


[MAIL]
code=MAIL
with=
scan=
mode=short
direction=both
activeKind=none
activeName=
keyDown=SOFT1
keyUp=SOFT1


[MAIL LONG]
code=MAIL
with=
scan=
mode=long
direction=both
activeKind=none
activeName=
keyDown=WIN
keyUp=WIN


[MAIL DOUBLE]
code=MAIL
with=
scan=
mode=doubleShort
direction=both
activeKind=none
activeName=


[MAIL DOUBLE LONG]
code=MAIL
with=
scan=
mode=doubleLong
direction=both
activeKind=none
activeName=
exec=\Program Files\WkTASK\WkTaskCmd.exe|/l


[ARROW]
code=ARROW
with=
scan=
mode=short
direction=both
activeKind=none
activeName=
keyDown=SOFT2
keyUp=SOFT2


[ARROW LONG]
code=ARROW
with=
scan=
mode=long
direction=both
activeKind=none
activeName=
keyDown=OK
keyUp=OK


[ARROW DOUBLE]
code=ARROW
with=
scan=
mode=doubleShort
direction=both
activeKind=none
activeName=


[ARROW DOUBLE LONG]
code=ARROW
with=
scan=
mode=doubleLong
direction=both
activeKind=none
activeName=
exec=\Program Files\WkTASK\WkTaskCmd.exe


[CAMERA カメラアプリ]
code=CAMERA
with=
scan=
mode=short
direction=both
activeKind=appli
activeName=カメラアプリ
keyClick=ACTION


[CAMERA]
code=CAMERA
with=
scan=
mode=short
direction=both
activeKind=none
activeName=
exec=\Windows\ShCamera.exe


[CAMERA LONG]
code=CAMERA
with=
scan=
mode=long
direction=both
activeKind=none
activeName=
exec=\Windows\pimg.exe


[CAMERA DOUBLE]
code=CAMERA
with=
scan=
mode=doubleShort
direction=both
activeKind=none
activeName=


[CAMERA DOUBLE LONG]
code=CAMERA
with=
scan=
mode=doubleLong
direction=both
activeKind=none
activeName=

私は「スタート→設定→個人→ボタン」で設定ができるキーは弄らない方針で設定していますが、もちろんそれらのキーを上書くことも可能です。標準のキーショートカット(*を付けたもの)とSortInchKeyの併用で、以下のような設定で運用しています。

MAIL(MULTI)普通押し:左ソフトキー、カメラアプリのみ本来の動作(*)でオートフォーカス
MAIL(MULTI)長押し:スタートメニュー
MAIL(MULTI)ダブル長押し:WkTaskランチャ
←キー普通押し:右ソフトキー
←キー長押し:OK
←キーダブル長押し:WkTaskタスク切り替え
カメラ普通押し:カメラ起動、カメラアプリのみ決定キーでシャッター*1
カメラ長押し:画像一覧起動
画面回転普通押し:画面回転(*)
画面回転長押し:キーロック(*)
ボリュームアップ:そのまま(*)
ボリュームダウン:そのまま(*)
Windows Live普通押し:ライトメール起動(*)、文字入力の逆トグル(*)
*キー長押し:マナー(*)
#キー長押し:ドライブモード(*)

モーションセンサの障害が残っているのが残念ですが、いまのところ他に問題はなさそうです。これでキー操作においてはad[es]や03を超える快適度が実現できました。あとはスライド時にロックを解除できれば言うことなしなのですが、ロック動作をカスタマイズしなければ実現できないようなので、またヒマがあったらチャレンジする予定です。

*1:カメラキーでは何故かうまく動作しないため決定キーを割り当てている。