2017/03/02(木) [n年前の日記]
#1 [autohotkey] AutoHotkeyでマウスボタンの状態を画像表示
こんな感じかな…と…。
_picture_display_01.ahk
動作に必要な画像は以下。CC0 / Public Domainってことで。
_mouseicon_000.png
_mouseicon_001.png
_mouseicon_002.png
_mouseicon_003.png
動作に必要ではないけれど、元にしたsvg画像もzipで置いておくです。
_mouseicon_svg.zip
こんな感じの結果に。

終了は、ALt+Q を押すか、タスクトレイのアイコンを右クリックしてExitを選択。
_picture_display_01.ahk
; picture display test
;
; use AutoHotKey v1.1.24.05
appliname=picture_display_01
appliver=0.0.1
wtitle=%appliname% %appliver%
; 0 is transparent. 255 is opaque
transparentv=210
bgcol=336699
fgcol=FFFFFF
fontsize=32
fontweight=700
; Window init
; Gui, +Owner +AlwaysOnTop +Resize -SysMenu -MinimizeBox -MaximizeBox -Disabled -Caption -Border +ToolWindow
Gui, +Owner +AlwaysOnTop +Resize
Gui, Margin, 8, 0
Gui, Color, %bgcol%
cdir=%A_ScriptDir%
opt=X0 Y0 AltSubmit BackgroundTrans
Gui, Add, Picture, %opt% vIconBas, %cdir%\mouseicon_000.png
Gui, Add, Picture, %opt% vIconLMB, %cdir%\mouseicon_001.png
Gui, Add, Picture, %opt% vIconMMB, %cdir%\mouseicon_002.png
Gui, Add, Picture, %opt% vIconRMB, %cdir%\mouseicon_003.png
Gui, Font, C%fgcol% S%fontsize% W%fontweight% Q2, Arial
Gui, Add, Text, x+0 yp+0 Vbtnstext, Alt+Q ... Exit
Gui, Show, NoActivate, %wtitle%
WinSet, Transparent, %transparentv%, %wtitle%
; GuiControl, , btnstext,
GuiControl, Hide, IconLMB
GuiControl, Hide, IconMMB
GuiControl, Hide, IconRMB
; work init
btnslist := Object("LButton", "IconLMB", "MButton", "IconMMB", "RButton", "IconRMB")
nowstate := Object()
oldstate := Object()
For k, v in btnslist
{
nowstate.Insert(k, 0)
oldstate.Insert(k, 0)
}
Loop
{
; check status of mouse button
For k, v in btnslist
{
oldstate[k] := nowstate[k]
GetKeyState, s, %k%
nowstate[k] := s="D" ? 1 : 0
If (nowstate[k] + oldstate[k]) <> 1
Continue
If nowstate[k]<>0
{
; pushed button
GuiControl, Show, %v%
GuiControl, , btnstext, %k% On
}
Else
{
; released button
GuiControl, Hide, %v%
GuiControl, , btnstext, %k% Off
}
}
Sleep, 16 ; 60 FPS
}
EXIT:
GuiClose:
ExitApp
~!Q Up::
; Alt + Q ... Exit
ExitApp
動作に必要な画像は以下。CC0 / Public Domainってことで。
_mouseicon_000.png
_mouseicon_001.png
_mouseicon_002.png
_mouseicon_003.png
動作に必要ではないけれど、元にしたsvg画像もzipで置いておくです。
_mouseicon_svg.zip
こんな感じの結果に。

終了は、ALt+Q を押すか、タスクトレイのアイコンを右クリックしてExitを選択。
◎ 補足説明。 :
ずっと無限ループさせてるけど、何もwaitを入れなかったらマウスボタンを押した際に処理待ち?のアイコンが出てしまって少し困ったり。60 FPS程度で回ることを期待して Sleep, 16 を入れてみたら出にくくなった。ちなみに Slepp に指定する数値の単位はms(ミリ秒)。
_Sleep - AutoHotkey Wiki
また、ループするたびに画像の表示/非表示を設定すると該当部分がチラチラしてしまった。ボタンの状態に変化があった時だけ表示/非表示を変更する、みたいなソースにしておかないと表示が見苦しくなるなと。
ボタンの押し下げ状態は、GetKeyState で取得できる。
_GetKeyState - AutoHotkey Wiki
画像の表示は Gui, Add, Picture, を使うけど。表示した画像の表示/非表示の切り替えは、GuiControl, Show, xxxx や GuiControl, Hide, xxxx でいいらしい。対象を指定する xxxx の部分は、Gui, Add, Picture, Vxxxx , 画像ファイル名、と言った形で指定しておく。「v」「V」のどっちを書いたらいいのかは、よく分からない。大文字小文字は区別するのか、区別しないのか…。こういうところにも微かなトラップ臭が。
_Sleep - AutoHotkey Wiki
また、ループするたびに画像の表示/非表示を設定すると該当部分がチラチラしてしまった。ボタンの状態に変化があった時だけ表示/非表示を変更する、みたいなソースにしておかないと表示が見苦しくなるなと。
ボタンの押し下げ状態は、GetKeyState で取得できる。
GetKeyState, 変数, ボタンやキー種類という形で書く。キー種類の後ろに「, P」もつけられるけど、「P」をつけるとキーカスタマイズソフトの類がキー割り当てを変更してしまう前の状態を返してくるので…。例えば、キー操作・ボタン操作を表示したい、といった場合は「P」をつけないほうが目的を果たせる気もする。要は、とにかく「P」をつけとけばいいのだ、というわけでもなさそうだよ、と。
_GetKeyState - AutoHotkey Wiki
画像の表示は Gui, Add, Picture, を使うけど。表示した画像の表示/非表示の切り替えは、GuiControl, Show, xxxx や GuiControl, Hide, xxxx でいいらしい。対象を指定する xxxx の部分は、Gui, Add, Picture, Vxxxx , 画像ファイル名、と言った形で指定しておく。「v」「V」のどっちを書いたらいいのかは、よく分からない。大文字小文字は区別するのか、区別しないのか…。こういうところにも微かなトラップ臭が。
[ ツッコむ ]
#2 [comic] 「漫勉」清水玲子先生の回を視聴
NHK教育で放送されてる「漫勉」。漫画家さんが漫画原稿を描いていくその様子を延々撮影して、漫画家の浦沢直樹先生+ゲストの漫画家さんが映像を見ながら言及していく、という番組。第4シリーズが始まったらしい。
最初のゲストは、清水玲子先生。ここ最近は、 _「秘密 -トップ・シークレット-」 が代表作、だろうか。
映像を見ていて、溜息しか出てこない。やっぱり凄い…。よくまあこんな線を描けるなあ…。
最初のゲストは、清水玲子先生。ここ最近は、 _「秘密 -トップ・シークレット-」 が代表作、だろうか。
映像を見ていて、溜息しか出てこない。やっぱり凄い…。よくまあこんな線を描けるなあ…。
[ ツッコむ ]
以上、1 日分です。