walkingmask’s development log

IT系の情報などを適当に書いていきます

MENU

NSMenuItemのkeyEquivalentを任意に設定する(ファンクションキーなど)

WiFiTogglerで使用したので記録しておきます。 github.com

サンプルコード

let menuitem:NSMenuItem = NSMenuItem(title: "foo item", action: #selector(AppDelegate.foo), keyEquivalent: String(utf16CodeUnits: [unichar(NSF5FunctionKey)], count: 1))
menuitem.keyEquivalentModifierMask = Int(NSEventModifierFlags.ShiftKeyMask.rawValue)
menu.addItem(menuitem1)

上記のサンプルでは、Shift + F5をkeyEquivalentに設定しています。

String(utf16CodeUnits: [unichar(NSF5FunctionKey)], count: 1) の部分がファンクションキーを設定する部分になっており、これは正しいか怪しいです。下記のWebページを参考にしました。

stackoverflow.com

2行目ではShiftキーをkeyEquivalentModifierMaskに設定しており、デフォルトのCommandキーを書き換えています。おそらく、複数のKeyMaskを同時に登録できるはずです。