チルトホイール搭載マウスの
左右へのチルトイベントを
WindowsXPで検出するにはどうしたらいいのでしょうか?
WM_MOUSEHWHEELメッセージというものがWindows Vistaから新たにできるみたいなのですが、
WindowsXPでは、サポートしていないので無理なのでしょうか?
(WindowsXPでWM_MOUSEHWHEELメッセージを受け取ろうとしても無反応でした)
ちなみに、いま、Logitechのマウスを使っているのですが、
Logicool SetPoint というアプリケーションを起動している状態では
チルトの機能(左右スクロール)を使えるようになります。
このSetPointはどうのようにしてチルトの状態を検出していると考えられますか?
←→キーのイベントがきてませんか
編集 削除WM_KEYDOWN
WM_MOUSEWHEEL
WM_MOUSEHWHEEL(=$020E)
WM_INPUT (RawInput)
をSetPointなしの状態で試してみましたが、どれもチルトには反応しませんでした。
チルトホイールのマウスはそれぞれSetPointやインテリポイントといった
付属の常駐ソフトがそのハード固有の方法でチルト状態を取得し、
チルトの状態によってWM_HSCROLLを送ったりしているのはないでしょうか?
つまりチルト状態を取得する標準的な方法というのはないのでは?
>付属の常駐ソフトがそのハード固有の方法でチルト状態を取得し
そのハード固有の方法でもいいから知りたいのです。
HidD_GetFeature
で取得できるかなと考えたのですが
FeatureReportByteLength = 0
なので、HidD_GetFeatureを実行すると
---------------------------
GetLastError=1
ファンクションが間違っています。
Incorrect function.
---------------------------
となってしまいます。
別の、普通のホイールチルトなしのUSBマウスだと
FeatureReportByteLengthga = 2 で
HidD_GetFeatureでマウスからの値を取得できたのですが...。
ReadFile
を実行すると、
http://msdn.microsoft.com/library/en-us/Hid_d/hh/HID_d/hidclass_b9fe7321-9513-4b7c-8c51-d203dcb77198.xml.asp?frame=true
Mouse は、Access Mode が Exclusive なので、
---------------------------
GetLastError=5
アクセスが拒否されました。
Access is denied.
---------------------------
となってしまいます。
ドライバーまで掘り下げないと無理なのでしょうか。
では、SetPointやインテリポイントといった付属の常駐ソフトは、
どうやって、ドライバーからチルトの状態を取得しているのでしょうか?