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/30035131/

相关文章:

objective-c - 从 Objective-C 中的 SQLite C 接口(interface)获取行数

iOS - NSString 定义/初始化。 64 位与 32 位

xcode - 如何链接到 Xcode 中的特定框架版本?

ios - Touchesbegan 和 touchesmoved 函数不适用于 UIImageView

objective-c - Cocoa 中的 GB 有多大?

c - 在 C 中集成给定的 Porter 词干分析器

c - 打印自己的程序,它是如何工作的?

c++ - 在 C 中使用 octave 内置函数

ios - React Native - iOS Real Device - Socket IO Web Sockets not working

xcode - 检索实体名称时崩溃?