情報科学屋さんを目指す人のメモ(FC2ブログ版)

何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。

ブログ内検索

スポンサーサイト このエントリーを含むはてなブックマーク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサー広告 | 編集
このエントリーをはてなブックマークに追加 Clip to Evernote

キー状態の判定結果を利用する場合の注意点(AutoHotkey) このエントリーを含むはてなブックマーク

今回は、AutoHotkeyにおいて条件判定を書く場合の注意点をメモ。

キーの押し下げに応じた場合分け

コンビネーションキーは2キーまでの組み合わせであり、また、修飾子(^,+,!,#)が利用できないため、コンビネーションキーにおいて修飾子を使いたい場合は次のようになります。3キー同時押しも同様

a & b::
	GetKeyState, ctrl_state, Ctrl, P ; (1)
	If ctrl_state = D
		MsgBox, ^ab is pressed.
	Else
		MsgBox, ab is pressed.
	Return

(1)の式で、Ctrlキーの押し下げ状態(Down中→D、Up中→U)を変数ctrl_stateに格納しており、次の行で条件判定をしています。

判定結果を変数に入れる

本題はここからで、この判定結果を変数に入れたいとします。

a & b::
	GetKeyState, ctrl_state, Ctrl, P
	ctrl_on = (ctrl_state = D)
	If ctrl_on
		MsgBox ^ab is pressed.
	Else
		MsgBox, ab is pressed.
	Retur

実は、このときCtrlの状態に関わらず「^ab is pressed.」と表示することはありません。つまり、変数ctrl_onは常にFalse(0)になってしまいます。

どうしてかは分かりませんが、

ctrl_on = (ctrl_state = D)

を、

ctrl_on = (ctrl_state = "D")

とすれば思ったように動作します。

まとめ

今回は前回以上に小ネタなのですが、AutoHotkeyを使っているとこのような小ネタが量産されていきます。また書こうと思います。

おすすめキーボード Realforce
プログラマ御用達キーボード PFU Happly Hacking Keyboard

AutoHotkey | コメント:0 | トラックバック:0 | 編集
このエントリーをはてなブックマークに追加 Clip to Evernote

この記事のコメント

コメントの投稿 エントリの新旧に関わらず、極力18時間中に返信します。














この記事のトラックバック

トラックバックURL:
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。