0
我想從myCGEventCallback解析CGEvent的鍵盤事件。我可以訪問修飾符標誌,鍵碼,UniChar。解析來自CGEvent的鍵盤快捷鍵
到目前爲止,我設法讓它爲像command + shift + f這樣的組合工作,但我對其他一些組合有一些問題。
- 控制和選項似乎給了我一些UniChar的一些符號而不是字母表。例如,選項+ g會給我選項+版權符號而不是選項+ g。
- 我無法從UniChar獲取功能鍵和遊標。
解釋結果的最佳方式是什麼?例如,我想得到一個結果,如控制+ g,選項+控制+ g或選項+ 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)
}