├── IMKitSample
├── main.tiff
├── Assets.xcassets
│ ├── Contents.json
│ ├── AccentColor.colorset
│ │ └── Contents.json
│ └── AppIcon.appiconset
│ │ └── Contents.json
├── Preview Content
│ └── Preview Assets.xcassets
│ │ └── Contents.json
├── IMKitSampleApp.swift
├── IMKitSample.entitlements
├── IMKitSampleInputController.swift
├── Info.plist
└── AppDelegate.swift
├── .gitignore
├── IMKitSampleUITests
├── IMKitSampleUITestsLaunchTests.swift
└── IMKitSampleUITests.swift
├── IMKitSampleTests
└── IMKitSampleTests.swift
├── LICENSE
├── README.md
└── IMKitSample.xcodeproj
└── project.pbxproj
/IMKitSample/main.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ensan-hcl/macOS_IMKitSample_2021/HEAD/IMKitSample/main.tiff
--------------------------------------------------------------------------------
/IMKitSample/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/IMKitSample/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/IMKitSample/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/IMKitSample/IMKitSampleApp.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IMKitSampleApp.swift
3 | // IMKitSample
4 | //
5 | // Created by ensan on 2021/09/07.
6 | //
7 |
8 | import SwiftUI
9 |
10 | struct IMKitSampleApp: App {
11 | @NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
12 | var body: some Scene {
13 | WindowGroup {
14 | ContentView()
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/IMKitSample/IMKitSample.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.temporary-exception.mach-register.global-name
8 | $(PRODUCT_BUNDLE_IDENTIFIER)_Connection
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | *.swiftmodule
3 | *.app
4 | xcuserdata/
5 | *.xccheckout
6 | *.xcscmblueprint
7 | build/
8 | DerivedData/
9 | *.moved-aside
10 | *.pbxuser
11 | *.mode1v3
12 | *.mode2v3
13 | *.perspectivev3
14 | !default.pbxuser
15 | !default.mode1v3
16 | !default.mode2v3
17 | !default.perspectivev3
18 | *.xcodeproj/*
19 | !*.xcodeproj/project.pbxproj
20 | !*.xcodeproj/xcshareddata/
21 | **/xcshareddata/WorkspaceSettings.xcsettings
22 | !*.xcworkspace/contents.xcworkspacedata
23 |
--------------------------------------------------------------------------------
/IMKitSample/IMKitSampleInputController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IMKitSampleInputController.swift
3 | // IMKitSampleInputController
4 | //
5 | // Created by ensan on 2021/09/07.
6 | //
7 |
8 | import Cocoa
9 | import InputMethodKit
10 |
11 | @objc(IMKitSampleInputController)
12 | class IMKitSampleInputController: IMKInputController {
13 | override func inputText(_ string: String!, client sender: Any!) -> Bool {
14 | NSLog(string)
15 | // get client to insert
16 | guard let client = sender as? IMKTextInput else {
17 | return false
18 | }
19 | client.insertText(string+string, replacementRange: NSRange(location: NSNotFound, length: NSNotFound))
20 | return true
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/IMKitSample/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NSPrincipalClass
6 | $(PRODUCT_MODULE_NAME).NSManualApplication
7 | InputMethodConnectionName
8 | $(PRODUCT_BUNDLE_IDENTIFIER)_Connection
9 | InputMethodServerControllerClass
10 | $(PRODUCT_MODULE_NAME).IMKitSampleInputController
11 | LSBackgroundOnly
12 |
13 | tsInputMethodCharacterRepertoireKey
14 |
15 | Latn
16 |
17 | tsInputMethodIconFileKey
18 | main.tiff
19 |
20 |
21 |
--------------------------------------------------------------------------------
/IMKitSampleUITests/IMKitSampleUITestsLaunchTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IMKitSampleUITestsLaunchTests.swift
3 | // IMKitSampleUITests
4 | //
5 | // Created by β α on 2021/09/07.
6 | //
7 |
8 | import XCTest
9 |
10 | class IMKitSampleUITestsLaunchTests: XCTestCase {
11 |
12 | override class var runsForEachTargetApplicationUIConfiguration: Bool {
13 | true
14 | }
15 |
16 | override func setUpWithError() throws {
17 | continueAfterFailure = false
18 | }
19 |
20 | func testLaunch() throws {
21 | let app = XCUIApplication()
22 | app.launch()
23 |
24 | // Insert steps here to perform after app launch but before taking a screenshot,
25 | // such as logging into a test account or navigating somewhere in the app
26 |
27 | let attachment = XCTAttachment(screenshot: app.screenshot())
28 | attachment.name = "Launch Screen"
29 | attachment.lifetime = .keepAlways
30 | add(attachment)
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/IMKitSampleTests/IMKitSampleTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IMKitSampleTests.swift
3 | // IMKitSampleTests
4 | //
5 | // Created by β α on 2021/09/07.
6 | //
7 |
8 | import XCTest
9 | @testable import IMKitSample
10 |
11 | class IMKitSampleTests: XCTestCase {
12 |
13 | override func setUpWithError() throws {
14 | // Put setup code here. This method is called before the invocation of each test method in the class.
15 | }
16 |
17 | override func tearDownWithError() throws {
18 | // Put teardown code here. This method is called after the invocation of each test method in the class.
19 | }
20 |
21 | func testExample() throws {
22 | // This is an example of a functional test case.
23 | // Use XCTAssert and related functions to verify your tests produce the correct results.
24 | }
25 |
26 | func testPerformanceExample() throws {
27 | // This is an example of a performance test case.
28 | self.measure {
29 | // Put the code you want to measure the time of here.
30 | }
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 ensan
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/IMKitSample/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "mac",
5 | "scale" : "1x",
6 | "size" : "16x16"
7 | },
8 | {
9 | "idiom" : "mac",
10 | "scale" : "2x",
11 | "size" : "16x16"
12 | },
13 | {
14 | "idiom" : "mac",
15 | "scale" : "1x",
16 | "size" : "32x32"
17 | },
18 | {
19 | "idiom" : "mac",
20 | "scale" : "2x",
21 | "size" : "32x32"
22 | },
23 | {
24 | "idiom" : "mac",
25 | "scale" : "1x",
26 | "size" : "128x128"
27 | },
28 | {
29 | "idiom" : "mac",
30 | "scale" : "2x",
31 | "size" : "128x128"
32 | },
33 | {
34 | "idiom" : "mac",
35 | "scale" : "1x",
36 | "size" : "256x256"
37 | },
38 | {
39 | "idiom" : "mac",
40 | "scale" : "2x",
41 | "size" : "256x256"
42 | },
43 | {
44 | "idiom" : "mac",
45 | "scale" : "1x",
46 | "size" : "512x512"
47 | },
48 | {
49 | "idiom" : "mac",
50 | "scale" : "2x",
51 | "size" : "512x512"
52 | }
53 | ],
54 | "info" : {
55 | "author" : "xcode",
56 | "version" : 1
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/IMKitSample/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // AppDelegate
4 | //
5 | // Created by ensan on 2021/09/06.
6 | //
7 |
8 | import Cocoa
9 | import InputMethodKit
10 |
11 | // Necessary to launch this app
12 | class NSManualApplication: NSApplication {
13 | private let appDelegate = AppDelegate()
14 |
15 | override init() {
16 | super.init()
17 | self.delegate = appDelegate
18 | }
19 |
20 | required init?(coder: NSCoder) {
21 | // No need for implementation
22 | fatalError("init(coder:) has not been implemented")
23 | }
24 | }
25 |
26 | @main
27 | class AppDelegate: NSObject, NSApplicationDelegate {
28 | var server = IMKServer()
29 | var candidatesWindow = IMKCandidates()
30 |
31 | func applicationDidFinishLaunching(_ notification: Notification) {
32 | // Insert code here to initialize your application
33 | server = IMKServer(name: Bundle.main.infoDictionary?["InputMethodConnectionName"] as? String, bundleIdentifier: Bundle.main.bundleIdentifier)
34 | candidatesWindow = IMKCandidates(server: server, panelType: kIMKSingleRowSteppingCandidatePanel, styleType: kIMKMain)
35 | NSLog("tried connection")
36 | }
37 |
38 | func applicationWillTerminate(_ notification: Notification) {
39 | // Insert code here to tear down your application
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/IMKitSampleUITests/IMKitSampleUITests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // IMKitSampleUITests.swift
3 | // IMKitSampleUITests
4 | //
5 | // Created by β α on 2021/09/07.
6 | //
7 |
8 | import XCTest
9 |
10 | class IMKitSampleUITests: XCTestCase {
11 |
12 | override func setUpWithError() throws {
13 | // Put setup code here. This method is called before the invocation of each test method in the class.
14 |
15 | // In UI tests it is usually best to stop immediately when a failure occurs.
16 | continueAfterFailure = false
17 |
18 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
19 | }
20 |
21 | override func tearDownWithError() throws {
22 | // Put teardown code here. This method is called after the invocation of each test method in the class.
23 | }
24 |
25 | func testExample() throws {
26 | // UI tests must launch the application that they test.
27 | let app = XCUIApplication()
28 | app.launch()
29 |
30 | // Use recording to get started writing UI tests.
31 | // Use XCTAssert and related functions to verify your tests produce the correct results.
32 | }
33 |
34 | func testLaunchPerformance() throws {
35 | if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) {
36 | // This measures how long it takes to launch your application.
37 | measure(metrics: [XCTApplicationLaunchMetric()]) {
38 | XCUIApplication().launch()
39 | }
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # What is this?
2 |
3 | This is a sample implementation of the IMKit App with Swift/SwiftUI.
4 |
5 | For more practical example, see [Typut](https://github.com/ensan-hcl/Typut). This is created in 2024.
6 |
7 | ## Working Environment
8 |
9 | Checked in July 2022.
10 | * macOS 12.4
11 | * Swift 5.6
12 | * Xcode 13.4.1
13 |
14 | Checked in 2021.
15 | * macOS 11.5
16 | * Swift 5.5
17 | * Xcode 13 (beta)
18 |
19 | ## Usage
20 | To try this sample project, follow these steps:
21 |
22 | * Open this project in Xcode.
23 | * Run the project.
24 | * In the terminal, type `sudo chmod -R 777 /Library/Input\ Methods`.
25 | * Add 'IMKitSample' under **Settings** > **Keyboard** > **Input Sources** > **English**.
26 | * Choose IMKitSample as the input source and try it on a text field.
27 |
28 | ## Procedure to make project
29 | I used the following steps to prepare this sample project:
30 |
31 | * Create a new project with a bundle identifier that contains `.inputmethod.` in the string.
32 | * Run the project.
33 | * Remove `IMKitSampleApp.swift` and `ContentView.swift`.
34 |
35 | * Add Swift files `AppDelegate.swift` and `IMKitSampleInputController.swift`.
36 |
37 | ```swift
38 | // AppDelegate.swift
39 | import Cocoa
40 | import InputMethodKit
41 |
42 | // necessary to launch this app
43 | class NSManualApplication: NSApplication {
44 | private let appDelegate = AppDelegate()
45 |
46 | override init() {
47 | super.init()
48 | self.delegate = appDelegate
49 | }
50 |
51 | required init?(coder: NSCoder) {
52 | fatalError("init(coder:) has not been implemented")
53 | }
54 | }
55 |
56 | @main
57 | class AppDelegate: NSObject, NSApplicationDelegate {
58 | var server = IMKServer()
59 | var candidatesWindow = IMKCandidates()
60 |
61 | func applicationDidFinishLaunching(_ notification: Notification) {
62 | // Insert code here to initialize your application
63 | server = IMKServer(name: Bundle.main.infoDictionary?["InputMethodConnectionName"] as? String, bundleIdentifier: Bundle.main.bundleIdentifier)
64 | candidatesWindow = IMKCandidates(server: server, panelType: kIMKSingleRowSteppingCandidatePanel, styleType: kIMKMain)
65 | NSLog("tried connection")
66 | }
67 |
68 | func applicationWillTerminate(_ notification: Notification) {
69 | // Insert code here to tear down your application
70 | }
71 | }
72 | ```
73 |
74 | ```swift
75 | // IMKitSampleInputController.swift
76 | import Cocoa
77 | import InputMethodKit
78 |
79 | @objc(IMKitSampleInputController)
80 | class IMKitSampleInputController: IMKInputController {
81 | override func inputText(_ string: String!, client sender: Any!) -> Bool {
82 | NSLog(string)
83 | // get client to insert
84 | guard let client = sender as? IMKTextInput else {
85 | return false
86 | }
87 | client.insertText(string+string, replacementRange: NSRange(location: NSNotFound, length: NSNotFound))
88 | return true
89 | }
90 | }
91 | ```
92 | * Add icon file `main.tiff`.
93 |
94 | * Modify Info.plist
95 |
96 | ```
97 | key: NSPrincipalClass type: _ value: $(PRODUCT_MODULE_NAME).NSManualApplication
98 | key: InputMethodConnectionName type: String value: $(PRODUCT_BUNDLE_IDENTIFIER)_Connection
99 | key: InputMethodServerControllerClass type: String value: $(PRODUCT_MODULE_NAME).IMKitSampleInputController
100 | key: Application is background only type: Boolean value: YES
101 | key: tsInputMethodCharacterRepertoireKey type: Array value: [item0: String = Latn]
102 | key: tsInputMethodIconFileKey type: String value: main.tiff
103 | ```
104 |
105 | * Add entitlements
106 |
107 | * Go **Signing & Capabilities** → **+Capability** → **App Sandbox**
108 |
109 | * Go IMKitSample.entitlements, add
110 |
111 | ```
112 | key: com.apple.security.temporary-exception.mach-register.global-name
113 | type: String
114 | value: $(PRODUCT_BUNDLE_IDENTIFIER)_Connection
115 | ```
116 |
117 | * Do `sudo chmod -R 777 /Library/Input\ Methods` on terminal.
118 |
119 | * Modify build settings.
120 | * Go **Build Locations** → **Build Products Path** of debug → value `/Library/Input Methods`
121 | * Go **+** → **Add User-Defined Setting** → Set key `CONFIGURATION_BUILD_DIR`, value `/Library/Input Methods`.
122 | * !!! DO NOT edit thinklessly, this setting is really fragile.
123 |
124 | * Try Run.
125 |
126 | ## Trouble Shooting
127 |
128 | *I'm not an expert of macOS. Please don't ask too much, I don't know either.*
129 |
130 | * InputMethods says **connection \*\*Failed\*\*** all though there are no diff!
131 | * Open 'Activity Monitor' app, search the name of your InputMethods, and kill the process. Then try again.
132 |
133 | * `print()` doesn't work!
134 | * Use `NSLog()`.
135 |
136 | * App doesn't run!
137 | * Check the path of build product file. If it isn't at `/Library/Input Methods/...`, something went wrong.
138 | * Maybe build setting went wrong. Check the settings. Especially, if `CONFIGURATION_BUILD_DIR="";` found, remove the line.
139 | * Where's my InputMethod!?!?
140 | * Check English section. You would found it.
141 | * If still not, you will have to restart your computer.
142 |
143 | ## Reference
144 |
145 | Thanks to authors!!
146 |
147 | * https://mzp.hatenablog.com/entry/2017/09/17/220320
148 | * https://www.logcg.com/en/archives/2078.html
149 | * https://stackoverflow.com/questions/27813151/how-to-develop-a-simple-input-method-for-mac-os-x-in-swift
150 |
--------------------------------------------------------------------------------
/IMKitSample.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 55;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 1A41E61C26E745DD009B65D7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1A41E61B26E745DD009B65D7 /* Assets.xcassets */; };
11 | 1A41E61F26E745DD009B65D7 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1A41E61E26E745DD009B65D7 /* Preview Assets.xcassets */; };
12 | 1A41E62926E745DD009B65D7 /* IMKitSampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A41E62826E745DD009B65D7 /* IMKitSampleTests.swift */; };
13 | 1A41E63326E745DD009B65D7 /* IMKitSampleUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A41E63226E745DD009B65D7 /* IMKitSampleUITests.swift */; };
14 | 1A41E63526E745DD009B65D7 /* IMKitSampleUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A41E63426E745DD009B65D7 /* IMKitSampleUITestsLaunchTests.swift */; };
15 | 1A41E64226E74627009B65D7 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A41E64126E74627009B65D7 /* AppDelegate.swift */; };
16 | 1A41E64426E74669009B65D7 /* IMKitSampleInputController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A41E64326E74669009B65D7 /* IMKitSampleInputController.swift */; };
17 | 1A41E64726E74937009B65D7 /* main.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 1A41E64626E74937009B65D7 /* main.tiff */; };
18 | /* End PBXBuildFile section */
19 |
20 | /* Begin PBXContainerItemProxy section */
21 | 1A41E62526E745DD009B65D7 /* PBXContainerItemProxy */ = {
22 | isa = PBXContainerItemProxy;
23 | containerPortal = 1A41E60C26E745D9009B65D7 /* Project object */;
24 | proxyType = 1;
25 | remoteGlobalIDString = 1A41E61326E745D9009B65D7;
26 | remoteInfo = IMKitSample;
27 | };
28 | 1A41E62F26E745DD009B65D7 /* PBXContainerItemProxy */ = {
29 | isa = PBXContainerItemProxy;
30 | containerPortal = 1A41E60C26E745D9009B65D7 /* Project object */;
31 | proxyType = 1;
32 | remoteGlobalIDString = 1A41E61326E745D9009B65D7;
33 | remoteInfo = IMKitSample;
34 | };
35 | /* End PBXContainerItemProxy section */
36 |
37 | /* Begin PBXFileReference section */
38 | 1A41E61426E745D9009B65D7 /* IMKitSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = IMKitSample.app; sourceTree = BUILT_PRODUCTS_DIR; };
39 | 1A41E61B26E745DD009B65D7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
40 | 1A41E61E26E745DD009B65D7 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; };
41 | 1A41E62426E745DD009B65D7 /* IMKitSampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = IMKitSampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
42 | 1A41E62826E745DD009B65D7 /* IMKitSampleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IMKitSampleTests.swift; sourceTree = ""; };
43 | 1A41E62E26E745DD009B65D7 /* IMKitSampleUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = IMKitSampleUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
44 | 1A41E63226E745DD009B65D7 /* IMKitSampleUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IMKitSampleUITests.swift; sourceTree = ""; };
45 | 1A41E63426E745DD009B65D7 /* IMKitSampleUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IMKitSampleUITestsLaunchTests.swift; sourceTree = ""; };
46 | 1A41E64126E74627009B65D7 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
47 | 1A41E64326E74669009B65D7 /* IMKitSampleInputController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IMKitSampleInputController.swift; sourceTree = ""; };
48 | 1A41E64526E7470D009B65D7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; };
49 | 1A41E64626E74937009B65D7 /* main.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = main.tiff; path = IMKitSample/main.tiff; sourceTree = SOURCE_ROOT; };
50 | 1A41E64826E7495A009B65D7 /* IMKitSample.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = IMKitSample.entitlements; sourceTree = ""; };
51 | /* End PBXFileReference section */
52 |
53 | /* Begin PBXFrameworksBuildPhase section */
54 | 1A41E61126E745D9009B65D7 /* Frameworks */ = {
55 | isa = PBXFrameworksBuildPhase;
56 | buildActionMask = 2147483647;
57 | files = (
58 | );
59 | runOnlyForDeploymentPostprocessing = 0;
60 | };
61 | 1A41E62126E745DD009B65D7 /* Frameworks */ = {
62 | isa = PBXFrameworksBuildPhase;
63 | buildActionMask = 2147483647;
64 | files = (
65 | );
66 | runOnlyForDeploymentPostprocessing = 0;
67 | };
68 | 1A41E62B26E745DD009B65D7 /* Frameworks */ = {
69 | isa = PBXFrameworksBuildPhase;
70 | buildActionMask = 2147483647;
71 | files = (
72 | );
73 | runOnlyForDeploymentPostprocessing = 0;
74 | };
75 | /* End PBXFrameworksBuildPhase section */
76 |
77 | /* Begin PBXGroup section */
78 | 1A41E60B26E745D9009B65D7 = {
79 | isa = PBXGroup;
80 | children = (
81 | 1A41E61626E745D9009B65D7 /* IMKitSample */,
82 | 1A41E62726E745DD009B65D7 /* IMKitSampleTests */,
83 | 1A41E63126E745DD009B65D7 /* IMKitSampleUITests */,
84 | 1A41E61526E745D9009B65D7 /* Products */,
85 | );
86 | sourceTree = "";
87 | };
88 | 1A41E61526E745D9009B65D7 /* Products */ = {
89 | isa = PBXGroup;
90 | children = (
91 | 1A41E61426E745D9009B65D7 /* IMKitSample.app */,
92 | 1A41E62426E745DD009B65D7 /* IMKitSampleTests.xctest */,
93 | 1A41E62E26E745DD009B65D7 /* IMKitSampleUITests.xctest */,
94 | );
95 | name = Products;
96 | sourceTree = "";
97 | };
98 | 1A41E61626E745D9009B65D7 /* IMKitSample */ = {
99 | isa = PBXGroup;
100 | children = (
101 | 1A41E64526E7470D009B65D7 /* Info.plist */,
102 | 1A41E64826E7495A009B65D7 /* IMKitSample.entitlements */,
103 | 1A41E64326E74669009B65D7 /* IMKitSampleInputController.swift */,
104 | 1A41E64126E74627009B65D7 /* AppDelegate.swift */,
105 | 1A41E61B26E745DD009B65D7 /* Assets.xcassets */,
106 | 1A41E64626E74937009B65D7 /* main.tiff */,
107 | 1A41E61D26E745DD009B65D7 /* Preview Content */,
108 | );
109 | path = IMKitSample;
110 | sourceTree = "";
111 | };
112 | 1A41E61D26E745DD009B65D7 /* Preview Content */ = {
113 | isa = PBXGroup;
114 | children = (
115 | 1A41E61E26E745DD009B65D7 /* Preview Assets.xcassets */,
116 | );
117 | path = "Preview Content";
118 | sourceTree = "";
119 | };
120 | 1A41E62726E745DD009B65D7 /* IMKitSampleTests */ = {
121 | isa = PBXGroup;
122 | children = (
123 | 1A41E62826E745DD009B65D7 /* IMKitSampleTests.swift */,
124 | );
125 | path = IMKitSampleTests;
126 | sourceTree = "";
127 | };
128 | 1A41E63126E745DD009B65D7 /* IMKitSampleUITests */ = {
129 | isa = PBXGroup;
130 | children = (
131 | 1A41E63226E745DD009B65D7 /* IMKitSampleUITests.swift */,
132 | 1A41E63426E745DD009B65D7 /* IMKitSampleUITestsLaunchTests.swift */,
133 | );
134 | path = IMKitSampleUITests;
135 | sourceTree = "";
136 | };
137 | /* End PBXGroup section */
138 |
139 | /* Begin PBXNativeTarget section */
140 | 1A41E61326E745D9009B65D7 /* IMKitSample */ = {
141 | isa = PBXNativeTarget;
142 | buildConfigurationList = 1A41E63826E745DD009B65D7 /* Build configuration list for PBXNativeTarget "IMKitSample" */;
143 | buildPhases = (
144 | 1A41E61026E745D9009B65D7 /* Sources */,
145 | 1A41E61126E745D9009B65D7 /* Frameworks */,
146 | 1A41E61226E745D9009B65D7 /* Resources */,
147 | );
148 | buildRules = (
149 | );
150 | dependencies = (
151 | );
152 | name = IMKitSample;
153 | productName = IMKitSample;
154 | productReference = 1A41E61426E745D9009B65D7 /* IMKitSample.app */;
155 | productType = "com.apple.product-type.application";
156 | };
157 | 1A41E62326E745DD009B65D7 /* IMKitSampleTests */ = {
158 | isa = PBXNativeTarget;
159 | buildConfigurationList = 1A41E63B26E745DD009B65D7 /* Build configuration list for PBXNativeTarget "IMKitSampleTests" */;
160 | buildPhases = (
161 | 1A41E62026E745DD009B65D7 /* Sources */,
162 | 1A41E62126E745DD009B65D7 /* Frameworks */,
163 | 1A41E62226E745DD009B65D7 /* Resources */,
164 | );
165 | buildRules = (
166 | );
167 | dependencies = (
168 | 1A41E62626E745DD009B65D7 /* PBXTargetDependency */,
169 | );
170 | name = IMKitSampleTests;
171 | productName = IMKitSampleTests;
172 | productReference = 1A41E62426E745DD009B65D7 /* IMKitSampleTests.xctest */;
173 | productType = "com.apple.product-type.bundle.unit-test";
174 | };
175 | 1A41E62D26E745DD009B65D7 /* IMKitSampleUITests */ = {
176 | isa = PBXNativeTarget;
177 | buildConfigurationList = 1A41E63E26E745DD009B65D7 /* Build configuration list for PBXNativeTarget "IMKitSampleUITests" */;
178 | buildPhases = (
179 | 1A41E62A26E745DD009B65D7 /* Sources */,
180 | 1A41E62B26E745DD009B65D7 /* Frameworks */,
181 | 1A41E62C26E745DD009B65D7 /* Resources */,
182 | );
183 | buildRules = (
184 | );
185 | dependencies = (
186 | 1A41E63026E745DD009B65D7 /* PBXTargetDependency */,
187 | );
188 | name = IMKitSampleUITests;
189 | productName = IMKitSampleUITests;
190 | productReference = 1A41E62E26E745DD009B65D7 /* IMKitSampleUITests.xctest */;
191 | productType = "com.apple.product-type.bundle.ui-testing";
192 | };
193 | /* End PBXNativeTarget section */
194 |
195 | /* Begin PBXProject section */
196 | 1A41E60C26E745D9009B65D7 /* Project object */ = {
197 | isa = PBXProject;
198 | attributes = {
199 | BuildIndependentTargetsInParallel = 1;
200 | LastSwiftUpdateCheck = 1300;
201 | LastUpgradeCheck = 1300;
202 | TargetAttributes = {
203 | 1A41E61326E745D9009B65D7 = {
204 | CreatedOnToolsVersion = 13.0;
205 | };
206 | 1A41E62326E745DD009B65D7 = {
207 | CreatedOnToolsVersion = 13.0;
208 | TestTargetID = 1A41E61326E745D9009B65D7;
209 | };
210 | 1A41E62D26E745DD009B65D7 = {
211 | CreatedOnToolsVersion = 13.0;
212 | TestTargetID = 1A41E61326E745D9009B65D7;
213 | };
214 | };
215 | };
216 | buildConfigurationList = 1A41E60F26E745D9009B65D7 /* Build configuration list for PBXProject "IMKitSample" */;
217 | compatibilityVersion = "Xcode 13.0";
218 | developmentRegion = en;
219 | hasScannedForEncodings = 0;
220 | knownRegions = (
221 | en,
222 | Base,
223 | );
224 | mainGroup = 1A41E60B26E745D9009B65D7;
225 | productRefGroup = 1A41E61526E745D9009B65D7 /* Products */;
226 | projectDirPath = "";
227 | projectRoot = "";
228 | targets = (
229 | 1A41E61326E745D9009B65D7 /* IMKitSample */,
230 | 1A41E62326E745DD009B65D7 /* IMKitSampleTests */,
231 | 1A41E62D26E745DD009B65D7 /* IMKitSampleUITests */,
232 | );
233 | };
234 | /* End PBXProject section */
235 |
236 | /* Begin PBXResourcesBuildPhase section */
237 | 1A41E61226E745D9009B65D7 /* Resources */ = {
238 | isa = PBXResourcesBuildPhase;
239 | buildActionMask = 2147483647;
240 | files = (
241 | 1A41E64726E74937009B65D7 /* main.tiff in Resources */,
242 | 1A41E61F26E745DD009B65D7 /* Preview Assets.xcassets in Resources */,
243 | 1A41E61C26E745DD009B65D7 /* Assets.xcassets in Resources */,
244 | );
245 | runOnlyForDeploymentPostprocessing = 0;
246 | };
247 | 1A41E62226E745DD009B65D7 /* Resources */ = {
248 | isa = PBXResourcesBuildPhase;
249 | buildActionMask = 2147483647;
250 | files = (
251 | );
252 | runOnlyForDeploymentPostprocessing = 0;
253 | };
254 | 1A41E62C26E745DD009B65D7 /* Resources */ = {
255 | isa = PBXResourcesBuildPhase;
256 | buildActionMask = 2147483647;
257 | files = (
258 | );
259 | runOnlyForDeploymentPostprocessing = 0;
260 | };
261 | /* End PBXResourcesBuildPhase section */
262 |
263 | /* Begin PBXSourcesBuildPhase section */
264 | 1A41E61026E745D9009B65D7 /* Sources */ = {
265 | isa = PBXSourcesBuildPhase;
266 | buildActionMask = 2147483647;
267 | files = (
268 | 1A41E64226E74627009B65D7 /* AppDelegate.swift in Sources */,
269 | 1A41E64426E74669009B65D7 /* IMKitSampleInputController.swift in Sources */,
270 | );
271 | runOnlyForDeploymentPostprocessing = 0;
272 | };
273 | 1A41E62026E745DD009B65D7 /* Sources */ = {
274 | isa = PBXSourcesBuildPhase;
275 | buildActionMask = 2147483647;
276 | files = (
277 | 1A41E62926E745DD009B65D7 /* IMKitSampleTests.swift in Sources */,
278 | );
279 | runOnlyForDeploymentPostprocessing = 0;
280 | };
281 | 1A41E62A26E745DD009B65D7 /* Sources */ = {
282 | isa = PBXSourcesBuildPhase;
283 | buildActionMask = 2147483647;
284 | files = (
285 | 1A41E63326E745DD009B65D7 /* IMKitSampleUITests.swift in Sources */,
286 | 1A41E63526E745DD009B65D7 /* IMKitSampleUITestsLaunchTests.swift in Sources */,
287 | );
288 | runOnlyForDeploymentPostprocessing = 0;
289 | };
290 | /* End PBXSourcesBuildPhase section */
291 |
292 | /* Begin PBXTargetDependency section */
293 | 1A41E62626E745DD009B65D7 /* PBXTargetDependency */ = {
294 | isa = PBXTargetDependency;
295 | target = 1A41E61326E745D9009B65D7 /* IMKitSample */;
296 | targetProxy = 1A41E62526E745DD009B65D7 /* PBXContainerItemProxy */;
297 | };
298 | 1A41E63026E745DD009B65D7 /* PBXTargetDependency */ = {
299 | isa = PBXTargetDependency;
300 | target = 1A41E61326E745D9009B65D7 /* IMKitSample */;
301 | targetProxy = 1A41E62F26E745DD009B65D7 /* PBXContainerItemProxy */;
302 | };
303 | /* End PBXTargetDependency section */
304 |
305 | /* Begin XCBuildConfiguration section */
306 | 1A41E63626E745DD009B65D7 /* Debug */ = {
307 | isa = XCBuildConfiguration;
308 | buildSettings = {
309 | ALWAYS_SEARCH_USER_PATHS = NO;
310 | CLANG_ANALYZER_NONNULL = YES;
311 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
312 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
313 | CLANG_CXX_LIBRARY = "libc++";
314 | CLANG_ENABLE_MODULES = YES;
315 | CLANG_ENABLE_OBJC_ARC = YES;
316 | CLANG_ENABLE_OBJC_WEAK = YES;
317 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
318 | CLANG_WARN_BOOL_CONVERSION = YES;
319 | CLANG_WARN_COMMA = YES;
320 | CLANG_WARN_CONSTANT_CONVERSION = YES;
321 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
322 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
323 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
324 | CLANG_WARN_EMPTY_BODY = YES;
325 | CLANG_WARN_ENUM_CONVERSION = YES;
326 | CLANG_WARN_INFINITE_RECURSION = YES;
327 | CLANG_WARN_INT_CONVERSION = YES;
328 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
329 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
330 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
331 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
332 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
333 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
334 | CLANG_WARN_STRICT_PROTOTYPES = YES;
335 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
336 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
337 | CLANG_WARN_UNREACHABLE_CODE = YES;
338 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
339 | CONFIGURATION_BUILD_DIR = "/Library/Input Methods";
340 | COPY_PHASE_STRIP = NO;
341 | DEBUG_INFORMATION_FORMAT = dwarf;
342 | ENABLE_STRICT_OBJC_MSGSEND = YES;
343 | ENABLE_TESTABILITY = YES;
344 | GCC_C_LANGUAGE_STANDARD = gnu11;
345 | GCC_DYNAMIC_NO_PIC = NO;
346 | GCC_NO_COMMON_BLOCKS = YES;
347 | GCC_OPTIMIZATION_LEVEL = 0;
348 | GCC_PREPROCESSOR_DEFINITIONS = (
349 | "DEBUG=1",
350 | "$(inherited)",
351 | );
352 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
353 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
354 | GCC_WARN_UNDECLARED_SELECTOR = YES;
355 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
356 | GCC_WARN_UNUSED_FUNCTION = YES;
357 | GCC_WARN_UNUSED_VARIABLE = YES;
358 | MACOSX_DEPLOYMENT_TARGET = 11.0;
359 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
360 | MTL_FAST_MATH = YES;
361 | ONLY_ACTIVE_ARCH = YES;
362 | PRODUCT_DEFINITION_PLIST = "";
363 | SDKROOT = macosx;
364 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
365 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
366 | SYMROOT = "/Library/Input Methods";
367 | };
368 | name = Debug;
369 | };
370 | 1A41E63726E745DD009B65D7 /* Release */ = {
371 | isa = XCBuildConfiguration;
372 | buildSettings = {
373 | ALWAYS_SEARCH_USER_PATHS = NO;
374 | CLANG_ANALYZER_NONNULL = YES;
375 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
376 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
377 | CLANG_CXX_LIBRARY = "libc++";
378 | CLANG_ENABLE_MODULES = YES;
379 | CLANG_ENABLE_OBJC_ARC = YES;
380 | CLANG_ENABLE_OBJC_WEAK = YES;
381 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
382 | CLANG_WARN_BOOL_CONVERSION = YES;
383 | CLANG_WARN_COMMA = YES;
384 | CLANG_WARN_CONSTANT_CONVERSION = YES;
385 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
386 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
387 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
388 | CLANG_WARN_EMPTY_BODY = YES;
389 | CLANG_WARN_ENUM_CONVERSION = YES;
390 | CLANG_WARN_INFINITE_RECURSION = YES;
391 | CLANG_WARN_INT_CONVERSION = YES;
392 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
393 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
394 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
395 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
396 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
397 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
398 | CLANG_WARN_STRICT_PROTOTYPES = YES;
399 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
400 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
401 | CLANG_WARN_UNREACHABLE_CODE = YES;
402 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
403 | CONFIGURATION_BUILD_DIR = "/Library/Input Methods";
404 | COPY_PHASE_STRIP = NO;
405 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
406 | ENABLE_NS_ASSERTIONS = NO;
407 | ENABLE_STRICT_OBJC_MSGSEND = YES;
408 | GCC_C_LANGUAGE_STANDARD = gnu11;
409 | GCC_NO_COMMON_BLOCKS = YES;
410 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
411 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
412 | GCC_WARN_UNDECLARED_SELECTOR = YES;
413 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
414 | GCC_WARN_UNUSED_FUNCTION = YES;
415 | GCC_WARN_UNUSED_VARIABLE = YES;
416 | MACOSX_DEPLOYMENT_TARGET = 11.0;
417 | MTL_ENABLE_DEBUG_INFO = NO;
418 | MTL_FAST_MATH = YES;
419 | PRODUCT_DEFINITION_PLIST = "";
420 | SDKROOT = macosx;
421 | SWIFT_COMPILATION_MODE = wholemodule;
422 | SWIFT_OPTIMIZATION_LEVEL = "-O";
423 | };
424 | name = Release;
425 | };
426 | 1A41E63926E745DD009B65D7 /* Debug */ = {
427 | isa = XCBuildConfiguration;
428 | buildSettings = {
429 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
430 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
431 | CODE_SIGN_ENTITLEMENTS = IMKitSample/IMKitSample.entitlements;
432 | CODE_SIGN_STYLE = Automatic;
433 | COMBINE_HIDPI_IMAGES = YES;
434 | CURRENT_PROJECT_VERSION = 1;
435 | DEVELOPMENT_ASSET_PATHS = "\"IMKitSample/Preview Content\"";
436 | DEVELOPMENT_TEAM = 9S3UXHYP65;
437 | ENABLE_APP_SANDBOX = YES;
438 | ENABLE_HARDENED_RUNTIME = YES;
439 | ENABLE_PREVIEWS = YES;
440 | ENABLE_USER_SELECTED_FILES = readonly;
441 | GENERATE_INFOPLIST_FILE = YES;
442 | INFOPLIST_FILE = IMKitSample/Info.plist;
443 | INFOPLIST_KEY_NSHumanReadableCopyright = "";
444 | LD_RUNPATH_SEARCH_PATHS = (
445 | "$(inherited)",
446 | "@executable_path/../Frameworks",
447 | );
448 | MACOSX_DEPLOYMENT_TARGET = 11.0;
449 | MARKETING_VERSION = 1.0;
450 | PRODUCT_BUNDLE_IDENTIFIER = dev.ensan.inputmethod.IMKitSample;
451 | PRODUCT_NAME = "$(TARGET_NAME)";
452 | SWIFT_EMIT_LOC_STRINGS = YES;
453 | SWIFT_VERSION = 5.0;
454 | };
455 | name = Debug;
456 | };
457 | 1A41E63A26E745DD009B65D7 /* Release */ = {
458 | isa = XCBuildConfiguration;
459 | buildSettings = {
460 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
461 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
462 | CODE_SIGN_ENTITLEMENTS = IMKitSample/IMKitSample.entitlements;
463 | CODE_SIGN_STYLE = Automatic;
464 | COMBINE_HIDPI_IMAGES = YES;
465 | CURRENT_PROJECT_VERSION = 1;
466 | DEVELOPMENT_ASSET_PATHS = "\"IMKitSample/Preview Content\"";
467 | DEVELOPMENT_TEAM = 9S3UXHYP65;
468 | ENABLE_APP_SANDBOX = YES;
469 | ENABLE_HARDENED_RUNTIME = YES;
470 | ENABLE_PREVIEWS = YES;
471 | ENABLE_USER_SELECTED_FILES = readonly;
472 | GENERATE_INFOPLIST_FILE = YES;
473 | INFOPLIST_FILE = IMKitSample/Info.plist;
474 | INFOPLIST_KEY_NSHumanReadableCopyright = "";
475 | LD_RUNPATH_SEARCH_PATHS = (
476 | "$(inherited)",
477 | "@executable_path/../Frameworks",
478 | );
479 | MACOSX_DEPLOYMENT_TARGET = 11.0;
480 | MARKETING_VERSION = 1.0;
481 | PRODUCT_BUNDLE_IDENTIFIER = dev.ensan.inputmethod.IMKitSample;
482 | PRODUCT_NAME = "$(TARGET_NAME)";
483 | SWIFT_EMIT_LOC_STRINGS = YES;
484 | SWIFT_VERSION = 5.0;
485 | };
486 | name = Release;
487 | };
488 | 1A41E63C26E745DD009B65D7 /* Debug */ = {
489 | isa = XCBuildConfiguration;
490 | buildSettings = {
491 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
492 | BUNDLE_LOADER = "$(TEST_HOST)";
493 | CODE_SIGN_STYLE = Automatic;
494 | COMBINE_HIDPI_IMAGES = YES;
495 | CURRENT_PROJECT_VERSION = 1;
496 | GENERATE_INFOPLIST_FILE = YES;
497 | LD_RUNPATH_SEARCH_PATHS = (
498 | "$(inherited)",
499 | "@executable_path/../Frameworks",
500 | "@loader_path/../Frameworks",
501 | );
502 | MACOSX_DEPLOYMENT_TARGET = 11.0;
503 | MARKETING_VERSION = 1.0;
504 | PRODUCT_BUNDLE_IDENTIFIER = com.ensan.inputmethod.IMKitSampleTests;
505 | PRODUCT_NAME = "$(TARGET_NAME)";
506 | SWIFT_EMIT_LOC_STRINGS = NO;
507 | SWIFT_VERSION = 5.0;
508 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/IMKitSample.app/Contents/MacOS/IMKitSample";
509 | };
510 | name = Debug;
511 | };
512 | 1A41E63D26E745DD009B65D7 /* Release */ = {
513 | isa = XCBuildConfiguration;
514 | buildSettings = {
515 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
516 | BUNDLE_LOADER = "$(TEST_HOST)";
517 | CODE_SIGN_STYLE = Automatic;
518 | COMBINE_HIDPI_IMAGES = YES;
519 | CURRENT_PROJECT_VERSION = 1;
520 | GENERATE_INFOPLIST_FILE = YES;
521 | LD_RUNPATH_SEARCH_PATHS = (
522 | "$(inherited)",
523 | "@executable_path/../Frameworks",
524 | "@loader_path/../Frameworks",
525 | );
526 | MACOSX_DEPLOYMENT_TARGET = 11.0;
527 | MARKETING_VERSION = 1.0;
528 | PRODUCT_BUNDLE_IDENTIFIER = com.ensan.inputmethod.IMKitSampleTests;
529 | PRODUCT_NAME = "$(TARGET_NAME)";
530 | SWIFT_EMIT_LOC_STRINGS = NO;
531 | SWIFT_VERSION = 5.0;
532 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/IMKitSample.app/Contents/MacOS/IMKitSample";
533 | };
534 | name = Release;
535 | };
536 | 1A41E63F26E745DD009B65D7 /* Debug */ = {
537 | isa = XCBuildConfiguration;
538 | buildSettings = {
539 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
540 | CODE_SIGN_STYLE = Automatic;
541 | COMBINE_HIDPI_IMAGES = YES;
542 | CURRENT_PROJECT_VERSION = 1;
543 | GENERATE_INFOPLIST_FILE = YES;
544 | LD_RUNPATH_SEARCH_PATHS = (
545 | "$(inherited)",
546 | "@executable_path/../Frameworks",
547 | "@loader_path/../Frameworks",
548 | );
549 | MARKETING_VERSION = 1.0;
550 | PRODUCT_BUNDLE_IDENTIFIER = com.ensan.inputmethod.IMKitSampleUITests;
551 | PRODUCT_NAME = "$(TARGET_NAME)";
552 | SWIFT_EMIT_LOC_STRINGS = NO;
553 | SWIFT_VERSION = 5.0;
554 | TEST_TARGET_NAME = IMKitSample;
555 | };
556 | name = Debug;
557 | };
558 | 1A41E64026E745DD009B65D7 /* Release */ = {
559 | isa = XCBuildConfiguration;
560 | buildSettings = {
561 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
562 | CODE_SIGN_STYLE = Automatic;
563 | COMBINE_HIDPI_IMAGES = YES;
564 | CURRENT_PROJECT_VERSION = 1;
565 | GENERATE_INFOPLIST_FILE = YES;
566 | LD_RUNPATH_SEARCH_PATHS = (
567 | "$(inherited)",
568 | "@executable_path/../Frameworks",
569 | "@loader_path/../Frameworks",
570 | );
571 | MARKETING_VERSION = 1.0;
572 | PRODUCT_BUNDLE_IDENTIFIER = com.ensan.inputmethod.IMKitSampleUITests;
573 | PRODUCT_NAME = "$(TARGET_NAME)";
574 | SWIFT_EMIT_LOC_STRINGS = NO;
575 | SWIFT_VERSION = 5.0;
576 | TEST_TARGET_NAME = IMKitSample;
577 | };
578 | name = Release;
579 | };
580 | /* End XCBuildConfiguration section */
581 |
582 | /* Begin XCConfigurationList section */
583 | 1A41E60F26E745D9009B65D7 /* Build configuration list for PBXProject "IMKitSample" */ = {
584 | isa = XCConfigurationList;
585 | buildConfigurations = (
586 | 1A41E63626E745DD009B65D7 /* Debug */,
587 | 1A41E63726E745DD009B65D7 /* Release */,
588 | );
589 | defaultConfigurationIsVisible = 0;
590 | defaultConfigurationName = Release;
591 | };
592 | 1A41E63826E745DD009B65D7 /* Build configuration list for PBXNativeTarget "IMKitSample" */ = {
593 | isa = XCConfigurationList;
594 | buildConfigurations = (
595 | 1A41E63926E745DD009B65D7 /* Debug */,
596 | 1A41E63A26E745DD009B65D7 /* Release */,
597 | );
598 | defaultConfigurationIsVisible = 0;
599 | defaultConfigurationName = Release;
600 | };
601 | 1A41E63B26E745DD009B65D7 /* Build configuration list for PBXNativeTarget "IMKitSampleTests" */ = {
602 | isa = XCConfigurationList;
603 | buildConfigurations = (
604 | 1A41E63C26E745DD009B65D7 /* Debug */,
605 | 1A41E63D26E745DD009B65D7 /* Release */,
606 | );
607 | defaultConfigurationIsVisible = 0;
608 | defaultConfigurationName = Release;
609 | };
610 | 1A41E63E26E745DD009B65D7 /* Build configuration list for PBXNativeTarget "IMKitSampleUITests" */ = {
611 | isa = XCConfigurationList;
612 | buildConfigurations = (
613 | 1A41E63F26E745DD009B65D7 /* Debug */,
614 | 1A41E64026E745DD009B65D7 /* Release */,
615 | );
616 | defaultConfigurationIsVisible = 0;
617 | defaultConfigurationName = Release;
618 | };
619 | /* End XCConfigurationList section */
620 | };
621 | rootObject = 1A41E60C26E745D9009B65D7 /* Project object */;
622 | }
623 |
--------------------------------------------------------------------------------