レガシーデバイス
旧来のそのままの状態をレガシーとwindowsは定義しています。
この状態ではwindowsはタッチ操作をマウス操作(イベント)に置き換え、マウスの代行としてアプリを制御出来るようにしています。
・Windows Touch Gestures Overview
http://www.domoneo.com/windows_touch_gestures_overview.htm
(うちではpanによるマウススクロールが何故か拾えなかったんですけど、まぁいいや)
結論から言うと、プレスアンドホールドを無効化してもマウスダウンが発生しないのがレガシーの最大の弱点ですが、後記する魔法のおまじないを行うことで発生させることが可能なため、意外と使えます。
■legacy.singletouch ・pressandhold enable wait //指を離すまでイベント無し mouse(FromTouch).move...0(194,154) 7543ms mouse(FromTouch).down...0(194,154)Left 11ms mouse(FromTouch).up...0(194,154)Left 6ms mouse(FromMouse).move...0(194,154) 7ms ・pressandhold disable mouse(FromTouch).move...0(149,187) 2542ms mouse(FromTouch).down...0(149,187)Left 3ms wait //指を離すまでイベント無し mouse(FromTouch).up...0(149,187)Left 60ms mouse(FromMouse).move...0(149,187) 7ms ■legacy.pressandhold ・pressandhold enable wait //指を離すまでイベント無し mouse(FromTouch).move...0(121,171) 9534ms mouse(FromTouch).down...0(121,171)Right 18ms mouse(FromTouch).up...0(121,171)Right 11ms ・pressandhold disable wait //SetGestureConfig(Block:Allgesture)で発生しなくなる。OSのバグ? mouse(FromTouch).move...0(131,207) 4246ms mouse(FromTouch).down...0(131,207)Left 3ms wait //指を離すまでイベント無し mouse(FromTouch).up...0(131,207)Left 1374ms mouse(FromMouse).move...0(131,207) 8ms ■legasy.pan ・pressandhold enable mouse(FromTouch).move...0(132,104) 6204ms mouse(FromTouch).down...0(132,104)Left 24ms mouse(FromTouch).move...0(132,126)Left 12ms mouse(FromTouch).move...0(132,134)Left 5ms 〜〜〜 mouse(FromTouch).move...0(132,170)Left 18ms mouse(FromTouch).move...0(132,171)Left 27ms mouse(FromTouch).up...0(132,171)Left 48ms mouse(FromMouse).move...0(132,171) 7ms ・pressandhold disable mouse(FromTouch).move...0(89,151) 7831ms mouse(FromTouch).down...0(89,151)Left 7ms mouse(FromTouch).move...0(89,179)Left 49ms mouse(FromTouch).move...0(92,186)Left 9ms 〜〜〜 mouse(FromTouch).move...0(110,292)Left 18ms mouse(FromTouch).move...0(111,293)Left 8ms mouse(FromTouch).up...0(111,293)Left 22ms mouse(FromMouse).move...0(111,293) 5ms
レガシーでマウスダウンを発生させる
レガシーに以下のおまじないをかけると発生するようになります。
gconf.dwID := 0; gconf.dwWant := 0; gconf.dwBlack:= GC_ALLGESTURES; SetGestureConfig(Handle, 0, 1, gconf, sizeof(TGESTURECONFIG));
後記するジェスチャーモードを全てロックする命令です。
これにより、プレスアンドホールド無効化時にマウスダウンが正しく発生してくれるようになります。
きっと、初期状態ではなにかのジェスチャーと干渉しているのでしょうね。
初期状態のロックについては資料が全然無かったのでちょっとよくわかりません。