AutoHotkey スレッド part18at SOFTWARE
AutoHotkey スレッド part18 - 暇つぶし2ch172:名無しさん@お腹いっぱい。
14/05/15 00:56:11.64 gvWGefzm0
>>164,169

ん!
何となく分かった気がしますありがとう御座います。
頑張ってみます

173:名無しさん@お腹いっぱい。
14/05/15 02:48:10.08 smf5mgep0
>>162
> 処理後の×キーのキー情報で動作を行う
はできるけど、もとの×キーの動作も変えてしまう
Fn単独の動作を変更できたら便利だけど、AHKではできないって意味だな
FnキーのFnがfunctionだから(ファンクション)と書かれてるのも間違ってないな
ということで君がおばかさんだったってことだ

174:168
14/05/15 04:19:57.92 2vMbrIyM0
以下のように改良して秀丸エディタでも確認できるようになりました。

;keyLayout_ChangeはリマップBになったかのフラグ
Indicator(keyLayout_Change) {
if (keyLayout_Change) {
SetTimer, Indicator_ToolTip, 500
}else{
SetTimer, Indicator_ToolTip, Off
ToolTip,
}
}
;ウインドウ枠左端に縦長のToolTipを表示(ウインドウに追従し、ウインドウサイズによりToolTip縦サイズを調整する)
Indicator_ToolTip:
WinGetPos, X, Y, Width, Height, A
c := Round(Height/22)
Loop, %c% {
str .= "`n"
}
ToolTip, % str, X, Y + Round(Height/5)
str := ""
return

175:名無しさん@お腹いっぱい。
14/05/15 04:22:58.12 2vMbrIyM0
>>174
名前覧の168は>>171が正しいです。

176:名無しさん@お腹いっぱい。
14/05/15 21:34:12.75 x+Bh3TdJ0
昔はTooltipとかキャレットとかやったけど今はSoundBeep使って音階で識別してる

というのもトグル状態の確認が必要で情報表示するけど、
うざくて消したくなるから一定時間で消すような仕込みをした
でも一定時間操作してないと状態がどうなってるかよく分からなくて
再度キー押したりして本末転倒になった

今はやりたい操作は指連打と音で判断するようにしてる

*vk1Dsc07B::KeyCounter()

KeyCounter() {
 global $KeyMap
 static keyCount
 ListLines, Off
 $KeyMap:=keyCount:=(A_ThisHotkey==A_PriorHotkey && A_TimeSincePriorHotkey<300) ? keyCount+1 : 1
 SoundBeep, $KeyMap * 400, 10
 KeyWait, % RegExReplace(A_ThisHotkey, "^\W+", "")
 $KeyMap:=0
}

#if ($KeyMap = 1) ;
 h::Left
 j::Down
 k::Up
 l::Right
#If ($KeyMap = 2)
 ; Home, End, PgUp, PgDn とか
#If ($KeyMap = 3)
 ; WinMoveとか

177:名無しさん@お腹いっぱい。
14/05/17 20:17:48.37 CGpqRpBF0
このように書けば問題ないのですが、表示名が「TestToggle&Check」じゃなく、「TestToggle Check」と「半角空白」を使いたいのです
Menu, tray, add, TestToggle&Check
TestToggle&Check:
Menu, tray, ToggleCheck, TestToggle&Check
Return

でも、ラベルに半角空白含む名前は使えないらしくエラーになります
Menu, tray, add, TestToggle Check
TestToggle Check: ;<<<<<ここでエラーになる
Menu, tray, ToggleCheck, TestToggle Check
Return

何とかメニュー名に「半角空白」使えませんかね?
「全角空白」では間延びしたような見栄えでちょっとよくないです
無理なら諦めます

178:名無しさん@お腹いっぱい。
14/05/17 21:22:07.01 aSpGMjn80
A_Space

179:名無しさん@お腹いっぱい。
14/05/17 23:08:57.41 CGpqRpBF0
>>178
レスありがとうございます
すいません、どうしても分かりません。
間違ってる所を指摘して下さい

Menu, tray, add, TestToggle%A_Space%Check ;<<<<<ここでエラーになる
TestToggle%A_Space%Check:
Menu, tray, ToggleCheck, TestToggle%A_Space%Check
Return

180:名無しさん@お腹いっぱい。
14/05/17 23:18:18.07 JvJaXAuL0
URLリンク(ahkwiki.net)

ちゃんとラベル指定しろ

181:名無しさん@お腹いっぱい。
14/05/17 23:47:50.76 CGpqRpBF0
>>108
ありがとうございます
解決しました

一応そのwikiのサンプルコード使って格闘してたんですが
そのコードに肝心の「Menu, tray, add, MenuItemName, Label」の例が無く
メニュー名=ラベル名になるものと思い込んでいました

182:名無しさん@お腹いっぱい。
14/05/18 14:13:52.93 azfgwDu90
MGLスレかどっちか迷ったんだけど、こっちで質問。

キーのリマップスクリプト(ホットキー)を一時的に無効化するのに「Suspend」使うと思うけど、
リマップスクリプトをMGLのプラグインとして使ってると、他プラグインと共にMGLがSuspendしてしまう。

他プラグインとMGLに影響出ないようホットキーのみ一時的に無効化させる方法何か有る?
あ、MGLは再起動させたくないです。

183:名無しさん@お腹いっぱい。
14/05/18 14:28:08.85 SkEzxV/c0
何らかのキー::
if(flag_hotkey <> 1)
 flag_hotkey = 1
else
 flag_hotkey =
return

#if (flag_hotkey)


ホットキー、
キーリマップ


#if

184:名無しさん@お腹いっぱい。
14/05/18 16:02:07.69 azfgwDu90
レスサンクス。
でも、パターン(1)の場合、「#If (flag_hotkey)」は無視されてうまく行かない。
で、パターン(2)のようにすれば問題なく動く。
しかし、「#If (flag_c) && (flag_hotkey)」みたいに一つ一つ書いていくのはつらい。
何か簡単な方法ないものか。

flag_hotkey := 0
flag_a := 1, flag_b := 1, flag_c := 1, flag_d := 1
return

;パターン(1)
#If (flag_hotkey)
#If (flag_a)
a::MsgBox, a
#If (flag_b)
b::MsgBox, b
#If

;パターン(2)
#If (flag_c) && (flag_hotkey)
c::MsgBox, c
#If (flag_d) && (flag_hotkey)
d::MsgBox, d
#If

185:名無しさん@お腹いっぱい。
14/05/18 16:36:22.04 SkEzxV/c0
わかりにくかったかな。例えば以下のようにすると、
ctrl+spaceを押すと#ifで囲まれているホットキーがonになってもう1回押すとoff(サスペンド)
ONOFFスイッチのキーは好きな奴に変えて

^Space::
if(flag_hotkey <> 1)
 flag_hotkey = 1
 ToolTip, HotKeyON, 1710, 0
else
 flag_hotkey =
 ToolTip
return

#if (flag_hotkey)

a::Msgbox, a
b::Msgbox, b
c::Msgbox, c

#if

186:名無しさん@お腹いっぱい。
14/05/18 16:44:52.71 SkEzxV/c0
ifのところで{}忘れてたわ

187:名無しさん@お腹いっぱい。
14/05/18 18:01:12.11 azfgwDu90
>>185-186
レスサンクス。
何度も申し訳ない。こっちも質問の仕方が悪かったかもしれない。

とりあえず、flag_hotkeyのフラグ切り替えの方法は理解しました。

問題は>>185の例みたいに、元々のホットキーに条件が付いてない場合はうまくいくが、
#if (flag_hotkey) ;リマップが有効か無効か
a::Msgbox, a
  ・
  ・
>>184のパターン(1)ように元々のホットキーに条件が付いてる場合うまくいかない。
#if (flag_hotkey) ;リマップが有効か無効か
#If (flag_a) ;←元々付いてる条件
a::MsgBox, a
  ・
  ・
>>184のパターン(2)のようにすれば、条件に忠実に動くようになる。
#If (flag_a) && (flag_hotkey)
  ・
  ・
でも、一つ一つ「 && (flag_hotkey)」を付け足していくのはつらい。
一つ一つに「 && (flag_hotkey)」を付け足していくのではなく、何か他に簡単な方法はないか…というのが>>184の質問でした。

#If (flag_a) && (flag_hotkey)←こういう方法しか無いですかね?

188:名無しさん@お腹いっぱい。
14/05/18 18:20:09.13 Pm+XAqGi0
俺もMGLかこっちか迷ったんだけどこっちで質問

;選択範囲をコピー
Lclickcopy(){
MouseGetPos, x0,y0 ;クリックした時の座標取得
keywait,Lbutton ;離すのを待つ
MouseGetPos, x1,y1 ;クリックを離した時の座標軸
if (x1-x0 > 5 or x1-x0 < -5 or y1-y0 > 5 or y1-y0 < -5){
   clipnow := ClipBoardAll ; save old clipboard
   send,^{c}
   ClipWait 1, 1
   IfEqual ClipBoard,, SetEnv ClipBoard, %clipnow%
return
}
}

こんな関数を作ったんだけどMGLのLbuttonに設定したらエラー吐く。
かといって
~Lbutton::Lclickcopy()

としたらロッカージェスチャのRB_LB__が動いてくれない
八方ふさがりなんだけどどうしよう(´・ω・`)

189:名無しさん@お腹いっぱい。
14/05/18 18:25:07.06 azfgwDu90
>>187追加
いわゆる「入れ子?」が#ifでは出来ないって言うことなんかな?
なら、#If (flag_a) && (flag_hotkey)←こういう方法しか無いみたいね。
元々の考えを改めて別の方法捜してみるわ。

>>185-186
お騒がせしました、あありがとう。

190:名無しさん@お腹いっぱい。
14/05/18 20:07:10.13 TWeApKh00
>>188
スレチ、専用スレにエラー内容とサンプルコードを書こう

【AHK】MouseGestureL.ahkを語るスレ【ジェスチャ】
スレリンク(software板)

191:名無しさん@お腹いっぱい。
14/05/18 20:40:52.59 PE4IKbR20
せっかく専スレあるんだからあっち使ってあげなよ

192:名無しさん@お腹いっぱい。
14/05/18 21:05:27.57 SkEzxV/c0
>>189
あーそういうことか。
だったら&&で繋げるくらいしかないかな。

代替案としてはサスペンドしたいホットキーだけで別にahkスクリプト作って独立させて
その作ったスクリプトを起動、終了するホットキーを今まで使ってた本体ahkに登録すればいいかもしれない
ホットキーを有効にしたいなら別ahkを起動、サスペンドしたいなら別ahk終了、みたいな感じで


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch