如何在没有窗口的情况下使用 Swift 检测 macOS 上的 Caps Lock 状态?

2024-01-24

我努力了KeyDown and NSEvent,但他们需要一个NSWindow对象处于活动状态。我希望我可以在状态栏上放置一个应用程序,并在按下时提醒用户CapsLock,即使用户在任何其他应用程序中。我的应用程序创意没有用于设置或其他任何内容的窗口,只是一个指示器。还可以做到吗?我猜测AppDelegate但不知道如何让它接收修饰符事件。任何帮助真的很感激!

我在堆栈溢出上查找了“重复”,但据我搜索,没有人问过这个问题。


您只需要监视 NSEvent 修饰符标志的更改capslock https://developer.apple.com/documentation/appkit/nsevent/modifierflags/1642462-capslock。最简单的方法是创建一个接受 NSEvent 的方法并检查是否modifierFlags属性交集与.deviceIndependentFlagsMask包含.capsLock:

func isCapslockEnabled(with event: NSEvent) -> Bool {
    event.modifierFlags.intersection(.deviceIndependentFlagsMask).contains(.capsLock)
}

现在您只需将全局监控事件添加到您的 applicationDidFinishLaunching 方法中:

func applicationDidFinishLaunching(_ aNotification: Notification) {
    NSEvent.addGlobalMonitorForEvents(matching: .flagsChanged, handler: flagsChanged)
}

并创建一个方法来处理该事件flagsChanged:

func flagsChanged(with event: NSEvent) {
    print("Capslock is Enabled:", isCapslockEnabled(with: event))
}

编辑/更新:

正如评论中已经提到的,要检查 capsLock 键的初始状态,您可以检查NSEvent ModifierFlags capsLock财产capsLock https://developer.apple.com/documentation/appkit/nsevent/modifierflags/1642462-capslock

NSEvent.ModifierFlags.capsLock
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在没有窗口的情况下使用 Swift 检测 macOS 上的 Caps Lock 状态? 的相关文章

  • 更改iOS11中的UISearchBar背景图片

    我想更改我的 UISearchBar 背景图像 当将它添加为我的 UITableView 中的标题视图时 它工作得很好 但是 当我想更改它以将 SearchBar 设置为 navigationItem 的 searchController
  • 在 Mac 上开发和测试 ASP.NET 的应用程序 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我开始学习一些asp net 所以我正在寻找一个使用mac 开发asp net 的应用程序 我知道 D
  • 如何在松开按钮后立即看到新的视频层?

    我有一个应用程序 用户可以按住按钮来拍摄视频 然而 当他们这样做时 带有视频播放的新图层不会立即出现 相反 有一个非常短的延迟 在用户松开按钮后 您可以看到相机仍然显示相机所看到的内容 延迟结束后 视频立即显示并开始播放 但是 我怎样才能使
  • 如何在 Swift 泛型中说“同一类”

    如果 Swift 泛型类型约束是协议名称 我可以要求受该协议约束的两种类型为同一类型 例如 protocol Flier struct Bird Flier struct Insect Flier func flockTwoTogether
  • 在其他数组中使用 ForEach 的索引

    为什么我不能使用 FromEach 的索引作为其他数组的索引 这个索引是Int 那么有什么问题呢 var word String return slova selector var symbols Array
  • 如何解决 xcode 一直编译所有内容的问题?

    我已经开始使用 XCode 它似乎可以工作 嗯 大部分 烦人的是它每次都会编译所有源文件 甚至是那些没有更改的文件 我正在掌握 openframeworks 每次都浪费时间编译 openframeworks 源文件 尽管它们没有改变 以下是
  • 从xcode上触摸屏的坐标获取ImageView的像素数据?

    单击视图并从视图内的图像获取正确的像素数据似乎存在问题 func handleTap gestureRecognizer UIGestureRecognizer print You tapped at gestureRecognizer l
  • 如何在 Swift 中将文件名与文件扩展名分开?

    给定包中文件的名称 我想将该文件加载到我的 Swift 应用程序中 所以我需要使用这个方法 let soundURL NSBundle mainBundle URLForResource fname withExtension ext 无论
  • Swift 运行时库与 Swift 标准库

    In this 关于如何使用 CocoaPods 的教程 https www raywenderlich com 97014 use cocoapods with swift我无法理解以下段落 与 Objective C 不同 标准 Swi
  • 闭包存储属性初始化有什么好处?

    初始化类的属性时 此代码有什么区别以及优点 缺点 1 let menuBar MenuBar let mb MenuBar return mb and 2 let menuBar MenuBar 两个代码片段都声明并初始化存储的属性 htt
  • 如何在 *nix 中登录时运行脚本?

    我知道我曾经知道如何做到这一点 但是 如何在 unix 中登录时运行脚本 bash 可以 From 维基百科 Bash http en wikipedia org wiki Bash 28Unix shell 29 当 Bash 启动时 它
  • iOS、通用链接、Swift。 continueUserActivity 未调用

    我正在为我们的 iOS 应用程序实现通用链接 这是我的一小部分 AppDelegate private func application application UIApplication openURL url URL sourceApp
  • 无法在 Swift 中对闭包进行弱引用

    Update 我试着不弱化地写一下 好像也没有漏的情况 所以也许这个问题已经没有必要了 在 Objective C ARC 中 当你想让一个闭包能够在闭包内部使用它自己时 该块不能捕获对自身的强引用 否则它将是一个保留循环 因此您可以使闭包
  • 当 Mission Control 启动时,如何隐藏我的 Electron 应用程序窗口?

    我正在构建一个 Electron 应用程序 但我不希望我的应用程序出现在 macOS Mission Control 中 有没有办法在任务控制启动时隐藏窗口 我能够通过使用来实现此行为setAlwaysOnTop窗口对象上的方法 windo
  • Cocoa 应用程序菜单栏不可点击

    我正在我的可可应用程序中构建一个菜单栏 其中包含以下代码 implementation我的自定义应用程序CustomApplication void setUpMenuBar CustomApplication sharedApplicat
  • UItextView 背景颜色 Linespacing 区域太

    我正在尝试在 UITextView 中复制文本突出显示 不是搜索文本突出显示 但我也被行间距的颜色所困扰 我该如何纠正这个问题 现在的情况 期望的结果 我已将以下属性添加到我的 UiTextview 的属性文本中 对于段落行间距 我使用了以
  • 根据一个数组对多个数组进行排序

    如何根据数组对一堆数组进行排序createdAt 例如 2015 11 02 19 19 35 0000 将它们组合成另一种类型 字典 以便在 tableView 中使用是否有益 如果有的话如何 var comment AnyObject
  • UIView 圆角 - Swift 2.0?

    我会尝试将一些项目更新到 Swift 2 0 我有一个视图 左上角有一个圆角 在 Swift 没有警告 没有错误 只是没有圆角 这就是它在 Swift let maskPath UIBezierPath roundedRect conten
  • iOS:如何知道 reloadData() 已完成其任务?

    我想滚动到给定索引 self boldRowPath 但是当我调试时scrollToRow之前执行reloadData 如何知道reloadData已完成 func getAllTimeEvent self arrAllTimeEvent
  • rvm:未找到命令 MAC OX

    真的 我不知道发生了什么 对不起 如果这个问题太菜鸟了 但我找不到这个问题的解决方案 bash rvm 找不到命令 我试过这个 curl L https get rvm io https get rvm io bash s 版本最新 但我仍

随机推荐

  • 添加 XML 块作为 SimpleXMLElement 对象的子对象

    我有这个 SimpleXMLElement 对象 其 XML 设置类似于以下内容 xml lt lt
  • 为什么 Java 枚举不可克隆?

    现在改变问题已经太晚了 但更准确的是问 为什么clone 不允许单例 Acopy 方法会更方便 Java 中的枚举无法克隆有什么原因吗 该手册指出 这保证了枚举永远不会被克隆 这是保持其 单例 状态所必需的 但是返回实例本身也将保留其状态
  • 比较两张地图

    我有两张地图声明为Map
  • 如何使用R包Quadprog求解SVM?

    我想知道实现 Quadprog 来解决二次规划的正确方法是什么 我有以下问题 从互联网上摘录 并且也在查看以下内容http cbio ensmp fr thocking mines course 2011 04 01 svm svm qp
  • mac os x 上的 eclipse JNI_CreateJavaVM 错误

    我使用的是 mac os x 10 8 2 我已经安装了java 1 7 然后收回 因为我无法通过xcode发送iphone应用程序 现在java 1 6已安装 ysnky java 版本 java版本 1 6 0 37 Java TM S
  • 为什么我的 vim 命令行路径与 shell 路径不同?

    e g echo PATH usr local bin usr bin bin usr sbin sbin usr local bin bin bin usr local Cellar python3 3 2 3 bin vim echo
  • C 中的 usleep() 是否实现为忙等待?

    我正在构建一个多线程应用程序pthreads并且需要一个线程来定期检查一些东西 在此期间 该线程不应使用任何 CPU 这可能吗 usleep Is usleep 不忙等待吗 或者有更好的解决方案吗 功能usleep已从 SUSv4 中删除
  • Web API 中的依赖注入验证

    在 MVC 中 我可以创建一个可以采用依赖项的模型验证器 我通常使用 FluentValidation 来实现这一点 例如 这使我可以检查帐户注册是否有电子邮件地址未被使用 注意 这是一个简化的示例 public class Registe
  • 为什么 FLAG_ACTIVITY_CLEAR_TOP 不起作用?

    正如标题所说 为什么intent addFlags Intent FLAG ACTIVITY CLEAR TOP or intent setFlags Intent FLAG ACTIVITY CLEAR TOP 行不通 我有 3 项活动
  • 使用shiny DT包中的选择扩展附带的全选按钮仅选择过滤的行

    我试图使用闪亮的 DT 包中的选择扩展附带的全选按钮来仅选择过滤的行 但它会选择所有行 这是闪亮的样本app https radhikesh shinyapps io selectextension 以下是该应用程序的可重现代码 libra
  • 同时交叉和添加列表元素的 Python 方式

    我有3个清单 a b and c 每个列表都包含 3 个数字的元组 下面是一个输入示例 a 1 2 4 1 7 8 1 5 4 3 6 7 b 1 2 5 1 9 3 1 0 3 3 6 8 c 2 6 3 2 4 9 2 8 5 1 2
  • Selenium webdriver 和多语言

    我使用selenium webdriver java 例如 当我想通过 xpath 获取一些数据 文本时 driver findElement By xpath table 3 tbody tr td table 1 tr 1 td 1 g
  • Django:使用电子邮件作为 USERNAME_FIELD 是否需要扩展 AbstractBaseUser?

    与许多其他人一样 我正在尝试将 Django 应用程序配置为使用电子邮件作为用户名字段 我有一些现有的用户帐户 已成功迁移到自定义用户模型 尽管现在自定义模型与 Django 用户模型相同 accounts models py from d
  • jquery img 选择

    我有一个 h4 里面有一个这样的 img 我将点击功能绑定到 h4 这效果很好 但我无法选择其中的img 我想选择 img 以便用 attr src replace up down 重新放置 src attr h4 class collap
  • UILabel中心内容

    这是我的代码 UILabel myLabel myLabel UILabel alloc initWithFrame CGRectMake 20 0 300 480 myLabel lineBreakMode UILineBreakMode
  • mod_rewrite 和 mod_userdir 的问题

    我正在尝试获取其他人组装的正在运行的网站的本地副本 该网站已部署并正常运行 我正在尝试在我的 public html 目录下设置开发版本 该站点使用 mod rewrite 通过执行各种初始化步骤的网关脚本重定向所有流量 我有一个奇怪的问题
  • Altair:如何在烛台图(即:分层图)上使用区间选择

    我正在尝试复制以下堆叠图表 可以通过与底部图表交互来选择顶部图表的域 但使用烛台图 这是一个分层图表 example code for below is here https altair viz github io gallery int
  • 函数向全局变量返回 2 个值

    鉴于这个帖子 https stackoverflow com questions 61217589 set 2 series at once我想问为什么下面的脚本适用于 a b 但不适合 c d 找不到任何文档来解释为什么这不起作用 此示例
  • 如何检查日期(来自日期选择器)是否在其他两个日期之间?目标-c

    我正在尝试从 UIDatePicker MM dd 格式 获取日期并检查它是否在其他两个日期的范围内 我尝试过很多不同的方式 但我想我的想法已经走得太远了 有人可以帮我做得尽可能简单吗 这是我最后一次尝试的代码 NSDateFormatte
  • 如何在没有窗口的情况下使用 Swift 检测 macOS 上的 Caps Lock 状态?

    我努力了KeyDown and NSEvent 但他们需要一个NSWindow对象处于活动状态 我希望我可以在状态栏上放置一个应用程序 并在按下时提醒用户CapsLock 即使用户在任何其他应用程序中 我的应用程序创意没有用于设置或其他任何