好.我正在开始我的第一个OS X应用程序.我没有做一些明显或简单的事情,而是直接进入系统的东西.
我想在菜单栏中放置一个大写锁定指示器.在C#或Delphi(我的主要语言)中,这是相当微不足道的.在Mac OS X中,我不确定从哪里开始.当然我已经下载了Xcode并编写了一些没什么风格的应用程序.现在我需要编写一个将在开始时运行的应用程序,只有一个菜单栏组件,并且工作.
这是我的背景.如何在Cocoa中获取大写锁定键的状态?
在开始时运行:由用户决定.如果他们希望它在启动时运行,他们会将它放在登录项中.您可以添加一个按钮,将其自动添加到登录项目中; 使用Launch Services的共享文件列表API将其添加到会话登录项列表中.
菜单栏项:这称为状态项.请参阅NSStatusItem.
检查大写锁定:首先,可能有多个键盘,其中大部分将具有大写锁定,并且并非所有键盘都具有相同的大写锁定状态(用户可能有一个键盘锁定状态,一个关闭,并且第三个没有大写锁定键.分别注意每个键盘的大写锁定状态,如果有大写锁定键,则点亮指示灯.
要读取和监控大写锁定键,您需要浸入I/O Kit.我相信你需要使用HID管理器.这是一个C API,但Dave Dribin 为其较低级别的前身(最近的1.0.1)编写了一个Objective-C包装器.
编辑添加:你可以使用Quartz事件点击来监控大写锁定,但它不是每个键盘,所以我不确定你会得到多个键盘的可靠结果,它仍然不会让你读取初始状态应用程序启动时大写锁定键.