2007-09-30 一回でもキーストロークを少なくするための小ネタ集
公開しているソフトについて:使う人は殆どいないでしょうが、自己責任でお願いします(プログラミング初心者ですから予想外のトラブルが起こるかもわかりません)。
※eMbedded Visual C++ 4.0、POCKET PC 2003、WCE ARMV4 Release でコンパイルしています。
ソースをコンパイルする場合は、eMbedded Visual C++ 4.0、eMbedded Visual C++ 4.0 SP4、POCKET PC 2003 SDKの三つをダウンロードしてください(すべて無料)。
■[自作ソフト]その1.コピペを手軽に(CopyEmulate、ToggleShift など)
[概要]
(1)Ctrl+C、Ctrl+Xキー入力とShiftキートグルを行うだけのプログラム
(2)CopyEmulate.exe、CutEmulate.exe
Ctrl+C ないし Ctrl+ Xをエミュレートする
Shiftキー押下げ状態の場合は、自動的に Shiftキーを押し上げる
(3)ToggleShift.exe
Shiftキーを単純にトグルするだけ
オプションに down指定で、押し下げのみ
オプションに up指定で、押上げのみ
[公開した後に気づいたこと](07/10/3 追記)
1. InputEmulate.exe のコマンドファイルに 、T \S ではなく、T \0x10 と書けば、Shiftキーを単純にトグルしてくれる
2. KeyInputemulator.exe Ctrl+c ↑shift とか、KeyInputEmulator.exe Ctrl+x ↑shift ってすれば、Shiftキー押下げ状態を解除してくれる
3. つまり、InputEmulate.exeとKeyInputEmulator.exe を持っている人に、このソフトは不要だと思う。パラメータ指定がめんどくさいという人向け
[ダウンロードとインストール]
ダウンロードはこちらから(CPTools.cab)。
Cabファイルをインストールすると、\Program Files\CPTools\ 以下に
- CopyEmulate.exe
- CutEmulate.exe
- ToggleShift.exe
がインストールされる。
[esMojiKeyとの連携]
esMojiKeyの起動オプションは、/DefaultInput=7 がベスト。ソフト呼出し後は必ず数字入力モードになるが、慣れればそれほど戸惑わない。
現在の esMojiKey.ini は以下の通り。
1行目の PLUSi_Launch.mscrについては、「その4.記号入力を手軽に」を参照。
\Program Files\PLUSi_Launch.mscr \Program Files\KeyInputEmulator.exe|Ctrl+s \Program Files\KeyInputEmulator.exe|Ctrl+q \Program Files\CPTools\CopyEmulate.exe \Program Files\CPTools\CutEmulate.exe \Program Files\KeyInputEmulator.exe|Ctrl+v \Program Files\KeyInputEmulator.exe|Ctrl+z \Program Files\KeyInputEmulator.exe|Ctrl+a \Program Files\YTaskMgr\YTaskMgr.exe \Program Files\KeyInputEmulator.exe|Home \Program Files\CPTools\ToggleShift.exe \Program Files\KeyInputEmulator.exe|End
表にするとこんな感じ。
| 1 | 記号入力 (PLUSi) |
2 | 上書き保存 (Ctrl+S) |
3 | 終了 (Ctrl +Q) |
| 4 | コピー (Ctrl+C) |
5 | カット (Ctrl+X) |
6 | ペースト (Ctrl+V) |
| 7 | 元に戻す (Ctrl +Z) |
8 | すべて選択 (Ctrl+A) |
9 | YTaskMgr |
| * | Home | 0 | Shiftキートグル | # | End |
■[自作ソフト]その2.数字キーの連続入力(Repeat10Key)
2008/3/1更新
[概要]
(1)キーボードを出して、適当なキーを長押ししてみると、文字が連続入力されると思う(ちなみに、この連続入力の速度は、「設定」 → 「ボタン」 → 「上/下コントロール」での設定と連動している)。このソフトはテンキー側でこのような動作を実現するもの。
(2)数字キーに所定の動作を割り当てることができるソフト(EBPocket, TCPMP, GSPlayerなど)での操作が楽になるかも。
(3)特に、EBPocket でスムーズにスクロールできるようにするため。(その説明についてはこちら)
(4)別の使い道として、\Application Data\Opera\input.ini に、
1 = scroll up
3 = scroll down
と書くと、Opera で1行スクロールがスムーズにできる。
さらに、a nomalyさんが MangaMeeyaでのページめくりに Repeat10Keyを使用する方法を紹介してくださっている。とても分かりやすいので、他のソフトに導入する場合も参考にできる。最後の画像を見てもられば、本ソフトのイメージがよくつかめると思う。当時とはパラメータの指定が若干変更しているのでその点だけ注意。
[制限事項]
- SortInchKey 必須
SortInchKeyでキーに Repeat10Keyを割り当てて使用するため
SortInchKeyの設定方法一般についてはここのページがわかりやすい(ただ、アプリをタイトル名で指定するとシステム全体の動作が遅くなることがあるので、クラス名で指定すべき。クラス名を調べるには、XiForeWindowInfo などを使えばそれほど苦労しない) - システムに若干の負荷がかかる
Repeat10Key自体は常駐しないが、システム全体で連続入力するように設定した場合、数字入力をするたびに Repeat10keyが起動するため、システムには若干負荷がかかる。しかし、体感速度が遅くなるようなことはない。 - 連続入力するのは100回に制限
数字キーが押下げのままになってしまった場合の安全策として、連続入力する回数を100回に制限している - *と#キーには対応していない(キーコードが特殊なため)
[更新履歴]
- v0.0.4 2008/3/1
- 実行ファイルを1つにした関係で、正しく動作していなかった部分を修正
- ctrlswapminiとの共存の問題への対処が不完全だったのを修正
- パラメータの指定に誤りがある場合、エラーメッセージを表示するようにした - v0.0.3 2008/2/26
- 実行ファイルを一つにした関係で、パラメータを若干変更。動作に変更はなし
- Cabファイルを作成 - v0.0.2 10/16
- 0xd0、0xd1等のキーコードを使用せずに長押し状態を検出するようにした。SortInchKeyの設定もシンプルで済むように。また、[1あ]キー押下げ直後にクリアキーを押すと誤作動する問題に対処 - 10/8 早朝
- デフォルトの連続入力間隔をかなり速めに。パラメータの最小値を引下げ。連続入力回数の制限を緩和 - 10/6
- パラメータで指定できる項目を増やした - v0.0.1 2007/10/2
- ctrlswapminiとの共存の問題※で、[あ1]キーを押した場合、ATOKの入力モードが[A][a][_A][_a]の場合のときは連続入力モードに入らないように変更した
※ctrlswapmini には「入力モードが[A][a][_A][_a]の場合 [1あ] の入力で途中に 1 が入ってしまいます。」といった問題があって、Repeat10key1.exe が誤作動してしまう
[ダウンロードとインストール]
1.AtokChanger のインストール
このソフトは、半角英字入力時に ATOKをオフにするソフトだが、数字入力時に ATOKがオンになることも防いでくれる。ここ(星羽さんのw-zero3日和)で公開されている。
2008/2/26追記:なお、AtokChangerには、「縦画面で英数字モードにしたあと横画面時にすると、半/全ボタンを押しても ATOKをオンにできない」という、気になる人には気になる不具合がある。幸いにも本ソフトはソースが公開されているので、この問題に対処してみたものを作ってみた(ここからダウンロード可)。
2008/3/1追記:ウィンドウが変更されたときに、ATOKがオフにならないことがあったので修正
この対応版は、数字入力時に ATOKをオフにすることに特化したもので、英字入力モードでは ATOKをオフにしない。というのは、ctrlswapmini のAd[es]対応バージョンでは、設定画面の「IME制御(Atok用)」にチェックを入れると、ATOKをオフにし、さらに右キーの補正も行ってくれるので、こちらに任せた方がよいと思ったからだ。
要するに、Repeat10Keyを使用しない→ctrlswapmini だけをインストール
Repeat10Keyを使用する→ctrlswapmini とAtokChanger修正版 をインストール
とするのがおすすめ。
2.Repeat10Key004.cab をここからダウンロードして、インストール
ver0.02までのRepeat10key0〜9.exe は削除してかまわない
3.以下の定義を SortInchKey.ini 内の [Define]欄に付け加える
SortInchKey.iniは \Program Files\SortInchKey にある
0=0x30 1=0x31 2=0x32 3=0x33 4=0x34 5=0x35 6=0x36 7=0x37 8=0x38 9=0x39
4.SortInchKey でキーを割り当てる
SortInchKeySettingsを使うか iniファイルをエディタで直接編集するかはお好きな方で
4-1<特定のソフトでのみ連続入力したい場合>
SortInchKeySettingsを使って設定する例( Operaで 3キーを連続入力させたいとする)
(1)スキャンコード※を指定
モード→「押し・長押し・離し」を選択
アクティブアプリ条件→「クラス」を選択、OpWindow と記入(クラス名については、大文字と小文字は区別されるので注意)。
※誤動作防止のため、スキャンコードの指定を忘れないこと。スキャンコードを調べるには、SortInchKeyのページからダウンロードできる XiKeyTest が便利。Ad[es]のスキャンコードは以下の通り。
0キー…0x32 1キー…0x33 2キー…0x34 3キー…0x35 4キー…0x36 5キー…0x37 6キー…0x38 7キー…0x39 8キー…0x3a 9キー…0x3b
(2)「押し」に、
「アプリ実行」
ファイル→\Program Files\Repeat10Key\Repeat10Key.exe
パラメータ→3
「キーダウン」
コード→3
と設定する。
(3)「離し」に、
「キーアップ」
コード→3
と設定する。
そうすると、iniファイルには以下のように書き込まれる。
[] code=3 with= scan=0x35 mode=push direction=both activeKind=class activeName=OpWindow exec=\Program Files\Repeat10Key\Repeat10Key.exe|3 keyDown=3 [] code=3 with= scan=0x35 mode=release direction=both activeKind=class activeName=OpWindow keyUp=3
4-2<EBPocketのようにクラス名が一定でないソフトで使う場合>
SortInchKeyで個別に登録できないため、システム全体に割り当てる(ただし、Today表示時と電話番号入力時には割り当てない)。
この場合、同梱のサンプルファイルを用いて、テキストエディタで編集する方が楽。
サンプルファイルは、\Program Files\Repeat10Keyにインストールされる。
Use10Key*を使用している方→sample_SortInchKey.ini の内容を
使用していない方→sample_SortInchKey.ini の内容を
そのまま SortInchKey.ini の末尾に付け加えれば、OK。
これらのファイルは、ここにも置いてある。
*Use10Keyは、kazuakiさんが公開しているソフト( ここからダウンロード可)
5.SortInchKey 再起動、もしくは、システム全体を再起動( SortInchKeySettingsを使用したときは、再起動は不要)
[パラメータ](v0.0.3で変更)
第1引数・・・連続入力するキーの数字
←0〜9の範囲で必ず指定する
第2引数・・・{連続入力する間隔},{キーを押してから連続入力するまでの時間}
←ミリ秒単位で入力してください。最小値はそれぞれ 50,300。
この引数は省略可。その場合は、100,400 となるが、遅く感じるかもしれない。
それぞれの数値の間は ,(カンマ)で区切り、半角スペースは入れない。
第1引数と第2引数の間は半角スペースのみ。
ex.
Repeat10Key.exe 1 50,400
(SortInchKey.ini では、exec=\Program Files\Repeat10Key\Repeat10Key.exe|1 50,400)
とすると、キーを押してから0.4秒後に、0.05秒間隔で連続入力する。
[動作環境]
動作確認は Ad[es] のみだが、W-ZERO3 シリーズなら問題ないと思う。その他のデバイスでも、SortInchKeyが動くのであれば、動作するはず(ただ、スキャンコードを正しく指定する必要があると思う)。
[本プログラムの仕組み]
[1あ]キー押下げの場合に即して簡単に説明させていただくと、SortInchKeyの設定は
- [1あ]キーを押したとき
- 1キー(0x31キー)を押し下げ
- Repeat10Key.exe 実行
- [1あ]キーを離したとき
- 1キー(0x31キー)を押し上げ
となっている。
[1あ]キーを押すたびにRepeat10Key.exe が実行されるが、0x31キーが一定時間押された場合にはじめて、連続入力を開始するようになっている。
ほんとは、SortInchKeyで「長押し」ないし「リピート」に動作を割り当てることができれば楽なんだけど、それができないので、「押し」と「離し」に割り当てるという苦し紛れな仕組みになった。
キーフックを使えばもっとスマートに実現できるだろうけど、常駐ソフトが増えることになるからなあ
■その3.Lode とスタートメニューの併存
Nord_jpさん作の Lodeと LodeSettingは、メニュー形のランチャソフトで、軽いし、テンキーで操作できるし、設定が楽なのでとても便利。Winキーに割り当てて使っている。しかし、スタートメニューが全く使えないのも不便。そこで、SortInchKeyを使って、Lode起動時に左ソフトキーを押すことでスタートメニューを表示するようにする。
SortInchKey.ini を編集する。
[Define]以下に、文字キー+Enter キーの同時押しのキーコードを追加。
WIN2=0x5c+0x76+0x0d
そして、以下の記述を追加( SortInchKeySettingsをつかってもよい)。
[] code=SOFT1 with= scan= mode=short direction=both activeKind=class activeName=LodeSetting keyClick=SOFT1 [] code=SOFT1 with= scan= mode=short direction=both activeKind=class activeName=Lode keyClick=WIN2
なぜか LodeSetting起動時もスタートメニューが開いてしまうので、先に SOFT1 を割り当てておく。
■その4.記号入力を手軽に
PLUSiというソフトがお勧め。定型文・記号入力ソフト&クリップボード管理ソフトで、起動以外はテンキーだけで操作できてかなり便利(PasteHelper2から乗り換えた)。
ただ、起動キーが Ctrl+. で、デフォルトで表示されるアイコンを消すキーが Ctrl+, なので、テンキーだけだとちょいと困る。
そこで、起動用 MortScriptを書いてみた。
[PLUSi_Launch.mscr]の内容
### PLUSi.exeが起動していないときは、起動して、アイコンを消す。
### その後、ウィンドウを表示。
If (NOT ProcExists("PLUSi.exe"))
Run("\Program Files\PLUSi.exe")
Sleep(100)
Run("\Program Files\KeyInputEmulator.exe","Ctrl+<HEX:bc>")
Sleep(100)
Run("\Program Files\KeyInputEmulator.exe","Ctrl+<HEX:be>")
Else
Run("\Program Files\KeyInputEmulator.exe","Ctrl+<HEX:be>")
Endif
Exit
アイコンを表示させないと、プログラムを完全に終了させることができないので、PLUSi起動時にウィンドウを閉じて、アイコンを表示させる MortScriptも書いてみた(うちでは SortInchKeyで0キーに割り当て)。
[PLUSi_icon.mscr]の内容 ### PLUSiのウィンドウを消して、アイコン表示のトグルキーを押す。 ### PLUSi.exeがアクティブでないときは、何もしない。 m = ActiveProcess() If (m eq "PLUSi.exe") Run("\Program Files\KeyInputEmulator.exe","↓<HEX:5c>+↓<HEX:75> ↑<HEX:75>+↑<HEX:5c>") Sleep(300) Run("\Program Files\KeyInputEmulator.exe","Ctrl+<HEX:bc>") Endif Run("\Program Files\KeyInputEmulator.exe","Ctrl+<HEX:bc>") Exit



ただ残念ながら、こちらで公開されているツール等がDLできませんでした。ヤフブリかと思いますが、もしかしたらログイン状態でないとDLできないのかも?しれません。
ヤフブリに直リンクする方法はダメみたいなので、http://briefcase.yahoo.co.jp/ymkiki2007 に入ってもらってダウンロードする形にしました。ご指摘ありがとうございます。
CopyEmulateについては、ShiftLockという便利なソフトがありますし、Repeat10keyについては、ほぼEBPocketユーザに限られるので需要はかなり厳しいものがありますが、まあ、せっかく書いたので(といっても数行のコード(-_-;) )。
と、ちょっとお聞きしたい事がありまして。ヾ0xd0〜0xd9コードというのはもともと何に使われているものですかね?
アドエスで使っている限り予想外の挙動は起こっていないので、0xd0〜0xd9 のキーコードは特に使われていないようです(厳密には調べてません。すいません)。他の機器では不具合が生じるかもしれません。
レジストリ使って判断する方がスマートだと思いますが、大幅に書き換えないといけないので、保留してます。
早速使用させていただくにあたりうまいこといかないところがあり、お手数おかけしますが質問に参りました。
MangaMeeyaCE使用時にtool→カスタマイズから「進む」/「戻る」に割当てている[4]/[6]キーを連続入力させるべく、↓のように割当てました。
http://nomaly.blog56.fc2.com/blog-entry-946.html
これがダイヤルキーからの入力は「進む」/「戻る」ではなく文字4/6の連続入力になってしまいます。コードを渡しているところが違うのかな..と、試行錯誤してみたところ..スキャンコードの異なるキーボードからの[Fn]+[4],[Fn]+[6]の長押ではSCAN:0x36/0x38,0x04/0x06指定時共に正常動作するようで.. なぜでしょう?またこの場合ですと間のキークリック:4/6が無くとも動作するようで。理解不足多々ありますがその辺りを少しばかり教えていただけたらと思います。
http://nomaly.blog56.fc2.com/blog-entry-981.html
こちらの一文誤筆ありますでしょうか?長々とすみませんヾ。
ちょっと何かをしたいという時にこれだけソフトの選択肢があるというのは非常に有り難いことでヾ、最近では困ることがありません。遅れましたが、ソフト公開有り難うございます。
マンガミーヤCE v2.4Beta を入れて試してみました。
nomaly さんのサイトに公開されているSortInchKey.ini の一部をコピーして、マンガミーヤで「次に進む」/「前に戻る」に 4/6 を割り当てました(割当て時、4と6の入力はキーボードで行わないとうまくいきませんでした)。
結果、こちらでは正常に動作しました。
ただ、速く入力すると表示が追いつかなくなるので、パラメータは、800,400 と遅めに設定する方がいいかなと思いました。
念のため、ファイルを再ダウンロードしていただけないでしょうか?バージョンをつけてなく分かりにくくて申し訳ないのですが、10/8 早朝に入れ替えたので、古いものだとパラメータ指定がうまくいかない場合があります。
キーボードでFnキーと組み合わせて入力する数字キーは、Repeat10key とは全く関係なく、購入当初から長押しで連続入力されるようになっています。
http://nomaly.blog56.fc2.com/blog-entry-981.html
全く問題ありません。
紹介していただいてありがとうございます。
ChgAtokSetting は使っていないため不具合の状況はあまり把握できなかったのですが、うまく動いたみたいで何よりです。
フリーソフトっていろいろあるもんですね。限られた需要しかないと思っていましたが、他の使い道が見つかって、公開した意義があったかなーと思います。そういったことはコメントをいただかないとわからないことですので、ありがとうございます。
おや?Atok On状態で「進む」/「戻る」動作しましたか。レスポンス参考に設定変更→Repeat10key10/8,MangaMeeyaCEv2.4Betaにてあれこれしてみましたが..こちらではAtokをOffにしないと文字入力になってしまいます。関連のありそうなところでctrlswapmini,WithATOKなどの常駐解除等試しましたが、あとymkikiさんが使用しているソフトというとesMojiKeyでしょうか?SortInchKey.iniの方どこかご指摘ありますでしょうか?
何かコメント欄私が埋め尽くしていますね^^;。
そこで、私は、よく使うソフトで起動後自動で数字入力モードにしたいときは、Atokset または ChgInputMode を使っています。ChgAtokSetting は、海外ゲームソフトなどATOKの設定が有効のままだと上手く起動出来ないソフトに対して使うものだと思ってましたが、どうでしょう?
結論から申しますと、「星羽さんの AtokChanger を使ってくださいm(__)m」ということです。
Ad[es]では、数字入力時はAtokはONになら内容になっているのですが、Repeat10key を導入すると数字入力時もAtokがONになってしまいます(おそらく0xd1などのキーコードにAtokが反応しているためだと思います)。ということで、英数字入力時にAtokをオフにしてくれるAtokchangerを導入すると、数字入力時でもAtokがONにならなくなる、というわけです。私は購入以来このソフトの常駐を外したことがなかったので、気づきませんでした。
貴重なご指摘をいただいたのに、自分でうまく理解できないままにいろいろ述べて混乱させてしまいました(>_<) すいません。とりあえず、AtokChanger を試していただけますか?
※AtokChanger を導入すると半角英字入力時もAtokがOFFになりますが、その点は問題ないですよね!?
とういうことで、プログラムをどのように変更したとしても SortInchKey を使う限り、AtokChanger の導入は必須だということが分かりました。本文の記述も修正しました。
AtokはONになら内容になっているのですが→AtokはONにならないようになっているのですが
えぇえぇヾAtoksetとAtokChangerでバッチリです。私も再度Atokがらみのソフトを使い倒しまして、かなり得るとこありました。それに、この長いやりとりの中で得た事は非常に大切でして。お礼あらためて^^。
一点、もしかして私の設定をコピーされた時のChgAtokSettingが「離し」に残っていませんか?
いやいや試行錯誤ありましたが、うまくいって本当によかったですw。
ご質問についてですが、a nomaly さんの設定をコピーしたときはまだ ChgAtokSetting の記述がなかったので、今の私の設定には残っていないはずです。