Skip to content

Latest commit

 

History

History
81 lines (62 loc) · 3.03 KB

Upgrading_Magnet_2.md

File metadata and controls

81 lines (62 loc) · 3.03 KB

Upgrading from Magnet v2.x to 3.x

KeyCombo initializer

The standard initializer, KeyCombo(keyCode:carbonModifiers:) & KeyCombo(keyCode:cocoaModifiers:), is removed.
This change was necessary to set the correct shortcut keys on non-QWERTY keyboards.

If you want to keep the same settings, use the following initializer.

KeyCombo(QWERTYKeyCode:carbonModifiers:)
KeyCombo(QWERTYKeyCode:cocoaModifiers:)

The recommended initializer in the future is to use enum of Key which is independent of keyCode.

KeyCombo(key:carbonModifiers:)
KeyCombo(key:cocoaModifiers:)

This will set the correct shortcut for any keyboard layout you use.

About key code

Previously KeyCombo.keyCode kept the KeyCode that was set during initialization.
Starting from v3.0.0, KeyCombo.currentKeyCode returns the correct key code for the currently set keyboard layout.

let keyCombo = KeyCombo(key: v, cocoaModifiers: [.shift])

In QWERTY keyboard layout.

print(keyCombo.currentKeyCode) // return 9

In Dvorak keyboard layout.

print(keyCombo.currentKeyCode) // return 47

If you want to get the old KeyCombo.keyCode, change it to KeyCombo.QWERTYKeyCode.

About characters

Previously, KeyCombo.characters did not add modifiers correctly.
As of v3.0.0, KeyCombo.characters returns a string that takes into account the following qualifier.

let keyCombo = KeyCombo(key: .v, cocoaModifiers: [.command])
print(keyCombo.characters) // return v
let keyCombo = KeyCombo(key: .v, cocoaModifiers: [.shift])
print(keyCombo.characters) // return V
let keyCombo = KeyCombo(key: .v, cocoaModifiers: [.option])
print(keyCombo.characters) // return √
let keyCombo = KeyCombo(key: .v, cocoaModifiers: [.option, .shift])
print(keyCombo.characters) // return ◊

If you want to get the same string as before, use KeyCombo.keyEquivalent.uppercased().

let keyCombo = KeyCombo(key: .v, cocoaModifiers: [.command])
print(keyCombo.keyEquivalent) // return v
let keyCombo = KeyCombo(key: .v, cocoaModifiers: [.shift])
print(keyCombo.keyEquivalent) // return V
let keyCombo = KeyCombo(key: .v, cocoaModifiers: [.option])
print(keyCombo.keyEquivalent) // return v
let keyCombo = KeyCombo(key: .v, cocoaModifiers: [.option, .shift])
print(keyCombo.keyEquivalent) // return V

Important
KeyCombo.keyEquivalent is case-sensitive depending on whether the shift is typed or not.

Removed KeyCodeTransformer and KeyTransformer