【问题标题】:User assigned key equivalents用户分配的密钥等效项
【发布时间】:2013-10-21 17:14:31
【问题描述】:

我正在开发状态栏应用程序。我想允许用户根据自己的喜好修改菜单项键等效项。在它成为一个非常常见的功能之前,我已经看到了这一点。 首选项窗口通常有一个带有文本字段的区域,用户可以在其中输入特定菜单项的键盘快捷键。

如何设置文本字段以显示修饰键字体? 默认的 NSTextfield 忽略修饰符。

此外,我还没有找到显示此功能的示例项目,如果有人有一个非常有用的链接。

【问题讨论】:

  • 更新:仔细查看一些提供此功能的应用程序,我注意到输入快捷方式的区域不是文本字段。它可能是一个捕获和处理按键的小视图。

标签: macos nsmenuitem


【解决方案1】:

您可能希望查看 Shortcut Recorder,它允许用户使用修饰符记录等效键,然后您可以检索它们并将它们设置为 NSMenuItem

一旦用户记录了他们的快捷键/组合键,您就可以访问SRRecorderControlobjectValue 属性,该属性具有键代码和修饰符标志的值。

https://github.com/Kentzo/ShortcutRecorder

【讨论】:

    【解决方案2】:

    修饰键都具有 Unicode 值,您可以在“特殊字符”面板中看到它们,它们以正常的系统字体显示。其中大部分位于调色板的“技术符号”类别中,但 Shift 和 Caps Lock 键的向上箭头位于“箭头”部分。

    您可以在 Interface Builder 或 Xcode 中编辑标签元素时插入这些值,或者在创建类似 NSString 对象时包含它们对应的 Unicode 值。

    例如,Shift 键的 UTF-8 序列(如调色板中所示)是 E2 87 A7,因此以编程方式设置它的一种方法是将这些字节添加到数组并从 UTF-8 创建一个 NSString大批。我更喜欢数组方法,因为它“防弹”;它将始终被解释为 UTF-8 并执行您期望的操作。如果您尝试将字符直接插入@""CFSTR() 字符串,则必须确保源文件的编码正确(旧版本的Xcode 甚至不允许这样做,他们只假设ASCII)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-15
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      • 2016-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多