├── AbnormalMouse
├── .swift-version
├── AbnormalMouse
│ ├── en.lproj
│ │ └── InfoPlist.strings
│ ├── zh-Hans.lproj
│ │ └── InfoPlist.strings
│ ├── Assets.xcassets
│ │ ├── Contents.json
│ │ ├── icon_app.imageset
│ │ │ ├── 64.pdf
│ │ │ └── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ ├── Content.png
│ │ │ ├── Content_128.png
│ │ │ ├── Content_16.png
│ │ │ ├── Content_256.png
│ │ │ ├── Content_32-1.png
│ │ │ ├── Content_32.png
│ │ │ ├── Content_512.png
│ │ │ ├── Content_64.png
│ │ │ ├── Content_256-1.png
│ │ │ ├── Content_512-1.png
│ │ │ └── Contents.json
│ │ ├── icon_accessibilityOff.imageset
│ │ │ ├── NeedAccessability.pdf
│ │ │ └── Contents.json
│ │ ├── icon_advanced.imageset
│ │ │ └── Contents.json
│ │ ├── icon_general.imageset
│ │ │ ├── Contents.json
│ │ │ └── General.pdf
│ │ ├── icon_menuBar.imageset
│ │ │ ├── Contents.json
│ │ │ └── MenuBar.pdf
│ │ ├── icon_dockSwipe.imageset
│ │ │ └── Contents.json
│ │ ├── icon_moveToScroll.imageset
│ │ │ └── Contents.json
│ │ └── icon_zoomAndRotate.imageset
│ │ │ ├── Contents.json
│ │ │ └── zoomAndRotate.pdf
│ ├── Preview Content
│ │ └── Preview Assets.xcassets
│ │ │ └── Contents.json
│ ├── AbnormalMouse.entitlements
│ ├── Queue.swift
│ ├── StringFiles
│ │ ├── zh-Hans.lproj
│ │ │ ├── DockSwipeSettings.strings
│ │ │ ├── NeedAccessibility.strings
│ │ │ ├── Advanced.strings
│ │ │ ├── Activation.strings
│ │ │ ├── StatusBarMenu.strings
│ │ │ ├── MainView.strings
│ │ │ ├── Shared.strings
│ │ │ ├── General.strings
│ │ │ ├── ScrollSettings.strings
│ │ │ └── ZoomAndRotateSettings.strings
│ │ └── en.lproj
│ │ │ ├── DockSwipeSettings.strings
│ │ │ ├── NeedAccessibility.strings
│ │ │ ├── StatusBarMenu.strings
│ │ │ ├── Activation.strings
│ │ │ ├── Advanced.strings
│ │ │ ├── MainView.strings
│ │ │ ├── Shared.strings
│ │ │ ├── General.strings
│ │ │ ├── ScrollSettings.strings
│ │ │ └── ZoomAndRotateSettings.strings
│ ├── KeyDescription
│ │ ├── MouseCode+Name.swift
│ │ └── KeyboardCode+Name.swift
│ ├── Library
│ │ ├── LaunchAtLoginManager.swift
│ │ ├── ComposableArchitectureExtension
│ │ │ ├── Effect+Extensions.swift
│ │ │ └── SCA+Extentions.swift
│ │ ├── Persistency
│ │ │ ├── Readonly.swift
│ │ │ ├── KeychainValue.swift
│ │ │ └── UserDefault.swift
│ │ ├── MoveMouseDirection.swift
│ │ ├── GestureRecognizer
│ │ │ ├── GestureRecognizer.swift
│ │ │ ├── MouseMovementGestureRecognizer.swift
│ │ │ ├── DoubleTapGestureRecognizer.swift
│ │ │ └── TapHoldGestureRecognizer.swift
│ │ ├── MoveApplication
│ │ │ ├── zh-Hans.lproj
│ │ │ │ └── MoveApplication.strings
│ │ │ └── en.lproj
│ │ │ │ └── MoveApplication.strings
│ │ ├── EventThrottler.swift
│ │ ├── KeyCombinationValidityChecker.swift
│ │ ├── ActivatorConflictChecker.swift
│ │ ├── TipsViewBuilder.swift
│ │ └── License.swift
│ ├── Updater.swift
│ ├── Features
│ │ ├── SharedViews
│ │ │ ├── SettingsPicker.swift
│ │ │ ├── SettingsCheckbox.swift
│ │ │ ├── SettingsSlider.swift
│ │ │ ├── SettingsTipsView.swift
│ │ │ ├── KeyboardEventChecker.swift
│ │ │ └── SettingsPageView.swift
│ │ ├── NeedAccessability
│ │ │ ├── NeedAccessabilityDomain.swift
│ │ │ └── NeedAccessabilityView.swift
│ │ ├── DockSwipe
│ │ │ ├── DockSwipeSettingsView.swift
│ │ │ └── DockSwipeDomain.swift
│ │ ├── Advanced
│ │ │ ├── AdvancedDomain.swift
│ │ │ └── AdvancedView.swift
│ │ └── Activation
│ │ │ ├── ActivationDomain.swift
│ │ │ └── ActivationView.swift
│ ├── Info.plist
│ ├── OverrideController
│ │ ├── OverrideController.swift
│ │ └── EventSequeceController.swift
│ ├── Generated
│ │ └── Assets.swift
│ ├── Style.swift
│ └── Persisted.swift
├── AbnormalMouse.xcodeproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ ├── AbnormalMouseLauncher.xcscheme
│ │ ├── AbnormalMouse.xcscheme
│ │ └── CanvasPreview.xcscheme
├── swiftgen.yml
└── AbnormalMouseTests
│ ├── Info.plist
│ ├── DockSwipeDomainTests.swift
│ ├── ActivatorConflictCheckerTests.swift
│ └── MoveToScrollDomainTests.swift
├── screenshot.png
├── AppDependencies
├── .gitignore
├── Sources
│ └── AppDependencies
│ │ └── License.swift
├── README.md
├── Package_NoLicense.swift
├── Package_NeedLicense.swift
└── .swiftpm
│ └── xcode
│ └── xcshareddata
│ └── xcschemes
│ └── AppDependencies.xcscheme
├── AbnormalMouse.xcworkspace
├── xcshareddata
│ ├── IDEWorkspaceChecks.plist
│ └── swiftpm
│ │ └── Package.resolved
└── contents.xcworkspacedata
├── podfile
├── Makefile
├── Podfile.lock
├── README_CN.md
├── .github
└── FUNDING.yml
├── .swiftformat
├── README.md
├── .gitignore
└── CHANGELOG.md
/AbnormalMouse/.swift-version:
--------------------------------------------------------------------------------
1 | 5.3
2 |
--------------------------------------------------------------------------------
/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intitni/AbnormalMouseApp/HEAD/screenshot.png
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Abnormal Mouse";
2 |
--------------------------------------------------------------------------------
/AppDependencies/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | /.build
3 | /Packages
4 | /*.xcodeproj
5 | xcuserdata/
6 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/zh-Hans.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | "CFBundleDisplayName" = "Abnormal Mouse";
2 |
--------------------------------------------------------------------------------
/AppDependencies/Sources/AppDependencies/License.swift:
--------------------------------------------------------------------------------
1 | struct License {
2 | var text = "Hello, World!"
3 | }
4 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/icon_app.imageset/64.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intitni/AbnormalMouseApp/HEAD/AbnormalMouse/AbnormalMouse/Assets.xcassets/icon_app.imageset/64.pdf
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intitni/AbnormalMouseApp/HEAD/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content.png
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intitni/AbnormalMouseApp/HEAD/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_128.png
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intitni/AbnormalMouseApp/HEAD/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_16.png
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intitni/AbnormalMouseApp/HEAD/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_256.png
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_32-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intitni/AbnormalMouseApp/HEAD/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_32-1.png
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intitni/AbnormalMouseApp/HEAD/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_32.png
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intitni/AbnormalMouseApp/HEAD/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_512.png
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intitni/AbnormalMouseApp/HEAD/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_64.png
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_256-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intitni/AbnormalMouseApp/HEAD/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_256-1.png
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_512-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intitni/AbnormalMouseApp/HEAD/AbnormalMouse/AbnormalMouse/Assets.xcassets/AppIcon.appiconset/Content_512-1.png
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/icon_accessibilityOff.imageset/NeedAccessability.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/intitni/AbnormalMouseApp/HEAD/AbnormalMouse/AbnormalMouse/Assets.xcassets/icon_accessibilityOff.imageset/NeedAccessability.pdf
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/AbnormalMouse.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Queue.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | private let defaultQueue = DispatchQueue(label: "com.intii.abnormalmouse.default")
4 |
5 | extension DispatchQueue {
6 | static var `default`: DispatchQueue { defaultQueue }
7 | }
8 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/AppDependencies/README.md:
--------------------------------------------------------------------------------
1 | # AppDependencies
2 |
3 | This package is used to add swift package dependencies to the app. Please don't use the Xcode built-in method to add dependencies because we may want to swap remote dependencies to use a local package for dev.
4 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/icon_app.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "64.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/StringFiles/zh-Hans.lproj/DockSwipeSettings.strings:
--------------------------------------------------------------------------------
1 | "View.Title" = "四指轻扫";
2 | "View.Introduction" = "这个功能能够将鼠标移动转变为四指轻扫手势,如此一来你就能通过一个普通鼠标在空间之间移动、呼出调度中心了。";
3 | "View.ActivationKeyCombinationTitle" = "按住触发键生效";
4 | "View.Tips.Usage" = "你需要按住触发键,同时移动鼠标以实现轻扫。";
5 |
--------------------------------------------------------------------------------
/AbnormalMouse.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/StringFiles/zh-Hans.lproj/NeedAccessibility.strings:
--------------------------------------------------------------------------------
1 | "View.Title" = "Abnormal Mouse 需要被解放!";
2 |
3 | "View.Introduction" = "这个 app 需要在辅助功能开启之后才能正常工作。在开启辅助功能之后,它将可以将键盘、鼠标事件进行转变,比如说将鼠标的位移转变为滚轮的滚动。";
4 |
5 | "View.EnableButtonTitle" = "开启辅助功能";
6 |
7 | "View.Manual" = "前往 系统偏好设置 > 安全性与隐私 > 隐私 > 辅助功能";
8 |
--------------------------------------------------------------------------------
/podfile:
--------------------------------------------------------------------------------
1 | platform :macos, '10.15'
2 |
3 | inhibit_all_warnings!
4 | use_frameworks!
5 |
6 | workspace 'AbnormalMouse'
7 |
8 | def tool
9 | pod 'SwiftFormat/CLI'
10 | pod 'SwiftGen', '~> 6.0'
11 | pod 'Sparkle', '1.26.0'
12 | end
13 |
14 | target 'AbnormalMouse' do
15 | project 'AbnormalMouse/AbnormalMouse'
16 | tool
17 | end
18 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | NEED_LICENSE ?= false
2 |
3 | bootstrap: needlicense
4 | pod install
5 |
6 | needlicense:
7 | @if [ $(NEED_LICENSE) == true ]; then \
8 | cp AppDependencies/Package_NeedLicense.swift AppDependencies/Package.swift; \
9 | else \
10 | cp AppDependencies/Package_NoLicense.swift AppDependencies/Package.swift;\
11 | fi
12 |
13 | .PHONY: needlicense
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/icon_advanced.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "General.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "template-rendering-intent" : "template"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/icon_general.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "General.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "template-rendering-intent" : "template"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/icon_menuBar.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "MenuBar.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "template-rendering-intent" : "template"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/icon_dockSwipe.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "DockSwipe.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "template-rendering-intent" : "template"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/icon_moveToScroll.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "MoveToScroll.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "template-rendering-intent" : "template"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/icon_zoomAndRotate.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "zoomAndRotate.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "template-rendering-intent" : "template"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/StringFiles/en.lproj/DockSwipeSettings.strings:
--------------------------------------------------------------------------------
1 | "View.Title" = "4-Finger Swipe";
2 | "View.Introduction" = "This feature converts mouse movement into a four-finger swipe, enabling you to switch spaces with a normal mouse.";
3 | "View.ActivationKeyCombinationTitle" = "Active when holding";
4 | "View.Tips.Usage" = "Hold activator then move your mouse to swipe.";
5 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Assets.xcassets/icon_accessibilityOff.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "NeedAccessability.pdf",
5 | "idiom" : "universal"
6 | }
7 | ],
8 | "info" : {
9 | "author" : "xcode",
10 | "version" : 1
11 | },
12 | "properties" : {
13 | "template-rendering-intent" : "original"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/AbnormalMouse/swiftgen.yml:
--------------------------------------------------------------------------------
1 | xcassets:
2 | inputs:
3 | - AbnormalMouse/Assets.xcassets
4 | outputs:
5 | - templateName: swift4
6 | output: AbnormalMouse/Generated/Assets.swift
7 | strings:
8 | inputs: AbnormalMouse/StringFiles/en.lproj
9 | filter: .+\.strings$
10 | outputs:
11 | - templateName: structured-swift4
12 | output: AbnormalMouse/Generated/Strings.swift
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/StringFiles/en.lproj/NeedAccessibility.strings:
--------------------------------------------------------------------------------
1 | "View.Title" = "Abnormal Mouse Needs to Be Free!";
2 |
3 | "View.Introduction" = "The app needs accessibility enabled to read and manipulate keyboard and mouse events.";
4 |
5 | "View.EnableButtonTitle" = "Turn On Accessibility";
6 |
7 | "View.Manual" = "Go to System Preferences > Security & Privacy > Privacy > Accessibility";
8 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/StringFiles/zh-Hans.lproj/Advanced.strings:
--------------------------------------------------------------------------------
1 | "View.Title" = "高级";
2 |
3 | "View.ListenToKeyboardEvent" = "监听键盘事件(重开 app 时生效)";
4 | "View.ListenToKeyboardEventIntroduction" = "默认情况下,这个 app 不会监听键盘事件(除了修饰键)。毕竟让一个 app 监听键盘事件是一件有风险的事情(尽管我们什么都没做)。如果你希望使用键盘按键作为触发键,你可以将它开启,开启后会稍稍提高 Abnormal Mouse 在静默时的 CPU 占用率。\n\n你可以使用像是 ReiKey 这样的工具来判断这个 app 是否还在监听键盘事件。";
5 |
6 | "View.ExcludeListTitle" = "在下列 app 中禁用 Abnormal Mouse";
7 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/KeyDescription/MouseCode+Name.swift:
--------------------------------------------------------------------------------
1 | import CGEventOverride
2 |
3 | extension MouseCode {
4 | var name: String {
5 | switch self {
6 | case .mouseLeft: return L10n.Shared.MouseCodeName.left
7 | case .mouseRight: return L10n.Shared.MouseCodeName.right
8 | case .mouseMiddle: return L10n.Shared.MouseCodeName.middle
9 | case let .mouse(n): return L10n.Shared.MouseCodeName.other(String(n + 1))
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/StringFiles/zh-Hans.lproj/Activation.strings:
--------------------------------------------------------------------------------
1 | "Instruction" = "请输入许可证和邮箱。";
2 | "LicenseKeyTitle" = "许可证";
3 | "EmailTitle" = "邮箱";
4 | "Button.Cancel" = "取消";
5 | "Button.BuyNow" = "前往购买";
6 | "Button.Activating" = "正在激活..";
7 | "Button.Activate" = "激活";
8 |
9 | "FailureReason.NetworkError" = "请检查你的网络并重试。";
10 | "FailureReason.Invalid" = "无法验证你的许可证,请确认许可证和邮箱填写正确。";
11 | "FailureReason.Refunded" = "此许可证已经因为退款而失效了。";
12 | "FailureReason.ReachedLimit" = "此许可证已经达到了激活上限,请在反激活后再尝试激活。";
13 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/StringFiles/zh-Hans.lproj/StatusBarMenu.strings:
--------------------------------------------------------------------------------
1 | "IsEnabled" = "Abnormal Mouse 正在运行中..";
2 | "IsDisabled" = "Abnormal Mouse 已停止运行..";
3 | "ShowPreferences" = "显示设置";
4 | "Quit" = "退出";
5 |
6 | "PurchaseStatus.Fetching" = "正在获取激活状态..";
7 | "PurchaseStatus.Ended" = "试用期已结束。";
8 | "PurchaseStatus.Trial" = "试用期剩余 %@ 天。";
9 | "PurchaseStatus.Activated" = "已激活。";
10 | "PurchaseStatus.CantVerify" = "无法验证激活状态。";
11 | "PurchaseStatus.Refunded" = "已退款。";
12 | "PurchaseStatus.Invalid" = "许可证无效";
13 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Library/LaunchAtLoginManager.swift:
--------------------------------------------------------------------------------
1 | protocol LaunchAtLoginManagerType: AnyObject {
2 | var launchAtLogin: Bool { get set }
3 | }
4 |
5 | final class FakeLaunchAtLoginManager: LaunchAtLoginManagerType {
6 | var launchAtLogin: Bool = false
7 | }
8 |
9 | import LaunchAtLogin
10 |
11 | final class LaunchAtLoginManager: LaunchAtLoginManagerType {
12 | var launchAtLogin: Bool {
13 | get { LaunchAtLogin.isEnabled }
14 | set { LaunchAtLogin.isEnabled = newValue }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/AbnormalMouse/AbnormalMouse/Library/ComposableArchitectureExtension/Effect+Extensions.swift:
--------------------------------------------------------------------------------
1 | import Combine
2 | import ComposableArchitecture
3 |
4 | private var someCancellables = Set()
5 |
6 | extension Effect {
7 | static func fireAsyncAndForget(_ work: @escaping () -> AnyCancellable) -> Effect {
8 | Deferred { () -> Empty