Pergunta

Meu aplicativo usa uma torneira de evento para eventos de teclado captura, e eu gostaria de saber qual dispositivo (ou seja, qual teclado) cada evento vem. Existe um tipo de informação de identificação do dispositivo, juntamente com o CGEvent que uma torneira fica? Eu olhei para os métodos de NSEvent, e as várias teclas CGEventField, mas nenhum deles parece ser de dispositivo único. Qualquer ajuda?

Foi útil?

Solução

Você pode querer dar uma olhada em DDHidLib, excelente estrutura de Dave Dribin para trabalhar com dispositivos HID USB de forma independente.

http://www.dribin.org/ dave / blog / arquivos / 2007/03/19 / ddhidlib_10

(e não apenas sobre joysticks, assim que ler mais do que o primeiro parágrafo desse post)

Algumas das funcionalidades de DDHidLib já não funciona sob Leopard, devido a algumas preocupações de segurança da Apple sobre a captura de um dispositivo HID, mas se você tiver sorte, pode fornecê-lo com o que você precisa.

Outras dicas

DDHidLib é puro, e de fato partes eu reescrevi dele para Delicious Library 2 para APIs HID mais recentes do Leopard, e submetido as alterações de volta ao autor original - se você escrever-lhe que você pode obter o único-Leopard código de exemplo.

Infelizmente, as novas APIs Leopard HID têm a capacidade de pico em eventos de teclado como eles passam, mas não para interceptá-los, para que você não pode construir seu próprio manipulador de dispositivo de nível de aplicativo a menos que seja OK que os eventos principais são também ir ao AppKit, também. (É por isso que há um ruído bonking quando você usa um scanner de código de barras USB no Delicious Library 2 - Eu pico no scanner e ler o código de barras, mas, em seguida, a digitação ainda é enviada para a janela superior, o que não quer, e bips muito. Suspiro.)

-Wil

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