3

IOHIDEventSystemCreate は、iOS6 では常に NULL を返します (iOS5 では正常に動作します)。理由を知っている人はいますか?

iPhoneDevWiki の例

#include <IOKit/hid/IOHIDEventSystem.h>
#include <stdio.h>

void handle_event (void* target, void* refcon, IOHIDServiceRef service, IOHIDEventRef event) {
  // handle the events here.
  printf("Received event of type %2d from service %p.\n", IOHIDEventGetType(event), service);
}

int main () {
  // Create and open an event system.
  IOHIDEventSystemRef system = IOHIDEventSystemCreate(NULL);
  IOHIDEventSystemOpen(system, handle_event, NULL, NULL, NULL);

  printf("HID Event system should now be running. Hit enter to quit any time.\n");
  getchar();

  IOHIDEventSystemClose(system, NULL);
  CFRelease(system);
  return 0;
}
4

2 に答える 2

1

はい、iOS6 でも動作しません。私は今これを使用します:

void *system = IOHIDEventSystemClientCreate(kCFAllocatorDefault);
IOHIDEventSystemClientScheduleWithRunLoop(system, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
IOHIDEventSystemClientRegisterEventCallback(system, handle_event, NULL, NULL);
CFRunLoopRun();

しかし、マルチタッチ + キーボード イベントのみを報告する理由がわかりません。iOS6 の SpringBoard はこれを呼び出します。

IOHIDEventSystemClientSetMatchingMultiple(system, array);

PrimaryUsagePage + PrimaryUsageを含む配列を使用していますが、機能させることができません...たとえば、加速度計イベントを取得するためのソリューションを誰かが知っていれば、私も興味があります。

于 2013-02-27T17:33:31.460 に答える