関数 CGEventKeyboardSetUnicodeString は、UniCharCount と const UniChar unicodeString[] を取ります。pyobjc を使用して Python からこれを呼び出す方法がわかりません。理想的には、Python Unicode 文字列を渡すことができるようにしたいと考えています。この関数のメタデータを変更する方法はありますか? あるいは、Python Unicode 文字列を pyobjc を使用して UNICHAR の配列と長さに変換する方法はありますか?
明確にするために:
私はpyobjcのバージョン2.5.1を使用しています
CGEventKeyboardSetUnicodeString のメタデータ:
>>> pprint(CGEventKeyboardSetUnicodeString.__metadata__())
{'arguments': ({'already_cfretained': False,
'already_retained': False,
'null_accepted': True,
'type': '^{__CGEvent=}'},
{'already_cfretained': False,
'already_retained': False,
'type': 'L'},
{'already_cfretained': False,
'already_retained': False,
'null_accepted': True,
'type': '^T'}),
'retval': {'already_cfretained': False,
'already_retained': False,
'type': 'v'},
'variadic': False}
私は次のことを試しました:
>>> CGEventKeyboardSetUnicodeString(event, 1, 'a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: depythonifying 'pointer', got 'str'
>>> CGEventKeyboardSetUnicodeString(event, 1, u'a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: depythonifying 'pointer', got 'unicode'
>>> CGEventKeyboardSetUnicodeString(event, 1, [ord('a')])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: depythonifying 'pointer', got 'list'
>>> Quartz.CGEventKeyboardSetUnicodeString(event, 1, struct.unpack('>{}H'.format(1), u'a'.encode('utf-16-le')))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: depythonifying 'pointer', got 'tuple'