Can I write my own HIDServiceFilter or communicate with existing ones?

I want to update the HIDPointerAccelerationTable which is used inside IOHIDPointerScrollFilter.

Using the following does not seem to work (I am guessing there is a whitelist of properties that are passed down the stack):

hidutil property --matching '{"ProductID":0x47}' --set '{"HIDPointerAccelerationTable":0}'

I verify that nothing happens by monitoring this log stream:

sudo log stream --level trace --predicate 'subsystem == "com.apple.iohid"'

I cannot see where this is instantiated in the open-source code, although I do know that it is a CFPlugin.

Not being able to update this property means I would have to reimplement the IOHIDPointerScrollFilter as part of a DriverKit driver, but its looking like a big task because DriverKit doesn't suppose CF/stdlib stuff.

  1. Is there a way to update the HIDPointerAccelerationTable property in IOHIDPointerScrollFilter?
  2. Can I write my own HIDServiceFilter? How can I register it? Or is this just an internal thing.
  • By sampling WindowServer, I found that IOHIDPointerScrollFilter is being loaded from /System/Library/HIDPlugins/IOHIDPointerScrollFilter.plugin. I wonder if my plugin would load from here. I'm guessing its more difficult.

Add a Comment