2011-12-29 14 views
6

Eventuali duplicati:
OSX HID Filter for Secondary Keyboard?Come posso consumare eventi chiave solo su una tastiera con un HID specifico in Mac OSX?

Vorrei scrivere un applicazione per Mac OSX che cattura gli eventi della tastiera su una seconda tastiera e consumare prima di altre applicazioni vengono notificati? Non faccio in modo che la mia app venga avvisata di una sequenza di tasti sulla tastiera del computer principale, solo la seconda. E non voglio che altre app possano ottenere la sequenza di tasti, voglio consumarla. Qualcuno qui conosce il modo migliore per farlo?

+0

@GaretJax La tua risposta dalla mia altra domanda ha risolto perfettamente il mio problema. Ecco il link per il beneficio degli altri qui: [link] (http://stackoverflow.com/questions/8676135/osx-hid-filter-for-secondary-keyboard) – JayGee

risposta

0

Avrete bisogno di IOKit per farlo. Il codice implicherebbe la scrittura di un evento kext e l'intercettazione di eventi di tastiera e scegliere se passarli sullo spazio dell'utente. Scrivere l'intero approccio qui sarebbe troppo complesso e grande, ma posso suggerire alcuni riferimenti.

Il codice a KeyRemap4MacBook ha un bel po 'di codice di basso livello per la lettura e l'intercettazione del dispositivo.

Ecco il kext personalizzato che l'autore ha scritto: https://github.com/tekezo/KeyRemap4MacBook/tree/master/src/core/kext

Vi suggerisco di guardare nel codice per vedere come ha intercettato le chiavi, li rimappata in base alla configurazione utente e inviarli allo spazio utente .

+1

Hai quasi ragione, ma come ho scoperto nel frattempo, puoi evitare di scrivere un kext e utilizzare la libreria HID userspace insieme a kIOHIDOptionsTypeSeizeDevice per ottenere l'accesso esclusivo al dispositivo selezionato – GaretJax

+0

Ricordo di provare lo strumento 'HID LED test tool' di Apple Documentation che usa l'utente spazio HID Manager (su OSX 10.8) e non ho ancora funzionato correttamente. Immediatamente, l'applicazione si blocca. Sembra che l'esempio sia stato creato per Leopard e non sia stato aggiornato da allora. Non ho ancora trovato nessun esempio recente. –

Problemi correlati