2017/03/03(金) [n年前の日記]
#1 [autohotkey] Windows上でのキー入力やマウスボタンの状態を画面に表示するスクリプトを書いた
AutoHotkeyを使って、Windows上でのキー入力やマウスボタンの状態を画面に表示するスクリプトを書いてみたり。githubにアップしておきました。
_mieki256/tinyosdkey
exeファイルのダウンロードは Releasesページから。
_Releases - mieki256/tinyosdkey
マウスホイール回転も検出できてるので、CGソフトの操作画面等を動画キャプチャする時には使えるのかもしれない。けど、KeyCastOW 等が今でも入手できるならそっちを使ったほうがいいのかも。そっちは履歴等が表示されるし。
_キー入力を表示しながらスクリーンショットGifを撮る
まあ、コレはスクリプトのソースを公開してあるから、「ここが気に入らん」と思った方は好きに弄ってください…。添付画像も自由に使ってくれれば、と。
_mieki256/tinyosdkey
exeファイルのダウンロードは Releasesページから。
_Releases - mieki256/tinyosdkey
マウスホイール回転も検出できてるので、CGソフトの操作画面等を動画キャプチャする時には使えるのかもしれない。けど、KeyCastOW 等が今でも入手できるならそっちを使ったほうがいいのかも。そっちは履歴等が表示されるし。
_キー入力を表示しながらスクリーンショットGifを撮る
まあ、コレはスクリプトのソースを公開してあるから、「ここが気に入らん」と思った方は好きに弄ってください…。添付画像も自由に使ってくれれば、と。
◎ 課題。 :
キーを連続で叩いた時にそれが分からないという問題が。「G x 2」「W x 4」みたいな感じで表示できればいいのだけど、どう書けばいいのやら。
ていうかやっぱり、履歴が残っていかないと、ちと分かりづらいよなと。しかし、どういう処理をすればいいのだろう…。
ていうかやっぱり、履歴が残っていかないと、ちと分かりづらいよなと。しかし、どういう処理をすればいいのだろう…。
[ ツッコむ ]
#2 [autohotkey] AutoHotkeyでマウスホイールの回転を検出
こんな感じだろうか…。
_wheelupdown_check_01.ahk
結果はこんな感じに。
_wheelupdown_check_01.ahk
; wheel up/down check ; use AutoHotKey v1.1.24.05 #SingleInstance, Force #InstallMouseHook appliname=wheelupdown_check_01 appliver=0.0.1 wtitle=%appliname% %appliver% ; GUI settings ; Gui, +Owner +AlwaysOnTop +Resize -SysMenu -MinimizeBox -MaximizeBox -Disabled -Caption -Border +ToolWindow Gui, +Owner +AlwaysOnTop +Resize -MinimizeBox -MaximizeBox Gui, Color, 336699 Gui, Font, CFFFFFF S26 W700 Q2, Arial Gui, Add, Text, Vkeystext, Alt+Q ... Exit Gui, Show, NoActivate, %wtitle% ; GuiControl, , keystext, WinSet, Transparent, 220, %wtitle% cwheeldown = 0 cwheelup = 0 check_cwheeldown = 0 check_cwheelup = 0 ks=WheelDown WheelUp Space Up Down Left Right BS keyslist := Object() nowstate := Object() oldstate := Object() Loop, Parse, ks, %A_Space% { k=%A_LoopField% v=%k% keyslist.Insert(k, v) nowstate.Insert(k, 0) oldstate.Insert(k, 0) } Loop, { For k, v in keyslist { n := nowstate[k] oldstate[k] := n nowstate[k] := 0 If k=WheelDown { If cwheeldown<>%check_cwheeldown% { check_cwheeldown := cwheeldown nowstate[k] := 1 } } Else If k=WheelUp { If cwheelup<>%check_cwheelup% { check_cwheelup := cwheelup nowstate[k] := 1 } } Else { nowstate[k] := GetKeyState(k) } } keys= For k, v in keyslist { If (nowstate[k] + oldstate[k])=1 If nowstate[k]<>0 keys=%keys% %k% } keys := Trim(keys, " ") If keys<> GuiControl, , keystext, %keys% Sleep, 16 } EXIT: GuiClose: ExitApp ~*WheelDown:: cwheeldown += 1 return ~*WheelUp:: cwheelup += 1 return ~!Q Up:: ; Alt + Q ... Exit Goto, EXIT
結果はこんな感じに。
◎ 補足説明。 :
以下のやり取りを参考にして書いてみたり。
_getkeystate wheel (Getkeystate not wheely good!) - Ask for Help - AutoHotkey Community
GetKeyStateを使ってホイール回転を検出しようとすると、ホイールを回した途端、そこからずっとOnが返ってくる状態になってしまう。しかし、ホットキーラベル(WheelDown::、WheelUp:: 等)を使うと、そこはホイールを回した瞬間だけ呼ばれるようで。なので、そこで変数の内容をインクリメントして、メインループ内で「変数の内容が今までと違っているか」を調べて、ホイール回転があったかどうかを判断してる。
GetKeyState は、「GetKeyState, 変数, キー種類」という形でも書けるけど、「n := GetKeyState(キー種類)」という形で書けば、1/0で状態を取得できるらしい。
_getkeystate wheel (Getkeystate not wheely good!) - Ask for Help - AutoHotkey Community
GetKeyStateを使ってホイール回転を検出しようとすると、ホイールを回した途端、そこからずっとOnが返ってくる状態になってしまう。しかし、ホットキーラベル(WheelDown::、WheelUp:: 等)を使うと、そこはホイールを回した瞬間だけ呼ばれるようで。なので、そこで変数の内容をインクリメントして、メインループ内で「変数の内容が今までと違っているか」を調べて、ホイール回転があったかどうかを判断してる。
GetKeyState は、「GetKeyState, 変数, キー種類」という形でも書けるけど、「n := GetKeyState(キー種類)」という形で書けば、1/0で状態を取得できるらしい。
[ ツッコむ ]
#3 [anime] 「龍の歯医者」後編を視聴
凄いアニメだった…。
なんとなくだけど、このスタッフならナウシカ漫画原作版もアニメ化できてしまうのではあるまいか。たしか似たシーンがナウシカ漫画版にもあったような…。ナウシカ漫画版を読んでた時は「これはアニメ化は無理だなあ」「漫画だから好き放題やれているなあ」と思ったけど、今回、このアニメを見ていて、「アレ? 今なら映像化も可能?」てな印象に。そのぐらい、このアニメ、映像面は凄いことになってた気がするわけで。
なんとなくだけど、このスタッフならナウシカ漫画原作版もアニメ化できてしまうのではあるまいか。たしか似たシーンがナウシカ漫画版にもあったような…。ナウシカ漫画版を読んでた時は「これはアニメ化は無理だなあ」「漫画だから好き放題やれているなあ」と思ったけど、今回、このアニメを見ていて、「アレ? 今なら映像化も可能?」てな印象に。そのぐらい、このアニメ、映像面は凄いことになってた気がするわけで。
[ ツッコむ ]
#4 [anime] 「リトルウィッチアカデミア」8話を視聴
「カウボーイビバップ」「スペース☆ダンディ」の渡辺信一郎監督からボンクラ主人公を書かせたら世界一と評されてる、うえの脚本+「グレンラガン」「キルラキル」の今石コンテ回。
とんでもない回だった…。この回は凄い…。たしかに世界一レベルのボンクラ主人公…。
とんでもない回だった…。この回は凄い…。たしかに世界一レベルのボンクラ主人公…。
[ ツッコむ ]
以上、1 日分です。