我正在使用 HIDStylusDriver 来 处理手写笔输入:
我有触摸屏,我想要:
我可以使用默认代码记录 X、Y 坐标:
static void printStylus(IOHIDDigitizerStylusData *data)
{
os_log(OS_LOG_DEFAULT, "dispatch stylus: id: %d x: %d y: %d range: %d tip: %d barrel: %d invert: %d erase: %d tp: %d tx: %d ty: %d tw: %d tc: %d pc: %d rc: %d",
data->identifier, data->x, data->y, data->inRange, data->tip, data->barrelSwitch, data->invert, data->eraser, data->tipPressure,
data->tiltX, data->tiltY, data->twist, data->tipChanged, data->positionChanged, data->rangeChanged);
}
但我不知道如何将其发送到AppKit to Pen。
我尝试过的:我研究了驱动程序和客户端之间的通信(source),但 HID 驱动程序似乎不支持与客户端应用程序的通信,因此我无法发送 X ,将 Stylus 应用程序 (AppKit) 的 Y 坐标设置为笔/绘图 - 因为我无法覆盖 HIDStylusDriver。
我的期望:我想将 X,Y 坐标从 HIDStylusDriver 发送到 Stylus App (AppKit) 到 Pen/Draw。
我收到了一个解决方案,我只需安装 HIDDriver,然后它就会调度DigitizerStylusEvent:dispatchDigitizerStylusEvent(timestamp, stylusData); 然后我可以从 DragGesture 获取 x、y 坐标。 但另一件事是我还需要获取触摸宽度以发送到客户端应用程序,这将是完美的。 不过我也觉得很满足了,谢谢大家。
剩下的一个问题是:我将使用客户端和应用程序之间的通信(https://developer.apple.com/documentation/driverkit/communicating_ Between_a_driverkit_extension_and_a_client_app)来发送触摸宽度(笔/铅笔)。但是这个plist不满足用户客户端连接(使用IOServicePen):
<key>IOKitPersonalities</key>
<dict>
<key>HIDStylusDriver</key>
<dict>
<key>UserClientProperties</key>
<dict>
<key>IOUserClass</key>
<string>NullDriverUserClient</string>
<key>IOClass</key>
<string>IOUserUserClient</string>
</dict>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>IOClass</key>
<string>AppleUserHIDEventService</string>
<key>IOProviderClass</key>
<string>IOHIDInterface</string>
<key>IOResourceMatch</key>
<string>IOKit</string>
<key>IOUserClass</key>
<string>HIDStylusDriver</string>
<key>IOUserServerName</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>ProductID</key>
<integer>8358</integer>
<key>VendorID</key>
<integer>1256</integer>
</dict>
如何编辑这个plist以满足IOServiceOpen,并且还可以使用AppleUserHIDEventService?
注意:我还没有请求权利,稍后我将请求分发的开发。