WindowsMobile 5/6.x/WindowsVista/XP/7/x64 oyayubiwm v1.46 2009/10/09 Hiroyuki Ogasawara ●はじめに oyayubiwm は「親指シフト」入力を行うためのソフトウエアです。 現在 WindowsMobile5.0/6.x や Windows PC (Vista/XP/7/x64) に対応しています。 W-ZERO3[es]/EM・ONE 等の WindowsMobile 端末では、外付けキーボードでの入力を 想定しています。これらの機種は USB ホストや Bluetooth でしっかりしたキーボー ドがつながるので、本格的な文字入力端末として活用することが可能です。 従来は  ・ローマ字かな入力  ・JISかな入力 の2種類の方法を使うことができました。このソフトを使うことで、さらに  ・親指シフトによるかな入力 ができるようになります。   ワンタッチでいつでもローマ字入力と親指シフトの切り替えができます。   これから親指入力を始めようという初心者の方にもお勧めです。 なお EM・ONE/W-ZERO3[es] の場合は外付けキーボードでの入力のみ置き換えます。 内蔵キーボードでは従来どおりのローマ字入力が可能で、できる限り相互に影響を 与えないよう作られています。 設定は自由に変更できるので、多少変更することでより多くの機種や他のキーボード 接続手段でも同じように使えると思われます。 PC版の em1keypc を使うことで、Windows 7/Vista や XP でも同じように親指シフト 入力を行うことができます。 ※「親指シフト」は富士通のワープロ等で使われていた日本語かなの入力方式です。  打鍵数が少なく効率よく入力することができます。 ★★親指シフトソフト初(?)の「お得カウント機能」がつきました。 日本語入力時に、タイプしたキー数を表示します。さらにローマ字入力換算で何キー 分なのか、ローマ字入力に対して「何キー分得したのか」リアルタイム表示すること ができます。練習の励みにしてください。 ●対応機種 ・WindowsMobile5.0/6.0/6.1   ・EM・ONE (S01SH), EM・ONEα(S01SH2) 等   ・W-ZERO3[es] (WS007SH), Advanced W-ZERO3[es] (WS011SH) 等   ・その他 WindowsMobile 端末   ・日本語配列の USB 外付けキーボード利用または Bluetooth Keyboard ・Windows 7/Vista/XP (Win32/Win64)   ・日本語配列のキーボードでのみ確認しています。   ・64bit Windows、x64 にも対応しています。 ●利用条件 フリーソフトウエアです。自己責任の範囲で自由にお使いください。問題や障害が 生じても作者は責任を取れませんので、重要なデータはあらかじめバックアップを とっておいてください。 ●インストール方法  (1) このプログラムは em1key のスクリプトで記述されています。まずは    em1key v1.24 以降のインストールを行ってください。   ・WindowsMobile5.0/6.x (EM・ONE/ZERO3シリーズなど) http://hp.vector.co.jp/authors/VA004474/wince/wince.html#em1key   ・WindowsPC (7/Vista/XP) http://hp.vector.co.jp/authors/VA004474/win/win32.html#em1keypc  (2) アーカイブ内のスクリプトファイル scriptcommand.txt を、em1key を    インストールしたフォルダにコピーしてください。    WindowsMobile5.0/6.x (EM・ONE/ZERO3等) なら次の場所です。     \Program Files\em1key  (3) em1key を一旦終了させて、もう一度起動します。    scriptcommand.txt を読み直すためです。  以上で完了となります。 ●アンインストール方法  不要なら em1key ごとアンインストールしてください。  もしくは元の scriptcommand.txt に設定を戻してください。 ●使い方 日本語入力が下記のようになります。 ・WindowsMobile の場合は外付けの USB/Bluetooth キーボードをつないだ状態です。 ・親指シフト配列は IME (日本語入力)が On の場合のみ有効です。 左親指シフトキー [無変換]キー 右親指シフトキー [変換]キー --------------------------------------------- (1) そのまま押した場合 --------------------------------------------- 1 2 3 4 5 6 7 8 9 0 ー ^ ¥ BS 。 か た こ さ ら ち く つ , 、 「 う し て け せ は と き い ん ; 」 . ひ す ふ へ め そ ね ほ ・ .. --------------------------------------------- (2) 親指シフト時 --------------------------------------------- ? / 〜 「 」 [ ] ( ) .. .. .. .. .. ぁ え り ゃ れ よ に る ま ぇ @ ゜ を あ な ゅ も み お の ょ っ .. .. ぅ ー ろ や ぃ ぬ ゆ む わ ぉ .. --------------------------------------------- (3) クロスシフト時 濁音/半濁音用 --------------------------------------------- ? / 〜 「 」 [ ] ( ) .. .. .. .. .. ゜ が だ ご ざ ぱ ぢ ぐ づ ぴ .. .. ヴ じ で げ ぜ ば ど ぎ ぽ .. .. .. .. び ず ぶ べ ぷ ぞ ぺ ぼ ゛ .. --------------------------------------------- (4) 小指シフト OASYS互換 半濁音用 --------------------------------------------- ! ” # $ % & ’ ( ) .. = 〜 | .. Q W E R T Y U I O P ‘ { A S D F G ぱ J K L + * } Z ぴ C ぷ ぺ N M < ぽ ? _ ◎そのまま押すと (1) のキーマップになります。 ◎左右それぞれの親指シフトキーと「同時に」押すと (2) のキーマップになります。 ◎左右「逆」の親指シフトキーと同時に押すと (3) のキーマップになります。 親指シフトは先に押しておく必要はありません。文字キーと同時にたたきます。 ◎親指シフトキーを単独で押すと元のキーとして機能します。([変換]/[無変換]) 詳しくは http://nicola.sunicom.co.jp/ こちらのページなどを参考にしてください。 ● WindowsMobile (EM・ONE/ZERO3等) の補足 ・IME の On/Off は「半/全」キーで行ってください。スクリプトの修正により他の キーに変更することもできます。 ・ZERO3[es] や EM・ONE で利用する場合、ATOK の予測変換表示が ON になって いるとレスポンスが悪くなることがあります。ATOK を利用する場合は、あらか じめ予測変換を OFF にしておくことをお勧めします。 ・機種やキーボードによっては内蔵キーボードかどうかの切り分け判定に失敗する 可能性があります。誤動作する場合は 770行辺りにある「func TABLE_FUNC 1」の 関数を有効にしてください。 動作確認は次の環境で行っています。  ・W-ZERO3[es] WS007SH + ATOK  ・EM・ONE S01SH + MS-IME ● PC版 Windows 7/Vista/XP の補足 ATOK を使う場合は em1keypc 付属の em1keypc_atok.bat で起動してください。 デフォルトでは TSF モードで起動します。em1keypc_atok.bat を使うと古い IME と 互換性のある IMM モードで起動します。 あらかじめ IME の設定を「ローマ字入力」モードに切り替えておいてください。 「KANA」のインジケータが ON の場合、かなモードの判定がずれてしまいます。  もし [A] の入力で「4」が入ってしまう場合はかなモードの判定がずれています。  IME 言語バーの「かな」インジケータが光っている場合は消してください。  または IME の設定画面で、入力設定が「ローマ字入力」になっているか確認して  ください。  もし [A] の入力で「あ」が入ってしまう場合は、IME の on/off の初期状態が取  れていません。一度だけ IME の on/off を繰り返してみてください。または [Ctrl]+[0] を入力します。 動作確認は次の環境で行っています。  ・Windows Vista + Microsoft Office IME 2007  ・Windows Vista + Microsoft IME  ・Windows XP SP2 + Microsoft IME Standard 2002 var.8.1  ・Windows XP SP2 + Microsoft Natural Input 2002 var.8.1  ・Windows Vista x64 + Microsoft Office IME 2007  ・Windows Vista x64 + Microsoft IME  ・Windows Vista x64 + ATOK 2008  ・Windows 7 x64 + ATOK 2008 WindowsVista の場合 IE7 のセキュリティレベルが高いと IME の切り替え状態を判定 できないことがあります。保護モードを外すと使用できるようになります。 [Ctrl]+[0] で手動で親指シフトを on/off できます。これを使えば強引に親指シフト 入力できるようになります。(IE7のセキュリティレベルが高い場合でも可能) em1keypc 1.28 以降は Windows 64bit (x64) 対応になりました。 ●記号を全角にする方法 一部の記号は IME の設定によっては半角で入力される可能性があります。 A〜Z / ,.[] 例えば Microsoft IME で前回の変換に従う設定になっていると、小指シフト+[A] 等 で入力できるA〜Z を全角で確定したか半角で確定したかによって、/,.も全角に なるか半角になるか決まります。 オートコレクトで「常に全角に変換」 ●特殊操作 ・[Ctrl]+[0] (ゼロ)   通常 IME 状態によって自動でキー配列の切り替えを行いますが、何らかの原因   で自動でうまく切り替わらなかった場合の緊急操作です。通常のキー配列を使   うか親指シフト用に入れ替えたキー配列を使うか切り替えできます。 ・通常配列 (IME off 時に選択される、A〜Z が刻印どおり、キー入れ替え無し) ・親指シフト配列 (IME on 時に選択される、キー入れ替えあり) ・[Ctrl]+[9]   親指シフト機能の動的な on/off を行います。無効にした場合は IME 状態が変   わってもキー配列の切り替えを行いません。アプリケーションとの相性や、キー   ボードの繋ぎ替えなどで一時的にローマ字入力を使いたい場合に使用します。 ●英字モードへの対応に関して oyayubiwm は、IME 内部の文字入力モード切替に対応していません。 IME 自体はひらがなモード固定で、英数入力時は IME 自体を off にする操作を基本 としています。 IME の種類に依存せず、文字入力モードを外部から確実に判断出来る手段が IME の on/off 状態だからです。 この方法を使えば WindowsMobile でも Windows でも ATOK でもほぼ確実に状態の 判断が可能です。ひらがなモードかどうかの判断は、とくに WindowsMobile では IME の種類が多く難しいものとなっています。 ●カスタマイズ方法 scriptcommand.txt の 483行あたりにある「カスタマイズ」部分を書き換えると、 さまざまな設定ができるようになっています。  ・親指シフトキーの変更  ・親指シフトキーの追加  ・親指シフトキー単独押しの場合の挙動の設定  ・文字キーと親指シフトキーを切り離すための TIMEOUT 値設定  ・[:*]キーを [BS] とみなすかどうか  ・[]}]キーを [ESC] とみなすかどうか  ・[[{]キーで入力される文字の設定  ・[P]キーで入力される文字の設定  ・[Z]キーで入力される文字の設定  ・小指[SHIFT]で入力される文字の設定 ・その他 もちろんこれ以外の設定も可能で、例えば 2401行 以降にある定義に手を加えれば 直接キー配列を自由に変更することができます。 注意: 書き換えた設定の内容を反映させるには、em1key を一旦終了させてから起動 しなおしてください。または em1key のメニューから「scriptの読み直し」を実行 してください。ファイルを書き換えただけでは変更は反映されませんのでご注意 ください。 ●親指シフトキーを変更するには scriptcommand.txt の「カスタマイズ」の中の define LOS_KEYCODE1 VK_NCONVERT define ROS_KEYCODE1 VK_CONVERT の部分を書き換えます。最後の VK_ で始まる記号が割り当てるキーを意味します。 VK_CONVERT = 変換 VK_NCONVERT = 無変換 例えばスペースキーにするなら VK_SPACE に書き換えます。 VK_SPACE スペースキー キーシンボルの一覧は scriptcommand.txt の前の方 163行以降にあります。 ●親指シフトキーを追加するには 複数の異なるキーを親指シフトとして使用することができます。例えば [無変換] と [変換] が親指シフトキーの状態で、さらに [スペース] キーも親指シフトとして 追加できます。  ・キーボードの配列が微妙でどのキーを親指シフトにするか決めかねる場合  ・配列が違うキーボードを複数つなぎ変えて使う場合 などに便利です。 デフォルト状態からさらに [スペース] キーを 右親指シフトキー として追加する 場合は「カスタマイズ」の中の ROS_KEYCODE2 を書き換えます。 define ROS_KEYCODE2 VK_SPACE これで [変換] だけでなく [スペース] キーも右シフトとして機能します。もちろん 単独押しではそれぞれ '変換' と 'スペース' の別キーとして機能しますし、単独 押しでの挙動を別設定することもできます。 同じように LOS_KEYCODE2/LOS_KEYCODE3/ROS_KEYCODE3 にも定義を追加することが できます。追加キーが不要なときは 0 を与えてください。 ●親指シフトキーを単独で押した場合の挙動を変えるには 「カスタマイズ」の中の LOS_SHARE_FUNC1 / ROS_SHARE_FUNC1 を書き換えます。 デフォルトの _os_ORG の場合、本来のキーと同じ働きをします。単押しの機能を 無視するには _os_NOP に書き換えてください。 例えば [Delete] キーを 右親指シフト として割り当てた場合、誤操作で文字が削除 されると困ります。次のように書き換えると右親指シフトキーを単押ししても何も 起こりません。親指シフト専用キーになります。 define ROS_SHARE_FUNC1 _os_NOP 他にも下記の設定が出来ます。 _os_NOP 何もしない _os_ORG 本来のキーコードを発行する _os_IMESW IME の状態を切り替える (WindowsMobile のみ) _os_HENKAN 変換キーと見なす _os_CUSTOM 任意のキーコードを割り当てる (1894行付近の _os_CUSTOM にコードを 書き込めます。) ●TIMEOUT 値を設定するには 「カスタマイズ」の中の OS_ATIMEOUT の値を書き換えます。0 で TIMEOUT 無しに なります。40msec 単位なので大体次のような時間になります。 設定サンプル値 0 無制限 1 40msec 3 120msec (0.12秒) 5 200msec (0.20秒) 10 400msec (0.40秒) 12 480msec (0.48秒) 25 1000msec (1.00秒) この値は、文字キーを押してからシフトキーの入力を受け付けるまでの時間です。 指定した時間以上過ぎると、キーが押しっぱなしでもシフトとみなされずにそれぞれ 単独のキー入力となります。 デフォルトは 0 で無制限となっています。システムのキーリピート開始待ち時間が 短い場合はこの値をあまり長く設定しても意味が無いので注意してください。 また、親指シフトキーを押してから文字キーを受け付けるまでの時間は特に TIMEOUT はなく常に無制限となっています。 Key → OS (TIMEOUT 設定可能、デフォルトでは TIMEOUT なし) OS → Key (TIMEOUT 無し、常に無制限) ● [:*]キーを [BS] にする方法 「カスタマイズ」の中の CSW_OASYSBS_ENABLE を TRUE にします。 ●[ALT] キーを 左親指シフトキー にする方法 FILCO のキーボード パピヨン(Papillon) 改 (ShopU親指化版) を使う場合など、 [ALT] キーを左親指シフトキーに割り当てる場合は次のようにしてください。 [ALT] キーを使う場合は LOS_ALT_PATCH_ENABLE1 を TRUE にする必要があります。 また、割り当てできるのは LOS_KEYCODE1 のみとなっています。 define LOS_KEYCODE1 VK_MENU # 左が [ALT] define ROS_KEYCODE1 VK_SPACE # 右が [SPACE] define LOS_ALT_PATCH_ENABLE1 TRUE define LOS_SHARE_FUNC1 _os_NOP 残念ながら一瞬だけ [ALT] が押されたことになるので、これができるのは WindowsMobile5.0 のみです。PC 版では [ALT] キーの割り当てを行うと、同時に メニューが開いてしまうなどの副作用が発生してしまいます。WindowsMobile5.0 では 事実上 [ALT] がアプリケーションに影響しないことを利用しています。 また WindowsMobile の場合でも、ごくまれにタイミングによってはキーを取りこぼす 可能性があります。 (1)右手のキー KEYDOWN (2)右手のキー KEYUP と同時に 左親指シフト(ALT) KEYDOWN (3)左手のキー KEYDOWN (2)のキーコードが送信されるタイミングで ALT が押されると SYSKEYDOWN になる ので、ALT のキャンセルが間に合わないためです。なお v1.42 で 100% ではないも ののだいぶ取りこぼす確率が減りました。少々特殊なキーコードをはいていること になるのでその点だけ注意してください。 ●小指シフトの設定 小指シフトは OASYS の伝統的に半濁音キーですが、NICOLA の仕様上は必須ではあり ません。半濁音「ぱぴぷぺぽ」入力に使わない場合はローマ字入力時と同じように 「A」〜「Z]や記号「>」の文字入力に使うことができます。 CSW_OASYSBS_ENABLE を TRUE にすると半濁音キーで、FALSE にすると英数記号優先と なります。 ●お得カウント機能を有効にする 「カスタマイズ」の中の CSW_COUNT を TRUE にします。 TRUE にすると設定画面に次の情報を表示します。 ・日本語入力時のキーのタイプ回数 ・ローマ字入力だったら何タイプ必要か ・ローマ字入力と比較して何キー分得したか 親指シフトの日本語入力以外はカウントしません。記号は1キーとしてカウントし ます。 CVAL_COUNTUPDATE の数値を変更すると、何キー毎に描画を更新するか変更できます。 CSW_COUNT が FALSE の場合は、カウント機能も処理のコードも読み込み時に除去 されるため、一切処理負荷になりません。もちろんメモリも消費しません。 ●その他のカスタマイズ 他にもキー配置の設定など細かい設定ができます。scriptcommand.txt の 「カスタマイズ」部分を参照してください。 例えば WindowsMobile 向けに次の設定もできます。 ・WindowsMobile 用 [文字]キーの設定 ・[Pause]キーを OK ボタンにする (FILCO パピヨン向け) ・[Ctrl] と [CapsLock] を交換する ・[ESC] と [半/全] を交換する など ●ちょっと高度なカスタマイズへのヒント - 任意のキー置き換え(1) ・モードに関係なく完全に(常に)キーを置き換えたい場合 下記のような定義を scriptcommand.txt の最後に追加してください ------------------------------------------------------------------------------- func TABLE_ALLMODE <置き換えるキー> PUSHIMM <置き換えたいキーコード> CALL _subSync endfunc ------------------------------------------------------------------------------- 例えば [ScrollLock] キーを押したら常に [F1] として機能させたい場合は次のよう になります。これで完全にキーが入れ替わります。 ------------------------------------------------------------------------------- func TABLE_ALLMODE VK_SCROLL PUSHIMM VK_F1 CALL _subSync endfunc ------------------------------------------------------------------------------- ●ちょっと高度なカスタマイズへのヒント - 任意のキー置き換え(2) ・日本語モード(IME on、親指シフト状態)だけ、キーを入れ替えたい場合 ------------------------------------------------------------------------------- func _TABLE_OS <置き換えるキー> TESTSYSFLAG SYSFLAG_IME IF_FALSE 10 PUSHIMM <置き換えたいキーコード> CALL _subSync LABEL 10 EXIT FALSE endfunc ------------------------------------------------------------------------------- 「TESTSYSFLAG SYSFLAG_IME」は IME が on かどうか調べるための命令です。 「IF_FALSE 10」は、直前の命令で IME が on と判定されなかったら「LABEL 10」に 飛びます。IME が on だったら次の命令に進みます。 「PUSHIMM」〜「CALL」は (1) の完全置き換えと同じです。IME が on の場合のみ ここに来ます。 「LABEL 10」は「IF_FLASE 10」のとび先です。IME が off の場合にここから実行し ます。 「EXIT FALSE」は、キーの置き換えをしないで終了することを意味します。つまり IME が off なら本来のキーとして機能します。 ●ちょっと高度なカスタマイズへのヒント - 置き換える動作の例(3) ・任意のキーを送信する これは oyayubiwm 独自の実装で、KEYDOWN / KEYUP の両方を内部で処理しています。 親指シフト機能との同期も行います。内部で EXIT TRUE しています。 ------------------------------------------------------------------------------- PUSHIMM <送信するキーコード> CALL _subSync ------------------------------------------------------------------------------- ・IMEの状態を切り替える IME(日本語入力) の on/off を切り替えます。 ------------------------------------------------------------------------------- CALL _subHelper WINCMD WINCMD_IMESW EXIT TRUE ------------------------------------------------------------------------------- ・Shift/Ctrl/Win 等の同時押しを送信する [OK] ボタン ([Win]+[F6]) などの同時押しを指定できます。 ------------------------------------------------------------------------------- CALL _subHelper SETMODIFIER <修飾キー> SENDKEY <送信するキーコード> EXIT TRUE ------------------------------------------------------------------------------- 例 [OK]ボタン (WindowsMobile) SETMODIFIER MOD_RWIN SENDKEY VK_F6 例 [Ctrl]+[A] SETMODIFIER MOD_CTRL SENDKEY 'A' ・複数のキーストローク 複数のより凝ったキーストロークをいくつでも記述できます。必要ならそれぞれの キーに SETMODIFIER をつけることができます。 ------------------------------------------------------------------------------- CALL _subHelper SENDKEY <送信するキーコード> SENDKEY <送信するキーコード> : EXIT TRUE ------------------------------------------------------------------------------- 例 [Shift]+[A], [B], [Ctrl]+[C] SETMODIFIER MOD_SHIFT SENDKEY 'A' SENDKEY 'B' SETMODIFIER MOD_CTRL SENDKEY 'C' ・複雑なキーシミュレーション キーの押した状態を細かく制御できます。RAWDOWN で指定したキーを押下げます。同 じように RAWUP でキーを離します。複雑なキーの押下げ状態など SENDKEY だけでは 記述できないキー操作のシミュレーションが可能です。 ------------------------------------------------------------------------------- CALL _subHelper RAWDOWN <キーコード> : RAWUP <キーコード> : EXIT TRUE ------------------------------------------------------------------------------- ・任意のプログラムを起動する (WindowsMobileのみ) ------------------------------------------------------------------------------- CALL _subHelper string 0 "<プログラム名>" "<引数>" EXEC 0 EXIT TRUE ------------------------------------------------------------------------------- ●さらなるカスタマイズへのヒント 上記の設定はほんの一例です。まだまだできることはたくさんありますし、もっと 凝ったこともいくらでもできます。詳しくはスクリプトのマニュアル http://flatlib.main.jp/dench/vec/more/em1keyscript.txt を参照してください。 作成した script や設定、ノウハウなどは公開していただけると、お互い参考に なりますし非常に助かります。 ●親指シフト判定について 交差判定による親指シフト入力が可能です。親指シフトキーが先に押されても、 文字キーが先に押されても、ストロークが交差していれば(重なっていれば)シフトと 判定することができます。 タイムアウトは、「文字キー」→「親指シフトキー」の流れでのみ設定できます。 デフォルトではタイムアウトは無効になっているので、交差していればゆっくり押し てもシフト扱いになります。ただしキーリピートは発生します。 遅延判定による 3キー同時押下げ状態に対応しています。例えば  (1) A文字キー 押し  (2) 親指シフト 押し  (3) B文字キー 押し このように親指シフトをはさんで 3つまでのキーが同時に押された場合、(2) の 親指シフトが A と B のどちらに付くかを区別します。(2) - (1) と (3) - (2) の 時間のうち短い方 (近い方) にシフトが付くと判断します。 そのためキー入力は、ストロークの組み合わせによっては、キーを離すか判断できる キーが押されるまでバッファリングされます。 ●アルゴリズムの詳細 基本的にはこれだけです。 ・文字キーが押されたらとりあえずバッファ(KeyBuffer)に入れる (_subPushKey) ・親指シフトキーが押されたらとりあえずバッファ(OSBuffer)に入れる (_subPushOS) ・文字が確定する条件になったらバッファ内容を送信する (_subFlushAll) 文字が確定する条件は次のとおりです。 ・KeyBuffer に文字がある状態でさらにキーが押されたとき。 ・OSBuffer にシフトキーがある状態で文字キーが押されたとき。 ・OSBuffer にシフトキーがある状態で他の親指シフトキーが押されたとき。 ・バッファされている文字キーを離したとき。 ・バッファされている親指シフトキーを離したとき。 ・親指シフト入力関連以外のキーが押されたとき。(TAB,Enter,変換等) なお、OS→Key の流れではすぐに確定しますが、Key→OS の場合は確定せずにバッファ リングだけ行われます。 確定時に、特殊な条件での判定が行われることがあります。 ◎3キー同時押下げ時のきりわけ PrevKey→OS→Key で OS がどちらにつくか、キーが押されたときのタイムスタンプ で判定します。 (1) 前の文字を PrevKey + OS で確定してからバッファリングする (2) 前の文字を PrevKey 単独で確定してから OS + Key も確定する ◎TIMEOUT 判定 Key→OS は本来ただのバッファリングですが、キー発行の時間差が TIMEOUT を超 えていれば Key を先に確定します。 ● x64 版について em1key の変換エンジン自体は 32bit で動作していますが、proxy dll を用いて 64bit プロセスと通信を行っています。 32bit/64bit で別のプログラムが走っているわけではありません。 em1keypc + oyayubiwm 自体のインスタンスは一つだけで、内部状態を共有しています。 ●プログラムについて em1key のスクリプトは、Windows のキー入力の挙動を記述できる専用の言語となっ ています。単純なキーテーブルのカスタマイズだけでなく、ある程度アルゴリズムの 領域にまで踏み込んだキーボードのカスタマイズ記述が可能となります。親指シフト 入力の実装は、もともとそのサンプルも兼ねて作成したものです。 記述はアセンブラライクで非常にわかりにくいですが、それなりに自由度は高くなっ ています。他機種や異なるキー配列への応用、ASCII キーボード対応なども設定の 変更だけで可能でしょう。 スクリプトの利点として、即座に挙動をフィードバックできる点があります。実際に 使いながら、少しでもおかしな点があればすぐ更新して結果を確認しつつ作りこみを 行いました。コンパイルを伴うものだとなかなかこうは行きませんし、特に WindowsMobile だとクロス開発なので、時間がかかってしまいます。 筆者が OASYS lite FROM10 を所有していて親指シフト入力を使っていたのは 20年近 くも前であり、すっかり入力方法を忘れていてぜんぜん速く打てなくなっていました。 当時はクロスシフトの半濁音が無く必ず小指シフトで打っていた気がします。(ちな みに親指シフトソフトの作成は X68K 版ドライバに続いて二度目です。) そのためタイピングがひたすら甘いので、気づいていないおかしな点がまだまだある かもしれません。連続で押された場合の挙動など、v1.40 の作り直しでシビアなケー スの挙動がいろいろ改善されました。これからも徐々に改善していくつもりです。 2007/04/29 1.00 2007/05/04 1.10 ・マニュアルと食い違っていた記号の配置を修正しました。 ・em1key デフォルトの余計な機能を削除し純粋に親指シフト入力機能のみにしました。 ・em1key v1.21 に対応し、設定画面のヘルプやバージョン表示に対応しました。 2007/05/10 1.20 ・クロスシフトで半濁点文字の入力ができなかったミスを修正しました。 ・PC 版 Windows (Vista/XP) に対応しました。 ・親指シフトキーの単独押しで本来のキー機能が発行されるようになりました。 ・[:*]を[BS]に設定できるようになりました。 2007/05/11 1.30 ・単独の親指シフトキーが [Shift]/[Ctrl] を考慮していなかったので対応しました。 ・PC版でCE用の[全/半]キー置き換え処理が生きており悪さをしていたバグを修正し ました。 ・キー刻印コードの送信がバッファリングされておらず、一部記号で文字順が逆にな ることがあったバグを修正しました。 ・数字段の記号も親指シフトに対応してみました。(/[]が入力できません) ・マニュアルの記号配置ミス修正しました。 ・「ヴ」「゜」「゛」を配置しました。 ・[]}]を[ESC]に設定できるようにしました。 ・[Ctrl]+[0]で親指モードが手動切り替えできるようになりました。 ・親指キーの設定をわかりやすくしました。 2007/05/12 1.31 ・[SPACE] 等割り当てしていないキーが混在していると入力順が逆になって先に確定 してしまうことがあったので、変換操作も文字と同じようにバッファリングする ようにしました。 ・バッファリングされていない記号キーが混在すると順番が逆になることがあったので 改良しました。 ・/[],.の記号が打てるようになりました。 ・親指シフト+[[{] で半濁点「゜」が入るようになりました。単独 [[{] で濁点に 設定することもできます。 2007/05/13 1.32 ・SYSFLAG_CTRLSWAP/SYSFLAG_ESCSWAP の設定を有効にしました。 ・ALT対応カスタマイズ機能、親指シフトキーの単独押しを無効にする設定の追加。 2007/05/15 1.40 ・動作ロジックをほぼ全部作り直しました。関数の整理、不要なコードの削除、動作 の最適化、変数/フラグ/関数の整理、細かいコメントや説明の追加など。 ・em1key v1.24 の ifsw/ifnsw による static カスタマイズへ移行しました。読み 込み時に設定の分岐が解決するのでメモリも動作も効率よくなります。 ・他のキー発行できちんと flush できるようになりました。連続タイプ時の Enter など非バッファキーが逆転する問題を対処しました。 ・逆手の親指シフトキーの入力で前の入力を確定するようになりました。 ・親指シフト入力状態を左右別管理にしました。 ・単独の親指シフトキー時の挙動を変更できるようにしました。 ・親指シフトキーを複数指定できるようにしました。単押し時の挙動は別にできます。 ・連続押しのキーを切り離すため親指シフトの前方 TIMEOUT に対応しました。 ・連続押し途中の関係ない KEYUP によってシフト待ちのはずのキーが確定してしまう 問題を修正しました。 2007/05/17 1.41 ・マニュアルにカスタマイズ方法のより詳しい説明を追加しました。 ・マニュアルに特殊操作(Ctrl+0/9)についての記述を追加しました。 ・[ALT]キーを親指シフトキーとして使う場合の注意点を追加しました。 ・親指シフトによってキー操作をどれだけ得したか表示できる「お得カウント機能」 を追加しました。練習の励みにしてください。 2007/05/18 1.42 ・WindowsMobile5.0 で、[ALT]キーを親指シフトキーに割り当てた場合の取りこぼし を改善しました。 2007/05/19 1.43 ・Papillon改の設定を最初から用意しました。 2007/05/23 1.44 ・空いている小指シフトにローマ字入力時のような英字入力を割り当てました。 ・小指シフトを半濁音キーにするか英字記号入力にするか切り替えられるようにしま した。従来は SHIFT+[.>]キーを「ぽ」か「>」の切り替えだけでした。 2007/10/27 1.44 ・em1keypc 1.28 で Vista x64 に対応したのでマニュアルを更新しました。 2008/01/01 1.45 ・PCで親指シフト中 Shift+カーソルキーで選択できない問題修正。(IMEがoffの場合  のみ、onの場合はまだできません) 2009/10/09 1.46 ・親指シフトキー単押しに変換や任意のキーを割り当てられるように変更しました。 Hiroyuki Ogasawara http://www.vector.co.jp/authors/VA004474/ http://wlog.flatlib.jp/