2021/12/08(水) [n年前の日記]
#1 [windows] SndVol.exeの引数の謎
Windows10 x64 21H1上で、キーボード操作で音量変更・音量調整をしたい。
一応自分が使っているキーボードには音量調整キー(ボタン?)がついているので、ソレを押せば音量を変更できるのだけど、1回押すと値が2つずつ変化するあたりが気になるわけで。1つずつ変化するようにできないのかな…。
結局、1つずつ変化させる方法は見つからなかったのだけど、SndVol.exe なるプログラムを実行すれば音量ミキサーが開いて、カーソルキーの上下で変更できることが分かった。そこまで分かれば、ショートカットキーで SndVol.exe が起動するように設定すれば、どうにかなりそうな気もする。
しかし、巷の解説記事を眺めると、SndVol.exe -f 49825268 なる指定をよく見かけたわけで。その引数ってどういう意味があるんだ…?
ググってみて、なんとなく分かってきた。
_Windows 7 - Open the Volume Control popup from the command prompt - Super User
49825268 が示すx,y座標は…。X=17908, Y=760 になるのかな。ちょっと待って。Y=760 はともかく、X=17908ってどういうことですか。
おそらくだけど、SndVol.exe は画面外を指定しても強制的に画面内に表示する仕様になっていて、それで問題が起きてないのかもしれない。しかし、どうもこのあたり、誰かが数値を間違って記述したまま、それがオマジナイとして伝わり続けている気がする…。
ちなみに、タスクトレイ上のスピーカっぽいアイコンをクリックすれば、カーソルキーの左右で1つずつ音量変更できるバーが表示されるので、それで済ませるのもアリかもしれない…。マウスを操作してアイコンをクリックするのが面倒臭いけど…。それをやりたくないから、キーボードから操作できないかググってたわけだけど…。
一応自分が使っているキーボードには音量調整キー(ボタン?)がついているので、ソレを押せば音量を変更できるのだけど、1回押すと値が2つずつ変化するあたりが気になるわけで。1つずつ変化するようにできないのかな…。
結局、1つずつ変化させる方法は見つからなかったのだけど、SndVol.exe なるプログラムを実行すれば音量ミキサーが開いて、カーソルキーの上下で変更できることが分かった。そこまで分かれば、ショートカットキーで SndVol.exe が起動するように設定すれば、どうにかなりそうな気もする。
しかし、巷の解説記事を眺めると、SndVol.exe -f 49825268 なる指定をよく見かけたわけで。その引数ってどういう意味があるんだ…?
ググってみて、なんとなく分かってきた。
_Windows 7 - Open the Volume Control popup from the command prompt - Super User
- -f を指定するとマスターボリュームだけを表示する。指定が無ければアプリ毎のボリュームがずらりと並んだ状態で表示される。
- その後に続く謎の数値は、表示座標の指定。値は、y * 65536 + x を指定する。
49825268 が示すx,y座標は…。X=17908, Y=760 になるのかな。ちょっと待って。Y=760 はともかく、X=17908ってどういうことですか。
おそらくだけど、SndVol.exe は画面外を指定しても強制的に画面内に表示する仕様になっていて、それで問題が起きてないのかもしれない。しかし、どうもこのあたり、誰かが数値を間違って記述したまま、それがオマジナイとして伝わり続けている気がする…。
ちなみに、タスクトレイ上のスピーカっぽいアイコンをクリックすれば、カーソルキーの左右で1つずつ音量変更できるバーが表示されるので、それで済ませるのもアリかもしれない…。マウスを操作してアイコンをクリックするのが面倒臭いけど…。それをやりたくないから、キーボードから操作できないかググってたわけだけど…。
◎ 変化幅をカスタマイズできないものか。 :
そもそも、音量調整キーを押したときの変化幅をカスタマイズできれば問題解決するのだけどな…。レジストリ変更で対処できないのかな…。どうして2つずつ変化するように決め打ちしているのだろう…。
_windows - Is there any regedit value to set the sound change on VOL_UP/VOL_DOWN click - Super User
IAudioEndpointVolume::VolumeStepUp() と IAudioEndpointVolume::VolumeStepDown() の中で変化幅がハードコーティングされちゃってる、と書いてある。Microsoft は、なんでそんなことをしたんや…。
以下によると、そのあたりどうしようもないから音量調整専用アプリを導入しようぜ、とか、AutoHotKey でどうにかしようぜ、てな話になっていた。
_windows - Changing the size of the audio volume increment of the "volume up" / "volume down" keys - Super User
例えば10ずつ変更したいなら、AutoHotKey で Volume_UpキーやVolume_Downキーを検出した際に音量を +8/-8 すればいいよね、みたいな話で。もっとも、わざわざ AutoHotKey を常駐させてまでやることだろうか、という気もするわけで…。
目的のアプリの音量だけを50%に設定しておくという解決策も紹介されてた。マスターボリュームが2ずつ変化すると、目的のアプリはその半分の音量変化になるから、実質1ずつ変化させているのと同じだよね、みたいな。もはや頓智の世界…。Microsoft が変な仕様で固定しちゃったせいで、こんなことに…。なんだかなあ。
_windows - Is there any regedit value to set the sound change on VOL_UP/VOL_DOWN click - Super User
Unfortunately the keypresses are sent to the OS as APPCOMMAND_VOLUME_UP and APPCOMMAND_VOLUME_DOWN HID messages. These are then translated to calls to IAudioEndpointVolume::VolumeStepUp() or IAudioEndpointVolume::VolumeStepDown(); this is hardcoded to 51 steps.windows - Is there any regedit value to set the sound change on VOL_UP/VOL_DOWN click - Super User より
IAudioEndpointVolume::VolumeStepUp() と IAudioEndpointVolume::VolumeStepDown() の中で変化幅がハードコーティングされちゃってる、と書いてある。Microsoft は、なんでそんなことをしたんや…。
以下によると、そのあたりどうしようもないから音量調整専用アプリを導入しようぜ、とか、AutoHotKey でどうにかしようぜ、てな話になっていた。
_windows - Changing the size of the audio volume increment of the "volume up" / "volume down" keys - Super User
例えば10ずつ変更したいなら、AutoHotKey で Volume_UpキーやVolume_Downキーを検出した際に音量を +8/-8 すればいいよね、みたいな話で。もっとも、わざわざ AutoHotKey を常駐させてまでやることだろうか、という気もするわけで…。
目的のアプリの音量だけを50%に設定しておくという解決策も紹介されてた。マスターボリュームが2ずつ変化すると、目的のアプリはその半分の音量変化になるから、実質1ずつ変化させているのと同じだよね、みたいな。もはや頓智の世界…。Microsoft が変な仕様で固定しちゃったせいで、こんなことに…。なんだかなあ。
[ ツッコむ ]
以上です。