gpt4 book ai didi

c++ - 如何在 Mac OS 上用 C++ 模拟打字/按键?

转载 作者:太空狗 更新时间:2023-10-29 22:58:27 45 4
gpt4 key购买 nike

我正在尝试编写一个类似于 Mac ID 的应用程序,但有一些不同的选项。

据我所知,所有类似的应用程序都将密码存储在钥匙串(keychain)中,只需在登录屏幕的密码字段中输入即可。

这是我基于 Apple docsRobot 编写的原始代码:

#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 字符。因此,如果您发送 unicode 并使用 kVK_Space 作为 key 代码,而不是发送 key ,您应该拥有所需的东西,并且在发布事件之前,您可以调用事件对象中的以下代码

if (unicode){
unichar str[2] = {0};
str[0] = (unichar)unicode;
memcpy(str, &unicode, 4);
CGEventKeyboardSetUnicodeString(theEvent, 1, str);
}

关于c++ - 如何在 Mac OS 上用 C++ 模拟打字/按键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40546333/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com