ฉันเขียนยูทิลิตี้ขนาดเล็กอย่างรวดเร็วซึ่งลงทะเบียนการโทรกลับโดยใช้ IOHIDManagerRegisterInputValueCallback
ฉันพยายามที่จะเป็นพลเมืองที่ดีและทำความสะอาดตามตัวฉันเอง
[เอกสารประกอบ] (https://developer.apple.com/library/content/documentation/DeviceDrivers/Conceptual/HID/new_api_10_5/tn2187.html#//apple_ref/doc/uid/TP40000970-CH214-SW61) บอกว่าหากต้องการยกเลิกการลงทะเบียนควรเรียกใช้ฟังก์ชันการลงทะเบียนด้วย Null
หมายเหตุ: หากต้องการยกเลิกการลงทะเบียนให้ส่งค่า NULL สำหรับการโทรกลับ
น่าเสียดาย
IOHIDManagerRegisterInputValueCallback( hidManager, nil , nil);
ไม่รวบรวมคำพูด:
ไม่มีเข้ากันไม่ได้กับประเภทอาร์กิวเมนต์ที่คาดหวัง 'IOHIDValueCallback' (aka '@convention(c) (ไม่บังคับ, Int32, ไม่บังคับ, IOHIDValue) -> ()')
ฉันจะส่ง nil เป็นประเภทที่ถูกต้องได้อย่างไร
นี่คือโค้ดตัวอย่างที่ควรคอมไพล์:
import Foundation
import Carbon
import IOKit
import IOKit.usb
import IOKit.hid
class IOEventManager{
func start()->Void{
let hidManager = IOHIDManagerCreate( kCFAllocatorDefault, IOOptionBits(kIOHIDOptionsTypeNone) );
let context = UnsafeMutableRawPointer(Unmanaged.passUnretained(self).toOpaque());
IOHIDManagerRegisterInputValueCallback( hidManager, nil, context);
}
}
หากคุณต้องการโปรเจ็กต์เต็ม ให้ชำระเงิน https://github.com/jeantil/autokbisw และดูที่ IOKeyEventMonitor#deinit