0
キーボードイベントのmyCGEventCallbackからCGEventを解析しようとしています。私は、修飾子フラグ、キーコード、UniCharにアクセスすることができます。CGEventからのキーボードショートカットの解析
これまでのところ、私はcommand + shift + fのようないくつかの組み合わせで動作させることができましたが、他の組み合わせではいくつか問題があります。
- コントロールとオプションは、アルファベットの代わりにいくつかの記号のUniCharを表示するようです。たとえば、オプション+ gは、オプション+ gの代わりにオプション+著作権シンボルを与えます。
- UniCharからファンクションキーとカーソルを取得できません。
結果を解釈するにはどうすればよいですか?たとえば、control + g、option + control + g、option + shift + f1などの結果を得たいとします。 ここにmyCGEventCallbackのコードがあります。ありがとう!
func myCGEventCallback(proxy : CGEventTapProxy, type : CGEventType, event : CGEvent, refcon : UnsafeMutableRawPointer?) -> Unmanaged<CGEvent>? {
if type == .keyDown {
let flags = event.flags
var msg = ""
if flags.contains(.maskAlphaShift) {
msg+="caps+"
}
if flags.contains(.maskShift) {
msg+="shift+"
}
if flags.contains(.maskControl) {
msg+="control+"
}
if flags.contains(.maskAlternate) {
msg+="option+"
}
if flags.contains(.maskCommand) {
msg += "command+"
}
if flags.contains(.maskSecondaryFn) {
msg += "function+"
}
var keyCode = event.getIntegerValueField(.keyboardEventKeycode)
var char = UniChar()
var length = 0
event.keyboardGetUnicodeString(maxStringLength: 1, actualStringLength: &length, unicodeString: &char)
msg+="\(Character(UnicodeScalar(char)!))"
debugPrint(msg)
}
return Unmanaged.passRetained(event)
}