ぺんちゃん日記

食と歴史と IT と。 Web の旅人ぺんじろうが好奇心赴くままに彷徨います 。

【AutoHotkey】マウスボタンのクリックを無視するようにできないか

目次


f:id:yasushiito:20190403184928p:plain

左ボタンを押しても無視させたい。

AutoHotkeyでマウスの左ボタンまたは右ボタンの入力を止めたいです。
誰得?
な要望ですが、全く使いどころがないわけではありません。
例えばスクリーン上の一部だけはクリック動作が効かないような状態にしたいとか。
スポイトツールみたいにユーザに任意の場所をクリックしてもらう時とか。

Blockinput だとマウスポインターの移動も無効にされてしまうので、移動はそのままでクリックだけ止めたいのです。

トリガーを Ctrl キーにすればいいよ。

ダメです。
私はキーボードを入力できません。
右クリックもできません。
マウスポインタの移動と左ボタンだけで何とかしたいのです。

左ボタンを無視する処理。

AutoHotkeyで左ボタンを無視することは可能です。
LButtonの ホットキーを定義すれば、左ボタンの押下を検知して動作に介入できます。

とにかくやってみたいならこんな感じです。

LButton::
    Return

myahk/IgnoreLButton.ahk at master · yasushiito/myahk


ただし私はこれを動かしてません。
マウスクリックしかできない私にとって、クリックできなくなってしまったらまさに手も足も出ないからです。


そこで脱出できるような形にしてサンプルスクリプトを作ってみました。


これでマウスの左ボタンをキャンセルできます。
一回だけだとよくわかんないので、2回無視します。
起動したら tab キーを押せば開始です。
ESC キーでサンプルスクリプトを終了します。

テスト結果。

確かに左ボタンを無視できます。
期待通り、2回無視した後は通常通りにクリックするようになります。

ただし難点があります。

send しているのは左クリックなので、おしっぱなしにできません。
AutoHotkeyでマウスを長押しして発動させる操作を組み込んでいるのですが、動かせなくなってしまいまし。
いやそれ以前にマウスドラッグで範囲選択できないよ………。

そこで send するメッセージを左クリックではなく、左 ボタン押下で試してみます。

    Send, {LButton down}

myahk/IgnoreLButton.ahk at master · yasushiito/myahk


すると今度はおしっぱなしになってしまった。
クリックしたいときにクリックできません。

こりゃダメ じゃ。

クリックが効いてしまう。

念のためいろんなボタンの上などでクリックして、何もかも無視してくれるか試してみました。
その結果、スクリーンキーボード上のキー入力では普通にクリックしてしまうことがわかりました。
そうか………キーボードの入力は打ち消せないんだ………。
ちょっと残念な気がしましたが、ビビらなくてもスクリーンキーボードの操作でスクリプトを終了できることは分かりました。

結論。

クリックは無視できるが、他の実用面で問題がある。



この記事に登場するAutohotkey スクリプトについて

この記事の中で私が作成したプログラムは、全て自由に使うことができます。
詳しくはこちら