WindowsMobile5.0/6.0 (WindowsCE) W-ZERO3 (WS007SH/003SH/004SH/011SH) 用キー操作改良ツール ctrlswapmini v0.32 W-ZERO3[es] の文字入力方法を改善するためのツールです。主にテンキー周りの入力 を修正します。標準で不便な部分を改良して使いやすくするのが目的です。WS003SH や WS004SH など他の WindowsMobile 端末でも動作します。 (1) 2タッチ(ポケベル)入力方式 (ニコタッチ風配列もあり) (2) 拡張かな入力(トグル)追加 (小文字変換、逆トグル、自動送り機能付き) (3) 画面回転時はテンキー部でPageUp/Down、[#]で左ソフトキー、NumLock等が可能 (4) キーマップの完全なカスタマイズ([1]〜[#]12キー対応、2タッチ/トグル両対応) (5) 範囲選択や Clip&Paste 等の編集操作に対応 (6) 外部プログラムの起動(記号・定型文入力ツール等があれば設定次第で呼び出せる) (7) 標準のテンキーかな入力の改良 ([→]キーの挙動修正) (8) USBキーボード向け キー交換 (CTRL-CapsLock、ESC-半/全) (9) QWERTYキーの一部をテンキーとみなして片手操作可能(WS003SH/WS004SH用) 予め注意事項及びマニュアルをよく読んでからお試し下さい。 より携帯電話操作に近いキーマップをweb上で公開しています。下記URLからどうぞ。 http://hp.vector.co.jp/authors/VA004474/wince/keymap.html v0.32 ・Advanced[es] mode を追加。標準かな/拡張かなで[→]補正がきかなかった問題 問題を修正しました。詳細設定画面で「Advanced [es] mode」にチェックを入れて おいてください。 v0.31 の変更点 ・command ROTATE で指定できない向きがあったため修正しました。 ・起動直後に Dialog を開かない設定(-s option)の場合、初期入力モードが 2タッチになってしまう問題を修正しました。画面回転で直っていました。 ●動作環境と互換性について ・WindowsMobile5.0/6.0 および互換性のある環境で動作します。 ・テンキーの置き換えはキーコードに依存するため W-ZERO3[es]/Advanced 専用です。 ・CTRL/CapsLock/ESC/半全 等のキー入れ替えは機種依存ありません。 ・QWERTYキーの置き換えは特に機種依存ありません。 ●動作確認機種 ・W-ZERO3[es] WS007SH (WindowsMobile 5.0) ・W-ZERO3 WS003SH (WindowsMobile 5.0) ・EM・ONE S01SH (WindowsMobile 5.0) ・Advanced W-ZERO3[es] WS011SH (WindowsMobile 6.0) ●注意点 現在はまだ安定よりも機能の実証”ほんとに実現できるのかどうか”を優先している 段階です。なぜプログラムが力技で困難なのかは「●プログラムの動作の解説」を 参照してください。そのためバグが残っている、もしくは根本的にアルゴリズム的な 問題が含まれている可能性があります。重要なデータ等は予めバックアップを取って おいて下さい。 (1) API の問題 このプログラムは SetWindowsHookEx() を使用してキー入力の置換を行っています。 WindowsCE の制限により SetWindowsHookEx() を使用しているソフトがすでに常駐し ている場合は起動することができないようです。 同じように ctrlswapmini が起動している場合は他の SetWindowsHookEx() を使用す るソフトが起動できなくなります。ご注意下さい。 (共存可能にしてくれるソフトも存在するようです) (2) 機能実装の問題 ドライバ側の挙動を外部から推測して処理しています。実際の状態を直接見ているわ けではないため動作が完全ではない可能性があります。 またキーを置き換えたりキーコード列に依存する処理を行っているので、キーボード をシミュレーションするツール、ソフトウエアキーボード、USB 外付けキーボードの 入力に影響を与える可能性があります。予めご了承下さい。 ●使用条件 このソフトウエアが原因で問題や障害が生じても、作者は一切保証を行わず、作者に 責任も無いものとします。重要なデータはあらかじめバックアップを取り、利用者の 自己責任において使用してください。内容物を改変したものを無断で配布することを 禁止します。利用に当たっては、使い方(説明書)をよく読んでからお使いください。 このソフトはフリーソフトウエアです。 ●インストール方法 ctrlswapmini.ARMWM5.CAB アーカイブ内の CAB ファイルを WindowsMobile デバイスの適当なフォルダに転送し、 ファイルエクスプローラから実行してください。インストール先は本体メモリ (デバイス)をお勧めします。 バージョンアップ時は上書きインストールが可能です。そのまま CAB を実行して いただいて結構です。 ※バージョンアップ時にインストールフォルダの defaultkeymap.txt が上書き されます。書き換えて使用している方は事前に別フォルダなどへ保存しておくよう にしてください。 ●アンインストール方法 (1) メニューの「プログラムについて」を開いてください。下にある [Uninstall用設定削除] ボタンを押します。自動起動の解除と、書き込んだ レジストリの設定を消去します。 (2)「設定」の「プログラムの追加と削除」から「HYP ctrlswapmini」を削除します。 注意 もし (1) で [Uninstall用設定削除] ボタンを押す前に (2) のアン インストールを行った場合、下記のファイルが残っていたら手動で削除して ください。 \Windows\スタートアップ\ctrlswapmini.lnk 同じようにレジストリ \HKEY_CURRENT_USER\Software\HYP\ctrlswapmini に設定がありますので不要な場合は削除をお願いします。 (この2つは (1) の操作で削除されます。) ●使い方 起動するとメイン画面になります。使用する機能を選択してください。選択するだけ で機能は有効になります。 ■メイン画面 ┃                     ┃ ┃ ○無し(標準かな入力)           ┃ ┃ ○拡張かな入力(逆トグル等)        ┃ ┃ ○2タッチ(ポケベル)入力         ┃ ┃                     ┃ ┃ [ ]自動送り [1000]msec         ┃ ┃ [ ]後変換/逆トグル後も自動送りする   ┃ ┃ [ ]自動CapsLock             ┃ ┃ [ ]ニコタッチ風             ┃ ┃ [ ]IME制御(Atok用)           ┃ ■詳細設定画面 ┃                     ┃ ┃ [ ]標準かな入力でも[→]key補正する   ┃ ┃ [ ]Ctrl-Caps交換            ┃ ┃ [ ]Esc-半全交換             ┃ ┃ 画面回転時の動作[回転時keymap使用]   ┃ ┃ [ ]QWERTYキーをテンキーにする(WS003/4用)┃ ┃ [キーマップ読込] [default に戻す]   ┃ ┃ [                ]   ┃ ┃ [自動起動に設定] [自動起動を解除]   ┃ ┃ [ ][クリア]で2タッチの一打目を取り消す ┃ ┃ [ ]Advanced [es] mode          ┃ ◎テンキー入力の改良 ○無し(標準かな入力) 入力方法を置き換えずに W-ZERO3[es] 元のままにします。 ○拡張かな入力(逆トグル等) 標準と同じトグル方式ですが、このプログラムで独自のものに置き換えます。 携帯電話と同じように、小文字変換や逆トグル機能を使うことができます。 詳細は「●拡張かな入力について」を参照してください。 ○2タッチ(ポケベル)入力 ポケベル方式で文字を入力できるようになります。 詳細は「●ポケベル(2タッチ)入力モード」以降を参照してください。 [ ]自動送り 拡張かな入力時に、一定時間経つと同じキーでも別の入力扱いにし ます。右側の欄で送る速さを調整できます。(msec単位 1000で1秒) [ ]後変換/逆トグルも自動送りする 拡張かな入力時に、[*]や[#]も一定時間経つと別入力とみなすよう にします。 [ ]自動CapsLock 英字入力時に大文字小文字変換キーを使った場合、次から大文字と 小文字のデフォルトを切り替えます。 [ ]ニコタッチ風 2タッチ入力のキー配列を、ニコタッチ風に変更します。 [ ]IME制御(Atok用) 英数入力時に IME を強制解除します。W-ZERO3[es] のファーム v1.50 以降は IME制御 なしでも大丈夫です。 [ ]標準かな入力でも[→]Key補正する 標準のかな入力でも[→]の補正を行います。(詳細は後述) トグルキャンセルです。ades では 「Advanced[es] mode」を ON にしておく必要があります。 [ ]QWERTYキーをテンキーにする(WS003/4用) QWERTYキーボードを開いた状態で縦持ちして、テンキーと同じよう に操作することができます。テンキーのない WS003SH/WS004SH でも 片手操作できるようになります。(詳細は後述) [ ][クリア]で2タッチの一打目を取り消す 2タッチ入力で、1打目を入力した直後は文字を消さないで入力状態の み取り消します。より携帯電話に近い操作ができます。 [ ]Advanced[es] mode Advanced [es] でのキーコードの違いを吸収します。Advanced [es] で使う場合はチェックを入れておいてください。[→] キーによる トグルキャンセルを可能にします。 ◎画面回転時の動作 画面を回転したとき(横画面で使用した場合など)にテンキーをどのように扱 うか選択できます。 [回転時keymapを使用] 専用のキーマップを割り当てます。テンキー部分で PageUp/Down や 数字入力固定にできます。カスタマイズも可能です。 [KeyHookを開放] key の置換処理を一時的に開放します。この間 SetWindowsHookEx() を使用している他のアプリを起動することができます。 [標準かなに戻す] 回転時は標準かな状態に戻します。KeyHook開放と違い Ctrl/ESC Swap が有効なので、外付け USB Keyboard との同時使用時に便利 です。これは v0.10 以前の動作と同じです。 [何もしない] 何もしません。画面が縦のときと同じで 2タッチや拡張かながその まま有効になります。 注意: Advanced [es] では回転時キーマップは使用できません。 ◎テンキーカスタマイズ [キーマップ読み込み] 任意のキーマップファイルを読み込みます。ここで読み込んだファイルの設 定は次回起動時からも有効になります。(メニューから読み込んだ場合も同 じです) 下の box には現在登録されているキーマップのパスを表示します。 [デフォルトに戻す] 付属している標準のキーマップに戻します。 ◎USB外付けキーボード向け [ ] Ctrl-Caps 交換 [Ctrl]キーと[CapsLock]キーを交換します。 [ ] Esc-半/全 交換 [Esc]キーと[半/全]キーを交換します。 ◎自動起動設定 [自動起動に設定] \Windows\スタートアップ フォルダにショートカットを作成して、再起動 後も自動起動するよう設定します。スタートアップからの起動時にはウィン ドウ画面を表示しません。 [自動起動を解除] 自動起動を解除します。 設定した内容は保存されるようになりました。毎回設定し直したりコマンドライン オプションに数値を書き込む必要はありません。 このアプリケーションが起動している間だけ各機能が有効になります。常駐させる にはそのままの状態で Today や他のアプリを起動するか、右ソフトキーの [隠す] を押してください。 本当に終了するにはメニューから「終了」を選択します。 ●コマンドラインオプション 下記のコマンドライン指定が可能です。 -C 常駐解除するコマンドとして機能します。 (暫定機能、将来仕様変更の可能性あり) -s 初回起動時にウィンドウを表示しません。自動起動に設定すると -s オプションつきのショートカットが作成されます。 ●ポケベル(2タッチ)入力モード 携帯電話のポケベル(2タッチ)入力同様に [0]〜[9] を2回入力することで文字入力で きます。この入力方式は画面上のインジケータが[あ][カ][_カ]のいずれかで使用する ことを想定しています。 下記の表では縦が最初に入力する数字キー、横列が二番目に入力するキーです。 例えば [1][3] と順番に打つと「う」が入ります。 濁点・半濁点や、小さい文字の入力は [*] キーで行うことができます。 ※04/05を濁点・半濁点にしたい場合は、下記URLの v905sh.txt や p902i.txt を使用 してください。 http://hp.vector.co.jp/authors/VA004474/wince/keymap.html 大文字モード 1 2 3 4 5 6 7 8 9 0 # * -+-------------------------------------------- 1| あ い う え お A B C D E 2| か き く け こ F G H I J 3| さ し す せ そ K L M N O 4| た ち つ て と P Q R S T 5| な に ぬ ね の U V W X Y 6| は ひ ふ へ ほ Z ? ! ー / 7| ま み む め も \ & っ 改行 8| や ( ゆ ) よ * # SPC spc 切替 9| ら り る れ ろ 1 2 3 4 5 0| わ を ん 、 。 6 7 8 9 0 #|Al Sel Pup End Pdw Cut Cpy Pst Tab 改行 小文字モード 1 2 3 4 5 6 7 8 9 0 # * -+-------------------------------------------- 1| ぁ ぃ ぅ ぇ ぉ a b c d e 2| か き く け こ f g h i j 3| さ し す せ そ k l m n o 4| た ち っ て と p q r s t 5| な に ぬ ね の u v w x y 6| は ひ ふ へ ほ z ? ! - / 7| ま み む め も \ & っ 改行 8| ゃ ( ゅ ) ょ * # SPC spc 切替 9| ら り る れ ろ 1 2 3 4 5 0| わ を ん ゛ ゜ 6 7 8 9 0 #|Al Sel Pup End Pdw Cut Cpy Pst Tab 改行 [*] による後変換表 -+------------------------------------------------------------- 1| あぁ いぃ うぅ えぇ おぉ Aa Bb Cc Dd Ee 2| かが きぎ くぐ けげ こご Ff Gg Hh Ii Jj 3| さざ しじ すず せぜ そぞ Kk Ll Mm Nn Oo 4| ただ ちぢ つづっ てで とど Pp Qq Rr Ss Tt 5| な に ぬ ね の Uu Vv Ww Xx Yy 6| はばぱ ひびぴ ふぶぷ へべぺ ほぼぽ Zz ? ! ー- / 7| ま み む め も \ & っ 改行 8| やゃ (「<{ ゆゅ )」>} よょ * # SPC 切替 9| ら り る れ ろ 1 2 3 4 5 0| わ を ん 、,゛ 。.゜ 6 7 8 9 0 ○[8][0] で大文字モードと小文字モードの切り替えができます。 ○ATOK と MS-IME 時で若干挙動が異なっており、挿入される文字の全角半角等が異 なっている場合があります。 ○[7][0] か [#][#] で改行します。 ○[8][8] = 全角スペース、[8][9] = 半角スペース ○W-ZERO3[es] の ATOK の場合は IME制御 にチェックを入れることで英数を同時に 入力できるようになります。(ファームウエア 1.50以降は必要ありません) ○画面回転時は「回転時キー配列」に切り替わります。 ○[#]も数字キーと同じように 2タッチできます。 ・[#][#] 改行 ・[#][1] 全選択 ・[#][2] 選択開始 ・[#][3] PageUp ・[#][4] ・[#][5] 選択解除 ・[#][6] PageDown ・[#][7] Cut ・[#][8] Copy ・[#][9] Paste ・[#][0] Tab 例えば [#][2][→]..で範囲選択して[#][8]でコピー、[#][9]でペースト ○自動CapsLockにチェックしておくと、[*]の変換操作によってアルファベットの 大文字小文字のデフォルト状態が切り替わります。 ○キーマップはカスタマイズによって自由に変更することができます。 ●ポケベル入力ニコタッチ風 ニコタッチは Panasonic 製の携帯電話に搭載されているポケベル(2タッチ)入力の 一種です。最初のキーを押した後にガイド表示が出るなど、非常にわかりやすいのが 特徴です。キーレイアウト部分だけ参考にして若干アレンジしつつのせてみました。 キーレイアウトが違うだけなので、[*] による濁点&小文字変換など基本的な操作は 通常の2タッチと同じです。 通常モード 1 2 3 4 5 6 7 8 9 0 # * -+-------------------------------------------- 1| あ い う え お . / _ @ 1 2| か き く け こ 切替 a b c 2 3| さ し す せ そ 改行 d e f 3 4| た ち つ て と っ g h i 4 5| な に ぬ ね の spc j k l 5 6| は ひ ふ へ ほ SPC m n o 6 7| ま み む め も p q r s 7 8| や ゆ よ ゃ ゅ ょ t u v 8 9| ら り る れ ろ w x y z 9 0| わ を ん 、 。 ー ・ ! ? 0 #|Al Sel Pup End Pdw Cut Cpy Pst Tab 改行 切り替え時 1 2 3 4 5 6 7 8 9 0 # * -+-------------------------------------------- 1| ぁ ぃ ぅ ぇ ぉ . / _ @ 1 2| か き く け こ 切替 A B C 2 3| さ し す せ そ 改行 D E F 3 4| た ち っ て と つ G H I 4 5| な に ぬ ね の spc J K L 5 6| は ひ ふ へ ほ SPC M N O 6 7| ま み む め も P Q R S 7 8| ゃ ゅ ょ や ゆ よ T U V 8 9| ら り る れ ろ W X Y Z 9 0| わ を ん 、 。 ー ・ ! ? 0 #|Al Sel Pup End Pdw Cut Cpy Pst Tab 改行 [*] による後変換表 -+------------------------------------------------------------- 1| あぁ いぃ うぅ えぇ おぉ . / _ @ 1 2| かが きぎ くぐ けげ こご 切替 Aa Bb Cc 2 3| さざ しじ すず せぜ そぞ 改行 Dd Ee Ff 3 4| ただ ちぢ つづっ てで とど っつ Gg Hh Ii 4 5| な に ぬ ね の Jj Kk Ll 5 6| はばぱ ひびぴ ふぶぷ へべぺ ほぼぽ SPC Mm Nn Oo 6 7| ま み む め も Pp Qq Rr Ss 7 8| やゃ ゆゅ よょ ゃや ゅゆ ょよ Tt Uu Vv 8 9| ら り る れ ろ Ww Xx Yy Zz 9 0| わ を ん 、, 。. ー- ・ ! ? 0 ○キーマップが異なるだけで、使い方は通常のポケベル入力と同じです。 ○[2][6] でモードが切り替わります。 ○[3][6] か [#][#] で改行します。 ○[6][6] = 全角スペース、[5][6] = 半角スペース ○画面回転時は「回転時キー配列」に切り替わります。 ○[#]も数字キーと同じように 2タッチできます。 ○ATOK の場合は IME制御 にチェックを入れることで英数を同時に入力できるように なります。 ○自動CapsLockにチェックしておくと、[*]の変換操作によってアルファベットの 大文字小文字のデフォルト状態が切り替わります。 ○キーマップはカスタマイズによって自由に変更修正することができます。 ●拡張かな入力について 標準のかな入力と同じ入力方法です。ひとつのキーを何度も押すことで文字を選択し ます。さらに、一般の携帯電話と同じような次の機能が拡張されています。 (1) [*] ワンキーによる大文字小文字変換 [*]キーで濁点・半濁点だけでなく小文字への変換もできるようになります。 変換表を参考にしてください。「つ」→「っ」への変換は濁点が優先されて いるためワンキーではありません。その代わり [4た][#] の逆順を使うと より少ない操作で「っ」の入力ができます。 (2) [#] 逆順変換 (逆トグル) 何らかの文字入力後に [#] を押すと、文字変換を逆順にたどるようになり ます。例えば「か」のとき [#] を押すと「こ」になります。 未入力時(トグル状態でない場合)は [#] で記号入力ができます。 つまり、現在の仕様では記号入力は「逆順しか」できません。 (3) 自動送り (時間差分判定) 同じキーの文字を複数回つづけて入力する場合は、区切りとして [→] を 入力する必要があります。 「自動送り」にチェックしておくと、入力した文字が前の入力より約1秒 以上時間差がある場合にトグル送りとみなさず、新しい文字入力扱いに します。見た目で判断付かないのでわかりにくいですが、慣れれば [→] を押す手間が省けます。判定時間は msec 単位で指定することができます。 デフォルトは 1000 (約1秒) です。 (4) 自動CapsLock 英数入力時に大文字小文字変換を使用して文字確定すると CapsLock 状態が 反転します。例えば [2か][*] で A → a と小文字の a を入力すると、 次から小文字がデフォルトになります。残念ながら画面上部の インジケータと同期していませんのでご了承下さい。(Lock 状態だけ変える には QWERTY キーボードの [Fn] + [Shift] が必要です) 個の機能を有効にするには「自動Caps」にチェックしておく必要があります。 キー操作 [あ][カ][_カ] [A][a][_A][_a] ----------------------------------------------------------------------- [1あ] あいうえおぁぃぅぇぉ ./_@1 [2か] かきくけこ ABCabc2 [3さ] さしすせそ DEFdef3 [4た] たちつてとっ GHIghi4 [5な] なにぬねの JKLjkl5 [6は] はひふへほ MNOmno6 [7ま] まみむめも PQRSpqrs7 [8や] やゆよゃゅょ TUVtuv8 [9ら] らりるれろ WXYZwxyz9 [0わ] わをん[空白]− SPC $%+<=>[]^'{|}0 [*] 改行 改行 [#] 、。!?・ [*] 濁点・半濁点・大文字小文字変換、変換可能文字がない場合は改行 [#] 未入力時はトグルの逆順送り ----------------------------------------------------------------------- [*]キーによる後変換表 ----------------------------------------------------------------------- あぁ いぃ うぅ えぇ おぉ かが きぎ くぐ けげ こご Aa Bb Cc aA bB cC さざ しじ すず せぜ そぞ Dd Ee Ff dD eE fF ただ ちぢ つづっ てで とど っつ Gg Hh Ii gG hH iI な に ぬ ね の Jj Kk Ll jJ kK lL はばぱ ひびぴ ふぶぷ へべぺ ほぼぽ Mm Nn Oo mM nN oO ま み む め も Pp Qq Rr Ss pP qQ rR sS やゃ ゆゅ よょ ゃや ゅゆ ょよ Tt Uu Vv tT uU vV ら り る れ ろ Ww Xx Yy Zz wW xX yY zZ わ を ん 、,゛ 。.゜ ----------------------------------------------------------------------- ○CapsLock 状態では上記表のうち英字の大文字小文字が逆になります。 ○画面上部の文字種によって入力モードが変わります。ただし英字の大文字小文字は 連動しません。(外部から情報が取れないため) また IME制御 が on の時は英数は 常に半角です。 ○画面回転時は「回転時キー配列」に切り替わります。 ○英数モードかつ[1あ]の連続押しの場合に限り、途中で数字の1が紛れ込んでしまい トグルが切れます。逆トグル[#]では問題ないのでできるだけこちらを使用してく ださい。 ○当然ながら[→]補正相当の機能は最初から内蔵しています。 ○キーマップやトグル順、割り当てられている文字などはカスタマイズによって自由 に変更することができます。 ○キーマップを変更して convertbell Function を使うと、拡張かな でも 2タッチ のように Clip&Paste できるようなキーマップを作ることができます。 ●画面回転時キー配列 「画面回転時の動作」を [回転時keymapを使用] に設定しておくと、横画面時に専用 のキーマップを使用することができます。 例えばブラウザ等、横画面の方が便利なアプリケーションの場合にテンキー部分を PageUp/Down や ソフトキー1 (左ソフトキー) として利用することができます。 また QWERTY キーボードを使用している場合に、テンキー部分を便利な補助ボタンと して活用することが可能です。 もちろんカスタマイズによってキー配列を変えることができるので、90度回転したテ ンキーを作ったり、通常通りトグルや2タッチを割り当てることも可能です。 カーソルモード ----------------------------------------------------------------------- [1あ] ] (または」) [2か] PageUp [3さ] PageDown [4た] [ (または「) [5な] HOME [6は] END [7ま] ` [8や] 無し [9ら] 無し [0わ] NumLock 数字モードに切り替え [*] NumLock 数字モードに切り替え [#] ソフト1キー (左側の [ - ] ボタン) ----------------------------------------------------------------------- 数字モード ----------------------------------------------------------------------- [1あ] 1 [2か] 2 [3さ] 3 [4た] 4 [5な] 5 [6は] 6 [7ま] 7 [8や] 8 [9ら] 9 [0わ] 0 [*] NumLock カーソルモードに切り替え [*] NumLock カーソルモードに切り替え [#] ソフト1キー (左側の [ - ] ボタン) ----------------------------------------------------------------------- ○数字モードでは、文字入力がどの状態でも ([あ][カ]でも) 直接数字を入力する ことができます。 ○ソフトキーでアプリケーションごとのメニューを表示することができます。 ○Advanced[es] では回転時キーマップを使用できませんので注意してください。 ●IME制御 について (W-ZERO3[es] のファーム v1.02 以前のATOK向け) 注意: これはファームウエア 1.02 以前の W-ZERO3[es] で ATOK を使った場合に 必要になる機能です。1.50 以降では特に IME制御 をチェックしなくても、 かなと英数字入力の共存ができるようになっています。 ATOK を使用している場合、2タッチ操作ではアルファベットが入力できないことが あります。例えば [1][6] や [2][7] で "A" を打とうとしても、ローマ字変換で 「あ」になってしまいます。 [ ] IME制御 のチェックを ON にしておくと、アルファベットや数字、記号入力時は強制的に IME を解除するようになります。このとき変換バッファに残っている文字列は確定し ます。また入力する文字列は必ず半角になります。 拡張かな入力(トグル)時も IME制御 の設定を有効にすることができます。 なお、MS-IME やファームウエア v1.50 以降では上記の問題が発生しないので IME制御 のチェックを off にして使用してください。そのままでも自然にアルファ ベットや数字入力ができます。 ●QWERTYキーをテンキーとして使う (WS003SH/WS004SH用) 詳細設定画面の「 QWERTYキーをテンキーにする(WS003/4用) 」にチェックを入れて おくと、引き出したメインキーボードをテンキーとみなして携帯電話風の操作で利用 できるようになります。 ・電車の中など WS003SH/WS004SH でも片手だけで気軽に操作したい方向け ・WS003SH/WS004SH には ATOK が入っていないため、カーソルキーだけで 漢字変換を行うために「imekeyset5」の「PhoneStyle」設定が必要 ・キーの割り当ては後述の設定ファイルで自由に変更可能 ・上下反転できるので左右どちらの手でも操作可能 利用までの手順 (1) 下記 URL から imekeyset5 をダウンロードしてインストール http://hp.vector.co.jp/authors/VA004474/wince/wince.html#imekeyset5 ・imekeyset5 を起動し、Phone Styleを追加する ・Phone Style を選択して [標準にする] を押す ・ソフトリセット (再起動) (2) ctrlswapmini を起動して、詳細設定から 「 QWERTYキーをテンキーにする(WS003/4用) 」にチェック (3) ctrlswapmini のメイン画面から好みに応じて下記どちらかの選択をする ○拡張かな入力(逆トグル等) ○2タッチ(ポケベル)入力 (4) キーボードの引き出しと連動して画面を90度回転する設定にしている人は キーボードとの連動を off にする。 (5) 好みに応じて QWERTYキーボードの [L] キーで左手操作モードになる。 [P]で右手用に戻る。 これで次の操作で利用できるようになります。 ◎右手用 (QWERTYキーボードを縦にした図です) ---------------------------------------------------------------------- [ P ] [ L ]        |    [右手][左手] [ 0 ] [ O ] [ K ] [ ←] | [ 9 ] [ I ] [ J ] [ M ] | [Win] [Hom] [ OK] [Pup] [ 8 ] [ U ] [ H ] [ N ] [ /?]  | [ S1] [End] [ ↑] [Pdw] [ S2] [ 7 ] [ Y ] [ G ] [ B ] [ .;] | [Ent] [ ←] [ ↓] [ →] [Ent] | [ 6 ] [ T ] [ F ] [ V ] | [CLR] [ 1 ] [ 2 ] [ 3 ] [ 5 ] [ R ] [ D ] [ C ] | [IME] [ 4 ] [ 5 ] [ 6 ] [ 4 ] [ E ] [ S ] [ X ] | [Num] [ 7 ] [ 8 ] [ 9 ] [ 3 ] [ W ] [ A ] [ Z ] | [Moj] [ * ] [ 0 ] [ # ] [ 2 ] [ Q ] [Tab] [Sft] | ◎左手用 (上下さかさまにしてQWERTYキーボードを縦にした図です) ----------------------------------------------------------------------    [ Z ] [ A ] [ W ] [ 3 ] | [SPC] [ X ] [ S ] [ E ] [ 4 ] | [ S1] [Hom] [ OK] [Pup] [Win] [SPC] [ C ] [ D ] [ R ] [ 5 ]  | [ S1] [End] [ ↑] [Pdw] [ S2]    [ V ] [ F ] [ T ] [ 6 ] |    [ ←] [ ↓] [ →] [Ent] | [ .:] [ B ] [ G ] [ Y ] [ 7 ] | [CLR] [ 1 ] [ 2 ] [ 3 ] [Ent] [ /?] [ N ] [ H ] [ U ] [ 8 ] | [IME] [ 4 ] [ 5 ] [ 6 ] [Num] [ ↑] [ M ] [ J ] [ I ] [ 9 ] |    [ 7 ] [ 8 ] [ 9 ] [Moj] [ ←] [ →] [ K ] [ O ] [ 0 ] |    [ * ] [ 0 ] [ # ] [ ↓] [Sft] [ L ] [ P ] [ -=] |       [左手][右手] [Ent] = 決定キー (センターキー相当) [CLR] = クリアキー ([BS]相当) [IME] = 日本語 ON/OFF キー (トグル入力用) 文字キーの代わり [Num] = 数値入力モードとの切り替え (NumLock) [ S1] = 左ソフトキー [ S2] = 右ソフトキー [左手]= 画面を上下反転して左手操作できるようにする [右手]= 回転を戻して右手操作できるようにする 実際の入力操作の設定は WS007SH (ZERO3[es]) と全く同じになります。 任意の携帯電話風キーマップの読み込みも可能です。 (キーマップに vkmap の設定を追加する必要があります) 詳細設定画面の「画面回転時の動作」で「標準かなに戻す」を設定しておくと、 横持ちした場合は通常の QWERTYキーボードで入力できるようになります。 おすすめ。 もちろん WS007SH (ZERO3[es]) でも QWERTYキーを使ってテンキーの代わりに操作 できるようになります。ただしキーコードが置換されてしまうので、本来のテンキー 部分での操作ができなくなります。ご注意ください。 ○数値入力モード(NumLock)時のキー配列をカスタマイズするには keymap の rotate_num を修正してください。 ○1つのキーに [SHIFT]+[→] や外部プログラム実行など複雑な動作を割り当てるには vkmap の Direct Mapping 機能を使います。keymap に定義された 2タッチ相当の キー動作をワンキーでできるようにします。詳しくは「●カスタマイズマニュアル」 の「○vkmap/vkmapl に指定できる項目詳細」を参照してください。 ●標準かな入力(トグル入力)の [→] キー補正 W-ZERO3[es] で IME off 時に使ってテンキー入力をしていると、同じキーに割り 当てられた文字の連続入力で問題があることに気が付きます。 トグルキー入力のキャンセルのために [→] を入力しても、同時にカーソル も右に移動してしまう。 例えば文字列 "abc" の先頭に "WW" を挿入しようとしても、マニュアルどおり [9][→][9] と入力すると途中で実際にカーソル移動して "WaWbc" となります。 IME が on の場合はカーソルが入力バッファの末尾に位置することが多いので、この 問題がさほど気にならなかったようです。IME on でもカーソルを移動した後に挿入 で入力すると同じ挙動になります。 [→] 入力補正を ON にしておくとこの問題を回避し、トグル入力直後は → でも カーソルが移動しないようになります。 この機能は主に imekeyset5 によってテンキー入力で MS-IME を利用している人向け です。 ●現在わかっている機能的制限、不具合 ○2タッチ(ポケベル)/拡張かな 入力時 (WS007/011SHのみ) ・画面上部のインジケータが[A][a][_A][_a]の英数入力モードだった場合、 [1あ]だけを何度も入力していると途中に「1」が入ってしまう。 [あ][カ][_カ][_1] のモードでは問題ありません。このモードの範囲で 使用することを推奨とさせていただきます。 ・外付け USBキーボードを使用する場合は 2タッチ/拡張かな 機能を一旦 off に する必要がある。 一部のキーコード処理が衝突してしまうためです。内蔵の QWERTY キーボー ド利用時は専用処理を行うため問題ありません。 ・[1あ] の直後の [クリア] キーのあと 0.2 秒以内に再び [1あ] を押した場合に 間の [クリア] キーが無効になる。 判定時間をより短くできないか研究中です。 ○拡張かな入力時 (WS007/011SHのみ) ・[A][a][_A][_a]の場合に限り、[1あ]の連続押しで途中で "1" が挿入され トグルが切れてしまう。 [1あ]キーの判定が困難なことが原因です。記号キーで使用頻度が少ない と考えられるため[#]による逆トグルで対処してください。 ・英数時に入力モード([_A][_a]等)を切り替えても入力される文字の大文字小文字 が切り替わらない。 外部からこの両者を区別できないのが原因です。代わりに前回の大文字小文 字変換操作を学習する「自動CapsLock」機能を用意しました。 ○標準かな入力 + [→]key補正時 (WS007SHのみ) ・[1あ] キーを使ったアルファベットの Toggle 入力で、最後が数字の "1" だっ た場合は直後の [→] キーをキャンセルできない。 [クリア] キーと [1あ] キーのコードが重複しており、[1あ] キーの連続押 しの場合に一時的に数字モードかどうかの判別ができなくなるのが原因です。 ○ctrlswapmini のテスト入力欄で全選択ができない  ・ctrlswapmini の設定画面にある入力テスト用 box 内でのみ2タッチの [#][1]   など、全選択ができないので確認できません。 メモ等通常の入力時はきちんと全選択できますので、そちらで動作確認を お願いします。 ○相性 ・PQzII や W-ZERO3 UtilityPlus 等の非常に便利な常駐系ソフトと同時に使用す ることができない。 WindowsCE では標準で SetWindowsHookEx() で複数のプログラムを登録 できないのが原因です。複数登録できるように WindowsMobile の機能を 拡張してくれるソフトもあるようです。ホーミン氏の multikeyhook ○ソフトではなくW-ZERO3[es]そのものにいえること ・もともと標準のかな入力であっても、BSで前の文字を消しながらトグル入力する 仕様になっている。なので、BS に対応していないエディタでは直接トグル入力 できないかもしれない。(常に IME on なら大丈夫) 例えば Emacs で C-H が Help だとうまくいかないかもしれません。 ・直接入力の場合はトグル操作もテキストエディタのヒストリとして Undo バッファ に保存されてしまう可能性がある。(これも IME on なら問題なし) 他に不具合等ありましたらご連絡ください。 ●カスタマイズマニュアル ○概要 非常にフラットかつ汎用的な内容になっています。 インストールフォルダ ( \Program Files\ctrlswapmini ) 内の defaultkeymap.txt がデフォルトで読み込まれるキーマップ設定ファイルです。また、現在 web 上で 各種携帯電話互換のキーマップを公開していますのでぜひ参考にしてください。 メニューまたは詳細設定画面の「キーマップ読込」から任意のキーマップ設定ファ イルを読み込むことができます。1つのファイルにキーマップを 10個まで記述する ことができます。 10個のキーマップの意味(defaultkeymapの場合) keymap bell_normal 0 標準 2タッチ(ポケベル) 大文字モード keymap bell_small 1 標準 2タッチ(ポケベル) 小文字モード keymap niko_normal 2 ニコタッチ(ポケベル) 通常モード keymap niko_small 3 ニコタッチ(ポケベル) 切り替え時 keymap ext_kana 4 拡張かな入力(トグル) ひらがな用 keymap ext_alphabet 5 拡張かな入力(トグル) アルファベット用 keymap rotate_cur 6 画面回転時 カーソル移動用 keymap rotate_num 7 画面回転時 数値入力用 keymap test_0 8 未使用 keymap test_1 9 未使用 これらのキーマップはデフォルト設定のために便宜上区別されているだけであって、 機能的には特に差がありません。つまり keymap 0 にトグル入力を定義することも できるし keymap 4 に 2タッチ入力を設定しても構いません。 各機能は [1][2][3] [4][5][6] [7][8][9] [*][0][#] の 12個のキーに個別に設定す ることができます。12個のキーは全部フラットで機能的な差がありません。 例えば大文字小文字変換を [1] に割り当てることもできるし、[#]で「あ」〜「お」 のトグル入力をすることもできます。 2タッチは 12キー全部の組み合わせができます。[1][*] もできるし [*][#] も設定 できます。 また、2タッチとトグル入力は共通のエンジンで動いており特に区別がありません。 そのため [1]〜[9] は 2タッチ入力で [0] だけトグル入力といった混在もできます し、大文字モードは2タッチで、小文字モードはトグル入力にすることもできます。 詳細の前に先に軽く Function と Action の説明をします。大体どんなことができ そうか概要として汲み取ってください。 ○キーに割り当てられる機能 (Function) 各キーマップは必ず 12個分のキー定義を行う必要があります。[1]〜[9][*][0][#] の順番に並びます。それぞれのキーに対して次の Function を設定することができ ます。 ・bell 2タッチの開始を意味します。2番目キー押しによってどんな行動を行うのか 12個の action 定義が続きます。 ・toggle トグル入力の割り当て意味します。トグル操作によって入力する文字の action 定義を任意個数後ろに記述することができます。上限は 255なので、 A〜Z までのアルファベットすべてのトグル入力を 1キーに割り当てること もできます。 ・reverse 逆トグル操作を意味します。トグル状態でない場合に文字入力できるよう、 toglle 同様に action の定義ができます。action 定義が無い場合は純粋 に逆トグルキーとしてのみ機能します。 ・convert ・rconvert 大文字小文字変換などの、後変換機能を意味します。直前に入力された 文字の action が、後変換用の attach リストを持っている場合のみ機能 します。 ・reversebell 逆トグル操作を意味します。トグル可能状態でない場合は 2タッチの1打目 とみなします。 ・convertbell ・rconvertbell 大文字小文字変換などの後変換機能を意味します。後変換できない状態では 2タッチの1打目とみなします。 ○選択時に実行される機能 (Action) ・char AttributeList 送信キー 圧縮フォーマットを使って文字コードを入力します。通常はこの書式で 文字入力を定義します。 ・attach AttributeList 送信キー 後変換用のリストを char に追加します。機能や書式は char と同じです。 必ず char の後に記述しなければなりません。attach 単体では action と して意味を持ちません。 ・raw 送信キーリスト .. 送信すべきコードを直接記述することができます。char より長くなります が、すべてのキーコードを送信することができます。コードは必ず DOWN ま たは UP とペアで記述する必要があります。最大 127ペアまで記述できます。 ・command コマンド名 内部の特殊機能を呼び出します。現在次のコマンドを使用することができます。 MODECHANGE 大文字/小文字などのモードを切り替えます STATECLEAR トグル状態、2タッチ開始状態、後変換状態などの内部状 態をクリアします。 KEYMAP 直接任意のキーマップに切り替えます。 CONVERT 後変換を行います。 ・exec "ファイル名" "コマンドライン" 外部プログラムを呼び出します。記号入力や定型文用のウィンドウがあれば 良いなと思って用意してみました。 ○QWERTYキーの置換マップ(vkmap/vkmapl) 上記のテンキー処理を行う前の段階で、キーコードの置換を行うことができます。 vkmap/vkmapl を使ってキーコードの入れ替えやテンキーとみなすことが可能です。 この処理は、詳細設定画面の「QWERTYキーをテンキーとみなす(WS003/004SH用)」に チェックが入っている場合のみ有効です。 ただし ZERO3[es] (WS007SH) の前面にあるテンキー部分はキーコードが特殊で、 特定の VK が割り当てられていないために vkmap で置き換えることはできません。 また一部のキーは内部処理の都合でキー割り当てができなくなっています。ご了承 ください。(scancode が 0 なため) 割り当てできない QWERTY キー [;,] キー [0] キー (QWERTYキー側のゼロ) ○書式について キーマップはテキストファイルとして記述します。現在使用できる文字コードは ShiftJIS のみです。 # で始まる行と # 以降はコメントです。 キーマップの定義は "Keymap" コマンドで始まります。 キーマップには 12個分のキー定義が含まれます。 ------------------------------------------------- Keymap bell_normal Key bell # [1]の定義 〜 Key bell # [2]の定義 〜 : Key nop # [#]の定義 〜 ------------------------------------------------- キーコードなどの数値は、defcode を使ってシンボルに割り当てておくことが できます。シンボル名の大文字小文字は区別されるので注意してください。 ○記述できるコマンド [ ] で囲まれた項目は省略可能であることを意味しています。 .. が続いているパラメータは複数個記述できます。 defcode シンボル名 数値 ------------------------------------------------------------------------------- シンボルに数値を定義します。action の引数指定時等に、数値の代わりに ここで定義したシンボル名を書くことができます。 シンボル名は任意の文字列です。記号でも構いません。大文字小文字は明確 に区別されます。 例 defcode VK_RETURN '\x0d' ------------------------------------------------------------------------------- vkmap キーコード 置き換える機能 ------------------------------------------------------------------------------- キー入れ替えマップを定義します。任意のキーを別のキーとみなして割り当 てることができます。キーの指定は VK と呼ばれる Windows 内部のキーコー ドを用います。また特殊な内部処理を割り当てることができます。指定でき る機能脳詳細は「○vkmap に指定できる項目詳細」を参照してください。 この設定は右手用になります。左手用の設定は vkmapl で定義します。 例 (VK_COMMA キーを押した場合 VK_RETURN とみなす) vkmap VK_COMMA VK_RETURN 例 ('T' を押したときに テンキーの 1 とみなす) vkmap T VKMAP_T1 ------------------------------------------------------------------------------- vkmapl キーコード 置き換える機能 ------------------------------------------------------------------------------- 左手用のキー入れ替えマップを定義します。vkmap と同じです。 ------------------------------------------------------------------------------- Keymap キーマップ番号 ------------------------------------------------------------------------------- キーマップ定義を開始します。 キーマップ番号は次のシンボルまたは数値で指定してください。 bell_normal '\x0' bell_small '\x1' niko_normal '\x2' niko_small '\x3' ext_kana '\x4' ext_alphabet '\x5' rotate_cur '\x6' rotate_num '\x7' 1つのキーマップには必ず 12個のキー定義が必要です。 ------------------------------------------------------------------------------- Key 機能指定 ------------------------------------------------------------------------------- 各キーに機能を割り当てます。順番に [1]〜[9][*][0][#] となります。 次の機能指定ができます。機能によってはこの直後に action の定義が必要 です。詳細は個別に説明します。 nop bell toggle reverse convert rconvert reversebell convertbell rconvertbell ------------------------------------------------------------------------------- ○キーの定義詳細 Key nop ------------------------------------------------------------------------------- 何もしません。何も反応しないキーになります。 ------------------------------------------------------------------------------- Key bell ------------------------------------------------------------------------------- 2タッチキーとして定義します。2番目に押したキーによって 12種類の動作を 行うことができます。必ず12個分の action 定義が必要です。不要なキーに は nop や command STATECLEAR を指定しておいて下さい。 例 Key bell char ASCII A # [1] 2番目に[1]を押したときに実行される action char ASCII B # [2] 〃 char ASCII C # [3] 〃 char ASCII SHIFT A # [4] 〃 char ASCII SHIFT B # [5] 〃 char ASCII SHIFT C # [6] 〃 nop # [7] 〃 nop # [8] 〃 char KANA 3 # [9] 〃 nop # [*] 〃 command MODECHANGE # [0] 〃 nop # [#] 〃 ------------------------------------------------------------------------------- Key toggle ------------------------------------------------------------------------------- トグルキーとして定義します。連続押しで複数のキーに切り替えることがで きます。切り替わるキーを任意個数記述することが可能です。(最大255) action が1つだけの場合は、直接押したとき反応する Direct Key 相当とな ります。 例 Key toggle char KANA 3 # あ 最初に挿入される char KANA E # い 2番目に挿入される char KANA 4 # う 3番目に挿入される char KANA 5 # え 4番目に挿入される char KANA 6 # お 5番目に挿入される action を複数記述する場合は char のみ書くことができます。トグル動作 は前の文字を BS で消してから挿入し直す関係上、BS で消せない行動を 定義することができないからです。 action を1つだけ記述する場合は、すべての action を指定することができ ます。 例 Key toggle exec "\Program Files\ChotCalc2\chotcalc2.exe" ------------------------------------------------------------------------------- Key reverse ------------------------------------------------------------------------------- 逆トグルキーを定義します。action 定義が無い場合は純粋な逆トグルキー になります。 action を定義すると、トグル動作できない場合は通常のトグル文字入力 キーとして機能します。(default の拡張かなの [#] の挙動と同じです) ただし1文字目が挿入された直後から「逆トグル」として機能する関係上、 逆送りしかできません。action を記述する順番に注意してください。 例 純粋な逆トグルのみのキーにする場合 Key reverse トグル動作しない場合に文字入力を行う場合。 Key reverse action KANA SHIFT , # 、 1番目に挿入される (次から逆順になる) action KANA @ # ゛ 4番目に挿入される action KANA SHIFT / # ・ 3番目に挿入される action KANA \ # ー 2番目に挿入される ------------------------------------------------------------------------------- Key convert ------------------------------------------------------------------------------- 後変換キーを指定します。デフォルトのキーマップでは [*] に割り当てら れています。 直前に入力された文字 (char 指定) に、attach リストが付いている場合 それらのリストの文字を順番に切り替えます。 後変換できない状態では、toggle 同様に指定した action のトグル入力が できます。ただし、action の途中に attach があるとそこで後変換モード になってしまうので注意が必要です。 ------------------------------------------------------------------------------- Key rconvert ------------------------------------------------------------------------------- 後変換を逆順で行います。それ以外は convert と同じです。 ------------------------------------------------------------------------------- Key reversebell ------------------------------------------------------------------------------- 逆トグルキーを定義します。bell コマンド同様に必ず 12個の action 定義 が必要です。逆トグルできない状態では 2タッチ入力とみなします。 ------------------------------------------------------------------------------- Key convertbell ------------------------------------------------------------------------------- 後変換キーを指定します。bell コマンド同様に 12個の action 定義が必要 です。後変換できない状態では 2タッチ入力とみなします。必ず action の 定義が必要なので、純粋な後変換キーとして使う場合は convert を使って ください。 例 Keymap ext_kana の [*] の定義を次のように変更します。 Key convertbell # [*] raw DOWN VK_CONTROL DOWN A UP A UP VK_CONTROL # [1] CTRL+A raw DOWN VK_SHIFT DOWN VK_RIGHT UP VK_RIGHT # [2] select start char VK_PRIOR # [3] PageUp nop # [4] raw DOWN VK_SHIFT UP VK_SHIFT # [5] select end char VK_NEXT # [6] PageDown raw DOWN VK_CONTROL DOWN X UP X UP VK_CONTROL DOWN VK_SHIFT UP VK_SHIFT # [7] CTRL+X raw DOWN VK_CONTROL DOWN C UP C UP VK_CONTROL DOWN VK_SHIFT UP VK_SHIFT # [8] CTRL+C raw DOWN VK_CONTROL DOWN V UP V UP VK_CONTROL # [9] CTRL+V char VK_RETURN # [*] RETURN char VK_TAB # [0] TAB command STATECLEAR 拡張かなモードでも Clip&Paste 等の操作ができるようになります。 ------------------------------------------------------------------------------- Key rconvertbell ------------------------------------------------------------------------------- 後変換の逆順を意味します。それ以外は convertbell と同じです。 ------------------------------------------------------------------------------- ○action 定義の詳細 「Key bell」や「Key toggle」等で実際に行われる文字入力操作が action です。 次の指定ができます。 nop ------------------------------------------------------------------------------- 何もしません。 ------------------------------------------------------------------------------- char [AttributeList ..] キー ------------------------------------------------------------------------------- 実際の文字入力を行います。AttributeList には次のシンボルを組み合わせて 指定できます。 無指定 KANAでない直接送信を意味します。(IME制御 対象外) ASCII KANAでないことを意味します。(IME制御 の対象) KANA KANAキーを ON にしてからコード送信します。 SHIFT SHIFTキーを ON にしてからコード送信します。 DAKUTEN 文字の後に濁点を送信します。 HANDAKUTEN 文字の後に半濁点を送信します。 キーには次の指定ができます。(パソコンの日本語キーボードを見ながら 作業した方がわかりやすいでしょう) A〜Z 日本語キーボードの [Aち]〜[Zつ] に相当します。 1〜9 [1ぬ]〜[9よ] 0 [0わ] - [-ほ] ^ [^へ] \ [\ー] @ [@゛] [ [[゜] ; [;れ] : [:け] ] []む] , [,ね] . [.る] / [/め] _ [_ろ] SPACE スペースキーに相当します。 RETURN リターンキーに相当します。 例えば「あ」を入力するには、日本語キーボードで「かな」にしてから [3あ] を押すので次のようになります。 char KANA 3 同じように「っ」(小さいっ) は「かな」にしてから SHIFT を押しながら [Zつ] なので次のようになります。 char KANA SHIFT Z action char で挿入できないより複雑なキーコードは、raw を使って記述 することができます。char の情報は 1文字あたり 2byte で、1/10 程度に 圧縮されています。 ------------------------------------------------------------------------------- attach [AttributeList ..] キー ------------------------------------------------------------------------------- 直前の char に、後変換用のリストを追加します。attach は単独では action として指定することができません。直前の char と組み合わせて 1つの action になります。キーの指定方法は char と同じです。 例 char KANA F # は attach KANA DAKUTEN F # ば attach KANA HANDAKUTEN F # ぱ この 3行は 1つの action 指定とみなされます。まず「は」が挿入され、 その後 Key convert 指定した後変換キーが押されると順番に切り替わります。 ------------------------------------------------------------------------------- raw 送信コードリスト .. ------------------------------------------------------------------------------- 直接送信する文字コードを記述します。キーを押した状態、離した状態を 個別に指定する必要があり少々面倒です。その代わり、char だけでは指定 できないキー操作をコマ幕記述することが可能です。 例えば Ctrl + V 等を記述することができるので、キーボードショートカッ トである Paste 操作を割り当てることも可能です。 送信コードリストは必ず DOWN か UP と組み合わせてペアで記述します。 例えば [A] を押して離した状態は DOWN A UP A となります。UP を忘れると押しっぱなしになります。指定できるキーは char と同じです。直接数値指定するには '\x??' の書式を使ってください。 127ペアまで記述できます。 Ctrl + A の例 raw DOWN VK_CONTROL DOWN A UP A UP VK_CONTROL ファンクションキーなど、ZERO3 そのままでは押せないキーを記述することも できます。char と異なりそのままデータを格納します。 OK ボタンは VK_RWIN + VK_F7 MOJI キーは VK_RWIN + VK_F6 ------------------------------------------------------------------------------- command コマンド名 引数 ------------------------------------------------------------------------------- ctrlswapmini の内部状態を制御するための特殊な操作を実行します。コマ ンド名として次の指定ができます。 command MODECHANGE 2タッチの 大文字モード/小文字モード を切り替えます。拡張かな 入力の場合は、日本語モード/アルファベットモード の切り替えに 相当します。つまり、次のようなキーマップの相互切り替えを行い ます。 '\x0' ←→ '\x1' '\x2' ←→ '\x3' '\x4' ←→ '\x5' '\x6' ←→ '\x7' '\x8' ←→ '\x9' command STATECLEAR さまざまな内部状態をクリアします。例えばトグル入力中、2タッチ の2番目のキーを待っている状態、後変換の変換中、などです。 この操作で状態をクリアできるので、トグル入力中の [→] 相当 の操作を別キーに割り当てることができるようになります。 command KEYMAP キーマップ番号 MODECHANGE による相互切り替えではなく、直接 10個のキーマップ を切り替えることができます。この操作によって、より多くの モードを駆使したコマンド割り当てを行うことができるように なります。キーマップ番号は次の形式になります。 '\x0' 〜 '\x9' 例 command KEYMAP '\x2' 注意 拡張かな選択時は入力モードによって強制的にキーマップが '\x4' or '\x5' に設定されます。この機能を使う場合は 2タッチに切り替えておくことをお勧めします。 画面回転時の動作として [回転時keymapを使用] を選択して いる場合は必要に応じて '\x6' '\x7' が設定されます。 command CMD_CONVERT action として後変換を実行します。変換できない条件では何も 行いません。 command CMD_RCONVERT action として逆後変換を実行します。変換できない条件では何も 行いません。 command ROTATE 回転番号 画面の回転を行います。 '\x0' 0度 (縦画面) '\x1' 90度 '\x2' 180度 '\x3' 270度 '\x4' 順次回転 0→90→180 .. ------------------------------------------------------------------------------- exec "ファイル名" ["コマンドライン引数"] ------------------------------------------------------------------------------- 指定したパスのプログラムを起動します。 例えば記号入力用ツール、定型文入力用ツール等がもしあれば、キー操作で 呼び出すことによってさらに携帯電話風にカスタマイズすることができるで しょう。画面の明るさ変更などもあれば便利そうです。 コマンドのファイル名はフルパスで記述する必要があります。後ろに引数を 記述できます。 例 exec "\Program Files\ChotCalc2\chotcalc2.exe" exec "\Program Files\swapctrlmini\swapctrlmini.exe" "-C" ------------------------------------------------------------------------------- ○vkmap/vkmapl に指定できる項目詳細 '\x00' キー置き換えしません。元のキーの機能として機能します。 デフォルトではすべて '\x00' になっています。 '\x01'〜'\xff' VK_ コードとみなしてキーコードを置換します。定義されている VK_ で始まるシンボル値を使うと便利です。 '\x100'〜 内部の特殊機能にマッピングします。下記のシンボルが定義されて います。 VKMAP_T0〜T9 テンキーの [0]〜[9] VKMAP_TSTAR テンキーの [*] VKMAP_TPOUND テンキーの [#] VKMAP_NOP 何もしない。押し間違い回避に利用可能。 VKMAP_MOJI [文字]キーとみなす VKMAP_MODECHANGE Keymap の 切り替え (command MODECHANGE 相当) VKMAP_NUMLOCK Keymap の 7 (rotate_num) と交換する VKMAP_IME IME の ON/OFF を行う VKMAP_OK OK ボタン VKMAP_ROTATE 画面の順次回転 VKMAP_ROTATE0 画面の回転 (縦画面) VKMAP_ROTATE90 画面の回転 90度 VKMAP_ROTATE180 画面の回転 180度 VKMAP_ROTATE270 画面の回転 270度 '\x8000'〜 機能の Direct Mapping とみなします。任意のキーマップの、任意 のキーに割り当てられている機能を直接実行できます。指定した キーマップは 2タッチ (bell指定) である必要があります。 bit0〜3 = 2番目に押したキー相当 bit4〜7 = 最初に押したキー相当 bit8〜10 = キーマップ番号 たとえば defaultkeymap.txt の bell_normal ('\x00') には [#][1] に CTRL-A が割り当てられています。そこで '\x80b0' を割り当てることで CTRL-A の実行ができます。 '\x80b0' ||| ||+- [1] ※ |+-- [#] ※ +--- keymap '\x0' ※ 0〜b が [1][2][3][4][5][6][7][8][9][*][0][#] に対応します。 この機能を使うと raw コマンドや exec コマンドによるプログラム 実行等も任意のキーに割り当てることができます。 例えば上記の例で keymap '\x0' の [#][1] に raw DOWN VK_SHIFT DOWN VK_RIGHT UP VK_RIGHT UP VK_SHIFT を定義しておくと [SHIFT]+[→] 相当のキー操作が可能となります。 ○数値指定方法 action の引数や defcode 指定部など、数値部分には次の書式で記述することが できます。数値を直接記述するわけではないので注意してください。 シンボル defcode で定義した内容に置き換わります。 1文字 文字のコードをそのまま使います。 '\x??' 16進数で直接コードを指定します。 ○応用例 ・モード切替を駆使して PC のキーボードにある記号を全部入力できるようにする ・50音最初の1文字だけ右手で [1][2]〜[0] を使って「あ」「か」〜「わ」を入力し、 以後のトグル切り替えは左手で [*] だけで行う。両手うち などなど、設定は工夫次第です。 ○2タッチ と 拡張かな モードの違い この両者は定義できる機能は一緒ですが挙動が多少異なります。 ・2タッチ 入力モードは [あ] 固定で動作します。定義されたキーマップに従って、 文字単位で入力モードを積極的に制御しながら動作します。 ・拡張かな 入力モードの設定を見てキーマップの方を切り替えます。文字単位で入力 モードを制御することは無く常に受身になります。そのため入力モード毎に 入力できる文字種が決まってしまいます。 ○その他知っておくと便利かもしれないこと ・command KEYMAP で '\x0' 〜 '\x9' 以外を指定すると標準かな相当になります。 ●プログラムの動作の解説 W-ZERO3[es] のテンキーはシステムレベルでトグル入力処理を行っているようです。 そのためアプリケーションにはトグル操作をシミュレートするキーコードの並びが送 信されてきており、簡単にはどのキーが実際に押されたのかわかりません。 例えば [1あ] を押すと、押すたびに「あ」「い」〜「お」「ぁ」「ぃ」〜「ぉ」の 操作をシミュレートする複数のキーコードが送られてきます。 もちろん入力モードによってアルファベットになったり数字になったりと、送られて くるコードはまちまちです。トグル入力中なのかどうかもキーコードだけではすぐに 判断できません。 唯一の例外は数字入力モードで、このときだけは IME も off になっていて素直に 1〜9,*,1,# といった素直なキーコードが返ります。 このプログラムでは、送られてくるトグル入力のスキャンコードを素直に受け入れて キーを特定できる情報を抽出します。そしてシステム側のトグル入力のコード列を 無視するように細工します。 ただし [1あ] と [クリア] キーは厳密に分離できないため、この組み合わせの場合 のみタイマーを使って遅延判定しています。 このような手段により、文字入力モードに依存せずにテンキーを単純な1ボタンとし て無理やり認識できるようになりました。 つまり・・ システムレベルで「か」「き」〜「こ」等とトグル入力しているキーコードを受け 取って、それをわざわざポケベル入力や、自前のトグル入力に変換すべく再構築して から出力しているわけです。 たぶんこんなプログラムはめったに作らないし、本当に実現できるとは思いませんで した。でもそのおかげで、ドライバなどシステム側に直接手を入れることなく自由に カスタマイズできるようになりました。 なお、出力されるキーコードや順番に依存しているため、ファームアップ等によって 仕様が変わると動作しなくなる可能性があります。予めご了承下さい。 インストールする CAB サイズが大きくなってますが、ほとんどこのマニュアルと キーマップ定義ファイルの容量になっています。マニュアルは削除しても大丈夫です。 このプログラムはもともと imekeyset5 の作成の流れから派生したものです。MS-IME 使用時に標準トグル入力の[→]キーの挙動を改善したくて、Ctrl/Caps 交換用プログ ラムを流用して実験を始めたのが始まりです。 解析結果を流用して最初にベル打ちを実装したのは単に作りやすかったからであって、 当初の目的はあくまでトグル入力を改善することでした。そしていまどきの携帯電話 の操作に追いつくことです。(だけどすでにベル打ちに慣れつつある自分がいます) なので一応ベル打ち専用ソフトではなく、さまざまな操作の改善ができたら良いなと 思っています。 QWERTYキーボードのテンキー化対応は、どうしても WS003SH で携帯電話操作がしたい という知人のために作りました。もともとトグル入力等の処理を独自に実装していた ので、特にテンキー操作が考えられていない ZERO3 でもそのまま動作しました。 副作用ですが VK コードの完全置換ツールとしても利用できるかもしれません。 ●謝辞 このような無謀なソフトなのに、勇敢に試してくださった方々ありがとうございます。 感想や要望等を報告してくれた方にも感謝します。たいへん参考にさせていただきま した。問題等ありましたらご連絡下さい。 本当に問題あったらごめんなさい。 2006/08/03 0.00 Ctrl/ESC 交換のみ。問題ありそうなので未公開だった 2006/08/16 0.01α Toggle Patch 機能をとりあえずお試しで追加してみた 2006/08/17 0.02α ポケベル mode を実装してみた 2006/08/17 0.03α ポケベル mode に「、」「。」が無かったので追加。 2006/08/17 0.04α ・[隠す] ボタン追加 ・ポケベル時[クリア]等で1キー目をキャンセルできない不具合修正。 2006/08/17 0.05α ・画面回転(4方向)時でも[→]のトグルキャンセルが有効になるようにした。 ・ニコタッチ風配列の暫定組み込み ・アイコン変更 2006/08/19 0.06α ・大幅にプログラム構造を作り直した。 ・ポケベル時のキーマップを変更 ・ポケベル入力時の後変換[*]に対応。 ・画面回転時はポケベル入力が off になるようにした(thanks 百式氏)。 ・ATOK 向けに IME ctrl を追加。 ・toggle patch をデフォルトで off にした。 2006/08/20 0.07α ・ポケベル時[6は]直後の[*]2回目で2度打ちされててしまう問題に対応 ・[1あ]の連続押しで5回目に「ぁ」が入ってしまう問題を修正 ・「ぞ」が[*]で入力できないバグ修正。 ・独自のトグル入力操作を実装してみた。小文字変換、逆トグル、時間差分判定 (自動送り相当)あり。お試し版。これでやっと携帯電話並み ・[隠す]ボタンのバグ修正 ・画面レイアウト変更、日本語表記にした ・メニューにマニュアル呼び出し追加 ・要望があったので -C オプションを追加してみた。 2006/08/21 0.08(未公開) ・[1あ]直後の[クリア]キーがきかない問題を解決できた。ただし100%ではなく [1あ][クリア][1あ]が0.2秒以内に発生すると間の[クリア]が無視される。 ・ポケベル/拡張かな入力でも内蔵QWERTYキーボードと共存できるようになった。 2006/08/22 0.09 ・キーマップを拡張し raw/exec mode追加。10keyでなく12key動作となった。 ・キーマップを直接読み込めるようにした。カスタマイズの自由度は極めて高い (default の Clip&Paste系設定は dor-bug氏のサイトを参考にしました) ・2タッチ/拡張かなで[A][a][_A][_a]の場合でも数字のゴミが入らないように なった。ただし[1あ]だけは数回に一度1が混ざってしまう。 ・上記問題のせいで拡張かなを英数対応できなかったが、よく考えると[1あ]は記号 で使用頻度が少ないので組み込んでみることにした。 2006/08/23 0.10 ・拡張かな入力で[6は]のトグルが途中で切れてしまう問題を修正した。QWERTY キーボード対応時のエンバグ。 2006/08/23 0.11 ・画面回転時は別のキーマップを割り当てるように変更。テンキー部分を、カーソ ルキーや、メニューを出すためのソフトキーとして使えるようになる。 ・キーマップを 6個から8個に拡張。 ・exec で引数指定できるようにした。 ・2タッチで全角スペースを入力できるようにした。 ・拡張かな入力でSPACE入力で変換してしまう問題修正。 ・拡張かな入力で半角の-が入力できないバグ修正。 ・拡張かなで[#]の記号が逆順だったのを修正。 ・-s オプションで初回だけWindowを表示しないようにした。 2006/08/24 0.12 ・拡張かな時に小文字のアルファベット入力が不便だったため、操作にあわせて CapsLockを切り替える機能を付けた。より携帯電話風に入力できるようになった。 この機能は2タッチでも使える。 2006/08/24 0.13 ・IME制御on 時に未確定文字を確定してから切り替えできるようになった。これは IMEがONのまま英数を打てないATOK向け。MS-IMEでは不要。 2006/08/27 0.14 ・設定保存に対応した。それに伴い Dialog とメニュー周りも修正。 ・任意の keymap ファイルをデフォルト設定できるようにした。 ・自動起動設定機能を追加。startup に -s 指定でショートカットを作成 ・画面回転時は KeyHook を開放できるようにした。縦に戻した場合 KeyHook を取 得できる状態になるまで待ってから復帰する。 ・後変換、逆トグルも自動送りできるようにした。 ・Window 周りの作り直しによってメモリ常駐量を減らした。 ・toggle と bell を混在させたときに、エラー判定のミスで bell 使えなくなる 組み合わせのバグがあったのを修正した。 ・reverse に char を1つだけ指定してもtoggle動作してしまうバグ修正。 ・actionの1つとしてconvert/rconvertを指定できるようにした。(しんじ氏) ・Keymap rotate_num で[0]が9になっていた設定ミス修正。 2006/08/28 0.15 ・MS-IME 使用時に英字入力でカナが混入してしまうバグ修正。 ・クリアをdelete相当の挙動に変換する機能を実装してみたけれど入力バッファ 終端でBS挙動に切り替えできないため没。 2006/09/10 0.16 ・dor-bug さんの指摘。2タッチ時(function bell)に後変換自動送りに対応してい なかった問題、後変換が自動送り時間のリセットをしていなかった問題、マニュ アルの表記ミス(CMD_CONVERT が CONVERT になっていた)、の3点バグ修正 ・Tillanosoft 今井さんの指摘&教えによる修正。タスクリスト一覧に表示されず タスクの全終了操作でも終了しないようになった。(常駐ソフトらしくなった) ・画面回転時の動作を 4通りから選択できるようになった。 2006/10/13 0.17 ・左ソフトキーがきかないバグ修正 ・WS003SH/WS004SH用に QWERTYキーをテンキー扱いするモードを追加 ・vkmap/vkmapl 定義機能追加 ・action command に画面回転できる ROTATE 追加 2006/10/15 0.18 ・-s で起動した直後だけ tasklist に表示されてしまう問題修正 ・2タッチ入力時の1打目を[クリア]でキャンセルできるモードを追加 2006/10/28 0.19 ・keymap の上限を8から10に変更、定義しない限り消費メモリ増加量は 8byte だけ ・vkmap で割り当てたテンキーボタンは、CTRL/SHIFT が押されたときだけ割り当て 前のキーとして振舞うよう変更。CTRL+V/C/X が使えるように 2006/11/03 0.20 ・keymap 読み込み時に vkmap がクリアされずに追加されてしまうバグ修正 ・QWERTYキーをテンキーとして使う場合の補足説明をマニュアルに追記。定義で きないキー情報、複雑なキー操作の定義方法、NumLock 時の配列をカスタマイズ する方法など 2006/12/06 0.21 ・ファームウエア v1.50 における ATOK の仕様変更にある程度対応した。ただし 2タッチモードのみで、拡張かな(トグル)入力時は英数モード時でも、勝手にかな モードに戻ってしまう不具合がある。ATOK の仕様の問題で対処が難しい。 今回の新ファームによって ATOK でも IME制御 なしで使えるようになった。が、 相変わらず MS-IME と微妙に挙動が異なり完全互換ではない。 2006/12/23 0.22 ・v0.21 で W-ZERO3[es] のファーム v1.50 対応化を行った弊害で、拡張かな利用 時に入力モードが勝手に切り替わってしまう問題が発生していた。対策を施した。 そのままでは判定と制御の循環が発生するため入力モードの判定方法を変更。 ATOK と MS-IME 双方で動くように作る必要があるので手間取った。今回は問題 対処のみ。 2006/12/26 0.23 ・v0.22 の変更では他のツールとの衝突が発生する可能性があったため、実装方法 を完全に変更した。2touch では積極的に keymap の定義に従って入力モードを 制御するが、拡張かなでは入力モードは制御しないで受身にした。keymap の 定義よりも入力モードが優先される。keymap によっては自由度が下がる可能性 があるけど動作が自然になった。問題報告してくれた鈴木さんに感謝。 2006/12/26 0.24 ・reversebell, convertbell, rconvertbell コマンドの追加。佐藤さんのアイデア 2006/12/27 0.25 ・コマンドラインオプションの指定を '-' だけでなく '/' も使えるようにした。 '/S' を付けても前面に出てしまうとの報告があったため。正しくは '-s' 2007/04/15 0.26 ・メモリ圧迫時に終了してしまうとの報告があったので対策。WM_CLOSE しない ように変更。 2007/04/21 0.27 ・タスクマネージャーによっては一覧に表示されてしまうとの報告が多く寄せら れたので修正しました。 2007/04/21 0.28 ・詳細設定画面を開けなくなるというエンバグがあったので修正。申し訳ありません。 ・メモリ圧迫時の終了対策をさらに施しました。 2007/04/21 0.29 ・自動CapsLock と [クリア]で2タッチの一打目を取り消す の設定をデフォルト  で ON になるよう変更。 2007/08/10 0.30 ・WS011SH のスキャンコードに対応しました。常駐状態でも[.>][,<]等の内蔵  キーに干渉しなくなります。Advanced [es] の調査に協力してくれた   Florian 氏ありがとうございました。 2007/08/28 0.31 ・command ROTATE で指定できない向きがあったため修正。 ・起動直後に Dialog を開かない設定(-s option)の場合、初期入力モードが 2タッチになってしまう問題を修正。一度画面回転すると直っていた。 2007/12/29 0.32 ・Advanced[es] mode を追加した。標準かな/拡張かなで[→]補正がきかなかった 問題修正。ades でカーソルキーのscan codeが異なることが原因。 小笠原博之 oga (at) art.udn.ne.jp http://hp.vector.co.jp/authors/VA004474/ http://dench.flatlib.jp/ http://wlog.flatlib.jp/ ※ (at) は @ に読み替えてください。