2013-01-22 4 views
1

Comment distinguer si l'événement -(void)scrollWheel:(NSEvent *)event a été déclenché par une souris Magic Mouse ou un trackpad?NSEvent et Magic Mouse

La raison pour laquelle je pose cette question est parce que je veux assigner une action différente à l'événement de défilement quand un trackpad est utilisé parce que l'utilisateur peut pincer pour zoomer sur le trackpad. Sur la souris magique, cependant, l'utilisateur ne peut pas pincer facilement, donc je veux utiliser la fonction de défilement comme un substitut pour le pincement.

je peux distinguer entre une souris normale et une souris Magic Mouse en utilisant cette ligne:

if (([event momentumPhase] != NSEventPhaseNone) || [event phase] != NSEventPhaseNone) 

Cependant ce test est passé pour les deux, et le trackpad Magic Mouse.

Répondre

3

j'ai pu faire la distinction entre une molette de défilement sur une souris (pas une souris Magic Mouse, mais je pense que cela fonctionne toujours) et un pavé tactile à l'aide du sous-type de NSEvent:

enum { 
    NSMouseEventSubtype   = NX_SUBTYPE_DEFAULT, 
    NSTabletPointEventSubtype  = NX_SUBTYPE_TABLET_POINT, 
    NSTabletProximityEventSubtype = NX_SUBTYPE_TABLET_PROXIMITY 
    NSTouchEventSubtype    = NX_SUBTYPE_MOUSE_TOUCH 
}; 
+0

Je ne pense pas que cela fonctionne pour Magic Mouse - il a le même sous-type que le track pad. –