Mac OS でシステム全体のタッチ ジェスチャをプログラムで無効化/抑制する必要があります。スペース間の 4 本指スワイプなどのジェスチャについて言及しています。
私は EventTap を調べましたが、それはオプションではないようです (ここでの以前のレポートにもかかわらず、おそらく 10.8 で変更されています)。
また、システム設定をプログラムで変更するさまざまな方法を試しました。たとえば、IORegistryEntryCreateCFPropertiesを使用してサービスを見つけたサービスでIOConnectSetCFPropertiesを使用しようとしました。
また、トラックパッドの設定ペインを詳しく調べて、それらがどのように機能するかを確認し、それを再現しようとしました (作成/解放の不一致は無視してください。これは単なるテスト コードです)。
NSInteger zero = 0;
CFNumberRef numberWith0 = CFNumberCreate(kCFAllocatorDefault, kCFNumberNSIntegerType, &zero);
CFMutableDictionaryRef propertyDict = CFDictionaryCreateMutable(kCFAllocatorDefault, 0,
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
CFDictionarySetValue(propertyDict, @"TrackpadFourFingerHorizSwipeGesture", numberWith0);
io_connect_t connect = getEVSHandle(); // Found in the MachineSettings framework
if (!connect)
{
NSLog(@"Unable to get EVS handle");
}
kern_return_t status = IOConnectSetCFProperties(connect, propertyDict);
if (status != KERN_SUCCESS)
{
NSLog(@"Unable to get set IO properties");
}
CFRelease(propertyDict);
CFPreferencesSetValue(CFSTR("com.apple.trackpad.fourFingerHorizSwipeGesture"), _numberWith0, kCFPreferencesAnyApplication, kCFPreferencesCurrentUser, kCFPreferencesCurrentHost);
CFPreferencesSetValue(CFSTR("TrackpadFourFingerHorizSwipeGesture"), _numberWith0, CFSTR("com.apple.driver.AppleBluetoothMultitouch.trackpad"), kCFPreferencesCurrentUser, kCFPreferencesCurrentHost);
CFPreferencesSynchronize(kCFPreferencesAnyApplication, kCFPreferencesCurrentUser, kCFPreferencesCurrentHost);
status = BSKernelPreferenceChanged(CFSTR("com.apple.driver.AppleBluetoothMultitouch.trackpad"));
この場合、機能しているように見え、エラーはなく、システム設定ペインでオプションが無効になりますが、4 本指のジェスチャーは引き続き機能します。ログアウトしてからログインすると効果があると思いますが、いずれにしても十分ではないため、試していません。
Pref ペイン自体も BSKernelPreferenceChanged を呼び出していることに注意してください。おそらくそれが問題の鍵です...
更新: 実際、私はそれを見つけてリンクしました。その呼び出しを追加しても違いはありませんが、エラーを示す可能性がある 1 が返されます。上記のコードに呼び出しを追加しました。
最後に、ターミナルからこれを試しました:
defaults write -globalDomain com.apple.trackpad.fourFingerHorizSwipeGesture 0
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadFourFingerHorizSwipeGesture 0
それもすぐに効果があるわけではありません。
これが不可能だとは思わない、方法があるに違いない...
MAS 互換性は必要ありません。