diff --git a/AnyIpsum.xcodeproj/project.pbxproj b/AnyIpsum.xcodeproj/project.pbxproj index d08e730..4a2b7b1 100644 --- a/AnyIpsum.xcodeproj/project.pbxproj +++ b/AnyIpsum.xcodeproj/project.pbxproj @@ -16,6 +16,7 @@ 469992361D36505900D073CD /* String+words.swift in Sources */ = {isa = PBXBuildFile; fileRef = 469992351D36505900D073CD /* String+words.swift */; }; 46E666881D3CB873004F476F /* String+condenseWhitespace.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46E666871D3CB873004F476F /* String+condenseWhitespace.swift */; }; 46E6668A1D3CB8A6004F476F /* String+capitalizeFirstLetter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46E666891D3CB8A6004F476F /* String+capitalizeFirstLetter.swift */; }; + 693826CB56962D22650F6002 /* Pods_AnyIpsum.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D96B53FA2326EA377E2C7E4F /* Pods_AnyIpsum.framework */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -30,6 +31,9 @@ 469992351D36505900D073CD /* String+words.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+words.swift"; sourceTree = ""; }; 46E666871D3CB873004F476F /* String+condenseWhitespace.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+condenseWhitespace.swift"; sourceTree = ""; }; 46E666891D3CB8A6004F476F /* String+capitalizeFirstLetter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+capitalizeFirstLetter.swift"; sourceTree = ""; }; + 7E02F71A2B5A014ADC0641F9 /* Pods-AnyIpsum.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AnyIpsum.debug.xcconfig"; path = "Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum.debug.xcconfig"; sourceTree = ""; }; + B169AFB4F878C16FBA2EA39A /* Pods-AnyIpsum.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AnyIpsum.release.xcconfig"; path = "Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum.release.xcconfig"; sourceTree = ""; }; + D96B53FA2326EA377E2C7E4F /* Pods_AnyIpsum.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AnyIpsum.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -37,6 +41,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 693826CB56962D22650F6002 /* Pods_AnyIpsum.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -48,6 +53,8 @@ children = ( 462FA5811D30C1AF0099FD9E /* AnyIpsum */, 462FA5801D30C1AF0099FD9E /* Products */, + 69E15F794C047FAFF120DC31 /* Pods */, + C1358037AE2897071FFC3BFF /* Frameworks */, ); sourceTree = ""; }; @@ -92,6 +99,23 @@ name = Classes; sourceTree = ""; }; + 69E15F794C047FAFF120DC31 /* Pods */ = { + isa = PBXGroup; + children = ( + 7E02F71A2B5A014ADC0641F9 /* Pods-AnyIpsum.debug.xcconfig */, + B169AFB4F878C16FBA2EA39A /* Pods-AnyIpsum.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; + C1358037AE2897071FFC3BFF /* Frameworks */ = { + isa = PBXGroup; + children = ( + D96B53FA2326EA377E2C7E4F /* Pods_AnyIpsum.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -99,10 +123,13 @@ isa = PBXNativeTarget; buildConfigurationList = 462FA58C1D30C1AF0099FD9E /* Build configuration list for PBXNativeTarget "AnyIpsum" */; buildPhases = ( + 75FC4132FB63BC900073BDCA /* [CP] Check Pods Manifest.lock */, 462FA57B1D30C1AF0099FD9E /* Sources */, 462FA57C1D30C1AF0099FD9E /* Frameworks */, 462FA57D1D30C1AF0099FD9E /* Resources */, 463E21A61E9F829500258BA6 /* ShellScript */, + B8E5D4A9922D7591E703B43D /* [CP] Embed Pods Frameworks */, + 70F4EF172AA549EC5CE20041 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -174,6 +201,57 @@ shellPath = /bin/sh; shellScript = "if [ \"${CONFIGURATION}\" = \"Release\" ]; then\n echo \"Building release disk image...\"\n hdiutil create -ov -srcfolder ${CONFIGURATION_BUILD_DIR}/${EXECUTABLE_NAME}.app AnyIpsum.dmg\nfi"; }; + 70F4EF172AA549EC5CE20041 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 75FC4132FB63BC900073BDCA /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-AnyIpsum-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + B8E5D4A9922D7591E703B43D /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${SRCROOT}/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/HotKey/HotKey.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/HotKey.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -305,6 +383,7 @@ }; 462FA58D1D30C1AF0099FD9E /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 7E02F71A2B5A014ADC0641F9 /* Pods-AnyIpsum.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COMBINE_HIDPI_IMAGES = YES; @@ -319,6 +398,7 @@ }; 462FA58E1D30C1AF0099FD9E /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = B169AFB4F878C16FBA2EA39A /* Pods-AnyIpsum.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COMBINE_HIDPI_IMAGES = YES; diff --git a/AnyIpsum.xcworkspace/contents.xcworkspacedata b/AnyIpsum.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..d15c1fe --- /dev/null +++ b/AnyIpsum.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/AnyIpsum/AppDelegate.swift b/AnyIpsum/AppDelegate.swift index 5536dcf..e9f153c 100644 --- a/AnyIpsum/AppDelegate.swift +++ b/AnyIpsum/AppDelegate.swift @@ -7,6 +7,7 @@ // import Cocoa +import HotKey @NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate { @@ -14,6 +15,8 @@ class AppDelegate: NSObject, NSApplicationDelegate { @IBOutlet weak var window: NSWindow! @IBOutlet weak var menuBar: NSMenu! + let hotKey = HotKey(key: .a, modifiers: [.control, .command]) + let statusItem = NSStatusBar .system .statusItem(withLength: NSStatusItem.variableLength) @@ -55,6 +58,11 @@ class AppDelegate: NSObject, NSApplicationDelegate { index += 1 } + + // Open menu bar on Ctrl+Cmd+A + hotKey.keyDownHandler = { + self.statusItem.popUpMenu(self.menuBar) + } } func writeToPasteboard(_ text: String) { diff --git a/Podfile b/Podfile new file mode 100644 index 0000000..f89cb2c --- /dev/null +++ b/Podfile @@ -0,0 +1,10 @@ +# Uncomment the next line to define a global platform for your project +# platform :ios, '9.0' + +target 'AnyIpsum' do + # Comment the next line if you're not using Swift and don't want to use dynamic frameworks + use_frameworks! + + # Pods for AnyIpsum + pod 'HotKey' +end diff --git a/Podfile.lock b/Podfile.lock new file mode 100644 index 0000000..3977546 --- /dev/null +++ b/Podfile.lock @@ -0,0 +1,12 @@ +PODS: + - HotKey (0.1.0) + +DEPENDENCIES: + - HotKey + +SPEC CHECKSUMS: + HotKey: aa2b99ed0a4d7026e1bc15b6ae206a70e9a1851f + +PODFILE CHECKSUM: 03eafbdb6ae979846d7ebbb83217ca952bed7e87 + +COCOAPODS: 1.4.0 diff --git a/Pods/HotKey/LICENSE b/Pods/HotKey/LICENSE new file mode 100644 index 0000000..814c730 --- /dev/null +++ b/Pods/HotKey/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2017 Sam Soffes, http://soff.es + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Pods/HotKey/README.md b/Pods/HotKey/README.md new file mode 100644 index 0000000..4d49ad0 --- /dev/null +++ b/Pods/HotKey/README.md @@ -0,0 +1,66 @@ +# HotKey + +[![Version](https://img.shields.io/github/release/soffes/HotKey.svg)](https://github.com/soffes/HotKey/releases) +[![Build Status](https://travis-ci.org/soffes/HotKey.svg?branch=master)](https://travis-ci.org/soffes/HotKey) +![Swift Version](https://img.shields.io/badge/swift-4.0-orange.svg) +[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) +[![CocoaPods compatible](https://img.shields.io/cocoapods/v/HotKey.svg)](https://cocoapods.org/pods/HotKey) + +Simple global shortcuts in macOS. HotKey wraps the Carbon APIs for dealing with global hot keys to make it easy to use in Swift. + +**HotKey, along with [Color](https://github.com/soffes/Color), were created for use in [Contrast](https://usecontrast.com),a macOS app for checking designs for accessible color combinations.** + +## Installation + +### Carthage + +For installation with [Carthage](https://github.com/carthage/carthage), simply add the following to your `Cartfile`: + +``` ruby +github "soffes/HotKey" +``` + +### Swift Package Manager + +For installation with [Swift Package Manager](https://github.com/apple/swift-package-manager), simply add the following to your `Package.swift`: + +``` swift +.package(url: "https://github.com/soffes/HotKey", from: "0.1.0") +``` + +### CocoaPods + +For installation with [CocoaPods](http://cocoapods.org), simply add the following to your `Podfile`: + +```ruby +pod 'HotKey' +``` + + +## Usage + +Simply initlaize a `HotKey` with a key and modifiers: + +```swift +// Setup hot key for ⌥⌘R +let hotKey = HotKey(key: .r, modifiers: [.command, .option]) +``` + +This is a convenice initializer that creates a `KeyCombo` for you. You can also initialize with a Carbon key code and Carbon modifier flags if you’re feeling old school. + +Now you can set the `keyDownHandler` and get callbacks for when your hot key is pressed: + +```swift +hotKey.keyDownHandler = { + print("Pressed at \(Date())") +} +``` + +You can also implement `hotKey.keyUpHandler` if you’d like. + +You don’t need to think about when handlers are registered and unregistered. This all happens automatically based on the `HotKey` object’s lifecycle. + + +## Thanks + +HotKey was heavily inspired by PTHotKey. diff --git a/Pods/HotKey/Sources/HotKey/HotKey.swift b/Pods/HotKey/Sources/HotKey/HotKey.swift new file mode 100644 index 0000000..626c4a8 --- /dev/null +++ b/Pods/HotKey/Sources/HotKey/HotKey.swift @@ -0,0 +1,52 @@ +// +// HotKey.swift +// HotKey +// +// Created by Sam Soffes on 7/21/17. +// Copyright © 2017 Sam Soffes. All rights reserved. +// + +import AppKit +import Carbon + +public final class HotKey { + + // MARK: - Types + + public typealias Handler = () -> Void + + + // MARK: - Properties + + let identifier = UUID() + + public let keyCombo: KeyCombo + public var keyDownHandler: Handler? + public var keyUpHandler: Handler? + public var isPaused = false + + + // MARK: - Initializers + + public init(keyCombo: KeyCombo, keyDownHandler: Handler? = nil, keyUpHandler: Handler? = nil) { + self.keyCombo = keyCombo + self.keyDownHandler = keyDownHandler + self.keyUpHandler = keyUpHandler + + HotKeysController.register(self) + } + + public convenience init(carbonKeyCode: UInt32, carbonModifiers: UInt32, keyDownHandler: Handler? = nil, keyUpHandler: Handler? = nil) { + let keyCombo = KeyCombo(carbonKeyCode: carbonKeyCode, carbonModifiers: carbonModifiers) + self.init(keyCombo: keyCombo, keyDownHandler: keyDownHandler, keyUpHandler: keyUpHandler) + } + + public convenience init(key: Key, modifiers: NSEvent.ModifierFlags, keyDownHandler: Handler? = nil, keyUpHandler: Handler? = nil) { + let keyCombo = KeyCombo(key: key, modifiers: modifiers) + self.init(keyCombo: keyCombo, keyDownHandler: keyDownHandler, keyUpHandler: keyUpHandler) + } + + deinit { + HotKeysController.unregister(self) + } +} diff --git a/Pods/HotKey/Sources/HotKey/HotKeysController.swift b/Pods/HotKey/Sources/HotKey/HotKeysController.swift new file mode 100644 index 0000000..4501284 --- /dev/null +++ b/Pods/HotKey/Sources/HotKey/HotKeysController.swift @@ -0,0 +1,191 @@ +// +// HotKeysController.swift +// HotKey +// +// Created by Sam Soffes on 7/21/17. +// Copyright © 2017 Sam Soffes. All rights reserved. +// + +import Carbon + +final class HotKeysController { + + // MARK: - Types + + final class HotKeyBox { + let identifier: UUID + weak var hotKey: HotKey? + let carbonHotKeyID: UInt32 + var carbonEventHotKey: EventHotKeyRef? + + init(hotKey: HotKey, carbonHotKeyID: UInt32) { + self.identifier = hotKey.identifier + self.hotKey = hotKey + self.carbonHotKeyID = carbonHotKeyID + } + } + + + // MARK: - Properties + + static var hotKeys = [UInt32: HotKeyBox]() + static private var hotKeysCount: UInt32 = 0 + + static let eventHotKeySignature: UInt32 = { + let string = "SSHk" + var result: FourCharCode = 0 + for char in string.utf16 { + result = (result << 8) + FourCharCode(char) + } + return result + }() + + private static let eventSpec = [ + EventTypeSpec(eventClass: OSType(kEventClassKeyboard), eventKind: UInt32(kEventHotKeyPressed)), + EventTypeSpec(eventClass: OSType(kEventClassKeyboard), eventKind: UInt32(kEventHotKeyReleased)) + ] + + private static var eventHandler: EventHandlerRef? + + + // MARK: - Registration + + static func register(_ hotKey: HotKey) { + // Increment the count which will become out next ID + hotKeysCount += 1 + + // Create a box for our metadata and weak HotKey + let box = HotKeyBox(hotKey: hotKey, carbonHotKeyID: hotKeysCount) + hotKeys[box.carbonHotKeyID] = box + + // Register with the system + var eventHotKey: EventHotKeyRef? + let hotKeyID = EventHotKeyID(signature: eventHotKeySignature, id: box.carbonHotKeyID) + let registerError = RegisterEventHotKey( + hotKey.keyCombo.carbonKeyCode, + hotKey.keyCombo.carbonModifiers, + hotKeyID, + GetEventDispatcherTarget(), + 0, + &eventHotKey + ) + + // Ensure registration worked + guard registerError == noErr, eventHotKey != nil else { + return + } + + // Store the event so we can unregister it later + box.carbonEventHotKey = eventHotKey + + // Setup the event handler if needed + updateEventHandler() + } + + static func unregister(_ hotKey: HotKey) { + // Find the box + guard let box = self.box(for: hotKey) else { + return + } + + // Unregister the hot key + UnregisterEventHotKey(box.carbonEventHotKey) + + // Destroy the box + box.hotKey = nil + hotKeys.removeValue(forKey: box.carbonHotKeyID) + } + + + // MARK: - Events + + static func handleCarbonEvent(_ event: EventRef?) -> OSStatus { + // Ensure we have an event + guard let event = event else { + return OSStatus(eventNotHandledErr) + } + + // Get the hot key ID from the event + var hotKeyID = EventHotKeyID() + let error = GetEventParameter( + event, + UInt32(kEventParamDirectObject), + UInt32(typeEventHotKeyID), + nil, + MemoryLayout.size, + nil, + &hotKeyID + ) + + if error != noErr { + return error + } + + // Ensure we have a HotKey registered for this ID + guard hotKeyID.signature == eventHotKeySignature, + let hotKey = self.hotKey(for: hotKeyID.id) + else { + return OSStatus(eventNotHandledErr) + } + + // Call the handler + switch GetEventKind(event) { + case UInt32(kEventHotKeyPressed): + if !hotKey.isPaused, let handler = hotKey.keyDownHandler { + handler() + return noErr + } + case UInt32(kEventHotKeyReleased): + if !hotKey.isPaused, let handler = hotKey.keyUpHandler { + handler() + return noErr + } + default: + break + } + + return OSStatus(eventNotHandledErr) + } + + private static func updateEventHandler() { + if hotKeysCount == 0 || eventHandler != nil { + return + } + + // Register for key down and key up + let eventSpec = [ + EventTypeSpec(eventClass: OSType(kEventClassKeyboard), eventKind: UInt32(kEventHotKeyPressed)), + EventTypeSpec(eventClass: OSType(kEventClassKeyboard), eventKind: UInt32(kEventHotKeyReleased)) + ] + + // Install the handler + InstallEventHandler(GetEventDispatcherTarget(), hotKeyEventHandler, 2, eventSpec, nil, &eventHandler) + } + + + // MARK: - Querying + + private static func hotKey(for carbonHotKeyID: UInt32) -> HotKey? { + if let hotKey = hotKeys[carbonHotKeyID]?.hotKey { + return hotKey + } + + hotKeys.removeValue(forKey: carbonHotKeyID) + return nil + } + + private static func box(for hotKey: HotKey) -> HotKeyBox? { + for box in hotKeys.values { + if box.identifier == hotKey.identifier { + return box + } + } + + return nil + } +} + + +private func hotKeyEventHandler(eventHandlerCall: EventHandlerCallRef?, event: EventRef?, userData: UnsafeMutableRawPointer?) -> OSStatus { + return HotKeysController.handleCarbonEvent(event) +} diff --git a/Pods/HotKey/Sources/HotKey/Key.swift b/Pods/HotKey/Sources/HotKey/Key.swift new file mode 100644 index 0000000..c5a6fb7 --- /dev/null +++ b/Pods/HotKey/Sources/HotKey/Key.swift @@ -0,0 +1,481 @@ +// +// Key.swift +// HotKey +// +// Created by Sam Soffes on 7/21/17. +// Copyright © 2017 Sam Soffes. All rights reserved. +// + +import Carbon + +public enum Key { + case a + case s + case d + case f + case h + case g + case z + case x + case c + case v + case b + case q + case w + case e + case r + case y + case t + case one + case two + case three + case four + case six + case five + case equal + case nine + case seven + case minus + case eight + case zero + case rightBracket + case o + case u + case leftBracket + case i + case p + case l + case j + case quote + case k + case semicolon + case backslash + case comma + case slash + case n + case m + case period + case grave + case keypadDecimal + case keypadMultiply + case keypadPlus + case keypadClear + case keypadDivide + case keypadEnter + case keypadMinus + case keypadEquals + case keypad0 + case keypad1 + case keypad2 + case keypad3 + case keypad4 + case keypad5 + case keypad6 + case keypad7 + case keypad8 + case keypad9 + case `return` + case tab + case space + case delete + case escape + case command + case shift + case capsLock + case option + case control + case rightCommand + case rightShift + case rightOption + case rightControl + case function + case f17 + case volumeUp + case volumeDown + case mute + case f18 + case f19 + case f20 + case f5 + case f6 + case f7 + case f3 + case f8 + case f9 + case f11 + case f13 + case f16 + case f14 + case f10 + case f12 + case f15 + case help + case home + case pageUp + case forwardDelete + case f4 + case end + case f2 + case pageDown + case f1 + case leftArrow + case rightArrow + case downArrow + case upArrow + + public init?(string: String) { + switch string.lowercased() { + case "a": self = .a + case "s": self = .s + case "d": self = .d + case "f": self = .f + case "h": self = .h + case "g": self = .g + case "z": self = .z + case "x": self = .x + case "c": self = .c + case "v": self = .v + case "b": self = .b + case "q": self = .q + case "w": self = .w + case "e": self = .e + case "r": self = .r + case "y": self = .y + case "t": self = .t + case "one", "1": self = .one + case "two", "2": self = .two + case "three", "3": self = .three + case "four", "4": self = .four + case "six", "6": self = .six + case "five", "5": self = .five + case "equal", "=": self = .equal + case "nine", "9": self = .nine + case "seven", "7": self = .seven + case "minus", "-": self = .minus + case "eight", "8": self = .eight + case "zero", "0": self = .zero + case "rightBracket": self = .rightBracket + case "o": self = .o + case "u": self = .u + case "leftBracket": self = .leftBracket + case "i": self = .i + case "p": self = .p + case "l": self = .l + case "j": self = .j + case "quote", "\"": self = .quote + case "k": self = .k + case "semicolon", ";": self = .semicolon + case "backslash", "\\": self = .backslash + case "comma", ",": self = .comma + case "slash", "/": self = .slash + case "n": self = .n + case "m": self = .m + case "period", ".": self = .period + case "grave": self = .grave + case "keypaddecimal": self = .keypadDecimal + case "keypadmultiply": self = .keypadMultiply + case "keypadplus": self = .keypadPlus + case "keypadclear": self = .keypadClear + case "keypaddivide": self = .keypadDivide + case "keypadenter": self = .keypadEnter + case "keypadminus": self = .keypadMinus + case "keypadequals": self = .keypadEquals + case "keypad0": self = .keypad0 + case "keypad1": self = .keypad1 + case "keypad2": self = .keypad2 + case "keypad3": self = .keypad3 + case "keypad4": self = .keypad4 + case "keypad5": self = .keypad5 + case "keypad6": self = .keypad6 + case "keypad7": self = .keypad7 + case "keypad8": self = .keypad8 + case "keypad9": self = .keypad9 + case "return", "\r": self = .return + case "tab", "\t": self = .tab + case "space", " ": self = .space + case "delete": self = .delete + case "escape": self = .escape + case "command": self = .command + case "shift": self = .shift + case "capsLock": self = .capsLock + case "option": self = .option + case "control": self = .control + case "rightcommand": self = .rightCommand + case "rightshift": self = .rightShift + case "rightoption": self = .rightOption + case "rightcontrol": self = .rightControl + case "function": self = .function + case "f17": self = .f17 + case "volumeup": self = .volumeUp + case "volumedown": self = .volumeDown + case "mute": self = .mute + case "f18": self = .f18 + case "f19": self = .f19 + case "f20": self = .f20 + case "f5": self = .f5 + case "f6": self = .f6 + case "f7": self = .f7 + case "f3": self = .f3 + case "f8": self = .f8 + case "f9": self = .f9 + case "f11": self = .f11 + case "f13": self = .f13 + case "f16": self = .f16 + case "f14": self = .f14 + case "f10": self = .f10 + case "f12": self = .f12 + case "f15": self = .f15 + case "help": self = .help + case "home": self = .home + case "pageup": self = .pageUp + case "forwarddelete": self = .forwardDelete + case "f4": self = .f4 + case "end": self = .end + case "f2": self = .f2 + case "pagedown": self = .pageDown + case "f1": self = .f1 + case "leftarrow": self = .leftArrow + case "rightarrow": self = .rightArrow + case "downarrow": self = .downArrow + case "uparrow": self = .upArrow + default: return nil + } + } + + public init?(carbonKeyCode: UInt32) { + switch carbonKeyCode { + case UInt32(kVK_ANSI_A): self = .a + case UInt32(kVK_ANSI_S): self = .s + case UInt32(kVK_ANSI_D): self = .d + case UInt32(kVK_ANSI_F): self = .f + case UInt32(kVK_ANSI_H): self = .h + case UInt32(kVK_ANSI_G): self = .g + case UInt32(kVK_ANSI_Z): self = .z + case UInt32(kVK_ANSI_X): self = .x + case UInt32(kVK_ANSI_C): self = .c + case UInt32(kVK_ANSI_V): self = .v + case UInt32(kVK_ANSI_B): self = .b + case UInt32(kVK_ANSI_Q): self = .q + case UInt32(kVK_ANSI_W): self = .w + case UInt32(kVK_ANSI_E): self = .e + case UInt32(kVK_ANSI_R): self = .r + case UInt32(kVK_ANSI_Y): self = .y + case UInt32(kVK_ANSI_T): self = .t + case UInt32(kVK_ANSI_1): self = .one + case UInt32(kVK_ANSI_2): self = .two + case UInt32(kVK_ANSI_3): self = .three + case UInt32(kVK_ANSI_4): self = .four + case UInt32(kVK_ANSI_6): self = .six + case UInt32(kVK_ANSI_5): self = .five + case UInt32(kVK_ANSI_Equal): self = .equal + case UInt32(kVK_ANSI_9): self = .nine + case UInt32(kVK_ANSI_7): self = .seven + case UInt32(kVK_ANSI_Minus): self = .minus + case UInt32(kVK_ANSI_8): self = .eight + case UInt32(kVK_ANSI_0): self = .zero + case UInt32(kVK_ANSI_RightBracket): self = .rightBracket + case UInt32(kVK_ANSI_O): self = .o + case UInt32(kVK_ANSI_U): self = .u + case UInt32(kVK_ANSI_LeftBracket): self = .leftBracket + case UInt32(kVK_ANSI_I): self = .i + case UInt32(kVK_ANSI_P): self = .p + case UInt32(kVK_ANSI_L): self = .l + case UInt32(kVK_ANSI_J): self = .j + case UInt32(kVK_ANSI_Quote): self = .quote + case UInt32(kVK_ANSI_K): self = .k + case UInt32(kVK_ANSI_Semicolon): self = .semicolon + case UInt32(kVK_ANSI_Backslash): self = .backslash + case UInt32(kVK_ANSI_Comma): self = .comma + case UInt32(kVK_ANSI_Slash): self = .slash + case UInt32(kVK_ANSI_N): self = .n + case UInt32(kVK_ANSI_M): self = .m + case UInt32(kVK_ANSI_Period): self = .period + case UInt32(kVK_ANSI_Grave): self = .grave + case UInt32(kVK_ANSI_KeypadDecimal): self = .keypadDecimal + case UInt32(kVK_ANSI_KeypadMultiply): self = .keypadMultiply + case UInt32(kVK_ANSI_KeypadPlus): self = .keypadPlus + case UInt32(kVK_ANSI_KeypadClear): self = .keypadClear + case UInt32(kVK_ANSI_KeypadDivide): self = .keypadDivide + case UInt32(kVK_ANSI_KeypadEnter): self = .keypadEnter + case UInt32(kVK_ANSI_KeypadMinus): self = .keypadMinus + case UInt32(kVK_ANSI_KeypadEquals): self = .keypadEquals + case UInt32(kVK_ANSI_Keypad0): self = .keypad0 + case UInt32(kVK_ANSI_Keypad1): self = .keypad1 + case UInt32(kVK_ANSI_Keypad2): self = .keypad2 + case UInt32(kVK_ANSI_Keypad3): self = .keypad3 + case UInt32(kVK_ANSI_Keypad4): self = .keypad4 + case UInt32(kVK_ANSI_Keypad5): self = .keypad5 + case UInt32(kVK_ANSI_Keypad6): self = .keypad6 + case UInt32(kVK_ANSI_Keypad7): self = .keypad7 + case UInt32(kVK_ANSI_Keypad8): self = .keypad8 + case UInt32(kVK_ANSI_Keypad9): self = .keypad9 + case UInt32(kVK_Return): self = .`return` + case UInt32(kVK_Tab): self = .tab + case UInt32(kVK_Space): self = .space + case UInt32(kVK_Delete): self = .delete + case UInt32(kVK_Escape): self = .escape + case UInt32(kVK_Command): self = .command + case UInt32(kVK_Shift): self = .shift + case UInt32(kVK_CapsLock): self = .capsLock + case UInt32(kVK_Option): self = .option + case UInt32(kVK_Control): self = .control + case UInt32(kVK_RightCommand): self = .rightCommand + case UInt32(kVK_RightShift): self = .rightShift + case UInt32(kVK_RightOption): self = .rightOption + case UInt32(kVK_RightControl): self = .rightControl + case UInt32(kVK_Function): self = .function + case UInt32(kVK_F17): self = .f17 + case UInt32(kVK_VolumeUp): self = .volumeUp + case UInt32(kVK_VolumeDown): self = .volumeDown + case UInt32(kVK_Mute): self = .mute + case UInt32(kVK_F18): self = .f18 + case UInt32(kVK_F19): self = .f19 + case UInt32(kVK_F20): self = .f20 + case UInt32(kVK_F5): self = .f5 + case UInt32(kVK_F6): self = .f6 + case UInt32(kVK_F7): self = .f7 + case UInt32(kVK_F3): self = .f3 + case UInt32(kVK_F8): self = .f8 + case UInt32(kVK_F9): self = .f9 + case UInt32(kVK_F11): self = .f11 + case UInt32(kVK_F13): self = .f13 + case UInt32(kVK_F16): self = .f16 + case UInt32(kVK_F14): self = .f14 + case UInt32(kVK_F10): self = .f10 + case UInt32(kVK_F12): self = .f12 + case UInt32(kVK_F15): self = .f15 + case UInt32(kVK_Help): self = .help + case UInt32(kVK_Home): self = .home + case UInt32(kVK_PageUp): self = .pageUp + case UInt32(kVK_ForwardDelete): self = .forwardDelete + case UInt32(kVK_F4): self = .f4 + case UInt32(kVK_End): self = .end + case UInt32(kVK_F2): self = .f2 + case UInt32(kVK_PageDown): self = .pageDown + case UInt32(kVK_F1): self = .f1 + case UInt32(kVK_LeftArrow): self = .leftArrow + case UInt32(kVK_RightArrow): self = .rightArrow + case UInt32(kVK_DownArrow): self = .downArrow + case UInt32(kVK_UpArrow): self = .upArrow + default: return nil + } + } + + public var carbonKeyCode: UInt32 { + switch self { + case .a: return UInt32(kVK_ANSI_A) + case .s: return UInt32(kVK_ANSI_S) + case .d: return UInt32(kVK_ANSI_D) + case .f: return UInt32(kVK_ANSI_F) + case .h: return UInt32(kVK_ANSI_H) + case .g: return UInt32(kVK_ANSI_G) + case .z: return UInt32(kVK_ANSI_Z) + case .x: return UInt32(kVK_ANSI_X) + case .c: return UInt32(kVK_ANSI_C) + case .v: return UInt32(kVK_ANSI_V) + case .b: return UInt32(kVK_ANSI_B) + case .q: return UInt32(kVK_ANSI_Q) + case .w: return UInt32(kVK_ANSI_W) + case .e: return UInt32(kVK_ANSI_E) + case .r: return UInt32(kVK_ANSI_R) + case .y: return UInt32(kVK_ANSI_Y) + case .t: return UInt32(kVK_ANSI_T) + case .one: return UInt32(kVK_ANSI_1) + case .two: return UInt32(kVK_ANSI_2) + case .three: return UInt32(kVK_ANSI_3) + case .four: return UInt32(kVK_ANSI_4) + case .six: return UInt32(kVK_ANSI_6) + case .five: return UInt32(kVK_ANSI_5) + case .equal: return UInt32(kVK_ANSI_Equal) + case .nine: return UInt32(kVK_ANSI_9) + case .seven: return UInt32(kVK_ANSI_7) + case .minus: return UInt32(kVK_ANSI_Minus) + case .eight: return UInt32(kVK_ANSI_8) + case .zero: return UInt32(kVK_ANSI_0) + case .rightBracket: return UInt32(kVK_ANSI_RightBracket) + case .o: return UInt32(kVK_ANSI_O) + case .u: return UInt32(kVK_ANSI_U) + case .leftBracket: return UInt32(kVK_ANSI_LeftBracket) + case .i: return UInt32(kVK_ANSI_I) + case .p: return UInt32(kVK_ANSI_P) + case .l: return UInt32(kVK_ANSI_L) + case .j: return UInt32(kVK_ANSI_J) + case .quote: return UInt32(kVK_ANSI_Quote) + case .k: return UInt32(kVK_ANSI_K) + case .semicolon: return UInt32(kVK_ANSI_Semicolon) + case .backslash: return UInt32(kVK_ANSI_Backslash) + case .comma: return UInt32(kVK_ANSI_Comma) + case .slash: return UInt32(kVK_ANSI_Slash) + case .n: return UInt32(kVK_ANSI_N) + case .m: return UInt32(kVK_ANSI_M) + case .period: return UInt32(kVK_ANSI_Period) + case .grave: return UInt32(kVK_ANSI_Grave) + case .keypadDecimal: return UInt32(kVK_ANSI_KeypadDecimal) + case .keypadMultiply: return UInt32(kVK_ANSI_KeypadMultiply) + case .keypadPlus: return UInt32(kVK_ANSI_KeypadPlus) + case .keypadClear: return UInt32(kVK_ANSI_KeypadClear) + case .keypadDivide: return UInt32(kVK_ANSI_KeypadDivide) + case .keypadEnter: return UInt32(kVK_ANSI_KeypadEnter) + case .keypadMinus: return UInt32(kVK_ANSI_KeypadMinus) + case .keypadEquals: return UInt32(kVK_ANSI_KeypadEquals) + case .keypad0: return UInt32(kVK_ANSI_Keypad0) + case .keypad1: return UInt32(kVK_ANSI_Keypad1) + case .keypad2: return UInt32(kVK_ANSI_Keypad2) + case .keypad3: return UInt32(kVK_ANSI_Keypad3) + case .keypad4: return UInt32(kVK_ANSI_Keypad4) + case .keypad5: return UInt32(kVK_ANSI_Keypad5) + case .keypad6: return UInt32(kVK_ANSI_Keypad6) + case .keypad7: return UInt32(kVK_ANSI_Keypad7) + case .keypad8: return UInt32(kVK_ANSI_Keypad8) + case .keypad9: return UInt32(kVK_ANSI_Keypad9) + case .`return`: return UInt32(kVK_Return) + case .tab: return UInt32(kVK_Tab) + case .space: return UInt32(kVK_Space) + case .delete: return UInt32(kVK_Delete) + case .escape: return UInt32(kVK_Escape) + case .command: return UInt32(kVK_Command) + case .shift: return UInt32(kVK_Shift) + case .capsLock: return UInt32(kVK_CapsLock) + case .option: return UInt32(kVK_Option) + case .control: return UInt32(kVK_Control) + case .rightCommand: return UInt32(kVK_RightCommand) + case .rightShift: return UInt32(kVK_RightShift) + case .rightOption: return UInt32(kVK_RightOption) + case .rightControl: return UInt32(kVK_RightControl) + case .function: return UInt32(kVK_Function) + case .f17: return UInt32(kVK_F17) + case .volumeUp: return UInt32(kVK_VolumeUp) + case .volumeDown: return UInt32(kVK_VolumeDown) + case .mute: return UInt32(kVK_Mute) + case .f18: return UInt32(kVK_F18) + case .f19: return UInt32(kVK_F19) + case .f20: return UInt32(kVK_F20) + case .f5: return UInt32(kVK_F5) + case .f6: return UInt32(kVK_F6) + case .f7: return UInt32(kVK_F7) + case .f3: return UInt32(kVK_F3) + case .f8: return UInt32(kVK_F8) + case .f9: return UInt32(kVK_F9) + case .f11: return UInt32(kVK_F11) + case .f13: return UInt32(kVK_F13) + case .f16: return UInt32(kVK_F16) + case .f14: return UInt32(kVK_F14) + case .f10: return UInt32(kVK_F10) + case .f12: return UInt32(kVK_F12) + case .f15: return UInt32(kVK_F15) + case .help: return UInt32(kVK_Help) + case .home: return UInt32(kVK_Home) + case .pageUp: return UInt32(kVK_PageUp) + case .forwardDelete: return UInt32(kVK_ForwardDelete) + case .f4: return UInt32(kVK_F4) + case .end: return UInt32(kVK_End) + case .f2: return UInt32(kVK_F2) + case .pageDown: return UInt32(kVK_PageDown) + case .f1: return UInt32(kVK_F1) + case .leftArrow: return UInt32(kVK_LeftArrow) + case .rightArrow: return UInt32(kVK_RightArrow) + case .downArrow: return UInt32(kVK_DownArrow) + case .upArrow: return UInt32(kVK_UpArrow) + } + } +} diff --git a/Pods/HotKey/Sources/HotKey/KeyCombo.swift b/Pods/HotKey/Sources/HotKey/KeyCombo.swift new file mode 100644 index 0000000..292f3f6 --- /dev/null +++ b/Pods/HotKey/Sources/HotKey/KeyCombo.swift @@ -0,0 +1,88 @@ +// +// CarbonKeyCombo.swift +// HotKey +// +// Created by Sam Soffes on 7/21/17. +// Copyright © 2017 Sam Soffes. All rights reserved. +// + +import AppKit + +public struct KeyCombo { + + // MARK: - Properties + + public var carbonKeyCode: UInt32 + public var carbonModifiers: UInt32 + + public var key: Key? { + get { + return Key(carbonKeyCode: carbonKeyCode) + } + + set { + carbonKeyCode = newValue?.carbonKeyCode ?? 0 + } + } + + public var modifiers: NSEvent.ModifierFlags { + get { + return NSEvent.ModifierFlags(carbonFlags: carbonModifiers) + } + + set { + carbonModifiers = modifiers.carbonFlags + } + } + + public var isValid: Bool { + return carbonKeyCode >= 0 + } + + + // MARK: - Initializers + + public init(carbonKeyCode: UInt32, carbonModifiers: UInt32 = 0) { + self.carbonKeyCode = carbonKeyCode + self.carbonModifiers = carbonModifiers + } + + public init(key: Key, modifiers: NSEvent.ModifierFlags = []) { + self.carbonKeyCode = key.carbonKeyCode + self.carbonModifiers = modifiers.carbonFlags + } + + + // MARK: - Converting Keys + + public static func carbonKeyCodeToString(_ carbonKeyCode: UInt32) -> String? { + return nil + } +} + + +extension KeyCombo { + public var dictionary: [String: Any] { + return [ + "keyCode": Int(carbonKeyCode), + "modifiers": Int(carbonModifiers) + ] + } + + public init?(dictionary: [String: Any]) { + guard let keyCode = dictionary["keyCode"] as? Int, + let modifiers = dictionary["modifiers"] as? Int + else { + return nil + } + + self.init(carbonKeyCode: UInt32(keyCode), carbonModifiers: UInt32(modifiers)) + } +} + + +extension KeyCombo: Equatable { + public static func == (lhs: KeyCombo, rhs: KeyCombo) -> Bool { + return lhs.carbonKeyCode == rhs.carbonKeyCode && lhs.carbonModifiers == rhs.carbonModifiers + } +} diff --git a/Pods/HotKey/Sources/HotKey/NSEventModifierFlags+HotKey.swift b/Pods/HotKey/Sources/HotKey/NSEventModifierFlags+HotKey.swift new file mode 100644 index 0000000..42a569e --- /dev/null +++ b/Pods/HotKey/Sources/HotKey/NSEventModifierFlags+HotKey.swift @@ -0,0 +1,54 @@ +// +// NSEventModifierFlags+HotKey.swift +// HotKey +// +// Created by Sam Soffes on 7/21/17. +// Copyright © 2017 Sam Soffes. All rights reserved. +// + +import AppKit +import Carbon + +extension NSEvent.ModifierFlags { + public var carbonFlags: UInt32 { + var carbonFlags: UInt32 = 0 + + if contains(.command) { + carbonFlags |= UInt32(cmdKey) + } + + if contains(.option) { + carbonFlags |= UInt32(optionKey) + } + + if contains(.control) { + carbonFlags |= UInt32(controlKey) + } + + if contains(.shift) { + carbonFlags |= UInt32(shiftKey) + } + + return carbonFlags + } + + public init(carbonFlags: UInt32) { + self.init() + + if carbonFlags & UInt32(cmdKey) == UInt32(cmdKey) { + insert(.command) + } + + if carbonFlags & UInt32(optionKey) == UInt32(optionKey) { + insert(.option) + } + + if carbonFlags & UInt32(controlKey) == UInt32(controlKey) { + insert(.control) + } + + if carbonFlags & UInt32(shiftKey) == UInt32(shiftKey) { + insert(.shift) + } + } +} diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock new file mode 100644 index 0000000..3977546 --- /dev/null +++ b/Pods/Manifest.lock @@ -0,0 +1,12 @@ +PODS: + - HotKey (0.1.0) + +DEPENDENCIES: + - HotKey + +SPEC CHECKSUMS: + HotKey: aa2b99ed0a4d7026e1bc15b6ae206a70e9a1851f + +PODFILE CHECKSUM: 03eafbdb6ae979846d7ebbb83217ca952bed7e87 + +COCOAPODS: 1.4.0 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj new file mode 100644 index 0000000..98ba025 --- /dev/null +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -0,0 +1,594 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 376600012D78BBD1A6A1350E2C0E1763 /* Key.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D932BA03EC0EEBB5D784A0A1A430656 /* Key.swift */; }; + 401C3D04D259233BEAB50F753F44EF54 /* HotKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26934BD6BC0B65D4E808B922A0F1E543 /* HotKey.swift */; }; + 4F05668B9EB744A2EA80944CD56D6FD9 /* KeyCombo.swift in Sources */ = {isa = PBXBuildFile; fileRef = C07CFD521DA671921D73AA482491B21C /* KeyCombo.swift */; }; + 5FDD26A50E274A822DB8D0E12F973D3E /* HotKey-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 59C01D25522738A76DEB854B8415D474 /* HotKey-dummy.m */; }; + 6AD1AC7DB6C44C384E847439A3F44223 /* Pods-AnyIpsum-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CD363B409028A590AB03FEC2EBB418F2 /* Pods-AnyIpsum-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8BA30AF5ACB62F30CE5B6E96AE7DF212 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE827E26782B0FDC57B2904F15F6E3EA /* Cocoa.framework */; }; + 8FAD82218C6A3B9DD0E246693C7D55C3 /* Appkit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6AB35A0CC7D0EC7FAC38086EA585D1E /* Appkit.framework */; }; + B401867272D84298ED1281CD038DACD2 /* HotKeysController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78CAC9DABE04E0493AC7084B80B4FFEF /* HotKeysController.swift */; }; + E0E5B9A249DABC6DC93A498FC5FB12B3 /* NSEventModifierFlags+HotKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFDBFC39A102F89D13F7659FEB469FDD /* NSEventModifierFlags+HotKey.swift */; }; + E11EAF75BDED5FF7B1C1C28C188E235D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE827E26782B0FDC57B2904F15F6E3EA /* Cocoa.framework */; }; + E7E905CEE708C219A30A8B214D467482 /* HotKey-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F025444AAF44C9486E85600CAA5DAA37 /* HotKey-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E82EB02A66412AAF35F05B5AC49458CE /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ACA4FF7011117549B1002928323C971C /* Carbon.framework */; }; + F1B69831C9DF677399EDD10944EAC072 /* Pods-AnyIpsum-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C93564F3B4AB592C6334DCF616FF78E /* Pods-AnyIpsum-dummy.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + BBA2D4C57A542271C435EDF2F36A7B46 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; + proxyType = 1; + remoteGlobalIDString = CD7CA7613D1AE9B77775DCDC34F87472; + remoteInfo = HotKey; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 04BB8241300E0BFCD61BBB35A53B64E9 /* Pods_AnyIpsum.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_AnyIpsum.framework; path = "Pods-AnyIpsum.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 18F35CF272BC05B2F762974DDB2D9B8E /* HotKey.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = HotKey.modulemap; sourceTree = ""; }; + 1E560F82880F46182B16124759574C3C /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 26934BD6BC0B65D4E808B922A0F1E543 /* HotKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HotKey.swift; path = Sources/HotKey/HotKey.swift; sourceTree = ""; }; + 2D932BA03EC0EEBB5D784A0A1A430656 /* Key.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Key.swift; path = Sources/HotKey/Key.swift; sourceTree = ""; }; + 34B7502DC6D9236BE79022EE9EFD0789 /* HotKey.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HotKey.xcconfig; sourceTree = ""; }; + 3CB9C994131CEEAB2926E60C12D8B6AD /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 4E68F603C804C5BD7BAD64A4C8E9F6D6 /* Pods-AnyIpsum.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AnyIpsum.debug.xcconfig"; sourceTree = ""; }; + 59C01D25522738A76DEB854B8415D474 /* HotKey-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HotKey-dummy.m"; sourceTree = ""; }; + 78CAC9DABE04E0493AC7084B80B4FFEF /* HotKeysController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HotKeysController.swift; path = Sources/HotKey/HotKeysController.swift; sourceTree = ""; }; + 8C93564F3B4AB592C6334DCF616FF78E /* Pods-AnyIpsum-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-AnyIpsum-dummy.m"; sourceTree = ""; }; + 8F783D774153DDB3A8D16EE160AA5B70 /* Pods-AnyIpsum-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-AnyIpsum-frameworks.sh"; sourceTree = ""; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 94C905225A3C37CADFF3F0FDEAD07A3B /* Pods-AnyIpsum.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-AnyIpsum.release.xcconfig"; sourceTree = ""; }; + 9ABA409C1720269745434C9A45E9759B /* Pods-AnyIpsum-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-AnyIpsum-acknowledgements.markdown"; sourceTree = ""; }; + A6AB35A0CC7D0EC7FAC38086EA585D1E /* Appkit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Appkit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/Appkit.framework; sourceTree = DEVELOPER_DIR; }; + ABF74A7E6F917D1AEA551BDA094E7531 /* HotKey-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HotKey-prefix.pch"; sourceTree = ""; }; + ACA4FF7011117549B1002928323C971C /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/Carbon.framework; sourceTree = DEVELOPER_DIR; }; + AFDBFC39A102F89D13F7659FEB469FDD /* NSEventModifierFlags+HotKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSEventModifierFlags+HotKey.swift"; path = "Sources/HotKey/NSEventModifierFlags+HotKey.swift"; sourceTree = ""; }; + C07CFD521DA671921D73AA482491B21C /* KeyCombo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = KeyCombo.swift; path = Sources/HotKey/KeyCombo.swift; sourceTree = ""; }; + CAE171F1FF61C1F0928873213A2403CF /* Pods-AnyIpsum.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-AnyIpsum.modulemap"; sourceTree = ""; }; + CD363B409028A590AB03FEC2EBB418F2 /* Pods-AnyIpsum-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-AnyIpsum-umbrella.h"; sourceTree = ""; }; + CE827E26782B0FDC57B2904F15F6E3EA /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/Cocoa.framework; sourceTree = DEVELOPER_DIR; }; + DE41743E693BFE9C28DC4AFAADDCF867 /* Pods-AnyIpsum-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-AnyIpsum-acknowledgements.plist"; sourceTree = ""; }; + E8C548F769E10E40028D64BF91447EC1 /* HotKey.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = HotKey.framework; path = HotKey.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F025444AAF44C9486E85600CAA5DAA37 /* HotKey-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HotKey-umbrella.h"; sourceTree = ""; }; + FDE5DFBED9EB591FA72A8D589853E598 /* Pods-AnyIpsum-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-AnyIpsum-resources.sh"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 05E6B8CBBA62A425D93EAE9CC9C79F2C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8FAD82218C6A3B9DD0E246693C7D55C3 /* Appkit.framework in Frameworks */, + E82EB02A66412AAF35F05B5AC49458CE /* Carbon.framework in Frameworks */, + 8BA30AF5ACB62F30CE5B6E96AE7DF212 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8A6C98446A5585EBF7732D548C1F109D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E11EAF75BDED5FF7B1C1C28C188E235D /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0120D7C23D2C6B0A0B2AEBE2F0DDB2FB /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + AFDF0EF62F167BC4D03F095E0B85F097 /* Pods-AnyIpsum */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; + 0E116347C58A0922E9CADD61E595BF01 /* HotKey */ = { + isa = PBXGroup; + children = ( + 26934BD6BC0B65D4E808B922A0F1E543 /* HotKey.swift */, + 78CAC9DABE04E0493AC7084B80B4FFEF /* HotKeysController.swift */, + 2D932BA03EC0EEBB5D784A0A1A430656 /* Key.swift */, + C07CFD521DA671921D73AA482491B21C /* KeyCombo.swift */, + AFDBFC39A102F89D13F7659FEB469FDD /* NSEventModifierFlags+HotKey.swift */, + DA311EE4F975697BF127D86FDBFF5EA1 /* Support Files */, + ); + name = HotKey; + path = HotKey; + sourceTree = ""; + }; + 3C17F5F182EC0755FE08C264F461B950 /* Products */ = { + isa = PBXGroup; + children = ( + E8C548F769E10E40028D64BF91447EC1 /* HotKey.framework */, + 04BB8241300E0BFCD61BBB35A53B64E9 /* Pods_AnyIpsum.framework */, + ); + name = Products; + sourceTree = ""; + }; + 7DB346D0F39D3F0E887471402A8071AB = { + isa = PBXGroup; + children = ( + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, + 96D996393384F21972E2DD81788EE22C /* Frameworks */, + 95F84480F812638CE6FA53D39E7937B9 /* Pods */, + 3C17F5F182EC0755FE08C264F461B950 /* Products */, + 0120D7C23D2C6B0A0B2AEBE2F0DDB2FB /* Targets Support Files */, + ); + sourceTree = ""; + }; + 95F84480F812638CE6FA53D39E7937B9 /* Pods */ = { + isa = PBXGroup; + children = ( + 0E116347C58A0922E9CADD61E595BF01 /* HotKey */, + ); + name = Pods; + sourceTree = ""; + }; + 96D996393384F21972E2DD81788EE22C /* Frameworks */ = { + isa = PBXGroup; + children = ( + B26A861583AAEC07701CA5E836B21759 /* OS X */, + ); + name = Frameworks; + sourceTree = ""; + }; + AFDF0EF62F167BC4D03F095E0B85F097 /* Pods-AnyIpsum */ = { + isa = PBXGroup; + children = ( + 1E560F82880F46182B16124759574C3C /* Info.plist */, + CAE171F1FF61C1F0928873213A2403CF /* Pods-AnyIpsum.modulemap */, + 9ABA409C1720269745434C9A45E9759B /* Pods-AnyIpsum-acknowledgements.markdown */, + DE41743E693BFE9C28DC4AFAADDCF867 /* Pods-AnyIpsum-acknowledgements.plist */, + 8C93564F3B4AB592C6334DCF616FF78E /* Pods-AnyIpsum-dummy.m */, + 8F783D774153DDB3A8D16EE160AA5B70 /* Pods-AnyIpsum-frameworks.sh */, + FDE5DFBED9EB591FA72A8D589853E598 /* Pods-AnyIpsum-resources.sh */, + CD363B409028A590AB03FEC2EBB418F2 /* Pods-AnyIpsum-umbrella.h */, + 4E68F603C804C5BD7BAD64A4C8E9F6D6 /* Pods-AnyIpsum.debug.xcconfig */, + 94C905225A3C37CADFF3F0FDEAD07A3B /* Pods-AnyIpsum.release.xcconfig */, + ); + name = "Pods-AnyIpsum"; + path = "Target Support Files/Pods-AnyIpsum"; + sourceTree = ""; + }; + B26A861583AAEC07701CA5E836B21759 /* OS X */ = { + isa = PBXGroup; + children = ( + A6AB35A0CC7D0EC7FAC38086EA585D1E /* Appkit.framework */, + ACA4FF7011117549B1002928323C971C /* Carbon.framework */, + CE827E26782B0FDC57B2904F15F6E3EA /* Cocoa.framework */, + ); + name = "OS X"; + sourceTree = ""; + }; + DA311EE4F975697BF127D86FDBFF5EA1 /* Support Files */ = { + isa = PBXGroup; + children = ( + 18F35CF272BC05B2F762974DDB2D9B8E /* HotKey.modulemap */, + 34B7502DC6D9236BE79022EE9EFD0789 /* HotKey.xcconfig */, + 59C01D25522738A76DEB854B8415D474 /* HotKey-dummy.m */, + ABF74A7E6F917D1AEA551BDA094E7531 /* HotKey-prefix.pch */, + F025444AAF44C9486E85600CAA5DAA37 /* HotKey-umbrella.h */, + 3CB9C994131CEEAB2926E60C12D8B6AD /* Info.plist */, + ); + name = "Support Files"; + path = "../Target Support Files/HotKey"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 81EC88C1A40F0C72CB275A5FDCF08AAE /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 6AD1AC7DB6C44C384E847439A3F44223 /* Pods-AnyIpsum-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E1EC42C7C9D509EDDAEA9E9F3EB60EE0 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + E7E905CEE708C219A30A8B214D467482 /* HotKey-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 7D4606920F5D1115ECD4E89D68194BEC /* Pods-AnyIpsum */ = { + isa = PBXNativeTarget; + buildConfigurationList = F79DCBF5459504AB6C33987656C5D79A /* Build configuration list for PBXNativeTarget "Pods-AnyIpsum" */; + buildPhases = ( + 5FE98B0EEEED2D551AD44145D205FACE /* Sources */, + 8A6C98446A5585EBF7732D548C1F109D /* Frameworks */, + 81EC88C1A40F0C72CB275A5FDCF08AAE /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 4CAEAFC65BCE783B05B2D91639944F2A /* PBXTargetDependency */, + ); + name = "Pods-AnyIpsum"; + productName = "Pods-AnyIpsum"; + productReference = 04BB8241300E0BFCD61BBB35A53B64E9 /* Pods_AnyIpsum.framework */; + productType = "com.apple.product-type.framework"; + }; + CD7CA7613D1AE9B77775DCDC34F87472 /* HotKey */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2FECC63E52DE59DDEE1BA272EF4E9A90 /* Build configuration list for PBXNativeTarget "HotKey" */; + buildPhases = ( + EB958C78E9B03E0B2473CF46708413BF /* Sources */, + 05E6B8CBBA62A425D93EAE9CC9C79F2C /* Frameworks */, + E1EC42C7C9D509EDDAEA9E9F3EB60EE0 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = HotKey; + productName = HotKey; + productReference = E8C548F769E10E40028D64BF91447EC1 /* HotKey.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0930; + LastUpgradeCheck = 0930; + }; + buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 7DB346D0F39D3F0E887471402A8071AB; + productRefGroup = 3C17F5F182EC0755FE08C264F461B950 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + CD7CA7613D1AE9B77775DCDC34F87472 /* HotKey */, + 7D4606920F5D1115ECD4E89D68194BEC /* Pods-AnyIpsum */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 5FE98B0EEEED2D551AD44145D205FACE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F1B69831C9DF677399EDD10944EAC072 /* Pods-AnyIpsum-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB958C78E9B03E0B2473CF46708413BF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5FDD26A50E274A822DB8D0E12F973D3E /* HotKey-dummy.m in Sources */, + 401C3D04D259233BEAB50F753F44EF54 /* HotKey.swift in Sources */, + B401867272D84298ED1281CD038DACD2 /* HotKeysController.swift in Sources */, + 376600012D78BBD1A6A1350E2C0E1763 /* Key.swift in Sources */, + 4F05668B9EB744A2EA80944CD56D6FD9 /* KeyCombo.swift in Sources */, + E0E5B9A249DABC6DC93A498FC5FB12B3 /* NSEventModifierFlags+HotKey.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 4CAEAFC65BCE783B05B2D91639944F2A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = HotKey; + target = CD7CA7613D1AE9B77775DCDC34F87472 /* HotKey */; + targetProxy = BBA2D4C57A542271C435EDF2F36A7B46 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 3D2DE059DF581A93F74407D61ED200C9 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4E68F603C804C5BD7BAD64A4C8E9F6D6 /* Pods-AnyIpsum.debug.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_VERSION = A; + INFOPLIST_FILE = "Target Support Files/Pods-AnyIpsum/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MODULEMAP_FILE = "Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_AnyIpsum; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 6D5EEFF67E59341DBDD85F57688F6BDC /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 94C905225A3C37CADFF3F0FDEAD07A3B /* Pods-AnyIpsum.release.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_VERSION = A; + INFOPLIST_FILE = "Target Support Files/Pods-AnyIpsum/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACH_O_TYPE = staticlib; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MODULEMAP_FILE = "Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_AnyIpsum; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 7F952B3AF173CE07359150BCC3D29AA2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Release; + }; + 9B6B2012BF9082D5D018438743E11BDD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGNING_REQUIRED = NO; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = NO_SIGNING/; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + D45E0AA8A4C56D9C6F995D5A47BB7C48 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 34B7502DC6D9236BE79022EE9EFD0789 /* HotKey.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_VERSION = A; + GCC_PREFIX_HEADER = "Target Support Files/HotKey/HotKey-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/HotKey/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.9; + MODULEMAP_FILE = "Target Support Files/HotKey/HotKey.modulemap"; + PRODUCT_NAME = HotKey; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.0; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + D680304EAFD718DF5DCFF75F1BEAB028 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 34B7502DC6D9236BE79022EE9EFD0789 /* HotKey.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_VERSION = A; + GCC_PREFIX_HEADER = "Target Support Files/HotKey/HotKey-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/HotKey/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.9; + MODULEMAP_FILE = "Target Support Files/HotKey/HotKey.modulemap"; + PRODUCT_NAME = HotKey; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 4.0; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9B6B2012BF9082D5D018438743E11BDD /* Debug */, + 7F952B3AF173CE07359150BCC3D29AA2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2FECC63E52DE59DDEE1BA272EF4E9A90 /* Build configuration list for PBXNativeTarget "HotKey" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D45E0AA8A4C56D9C6F995D5A47BB7C48 /* Debug */, + D680304EAFD718DF5DCFF75F1BEAB028 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F79DCBF5459504AB6C33987656C5D79A /* Build configuration list for PBXNativeTarget "Pods-AnyIpsum" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3D2DE059DF581A93F74407D61ED200C9 /* Debug */, + 6D5EEFF67E59341DBDD85F57688F6BDC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; +} diff --git a/Pods/Target Support Files/HotKey/HotKey-dummy.m b/Pods/Target Support Files/HotKey/HotKey-dummy.m new file mode 100644 index 0000000..9055ac5 --- /dev/null +++ b/Pods/Target Support Files/HotKey/HotKey-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_HotKey : NSObject +@end +@implementation PodsDummy_HotKey +@end diff --git a/Pods/Target Support Files/HotKey/HotKey-prefix.pch b/Pods/Target Support Files/HotKey/HotKey-prefix.pch new file mode 100644 index 0000000..082f8af --- /dev/null +++ b/Pods/Target Support Files/HotKey/HotKey-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Pods/Target Support Files/HotKey/HotKey-umbrella.h b/Pods/Target Support Files/HotKey/HotKey-umbrella.h new file mode 100644 index 0000000..4da5bea --- /dev/null +++ b/Pods/Target Support Files/HotKey/HotKey-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double HotKeyVersionNumber; +FOUNDATION_EXPORT const unsigned char HotKeyVersionString[]; + diff --git a/Pods/Target Support Files/HotKey/HotKey.modulemap b/Pods/Target Support Files/HotKey/HotKey.modulemap new file mode 100644 index 0000000..01aa4d5 --- /dev/null +++ b/Pods/Target Support Files/HotKey/HotKey.modulemap @@ -0,0 +1,6 @@ +framework module HotKey { + umbrella header "HotKey-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/HotKey/HotKey.xcconfig b/Pods/Target Support Files/HotKey/HotKey.xcconfig new file mode 100644 index 0000000..ad928fd --- /dev/null +++ b/Pods/Target Support Files/HotKey/HotKey.xcconfig @@ -0,0 +1,12 @@ +CODE_SIGN_IDENTITY = +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/HotKey +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Public" +OTHER_LDFLAGS = -framework "Appkit" -framework "Carbon" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/HotKey +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Pods/Target Support Files/HotKey/Info.plist b/Pods/Target Support Files/HotKey/Info.plist new file mode 100644 index 0000000..161a9d3 --- /dev/null +++ b/Pods/Target Support Files/HotKey/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.1.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/Pods-AnyIpsum/Info.plist b/Pods/Target Support Files/Pods-AnyIpsum/Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Pods/Target Support Files/Pods-AnyIpsum/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-acknowledgements.markdown b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-acknowledgements.markdown new file mode 100644 index 0000000..80ff64a --- /dev/null +++ b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-acknowledgements.markdown @@ -0,0 +1,27 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## HotKey + +Copyright (c) 2017 Sam Soffes, http://soff.es + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-acknowledgements.plist b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-acknowledgements.plist new file mode 100644 index 0000000..11d0535 --- /dev/null +++ b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-acknowledgements.plist @@ -0,0 +1,59 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2017 Sam Soffes, http://soff.es + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + License + MIT + Title + HotKey + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-dummy.m b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-dummy.m new file mode 100644 index 0000000..5d41f51 --- /dev/null +++ b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_AnyIpsum : NSObject +@end +@implementation PodsDummy_Pods_AnyIpsum +@end diff --git a/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-frameworks.sh b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-frameworks.sh new file mode 100755 index 0000000..78399a2 --- /dev/null +++ b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-frameworks.sh @@ -0,0 +1,144 @@ +#!/bin/sh +set -e + +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" + +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +# Copies and strips a vendored framework +install_framework() +{ + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then + local source="${BUILT_PRODUCTS_DIR}/$1" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + echo "Symlinked..." + source="$(readlink "${source}")" + fi + + # Use filter instead of exclude so missing patterns don't throw errors. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + + local basename + basename="$(basename -s .framework "$1")" + binary="${destination}/${basename}.framework/${basename}" + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # Resign the code if required by the build settings to avoid unstable apps + code_sign_if_enabled "${destination}/$(basename "$1")" + + # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + code_sign_if_enabled "${destination}/${lib}" + done + fi +} + +# Copies and strips a vendored dSYM +install_dsym() { + local source="$1" + if [ -r "$source" ]; then + # Copy the dSYM into a the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi + fi +} + +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identitiy + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" + fi +} + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi + stripped="" + for arch in $binary_archs; do + if ! [[ "${ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" || exit 1 + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi + STRIP_BINARY_RETVAL=1 +} + + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/HotKey/HotKey.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/HotKey/HotKey.framework" +fi +if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + wait +fi diff --git a/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-resources.sh b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-resources.sh new file mode 100755 index 0000000..a7df440 --- /dev/null +++ b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-resources.sh @@ -0,0 +1,106 @@ +#!/bin/sh +set -e + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +XCASSET_FILES=() + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +case "${TARGETED_DEVICE_FAMILY}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + 3) + TARGET_DEVICE_ARGS="--target-device tv" + ;; + 4) + TARGET_DEVICE_ARGS="--target-device watch" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; +esac + +install_resource() +{ + if [[ "$1" = /* ]] ; then + RESOURCE_PATH="$1" + else + RESOURCE_PATH="${PODS_ROOT}/$1" + fi + if [[ ! -e "$RESOURCE_PATH" ]] ; then + cat << EOM +error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. +EOM + exit 1 + fi + case $RESOURCE_PATH in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true + ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} + ;; + *.framework) + echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true + xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true + xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + *) + echo "$RESOURCE_PATH" || true + echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" + ;; + esac +} + +mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then + mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +then + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "${PODS_ROOT}*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi diff --git a/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-umbrella.h b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-umbrella.h new file mode 100644 index 0000000..9d4c43b --- /dev/null +++ b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_AnyIpsumVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_AnyIpsumVersionString[]; + diff --git a/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum.debug.xcconfig b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum.debug.xcconfig new file mode 100644 index 0000000..8cf8972 --- /dev/null +++ b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum.debug.xcconfig @@ -0,0 +1,12 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +CODE_SIGN_IDENTITY = +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/HotKey" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/HotKey/HotKey.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "HotKey" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum.modulemap b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum.modulemap new file mode 100644 index 0000000..5603370 --- /dev/null +++ b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum.modulemap @@ -0,0 +1,6 @@ +framework module Pods_AnyIpsum { + umbrella header "Pods-AnyIpsum-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum.release.xcconfig b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum.release.xcconfig new file mode 100644 index 0000000..8cf8972 --- /dev/null +++ b/Pods/Target Support Files/Pods-AnyIpsum/Pods-AnyIpsum.release.xcconfig @@ -0,0 +1,12 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +CODE_SIGN_IDENTITY = +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/HotKey" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/../Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/HotKey/HotKey.framework/Headers" +OTHER_LDFLAGS = $(inherited) -framework "HotKey" +OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods diff --git a/README.md b/README.md index aa7a76d..a311f91 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ brew cask install anyipsum ## Usage -Click the menu bar icon and pick an ipsum variation. A paragraph will be copied to the pasteboard. +Click the menu bar icon, or press CTRLCMDA, and pick an ipsum variation. A paragraph will be copied to the pasteboard. Example output: