1
0
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:
antelle 2016-07-23 23:37:24 +03:00
parent f2b74db0c0
commit f2f7053d9f
2 changed files with 40 additions and 4 deletions

View File

@ -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)
}
}
}

View File

@ -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 {