MouseGestureL.ahkを流行らせるスレpart2 [転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2015/05/06(水) 09:47:16.51ID:8dtFG10E0
MouseGestureL.ahkとはAutoHotkey_L上で動作する凡用マウスジェスチャーソフトです。

作者様のユーザーインターフェース大幅な改良にともない設置も簡単になりました。
基本的な用途であればスクリプトを意識せず全てのWindowsソフトでジェスチャー操作が可能になります。

使い方について語ったり、スクリプトについての質問・解答・提案等を書き込みましょう。

配布元 公式:
http://hp.vector.co.jp/authors/VA018351/mglahk.html

Autohotkey関連ファイル専用アップローダー:
http://ux.getuploader.com/autohotkeyl/

前スレ:
http://anago.2ch.net/test/read.cgi/software/1384313234/

テンプレは>>2-10くらい 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
2020/03/26(木) 07:57:46.19ID:7Xk6Jh4P0
「ターゲットとなるウィンドウの特定の位置を左クリック」というアクションをさせたいのですが、
どのようなスクリプトにすればいいのか教えてください
812名無しさん@お腹いっぱい。
垢版 |
2020/03/26(木) 16:27:46.31ID:vtlEeX2I0
>811
実際に使っているものです。
適当なジェスチャーに割り当てて使ってください。
私はRB_RLRD_に割り当てています。

CoordMode, Mouse, Relative
If (GetKeyState("Shift", "P"))
{ ;Shiftを押していれば、ターゲットのIDと座標を記録
MouseGetPos, , , WindowID
BackClickMouseX := MG_X
BackClickMouseY := MG_Y
} Else
{ ;Shiftを押していなければ、記録していたターゲット上の座標をクリック
CoordMode, Mouse, Relative
ControlClick, X%BackClickMouseX% Y%BackClickMouseY%, ahk_id %WindowID%
}
2020/03/26(木) 23:21:39.15ID:7Xk6Jh4P0
これまんまコピペしてから
Shift押しながらアクション→アクションで合ってます?
動いてくれないんですが
2020/03/27(金) 00:28:06.46ID:HqAAAAv50
>>813
あなたの意図と>>812が噛み合ってないような気がするが、それは説明が足りないからだと思わないと
せめてもっと具体的にこうしたいというのを書くべき
ターゲットとなるウィンドウ→何のアプリ? もしくはサイト?
特定の位置→常に固定された1ヶ所でOK?
詰まる所、どうなれば目的が達成されたと言えるのか
そもそも、丸投げで済ませようとするから、どこが意図と違うのか説明できないのでは?
815名無しさん@お腹いっぱい。
垢版 |
2020/03/27(金) 02:44:26.14ID:5jIiQ0sD0
test
816名無しさん@お腹いっぱい。
垢版 |
2020/03/27(金) 02:46:59.00ID:5jIiQ0sD0
>>812です。
俺環で使えてたけど致命的におかしかったので修正。

トリガー(RB_など)に後述@を設定して、
適当なジェスチャー(RB_RLRD_など)に後述Aを設定する
多分これでいいはず。。。

;@
If (GetKeyState("Shift", "P"))
{
CoordMode, Mouse, Relative
MouseGetPos, startRelativeX, startRelativeY, startWinID
}

;A
CoordMode, Mouse, Relative
If not (GetKeyState("Shift", "P"))
{
ControlClick, x%startRelativeX% y%startRelativeY%, ahk_id %startWinID%
}
817名無しさん@お腹いっぱい。
垢版 |
2020/03/27(金) 02:48:25.89ID:5jIiQ0sD0
>>814 ありがとう。過去に自分も丸投げ質問してしまった引け目から、
贖罪のつもりで回答しています。

ところで、
"Shift"の部分を変数で指定したいのですが、ダブルクオーテーションの都合なのかうまくいきません。
解決策わかる方教えて下さい。
startVarKey := Shift
If (GetKeyState("%startVarKey%", "P"))
のような感じで書きたいです

"の位置を変えてみたり2個つけてみたり、いろいろ調べたんですけど解決できず。。。
818名無しさん@お腹いっぱい。
垢版 |
2020/03/27(金) 02:54:02.77ID:5jIiQ0sD0
startVarKey := Shift
If (GetKeyState(startVarKey, "P"))

で出来ました。当たり前ですね。失礼しました。
819名無しさん@お腹いっぱい。
垢版 |
2020/03/27(金) 02:55:20.71ID:5jIiQ0sD0
startVarKey := "Shift"
If (GetKeyState(startVarKey, "P"))

Shiftに"をつけ忘れたので修正。連投失礼
2020/03/30(月) 00:02:47.30ID:1hrAK9ux0
>>816
希望通りの動作なことを確認できたよありがとう
ただ使いたかったゲームの場合、クリックさせたいアイコンの上にマウスポインタを乗せて選択状態にしてないと反応しないようで
残念ながら使えなかった
2020/03/30(月) 07:24:15.93ID:XfNzI6FN0
えぇ… 95%まで作ってもらったのに自分でほんの少しのひと工夫もするつもりないんかい
使えないって、あとは選択状態にできればいい話じゃないの
そういうことされると教えてくれる人が減ってしまうがな
ありがとうとは言ってるけど、多少なりとも自分で何とかしようとしてるかどうかは伝わるもんだよ
822名無しさん@お腹いっぱい。
垢版 |
2020/03/30(月) 15:17:28.69ID:ZIKSgGud0
損するのは彼ですし、自分のすべきことはしたので気にしていませんよ^^;

ところで別件の質問です。

AHKで、キーボードでマウスカーソルを動かすスクリプトを作りました。
変換キーを押すたびに、キー入力モードとマウスモードで入れ替わります。
マウスモードでは、LキーDownを右クリックDown、LキーUpで右クリックUpにしています。

このLキーをトリガーとしてMGLのジェスチャーを使うために、
MGLにLキートリガーのジェスチャーを登録したいのですが、
Lトリガーアクションの発動条件を、変換キーによるトグル状態によって分岐したいわけです。
(つまり、マウスモードのときのみそのトリガーを有効化する)
そのトグル状態さえ取得できれば、Lトリガー単体のアクションで、
単にLを入力するか、ジェスチャーを認識するか分岐できることになりますよね。

しかしAHKとMGLは別として実行しているので、変数の共有はできないと、私は認識しています。
ではどうするか。次の方法を考えましたが、スマートとは言えません。何かご教示頂けると幸いです。

@ MGLに変換トリガー単体のジェスチャーを登録して、そこでトグルする。
→AHKとMGLの起動・終了タイミングを揃える必要がある。
→モードトグルのトリガーを変更したいとき、AHK,MGL両方で書き換えが必要になる。

➁AHKでマウスモードになったとき、同時に適当なMsgBoxを出しておき、MGL側でそれを認識する。(WinExist)
→ダサい

BAHK側で、マウスモードになったときにToolTipを右下で常駐する設定にしてあるため、そのツールチップを取得する。
→書きながら思いついたけど、これが可能なら結構イケてる。
823名無しさん@お腹いっぱい。
垢版 |
2020/03/30(月) 15:21:06.87ID:ZIKSgGud0
あ、あとスレ立て慣れてる方いましたら、AHKスレPart28立ててくれませんか?(小声)
立て方も、しきたりも、よくわからず…
2020/03/30(月) 16:05:47.29ID:h0Q71eu70
onMessage()でよくね?
スレ建てはできなかったので他の人よろしく
825名無しさん@お腹いっぱい。
垢版 |
2020/03/30(月) 23:23:36.99ID:t84U6ILp0
特に何もしていない人間が「教えてくれる人が減ってしまう」って気にするのも余計なお世話だよな。
ならお前がなれば?
2020/03/30(月) 23:35:39.78ID:FggYZTxA0
丸投げする奴が言いそうな理屈だ
827名無しさん@お腹いっぱい。
垢版 |
2020/03/30(月) 23:56:03.21ID:t84U6ILp0
仮定で叩くほど怒らせてすまん
828名無しさん@お腹いっぱい。
垢版 |
2020/03/31(火) 00:47:21.75ID:lXJjPuR50
というか状態が問題ならマウスカーソル実際に移動させりゃいいんじゃないの?
俺はマウント民の821や826とは違うから書いてあげるね。

; アクティブウィンドウ左上からの相対座標にする。
CoordMode, Mouse, Relative
; マウスを指定した座標に移動する。3つ目は 移動速度。
MouseMove, ???, ???, 0
Send, {LButton}
; マウスを元の位置へ戻す。
MG_Move()

???は座標の数字ね。
829名無しさん@お腹いっぱい。
垢版 |
2020/03/31(火) 02:45:08.68ID:N0ueqK480
>>828
ありがとうございます。

マウスを動かすスクリプトは既に書いておりまして、
左ホームポジションにカーソル移動、右HPにマウスボタンを当てています。

ただ、例えばRB_xxxをMGLに認識させるためには、
Lキーで{RButton Down}にした状態で動かせばよいわけではなく、
実際にマウスの右クリックを押さなければならないんですよね。
(GetKeyStateで判定されている?)

そのために、トリガーをRBと分離して定義して、
ジェスチャーもトリガーラベルを書き換えたものをちまちま追加していかないといけないのかなと思っています。
(例えばRB_UD_があれば、LKey_UD_を、同じアクションのジェスチャーに追加)

MGLの元ファイル群はできればいじりたくないので、その方法を思案中です。
(いじりたくないのは、コードの理解できていないため
エラーが起きても対処ができないからです。)
2020/03/31(火) 05:23:21.85ID:P66PUP3+0
なぜかこいつがお礼言ったせいで
>>811がすごい勢いで成長したのかと勘違いしたわ
2020/03/31(火) 20:41:17.48ID:Fhvx4PA80
828はマウント民と違うとか言ってる以上、最後まで面倒見てやれよ
2020/04/01(水) 08:07:40.25ID:cOL8Knm90
くやしそうやね
2020/04/01(水) 13:23:12.36ID:svOWnROo0
なるほど
解決まで持っていけなかったから悔しかったのか
834名無しさん@お腹いっぱい。
垢版 |
2020/04/01(水) 22:35:31.86ID:sFlEv6AW0
おっ、わざと誤読することで効いてないアピールするレスバ敗北者あるあるじゃん
2020/04/01(水) 23:52:53.58ID:3wH25Gt90
そんな分かりやすい反応したら、デカい口叩きながら中途半端にしか対応できなかった
>>828だとバレてしまうがなw
どういうタイプか見抜けなかっただけの話だから自業自得でしかないが
2020/04/02(木) 01:22:19.43ID:re8Lw7xO0
なぜか解決してないとか中途半端とか言い張ってる奴いるけど
828でできてるじゃん
837名無しさん@お腹いっぱい。
垢版 |
2020/04/02(木) 01:39:14.88ID:IAb+84PG0
気軽に煽れる相手と思ったら殴り返されて引っ込み突かなくなったんで自分の願望を連呼する
っていうよくあるパターンじゃん
もうほっとけ、そいつはもう手遅れだ
2020/04/02(木) 01:44:08.10ID:M0B5RHsZ0
そのすぐ下の>829でそれじゃ解決しないって質問者がレスしてたわけだが
2020/04/02(木) 01:45:17.16ID:82LK1Wg80
>>829
>ちまちま追加していかないといけないのかなと思っています。
MousegestureL.ahkを終了した状態で
MousegestureL.ini を開いて右クリック発動のジェスチャーすべてをコピペして
"[RB_" を "[LKey_" に置き換える

>>822 のB
ツールチップ取得で分岐するなら
ahk_class tooltips_class32
ツールチップのテキストも分岐に加えるといいかな
2020/04/02(木) 02:00:52.94ID:M0B5RHsZ0
>822はonmessageでAhk間通信が楽だしスマートと思う
AHK側でイベント登録して通知待ち受け
MGLからsendmessageで状態訪ねられたら今のモードを返す
841名無しさん@お腹いっぱい。
垢版 |
2020/04/02(木) 13:08:05.49ID:hnMRt1ty0
>>822です。

みなさんありがとう。今ちょっと忙しいので、また試してみます。
それと、件のマウス動かすスクリプト、需要あったら公開します(コードきれいにしてくれる人いたら嬉しいなと思いつつ)

>>840
以前、onMessageのドキュメント読んだとき何もわからず放置していましたが、プロセス間で直接やり取りできる機能なのですね、これを本命に、調べてみます。それと、一度回答を見逃してしまっており、申し訳ないです。
>>839
入力内容がいろいろなところに転記されているようで何となく避けていましたが、いけるんですね。その方法でやってみます。正直、MGLのファイル間の関係が良く分かってないので、そのあたりも勉強するつもりです。

ツールチップのテキストについてですが、確かに、その通りですね。現状、とりあえずの策としてツールチップを利用しているので、条件を加えておきます。
■ このスレッドは過去ログ倉庫に格納されています
大学生アイラと影の怪物と戦うリョウが、深夜3時3分の静止した世界で交錯する超常スリラーの概要

ニューススポーツなんでも実況