Monday, July 11, 2011

맥의 자동화로 콘솔을 열고 그 콘솔에 키눌림 이벤트를 보내는 방법을 찾고 있습니다.

윈도우에서는 콘솔을 하나 열고(cmd.exe를 실행시키고), 그 쪽에 파일을 복사하라던지, 컴파일이나 빌드를 하라던지, 하는 keypressed 이벤트를 보낼 수 있습니다.
keypress는 win32 api에도 있고, activeX로 인스턴스를 생성하는 WSH(windows scripting host)에서도 sendkey 라는 메써드가 구현되어 있어 쉽게 키이벤트를 보낼 수 있습니다.
그런데, 컴파일 하는 콘솔을 열어서 컴파일하다 에러가 났을 경우, 다시 새 콘솔을 반복해서 여는 것은 좀 곤란해 문제가 됩니다.
그래서 이미 열어놓은 콘솔에 keypressed를 보내는 것인데, 이는, cmd 콘솔을 실행할 때, 콘솔 창의 이름을 지정해서 열어, 그 창의 이름을 기준으로 윈도우를 activate시키고, sendkey를 하는 방식을 사용하고 있습니다.


그런데 맥에서도(, 그리고 리눅스에서도) 이와 같은 것을 하고 싶습니다.
충분한 시간을 할당하지 못하기도 하고, 잘 몰라서 헤메고 있는 이유로, 현재 알아낸 것 까지는 OSX에는 이벤트메시지 관리를 총괄하는 Apple Event Manager라는 것이 있어서 이쪽의 모듈을 사용해야 하는 것 같습니다.
http://developer.apple.com/library/mac/#documentation/AppleScript/Conceptual/AppleScriptX/Concepts/osa.html#//apple_ref/doc/uid/TP40001571-BABEBGCF
라이브러리로는 CarbonLib이라는 라이브러리를 통해 제어가 가능했던 것 같습니다.(혹시 이는 과거의 이야기로, 현재는 달라져 있는 지는 잘 모르겠습니다.)

또 파이썬에는 AppScript Module이라는 것이 있다고 합니다.(아직 사용해 보진 못했습니다.) http://wiki.python.org/moin/MacPython/AppscriptModuleModule
Sublime Text 2에서 이 모듈을 Load해 제어가 가능하다면, 더욱 재미 있을 것 같습니다.

No comments:

Post a Comment