Как отправить нажатие клавиши «Cmd-C» активному приложению в target-c или указать приложению выполнить операцию копирования? - PullRequest
0 голосов
/ 01 октября 2009

Получение активного приложения не проблема, я уже реализовал это.

Что я хочу знать, так это как отправить комбинацию клавиш «Cmd-C» в активное приложение, чтобы оно помещало выделенный текст в буфер обмена (общий буфер).

Или даже лучше: как указать активному приложению выполнить операцию копирования, не отправляя нажатие клавиши, или не выделяя меню «Правка» при запуске операции копирования.

Я не могу использовать NSAppleScript (10.2), потому что этот конкретный класс должен быть как можно более обратно-совместимым (в идеале до 10.0).

Я посмотрел на NSAppleEvents (что может показаться правильным), но не могу найти способ сделать это. Конкретный ответ будет очень кстати!

Заранее спасибо!

UPDATE:

Решение NSAppleScript Роба работает, но я все еще заинтересован в том, чтобы сделать это без необходимости использования NSAppleScript. Я пытался использовать CGPostKeyboardEvent (используя последнее логическое значение, чтобы установить ключ в состояние «вверх» или «вниз»), но я не могу найти коды клавиш или таблицы кодов символов. Может кто-нибудь уточнить, как CGPostKeyboardEvent будет использоваться для ввода "c"? (таблица CGCharCode и CGKeyCode была бы идеальной).

Ответы [ 2 ]

5 голосов
/ 01 октября 2009
2 голосов
/ 02 октября 2009

Если вы можете включить системные события (доступ для вспомогательных устройств) на компьютере, вы можете отправить этот сценарий с NSAppleEvent [EDIT: фактически NSAppleScript] initWithSource:

tell application "System Events" to keystroke "c" using command down

Хотя я и понятия не имею, когда были введены системные события.

...