Mac ID과 비슷한 응용 프로그램을 작성하려고하지만 약간 다른 옵션이 있습니다.Mac OS에서 C++의 타이핑/키 누르기를 시뮬레이트하는 방법은 무엇입니까?
모든 유사한 응용 프로그램이 키 체인에 암호를 저장하고 단순히 로그인 화면의 암호 필드에 입력하는 것을 볼 수 있습니다.
여기 Apple docs 및 Robot에 기초하여 작성된 제 원래 코드 :
#include <ApplicationServices/ApplicationServices.h>
void Press(int key);
void Release(int key);
void Click(int key);
int main() {
Press(56);
Click(6);
Release(56);
}
void Press(int key) {
// Create an HID hardware event source
CGEventSourceRef src = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
// Create a new keyboard key press event
CGEventRef evt = CGEventCreateKeyboardEvent(src, (CGKeyCode) key, true);
// Post keyboard event and release
CGEventPost (kCGHIDEventTap, evt);
CFRelease (evt); CFRelease (src);
usleep(60);
}
void Release(int key) {
// Create an HID hardware event source
CGEventSourceRef src = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
// Create a new keyboard key release event
CGEventRef evt = CGEventCreateKeyboardEvent(src, (CGKeyCode) key, false);
// Post keyboard event and release
CGEventPost (kCGHIDEventTap, evt);
CFRelease (evt); CFRelease (src);
usleep(60);
}
void Click(int key) {
Press(key);
Release(key);
}
이것은 출력하는 'Z'를 생각하지만, 그것은 'Z'를 출력하고있다. 문서 변경자 키에 따르면 "키"를 눌러야합니다.
무엇이 문제입니까?
그런 다음 Google에서이 솔루션의 정확성에 대해서는 100 %는 아니지만 this 내 SHIFT 문제를 해결 한 것처럼 보인 답변을 찾았지만 " ÁÉÍÓÜÖ ".
내가 어떻게 할 수 있습니까? 처음부터 가능합니까?
나는 이것이 이미 하나 이상의 질문이지만, 여전히 동일한 문제를 해결하려고 노력하고 있으며 지금까지 완벽한 해결책을 찾을 수 없었기 때문에 다른 사람들이이 답을 얻는 것이 좋을 것이라고 생각합니다.
미리 감사드립니다. 도움을 주시면 감사하겠습니다.
나는이 답변에 현상금을 줬지만 실제로는 현재 형태로 도움이되지 않습니다. 여기에 유니 코드 란 무엇입니까? 'const char * unicode = "Á";'를 사용하여 시도했지만 작동하지 않았습니다. –
유니 코드 변수는 "Á"로 인쇄하려는 모든 문자의 정수 (위의 예에서는 uint16_t)입니다. – MacGeek