3
我正在嘗試編寫類似於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」。根據文檔修改鍵也必須「按下」。
它有什麼問題?
然後谷歌搜索一天後,我發現this SO似乎解決了我的SHIFT問題的答案(雖然我不是100%關於此解決方案的正確性),但我似乎無法輸出像「 ÁÉÍÓÜÖ」。
我該怎麼做?首先可能嗎?
我知道這已經不止一個問題了,但我仍然試圖解決同樣的問題,至今我找不到一個完美的解決方案,所以我想這對其他人來說是很好的解決方案。
非常感謝您提前,任何幫助表示讚賞。
雖然我給了這個答案的賞金,但它並沒有真正有用它的當前形式。什麼是unicode這裏?我嘗試使用'const char * unicode =「Á」;',但它不起作用。 –
unicode變量將是您想要打印的任何字符的整數(以上示例爲uint16_t),在您的情況下爲「Á」。 – MacGeek