diff --git a/KeyboardExtension/Base.lproj/ShareViewController.xib b/KeyboardExtension/Base.lproj/ShareViewController.xib
new file mode 100644
index 00000000..bc80e0d6
--- /dev/null
+++ b/KeyboardExtension/Base.lproj/ShareViewController.xib
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/KeyboardExtension/Info.plist b/KeyboardExtension/Info.plist
new file mode 100644
index 00000000..f275862c
--- /dev/null
+++ b/KeyboardExtension/Info.plist
@@ -0,0 +1,23 @@
+
+
+
+
+ CFBundleIconFile
+ icon
+ NSExtension
+
+ NSExtensionAttributes
+
+ NSExtensionActivationRule
+
+ NSExtensionActivationSupportsText
+
+
+
+ NSExtensionPointIdentifier
+ com.apple.share-services
+ NSExtensionPrincipalClass
+ $(PRODUCT_MODULE_NAME).ShareViewController
+
+
+
diff --git a/KeyboardExtension/KeyboardExtension.entitlements b/KeyboardExtension/KeyboardExtension.entitlements
new file mode 100644
index 00000000..33ede3bb
--- /dev/null
+++ b/KeyboardExtension/KeyboardExtension.entitlements
@@ -0,0 +1,12 @@
+
+
+
+
+ com.apple.security.temporary-exception.mach-register.global-name
+ org_atelierInmu_inputmethod_vChewing
+ com.apple.security.app-sandbox
+
+ com.apple.security.files.user-selected.read-only
+
+
+
diff --git a/KeyboardExtension/ShareViewController.swift b/KeyboardExtension/ShareViewController.swift
new file mode 100644
index 00000000..75910d4c
--- /dev/null
+++ b/KeyboardExtension/ShareViewController.swift
@@ -0,0 +1,41 @@
+//
+// ShareViewController.swift
+// KeyboardExtension
+//
+// Created by ShikiSuen on 2022/2/20.
+//
+
+import Cocoa
+
+class ShareViewController: NSViewController {
+
+ override var nibName: NSNib.Name? {
+ return NSNib.Name("ShareViewController")
+ }
+
+ override func loadView() {
+ super.loadView()
+
+ // Insert code here to customize the view
+ let item = self.extensionContext!.inputItems[0] as! NSExtensionItem
+ if let attachments = item.attachments {
+ NSLog("Attachments = %@", attachments as NSArray)
+ } else {
+ NSLog("No Attachments")
+ }
+ }
+
+ @IBAction func send(_ sender: AnyObject?) {
+ let outputItem = NSExtensionItem()
+ // Complete implementation by setting the appropriate value on the output item
+
+ let outputItems = [outputItem]
+ self.extensionContext!.completeRequest(returningItems: outputItems, completionHandler: nil)
+}
+
+ @IBAction func cancel(_ sender: AnyObject?) {
+ let cancelError = NSError(domain: NSCocoaErrorDomain, code: NSUserCancelledError, userInfo: nil)
+ self.extensionContext!.cancelRequest(withError: cancelError)
+ }
+
+}
diff --git a/KeyboardExtension/icon.icns b/KeyboardExtension/icon.icns
new file mode 100644
index 00000000..84ae85cd
Binary files /dev/null and b/KeyboardExtension/icon.icns differ
diff --git a/Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Info.plist b/KeyboardExtension/vChewingKeyLayout.bundle/Contents/Info.plist
similarity index 67%
rename from Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Info.plist
rename to KeyboardExtension/vChewingKeyLayout.bundle/Contents/Info.plist
index 52159851..594e7ab6 100644
--- a/Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Info.plist
+++ b/KeyboardExtension/vChewingKeyLayout.bundle/Contents/Info.plist
@@ -8,48 +8,48 @@
vChewingKeyLayout
CFBundleVersion
1.0
- KLInfo_Zhuyin Dachen
+ KLInfo_vChewingDachen
TICapsLockLanguageSwitchCapable
TISInputSourceID
- org.atelierInmu.keyboardlayout.vChewingKeyLayout.zhuyindachen
+ org.atelierInmu.keyboardlayout.vChewingKeyLayout.vChewingDachen
TISIntendedLanguage
zh-Hanb
- KLInfo_Zhuyin ETen
+ KLInfo_vChewingETen
TICapsLockLanguageSwitchCapable
TISInputSourceID
- org.atelierInmu.keyboardlayout.vChewingKeyLayout.zhuyineten
+ org.atelierInmu.keyboardlayout.vChewingKeyLayout.vChewingETen
TISIntendedLanguage
zh-Hanb
- KLInfo_Zhuyin IBM
+ KLInfo_vChewingIBM
TICapsLockLanguageSwitchCapable
TISInputSourceID
- org.atelierInmu.keyboardlayout.vChewingKeyLayout.zhuyinibm
+ org.atelierInmu.keyboardlayout.vChewingKeyLayout.vChewingIBM
TISIntendedLanguage
zh-Hanb
- KLInfo_Zhuyin MiTAC
+ KLInfo_vChewingMiTAC
TICapsLockLanguageSwitchCapable
TISInputSourceID
- org.atelierInmu.keyboardlayout.vChewingKeyLayout.zhuyinmitac
+ org.atelierInmu.keyboardlayout.vChewingKeyLayout.vChewingMiTAC
TISIntendedLanguage
zh-Hanb
- KLInfo_Zhuyin Seigyou
+ KLInfo_vChewingSeigyou
TICapsLockLanguageSwitchCapable
TISInputSourceID
- org.atelierInmu.keyboardlayout.vChewingKeyLayout.zhuyinseigyou
+ org.atelierInmu.keyboardlayout.vChewingKeyLayout.vChewingSeigyou
TISIntendedLanguage
zh-Hanb
diff --git a/Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/Zhuyin Dachen.keylayout b/KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/vChewingDachen.keylayout
similarity index 99%
rename from Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/Zhuyin Dachen.keylayout
rename to KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/vChewingDachen.keylayout
index bf901502..19c784b8 100644
--- a/Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/Zhuyin Dachen.keylayout
+++ b/KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/vChewingDachen.keylayout
@@ -1,7 +1,7 @@
-
+
diff --git a/Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/Zhuyin ETen.keylayout b/KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/vChewingETen.keylayout
similarity index 99%
rename from Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/Zhuyin ETen.keylayout
rename to KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/vChewingETen.keylayout
index 98ba181c..918c7780 100644
--- a/Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/Zhuyin ETen.keylayout
+++ b/KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/vChewingETen.keylayout
@@ -1,7 +1,7 @@
-
+
diff --git a/Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/Zhuyin IBM.keylayout b/KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/vChewingIBM.keylayout
similarity index 99%
rename from Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/Zhuyin IBM.keylayout
rename to KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/vChewingIBM.keylayout
index e0b3d15c..66ea8e1b 100644
--- a/Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/Zhuyin IBM.keylayout
+++ b/KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/vChewingIBM.keylayout
@@ -1,7 +1,7 @@
-
+
diff --git a/Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/Zhuyin MiTAC.keylayout b/KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/vChewingMiTAC.keylayout
similarity index 99%
rename from Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/Zhuyin MiTAC.keylayout
rename to KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/vChewingMiTAC.keylayout
index 2a670716..c459b76a 100644
--- a/Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/Zhuyin MiTAC.keylayout
+++ b/KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/vChewingMiTAC.keylayout
@@ -1,7 +1,7 @@
-
+
diff --git a/Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/Zhuyin Seigyou.keylayout b/KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/vChewingSeigyou.keylayout
similarity index 99%
rename from Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/Zhuyin Seigyou.keylayout
rename to KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/vChewingSeigyou.keylayout
index bc6032ad..d153ef26 100644
--- a/Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/Zhuyin Seigyou.keylayout
+++ b/KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/vChewingSeigyou.keylayout
@@ -1,7 +1,7 @@
-
+
diff --git a/KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/zh.lproj/InfoPlist.strings b/KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/zh.lproj/InfoPlist.strings
new file mode 100644
index 00000000..128b7a66
Binary files /dev/null and b/KeyboardExtension/vChewingKeyLayout.bundle/Contents/Resources/zh.lproj/InfoPlist.strings differ
diff --git a/Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/version.plist b/KeyboardExtension/vChewingKeyLayout.bundle/Contents/version.plist
similarity index 100%
rename from Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/version.plist
rename to KeyboardExtension/vChewingKeyLayout.bundle/Contents/version.plist
diff --git a/Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/zh.lproj/InfoPlist.strings b/Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/zh.lproj/InfoPlist.strings
deleted file mode 100644
index 08c98689..00000000
Binary files a/Source/Resources/KeyLayouts/vChewingKeyLayout.bundle/Contents/Resources/zh.lproj/InfoPlist.strings and /dev/null differ
diff --git a/Source/WindowControllers/ctlPrefWindow.swift b/Source/WindowControllers/ctlPrefWindow.swift
index ebdd9695..b2b11896 100644
--- a/Source/WindowControllers/ctlPrefWindow.swift
+++ b/Source/WindowControllers/ctlPrefWindow.swift
@@ -86,7 +86,7 @@ extension RangeReplaceableCollection where Element: Hashable {
let menuItem_vChewingDachen = NSMenuItem()
menuItem_vChewingDachen.title = String(format: NSLocalizedString("vChewing Dachen (Not Finished Yet)", comment: ""))
- menuItem_vChewingDachen.representedObject = String("org.atelierInmu.keyboardlayout.vChewingKeyLayout.zhuyindachen")
+ menuItem_vChewingDachen.representedObject = String("org.atelierInmu.keyboardlayout.vChewingKeyLayout.vChewingDachen")
basisKeyboardLayoutButton.menu?.addItem(menuItem_vChewingDachen)
let basisKeyboardLayoutID = Preferences.basisKeyboardLayout
diff --git a/vChewing.xcodeproj/project.pbxproj b/vChewing.xcodeproj/project.pbxproj
index 578eea6b..dd59d3d6 100644
--- a/vChewing.xcodeproj/project.pbxproj
+++ b/vChewing.xcodeproj/project.pbxproj
@@ -11,7 +11,6 @@
5B11328927B94CFB00E58451 /* AppleKeyboardConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B11328827B94CFB00E58451 /* AppleKeyboardConverter.swift */; };
5B2DB16F27AF6891006D874E /* data-chs.txt in Resources */ = {isa = PBXBuildFile; fileRef = 5B2DB16D27AF6891006D874E /* data-chs.txt */; };
5B2DB17027AF6891006D874E /* data-cht.txt in Resources */ = {isa = PBXBuildFile; fileRef = 5B2DB16E27AF6891006D874E /* data-cht.txt */; };
- 5B30F11327BA568800484E24 /* vChewingKeyLayout.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 5B30F11227BA568800484E24 /* vChewingKeyLayout.bundle */; };
5B62A31727AE73A700A19448 /* unzip.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B62A30927AE73A700A19448 /* unzip.m */; };
5B62A31827AE73A700A19448 /* zip.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B62A30A27AE73A700A19448 /* zip.m */; };
5B62A31927AE73A700A19448 /* ioapi.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B62A30B27AE73A700A19448 /* ioapi.m */; };
@@ -51,6 +50,11 @@
5BD05C6927B2BBEF004C4F1D /* WindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD05C6427B2BBEF004C4F1D /* WindowController.swift */; };
5BD05C6A27B2BBEF004C4F1D /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD05C6527B2BBEF004C4F1D /* ViewController.swift */; };
5BDC5CAB27C2873D00E1CCE2 /* Grid.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5BDC5CAA27C2873D00E1CCE2 /* Grid.mm */; };
+ 5BDC5CB327C28E8B00E1CCE2 /* icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 5BDC5CB227C28E8B00E1CCE2 /* icon.icns */; };
+ 5BDC5CB527C28E8B00E1CCE2 /* ShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BDC5CB427C28E8B00E1CCE2 /* ShareViewController.swift */; };
+ 5BDC5CB827C28E8B00E1CCE2 /* ShareViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BDC5CB627C28E8B00E1CCE2 /* ShareViewController.xib */; };
+ 5BDC5CBD27C28E8B00E1CCE2 /* KeyboardExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 5BDC5CB027C28E8B00E1CCE2 /* KeyboardExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
+ 5BDC5CC227C2941F00E1CCE2 /* vChewingKeyLayout.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 5B30F11227BA568800484E24 /* vChewingKeyLayout.bundle */; };
5BDCBB2E27B4E67A00D0CC59 /* vChewingPhraseEditor.app in Resources */ = {isa = PBXBuildFile; fileRef = 5BD05BB827B2A429004C4F1D /* vChewingPhraseEditor.app */; };
5BE78BD927B3775B005EA1BE /* ctlAboutWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BE78BD827B37750005EA1BE /* ctlAboutWindow.swift */; };
5BE78BDD27B3776D005EA1BE /* frmAboutWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE78BDA27B37764005EA1BE /* frmAboutWindow.xib */; };
@@ -97,6 +101,13 @@
remoteGlobalIDString = 5BD05BB727B2A429004C4F1D;
remoteInfo = vChewingPhraseEditor;
};
+ 5BDC5CBB27C28E8B00E1CCE2 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 6A0D4E9415FC0CFA00ABF4B3 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 5BDC5CAF27C28E8B00E1CCE2;
+ remoteInfo = KeyboardExtension;
+ };
6A38BC2515FC131100A8A51F /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 6A0D4E9415FC0CFA00ABF4B3 /* Project object */;
@@ -113,6 +124,20 @@
};
/* End PBXContainerItemProxy section */
+/* Begin PBXCopyFilesBuildPhase section */
+ 5BDC5CBE27C28E8B00E1CCE2 /* Embed App Extensions */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 13;
+ files = (
+ 5BDC5CBD27C28E8B00E1CCE2 /* KeyboardExtension.appex in Embed App Extensions */,
+ );
+ name = "Embed App Extensions";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
/* Begin PBXFileReference section */
5B04305327B529D800CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = ""; };
5B04305427B529D800CB65BC /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; };
@@ -197,6 +222,12 @@
5BD05C6427B2BBEF004C4F1D /* WindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WindowController.swift; sourceTree = ""; };
5BD05C6527B2BBEF004C4F1D /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
5BDC5CAA27C2873D00E1CCE2 /* Grid.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = Grid.mm; sourceTree = ""; };
+ 5BDC5CB027C28E8B00E1CCE2 /* KeyboardExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = KeyboardExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
+ 5BDC5CB227C28E8B00E1CCE2 /* icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = icon.icns; sourceTree = ""; };
+ 5BDC5CB427C28E8B00E1CCE2 /* ShareViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareViewController.swift; sourceTree = ""; };
+ 5BDC5CB727C28E8B00E1CCE2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ShareViewController.xib; sourceTree = ""; };
+ 5BDC5CB927C28E8B00E1CCE2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 5BDC5CBA27C28E8B00E1CCE2 /* KeyboardExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = KeyboardExtension.entitlements; sourceTree = ""; };
5BDCBB4227B4F6C600D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/MainMenu.strings"; sourceTree = ""; };
5BDCBB4327B4F6C600D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/frmAboutWindow.strings"; sourceTree = ""; };
5BDCBB4527B4F6C600D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "Source/WindowNIBs/zh-Hant.lproj/frmPrefWindow.strings"; sourceTree = ""; };
@@ -282,6 +313,13 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 5BDC5CAD27C28E8B00E1CCE2 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
6A0D4E9F15FC0D2D00ABF4B3 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -299,14 +337,6 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
- 5B30F10727BA501900484E24 /* KeyLayouts */ = {
- isa = PBXGroup;
- children = (
- 5B30F11227BA568800484E24 /* vChewingKeyLayout.bundle */,
- );
- path = KeyLayouts;
- sourceTree = "";
- };
5B62A30127AE732800A19448 /* 3rdParty */ = {
isa = PBXGroup;
children = (
@@ -461,7 +491,6 @@
5B62A33027AE78E500A19448 /* Resources */ = {
isa = PBXGroup;
children = (
- 5B30F10727BA501900484E24 /* KeyLayouts */,
6A0D4EEE15FC0DA600ABF4B3 /* Images */,
5BBBB76E27AED70B0023B93A /* MenuIcons */,
5BBBB75C27AED54C0023B93A /* SoundFiles */,
@@ -598,6 +627,19 @@
path = Resources;
sourceTree = "";
};
+ 5BDC5CB127C28E8B00E1CCE2 /* KeyboardExtension */ = {
+ isa = PBXGroup;
+ children = (
+ 5B30F11227BA568800484E24 /* vChewingKeyLayout.bundle */,
+ 5BDC5CB227C28E8B00E1CCE2 /* icon.icns */,
+ 5BDC5CB427C28E8B00E1CCE2 /* ShareViewController.swift */,
+ 5BDC5CB627C28E8B00E1CCE2 /* ShareViewController.xib */,
+ 5BDC5CB927C28E8B00E1CCE2 /* Info.plist */,
+ 5BDC5CBA27C28E8B00E1CCE2 /* KeyboardExtension.entitlements */,
+ );
+ path = KeyboardExtension;
+ sourceTree = "";
+ };
6A0D4E9215FC0CFA00ABF4B3 = {
isa = PBXGroup;
children = (
@@ -605,6 +647,7 @@
6ACA41E715FC1D9000935EF6 /* Installer */,
6A0D4EC215FC0D3C00ABF4B3 /* Source */,
5BD05BB927B2A429004C4F1D /* UserPhraseEditor */,
+ 5BDC5CB127C28E8B00E1CCE2 /* KeyboardExtension */,
6A0D4EA315FC0D2D00ABF4B3 /* Products */,
D47D73C127A7200500255A50 /* Frameworks */,
);
@@ -616,6 +659,7 @@
6A0D4EA215FC0D2D00ABF4B3 /* vChewing.app */,
6ACA41CB15FC1D7500935EF6 /* vChewingInstaller.app */,
5BD05BB827B2A429004C4F1D /* vChewingPhraseEditor.app */,
+ 5BDC5CB027C28E8B00E1CCE2 /* KeyboardExtension.appex */,
);
name = Products;
sourceTree = "";
@@ -737,6 +781,23 @@
productReference = 5BD05BB827B2A429004C4F1D /* vChewingPhraseEditor.app */;
productType = "com.apple.product-type.application";
};
+ 5BDC5CAF27C28E8B00E1CCE2 /* KeyboardExtension */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 5BDC5CC127C28E8B00E1CCE2 /* Build configuration list for PBXNativeTarget "KeyboardExtension" */;
+ buildPhases = (
+ 5BDC5CAC27C28E8B00E1CCE2 /* Sources */,
+ 5BDC5CAD27C28E8B00E1CCE2 /* Frameworks */,
+ 5BDC5CAE27C28E8B00E1CCE2 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = KeyboardExtension;
+ productName = KeyboardExtension;
+ productReference = 5BDC5CB027C28E8B00E1CCE2 /* KeyboardExtension.appex */;
+ productType = "com.apple.product-type.app-extension";
+ };
6A0D4EA115FC0D2D00ABF4B3 /* vChewing */ = {
isa = PBXNativeTarget;
buildConfigurationList = 6A0D4EC015FC0D2E00ABF4B3 /* Build configuration list for PBXNativeTarget "vChewing" */;
@@ -744,12 +805,14 @@
6A0D4E9E15FC0D2D00ABF4B3 /* Sources */,
6A0D4E9F15FC0D2D00ABF4B3 /* Frameworks */,
6A0D4EA015FC0D2D00ABF4B3 /* Resources */,
+ 5BDC5CBE27C28E8B00E1CCE2 /* Embed App Extensions */,
);
buildRules = (
);
dependencies = (
5B0AF8B327B2C4E20096FE54 /* PBXTargetDependency */,
6A38BC2615FC131100A8A51F /* PBXTargetDependency */,
+ 5BDC5CBC27C28E8B00E1CCE2 /* PBXTargetDependency */,
);
name = vChewing;
packageProductDependencies = (
@@ -793,6 +856,10 @@
LastSwiftMigration = 1320;
ProvisioningStyle = Automatic;
};
+ 5BDC5CAF27C28E8B00E1CCE2 = {
+ CreatedOnToolsVersion = 13.2;
+ ProvisioningStyle = Automatic;
+ };
6A0D4EA115FC0D2D00ABF4B3 = {
LastSwiftMigration = 1240;
ProvisioningStyle = Automatic;
@@ -824,6 +891,7 @@
6A0D4EA115FC0D2D00ABF4B3 /* vChewing */,
6ACA41CA15FC1D7500935EF6 /* vChewingInstaller */,
5BD05BB727B2A429004C4F1D /* vChewingPhraseEditor */,
+ 5BDC5CAF27C28E8B00E1CCE2 /* KeyboardExtension */,
6A38BC2115FC12FD00A8A51F /* Data */,
);
};
@@ -841,6 +909,16 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 5BDC5CAE27C28E8B00E1CCE2 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 5BDC5CB827C28E8B00E1CCE2 /* ShareViewController.xib in Resources */,
+ 5BDC5CC227C2941F00E1CCE2 /* vChewingKeyLayout.bundle in Resources */,
+ 5BDC5CB327C28E8B00E1CCE2 /* icon.icns in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
6A0D4EA015FC0D2D00ABF4B3 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@@ -861,7 +939,6 @@
5BBBB77627AED70B0023B93A /* MenuIcon-TCVIM.png in Resources */,
6A187E2616004C5900466B2E /* MainMenu.xib in Resources */,
5BBBB75F27AED54C0023B93A /* Beep.m4a in Resources */,
- 5B30F11327BA568800484E24 /* vChewingKeyLayout.bundle in Resources */,
5B2DB16F27AF6891006D874E /* data-chs.txt in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -916,6 +993,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 5BDC5CAC27C28E8B00E1CCE2 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 5BDC5CB527C28E8B00E1CCE2 /* ShareViewController.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
6A0D4E9E15FC0D2D00ABF4B3 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -983,6 +1068,11 @@
target = 5BD05BB727B2A429004C4F1D /* vChewingPhraseEditor */;
targetProxy = 5B0AF8B227B2C4E20096FE54 /* PBXContainerItemProxy */;
};
+ 5BDC5CBC27C28E8B00E1CCE2 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 5BDC5CAF27C28E8B00E1CCE2 /* KeyboardExtension */;
+ targetProxy = 5BDC5CBB27C28E8B00E1CCE2 /* PBXContainerItemProxy */;
+ };
6A38BC2615FC131100A8A51F /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 6A38BC2115FC12FD00A8A51F /* Data */;
@@ -1050,6 +1140,14 @@
name = Main.storyboard;
sourceTree = "";
};
+ 5BDC5CB627C28E8B00E1CCE2 /* ShareViewController.xib */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 5BDC5CB727C28E8B00E1CCE2 /* Base */,
+ );
+ name = ShareViewController.xib;
+ sourceTree = "";
+ };
5BE78BDA27B37764005EA1BE /* frmAboutWindow.xib */ = {
isa = PBXVariantGroup;
children = (
@@ -1229,6 +1327,102 @@
};
name = Release;
};
+ 5BDC5CBF27C28E8B00E1CCE2 /* 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++17";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_ENTITLEMENTS = KeyboardExtension/KeyboardExtension.entitlements;
+ CODE_SIGN_IDENTITY = "-";
+ CODE_SIGN_STYLE = Automatic;
+ COMBINE_HIDPI_IMAGES = YES;
+ CURRENT_PROJECT_VERSION = 1923;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ DEVELOPMENT_ASSET_PATHS = KeyboardExtension/vChewingKeyLayout.bundle;
+ DEVELOPMENT_TEAM = "";
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = KeyboardExtension/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = KeyboardExtension;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 12.1;
+ MARKETING_VERSION = 1.3.4;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing.KeyboardExtension;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx;
+ SKIP_INSTALL = YES;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ };
+ name = Debug;
+ };
+ 5BDC5CC027C28E8B00E1CCE2 /* 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++17";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CODE_SIGN_ENTITLEMENTS = KeyboardExtension/KeyboardExtension.entitlements;
+ CODE_SIGN_IDENTITY = "-";
+ CODE_SIGN_STYLE = Automatic;
+ COMBINE_HIDPI_IMAGES = YES;
+ CURRENT_PROJECT_VERSION = 1923;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ DEVELOPMENT_ASSET_PATHS = KeyboardExtension/vChewingKeyLayout.bundle;
+ DEVELOPMENT_TEAM = "";
+ ENABLE_NS_ASSERTIONS = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = KeyboardExtension/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = KeyboardExtension;
+ INFOPLIST_KEY_NSHumanReadableCopyright = "";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks";
+ MACOSX_DEPLOYMENT_TARGET = 12.1;
+ MARKETING_VERSION = 1.3.4;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ PRODUCT_BUNDLE_IDENTIFIER = org.atelierInmu.inputmethod.vChewing.KeyboardExtension;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx;
+ SKIP_INSTALL = YES;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ SWIFT_VERSION = 5.0;
+ };
+ name = Release;
+ };
6A0D4E9915FC0CFA00ABF4B3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -1315,6 +1509,7 @@
6A0D4EBE15FC0D2E00ABF4B3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
@@ -1332,7 +1527,7 @@
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1922;
- DEVELOPMENT_ASSET_PATHS = Source/Resources/KeyLayouts/vChewingKeyLayout.bundle;
+ DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = "";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
@@ -1379,6 +1574,7 @@
6A0D4EBF15FC0D2E00ABF4B3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
@@ -1397,7 +1593,7 @@
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1922;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- DEVELOPMENT_ASSET_PATHS = Source/Resources/KeyLayouts/vChewingKeyLayout.bundle;
+ DEVELOPMENT_ASSET_PATHS = "";
DEVELOPMENT_TEAM = "";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
@@ -1593,6 +1789,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ 5BDC5CC127C28E8B00E1CCE2 /* Build configuration list for PBXNativeTarget "KeyboardExtension" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 5BDC5CBF27C28E8B00E1CCE2 /* Debug */,
+ 5BDC5CC027C28E8B00E1CCE2 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
6A0D4E9715FC0CFA00ABF4B3 /* Build configuration list for PBXProject "vChewing" */ = {
isa = XCConfigurationList;
buildConfigurations = (