gpt4 book ai didi

macos - 如何在OS X中使用CGEventCreateKeyboardEvent模拟Caps Lock击键

转载 作者:行者123 更新时间:2023-12-01 14:44:23 26 4
gpt4 key购买 nike

有人在OS X上使用CGEventCreateKeyboardEvent模拟Caps Lock击键时遇到运气吗?基本上,我尝试过字母和字母数字字符,但是可以使用Caps Lock。希望我想模拟Caps Lock键击以打开/关闭LED。我不知道我的测试代码有什么问题。有人对此有经验吗?

#include <stdio.h>
#include <ApplicationServices/ApplicationServices.h>

main()
{
bool wasCapsLockDown = CGEventSourceKeyState(kCGEventSourceStateHIDSystemState, 57);
if (wasCapsLockDown)
printf("On\n");
else
printf("Off\n");
ProcessSerialNumber psn;
GetFrontProcess(&psn);
CGEventSourceRef source = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);//CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);
CGEventRef CapsLockDown = CGEventCreateKeyboardEvent(source, (CGKeyCode)57, true);
//CGEventFlags modifiers = 0;
//modifiers |= kCGEventFlagMaskAlphaShift;
//CGEventSetFlags(CapsLockDown, modifiers);
CGEventRef CapsLockUp = CGEventCreateKeyboardEvent(source, (CGKeyCode)57, false);

// simulate capslock down
CGEventPost(kCGHIDEventTap, CapsLockDown);
// simulate capslock up
CGEventPost(kCGHIDEventTap, CapsLockUp);

//CGEventPost(kCGAnnotatedSessionEventTap, CapsLockDown); /* doesn't work */
//CGEventPost(kCGAnnotatedSessionEventTap, CapsLockUp);

//CGEventPost(kCGSessionEventTap, CapsLockDown); /* doesn't work */
//CGEventPost(kCGSessionEventTap, CapsLockUp);

//CGEventPostToPSN(&psn, CapsLockDown); /* doesn't work */
//CGEventPostToPSN(&psn, CapsLockUp);

CFRelease(CapsLockUp);
CFRelease(CapsLockDown);
CFRelease(source);
}

用下面的命令编译
    gcc test.c -framework ApplicationServices

最佳答案

您实际上需要切换大写锁定状态,还是仅打开/关闭LED足够?如果只是LED,则在以下位置有一些示例代码:

https://github.com/mikeash/mikeash.com-svn/blob/master/CPUFlash/keyboard_leds.c

请注意,它根本不涉及CGEvent -它使用IOKit魔术来直接与键盘LED混淆。

关于macos - 如何在OS X中使用CGEventCreateKeyboardEvent模拟Caps Lock击键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7265907/

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