2010-01-25 11 views
13

Quiero crear un acceso directo global para mi aplicación. He usado la 'nueva y genial manera' de hacer esto con el método addGlobalMonitorForEventsMatchingMask. El problema es que mis eventos no se "consumen": mi acceso directo incluye la barra espaciadora, por lo que siempre que uso el acceso directo, Quicklook aparece cuando estoy en el Buscador.Atajos globales de cacao?

¿Cómo puedo evitar que esto suceda? Sé que es posible, porque muchas aplicaciones, por ejemplo, la aplicación de controlador Bowtie iTunes, lo hacen.

Respuesta

10

addGlobalMonitorForEventsMatchingMask: no es un reemplazo adecuado para la API de Hotkey de carbono existente por todo tipo de razones; es terriblemente ineficiente, por ejemplo. Y de los documentos:

... solo puede observar el evento; no puede modificar o evitar que el evento se entregue a su aplicación de destino original.

y

eventos relativos a la clave sólo pueden ser monitoreados si la accesibilidad está activada o si su aplicación es de confianza para accesibilidad acceso

La API de acceso directo sigue siendo la única manera de poner en práctica acceso directo global en OS X. Pero a diferencia de muchas API de Carbono, la API de Hotkey está disponible para aplicaciones de 64 bits.

+0

¡Gracias! ¡Justo lo que estaba buscando! – Alice

7

Utilice hotkey API, que es para este propósito.

+0

No hay manera de cacao de hacer esto? – Alice

+0

Esa es la única API global de hotkey que yo sepa. Siéntase libre de escribir un método Objective-C que envuelva las llamadas de HIToolbox si no desea ver las llamadas a funciones o algo así. – Chuck

+0

Sí, voy a hacer eso, entonces ... – Alice