How to send x,y data from HIDStylusDriver to StylusApp to Pen/Draw

Here is project I am researching: https://developer.apple.com/documentation/hiddriverkit/handling_stylus_input_from_a_human_interface_device

I have a Touch screen and I want:

  1. can control this screen, I can enable extension and control Touch screen successfully.
  2. can pen on this screen. To do this, I need to send X,Y to StylusApp(AppKit) But I Can not send X, Y to Swift StylusApp

Eventhough I can log X,Y it by default code:

But I don't know how to send it to AppKit to Pen. I have research about communicate Driver and Client: https://developer.apple.com/documentation/driverkit/communicating_between_a_driverkit_extension_and_a_client_app#4324306 but seem HID driver don't support inheritance from IOUserClient:

Answered by thanhthucvn in 797683022

I have receive a solution for this, I just install HIDDriver, then it will dispatchDigitizerStylusEvent: dispatchDigitizerStylusEvent(timestamp, stylusData);

Then I can get x, y coordinates from DragGesture.

But one more thing that is I also need get Width of touch to send to client app, that would be perfect.

But I also feel very satisfy with this, thank everyone.

Hi @eskimo, could you help me this case?

Accepted Answer

I have receive a solution for this, I just install HIDDriver, then it will dispatchDigitizerStylusEvent: dispatchDigitizerStylusEvent(timestamp, stylusData);

Then I can get x, y coordinates from DragGesture.

But one more thing that is I also need get Width of touch to send to client app, that would be perfect.

But I also feel very satisfy with this, thank everyone.

I am going to use Comunicate between Client and App(https://developer.apple.com/documentation/driverkit/communicating_between_a_driverkit_extension_and_a_client_app) to send width of touch (Pen/Pencil). But I have one issue that is this plist not satisfy for user client connect (use 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>AAAA</integer>
      <key>VendorID</key>
      <integer>BBBB</integer>
	</dict>
</dict>

Question: How can I edit this plist to satisfy with IOServiceOpen, and also can use AppleUserHIDEventService? NOTE: I am not request entitlement yet, I will request later for development also of distribution.

How to send x,y data from HIDStylusDriver to StylusApp to Pen/Draw
 
 
Q