タグ: AutoHotKey

  • AutoHotKeyもの3点

    AutoHotKeyもの3点

    本日の成果:AutoHotKeyもの3点

      前に書いたエントリで導入したAutoHotKeyで、いろいろと細かい機能を作って使っているのですが、その中でもそこそこ他の人も使える可能性がありそうなものを単体のexeファイルにしてみたので公開するよ。とても小粒なのでわざわざSourceForgeとかにプロジェクト申請する気にならない・・・。(^_^;

      その1 「IMENotifier」

      IMEのON/OFFが切り替わるたびに、画面中央に短時間、小さなウィンドウを表示して、オンになったこと/オフになったことを都度知らせます。

    IMENotifierの動作イメージ

      手前味噌ですが、私自身はこれさえあればWindows標準の言語バーは要らないというくらい便利に感じております。これを使う前は、IMEのオン/オフが判らないとどうしようもないので言語バーを出して、でも年中出てると邪魔なのでXLangBarというソフトで直接入力時は言語バーを非表示にしていました。しかしそのように目立たなくすると今度は必要なときに目に入らずに、ayamattenyuuryokusiteしまいます。その点このツールでは画面中央に表示され、オン時とオフ時とで色が違うので判りやすく、しかもすぐ消えるのでさほど邪魔にもなりません。「さほど」というのは、例えばソフトウェア側でIMEのオン/オフを高速で何度も繰り返すようなソフトがあったような場合は、このツールはそれにいちいち反応して画面表示しますので、そのような場合には邪魔になるかもしれないということです。そのようなときはタスクトレイのアイコンを右クリックして出るメニューから動作を一時停止してください。

      IMENotifier-1.00.zip

      その2 「LazyF1」

      そもそもAutoHotKeyを入れるきっかけとなった[F1]誤操作対策ツールです。作成の背景等はこちらを参照。
      [F1]キーを、しばらく押し続けないと反応しないようにします。

      LazyF1-1.00.zip

      その3 「MouseNoAway」

      これはこちらのエントリで書いた、マウス跳び対策のツールです。そもそも私のところでだけ発生するような変な現象ではあるのですが、ひょっとしたらどこかにニーズがあり、その人が何かの間違いでここに辿り着く可能性もありますので、というかせっかく作ってみたので公開します(笑)。

      MouseNoAway-1.00.zip

  • AutoHotKeyでポインタ跳び防止した

    本日の成果:AutoHotKeyでポインタ跳び防止した

      会社のPCに、自前のキーボードとマウスを繋いで使っています。情報漏洩防止の観点からは問題ないと思いたい(笑)。ところでこのマウスが、ポインタがたまににピョと飛ぶのです。常に正確に右に512ドット飛ぶのです。故障しているのではないかとも思われますが(ていうか多分そう)、めんどくさいのでそのまま使ってました。大抵は忘れた頃にピョと飛ぶ程度なので。
      でも最近、たまに機嫌が悪いとおそろしい頻度で飛びまくるようになってきたのです。それも仕事が忙しいときほど飛びまくりモードが発動しやすいような気がする(多分気のせい)。作業のリミットが近づいて焦っているときにピョピョピョピョとポインタが飛んで、うっかり違うところをクリックしてしまったりすると、温厚な私でもだんだん怒りがこみあげてきます。ムキー!!

      というわけでそのような状況を改善するソフトはないものかと、探してみると見つかるもので、最近までカーソルリミッタというフリーソフトを使ってました。これはどちらかというとイメージセンサのご乱心を防ぐためのソフトのようで、異常に高速なマウスポインタの動きを検知したら元の場所にポインタを戻してくれるというものです。これのおかげでかなり怒りが治まったものの、このソフトの作者も言うとおり、完全ではありませんでした。まず、「異常に高速」なのを検出するのに、ポインタの過去の座標と現在の座標とを比較するのですが、これが実際に画面に表示されたポインタの座標なので、例えば「画面右端付近で操作をしているところでピョと右に512ドット飛ぼうとしたが、すぐに画面の端にぶつかり、実際には例えば20ドットしか移動しなかった」ような場合、このソフトはこれを20ドットの移動としか認識しないので「異常に高速」とは見なしてくれません。逆に20ドットの移動を「異常に高速」と見なしてもらうように設定変更することもできますが、今度は普通にマウスを素早く移動しただけでも「異常に高速」とされて元の位置に戻されてしまうようになってしまいます。それと、この「異常に高速」だったら「元の位置に戻す」という動作は、一旦マウスポインタが表示された後で行われるので、よく見ると一瞬だけピョとポインタが飛んでいるのが判ってしまうという問題もありました。
      そのようなわけでその辺まで含めて解決してくれるツールは見つけられず、自作するか現状で我慢するかしかないのかと思っていたところに、AutoHotKeyでマウスの動きを監視するスクリプトというのを見つけまして、試してみたところ前述の問題をクリアすることができそうで、これを参考にしてマウスの加速度と かかる重力を逆算して、異常値を検出したらそのメッセージを捨てるスクリプトを作ってみたところ、かなり良好な結果が得られました。もう、今までのストレスが嘘のよう。
      c++でDLL作ってメッセージフックして・・・としなければいけないかと思っていたところが、スクリプト一本で目的を達成してしまいました。AutoHotKey強力ですね。でもお前さん、ホットキーのツールだった筈なのに、何でそんなことまでできちゃうんだい?

  • AutoHotKey入れた

    本日の成果:AutoHotKey入れた

      ファンクションキーは必要な私ですが、[F1]キーだけはむしろ邪魔。むしろ普段はどこかにしまっておいて、使いたいときだけ引っ張り出してくるようにしたいくらい。例えばファイル名を変更しようとして[F2]を押そうとした指がすべって間違って[F1]を押してしまったその瞬間。PCったら大喜びでディスクをアクセスし始めて、しばしの間ののち「はいヘルプ! いわれた通りにしたよ! えっへんボク偉いでしょ!」とばかりに現れるヘルプ画面の憎たらしいこと。うるさいさっさと消えろ! 元のウィンドウにフォーカスを返せ! 大体Windowsのヘルプなんて、役に立ったためしがないくせに!

      ・・・と考える人が既にいたらしく、特定のキー(主に[F1])を無効化するフリーソフトなども既にあるのですが、できれば単に無効化するだけではなくて、たまにホントに押したいときは押すこともできるような、そう例えばそういうときは1秒長押しすればいいような、そんなツールはないかと探してて見つけたのがAutoHotKeyというユーティリティです。これは今述べた要求事項を直ちに満たすツールではないのですが、汎用のキーマクロといいますか、特定のキーストロークを別のキーストロークにすり替えてくれるツールだったものと思われます。・・・おそらく当初は。
      そしてその後機能拡張を重ね、キー入力だけでなくマウスや各種イベントにも対応し、ファイル操作やウィンドウ操作やDLL呼び出しまで可能になり、しまいにはユーザ定義のGUIウィンドウを表示してユーザとの直接対話までできるようになった挙句、それをコンパイルして単独の実行ファイルを作るなどというもはや開発環境と言えるようなこともできるようになってしまったという、スイスアーミーナイフなツールです。正直自重しろと思います(笑)。でも便利なので使います。
      定義スクリプトを書いて動作を指示するのですが、これまた機能拡張の過程が目に見えるようなものすごい文法になってます。おそらく最初はホットキーとそれに対する置換内容を1対1で記述するだけだったものと思われますが、きっとだんだんいろいろやりたくなってきて、条件分岐を入れて、変数の概念を入れて、ラベルとジャンプを入れて、式の概念を入れて、ユーザ定義関数とローカル変数とstatic変数を入れて、・・・だいたいそんな順序で拡張されていったものと思われます。
      そのような美しさのかけらもない文法ではありますが、理解しづらくはなくむしろ強力です。では私の要求を満たすようスクリプトを作りましょう。
      まずは[F1]について、実際に押されたあと、そのまま話さずに1秒経過したら、押されたことにするようにしました。とりあえずの目標はこれで達成しました。マクロの組み方によっては、2回続けて押すと反応するようにしたりとか、いろいろできるみたい。
      あと、勢いでIMEの状態表示したりホットキーでボリューム制御したり、こまごまとしたことをやるようにしてみました。ただ、いろいろ努力してみたものの、このツールで[CAPS]を[CTRL]に置き換えることだけはできなかったのです・・・。ここだけはドライバレベルでハンドリングしてるらしく、しょうがないのでここはレジストリを弄っています。