Como interceptar uma tecla de atalho em Cocoa quando a janela do aplicativo não está ativo

StackOverflow https://stackoverflow.com/questions/1914811

Pergunta

Eu estou tentando criar um utilitário que não abre uma janela quando executado, e que seria ativado a partir de uma tecla de atalho; Eu li que atualmente Cacau não tem uma função para isso, e que eu deveria usar uma função de carbono substituído.

Não há realmente uma maneira de usar as teclas de atalho globais em Cocoa? O que devo fazer: esperar por Cacau para introduzir uma função para isso, ou usar a função de carbono até uma função semelhante não é introduzida em Cocoa

Foi útil?

Solução

Use o gerente de eventos do carbono função RegisterEventHotKey . Esta função é compatível com 64 bits (aviso de que ela não tem a “não está disponível em 64-bit” nota de disponibilidade).

Por outro lado, o novo método addGlobalMonitorForEventsMatchingMask:handler: de NSEvent no Snow Leopard é não a maneira mais fácil de implementar uma tecla de atalho. Por um lado, é necessário que o usuário tem acesso para dispositivos de assistência ligado; Além disso, requer que você examine cada evento mesmo, em comparação com o sistema RegisterEventHotKey, que só chama sua função de retorno de chamada quando o usuário pressiona a tecla específica que você registrado para.

Outras dicas

Dê uma olhada Recorder atalho ( http://wafflesoftware.net/shortcut/ ) um quadro que usa o Gerenciador de eventos de carbono for global Hotkeys ele também permite que você altere o usuário alterar a tecla de atalho (se é isso que você quiser).

E veja este Código / Projeto sobre como implementá-lo: http://github.com/sdegutis/SDGlobalShortcuts .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top