mirror of
https://github.com/keeweb/keeweb.git
synced 2024-06-21 07:06:39 +02:00
fixed key parser
This commit is contained in:
parent
f2b74db0c0
commit
f2f7053d9f
|
@ -1,4 +1,6 @@
|
|||
import Foundation
|
||||
import Cocoa
|
||||
import Carbon
|
||||
|
||||
class SendKeyCommand : InputCommandBase {
|
||||
let key: UInt16
|
||||
|
@ -10,6 +12,39 @@ class SendKeyCommand : InputCommandBase {
|
|||
}
|
||||
|
||||
func execute() {
|
||||
KeyRunner.keyPress(nil, code: key)
|
||||
var rawFlags: UInt64 = 0
|
||||
|
||||
if modifiers.contains(ModifierKeys.cmd) {
|
||||
KeyRunner.keyUpDown(nil, code: CGKeyCode(kVK_Command), flags: nil, down: true)
|
||||
rawFlags += CGEventFlags.MaskCommand.rawValue
|
||||
}
|
||||
if modifiers.contains(ModifierKeys.alt) {
|
||||
KeyRunner.keyUpDown(nil, code: CGKeyCode(kVK_Option), flags: nil, down: true)
|
||||
rawFlags += CGEventFlags.MaskAlternate.rawValue
|
||||
}
|
||||
if modifiers.contains(ModifierKeys.ctrl) {
|
||||
KeyRunner.keyUpDown(nil, code: CGKeyCode(kVK_Control), flags: nil, down: true)
|
||||
rawFlags += CGEventFlags.MaskControl.rawValue
|
||||
}
|
||||
if modifiers.contains(ModifierKeys.shift) {
|
||||
KeyRunner.keyUpDown(nil, code: CGKeyCode(kVK_Shift), flags: nil, down: true)
|
||||
rawFlags += CGEventFlags.MaskShift.rawValue
|
||||
}
|
||||
|
||||
let flags: CGEventFlags? = rawFlags == 0 ? nil : CGEventFlags(rawValue: rawFlags)
|
||||
KeyRunner.keyPress(nil, code: key, flags: flags)
|
||||
|
||||
if modifiers.contains(ModifierKeys.shift) {
|
||||
KeyRunner.keyUpDown(nil, code: CGKeyCode(kVK_Shift), flags: nil, down: false)
|
||||
}
|
||||
if modifiers.contains(ModifierKeys.ctrl) {
|
||||
KeyRunner.keyUpDown(nil, code: CGKeyCode(kVK_Control), flags: nil, down: false)
|
||||
}
|
||||
if modifiers.contains(ModifierKeys.alt) {
|
||||
KeyRunner.keyUpDown(nil, code: CGKeyCode(kVK_Option), flags: nil, down: false)
|
||||
}
|
||||
if modifiers.contains(ModifierKeys.cmd) {
|
||||
KeyRunner.keyUpDown(nil, code: CGKeyCode(kVK_Command), flags: nil, down: false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,8 +36,9 @@ class InputParser {
|
|||
}
|
||||
var modifiers = ModifierKeys()
|
||||
var keyText = text
|
||||
let firstChar = text.characters.first!
|
||||
if firstChar < "0" || firstChar > "9" {
|
||||
while keyText.characters.count > 0 &&
|
||||
(keyText.characters.first! < "0" || keyText.characters.first! > "9") {
|
||||
let firstChar = keyText.characters.first!
|
||||
switch firstChar {
|
||||
case "^":
|
||||
modifiers.insert(ModifierKeys.ctrl)
|
||||
|
@ -51,7 +52,7 @@ class InputParser {
|
|||
fputs("Bad modifier: \(firstChar)\n", stderr)
|
||||
return NoOpCommand()
|
||||
}
|
||||
keyText = text.substringFromIndex(text.startIndex.advancedBy(1))
|
||||
keyText = keyText.substringFromIndex(keyText.startIndex.advancedBy(1))
|
||||
}
|
||||
let keyCode = UInt16(keyText)
|
||||
if keyCode == nil {
|
||||
|
|
Loading…
Reference in New Issue
Block a user