objective-c - 在 OS X 中以编程方式模拟/切换 CAPS LOCK

标签 objective-c c xcode macos cgeventtap

我看过很多关于这个主题的帖子。但在任何地方都没有找到明确的答案。

有没有办法在 Objective-C 或 C 代码中切换大写锁定?我不是在寻找使用 X11 库的解决方案。我不关心 LED 的开/关状态。但只是 CAPS LOCK 的功能(改变字母的大小写和在数字键上打印特殊字符)。

为什么 CGEvent 不像其他键那样支持这种方式?

最佳答案

var ioConnect: io_connect_t = .init(0)
let ioService = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching(kIOHIDSystemClass))
IOServiceOpen(ioService, mach_task_self_, UInt32(kIOHIDParamConnectType), &ioConnect)

var modifierLockState = false
IOHIDGetModifierLockState(ioConnect, Int32(kIOHIDCapsLockState), &modifierLockState) 

modifierLockState.toggle()
IOHIDSetModifierLockState(ioConnect, Int32(kIOHIDCapsLockState), modifierLockState)

IOServiceClose(ioConnect)

关于objective-c - 在 OS X 中以编程方式模拟/切换 CAPS LOCK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54602097/

相关文章:

iphone - Objective c - 使用一个或多个 ViewController 在 View 之间翻转?

c - 使用套接字通过C中的SOCKS5代理服务器发送请求

c - 如何使用(放入)sprintf 到 char 指针? C

c - 是否可以比较 C 中同一变量的字符串?

xcode - 从终端窗口运行 Xcode 工具

c - 这里的结构定义和编译器错误是什么问题?

ios - 在Xcode中,如何在调试区域获取self的实例属性?

ios - 你如何退出 Firebase? ( objective-C )

objective-c - CPU 使用率 OS X 界面

objective-c - 如何使用 Objective-C/Xcode 连接到 SharePoint 列表?