0

関数 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'
4

2 に答える 2