Use python for getting dictionary with data.
import Foundation, objc
import Quartz
iokit = {}
iokitBundle = objc.initFrameworkWrapper(
"IOKit",
frameworkIdentifier="com.apple.iokit",
frameworkPath=objc.pathForFramework("/System/Library/Frameworks/IOKit.framework"),
globals=globals()
)
IOKit = Foundation._functiondefines.NSBundle.bundleWithIdentifier_('com.apple.framework.IOKit')
functions = [('IOServiceGetMatchingService', b'II@'),
('IOServiceMatching', b'@*'),
("IODisplayGetFloatParameter", b'iII@o^f'),
("IODisplayGetIntegerRangeParameter", b'I'),
('IORegistryEntryCreateCFProperties', b'IIo^@@I'),
('IOPSCopyPowerSourcesByType', b'@I'),
('IODisplaySetFloatParameter', b'iII@f'),
("IOHIDGetActivityState", b'IBi'),
('IODisplayCopyFloatParameters', b'II^^{__CFDictionary}i'),
('IODisplaySetIntegerParameter', b'II^{__CFString=}ii'),
('IODisplayCreateInfoDictionary', b'^{__CFDictionary=}II'),
('IODisplaySetParameters', b'II^{__CFDictionary=}i')
]
objc._objc.loadBundleFunctions(iokitBundle, iokit, functions)
objc._objc.loadBundleFunctions(IOKit, globals(), functions)
for var in variables:
key = "{}".format(var[0])
if key in globals():
iokit[key] = globals()[key]
var = iokit['IODisplayCreateInfoDictionary'](Quartz.CGDisplayIOServicePort(Quartz.CGMainDisplayID()), 0)
print(var, sep=r' ')