我希望我的应用程序在用户按下
COMMAND
+ +
时使文本变大。所以我写:
if event.charactersIgnoringModifiers == "=" { ... }
但例如在德国,等号与加号位于不同的键上。我不知道世界上有多少键盘是这样工作的。
我是否需要查看所有数百种不同的键盘布局并找到所有加号键的小写字符,并编写一个类来检测用户的语言并返回该字符?
命令加总是一个棘手的问题。我认为对于大多数情况,检查三种情况就足够了:
NSEvent 的
characters
属性。您应该检查这一点,以防键盘有一个特定的命令字符平面,明确地将“+”放在特殊位置。
正如您所提到的,您可以检查
charactersIgnoringModifiers
,以防在布局中使用该键上的“+”捕获平面。
从 macOS 10.15 开始,您还可以使用
-charactersByApplyingModifiers:
方法来确定按下某个修饰键时字符 将会是什么。在这种情况下,您可以传入 NSEventModifierFlagShift 来查看移位平面是否为您提供“+”。
我相信应该涵盖99.9%的情况。剩下的情况是人们编写了自己的自定义键盘布局,其中“+”键不在主平面、命令平面或移位平面中的任何键上。但如果他们在这样的布局上打字,他们只能怪自己无法在您的应用程序中使用命令加号。 :)
(提醒一下,如果您的部署目标早于 macOS 10.15,您仍然可以通过将相关代码封装在
if (@available(macOS 10.15, *)) { ... }
中,为 10.15+ 上的用户获得此行为。)