diff --git a/.bartycrouch.toml b/.bartycrouch.toml deleted file mode 100644 index 48901f65..00000000 --- a/.bartycrouch.toml +++ /dev/null @@ -1,35 +0,0 @@ -[update] -tasks = ["interfaces", "code", "normalize"] - -[update.interfaces] -paths = ["."] -defaultToBase = true -ignoreEmptyStrings = true -unstripped = true - -[update.code] -codePaths = ["./MonitorControl"] -localizablePaths = ["."] -defaultToKeys = true -additive = true -unstripped = true -plistArguments = true - -[update.transform] -codePaths = ["./MonitorControl"] -localizablePaths = ["."] -transformer = "foundation" -supportedLanguageEnumPath = "." -typeName = "BartyCrouch" -translateMethodName = "translate" - -[update.normalize] -paths = ["."] -sourceLocale = "en" -harmonizeWithSource = true -sortByKeys = true - -[lint] -paths = ["."] -duplicateKeys = true -emptyValues = false diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 8193d2de..00000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,3 +0,0 @@ -# These are supported funding model platforms - -open_collective: monitorcontrol diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml deleted file mode 100644 index b5d4bb73..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ /dev/null @@ -1,73 +0,0 @@ -name: Bug report -description: Create a report to help us improve -labels: ["Bug"] -assignees: [] -body: - - type: checkboxes - id: checklist - attributes: - label: Before opening the issue, have you...? - description: This is to help us minimize the amount of duplicate issues, which allows us more time for actual development. - options: - - label: Searched for existing issues - required: true - - label: Looked through [the wiki](https://github.com/MonitorControl/MonitorControl/wiki) - required: true - - label: Updated MonitorControl to the latest version (if applicable) - required: true - - type: textarea - id: description - validations: - required: true - attributes: - label: Describe the bug - description: A clear and concise description of what the bug is. - placeholder: "Example: When enabling the Show contrast slider in menu option, the application crashes when clicking on the menu icon." - - type: textarea - id: reproduction - validations: - required: true - attributes: - label: Steps to reproduce - description: Please provide some steps on how we can reproduce the problem. This helps us resolve it faster. - placeholder: | - 1. Go to '...' - 2. Click on '....' - 3. Scroll down to '....' - 4. See error - - type: textarea - id: expected - validations: - required: true - attributes: - label: Expected behavior - description: A clear and concise description of what you expected to happen. - placeholder: "Example: The app shows a contrast slider when clicking the icon in the menu bar and does not crash." - - type: textarea - validations: - required: false - attributes: - label: Anything else? - description: | - Screenshots? Links? References? Anything that will give us more context about the issue you are encountering! - - Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. - - type: textarea - validations: - required: true - attributes: - label: Environment Information (please complete the following information) - description: | - examples: - - **macOS version**: 11.4 Big Sur - - **Mac model**: MacBook Pro (16-inch, 2019) - - **MonitorControl version**: v2.1.0 - - **Monitor(s)**: LG 38GN950, LG 27UN83A - - **Apple Silicon/M1 (yes or no)**: no - value: | - - macOS version: - - Mac model: - - MonitorControl version: - - Monitor(s): - - Apple Silicon/M1 (yes or no): no - render: markdown diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 3ba13e0c..00000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1 +0,0 @@ -blank_issues_enabled: false diff --git a/.github/ISSUE_TEMPLATE/discussion.yml b/.github/ISSUE_TEMPLATE/discussion.yml deleted file mode 100644 index 40ef6faa..00000000 --- a/.github/ISSUE_TEMPLATE/discussion.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: Discussion -description: I want to discuss something that is related to this project -labels: ["Other"] -assignees: [] -body: - - type: checkboxes - id: checklist - attributes: - label: Before opening the issue, have you...? - description: This is to help us minimize the amount of duplicate issues, which allows us more time for actual development. - options: - - label: Searched for existing issues - required: true - - type: textarea - id: discussion - validations: - required: true - attributes: - label: Discussion - description: Feel free to type anything you want to discuss related to the project. Do note that we have a seperate template for questions. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml deleted file mode 100644 index fe34411c..00000000 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Feature request -description: Suggest an idea for this project -labels: ["Feature Request"] -assignees: [] -body: - - type: checkboxes - attributes: - label: Before opening the issue, have you...? - description: This is to help us minimize the amount of duplicate issues, which allows us more time for actual development. - options: - - label: Searched for existing issues - required: true - - type: textarea - validations: - required: true - attributes: - label: Is your feature request related to a problem? Please describe - description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - - type: textarea - validations: - required: true - attributes: - label: Describe the solution you'd like - description: A clear and concise description of what you want to happen. - - type: textarea - validations: - required: true - attributes: - label: Describe alternatives you've considered - description: A clear and concise description of any alternative solutions or features you've considered. - - type: textarea - validations: - required: false - attributes: - label: Anything else? - description: | - Screenshots? Links? References? Anything that will give us more context about the issue you are encountering! - - Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. diff --git a/.github/ISSUE_TEMPLATE/monitor-issue.yml b/.github/ISSUE_TEMPLATE/monitor-issue.yml deleted file mode 100644 index 544e821d..00000000 --- a/.github/ISSUE_TEMPLATE/monitor-issue.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: Monitor Issue -description: MonitorControl is not working as expected on my monitor. -labels: ["Monitor Issue"] -assignees: [] -body: - - type: checkboxes - attributes: - label: Before opening the issue, have you...? - description: This is to help us minimize the amount of duplicate issues, which allows us more time for actual development. - options: - - label: Searched for existing issues - required: true - - label: I have read through [the Monitor-Troubleshooting Wiki](https://github.com/MonitorControl/MonitorControl/wiki/Monitor-Troubleshooting) - required: true - - label: Updated MonitorControl to the latest version (if applicable) - required: true - - type: textarea - validations: - required: true - attributes: - label: Describe the issue - description: A clear and concise description of the problem. - placeholder: Volume & Brightness controls are not working on my LG 38GN950. - - type: textarea - validations: - required: true - attributes: - label: Expected behavior - description: A clear and concise description of what you expected to happen. - - type: textarea - validations: - required: false - attributes: - label: Anything else? - description: | - Screenshots? Links? References? Anything that will give us more context about the issue you are encountering! - - Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. - - type: textarea - validations: - required: false - attributes: - label: Environment Information (please complete the following information) - description: | - examples: - - **macOS version**: 11.4 Big Sur - - **Mac model**: MacBook Pro (16-inch, 2019) - - **MonitorControl version**: v2.1.0 - - **Monitor(s)**: LG 38GN950, LG 27UN83A - - **Monitor Cable(s)/Connection(s)**: -   - Mac Mini -> DisplayPort 2.1 -> LG 38GN950 -   - Mac Mini -> Belkin Thunderbolt 3 Dock Core -> LG 27UN83A - - **Apple Silicon/M1 (yes or no)**: no - value: | - - macOS version: - - Mac model: - - MonitorControl version: - - Monitor(s): - - Monitor Cable(s)/Connection(s): - - Apple Silicon/M1 (yes or no): - render: markdown diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml deleted file mode 100644 index 89e4691a..00000000 --- a/.github/ISSUE_TEMPLATE/question.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: Question -description: I have a question related to this project -labels: ["Question"] -assignees: [] -body: - - type: checkboxes - attributes: - label: Before opening the issue, have you...? - description: This is to help us minimize the amount of duplicate issues, which allows us more time for actual development. - options: - - label: Searched for existing issues - required: true - - type: textarea - validations: - required: true - attributes: - label: Question - description: Ask your question, be specific. The more info you provide, the easier it will be for someone to answer! diff --git a/.github/Icon-1024.png b/.github/Icon-1024.png deleted file mode 100644 index f8dcd074..00000000 Binary files a/.github/Icon-1024.png and /dev/null differ diff --git a/.github/MonitorControl Icon.fig b/.github/MonitorControl Icon.fig deleted file mode 100644 index 6e65225e..00000000 Binary files a/.github/MonitorControl Icon.fig and /dev/null differ diff --git a/.github/screenshot.png b/.github/screenshot.png deleted file mode 100644 index 0730cb1a..00000000 Binary files a/.github/screenshot.png and /dev/null differ diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index b7907f02..00000000 --- a/.github/stale.yml +++ /dev/null @@ -1,19 +0,0 @@ -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 365 -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 7 -# Issues with these labels will never be considered stale -exemptLabels: - - 'Priority: Major' - - 'Priority: Critical' - - 'Priority: Minor' - - Information -# Label to use when marking an issue as stale -staleLabel: 'Status: Abandoned' -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: > - Hey there, it looks like there has been no activity on this issue recently. - Has the issue been fixed, or does it still require attention? - This issue may be closed if no further activity occurs. Thank you for your contributions. -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: false diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index fa7ffd17..00000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: CI - -on: - push: - branches: [master] - pull_request: - branches: [master] - -jobs: - build: - runs-on: macos-11 - steps: - - uses: actions/checkout@v2 - - - name: xcodebuild - uses: sersoft-gmbh/xcodebuild-action@v1.4 - with: - project: MonitorControl.xcodeproj - scheme: MonitorControl - destination: platform=macOS - action: build - lint: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: SwiftLint - uses: norio-nomura/action-swiftlint@3.2.1 - env: - DIFF_BASE: ${{ github.base_ref }} - with: - args: --strict - diff --git a/.gitignore b/.gitignore index 4743566b..fbe810c6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,7 @@ -### Carthage ### -Carthage - ### macOS ### .DS_Store -### Xcode ### -xcuserdata/ -*.xcodeproj/* -!*.xcodeproj/project.pbxproj -!*.xcodeproj/xcshareddata/ -!*.xcworkspace/contents.xcworkspacedata -**/xcshareddata/WorkspaceSettings.xcsettings \ No newline at end of file +# jekyll local +.jekyll-cache +.sass-cache +_site \ No newline at end of file diff --git a/.swift-version b/.swift-version deleted file mode 100644 index 819e07a2..00000000 --- a/.swift-version +++ /dev/null @@ -1 +0,0 @@ -5.0 diff --git a/.swiftformat b/.swiftformat deleted file mode 100644 index 4afae51c..00000000 --- a/.swiftformat +++ /dev/null @@ -1,5 +0,0 @@ ---indent 2 ---nospaceoperators ---self insert ---exponentcase lowercase ---exclude Carthage diff --git a/.swiftlint.yml b/.swiftlint.yml deleted file mode 100644 index 92526482..00000000 --- a/.swiftlint.yml +++ /dev/null @@ -1,11 +0,0 @@ -disabled_rules: - - line_length - - function_body_length - - identifier_name - - trailing_comma -type_body_length: 500 -file_length: 500 -cyclomatic_complexity: - ignores_case_statements: true -opening_brace: - allow_multiline_func: true diff --git a/MonitorControl.xcodeproj/project.pbxproj b/MonitorControl.xcodeproj/project.pbxproj deleted file mode 100644 index a90a530e..00000000 --- a/MonitorControl.xcodeproj/project.pbxproj +++ /dev/null @@ -1,950 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 55; - objects = { - -/* Begin PBXBuildFile section */ - 28D1DDF2227FBE71004CB494 /* NSScreen+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28D1DDF1227FBE71004CB494 /* NSScreen+Extension.swift */; }; - 28D1DDF3227FC8C6004CB494 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 56754EB01D9A4016007BCDC5 /* Assets.xcassets */; }; - 56754EAF1D9A4016007BCDC5 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56754EAE1D9A4016007BCDC5 /* main.swift */; }; - 56754EB11D9A4016007BCDC5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 56754EB01D9A4016007BCDC5 /* Assets.xcassets */; }; - 6C85EFDA22C941B000227EA1 /* DisplayManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C85EFD922C941B000227EA1 /* DisplayManager.swift */; }; - 6CBFE27A23DB266000D1BC41 /* Display.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CBFE27923DB266000D1BC41 /* Display.swift */; }; - 6CBFE27C23DB27A200D1BC41 /* AppleDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CBFE27B23DB27A200D1BC41 /* AppleDisplay.swift */; }; - 6CC260F6256AD8F900613714 /* Preferences+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CC260F5256AD8F900613714 /* Preferences+Extension.swift */; }; - 6CD35F53264FFFC6001F1344 /* SimplyCoreAudio in Frameworks */ = {isa = PBXBuildFile; productRef = 6CD35F52264FFFC6001F1344 /* SimplyCoreAudio */; }; - 6CD35F5626500008001F1344 /* MediaKeyTap in Frameworks */ = {isa = PBXBuildFile; productRef = 6CD35F5526500008001F1344 /* MediaKeyTap */; }; - 6CD35F5C2650003F001F1344 /* Preferences in Frameworks */ = {isa = PBXBuildFile; productRef = 6CD35F5B2650003F001F1344 /* Preferences */; }; - 6CDA0FCF26485A8300F52125 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6CDA0FCD26485A8300F52125 /* Main.storyboard */; }; - AA062E8A26C9A039007E628C /* DisplaysPrefsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA062E8926C9A039007E628C /* DisplaysPrefsViewController.swift */; }; - AA062E8E26CA7BE5007E628C /* DisplaysPrefsCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA062E8D26CA7BE5007E628C /* DisplaysPrefsCellView.swift */; }; - AA16139B26BE772E00DCF027 /* Arm64DDC.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA16139A26BE772E00DCF027 /* Arm64DDC.swift */; }; - AA25F6CF26E680510087F3A2 /* MenuslidersPrefsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA25F6CE26E680510087F3A2 /* MenuslidersPrefsViewController.swift */; }; - AA25F6D126E681D30087F3A2 /* KeyboardPrefsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA25F6D026E681D30087F3A2 /* KeyboardPrefsViewController.swift */; }; - AA25F6D726E68C160087F3A2 /* MediaKeyTapManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA25F6D626E68C160087F3A2 /* MediaKeyTapManager.swift */; }; - AA3B4A2826AE103C00B74CD2 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = AA3B4A2726AE103C00B74CD2 /* README.md */; }; - AA4398A926DD55DA00943F16 /* IntelDDC.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA4398A826DD55DA00943F16 /* IntelDDC.swift */; }; - AA44E703270377C200E06865 /* KeyboardShortcuts in Frameworks */ = {isa = PBXBuildFile; productRef = AA44E702270377C200E06865 /* KeyboardShortcuts */; }; - AA44E7052703790100E06865 /* KeyboardShortcuts+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA44E7042703790100E06865 /* KeyboardShortcuts+Extension.swift */; }; - AA44E70727038F7F00E06865 /* KeyboardShortcutsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA44E70627038F7F00E06865 /* KeyboardShortcutsManager.swift */; }; - AA473EB126DFF8DE0063A181 /* Command.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA473EB026DFF8DE0063A181 /* Command.swift */; }; - AA5314C426EBF5170041D178 /* PrefKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA5314C326EBF5170041D178 /* PrefKey.swift */; }; - AA665A5D26C5892800FEF2C1 /* AboutPrefsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA665A5C26C5892800FEF2C1 /* AboutPrefsViewController.swift */; }; - AA70817C27046B9800CC5625 /* Sparkle in Frameworks */ = {isa = PBXBuildFile; productRef = AA70817B27046B9800CC5625 /* Sparkle */; }; - AA99521726FE25AB00612E07 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA99521626FE25AB00612E07 /* AppDelegate.swift */; }; - AA99521926FE49A300612E07 /* MenuHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA99521826FE49A300612E07 /* MenuHandler.swift */; }; - AA9AE86F26B5BF3D00B6CA65 /* OSD.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA9AE86E26B5BF3D00B6CA65 /* OSD.framework */; }; - AA9AE87126B5BFB700B6CA65 /* CoreDisplay.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA9AE87026B5BFB700B6CA65 /* CoreDisplay.framework */; }; - AACE5E2327050C63006C2A48 /* NSNotification+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AACE5E2227050C63006C2A48 /* NSNotification+Extension.swift */; }; - AADB625A26BC196900DFFAA5 /* DisplayServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AADB625926BC196900DFFAA5 /* DisplayServices.framework */; }; - F01B0699228221B7008E64DB /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = F01B0680228221B6008E64DB /* Localizable.strings */; }; - F01B069F228221B7008E64DB /* SliderHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = F01B068F228221B7008E64DB /* SliderHandler.swift */; }; - F03A8DF21FFBAA6F0034DC27 /* OtherDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = F03A8DF11FFBAA6F0034DC27 /* OtherDisplay.swift */; }; - F0445D3820023E710025AE82 /* MainPrefsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0445D3720023E710025AE82 /* MainPrefsViewController.swift */; }; - F06792EA200A73460066C438 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = F06792E9200A73460066C438 /* main.swift */; }; - F06792F6200A745F0066C438 /* MonitorControlHelper.app in [Login] Copy Helper to start at Login */ = {isa = PBXBuildFile; fileRef = F06792E7200A73460066C438 /* MonitorControlHelper.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - FE4E0896249D584C003A50BB /* OSDUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE4E0895249D584C003A50BB /* OSDUtils.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - F06792F5200A73FA0066C438 /* [Login] Copy Helper to start at Login */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = Contents/Library/LoginItems; - dstSubfolderSpec = 1; - files = ( - F06792F6200A745F0066C438 /* MonitorControlHelper.app in [Login] Copy Helper to start at Login */, - ); - name = "[Login] Copy Helper to start at Login"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 28D1DDF1227FBE71004CB494 /* NSScreen+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSScreen+Extension.swift"; sourceTree = ""; }; - 56754EAB1D9A4016007BCDC5 /* MonitorControl.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MonitorControl.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 56754EAE1D9A4016007BCDC5 /* main.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = main.swift; sourceTree = ""; }; - 56754EB01D9A4016007BCDC5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 6C85EFD922C941B000227EA1 /* DisplayManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisplayManager.swift; sourceTree = ""; }; - 6CBFE27923DB266000D1BC41 /* Display.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Display.swift; sourceTree = ""; }; - 6CBFE27B23DB27A200D1BC41 /* AppleDisplay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppleDisplay.swift; sourceTree = ""; }; - 6CC260F5256AD8F900613714 /* Preferences+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Preferences+Extension.swift"; sourceTree = ""; }; - 6CDA0FCE26485A8300F52125 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 6CDA0FD026485AA100F52125 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Main.strings; sourceTree = ""; }; - AA062E8926C9A039007E628C /* DisplaysPrefsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DisplaysPrefsViewController.swift; sourceTree = ""; }; - AA062E8D26CA7BE5007E628C /* DisplaysPrefsCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DisplaysPrefsCellView.swift; sourceTree = ""; }; - AA16139A26BE772E00DCF027 /* Arm64DDC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Arm64DDC.swift; sourceTree = ""; }; - AA25F6CE26E680510087F3A2 /* MenuslidersPrefsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuslidersPrefsViewController.swift; sourceTree = ""; }; - AA25F6D026E681D30087F3A2 /* KeyboardPrefsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyboardPrefsViewController.swift; sourceTree = ""; }; - AA25F6D626E68C160087F3A2 /* MediaKeyTapManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaKeyTapManager.swift; sourceTree = ""; }; - AA3B4A2726AE103C00B74CD2 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - AA4398A826DD55DA00943F16 /* IntelDDC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntelDDC.swift; sourceTree = ""; }; - AA44E7042703790100E06865 /* KeyboardShortcuts+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "KeyboardShortcuts+Extension.swift"; sourceTree = ""; }; - AA44E70627038F7F00E06865 /* KeyboardShortcutsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyboardShortcutsManager.swift; sourceTree = ""; }; - AA473EB026DFF8DE0063A181 /* Command.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Command.swift; sourceTree = ""; }; - AA5314C326EBF5170041D178 /* PrefKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrefKey.swift; sourceTree = ""; }; - AA665A5C26C5892800FEF2C1 /* AboutPrefsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutPrefsViewController.swift; sourceTree = ""; }; - AA99521626FE25AB00612E07 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - AA99521826FE49A300612E07 /* MenuHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuHandler.swift; sourceTree = ""; }; - AA9AE86E26B5BF3D00B6CA65 /* OSD.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OSD.framework; path = ../../../../../System/Library/PrivateFrameworks/OSD.framework; sourceTree = ""; }; - AA9AE87026B5BFB700B6CA65 /* CoreDisplay.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreDisplay.framework; path = ../../../../../System/Library/Frameworks/CoreDisplay.framework; sourceTree = ""; }; - AA9CB6252704BB440086DC0E /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Main.strings; sourceTree = ""; }; - AA9CB6262704BB440086DC0E /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Localizable.strings; sourceTree = ""; }; - AA9CB6272704C0530086DC0E /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Main.strings; sourceTree = ""; }; - AA9CB6282704C0530086DC0E /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; - AA9CB62A2704C0890086DC0E /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Main.strings; sourceTree = ""; }; - AA9CB62B2704C0890086DC0E /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; - AA9CB62D2704C0D70086DC0E /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Main.strings; sourceTree = ""; }; - AA9CB62E2704C0D70086DC0E /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = ""; }; - AA9CB62F2704C1250086DC0E /* es-419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-419"; path = "es-419.lproj/Main.strings"; sourceTree = ""; }; - AA9CB6302704C1250086DC0E /* es-419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-419"; path = "es-419.lproj/Localizable.strings"; sourceTree = ""; }; - AA9CB6312704C1440086DC0E /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Main.strings; sourceTree = ""; }; - AA9CB6322704C1440086DC0E /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = ""; }; - AA9CB6332704C14D0086DC0E /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Main.strings; sourceTree = ""; }; - AA9CB6342704C14D0086DC0E /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = ""; }; - AA9CB6352704C16F0086DC0E /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Main.strings; sourceTree = ""; }; - AA9CB6362704C16F0086DC0E /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = ""; }; - AA9CB6372704C17A0086DC0E /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Main.strings; sourceTree = ""; }; - AA9CB6382704C17A0086DC0E /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = ""; }; - AA9CB6392704C1890086DC0E /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Main.strings; sourceTree = ""; }; - AA9CB63A2704C1890086DC0E /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; - AA9CB63B2704C1900086DC0E /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Main.strings; sourceTree = ""; }; - AA9CB63C2704C1900086DC0E /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = ""; }; - AA9CB63D2704C1970086DC0E /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Main.strings; sourceTree = ""; }; - AA9CB63E2704C1970086DC0E /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Localizable.strings; sourceTree = ""; }; - AA9CB63F2704C1A40086DC0E /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Main.strings"; sourceTree = ""; }; - AA9CB6402704C1A40086DC0E /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; - AA9CB6412704C1B80086DC0E /* zh-Hant-TW */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant-TW"; path = "zh-Hant-TW.lproj/Main.strings"; sourceTree = ""; }; - AA9CB6422704C1B80086DC0E /* zh-Hant-TW */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant-TW"; path = "zh-Hant-TW.lproj/Localizable.strings"; sourceTree = ""; }; - AACE5E2227050C63006C2A48 /* NSNotification+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSNotification+Extension.swift"; sourceTree = ""; }; - AADB625926BC196900DFFAA5 /* DisplayServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DisplayServices.framework; path = ../../../../../System/Library/PrivateFrameworks/DisplayServices.framework; sourceTree = ""; }; - F01B0682228221B6008E64DB /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; - F01B0685228221B6008E64DB /* Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Bridging-Header.h"; sourceTree = ""; }; - F01B0686228221B6008E64DB /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - F01B068F228221B7008E64DB /* SliderHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SliderHandler.swift; sourceTree = ""; }; - F03A8DF11FFBAA6F0034DC27 /* OtherDisplay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OtherDisplay.swift; sourceTree = ""; }; - F0445D3720023E710025AE82 /* MainPrefsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainPrefsViewController.swift; sourceTree = ""; }; - F06792E7200A73460066C438 /* MonitorControlHelper.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MonitorControlHelper.app; sourceTree = BUILT_PRODUCTS_DIR; }; - F06792E9200A73460066C438 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; - F06792F0200A73470066C438 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - F06792F1200A73470066C438 /* MonitorControlHelper.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = MonitorControlHelper.entitlements; sourceTree = ""; }; - FE4E0895249D584C003A50BB /* OSDUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OSDUtils.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 56754EA81D9A4016007BCDC5 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - AA9AE87126B5BFB700B6CA65 /* CoreDisplay.framework in Frameworks */, - AA70817C27046B9800CC5625 /* Sparkle in Frameworks */, - AA44E703270377C200E06865 /* KeyboardShortcuts in Frameworks */, - 6CD35F53264FFFC6001F1344 /* SimplyCoreAudio in Frameworks */, - 6CD35F5626500008001F1344 /* MediaKeyTap in Frameworks */, - AA9AE86F26B5BF3D00B6CA65 /* OSD.framework in Frameworks */, - 6CD35F5C2650003F001F1344 /* Preferences in Frameworks */, - AADB625A26BC196900DFFAA5 /* DisplayServices.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F06792E4200A73460066C438 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 28D1DDD1227FB759004CB494 /* Frameworks */ = { - isa = PBXGroup; - children = ( - AA9AE86E26B5BF3D00B6CA65 /* OSD.framework */, - AA9AE87026B5BFB700B6CA65 /* CoreDisplay.framework */, - AADB625926BC196900DFFAA5 /* DisplayServices.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 28D1DDEB227FB8E9004CB494 /* Extensions */ = { - isa = PBXGroup; - children = ( - 28D1DDF1227FBE71004CB494 /* NSScreen+Extension.swift */, - 6CC260F5256AD8F900613714 /* Preferences+Extension.swift */, - AA44E7042703790100E06865 /* KeyboardShortcuts+Extension.swift */, - AACE5E2227050C63006C2A48 /* NSNotification+Extension.swift */, - ); - path = Extensions; - sourceTree = ""; - }; - 56754EA21D9A4016007BCDC5 = { - isa = PBXGroup; - children = ( - AA3B4A2726AE103C00B74CD2 /* README.md */, - 28D1DDD1227FB759004CB494 /* Frameworks */, - 56754EAD1D9A4016007BCDC5 /* MonitorControl */, - F06792E8200A73460066C438 /* MonitorControlHelper */, - 56754EAC1D9A4016007BCDC5 /* Products */, - ); - indentWidth = 2; - sourceTree = ""; - }; - 56754EAC1D9A4016007BCDC5 /* Products */ = { - isa = PBXGroup; - children = ( - 56754EAB1D9A4016007BCDC5 /* MonitorControl.app */, - F06792E7200A73460066C438 /* MonitorControlHelper.app */, - ); - name = Products; - sourceTree = ""; - }; - 56754EAD1D9A4016007BCDC5 /* MonitorControl */ = { - isa = PBXGroup; - children = ( - F01B0686228221B6008E64DB /* Info.plist */, - 56754EB01D9A4016007BCDC5 /* Assets.xcassets */, - 56754EAE1D9A4016007BCDC5 /* main.swift */, - 6C6C34F423DB25BF00C0E9CB /* Model */, - F01B067F228221B6008E64DB /* Support */, - AA9D231226EE0B25007E22E7 /* Enums */, - 28D1DDEB227FB8E9004CB494 /* Extensions */, - F01B0687228221B6008E64DB /* UI */, - F0445D3620023D5B0025AE82 /* View Controllers */, - ); - path = MonitorControl; - sourceTree = ""; - }; - 6C6C34F423DB25BF00C0E9CB /* Model */ = { - isa = PBXGroup; - children = ( - 6CBFE27923DB266000D1BC41 /* Display.swift */, - 6CBFE27B23DB27A200D1BC41 /* AppleDisplay.swift */, - F03A8DF11FFBAA6F0034DC27 /* OtherDisplay.swift */, - ); - path = Model; - sourceTree = ""; - }; - AA9D231226EE0B25007E22E7 /* Enums */ = { - isa = PBXGroup; - children = ( - AA473EB026DFF8DE0063A181 /* Command.swift */, - AA5314C326EBF5170041D178 /* PrefKey.swift */, - ); - path = Enums; - sourceTree = ""; - }; - F01B067F228221B6008E64DB /* Support */ = { - isa = PBXGroup; - children = ( - F01B0685228221B6008E64DB /* Bridging-Header.h */, - AA99521626FE25AB00612E07 /* AppDelegate.swift */, - AA99521826FE49A300612E07 /* MenuHandler.swift */, - F01B068F228221B7008E64DB /* SliderHandler.swift */, - 6C85EFD922C941B000227EA1 /* DisplayManager.swift */, - AA25F6D626E68C160087F3A2 /* MediaKeyTapManager.swift */, - AA44E70627038F7F00E06865 /* KeyboardShortcutsManager.swift */, - AA16139A26BE772E00DCF027 /* Arm64DDC.swift */, - AA4398A826DD55DA00943F16 /* IntelDDC.swift */, - FE4E0895249D584C003A50BB /* OSDUtils.swift */, - ); - path = Support; - sourceTree = ""; - }; - F01B0687228221B6008E64DB /* UI */ = { - isa = PBXGroup; - children = ( - F01B0680228221B6008E64DB /* Localizable.strings */, - 6CDA0FCD26485A8300F52125 /* Main.storyboard */, - ); - path = UI; - sourceTree = ""; - }; - F0445D3620023D5B0025AE82 /* View Controllers */ = { - isa = PBXGroup; - children = ( - F0445D3720023E710025AE82 /* MainPrefsViewController.swift */, - AA25F6CE26E680510087F3A2 /* MenuslidersPrefsViewController.swift */, - AA25F6D026E681D30087F3A2 /* KeyboardPrefsViewController.swift */, - AA062E8926C9A039007E628C /* DisplaysPrefsViewController.swift */, - AA062E8D26CA7BE5007E628C /* DisplaysPrefsCellView.swift */, - AA665A5C26C5892800FEF2C1 /* AboutPrefsViewController.swift */, - ); - path = "View Controllers"; - sourceTree = ""; - }; - F06792E8200A73460066C438 /* MonitorControlHelper */ = { - isa = PBXGroup; - children = ( - F06792F0200A73470066C438 /* Info.plist */, - F06792E9200A73460066C438 /* main.swift */, - F06792F1200A73470066C438 /* MonitorControlHelper.entitlements */, - ); - path = MonitorControlHelper; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 56754EAA1D9A4016007BCDC5 /* MonitorControl */ = { - isa = PBXNativeTarget; - buildConfigurationList = 56754EB81D9A4016007BCDC5 /* Build configuration list for PBXNativeTarget "MonitorControl" */; - buildPhases = ( - 28D1DE0C227FCFAF004CB494 /* [Format] Run SwiftFormat */, - F03A8DF01FFB9D4C0034DC27 /* [Lint] Run SwiftLint */, - 6CB1BDB2253C7EBE00B52124 /* [Localization] Run BartyCrouch */, - 56754EA71D9A4016007BCDC5 /* Sources */, - 56754EA81D9A4016007BCDC5 /* Frameworks */, - 56754EA91D9A4016007BCDC5 /* Resources */, - F06792F5200A73FA0066C438 /* [Login] Copy Helper to start at Login */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = MonitorControl; - packageProductDependencies = ( - 6CD35F52264FFFC6001F1344 /* SimplyCoreAudio */, - 6CD35F5526500008001F1344 /* MediaKeyTap */, - 6CD35F5B2650003F001F1344 /* Preferences */, - AA44E702270377C200E06865 /* KeyboardShortcuts */, - AA70817B27046B9800CC5625 /* Sparkle */, - ); - productName = MonitorControl.OSX; - productReference = 56754EAB1D9A4016007BCDC5 /* MonitorControl.app */; - productType = "com.apple.product-type.application"; - }; - F06792E6200A73460066C438 /* MonitorControlHelper */ = { - isa = PBXNativeTarget; - buildConfigurationList = F06792F4200A73470066C438 /* Build configuration list for PBXNativeTarget "MonitorControlHelper" */; - buildPhases = ( - F06792E3200A73460066C438 /* Sources */, - F06792E4200A73460066C438 /* Frameworks */, - F06792E5200A73460066C438 /* Resources */, - 28F6A5802283515F00A4ADCD /* Increase Build Number */, - 28F6A5822283548F00A4ADCD /* Sync Version Numbers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = MonitorControlHelper; - productName = MonitorControlHelper; - productReference = F06792E7200A73460066C438 /* MonitorControlHelper.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 56754EA31D9A4016007BCDC5 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1250; - ORGANIZATIONNAME = MonitorControl; - TargetAttributes = { - 56754EAA1D9A4016007BCDC5 = { - CreatedOnToolsVersion = 8.0; - LastSwiftMigration = 1020; - ProvisioningStyle = Automatic; - }; - F06792E6200A73460066C438 = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 1020; - ProvisioningStyle = Automatic; - }; - }; - }; - buildConfigurationList = 56754EA61D9A4016007BCDC5 /* Build configuration list for PBXProject "MonitorControl" */; - compatibilityVersion = "Xcode 13.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - hu, - de, - fr, - it, - "es-419", - ja, - ko, - nl, - pl, - ru, - tr, - uk, - "zh-Hans", - "zh-Hant-TW", - ); - mainGroup = 56754EA21D9A4016007BCDC5; - packageReferences = ( - 6CD35F51264FFFC6001F1344 /* XCRemoteSwiftPackageReference "SimplyCoreAudio" */, - 6CD35F5426500008001F1344 /* XCRemoteSwiftPackageReference "MediaKeyTap" */, - 6CD35F5A2650003F001F1344 /* XCRemoteSwiftPackageReference "Preferences" */, - AA44E701270377C200E06865 /* XCRemoteSwiftPackageReference "KeyboardShortcuts" */, - AA70817A27046B9800CC5625 /* XCRemoteSwiftPackageReference "Sparkle" */, - ); - productRefGroup = 56754EAC1D9A4016007BCDC5 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 56754EAA1D9A4016007BCDC5 /* MonitorControl */, - F06792E6200A73460066C438 /* MonitorControlHelper */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 56754EA91D9A4016007BCDC5 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 56754EB11D9A4016007BCDC5 /* Assets.xcassets in Resources */, - 6CDA0FCF26485A8300F52125 /* Main.storyboard in Resources */, - AA3B4A2826AE103C00B74CD2 /* README.md in Resources */, - F01B0699228221B7008E64DB /* Localizable.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F06792E5200A73460066C438 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 28D1DDF3227FC8C6004CB494 /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 28D1DE0C227FCFAF004CB494 /* [Format] Run SwiftFormat */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 12; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "[Format] Run SwiftFormat"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "if which swiftformat >/dev/null; then\n swiftformat .\nelse\n echo \"warning: SwiftFormat not installed, download from https://github.com/nicklockwood/SwiftFormat\" >&2\nfi\n"; - }; - 28F6A5802283515F00A4ADCD /* Increase Build Number */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "Increase Build Number"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = "/bin/bash -euo pipefail"; - shellScript = "files_have_changed() {\n test -n \"$(find \"${1}\" ! -path '*xcuserdata*' ! -path '*.git' ! -path '*.git/*' -newer \"${2}\")\"\n}\n\nif files_have_changed \"${PROJECT_DIR}\" \"${INFOPLIST_FILE}\"; then\n build_number=\"$(/usr/libexec/PlistBuddy -c \"Print CFBundleVersion\" \"${INFOPLIST_FILE}\")\"\n new_build_number=\"$((build_number + 1))\"\n\n /usr/libexec/PlistBuddy -c \"Set :CFBundleVersion ${new_build_number}\" \"${INFOPLIST_FILE/Helper/}\"\n /usr/libexec/PlistBuddy -c \"Set :CFBundleVersion ${new_build_number}\" \"${INFOPLIST_FILE}\"\nfi\n"; - }; - 28F6A5822283548F00A4ADCD /* Sync Version Numbers */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "Sync Version Numbers"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = "/bin/bash -euo pipefail"; - shellScript = "version_number=\"$(/usr/libexec/PlistBuddy -c \"Print CFBundleShortVersionString\" \"${INFOPLIST_FILE/Helper/}\")\"\n\n/usr/libexec/PlistBuddy -c \"Set :CFBundleShortVersionString ${version_number}\" \"${INFOPLIST_FILE/Helper/}\"\n/usr/libexec/PlistBuddy -c \"Set :CFBundleShortVersionString ${version_number}\" \"${INFOPLIST_FILE}\"\n"; - }; - 6CB1BDB2253C7EBE00B52124 /* [Localization] Run BartyCrouch */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 12; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = "[Localization] Run BartyCrouch"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "if which bartycrouch > /dev/null; then\n bartycrouch update -x\n bartycrouch lint -x\nelse\n echo \"warning: BartyCrouch not installed, download it from https://github.com/Flinesoft/BartyCrouch\"\nfi\n"; - }; - F03A8DF01FFB9D4C0034DC27 /* [Lint] Run SwiftLint */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 12; - files = ( - ); - inputPaths = ( - ); - name = "[Lint] Run SwiftLint"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "if which swiftlint >/dev/null; then\n swiftlint\nelse\n echo \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\" >&2\nfi\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 56754EA71D9A4016007BCDC5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - AA5314C426EBF5170041D178 /* PrefKey.swift in Sources */, - 56754EAF1D9A4016007BCDC5 /* main.swift in Sources */, - AA062E8A26C9A039007E628C /* DisplaysPrefsViewController.swift in Sources */, - AA473EB126DFF8DE0063A181 /* Command.swift in Sources */, - 6CC260F6256AD8F900613714 /* Preferences+Extension.swift in Sources */, - AA99521926FE49A300612E07 /* MenuHandler.swift in Sources */, - AA665A5D26C5892800FEF2C1 /* AboutPrefsViewController.swift in Sources */, - 6CBFE27C23DB27A200D1BC41 /* AppleDisplay.swift in Sources */, - AA062E8E26CA7BE5007E628C /* DisplaysPrefsCellView.swift in Sources */, - AA25F6D726E68C160087F3A2 /* MediaKeyTapManager.swift in Sources */, - FE4E0896249D584C003A50BB /* OSDUtils.swift in Sources */, - 6CBFE27A23DB266000D1BC41 /* Display.swift in Sources */, - AA44E70727038F7F00E06865 /* KeyboardShortcutsManager.swift in Sources */, - F03A8DF21FFBAA6F0034DC27 /* OtherDisplay.swift in Sources */, - AA44E7052703790100E06865 /* KeyboardShortcuts+Extension.swift in Sources */, - AA16139B26BE772E00DCF027 /* Arm64DDC.swift in Sources */, - F0445D3820023E710025AE82 /* MainPrefsViewController.swift in Sources */, - 28D1DDF2227FBE71004CB494 /* NSScreen+Extension.swift in Sources */, - AA99521726FE25AB00612E07 /* AppDelegate.swift in Sources */, - AA25F6D126E681D30087F3A2 /* KeyboardPrefsViewController.swift in Sources */, - F01B069F228221B7008E64DB /* SliderHandler.swift in Sources */, - AACE5E2327050C63006C2A48 /* NSNotification+Extension.swift in Sources */, - AA25F6CF26E680510087F3A2 /* MenuslidersPrefsViewController.swift in Sources */, - AA4398A926DD55DA00943F16 /* IntelDDC.swift in Sources */, - 6C85EFDA22C941B000227EA1 /* DisplayManager.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F06792E3200A73460066C438 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F06792EA200A73460066C438 /* main.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 6CDA0FCD26485A8300F52125 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 6CDA0FCE26485A8300F52125 /* Base */, - 6CDA0FD026485AA100F52125 /* en */, - AA9CB6252704BB440086DC0E /* hu */, - AA9CB6272704C0530086DC0E /* de */, - AA9CB62A2704C0890086DC0E /* fr */, - AA9CB62D2704C0D70086DC0E /* it */, - AA9CB62F2704C1250086DC0E /* es-419 */, - AA9CB6312704C1440086DC0E /* ja */, - AA9CB6332704C14D0086DC0E /* ko */, - AA9CB6352704C16F0086DC0E /* nl */, - AA9CB6372704C17A0086DC0E /* pl */, - AA9CB6392704C1890086DC0E /* ru */, - AA9CB63B2704C1900086DC0E /* tr */, - AA9CB63D2704C1970086DC0E /* uk */, - AA9CB63F2704C1A40086DC0E /* zh-Hans */, - AA9CB6412704C1B80086DC0E /* zh-Hant-TW */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - F01B0680228221B6008E64DB /* Localizable.strings */ = { - isa = PBXVariantGroup; - children = ( - F01B0682228221B6008E64DB /* en */, - AA9CB6262704BB440086DC0E /* hu */, - AA9CB6282704C0530086DC0E /* de */, - AA9CB62B2704C0890086DC0E /* fr */, - AA9CB62E2704C0D70086DC0E /* it */, - AA9CB6302704C1250086DC0E /* es-419 */, - AA9CB6322704C1440086DC0E /* ja */, - AA9CB6342704C14D0086DC0E /* ko */, - AA9CB6362704C16F0086DC0E /* nl */, - AA9CB6382704C17A0086DC0E /* pl */, - AA9CB63A2704C1890086DC0E /* ru */, - AA9CB63C2704C1900086DC0E /* tr */, - AA9CB63E2704C1970086DC0E /* uk */, - AA9CB6402704C1A40086DC0E /* zh-Hans */, - AA9CB6422704C1B80086DC0E /* zh-Hant-TW */, - ); - name = Localizable.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 56754EB61D9A4016007BCDC5 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/**"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 56754EB71D9A4016007BCDC5 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/**"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Release; - }; - 56754EB91D9A4016007BCDC5 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1179; - DEVELOPMENT_TEAM = ""; - ENABLE_HARDENED_RUNTIME = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(PROJECT_DIR)/**", - "/System/Library/PrivateFrameworks/**", - ); - INFOPLIST_FILE = MonitorControl/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 4.0.0; - PRODUCT_BUNDLE_IDENTIFIER = me.guillaumeb.MonitorControl; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "MonitorControl/Support/Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - SYSTEM_FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks", - ); - }; - name = Debug; - }; - 56754EBA1D9A4016007BCDC5 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1179; - DEVELOPMENT_TEAM = ""; - ENABLE_HARDENED_RUNTIME = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(PROJECT_DIR)/**", - "/System/Library/PrivateFrameworks/**", - ); - INFOPLIST_FILE = MonitorControl/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 4.0.0; - PRODUCT_BUNDLE_IDENTIFIER = me.guillaumeb.MonitorControl; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "MonitorControl/Support/Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - SYSTEM_FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks", - ); - }; - name = Release; - }; - F06792F2200A73470066C438 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_ENTITLEMENTS = MonitorControlHelper/MonitorControlHelper.entitlements; - CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 631; - DEVELOPMENT_TEAM = ""; - ENABLE_HARDENED_RUNTIME = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = MonitorControlHelper/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 4.0.0; - PRODUCT_BUNDLE_IDENTIFIER = me.guillaumeb.MonitorControlHelper; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - F06792F3200A73470066C438 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_ENTITLEMENTS = MonitorControlHelper/MonitorControlHelper.entitlements; - CODE_SIGN_IDENTITY = "-"; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 631; - DEVELOPMENT_TEAM = ""; - ENABLE_HARDENED_RUNTIME = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = MonitorControlHelper/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - MACOSX_DEPLOYMENT_TARGET = 10.15; - MARKETING_VERSION = 4.0.0; - PRODUCT_BUNDLE_IDENTIFIER = me.guillaumeb.MonitorControlHelper; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 56754EA61D9A4016007BCDC5 /* Build configuration list for PBXProject "MonitorControl" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 56754EB61D9A4016007BCDC5 /* Debug */, - 56754EB71D9A4016007BCDC5 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 56754EB81D9A4016007BCDC5 /* Build configuration list for PBXNativeTarget "MonitorControl" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 56754EB91D9A4016007BCDC5 /* Debug */, - 56754EBA1D9A4016007BCDC5 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F06792F4200A73470066C438 /* Build configuration list for PBXNativeTarget "MonitorControlHelper" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F06792F2200A73470066C438 /* Debug */, - F06792F3200A73470066C438 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - -/* Begin XCRemoteSwiftPackageReference section */ - 6CD35F51264FFFC6001F1344 /* XCRemoteSwiftPackageReference "SimplyCoreAudio" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/rnine/SimplyCoreAudio"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 4.0.1; - }; - }; - 6CD35F5426500008001F1344 /* XCRemoteSwiftPackageReference "MediaKeyTap" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/MonitorControl/MediaKeyTap"; - requirement = { - branch = master; - kind = branch; - }; - }; - 6CD35F5A2650003F001F1344 /* XCRemoteSwiftPackageReference "Preferences" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/sindresorhus/Preferences"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 2.3.0; - }; - }; - AA44E701270377C200E06865 /* XCRemoteSwiftPackageReference "KeyboardShortcuts" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/sindresorhus/KeyboardShortcuts"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 1.0.0; - }; - }; - AA70817A27046B9800CC5625 /* XCRemoteSwiftPackageReference "Sparkle" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/sparkle-project/Sparkle"; - requirement = { - branch = 2.x; - kind = branch; - }; - }; -/* End XCRemoteSwiftPackageReference section */ - -/* Begin XCSwiftPackageProductDependency section */ - 6CD35F52264FFFC6001F1344 /* SimplyCoreAudio */ = { - isa = XCSwiftPackageProductDependency; - package = 6CD35F51264FFFC6001F1344 /* XCRemoteSwiftPackageReference "SimplyCoreAudio" */; - productName = SimplyCoreAudio; - }; - 6CD35F5526500008001F1344 /* MediaKeyTap */ = { - isa = XCSwiftPackageProductDependency; - package = 6CD35F5426500008001F1344 /* XCRemoteSwiftPackageReference "MediaKeyTap" */; - productName = MediaKeyTap; - }; - 6CD35F5B2650003F001F1344 /* Preferences */ = { - isa = XCSwiftPackageProductDependency; - package = 6CD35F5A2650003F001F1344 /* XCRemoteSwiftPackageReference "Preferences" */; - productName = Preferences; - }; - AA44E702270377C200E06865 /* KeyboardShortcuts */ = { - isa = XCSwiftPackageProductDependency; - package = AA44E701270377C200E06865 /* XCRemoteSwiftPackageReference "KeyboardShortcuts" */; - productName = KeyboardShortcuts; - }; - AA70817B27046B9800CC5625 /* Sparkle */ = { - isa = XCSwiftPackageProductDependency; - package = AA70817A27046B9800CC5625 /* XCRemoteSwiftPackageReference "Sparkle" */; - productName = Sparkle; - }; -/* End XCSwiftPackageProductDependency section */ - }; - rootObject = 56754EA31D9A4016007BCDC5 /* Project object */; -} diff --git a/MonitorControl.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/MonitorControl.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a6..00000000 --- a/MonitorControl.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/MonitorControl.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/MonitorControl.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/MonitorControl.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/MonitorControl.xcodeproj/xcshareddata/xcschemes/MonitorControl.xcscheme b/MonitorControl.xcodeproj/xcshareddata/xcschemes/MonitorControl.xcscheme deleted file mode 100644 index 6cf2cc58..00000000 --- a/MonitorControl.xcodeproj/xcshareddata/xcschemes/MonitorControl.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Contents.json b/MonitorControl/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 959fa98b..00000000 --- a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "images" : [ - { - "filename" : "Icon-16.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "16x16" - }, - { - "filename" : "Icon-33.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "16x16" - }, - { - "filename" : "Icon-32.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "32x32" - }, - { - "filename" : "Icon-64.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "32x32" - }, - { - "filename" : "Icon-128.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "128x128" - }, - { - "filename" : "Icon-257.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "128x128" - }, - { - "filename" : "Icon-256.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "256x256" - }, - { - "filename" : "Icon-513.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "256x256" - }, - { - "filename" : "Icon-512.png", - "idiom" : "mac", - "scale" : "1x", - "size" : "512x512" - }, - { - "filename" : "Icon-1024.png", - "idiom" : "mac", - "scale" : "2x", - "size" : "512x512" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-1024.png b/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-1024.png deleted file mode 100644 index f8dcd074..00000000 Binary files a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-1024.png and /dev/null differ diff --git a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-128.png b/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-128.png deleted file mode 100644 index a62a61fa..00000000 Binary files a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-128.png and /dev/null differ diff --git a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-16.png b/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-16.png deleted file mode 100644 index 42b9fa83..00000000 Binary files a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-16.png and /dev/null differ diff --git a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-256.png b/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-256.png deleted file mode 100644 index cfa72741..00000000 Binary files a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-256.png and /dev/null differ diff --git a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-257.png b/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-257.png deleted file mode 100644 index cfa72741..00000000 Binary files a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-257.png and /dev/null differ diff --git a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-32.png b/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-32.png deleted file mode 100644 index 309c15f7..00000000 Binary files a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-32.png and /dev/null differ diff --git a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-33.png b/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-33.png deleted file mode 100644 index 309c15f7..00000000 Binary files a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-33.png and /dev/null differ diff --git a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-512.png b/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-512.png deleted file mode 100644 index c2e466a7..00000000 Binary files a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-512.png and /dev/null differ diff --git a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-513.png b/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-513.png deleted file mode 100644 index c2e466a7..00000000 Binary files a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-513.png and /dev/null differ diff --git a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-64.png b/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-64.png deleted file mode 100644 index 72cd79b0..00000000 Binary files a/MonitorControl/Assets.xcassets/AppIcon.appiconset/Icon-64.png and /dev/null differ diff --git a/MonitorControl/Assets.xcassets/Contents.json b/MonitorControl/Assets.xcassets/Contents.json deleted file mode 100644 index 73c00596..00000000 --- a/MonitorControl/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/MonitorControl/Assets.xcassets/status.imageset/Contents.json b/MonitorControl/Assets.xcassets/status.imageset/Contents.json deleted file mode 100644 index 719188ed..00000000 --- a/MonitorControl/Assets.xcassets/status.imageset/Contents.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "status.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "status@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "template-rendering-intent" : "template" - } -} \ No newline at end of file diff --git a/MonitorControl/Assets.xcassets/status.imageset/status.png b/MonitorControl/Assets.xcassets/status.imageset/status.png deleted file mode 100644 index 44e75522..00000000 Binary files a/MonitorControl/Assets.xcassets/status.imageset/status.png and /dev/null differ diff --git a/MonitorControl/Assets.xcassets/status.imageset/status@2x.png b/MonitorControl/Assets.xcassets/status.imageset/status@2x.png deleted file mode 100644 index cd07318f..00000000 Binary files a/MonitorControl/Assets.xcassets/status.imageset/status@2x.png and /dev/null differ diff --git a/MonitorControl/Enums/Command.swift b/MonitorControl/Enums/Command.swift deleted file mode 100644 index d6d1b7c8..00000000 --- a/MonitorControl/Enums/Command.swift +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -enum Command: UInt8 { - case none = 0 - - // Display Control - case horizontalFrequency = 0xAC - case verticalFrequency = 0xAE - case sourceColorCoding = 0xB5 - case displayUsageTime = 0xC0 - case displayControllerId = 0xC8 - case displayFirmwareLevel = 0xC9 - case osdLanguage = 0xCC - case powerMode = 0xD6 - case imageMode = 0xDB - case vcpVersion = 0xDF - - // Geometry - case horizontalPosition = 0x20 - case horizontalSize = 0x22 - case horizontalPincushion = 0x24 - case horizontalPincushionBalance = 0x26 - case horizontalConvergenceRB = 0x28 - case horizontalConvergenceMG = 0x29 - case horizontalLinearity = 0x2A - case horizontalLinearityBalance = 0x2C - case verticalPosition = 0x30 - case verticalSize = 0x32 - case verticalPincushion = 0x34 - case verticalPincushionBalance = 0x36 - case verticalConvergenceRB = 0x38 - case verticalConvergenceMG = 0x39 - case verticalLinearity = 0x3A - case verticalLinearityBalance = 0x3C - case horizontalParallelogram = 0x40 - case verticalParallelogram = 0x41 - case horizontalKeystone = 0x42 - case verticalKeystone = 0x43 - case rotation = 0x44 - case topCornerFlare = 0x46 - case topCornerHook = 0x48 - case bottomCornerFlare = 0x4A - case bottomCornerHook = 0x4C - case horizontalMirror = 0x82 - case verticalMirror = 0x84 - case displayScaling = 0x86 - case windowPositionTopLeftX = 0x95 - case windowPositionTopLeftY = 0x96 - case windowPositionBottomRightX = 0x97 - case windowPositionBottomRightY = 0x98 - case scanMode = 0xDA - - // Miscellaneous - case degauss = 0x01 - case newControlValue = 0x02 - case softControls = 0x03 - case activeControl = 0x52 - case performancePreservation = 0x54 - case inputSelect = 0x60 - case ambientLightSensor = 0x66 - case remoteProcedureCall = 0x76 - case displayIdentificationOnDataOperation = 0x78 - case tvChannelUpDown = 0x8B - case flatPanelSubPixelLayout = 0xB2 - case displayTechnologyType = 0xB6 - case displayDescriptorLength = 0xC2 - case transmitDisplayDescriptor = 0xC3 - case enableDisplayOfDisplayDescriptor = 0xC4 - case applicationEnableKey = 0xC6 - case displayEnableKey = 0xC7 - case statusIndicator = 0xCD - case auxiliaryDisplaySize = 0xCE - case auxiliaryDisplayData = 0xCF - case outputSelect = 0xD0 - case assetTag = 0xD2 - case auxiliaryPowerOutput = 0xD7 - case scratchPad = 0xDE - - // Audio - case audioSpeakerVolume = 0x62 - case speakerSelect = 0x63 - case audioMicrophoneVolume = 0x64 - case audioJackConnectionStatus = 0x65 - case audioMuteScreenBlank = 0x8D - case audioTreble = 0x8F - case audioBass = 0x91 - case audioBalanceLR = 0x93 - case audioProcessorMode = 0x94 - - // OSD/Button Event Control - case osd = 0xCA - - // Image Adjustment - case sixAxisHueControlBlue = 0x9F - case sixAxisHueControlCyan = 0x9E - case sixAxisHueControlGreen = 0x9D - case sixAxisHueControlMagenta = 0xA0 - case sixAxisHueControlRed = 0x9B - case sixAxisHueControlYellow = 0x9C - case sixAxisSaturationControlBlue = 0x5D - case sixAxisSaturationControlCyan = 0x5C - case sixAxisSaturationControlGreen = 0x5B - case sixAxisSaturationControlMagenta = 0x5E - case sixAxisSaturationControlRed = 0x59 - case sixAxisSaturationControlYellow = 0x5A - case adjustZoom = 0x7C - case autoColorSetup = 0x1F - case autoSetup = 0x1E - case autoSetupOnOff = 0xA2 - case backlightControlLegacy = 0x13 - case backlightLevelWhite = 0x6B - case backlightLevelRed = 0x6D - case backlightLevelGreen = 0x6F - case backlightLevelBlue = 0x71 - case blockLutOperation = 0x75 - case clock = 0x0E - case clockPhase = 0x3E - case colorSaturation = 0x8A - case colorTemperatureIncrement = 0x0B - case colorTemperatureRequest = 0x0C - case contrast = 0x12 - case displayApplication = 0xDC - case fleshToneEnhancement = 0x11 - case focus = 0x1C - case gamma = 0x72 - case grayScaleExpansion = 0x2E - case horizontalMoire = 0x56 - case hue = 0x90 - case luminance = 0x10 - case lutSize = 0x73 - case screenOrientation = 0xAA - case selectColorPreset = 0x14 - case sharpness = 0x87 - case singlePointLutOperation = 0x74 - case stereoVideoMode = 0xD4 - case tvBlackLevel = 0x92 - case tvContrast = 0x8E - case tvSharpness = 0x8C - case userColorVisionCompensation = 0x17 - case velocityScanModulation = 0x88 - case verticalMoire = 0x58 - case videoBlackLevelBlue = 0x70 - case videoBlackLevelGreen = 0x6E - case videoBlackLevelRed = 0x6C - case videoGainBlue = 0x1A - case videoGainGreen = 0x18 - case videoGainRed = 0x16 - case windowBackground = 0x9A - case windowControlOnOff = 0xA4 - case windowSelect = 0xA5 - case windowSize = 0xA6 - case windowTransparency = 0xA7 - - // Preset Operations - case restoreFactoryDefaults = 0x04 - case restoreFactoryLuminanceContrastDefaults = 0x05 - case restoreFactoryGeometryDefaults = 0x06 - case restoreFactoryColorDefaults = 0x08 - case restoreFactoryTvDefaults = 0x0A - case settings = 0xB0 - - // Manufacturer Specific - case blackStabilizer = 0xF9 // LG 38UC99-W - case colorPresetC = 0xE0 - case powerControl = 0xE1 - case topLeftScreenPurity = 0xE8 - case topRightScreenPurity = 0xE9 - case bottomLeftScreenPurity = 0xEA - case bottomRightScreenPurity = 0xEB - - public static let brightness = luminance -} diff --git a/MonitorControl/Enums/PrefKey.swift b/MonitorControl/Enums/PrefKey.swift deleted file mode 100644 index fa090e70..00000000 --- a/MonitorControl/Enums/PrefKey.swift +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -enum PrefKey: String { - // Enable mute DDC for display - case enableMuteUnmute - - // Sparkle automatic checks - case SUEnableAutomaticChecks - - // Hide OSD for display - case hideOsd - - // Longer delay DDC for display - case longerDelay - - // DDC polling mode for display - case pollingMode - - // DDC polling count for display - case pollingCount - - // Command value display - case value - - // Min command value display - case minDDCOverride - - // Max command value display - case maxDDC - - // Max user override command value display - case maxDDCOverride - - // Max command value display - case curveDDC - - // Is the specific control is set as unavailable for display? - case unavailableDDC - - // Invert DDC scale? - case invertDDC - - // Override DDC control command code - case remapDDC - - // User assigned audio device name for display - case audioDeviceNameOverride - - // Display disabled for keyboard control - case isDisabled - - // Force software mode for display - case forceSw - - // Software brightness for display - case SwBrightness - - // Build number - case buildNumber - - // Was the app launched once - case appAlreadyLaunched - - // Hide menu icon - case menuIcon - - // Menu item style - case menuItemStyle - - // Keys listened for - case keyboardBrightness - - // Keys listened for - case keyboardVolume - - // Don't listen to F14/F15 - case disableAltBrightnessKeys - - // Hide brightness sliders - case hideBrightness - - // Show volume sliders - case showContrast - - // Show volume sliders - case hideVolume - - // Lower via software after brightness - case disableCombinedBrightness - - // Lower via software after brightness - case combinedBrightnessSwitchingPoint - - // Use separated OSD scale for combined brightness - case separateCombinedScale - - // Fallback to software control for other displays with no DDC - case disableSoftwareFallback - - // Do not show sliders for Apple displays (including built-in display) in menu - case hideAppleFromMenu - - // Disable slider snapping - case enableSliderSnap - - // Disable slider snapping - case enableSliderPercent - - // Show tick marks for sliders - case showTickMarks - - // Friendly name changed - case friendlyName - - // Instead of assuming default values, enable read or write upon startup (according to readDDCInsteadOfRestoreValues) - case enableDDCDuringStartup - - // Restore last saved values upon startup or wake - case readDDCInsteadOfRestoreValues - - // Show advanced options under Displays tab in Preferences - case showAdvancedSettings - - // Change Brightness for all screens - case allScreensBrightness - - // Use focus instead of mouse position to determine which display to control for brightness - case useFocusInsteadOfMouse - - // Change Volume for all screens - case allScreensVolume - - // Use audio device name matching to determine display to control for volume - case useAudioDeviceNameMatching - - // Use fine OSD scale for brightness - case useFineScaleBrightness - - // Use fine OSD scale for volume - case useFineScaleVolume - - // Use smoothBrightness - case disableSmoothBrightness - - // Synchronize brightness from sync source displays among all other displays - case enableBrightnessSync - - // Show only relevant slider for menu (depending on which display shows the menu) - case slidersRelevant - - // Combine sliders for all displays - case slidersCombine -} - -enum PollingMode: Int { - case none = -2 - case minimal = -1 - case normal = 0 - case heavy = 1 - case custom = 2 -} - -enum MenuIcon: Int { - case show = 0 - case sliderOnly = 1 - case hide = 2 -} - -enum MenuItemStyle: Int { - case text = 0 - case icon = 1 - case hide = 2 -} - -enum KeyboardBrightness: Int { - case media = 0 - case custom = 1 - case both = 2 - case disabled = 3 -} - -enum KeyboardVolume: Int { - case media = 0 - case custom = 1 - case both = 2 - case disabled = 3 -} diff --git a/MonitorControl/Extensions/CGDirectDisplayID+Extension.swift b/MonitorControl/Extensions/CGDirectDisplayID+Extension.swift deleted file mode 100644 index 536e5d44..00000000 --- a/MonitorControl/Extensions/CGDirectDisplayID+Extension.swift +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import Cocoa - -public extension CGDirectDisplayID { - var vendorNumber: UInt32? { - return CGDisplayVendorNumber(self) - } - - var modelNumber: UInt32? { - return CGDisplayModelNumber(self) - } - - var serialNumber: UInt32? { - return CGDisplaySerialNumber(self) - } -} diff --git a/MonitorControl/Extensions/KeyboardShortcuts+Extension.swift b/MonitorControl/Extensions/KeyboardShortcuts+Extension.swift deleted file mode 100644 index 5bbb3d08..00000000 --- a/MonitorControl/Extensions/KeyboardShortcuts+Extension.swift +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import KeyboardShortcuts - -extension KeyboardShortcuts.Name { - static let brightnessUp = Self("brightnessUp") - static let brightnessDown = Self("brightnessDown") - static let contrastUp = Self("contrastUp") - static let contrastDown = Self("contrastDown") - static let volumeUp = Self("volumeUp") - static let volumeDown = Self("volumeDown") - static let mute = Self("mute") - - static let none = Self("none") -} diff --git a/MonitorControl/Extensions/NSNotification+Extension.swift b/MonitorControl/Extensions/NSNotification+Extension.swift deleted file mode 100644 index fec8d836..00000000 --- a/MonitorControl/Extensions/NSNotification+Extension.swift +++ /dev/null @@ -1,5 +0,0 @@ -import Cocoa - -extension NSNotification.Name { - static let accessibilityApi = NSNotification.Name(rawValue: "com.apple.accessibility.api") -} diff --git a/MonitorControl/Extensions/NSScreen+Extension.swift b/MonitorControl/Extensions/NSScreen+Extension.swift deleted file mode 100644 index e69f5ad5..00000000 --- a/MonitorControl/Extensions/NSScreen+Extension.swift +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import Cocoa - -public extension NSScreen { - var displayID: CGDirectDisplayID { - return (self.deviceDescription[NSDeviceDescriptionKey("NSScreenNumber")] as? CGDirectDisplayID)! - } - - var vendorNumber: UInt32? { - switch CGDisplayVendorNumber(self.displayID) { - case 0xFFFF_FFFF: - return nil - case let vendorNumber: - return vendorNumber - } - } - - var modelNumber: UInt32? { - switch CGDisplayModelNumber(self.displayID) { - case 0xFFFF_FFFF: - return nil - case let modelNumber: - return modelNumber - } - } - - var serialNumber: UInt32? { - switch CGDisplaySerialNumber(self.displayID) { - case 0x0000_0000: - return nil - case let serialNumber: - return serialNumber - } - } - - var displayName: String? { - var servicePortIterator = io_iterator_t() - - let status = IOServiceGetMatchingServices(kIOMasterPortDefault, IOServiceMatching("IODisplayConnect"), &servicePortIterator) - guard status == KERN_SUCCESS else { - return nil - } - - defer { - assert(IOObjectRelease(servicePortIterator) == KERN_SUCCESS) - } - - while case let object = IOIteratorNext(servicePortIterator), object != 0 { - let dict = (IODisplayCreateInfoDictionary(object, UInt32(kIODisplayOnlyPreferredName)).takeRetainedValue() as NSDictionary as? [String: AnyObject])! - - if dict[kDisplayVendorID] as? UInt32 == self.vendorNumber, dict[kDisplayProductID] as? UInt32 == self.modelNumber, dict[kDisplaySerialNumber] as? UInt32 == self.serialNumber { - if let productName = dict["DisplayProductName"] as? [String: String], let firstKey = Array(productName.keys).first { - return productName[firstKey]! - } - } - } - - return nil - } -} diff --git a/MonitorControl/Extensions/Preferences+Extension.swift b/MonitorControl/Extensions/Preferences+Extension.swift deleted file mode 100644 index 292ca83c..00000000 --- a/MonitorControl/Extensions/Preferences+Extension.swift +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import Preferences - -extension Preferences.PaneIdentifier { - static let main = Self("Main") - static let menusliders = Self("Menu & Sliders") - static let keyboard = Self("Keyboard") - static let displays = Self("Displays") - static let about = Self("About") -} diff --git a/MonitorControl/Info.plist b/MonitorControl/Info.plist deleted file mode 100644 index 31700085..00000000 --- a/MonitorControl/Info.plist +++ /dev/null @@ -1,38 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(MARKETING_VERSION) - CFBundleVersion - 6293 - LSApplicationCategoryType - public.app-category.utilities - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - LSUIElement - - NSHumanReadableCopyright - MIT Licensed. 2017. - NSPrincipalClass - NSApplication - SUFeedURL - https://monitorcontrol.app/appcast.xml - SUPublicEDKey - KuISgz+2n2/qnP/Rom5nWYAp+Pru+U3UtnAlnUjj6Pw= - - diff --git a/MonitorControl/Model/AppleDisplay.swift b/MonitorControl/Model/AppleDisplay.swift deleted file mode 100644 index 0fa6a8c3..00000000 --- a/MonitorControl/Model/AppleDisplay.swift +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import Foundation -import os.log - -class AppleDisplay: Display { - private var displayQueue: DispatchQueue - - override init(_ identifier: CGDirectDisplayID, name: String, vendorNumber: UInt32?, modelNumber: UInt32?, isVirtual: Bool = false) { - self.displayQueue = DispatchQueue(label: String("displayQueue-\(identifier)")) - super.init(identifier, name: name, vendorNumber: vendorNumber, modelNumber: modelNumber, isVirtual: isVirtual) - } - - public func getAppleBrightness() -> Float { - var brightness: Float = 0 - DisplayServicesGetBrightness(self.identifier, &brightness) - return brightness - } - - public func setAppleBrightness(value: Float) { - self.displayQueue.sync { - DisplayServicesSetBrightness(self.identifier, value) - DisplayServicesBrightnessChanged(self.identifier, Double(value)) - } - } - - override func setDirectBrightness(_ to: Float, transient: Bool = false) -> Bool { - let value = max(min(to, 1), 0) - self.setAppleBrightness(value: value) - if !transient { - self.savePref(value, for: .brightness) - self.brightnessSyncSourceValue = value - self.smoothBrightnessTransient = value - } - return true - } - - override func getBrightness() -> Float { - if self.prefExists(for: .brightness) { - return self.readPrefAsFloat(for: .brightness) - } else { - return self.getAppleBrightness() - } - } - - override func refreshBrightness() -> Float { - guard !self.smoothBrightnessRunning else { - return 0 - } - let brightness = self.getAppleBrightness() - let oldValue = self.brightnessSyncSourceValue - self.savePref(brightness, for: .brightness) - if brightness != oldValue { - os_log("Pushing slider and reporting delta for Apple display %{public}@", type: .debug, String(self.identifier)) - var newValue: Float - - if abs(brightness - oldValue) < 0.01 { - newValue = brightness - } else if brightness > oldValue { - newValue = oldValue + max((brightness - oldValue) / 3, 0.005) - } else { - newValue = oldValue + min((brightness - oldValue) / 3, -0.005) - } - self.brightnessSyncSourceValue = newValue - if let sliderHandler = self.sliderHandler[.brightness] { - sliderHandler.setValue(newValue, displayID: self.identifier) - } - return newValue - oldValue - } - return 0 - } -} diff --git a/MonitorControl/Model/Display.swift b/MonitorControl/Model/Display.swift deleted file mode 100644 index b157312d..00000000 --- a/MonitorControl/Model/Display.swift +++ /dev/null @@ -1,289 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import Cocoa -import Foundation -import os.log - -class Display: Equatable { - internal let identifier: CGDirectDisplayID - internal let prefsId: String - internal var name: String - internal var vendorNumber: UInt32? - internal var modelNumber: UInt32? - internal var smoothBrightnessTransient: Float = 1 - internal var smoothBrightnessRunning: Bool = false - internal var smoothBrightnessSlow: Bool = false - - static func == (lhs: Display, rhs: Display) -> Bool { - return lhs.identifier == rhs.identifier - } - - var sliderHandler: [Command: SliderHandler] = [:] - var brightnessSyncSourceValue: Float = 1 - var isVirtual: Bool = false - - var defaultGammaTableRed = [CGGammaValue](repeating: 0, count: 256) - var defaultGammaTableGreen = [CGGammaValue](repeating: 0, count: 256) - var defaultGammaTableBlue = [CGGammaValue](repeating: 0, count: 256) - var defaultGammaTableSampleCount: UInt32 = 0 - var defaultGammaTablePeak: Float = 1 - - func prefExists(key: PrefKey? = nil, for command: Command? = nil) -> Bool { - return prefs.object(forKey: self.getKey(key: key, for: command)) != nil - } - - func removePref(key: PrefKey, for command: Command? = nil) { - prefs.removeObject(forKey: self.getKey(key: key, for: command)) - } - - func savePref(_ value: T, key: PrefKey? = nil, for command: Command? = nil) { - prefs.set(value, forKey: self.getKey(key: key, for: command)) - } - - func readPrefAsFloat(key: PrefKey? = nil, for command: Command? = nil) -> Float { - return prefs.float(forKey: self.getKey(key: key, for: command)) - } - - func readPrefAsInt(key: PrefKey? = nil, for command: Command? = nil) -> Int { - return prefs.integer(forKey: self.getKey(key: key, for: command)) - } - - func readPrefAsBool(key: PrefKey? = nil, for command: Command? = nil) -> Bool { - return prefs.bool(forKey: self.getKey(key: key, for: command)) - } - - func readPrefAsString(key: PrefKey? = nil, for command: Command? = nil) -> String { - return prefs.string(forKey: self.getKey(key: key, for: command)) ?? "" - } - - private func getKey(key: PrefKey? = nil, for command: Command? = nil) -> String { - return (key ?? PrefKey.value).rawValue + (command != nil ? String((command ?? Command.none).rawValue) : "") + self.prefsId - } - - internal init(_ identifier: CGDirectDisplayID, name: String, vendorNumber: UInt32?, modelNumber: UInt32?, isVirtual: Bool = false) { - self.identifier = identifier - self.name = name - self.vendorNumber = vendorNumber - self.modelNumber = modelNumber - self.prefsId = "(" + String(name.filter { !$0.isWhitespace }) + String(vendorNumber ?? 0) + String(modelNumber ?? 0) + "@" + String(identifier) + ")" - os_log("Display init with prefsIdentifier %{public}@", type: .info, self.prefsId) - self.isVirtual = DEBUG_VIRTUAL ? true : isVirtual - self.swUpdateDefaultGammaTable() - self.smoothBrightnessTransient = self.getBrightness() - if self.isVirtual { - os_log("Creating or updating shade for virtual display %{public}@", type: .debug, String(self.identifier)) - _ = DisplayManager.shared.updateShade(displayID: self.identifier) - } else { - os_log("Destroying shade (if exists) for real display %{public}@", type: .debug, String(self.identifier)) - _ = DisplayManager.shared.destroyShade(displayID: self.identifier) - } - self.brightnessSyncSourceValue = self.getBrightness() - } - - func calcNewBrightness(isUp: Bool, isSmallIncrement: Bool) -> Float { - var step: Float = (isUp ? 1 : -1) / 16.0 - let delta = step / 4 - if isSmallIncrement { - step = delta - } - return min(max(0, ceil((self.getBrightness() + delta) / step) * step), 1) - } - - func stepBrightness(isUp: Bool, isSmallIncrement: Bool) { - let value = self.calcNewBrightness(isUp: isUp, isSmallIncrement: isSmallIncrement) - if self.setBrightness(value) { - OSDUtils.showOsd(displayID: self.identifier, command: .brightness, value: value * 64, maxValue: 64) - if let slider = self.sliderHandler[.brightness] { - slider.setValue(value, displayID: self.identifier) - self.brightnessSyncSourceValue = value - } - } - } - - func setBrightness(_ to: Float = -1, slow: Bool = false) -> Bool { - if !prefs.bool(forKey: PrefKey.disableSmoothBrightness.rawValue) { - return self.setSmoothBrightness(to, slow: slow) - } else { - return self.setDirectBrightness(to) - } - } - - func setSmoothBrightness(_ to: Float = -1, slow: Bool = false) -> Bool { - guard app.sleepID == 0, app.reconfigureID == 0 else { - self.savePref(self.smoothBrightnessTransient, for: .brightness) - self.smoothBrightnessRunning = false - os_log("Pushing brightness stopped for Display %{public}@ because of sleep or reconfiguration", type: .debug, String(self.identifier)) - return false - } - if slow { - self.smoothBrightnessSlow = true - } - var stepDivider: Float = 6 - if self.smoothBrightnessSlow { - stepDivider = 16 - } - var dontPushAgain = false - if to != -1 { - os_log("Pushing brightness towards goal of %{public}@ for Display %{public}@", type: .debug, String(to), String(self.identifier)) - let value = max(min(to, 1), 0) - self.savePref(value, for: .brightness) - self.brightnessSyncSourceValue = value - self.smoothBrightnessSlow = slow - if self.smoothBrightnessRunning { - return true - } - } - let brightness = self.readPrefAsFloat(for: .brightness) - if brightness != self.smoothBrightnessTransient { - if abs(brightness - self.smoothBrightnessTransient) < 0.01 { - self.smoothBrightnessTransient = brightness - os_log("Pushing brightness finished for Display %{public}@", type: .debug, String(self.identifier)) - dontPushAgain = true - self.smoothBrightnessRunning = false - } else if brightness > self.smoothBrightnessTransient { - self.smoothBrightnessTransient += max((brightness - self.smoothBrightnessTransient) / stepDivider, 1 / 100) - } else { - self.smoothBrightnessTransient += min((brightness - self.smoothBrightnessTransient) / stepDivider, 1 / 100) - } - _ = self.setDirectBrightness(self.smoothBrightnessTransient, transient: true) - if !dontPushAgain { - self.smoothBrightnessRunning = true - DispatchQueue.main.asyncAfter(deadline: .now() + 0.02) { - _ = self.setSmoothBrightness() - } - } - } else { - os_log("No more need to push brightness for Display %{public}@ (setting one final time)", type: .debug, String(self.identifier)) - _ = self.setDirectBrightness(self.smoothBrightnessTransient, transient: true) - self.smoothBrightnessRunning = false - } - self.swBrightnessSemaphore.signal() - return true - } - - func setDirectBrightness(_ to: Float, transient: Bool = false) -> Bool { - let value = max(min(to, 1), 0) - if self.setSwBrightness(value) { - if !transient { - self.savePref(value, for: .brightness) - self.brightnessSyncSourceValue = value - self.smoothBrightnessTransient = value - } - return true - } - return false - } - - func getBrightness() -> Float { - if self.prefExists(for: .brightness) { - return self.readPrefAsFloat(for: .brightness) - } else { - return self.getSwBrightness() - } - } - - func swUpdateDefaultGammaTable() { - CGGetDisplayTransferByTable(self.identifier, 256, &self.defaultGammaTableRed, &self.defaultGammaTableGreen, &self.defaultGammaTableBlue, &self.defaultGammaTableSampleCount) - let redPeak = self.defaultGammaTableRed.max() ?? 0 - let greenPeak = self.defaultGammaTableGreen.max() ?? 0 - let bluePeak = self.defaultGammaTableBlue.max() ?? 0 - self.defaultGammaTablePeak = max(redPeak, greenPeak, bluePeak) - } - - func swBrightnessTransform(value: Float, reverse: Bool = false) -> Float { - let lowTreshold: Float = 0.0 // If we don't want to allow zero brightness for safety reason, this value can be modified (for example to 0.1 for a 10% minimum) - if !reverse { - return value * (1 - lowTreshold) + lowTreshold - } else { - return (value - lowTreshold) / (1 - lowTreshold) - } - } - - let swBrightnessSemaphore = DispatchSemaphore(value: 1) - func setSwBrightness(_ value: Float, smooth: Bool = false) -> Bool { - let brightnessValue = min(1, value) - var currentValue = self.readPrefAsFloat(key: .SwBrightness) - self.savePref(brightnessValue, key: .SwBrightness) - var newValue = brightnessValue - currentValue = self.swBrightnessTransform(value: currentValue) - newValue = self.swBrightnessTransform(value: newValue) - if smooth { - DispatchQueue.global(qos: .userInteractive).async { - self.swBrightnessSemaphore.wait() - for transientValue in stride(from: currentValue, to: newValue, by: 0.005 * (currentValue > newValue ? -1 : 1)) { - guard app.reconfigureID == 0 else { - return - } - if self.isVirtual { - _ = DisplayManager.shared.setShadeAlpha(value: 1 - transientValue, displayID: self.identifier) - } else { - let gammaTableRed = self.defaultGammaTableRed.map { $0 * transientValue } - let gammaTableGreen = self.defaultGammaTableGreen.map { $0 * transientValue } - let gammaTableBlue = self.defaultGammaTableBlue.map { $0 * transientValue } - CGSetDisplayTransferByTable(self.identifier, self.defaultGammaTableSampleCount, gammaTableRed, gammaTableGreen, gammaTableBlue) - } - Thread.sleep(forTimeInterval: 0.001) // Let's make things quick if not performed in the background - } - self.swBrightnessSemaphore.signal() - } - } else { - if self.isVirtual { - return DisplayManager.shared.setShadeAlpha(value: 1 - value, displayID: self.identifier) - } else { - let gammaTableRed = self.defaultGammaTableRed.map { $0 * newValue } - let gammaTableGreen = self.defaultGammaTableGreen.map { $0 * newValue } - let gammaTableBlue = self.defaultGammaTableBlue.map { $0 * newValue } - DisplayManager.shared.moveGammaActivityEnforcer(displayID: self.identifier) - CGSetDisplayTransferByTable(self.identifier, self.defaultGammaTableSampleCount, gammaTableRed, gammaTableGreen, gammaTableBlue) - DisplayManager.shared.enforceGammaActivity() - } - } - return true - } - - func getSwBrightness() -> Float { - if self.isVirtual { - return 1 - (DisplayManager.shared.getShadeAlpha(displayID: self.identifier) ?? 1) - } - var gammaTableRed = [CGGammaValue](repeating: 0, count: 256) - var gammaTableGreen = [CGGammaValue](repeating: 0, count: 256) - var gammaTableBlue = [CGGammaValue](repeating: 0, count: 256) - var gammaTableSampleCount: UInt32 = 0 - if CGGetDisplayTransferByTable(self.identifier, 256, &gammaTableRed, &gammaTableGreen, &gammaTableBlue, &gammaTableSampleCount) == CGError.success { - let redPeak = gammaTableRed.max() ?? 0 - let greenPeak = gammaTableGreen.max() ?? 0 - let bluePeak = gammaTableBlue.max() ?? 0 - let gammaTablePeak = max(redPeak, greenPeak, bluePeak) - let peakRatio = gammaTablePeak / self.defaultGammaTablePeak - let brightnessValue = round(self.swBrightnessTransform(value: peakRatio, reverse: true) * 256) / 256 - return brightnessValue - } - return 1 - } - - func resetSwBrightness() -> Bool { - return self.setSwBrightness(1) - } - - func isSwBrightnessNotDefault() -> Bool { - guard !self.isVirtual else { - return false - } - if self.getSwBrightness() < 1 { - return true - } - return false - } - - func refreshBrightness() -> Float { - return 0 - } - - func isBuiltIn() -> Bool { - if CGDisplayIsBuiltin(self.identifier) != 0 { - return true - } else { - return false - } - } -} diff --git a/MonitorControl/Model/OtherDisplay.swift b/MonitorControl/Model/OtherDisplay.swift deleted file mode 100644 index dd5a1901..00000000 --- a/MonitorControl/Model/OtherDisplay.swift +++ /dev/null @@ -1,500 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import AVFoundation -import Cocoa -import IOKit -import os.log - -class OtherDisplay: Display { - var volumeSliderHandler: SliderHandler? - var contrastSliderHandler: SliderHandler? - var ddc: IntelDDC? - var arm64ddc: Bool = false - var arm64avService: IOAVService? - var isDiscouraged: Bool = false - let DDC_MAX_DETECT_LIMIT: Int = 100 - private var audioPlayer: AVAudioPlayer? - var pollingCount: Int { - get { - switch self.readPrefAsInt(key: .pollingMode) { - case PollingMode.none.rawValue: return 0 - case PollingMode.minimal.rawValue: return 1 - case PollingMode.normal.rawValue: return 5 - case PollingMode.heavy.rawValue: return 20 - case PollingMode.custom.rawValue: return prefs.integer(forKey: PrefKey.pollingCount.rawValue + self.prefsId) - default: return PollingMode.none.rawValue - } - } - set { prefs.set(newValue, forKey: PrefKey.pollingCount.rawValue + self.prefsId) } - } - - override init(_ identifier: CGDirectDisplayID, name: String, vendorNumber: UInt32?, modelNumber: UInt32?, isVirtual: Bool = false) { - super.init(identifier, name: name, vendorNumber: vendorNumber, modelNumber: modelNumber, isVirtual: isVirtual) - if !isVirtual, !Arm64DDC.isArm64 { - self.ddc = IntelDDC(for: identifier) - } - } - - func processCurrentDDCValue(read: Bool, command: Command, firstrun: Bool, currentDDCValue: UInt16) { - if read { - var currentValue = self.convDDCToValue(for: command, from: currentDDCValue) - if !prefs.bool(forKey: PrefKey.disableCombinedBrightness.rawValue), command == .brightness { - os_log("- Combined brightness mapping on DDC data.", type: .info) - if currentValue > 0 { - currentValue = self.combinedBrightnessSwitchingValue() + currentValue * (1 - self.combinedBrightnessSwitchingValue()) - } else if currentValue == 0, firstrun { - currentValue = self.combinedBrightnessSwitchingValue() - } else if self.prefExists(for: command), self.readPrefAsFloat(for: command) <= self.combinedBrightnessSwitchingValue() { - currentValue = self.readPrefAsFloat(for: command) - } else { - currentValue = self.combinedBrightnessSwitchingValue() - } - } - self.savePref(currentValue, for: command) - if command == .brightness { - self.smoothBrightnessTransient = currentValue - } - } else { - var currentValue: Float = self.readPrefAsFloat(for: command) - if !prefs.bool(forKey: PrefKey.disableCombinedBrightness.rawValue), command == .brightness { - os_log("- Combined brightness mapping on saved data.", type: .info) - if !self.prefExists(for: command) { - currentValue = self.combinedBrightnessSwitchingValue() + self.convDDCToValue(for: command, from: currentDDCValue) * (1 - self.combinedBrightnessSwitchingValue()) - } else if firstrun, currentValue < self.combinedBrightnessSwitchingValue() { - currentValue = self.combinedBrightnessSwitchingValue() - } - } else { - currentValue = self.prefExists(for: command) ? self.readPrefAsFloat(for: command) : self.convDDCToValue(for: command, from: currentDDCValue) - } - self.savePref(currentValue, for: command) - if command == .brightness { - self.smoothBrightnessTransient = currentValue - } - } - } - - func setupCurrentAndMaxValues(command: Command, firstrun: Bool = false) { - var ddcValues: (UInt16, UInt16)? - var maxDDCValue = UInt16(DDC_MAX_DETECT_LIMIT) - var currentDDCValue = UInt16(Float(DDC_MAX_DETECT_LIMIT) * 1) - if command == .audioSpeakerVolume { - currentDDCValue = UInt16(Float(self.DDC_MAX_DETECT_LIMIT) * 0.125) // lower default audio value as high volume might rattle the user. - } - os_log("Setting up display %{public}@ for %{public}@", type: .info, String(self.identifier), String(reflecting: command)) - if !self.isSw() { - if prefs.bool(forKey: PrefKey.enableDDCDuringStartup.rawValue), prefs.bool(forKey: PrefKey.readDDCInsteadOfRestoreValues.rawValue), self.pollingCount != 0, !app.safeMode { - os_log("- Reading DDC from display %{public}@ times", type: .info, String(self.pollingCount)) - let delay = self.readPrefAsBool(key: .longerDelay) ? UInt64(40 * kMillisecondScale) : nil - ddcValues = self.readDDCValues(for: command, tries: UInt(self.pollingCount), minReplyDelay: delay) - if ddcValues != nil { - (currentDDCValue, maxDDCValue) = ddcValues ?? (currentDDCValue, maxDDCValue) - self.processCurrentDDCValue(read: true, command: command, firstrun: firstrun, currentDDCValue: currentDDCValue) - os_log("- DDC read successful.", type: .info) - } else { - os_log("- DDC read failed.", type: .info) - } - } else { - os_log("- DDC read disabled.", type: .info) - } - if self.readPrefAsInt(key: .maxDDCOverride, for: command) > self.readPrefAsInt(key: .minDDCOverride, for: command) { - self.savePref(self.readPrefAsInt(key: .maxDDCOverride, for: command), key: .maxDDC, for: command) - } else { - self.savePref(min(Int(maxDDCValue), self.DDC_MAX_DETECT_LIMIT), key: .maxDDC, for: command) - } - if ddcValues == nil { - self.processCurrentDDCValue(read: false, command: command, firstrun: firstrun, currentDDCValue: currentDDCValue) - currentDDCValue = self.convValueToDDC(for: command, from: (!prefs.bool(forKey: PrefKey.disableCombinedBrightness.rawValue) && command == .brightness) ? max(0, self.readPrefAsFloat(for: command) - self.combinedBrightnessSwitchingValue()) * (1 / (1 - self.combinedBrightnessSwitchingValue())) : self.readPrefAsFloat(for: command)) - } - os_log("- Current DDC value: %{public}@", type: .info, String(currentDDCValue)) - os_log("- Minimum DDC value: %{public}@ (overrides 0)", type: .info, String(self.readPrefAsInt(key: .minDDCOverride, for: command))) - os_log("- Maximum DDC value: %{public}@ (overrides %{public}@)", type: .info, String(self.readPrefAsInt(key: .maxDDC, for: command)), String(maxDDCValue)) - os_log("- Current internal value: %{public}@", type: .info, String(self.readPrefAsFloat(for: command))) - if prefs.bool(forKey: PrefKey.enableDDCDuringStartup.rawValue), !prefs.bool(forKey: PrefKey.readDDCInsteadOfRestoreValues.rawValue), !app.safeMode { - os_log("- Writing last saved DDC values.", type: .info, self.name, String(reflecting: command)) - _ = self.writeDDCValues(command: command, value: currentDDCValue) - } - } else { - self.savePref(max(0.1, self.prefExists(for: command) ? self.readPrefAsFloat(for: command) : Float(1)), for: command) - self.savePref(self.readPrefAsFloat(for: command), key: .SwBrightness) - self.brightnessSyncSourceValue = self.readPrefAsFloat(for: command) - self.smoothBrightnessTransient = self.readPrefAsFloat(for: command) - os_log("- Software controlled display current internal value: %{public}@", type: .info, String(self.readPrefAsFloat(for: command))) - } - if command == .audioSpeakerVolume { - self.setupMuteUnMute() - } - } - - func setupMuteUnMute() { - guard !self.readPrefAsBool(key: .unavailableDDC, for: .audioSpeakerVolume) else { - return - } - var currentMuteValue = self.readPrefAsInt(for: .audioMuteScreenBlank) - currentMuteValue = currentMuteValue == 0 ? 2 : currentMuteValue - var muteValues: (current: UInt16, max: UInt16)? - if self.readPrefAsBool(key: .enableMuteUnmute) { - if self.pollingCount != 0, !app.safeMode, prefs.bool(forKey: PrefKey.enableDDCDuringStartup.rawValue), prefs.bool(forKey: PrefKey.readDDCInsteadOfRestoreValues.rawValue) { - os_log("Reading DDC from display %{public}@ times for Mute", type: .info, String(self.pollingCount)) - let delay = self.readPrefAsBool(key: .longerDelay) ? UInt64(40 * kMillisecondScale) : nil - muteValues = self.readDDCValues(for: .audioMuteScreenBlank, tries: UInt(self.pollingCount), minReplyDelay: delay) - if let muteValues = muteValues { - os_log("Success, current Mute setting: %{public}@", type: .info, String(muteValues.current)) - currentMuteValue = Int(muteValues.current) - } else { - os_log("Mute read failed", type: .info) - } - } - if prefs.bool(forKey: PrefKey.enableDDCDuringStartup.rawValue), !prefs.bool(forKey: PrefKey.readDDCInsteadOfRestoreValues.rawValue), !app.safeMode { - os_log("Writing last saved DDC value for Mute: %{public}@", type: .info, String(currentMuteValue)) - _ = self.writeDDCValues(command: .audioMuteScreenBlank, value: UInt16(currentMuteValue)) - } - self.savePref(Int(currentMuteValue), for: .audioMuteScreenBlank) - } - } - - func setupSliderCurrentValue(command: Command) -> Float { - return (command == .audioSpeakerVolume && self.readPrefAsBool(key: .enableMuteUnmute) && self.readPrefAsInt(for: .audioMuteScreenBlank) == 1) ? 0 : self.readPrefAsFloat(for: command) - } - - func stepVolume(isUp: Bool, isSmallIncrement: Bool) { - guard !self.readPrefAsBool(key: .unavailableDDC, for: .audioSpeakerVolume) else { - OSDUtils.showOsdVolumeDisabled(displayID: self.identifier) - return - } - let currentValue = self.readPrefAsFloat(for: .audioSpeakerVolume) - var muteValue: Int? - let volumeOSDValue = self.calcNewValue(currentValue: currentValue, isUp: isUp, isSmallIncrement: isSmallIncrement) - if self.readPrefAsInt(for: .audioMuteScreenBlank) == 1, volumeOSDValue > 0 { - muteValue = 2 - } else if self.readPrefAsInt(for: .audioMuteScreenBlank) != 1, volumeOSDValue == 0 { - muteValue = 1 - } - let isAlreadySet = volumeOSDValue == self.readPrefAsFloat(for: .audioSpeakerVolume) - if !isAlreadySet { - if let muteValue = muteValue, self.readPrefAsBool(key: .enableMuteUnmute) { - guard self.writeDDCValues(command: .audioMuteScreenBlank, value: UInt16(muteValue)) == true else { - return - } - self.savePref(muteValue, for: .audioMuteScreenBlank) - } - if !self.readPrefAsBool(key: .enableMuteUnmute) || volumeOSDValue != 0 { - _ = self.writeDDCValues(command: .audioSpeakerVolume, value: self.convValueToDDC(for: .audioSpeakerVolume, from: volumeOSDValue)) - } - } - if !self.readPrefAsBool(key: .hideOsd) { - OSDUtils.showOsd(displayID: self.identifier, command: .audioSpeakerVolume, value: volumeOSDValue, roundChiclet: !isSmallIncrement) - } - if !isAlreadySet { - self.savePref(volumeOSDValue, for: .audioSpeakerVolume) - if let slider = self.sliderHandler[.audioSpeakerVolume] { - slider.setValue(volumeOSDValue, displayID: self.identifier) - } - } - } - - func stepContrast(isUp: Bool, isSmallIncrement: Bool) { - guard !self.readPrefAsBool(key: .unavailableDDC, for: .contrast), !self.isSw() else { - return - } - let currentValue = self.readPrefAsFloat(for: .contrast) - let contrastOSDValue = self.calcNewValue(currentValue: currentValue, isUp: isUp, isSmallIncrement: isSmallIncrement) - let isAlreadySet = contrastOSDValue == self.readPrefAsFloat(for: .contrast) - if !isAlreadySet { - _ = self.writeDDCValues(command: .contrast, value: self.convValueToDDC(for: .contrast, from: contrastOSDValue)) - } - OSDUtils.showOsd(displayID: self.identifier, command: .contrast, value: contrastOSDValue, roundChiclet: !isSmallIncrement) - if !isAlreadySet { - self.savePref(contrastOSDValue, for: .contrast) - if let slider = self.sliderHandler[.contrast] { - slider.setValue(contrastOSDValue, displayID: self.identifier) - } - } - } - - func toggleMute(fromVolumeSlider: Bool = false) { - guard !self.readPrefAsBool(key: .unavailableDDC, for: .audioSpeakerVolume) else { - OSDUtils.showOsdMuteDisabled(displayID: self.identifier) - return - } - var muteValue: Int - var volumeOSDValue: Float - if self.readPrefAsInt(for: .audioMuteScreenBlank) != 1 { - muteValue = 1 - volumeOSDValue = 0 - } else { - muteValue = 2 - volumeOSDValue = self.readPrefAsFloat(for: .audioSpeakerVolume) - // The volume that will be set immediately after setting unmute while the old set volume was 0 is unpredictable. Hence, just set it to a single filled chiclet - if volumeOSDValue == 0 { - volumeOSDValue = 1 / OSDUtils.chicletCount - self.savePref(volumeOSDValue, for: .audioSpeakerVolume) - } - } - if self.readPrefAsBool(key: .enableMuteUnmute) { - guard self.writeDDCValues(command: .audioMuteScreenBlank, value: UInt16(muteValue)) == true else { - return - } - } - self.savePref(muteValue, for: .audioMuteScreenBlank) - if !self.readPrefAsBool(key: .enableMuteUnmute) || volumeOSDValue > 0 { - _ = self.writeDDCValues(command: .audioSpeakerVolume, value: self.convValueToDDC(for: .audioSpeakerVolume, from: volumeOSDValue)) - } - if !fromVolumeSlider { - if !self.readPrefAsBool(key: .hideOsd) { - OSDUtils.showOsd(displayID: self.identifier, command: volumeOSDValue > 0 ? .audioSpeakerVolume : .audioMuteScreenBlank, value: volumeOSDValue, roundChiclet: true) - } - if let slider = self.sliderHandler[.audioSpeakerVolume] { - slider.setValue(volumeOSDValue) - } - } - } - - func isSwOnly() -> Bool { - return (!self.arm64ddc && self.ddc == nil) || self.isVirtual - } - - func isSw() -> Bool { - if prefs.bool(forKey: PrefKey.forceSw.rawValue + self.prefsId) || self.isSwOnly() { - return true - } else { - return false - } - } - - let swAfterOsdAnimationSemaphore = DispatchSemaphore(value: 1) - var lastAnimationStartedTime: CFTimeInterval = CACurrentMediaTime() - func doSwAfterOsdAnimation() { - self.lastAnimationStartedTime = CACurrentMediaTime() - DispatchQueue.global(qos: .userInteractive).async { - self.swAfterOsdAnimationSemaphore.wait() - guard CACurrentMediaTime() < self.lastAnimationStartedTime + 0.05 else { - self.swAfterOsdAnimationSemaphore.signal() - return - } - for value: Int in stride(from: 1, to: 6, by: 1) { - guard self.readPrefAsFloat(for: .brightness) <= self.combinedBrightnessSwitchingValue() else { - self.swAfterOsdAnimationSemaphore.signal() - return - } - OSDUtils.showOsd(displayID: self.identifier, command: .brightness, value: Float(value), maxValue: 100, roundChiclet: false) - Thread.sleep(forTimeInterval: Double(value * 2) / 300) - } - for value: Int in stride(from: 5, to: 0, by: -1) { - guard self.readPrefAsFloat(for: .brightness) <= self.combinedBrightnessSwitchingValue() else { - self.swAfterOsdAnimationSemaphore.signal() - return - } - OSDUtils.showOsd(displayID: self.identifier, command: .brightness, value: Float(value), maxValue: 100, roundChiclet: false) - Thread.sleep(forTimeInterval: Double(value * 2) / 300) - } - OSDUtils.showOsd(displayID: self.identifier, command: .brightness, value: 0, roundChiclet: true) - self.swAfterOsdAnimationSemaphore.signal() - } - } - - override func stepBrightness(isUp: Bool, isSmallIncrement: Bool) { - if self.isSw() { - if !prefs.bool(forKey: PrefKey.disableSoftwareFallback.rawValue) { - super.stepBrightness(isUp: isUp, isSmallIncrement: isSmallIncrement) - } - return - } - guard !self.readPrefAsBool(key: .unavailableDDC, for: .brightness) else { - return - } - let currentValue = self.readPrefAsFloat(for: .brightness) - var osdValue: Float = 1 - if !prefs.bool(forKey: PrefKey.disableCombinedBrightness.rawValue), prefs.bool(forKey: PrefKey.separateCombinedScale.rawValue) { - osdValue = self.calcNewValue(currentValue: currentValue, isUp: isUp, isSmallIncrement: isSmallIncrement, half: true) - _ = self.setBrightness(osdValue) - if osdValue > self.combinedBrightnessSwitchingValue() { - OSDUtils.showOsd(displayID: self.identifier, command: .brightness, value: osdValue - self.combinedBrightnessSwitchingValue(), maxValue: self.combinedBrightnessSwitchingValue(), roundChiclet: !isSmallIncrement) - } else { - self.doSwAfterOsdAnimation() - } - } else { - osdValue = self.calcNewValue(currentValue: currentValue, isUp: isUp, isSmallIncrement: isSmallIncrement) - _ = self.setBrightness(osdValue) - OSDUtils.showOsd(displayID: self.identifier, command: .brightness, value: osdValue, roundChiclet: !isSmallIncrement) - } - if let slider = self.sliderHandler[.brightness] { - slider.setValue(osdValue, displayID: self.identifier) - self.brightnessSyncSourceValue = osdValue - } - } - - override func setDirectBrightness(_ to: Float, transient: Bool = false) -> Bool { - let value = max(min(to, 1), 0) - if !self.isSw() { - if !prefs.bool(forKey: PrefKey.disableCombinedBrightness.rawValue) { - var brightnessValue: Float = 0 - var brightnessSwValue: Float = 1 - if value >= self.combinedBrightnessSwitchingValue() { - brightnessValue = (value - self.combinedBrightnessSwitchingValue()) * (1 / (1 - self.combinedBrightnessSwitchingValue())) - brightnessSwValue = 1 - } else { - brightnessValue = 0 - brightnessSwValue = (value / self.combinedBrightnessSwitchingValue()) - } - _ = self.writeDDCValues(command: .brightness, value: self.convValueToDDC(for: .brightness, from: brightnessValue)) - _ = self.setSwBrightness(brightnessSwValue) - } else { - _ = self.writeDDCValues(command: .brightness, value: self.convValueToDDC(for: .brightness, from: value)) - } - if !transient { - self.savePref(value, for: .brightness) - self.smoothBrightnessTransient = value - } - } else { - _ = super.setDirectBrightness(to, transient: transient) - } - return true - } - - override func getBrightness() -> Float { - return self.prefExists(for: .brightness) ? self.readPrefAsFloat(for: .brightness) : 1 - } - - func getRemapControlCodes(command: Command) -> [UInt8] { - let codes = self.readPrefAsString(key: PrefKey.remapDDC, for: command).components(separatedBy: ",") - var intCodes: [UInt8] = [] - for code in codes { - let trimmedCode = code.trimmingCharacters(in: CharacterSet(charactersIn: " ")) - if !trimmedCode.isEmpty, let intCode = UInt8(trimmedCode, radix: 16), intCode != 0 { - intCodes.append(intCode) - } - } - return intCodes - } - - public func writeDDCValues(command: Command, value: UInt16, errorRecoveryWaitTime _: UInt32? = nil) -> Bool? { - guard app.sleepID == 0, app.reconfigureID == 0, !self.readPrefAsBool(key: .forceSw), !self.readPrefAsBool(key: .unavailableDDC, for: command) else { - return false - } - var success: Bool = false - var controlCodes = self.getRemapControlCodes(command: command) - if controlCodes.count == 0 { - controlCodes.append(command.rawValue) - } - for controlCode in controlCodes { - DisplayManager.shared.ddcQueue.sync { - if Arm64DDC.isArm64 { - if self.arm64ddc { - success = Arm64DDC.write(service: self.arm64avService, command: controlCode, value: value) - } - } else { - success = self.ddc?.write(command: command.rawValue, value: value, errorRecoveryWaitTime: 2000) ?? false - } - } - } - return success - } - - func readDDCValues(for command: Command, tries: UInt, minReplyDelay delay: UInt64?) -> (current: UInt16, max: UInt16)? { - var values: (UInt16, UInt16)? - guard app.sleepID == 0, app.reconfigureID == 0, !self.readPrefAsBool(key: .forceSw), !self.readPrefAsBool(key: .unavailableDDC, for: command) else { - return values - } - let controlCodes = self.getRemapControlCodes(command: command) - let controlCode = controlCodes.count == 0 ? command.rawValue : controlCodes[0] - if Arm64DDC.isArm64 { - guard self.arm64ddc else { - return nil - } - DisplayManager.shared.ddcQueue.sync { - if let unwrappedDelay = delay { - values = Arm64DDC.read(service: self.arm64avService, command: controlCode, tries: UInt8(min(tries, 255)), minReplyDelay: UInt32(unwrappedDelay / 1000)) - } else { - values = Arm64DDC.read(service: self.arm64avService, command: controlCode, tries: UInt8(min(tries, 255))) - } - } - } else { - DisplayManager.shared.ddcQueue.sync { - values = self.ddc?.read(command: controlCode, tries: tries, minReplyDelay: delay) - } - } - return values - } - - func calcNewValue(currentValue: Float, isUp: Bool, isSmallIncrement: Bool, half: Bool = false) -> Float { - let nextValue: Float - if isSmallIncrement { - nextValue = currentValue + (isUp ? 0.01 : -0.01) - } else { - let osdChicletFromValue = OSDUtils.chiclet(fromValue: currentValue, maxValue: 1, half: half) - let distance = OSDUtils.getDistance(fromNearestChiclet: osdChicletFromValue) - var nextFilledChiclet = isUp ? ceil(osdChicletFromValue) : floor(osdChicletFromValue) - let distanceThreshold: Float = 0.25 // 25% of the distance between the edges of an osd box - if distance == 0 { - nextFilledChiclet += (isUp ? 1 : -1) - } else if !isUp, distance < distanceThreshold { - nextFilledChiclet -= 1 - } else if isUp, distance > (1 - distanceThreshold) { - nextFilledChiclet += 1 - } - nextValue = OSDUtils.value(fromChiclet: nextFilledChiclet, maxValue: 1, half: half) - } - return max(0, min(1, nextValue)) - } - - func getCurveMultiplier(_ curveDDC: Int) -> Float { - switch curveDDC { - case 1: return 0.6 - case 2: return 0.7 - case 3: return 0.8 - case 4: return 0.9 - case 6: return 1.3 - case 7: return 1.5 - case 8: return 1.7 - case 9: return 1.88 - default: return 1.0 - } - } - - func convValueToDDC(for command: Command, from: Float) -> UInt16 { - var value = from - if self.readPrefAsBool(key: .invertDDC, for: command) { - value = 1 - value - } - let curveMultiplier = self.getCurveMultiplier(self.readPrefAsInt(key: .curveDDC, for: command)) - let minDDCValue = Float(self.readPrefAsInt(key: .minDDCOverride, for: command)) - let maxDDCValue = Float(self.readPrefAsInt(key: .maxDDC, for: command)) - let curvedValue = pow(max(min(value, 1), 0), curveMultiplier) - let deNormalizedValue = (maxDDCValue - minDDCValue) * curvedValue + minDDCValue - var intDDCValue = UInt16(min(max(deNormalizedValue, minDDCValue), maxDDCValue)) - if from > 0, command == Command.audioSpeakerVolume { - intDDCValue = max(1, intDDCValue) // Never let sound to mute accidentally, keep it digitally to at digital 1 if needed as muting breaks some displays - } - return intDDCValue - } - - func convDDCToValue(for command: Command, from: UInt16) -> Float { - let curveMultiplier = self.getCurveMultiplier(self.readPrefAsInt(key: .curveDDC, for: command)) - let minDDCValue = Float(self.readPrefAsInt(key: .minDDCOverride, for: command)) - let maxDDCValue = Float(self.readPrefAsInt(key: .maxDDC, for: command)) - let normalizedValue = ((min(max(Float(from), minDDCValue), maxDDCValue) - minDDCValue) / (maxDDCValue - minDDCValue)) - let deCurvedValue = pow(normalizedValue, 1.0 / curveMultiplier) - var value = deCurvedValue - if self.readPrefAsBool(key: .invertDDC, for: command) { - value = 1 - value - } - return max(min(value, 1), 0) - } - - func playVolumeChangedSound() { - guard let preferences = app.getSystemPreferences(), let hasSoundEnabled = preferences["com.apple.sound.beep.feedback"] as? Int, hasSoundEnabled == 1 else { - return - } - do { - self.audioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: "/System/Library/LoginPlugins/BezelServices.loginPlugin/Contents/Resources/volume.aiff")) - self.audioPlayer?.volume = 1 - self.audioPlayer?.play() - } catch { - os_log("%{public}@", type: .error, error.localizedDescription) - } - } - - func combinedBrightnessSwitchingValue() -> Float { - return Float(self.readPrefAsInt(key: .combinedBrightnessSwitchingPoint) + 8) / 16 - } -} diff --git a/MonitorControl/MonitorControl.entitlements b/MonitorControl/MonitorControl.entitlements deleted file mode 100644 index d35e43ae..00000000 --- a/MonitorControl/MonitorControl.entitlements +++ /dev/null @@ -1,8 +0,0 @@ - - - - - com.apple.security.cs.allow-jit - - - diff --git a/MonitorControl/Support/AppDelegate.swift b/MonitorControl/Support/AppDelegate.swift deleted file mode 100644 index b4db5f60..00000000 --- a/MonitorControl/Support/AppDelegate.swift +++ /dev/null @@ -1,302 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import Cocoa -import Foundation -import MediaKeyTap -import os.log -import Preferences -import ServiceManagement -import SimplyCoreAudio -import Sparkle - -class AppDelegate: NSObject, NSApplicationDelegate { - let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength) - var mediaKeyTap = MediaKeyTapManager() - var keyboardShortcuts = KeyboardShortcutsManager() - let coreAudio = SimplyCoreAudio() - var accessibilityObserver: NSObjectProtocol! - var reconfigureID: Int = 0 // dispatched reconfigure command ID - var sleepID: Int = 0 // sleep event ID - var safeMode = false - var jobRunning = false - let updaterController = SPUStandardUpdaterController(startingUpdater: false, updaterDelegate: nil, userDriverDelegate: nil) - - var preferencePaneStyle: Preferences.Style { - if !DEBUG_MACOS10, #available(macOS 11.0, *) { - return Preferences.Style.toolbarItems - } else { - return Preferences.Style.segmentedControl - } - } - - lazy var preferencesWindowController: PreferencesWindowController = { - PreferencesWindowController( - preferencePanes: [ - mainPrefsVc!, - menuslidersPrefsVc!, - keyboardPrefsVc!, - displaysPrefsVc!, - aboutPrefsVc!, - ], - style: preferencePaneStyle, - animated: true - ) - }() - - func applicationDidFinishLaunching(_: Notification) { - app = self - menu = MenuHandler() - menu.delegate = menu - self.subscribeEventListeners() - if NSEvent.modifierFlags.contains(NSEvent.ModifierFlags.shift) { - self.safeMode = true - let alert = NSAlert() - alert.messageText = NSLocalizedString("Safe Mode Activated", comment: "Shown in the alert dialog") - alert.informativeText = NSLocalizedString("Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked.", comment: "Shown in the alert dialog") - alert.runModal() - } - let currentBuildNumber = Int(Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as? String ?? "1") ?? 1 - let previousBuildNumber: Int = (Int(prefs.string(forKey: PrefKey.buildNumber.rawValue) ?? "0") ?? 0) - if self.safeMode || ((previousBuildNumber < MIN_PREVIOUS_BUILD_NUMBER) && previousBuildNumber > 0) || (previousBuildNumber > currentBuildNumber), let bundleID = Bundle.main.bundleIdentifier { - if !self.safeMode { - let alert = NSAlert() - alert.messageText = NSLocalizedString("Incompatible previous version", comment: "Shown in the alert dialog") - alert.informativeText = NSLocalizedString("Preferences for an incompatible previous app version detected. Default preferences are reloaded.", comment: "Shown in the alert dialog") - alert.runModal() - } - prefs.removePersistentDomain(forName: bundleID) - } - prefs.set(currentBuildNumber, forKey: PrefKey.buildNumber.rawValue) - self.setDefaultPrefs() - if !DEBUG_MACOS10, #available(macOS 11.0, *) { - self.statusItem.button?.image = NSImage(systemSymbolName: "sun.max", accessibilityDescription: "MonitorControl") - } else { - self.statusItem.button?.image = NSImage(named: "status") - } - self.statusItem.menu = menu - self.checkPermissions() - CGDisplayRegisterReconfigurationCallback({ _, _, _ in app.displayReconfigured() }, nil) - self.configure(firstrun: true) - DisplayManager.shared.createGammaActivityEnforcer() - self.updaterController.startUpdater() - } - - @objc func quitClicked(_: AnyObject) { - os_log("Quit clicked", type: .debug) - NSApplication.shared.terminate(self) - } - - @objc func prefsClicked(_: AnyObject) { - os_log("Preferences clicked", type: .debug) - self.preferencesWindowController.show() - } - - func applicationShouldHandleReopen(_: NSApplication, hasVisibleWindows _: Bool) -> Bool { - app.prefsClicked(self) - return true - } - - func applicationWillTerminate(_: Notification) { - os_log("Goodbye!", type: .info) - DisplayManager.shared.resetSwBrightnessForAllDisplays() - self.statusItem.isVisible = true - } - - func setDefaultPrefs() { - if !prefs.bool(forKey: PrefKey.appAlreadyLaunched.rawValue) { - // Only preferences that are not false, 0 or "" by default are set here. Assumes pre-wiped database. - prefs.set(true, forKey: PrefKey.appAlreadyLaunched.rawValue) - prefs.set(true, forKey: PrefKey.SUEnableAutomaticChecks.rawValue) - } - } - - func displayReconfigured() { - self.reconfigureID += 1 - os_log("Bumping reconfigureID to %{public}@", type: .info, String(self.reconfigureID)) - _ = DisplayManager.shared.destroyAllShades() - if self.sleepID == 0 { - let dispatchedReconfigureID = self.reconfigureID - os_log("Display to be reconfigured with reconfigureID %{public}@", type: .info, String(dispatchedReconfigureID)) - DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) { - self.configure(dispatchedReconfigureID: dispatchedReconfigureID) - } - } - } - - func configure(dispatchedReconfigureID: Int = 0, firstrun: Bool = false) { - guard self.sleepID == 0, dispatchedReconfigureID == self.reconfigureID else { - return - } - os_log("Request for configuration with reconfigreID %{public}@", type: .info, String(dispatchedReconfigureID)) - self.reconfigureID = 0 - DisplayManager.shared.configureDisplays() - DisplayManager.shared.addDisplayCounterSuffixes() - DisplayManager.shared.updateArm64AVServices() - if firstrun { - DisplayManager.shared.resetSwBrightnessForAllDisplays(settingsOnly: true) - } - DisplayManager.shared.setupOtherDisplays(firstrun: firstrun) - self.updateMenusAndKeys() - if !firstrun { - if !prefs.bool(forKey: PrefKey.disableSoftwareFallback.rawValue) || !prefs.bool(forKey: PrefKey.disableCombinedBrightness.rawValue) { - DisplayManager.shared.restoreSwBrightnessForAllDisplays(async: !prefs.bool(forKey: PrefKey.disableSmoothBrightness.rawValue)) - } - } - displaysPrefsVc?.loadDisplayList() - self.job(start: true) - } - - func updateMenusAndKeys() { - menu.updateMenus() - self.updateMediaKeyTap() - } - - func checkPermissions() { - let permissionsRequired: Bool = [KeyboardVolume.media.rawValue, KeyboardVolume.both.rawValue].contains(prefs.integer(forKey: PrefKey.keyboardVolume.rawValue)) || [KeyboardBrightness.media.rawValue, KeyboardBrightness.both.rawValue].contains(prefs.integer(forKey: PrefKey.keyboardBrightness.rawValue)) - if !MediaKeyTapManager.readPrivileges(prompt: false) && permissionsRequired { - MediaKeyTapManager.acquirePrivileges() - } - } - - private func subscribeEventListeners() { - NotificationCenter.default.addObserver(self, selector: #selector(self.audioDeviceChanged), name: Notification.Name.defaultOutputDeviceChanged, object: nil) // subscribe Audio output detector (SimplyCoreAudio) - DistributedNotificationCenter.default.addObserver(self, selector: #selector(self.colorSyncSettingsChanged), name: NSNotification.Name(rawValue: kColorSyncDisplayDeviceProfilesNotification.takeRetainedValue() as String), object: nil) // ColorSync change - NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(self.sleepNotification), name: NSWorkspace.screensDidSleepNotification, object: nil) // sleep and wake listeners - NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(self.wakeNotofication), name: NSWorkspace.screensDidWakeNotification, object: nil) - NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(self.sleepNotification), name: NSWorkspace.willSleepNotification, object: nil) - NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(self.wakeNotofication), name: NSWorkspace.didWakeNotification, object: nil) - _ = DistributedNotificationCenter.default().addObserver(forName: NSNotification.Name(rawValue: NSNotification.Name.accessibilityApi.rawValue), object: nil, queue: nil) { _ in DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { self.updateMediaKeyTap() } } // listen for accessibility status changes - } - - @objc private func sleepNotification() { - self.sleepID += 1 - os_log("Sleeping with sleep %{public}@", type: .info, String(self.sleepID)) - } - - @objc private func wakeNotofication() { - if self.sleepID != 0 { - os_log("Waking up from sleep %{public}@", type: .info, String(self.sleepID)) - let dispatchedSleepID = self.sleepID - DispatchQueue.main.asyncAfter(deadline: .now() + 6.0) { // Some displays take time to recover... - self.soberNow(dispatchedSleepID: dispatchedSleepID) - } - } - } - - private func soberNow(dispatchedSleepID: Int) { - if self.sleepID == dispatchedSleepID { - os_log("Sober from sleep %{public}@", type: .info, String(self.sleepID)) - self.sleepID = 0 - if self.reconfigureID != 0 { - let dispatchedReconfigureID = self.reconfigureID - os_log("Display needs reconfig after sober with reconfigureID %{public}@", type: .info, String(dispatchedReconfigureID)) - self.configure(dispatchedReconfigureID: dispatchedReconfigureID) - } else if Arm64DDC.isArm64 { - os_log("Displays don't need reconfig after sober but might need AVServices update", type: .info) - DisplayManager.shared.updateArm64AVServices() - self.job(start: true) - } - } - } - - private func job(start: Bool = false) { - guard !(self.jobRunning && start) else { - return - } - if self.sleepID == 0, self.reconfigureID == 0 { - if !self.jobRunning { - os_log("MonitorControl job started.", type: .debug) - self.jobRunning = true - } - var refreshedSomething = false - for display in DisplayManager.shared.displays { - let delta = display.refreshBrightness() - if delta != 0 { - refreshedSomething = true - if prefs.bool(forKey: PrefKey.enableBrightnessSync.rawValue) { - for targetDisplay in DisplayManager.shared.displays where targetDisplay != display { - os_log("Updating delta from display %{public}@ to display %{public}@", type: .debug, String(display.identifier), String(targetDisplay.identifier)) - let newValue = max(0, min(1, targetDisplay.getBrightness() + delta)) - _ = targetDisplay.setBrightness(newValue) - if let slider = targetDisplay.sliderHandler[.brightness] { - slider.setValue(newValue, displayID: targetDisplay.identifier) - } - } - } - } - } - let nextRefresh = refreshedSomething ? 0.1 : 1.0 - DispatchQueue.main.asyncAfter(deadline: .now() + nextRefresh) { - self.job() - } - } else { - self.jobRunning = false - os_log("MonitorControl job died because of sleep or reconfiguration.", type: .info) - } - } - - @objc private func colorSyncSettingsChanged() { - CGDisplayRestoreColorSyncSettings() - self.displayReconfigured() - } - - func handleListenForChanged() { - self.checkPermissions() - self.updateMediaKeyTap() - } - - func preferenceReset() { - os_log("Resetting all preferences.") - if !prefs.bool(forKey: PrefKey.disableSoftwareFallback.rawValue) || !prefs.bool(forKey: PrefKey.disableCombinedBrightness.rawValue) { - DisplayManager.shared.resetSwBrightnessForAllDisplays(async: false) - } - if let bundleID = Bundle.main.bundleIdentifier { - prefs.removePersistentDomain(forName: bundleID) - } - app.statusItem.isVisible = true - self.setDefaultPrefs() - self.checkPermissions() - self.updateMediaKeyTap() - self.configure(firstrun: true) - } - - @objc func audioDeviceChanged() { - if let defaultDevice = self.coreAudio.defaultOutputDevice { - os_log("Default output device changed to “%{public}@”.", type: .debug, defaultDevice.name) - os_log("Can device set its own volume? %{public}@", type: .debug, defaultDevice.canSetVirtualMasterVolume(scope: .output).description) - } - self.updateMediaKeyTap() - } - - func updateMediaKeyTap() { - MediaKeyTap.useAlternateBrightnessKeys = !prefs.bool(forKey: PrefKey.disableAltBrightnessKeys.rawValue) - self.mediaKeyTap.updateMediaKeyTap() - } - - func setStartAtLogin(enabled: Bool) { - let identifier = "\(Bundle.main.bundleIdentifier!)Helper" as CFString - SMLoginItemSetEnabled(identifier, enabled) - } - - func getSystemPreferences() -> [String: AnyObject]? { - var propertyListFormat = PropertyListSerialization.PropertyListFormat.xml - let plistPath = NSString(string: "~/Library/Preferences/.GlobalPreferences.plist").expandingTildeInPath - guard let plistXML = FileManager.default.contents(atPath: plistPath) else { - return nil - } - do { - return try PropertyListSerialization.propertyList(from: plistXML, options: .mutableContainersAndLeaves, format: &propertyListFormat) as? [String: AnyObject] - } catch { - os_log("Error reading system prefs plist: %{public}@", type: .info, error.localizedDescription) - return nil - } - } - - func macOS10() -> Bool { - if !DEBUG_MACOS10, #available(macOS 11.0, *) { - return false - } else { - return true - } - } -} diff --git a/MonitorControl/Support/Arm64DDC.swift b/MonitorControl/Support/Arm64DDC.swift deleted file mode 100644 index be78bf1d..00000000 --- a/MonitorControl/Support/Arm64DDC.swift +++ /dev/null @@ -1,280 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import Foundation -import IOKit - -class Arm64DDC: NSObject { - public struct DisplayService { - var displayID: CGDirectDisplayID = 0 - var service: IOAVService? - var serviceLocation: Int = 0 - var isDiscouraged: Bool = false - } - - #if arch(arm64) - public static let isArm64: Bool = true - #else - public static let isArm64: Bool = false - #endif - - // This matches Displays to the right IOAVService - public static func getServiceMatches(displayIDs: [CGDirectDisplayID]) -> [DisplayService] { - let ioregServicesForMatching = self.getIoregServicesForMatching() - var matchedDisplayServices: [DisplayService] = [] - var scoredCandidateDisplayServices: [Int: [DisplayService]] = [:] - for displayID in displayIDs { - for ioregServiceForMatching in ioregServicesForMatching { - let score = self.ioregMatchScore(displayID: displayID, ioregEdidUUID: ioregServiceForMatching.edidUUID, ioregProductName: ioregServiceForMatching.productName, ioregSerialNumber: ioregServiceForMatching.serialNumber, serviceLocation: ioregServiceForMatching.serviceLocation) - let isDiscouraged = self.checkIfDiscouraged(ioregService: ioregServiceForMatching) - let displayService = DisplayService(displayID: displayID, service: ioregServiceForMatching.service, serviceLocation: ioregServiceForMatching.serviceLocation, isDiscouraged: isDiscouraged) - if scoredCandidateDisplayServices[score] == nil { - scoredCandidateDisplayServices[score] = [] - } - scoredCandidateDisplayServices[score]?.append(displayService) - } - } - var takenServiceLocations: [Int] = [] - var takenDisplayIDs: [CGDirectDisplayID] = [] - for score in stride(from: self.MAX_MATCH_SCORE, to: 0, by: -1) { - if let scoredCandidateDisplayService = scoredCandidateDisplayServices[score] { - for candidateDisplayService in scoredCandidateDisplayService { - if !(takenDisplayIDs.contains(candidateDisplayService.displayID) || takenServiceLocations.contains(candidateDisplayService.serviceLocation)) { - takenDisplayIDs.append(candidateDisplayService.displayID) - takenServiceLocations.append(candidateDisplayService.serviceLocation) - matchedDisplayServices.append(candidateDisplayService) - } - } - } - } - return matchedDisplayServices - } - - // Perform DDC read - public static func read(service: IOAVService?, command: UInt8, tries: UInt8 = 3, minReplyDelay: UInt32 = 10000) -> (current: UInt16, max: UInt16)? { - var values: (UInt16, UInt16)? - var send: [UInt8] = [command] - var reply = [UInt8](repeating: 0, count: 11) - if Arm64DDC.performDDCCommunication(service: service, send: &send, reply: &reply, readSleepTime: minReplyDelay, numOfRetryAttemps: tries) { - let max = UInt16(reply[6]) * 256 + UInt16(reply[7]) - let current = UInt16(reply[8]) * 256 + UInt16(reply[9]) - values = (current, max) - } else { - values = nil - } - return values - } - - // Perform DDC write - public static func write(service: IOAVService?, command: UInt8, value: UInt16) -> Bool { - var send: [UInt8] = [command, UInt8(value >> 8), UInt8(value & 255)] - var reply: [UInt8] = [] - return Arm64DDC.performDDCCommunication(service: service, send: &send, reply: &reply) - } - - // Performs DDC read or write - public static func performDDCCommunication(service: IOAVService?, send: inout [UInt8], reply: inout [UInt8], writeSleepTime: UInt32 = 10000, numofWriteCycles: UInt8 = 2, readSleepTime: UInt32 = 10000, numOfRetryAttemps: UInt8 = 3, retrySleepTime: UInt32 = 20000) -> Bool { - var success: Bool = false - guard service != nil else { - return success - } - var checkedsend: [UInt8] = [UInt8(0x80 | (send.count + 1)), UInt8(send.count)] + send + [0] - checkedsend[checkedsend.count - 1] = self.checksum(chk: send.count == 1 ? 0x6E : 0x6E ^ 0x51, data: &checkedsend, start: 0, end: checkedsend.count - 2) - for _ in 1 ... numOfRetryAttemps { - for _ in 1 ... numofWriteCycles { - usleep(writeSleepTime) - if IOAVServiceWriteI2C(service, 0x37, 0x51, &checkedsend, UInt32(checkedsend.count)) == 0 { - success = true - } - } - if reply.count > 0 { - usleep(readSleepTime) - if IOAVServiceReadI2C(service, 0x37, 0x51, &reply, UInt32(reply.count)) == 0 { - if self.checksum(chk: 0x50, data: &reply, start: 0, end: reply.count - 2) == reply[reply.count - 1] { - success = true - } else { - success = false - } - } - } - if success { - return success - } - usleep(retrySleepTime) - } - return success - } - - // ------- - - private struct IOregService { - var edidUUID: String = "" - var manufacturerID: String = "" - var productName: String = "" - var serialNumber: Int64 = 0 - var location: String = "" - var transportUpstream: String = "" - var transportDownstream: String = "" - var service: IOAVService? - var serviceLocation: Int = 0 - } - - private static let MAX_MATCH_SCORE: Int = 13 - - // DDC checksum calculator - private static func checksum(chk: UInt8, data: inout [UInt8], start: Int, end: Int) -> UInt8 { - var chkd: UInt8 = chk - for i in start ... end { - chkd ^= data[i] - } - return chkd - } - - // Scores the likelihood of a display match based on EDID UUID, ProductName and SerialNumber from in ioreg, compared to DisplayCreateInfoDictionary. - private static func ioregMatchScore(displayID: CGDirectDisplayID, ioregEdidUUID: String, ioregProductName: String = "", ioregSerialNumber: Int64 = 0, serviceLocation: Int = 0) -> Int { - var matchScore: Int = 0 - if let dictionary = (CoreDisplay_DisplayCreateInfoDictionary(displayID))?.takeRetainedValue() as NSDictionary? { - if let kDisplayYearOfManufacture = dictionary[kDisplayYearOfManufacture] as? Int64, let kDisplayWeekOfManufacture = dictionary[kDisplayWeekOfManufacture] as? Int64, let kDisplayVendorID = dictionary[kDisplayVendorID] as? Int64, let kDisplayProductID = dictionary[kDisplayProductID] as? Int64, let kDisplayVerticalImageSize = dictionary[kDisplayVerticalImageSize] as? Int64, let kDisplayHorizontalImageSize = dictionary[kDisplayHorizontalImageSize] as? Int64 { - struct KeyLoc { - var key: String - var loc: Int - } - let edidUUIDSearchKeys: [KeyLoc] = [ - // Vendor ID - KeyLoc(key: String(format: "%04x", UInt16(max(0, min(kDisplayVendorID, 256 * 256 - 1)))).uppercased(), loc: 0), - // Product ID - KeyLoc(key: String(format: "%02x", UInt8((UInt16(max(0, min(kDisplayProductID, 256 * 256 - 1))) >> (0 * 8)) & 0xFF)).uppercased() - + String(format: "%02x", UInt8((UInt16(max(0, min(kDisplayProductID, 256 * 256 - 1))) >> (1 * 8)) & 0xFF)).uppercased(), loc: 4), - // Manufacture date - KeyLoc(key: String(format: "%02x", UInt8(max(0, min(kDisplayWeekOfManufacture, 256 - 1)))).uppercased() - + String(format: "%02x", UInt8(max(0, min(kDisplayYearOfManufacture - 1990, 256 - 1)))).uppercased(), loc: 19), - // Image size - KeyLoc(key: String(format: "%02x", UInt8(max(0, min(kDisplayHorizontalImageSize / 10, 256 - 1)))).uppercased() - + String(format: "%02x", UInt8(max(0, min(kDisplayVerticalImageSize / 10, 256 - 1)))).uppercased(), loc: 30), - ] - for searchKey in edidUUIDSearchKeys where searchKey.key != "0000" && searchKey.key == ioregEdidUUID.prefix(searchKey.loc + 4).suffix(4) { - matchScore += 2 - } - } - if ioregProductName != "", let nameList = dictionary["DisplayProductName"] as? [String: String], let name = nameList["en_US"] ?? nameList.first?.value, name.lowercased() == ioregProductName.lowercased() { - matchScore += 2 - } - if ioregSerialNumber != 0, let serial = dictionary[kDisplaySerialNumber] as? Int64, serial == ioregSerialNumber { - matchScore += 2 - } - if serviceLocation == displayID { - matchScore += 1 - } - } - return matchScore - } - - // Iterate to the next AppleCLCD2 or DCPAVServiceProxy item in the ioreg tree and return the name and corresponding service - private static func ioregIterateToNextObjectOfInterest(interests _: [String], iterator: inout io_iterator_t) -> (name: String, service: io_service_t)? { - var objectName: String = "" - var service: io_service_t = IO_OBJECT_NULL - let name = UnsafeMutablePointer.allocate(capacity: MemoryLayout.size) - defer { - name.deallocate() - } - while true { - service = IOIteratorNext(iterator) - guard service != MACH_PORT_NULL else { - service = IO_OBJECT_NULL - break - } - guard IORegistryEntryGetName(service, name) == KERN_SUCCESS else { - service = IO_OBJECT_NULL - break - } - if String(cString: name) == "AppleCLCD2" || String(cString: name) == "DCPAVServiceProxy" { - objectName = String(cString: name) - return (objectName, service) - } - } - return nil - } - - // Returns EDID UUDI, Product Name and Serial Number in an IOregService if it is found using the provided io_service_t pointing to a AppleCDC2 item in the ioreg tree - private static func getIORegServiceAppleCDC2Properties(service: io_service_t) -> IOregService { - var ioregService = IOregService() - if let unmanagedEdidUUID = IORegistryEntryCreateCFProperty(service, CFStringCreateWithCString(kCFAllocatorDefault, "EDID UUID", kCFStringEncodingASCII), kCFAllocatorDefault, IOOptionBits(kIORegistryIterateRecursively)), let edidUUID = unmanagedEdidUUID.takeRetainedValue() as? String { - ioregService.edidUUID = edidUUID - } - if let unmanagedDisplayAttrs = IORegistryEntryCreateCFProperty(service, CFStringCreateWithCString(kCFAllocatorDefault, "DisplayAttributes", kCFStringEncodingASCII), kCFAllocatorDefault, IOOptionBits(kIORegistryIterateRecursively)), let displayAttrs = unmanagedDisplayAttrs.takeRetainedValue() as? NSDictionary, let productAttrs = displayAttrs.value(forKey: "ProductAttributes") as? NSDictionary { - if let manufacturerID = productAttrs.value(forKey: "ManufacturerID") as? String { - ioregService.manufacturerID = manufacturerID - } - if let productName = productAttrs.value(forKey: "ProductName") as? String { - ioregService.productName = productName - } - if let serialNumber = productAttrs.value(forKey: "SerialNumber") as? Int64 { - ioregService.serialNumber = serialNumber - } - } - if let unmanagedTransport = IORegistryEntryCreateCFProperty(service, CFStringCreateWithCString(kCFAllocatorDefault, "Transport", kCFStringEncodingASCII), kCFAllocatorDefault, IOOptionBits(kIORegistryIterateRecursively)), let transport = unmanagedTransport.takeRetainedValue() as? NSDictionary { - if let upstream = transport.value(forKey: "Upstream") as? String { - ioregService.transportUpstream = upstream - } - if let downstream = transport.value(forKey: "Downstream") as? String { - ioregService.transportDownstream = downstream - } - } - return ioregService - } - - // Sets up the service in an IOregService if it is found using the provided io_service_t pointing to a DCPAVServiceProxy item in the ioreg tree - private static func setIORegServiceDCPAVServiceProxy(service: io_service_t, ioregService: inout IOregService) { - if let unmanagedLocation = IORegistryEntryCreateCFProperty(service, CFStringCreateWithCString(kCFAllocatorDefault, "Location", kCFStringEncodingASCII), kCFAllocatorDefault, IOOptionBits(kIORegistryIterateRecursively)), let location = unmanagedLocation.takeRetainedValue() as? String { - ioregService.location = location - if location == "External" { - ioregService.service = IOAVServiceCreateWithService(kCFAllocatorDefault, service)?.takeRetainedValue() as IOAVService - } - } - } - - // Returns IOAVSerivces with associated display properties for matching logic - private static func getIoregServicesForMatching() -> [IOregService] { - var serviceLocation: Int = 0 - var ioregServicesForMatching: [IOregService] = [] - let ioregRoot: io_registry_entry_t = IORegistryGetRootEntry(kIOMasterPortDefault) - var iterator = io_iterator_t() - var ioregService = IOregService() - guard IORegistryEntryCreateIterator(ioregRoot, "IOService", IOOptionBits(kIORegistryIterateRecursively), &iterator) == KERN_SUCCESS else { - return ioregServicesForMatching - } - while true { - if let objectOfInterest = ioregIterateToNextObjectOfInterest(interests: ["AppleCLCD2", "DCPAVServiceProxy"], iterator: &iterator) { - if objectOfInterest.name == "AppleCLCD2", objectOfInterest.service != IO_OBJECT_NULL { - ioregService = self.getIORegServiceAppleCDC2Properties(service: objectOfInterest.service) - serviceLocation += 1 - ioregService.serviceLocation = serviceLocation - } - if objectOfInterest.name == "DCPAVServiceProxy", objectOfInterest.service != IO_OBJECT_NULL { - self.setIORegServiceDCPAVServiceProxy(service: objectOfInterest.service, ioregService: &ioregService) - ioregServicesForMatching.append(ioregService) - } - } else { - break - } - } - return ioregServicesForMatching - } - - // Check if it is problematic to enable DDC on the display - private static func checkIfDiscouraged(ioregService: IOregService) -> Bool { - var modelIdentifier: String = "" - let platformExpertDevice = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IOPlatformExpertDevice")) - if let modelData = IORegistryEntryCreateCFProperty(platformExpertDevice, "model" as CFString, kCFAllocatorDefault, 0).takeRetainedValue() as? Data, let modelIdentifierCString = String(data: modelData, encoding: .utf8)?.cString(using: .utf8) { - modelIdentifier = String(cString: modelIdentifierCString) - } - // This is a well known dummy plug (not a real display) but it breaks DDC communication on M1 - if ioregService.manufacturerID == "AOC", ioregService.productName == "28E850" { - return true - } - // First service location of Mac Mini HDMI is broken for DDC communication - if ioregService.transportDownstream == "HDMI", ioregService.serviceLocation == 1, modelIdentifier == "Macmini9,1" { - return true - } - return false - } -} diff --git a/MonitorControl/Support/Bridging-Header.h b/MonitorControl/Support/Bridging-Header.h deleted file mode 100644 index f67561a8..00000000 --- a/MonitorControl/Support/Bridging-Header.h +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -#pragma once - -#import -#import -#import - -typedef CFTypeRef IOAVService; -extern IOAVService IOAVServiceCreate(CFAllocatorRef allocator); -extern IOAVService IOAVServiceCreateWithService(CFAllocatorRef allocator, io_service_t service); -extern IOReturn IOAVServiceReadI2C(IOAVService service, uint32_t chipAddress, uint32_t offset, void* outputBuffer, uint32_t outputBufferSize); -extern IOReturn IOAVServiceWriteI2C(IOAVService service, uint32_t chipAddress, uint32_t dataAddress, void* inputBuffer, uint32_t inputBufferSize); -extern CFDictionaryRef CoreDisplay_DisplayCreateInfoDictionary(CGDirectDisplayID); - -extern void DisplayServicesBrightnessChanged(CGDirectDisplayID display, double brightness); -extern int DisplayServicesGetBrightness(CGDirectDisplayID display, float *brightness); -extern int DisplayServicesSetBrightness(CGDirectDisplayID display, float brightness); -extern int DisplayServicesGetLinearBrightness(CGDirectDisplayID display, float *brightness); -extern int DisplayServicesSetLinearBrightness(CGDirectDisplayID display, float brightness); - -extern void CGSServiceForDisplayNumber(CGDirectDisplayID display, io_service_t* service); - -@class NSString; - -@protocol OSDUIHelperProtocol -- (void)showFullScreenImage:(long long)arg1 onDisplayID:(unsigned int)arg2 priority:(unsigned int)arg3 msecToAnimate:(unsigned int)arg4; -- (void)fadeClassicImageOnDisplay:(unsigned int)arg1; -- (void)showImageAtPath:(NSString *)arg1 onDisplayID:(unsigned int)arg2 priority:(unsigned int)arg3 msecUntilFade:(unsigned int)arg4 withText:(NSString *)arg5; -- (void)showImage:(long long)arg1 onDisplayID:(unsigned int)arg2 priority:(unsigned int)arg3 msecUntilFade:(unsigned int)arg4 filledChiclets:(unsigned int)arg5 totalChiclets:(unsigned int)arg6 locked:(BOOL)arg7; -- (void)showImage:(long long)arg1 onDisplayID:(unsigned int)arg2 priority:(unsigned int)arg3 msecUntilFade:(unsigned int)arg4 withText:(NSString *)arg5; -- (void)showImage:(long long)arg1 onDisplayID:(unsigned int)arg2 priority:(unsigned int)arg3 msecUntilFade:(unsigned int)arg4; -@end - -@class NSXPCConnection; - -@interface OSDManager : NSObject -{ - id _proxyObject; - NSXPCConnection *connection; -} - -+ (id)sharedManager; -@property(retain) NSXPCConnection *connection; // @synthesize connection; -- (void)showFullScreenImage:(long long)arg1 onDisplayID:(unsigned int)arg2 priority:(unsigned int)arg3 msecToAnimate:(unsigned int)arg4; -- (void)fadeClassicImageOnDisplay:(unsigned int)arg1; -- (void)showImageAtPath:(id)arg1 onDisplayID:(unsigned int)arg2 priority:(unsigned int)arg3 msecUntilFade:(unsigned int)arg4 withText:(id)arg5; -- (void)showImage:(long long)arg1 onDisplayID:(unsigned int)arg2 priority:(unsigned int)arg3 msecUntilFade:(unsigned int)arg4 filledChiclets:(unsigned int)arg5 totalChiclets:(unsigned int)arg6 locked:(BOOL)arg7; -- (void)showImage:(long long)arg1 onDisplayID:(unsigned int)arg2 priority:(unsigned int)arg3 msecUntilFade:(unsigned int)arg4 withText:(id)arg5; -- (void)showImage:(long long)arg1 onDisplayID:(unsigned int)arg2 priority:(unsigned int)arg3 msecUntilFade:(unsigned int)arg4; -@property(readonly) id remoteObjectProxy; // @dynamic remoteObjectProxy; - -@end - diff --git a/MonitorControl/Support/DisplayManager.swift b/MonitorControl/Support/DisplayManager.swift deleted file mode 100644 index 5bff3542..00000000 --- a/MonitorControl/Support/DisplayManager.swift +++ /dev/null @@ -1,476 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import Cocoa -import CoreGraphics -import os.log - -class DisplayManager { - public static let shared = DisplayManager() - - var displays: [Display] = [] - var audioControlTargetDisplays: [OtherDisplay] = [] - let ddcQueue = DispatchQueue(label: "DDC queue") - let gammaActivityEnforcer = NSWindow(contentRect: .init(origin: NSPoint(x: 0, y: 0), size: .init(width: DEBUG_GAMMA_ENFORCER ? 15 : 1, height: DEBUG_GAMMA_ENFORCER ? 15 : 1)), styleMask: [], backing: .buffered, defer: false) - - func createGammaActivityEnforcer() { - self.gammaActivityEnforcer.title = "Monior Control Gamma Activity Enforcer" - self.gammaActivityEnforcer.isMovableByWindowBackground = false - self.gammaActivityEnforcer.backgroundColor = DEBUG_GAMMA_ENFORCER ? .red : .black - self.gammaActivityEnforcer.ignoresMouseEvents = true - self.gammaActivityEnforcer.level = .screenSaver - self.gammaActivityEnforcer.orderFrontRegardless() - self.gammaActivityEnforcer.collectionBehavior = [.stationary, .canJoinAllSpaces] - os_log("Gamma activity enforcer created.", type: .debug) - } - - func enforceGammaActivity() { - if self.gammaActivityEnforcer.alphaValue == 1 * (DEBUG_GAMMA_ENFORCER ? 0.5 : 0.01) { - self.gammaActivityEnforcer.alphaValue = 2 * (DEBUG_GAMMA_ENFORCER ? 0.5 : 0.01) - } else { - self.gammaActivityEnforcer.alphaValue = 1 * (DEBUG_GAMMA_ENFORCER ? 0.5 : 0.01) - } - } - - func moveGammaActivityEnforcer(displayID: CGDirectDisplayID) { - if let screen = DisplayManager.getByDisplayID(displayID: DisplayManager.resolveEffectiveDisplayID(displayID)) { - self.gammaActivityEnforcer.setFrameOrigin(screen.frame.origin) - } - self.gammaActivityEnforcer.orderFrontRegardless() - } - - internal var shades: [CGDirectDisplayID: NSWindow] = [:] - internal var shadeGrave: [NSWindow] = [] - - func isDisqualifiedFromShade(_ displayID: CGDirectDisplayID) -> Bool { // We ban mirror members from shade control as it might lead to double control - return (CGDisplayIsInHWMirrorSet(displayID) != 0 || CGDisplayIsInMirrorSet(displayID) != 0) ? true : false - } - - internal func createShadeOnDisplay(displayID: CGDirectDisplayID) -> NSWindow? { - if let screen = DisplayManager.getByDisplayID(displayID: displayID) { - let shade = NSWindow(contentRect: .init(origin: NSPoint(x: 0, y: 0), size: .init(width: 10, height: 1)), styleMask: [], backing: .buffered, defer: false) - shade.title = "Monitor Control Window Shade for Display " + String(displayID) - shade.isMovableByWindowBackground = false - shade.backgroundColor = .black - shade.ignoresMouseEvents = true - shade.level = NSWindow.Level(rawValue: Int(CGShieldingWindowLevel())) - shade.alphaValue = 0 - shade.orderFrontRegardless() - shade.collectionBehavior = [.stationary, .canJoinAllSpaces, .ignoresCycle] - shade.setFrame(screen.frame, display: true) - os_log("Window shade created for display %{public}@", type: .debug, String(displayID)) - return shade - } - return nil - } - - func getShade(displayID: CGDirectDisplayID) -> NSWindow? { - guard !self.isDisqualifiedFromShade(displayID) else { - return nil - } - if let shade = shades[displayID] { - return shade - } else { - if let shade = self.createShadeOnDisplay(displayID: displayID) { - self.shades[displayID] = shade - return shade - } - } - return nil - } - - func destroyAllShades() -> Bool { - var ret = false - for displayID in self.shades.keys { - os_log("Attempting to destory shade for display %{public}@", type: .debug, String(displayID)) - if self.destroyShade(displayID: displayID) { - ret = true - } - } - if ret { - os_log("Destroyed all shades.", type: .debug) - } else { - os_log("No shades were found to be destroyed.", type: .debug) - } - return ret - } - - func destroyShade(displayID: CGDirectDisplayID) -> Bool { - if let shade = shades[displayID] { - os_log("Destroying shade for display %{public}@", type: .debug, String(displayID)) - self.shadeGrave.append(shade) - self.shades.removeValue(forKey: displayID) - shade.close() - return true - } - return false - } - - func updateShade(displayID: CGDirectDisplayID) -> Bool { - guard !self.isDisqualifiedFromShade(displayID) else { - return false - } - if let screen = DisplayManager.getByDisplayID(displayID: displayID) { - if let shade = getShade(displayID: displayID) { - shade.setFrame(screen.frame, display: true) - return true - } - } - return false - } - - func getShadeAlpha(displayID: CGDirectDisplayID) -> Float? { - guard !self.isDisqualifiedFromShade(displayID) else { - return 1 - } - if let shade = getShade(displayID: displayID) { - return Float(shade.alphaValue) - } else { - return 1 - } - } - - func setShadeAlpha(value: Float, displayID: CGDirectDisplayID) -> Bool { - guard !self.isDisqualifiedFromShade(displayID) else { - return false - } - if let shade = getShade(displayID: displayID) { - shade.alphaValue = CGFloat(value) - return true - } - return false - } - - func configureDisplays() { - self.clearDisplays() - var onlineDisplayIDs = [CGDirectDisplayID](repeating: 0, count: 16) - var displayCount: UInt32 = 0 - guard CGGetOnlineDisplayList(16, &onlineDisplayIDs, &displayCount) == .success else { - os_log("Unable to get display list.", type: .info) - return - } - for onlineDisplayID in onlineDisplayIDs where onlineDisplayID != 0 { - let name = DisplayManager.getDisplayNameByID(displayID: onlineDisplayID) - let id = onlineDisplayID - let vendorNumber = CGDisplayVendorNumber(onlineDisplayID) - let modelNumber = CGDisplayModelNumber(onlineDisplayID) - var isVirtual: Bool = false - if !DEBUG_MACOS10, #available(macOS 11.0, *) { - if let dictionary = ((CoreDisplay_DisplayCreateInfoDictionary(onlineDisplayID))?.takeRetainedValue() as NSDictionary?) { - let isVirtualDevice = dictionary["kCGDisplayIsVirtualDevice"] as? Bool - let displayIsAirplay = dictionary["kCGDisplayIsAirPlay"] as? Bool - if isVirtualDevice ?? displayIsAirplay ?? false { - isVirtual = true - } - } - } - if !DEBUG_SW, DisplayManager.isAppleDisplay(displayID: onlineDisplayID) { // MARK: (point of interest for testing) - let appleDisplay = AppleDisplay(id, name: name, vendorNumber: vendorNumber, modelNumber: modelNumber, isVirtual: isVirtual) - os_log("Apple display found - %{public}@", type: .info, "ID: \(appleDisplay.identifier) Name: \(appleDisplay.name) (Vendor: \(appleDisplay.vendorNumber ?? 0), Model: \(appleDisplay.modelNumber ?? 0))") - self.addDisplay(display: appleDisplay) - } else { - let otherDisplay = OtherDisplay(id, name: name, vendorNumber: vendorNumber, modelNumber: modelNumber, isVirtual: isVirtual) - os_log("Other display found - %{public}@", type: .info, "ID: \(otherDisplay.identifier) Name: \(otherDisplay.name) (Vendor: \(otherDisplay.vendorNumber ?? 0), Model: \(otherDisplay.modelNumber ?? 0))") - self.addDisplay(display: otherDisplay) - } - } - } - - func setupOtherDisplays(firstrun: Bool = false) { - for otherDisplay in self.getOtherDisplays() { - if !otherDisplay.isSw(), !otherDisplay.readPrefAsBool(key: .unavailableDDC, for: .audioSpeakerVolume) { - otherDisplay.setupCurrentAndMaxValues(command: .audioSpeakerVolume, firstrun: firstrun) - } - if !otherDisplay.isSw(), !otherDisplay.readPrefAsBool(key: .unavailableDDC, for: .contrast) { - otherDisplay.setupCurrentAndMaxValues(command: .contrast, firstrun: firstrun) - } - if (!otherDisplay.isSw() && !otherDisplay.readPrefAsBool(key: .unavailableDDC, for: .brightness)) || otherDisplay.isSw() { - otherDisplay.setupCurrentAndMaxValues(command: .brightness, firstrun: firstrun) - otherDisplay.brightnessSyncSourceValue = otherDisplay.readPrefAsFloat(for: .brightness) - } - } - } - - func normalizedName(_ name: String) -> String { - var normalizedName = name.replacingOccurrences(of: "(", with: "") - normalizedName = normalizedName.replacingOccurrences(of: ")", with: "") - normalizedName = normalizedName.replacingOccurrences(of: " ", with: "") - for i in 0 ... 9 { - normalizedName = normalizedName.replacingOccurrences(of: String(i), with: "") - } - return normalizedName - } - - func updateAudioControlTargetDisplays(deviceName: String) -> Int { - self.audioControlTargetDisplays.removeAll() - os_log("Detecting displays for audio control via audio device name matching...", type: .debug) - var numOfAddedDisplays: Int = 0 - for ddcCapableDisplay in self.getDdcCapableDisplays() { - var displayAudioDeviceName = ddcCapableDisplay.readPrefAsString(key: .audioDeviceNameOverride) - if displayAudioDeviceName == "" { - displayAudioDeviceName = DisplayManager.getDisplayRawNameByID(displayID: ddcCapableDisplay.identifier) - } - if self.normalizedName(displayAudioDeviceName) == self.normalizedName(deviceName) { - self.audioControlTargetDisplays.append(ddcCapableDisplay) - numOfAddedDisplays += 1 - os_log("Added display for audio control - %{public}@", type: .debug, ddcCapableDisplay.name) - } - } - return numOfAddedDisplays - } - - func getOtherDisplays() -> [OtherDisplay] { - return self.displays.compactMap { $0 as? OtherDisplay } - } - - func getAllDisplays() -> [Display] { - return self.displays - } - - func getDdcCapableDisplays() -> [OtherDisplay] { - return self.displays.compactMap { display -> OtherDisplay? in - if let otherDisplay = display as? OtherDisplay, !otherDisplay.isSw() { - return otherDisplay - } else { return nil } - } - } - - func getAppleDisplays() -> [AppleDisplay] { - return self.displays.compactMap { $0 as? AppleDisplay } - } - - func getBuiltInDisplay() -> Display? { - return self.displays.first { CGDisplayIsBuiltin($0.identifier) != 0 } - } - - func getCurrentDisplay(byFocus: Bool = false) -> Display? { - if byFocus { - guard let mainDisplayID = NSScreen.main?.displayID else { - return nil - } - return self.displays.first { $0.identifier == mainDisplayID } - } else { - let mouseLocation = NSEvent.mouseLocation - let screens = NSScreen.screens - if let screenWithMouse = (screens.first { NSMouseInRect(mouseLocation, $0.frame, false) }) { - return self.displays.first { $0.identifier == screenWithMouse.displayID } - } - return nil - } - } - - func addDisplay(display: Display) { - self.displays.append(display) - } - - func clearDisplays() { - self.displays = [] - } - - func addDisplayCounterSuffixes() { - var nameDisplays: [String: [Display]] = [:] - for display in self.displays { - if nameDisplays[display.name] != nil { - nameDisplays[display.name]?.append(display) - } else { - nameDisplays[display.name] = [display] - } - } - for nameDisplayKey in nameDisplays.keys where nameDisplays[nameDisplayKey]?.count ?? 0 > 1 { - for i in 0 ... (nameDisplays[nameDisplayKey]?.count ?? 1) - 1 { - if let display = nameDisplays[nameDisplayKey]?[i] { - display.name = "" + display.name + " (" + String(i + 1) + ")" - } - } - } - } - - func updateArm64AVServices() { - if Arm64DDC.isArm64 { - os_log("arm64 AVService update requested", type: .info) - var displayIDs: [CGDirectDisplayID] = [] - for otherDisplay in self.getOtherDisplays() { - displayIDs.append(otherDisplay.identifier) - } - for serviceMatch in Arm64DDC.getServiceMatches(displayIDs: displayIDs) { - for otherDisplay in self.getOtherDisplays() where otherDisplay.identifier == serviceMatch.displayID && serviceMatch.service != nil { - otherDisplay.arm64avService = serviceMatch.service - os_log("Display service match successful for display %{public}@", type: .info, String(serviceMatch.displayID)) - if serviceMatch.isDiscouraged { - os_log("Display %{public}@ is flagged as discouraged by Arm64DDC.", type: .info, String(serviceMatch.displayID)) - otherDisplay.isDiscouraged = serviceMatch.isDiscouraged - } else { - otherDisplay.arm64ddc = DEBUG_SW ? false : true // MARK: (point of interest when testing) - } - } - } - os_log("AVService update done", type: .info) - } - } - - func resetSwBrightnessForAllDisplays(settingsOnly: Bool = false, async: Bool = false) { - for otherDisplay in self.getOtherDisplays() { - if !settingsOnly { - _ = otherDisplay.setSwBrightness(1, smooth: async) - otherDisplay.smoothBrightnessTransient = 1 - } else { - otherDisplay.savePref(1, key: .SwBrightness) - otherDisplay.smoothBrightnessTransient = 1 - } - if otherDisplay.isSw() { - otherDisplay.savePref(1, for: .brightness) - } - } - } - - func restoreSwBrightnessForAllDisplays(async: Bool = false) { - for otherDisplay in self.getOtherDisplays() { - if (otherDisplay.readPrefAsFloat(for: .brightness) == 0 && !prefs.bool(forKey: PrefKey.disableCombinedBrightness.rawValue)) || (otherDisplay.readPrefAsFloat(for: .brightness) < otherDisplay.combinedBrightnessSwitchingValue() && !prefs.bool(forKey: PrefKey.separateCombinedScale.rawValue) && !prefs.bool(forKey: PrefKey.disableCombinedBrightness.rawValue)) || otherDisplay.isSw() { - let savedPrefValue = otherDisplay.readPrefAsFloat(key: .SwBrightness) - if otherDisplay.getSwBrightness() != savedPrefValue { - OSDUtils.popEmptyOsd(displayID: otherDisplay.identifier, command: Command.brightness) // This will give the user a hint why is the brightness suddenly changes and also give screen activity to counter the 'no gamma change when there is no screen activity' issue on some macs - } - otherDisplay.savePref(otherDisplay.getSwBrightness(), key: .SwBrightness) - os_log("Restoring sw brightness to %{public}@ on other display %{public}@", type: .debug, String(savedPrefValue), String(otherDisplay.identifier)) - _ = otherDisplay.setSwBrightness(savedPrefValue, smooth: async) - if otherDisplay.isSw(), let slider = otherDisplay.sliderHandler[.brightness] { - os_log("Restoring sw slider to %{public}@ for other display %{public}@", type: .debug, String(savedPrefValue), String(otherDisplay.identifier)) - slider.setValue(savedPrefValue, displayID: otherDisplay.identifier) - } - } else { - _ = otherDisplay.setSwBrightness(1) - } - } - } - - func getAffectedDisplays(isBrightness: Bool = false, isVolume: Bool = false, isContrast _: Bool = false) -> [Display]? { - var affectedDisplays: [Display] - let allDisplays = self.getAllDisplays() - var currentDisplay: Display? - if isBrightness { - if prefs.bool(forKey: PrefKey.allScreensBrightness.rawValue) { - affectedDisplays = allDisplays - return affectedDisplays - } - currentDisplay = self.getCurrentDisplay(byFocus: prefs.bool(forKey: PrefKey.useFocusInsteadOfMouse.rawValue)) - } - if isVolume { - if prefs.bool(forKey: PrefKey.allScreensVolume.rawValue) { - affectedDisplays = allDisplays - return affectedDisplays - } else if prefs.bool(forKey: PrefKey.useAudioDeviceNameMatching.rawValue) { - return self.audioControlTargetDisplays - } - currentDisplay = self.getCurrentDisplay(byFocus: false) - } - if let currentDisplay = currentDisplay { - affectedDisplays = [currentDisplay] - if CGDisplayIsInHWMirrorSet(currentDisplay.identifier) != 0 || CGDisplayIsInMirrorSet(currentDisplay.identifier) != 0, CGDisplayMirrorsDisplay(currentDisplay.identifier) == 0 { - for display in allDisplays where CGDisplayMirrorsDisplay(display.identifier) == currentDisplay.identifier { - affectedDisplays.append(display) - } - } - } else { - affectedDisplays = [] - } - return affectedDisplays - } - - static func engageMirror() -> Bool { - var onlineDisplayIDs = [CGDirectDisplayID](repeating: 0, count: 16) - var displayCount: UInt32 = 0 - guard CGGetOnlineDisplayList(16, &onlineDisplayIDs, &displayCount) == .success, displayCount > 1 else { - return false - } - // Break display mirror if there is any - var mirrorBreak = false - var displayConfigRef: CGDisplayConfigRef? - for onlineDisplayID in onlineDisplayIDs where onlineDisplayID != 0 { - if CGDisplayIsInHWMirrorSet(onlineDisplayID) != 0 || CGDisplayIsInMirrorSet(onlineDisplayID) != 0 { - if mirrorBreak == false { - CGBeginDisplayConfiguration(&displayConfigRef) - } - CGConfigureDisplayMirrorOfDisplay(displayConfigRef, onlineDisplayID, kCGNullDirectDisplay) - mirrorBreak = true - } - } - if mirrorBreak { - CGCompleteDisplayConfiguration(displayConfigRef, CGConfigureOption.permanently) - return true - } - // Build display mirror - var mainDisplayId = kCGNullDirectDisplay - for onlineDisplayID in onlineDisplayIDs where onlineDisplayID != 0 { - if CGDisplayIsBuiltin(onlineDisplayID) == 0, mainDisplayId == kCGNullDirectDisplay { - mainDisplayId = onlineDisplayID - } - } - guard mainDisplayId != kCGNullDirectDisplay else { - return false - } - CGBeginDisplayConfiguration(&displayConfigRef) - for onlineDisplayID in onlineDisplayIDs where onlineDisplayID != 0 && onlineDisplayID != mainDisplayId { - CGConfigureDisplayMirrorOfDisplay(displayConfigRef, onlineDisplayID, mainDisplayId) - } - CGCompleteDisplayConfiguration(displayConfigRef, CGConfigureOption.permanently) - return true - } - - static func resolveEffectiveDisplayID(_ displayID: CGDirectDisplayID) -> CGDirectDisplayID { - var realDisplayID = displayID - if CGDisplayIsInHWMirrorSet(displayID) != 0 || CGDisplayIsInMirrorSet(displayID) != 0 { - let mirroredDisplayID = CGDisplayMirrorsDisplay(displayID) - if mirroredDisplayID != 0 { - realDisplayID = mirroredDisplayID - } - } - return realDisplayID - } - - static func isAppleDisplay(displayID: CGDirectDisplayID) -> Bool { - var brightness: Float = -1 - let ret = DisplayServicesGetBrightness(displayID, &brightness) - if ret == 0, brightness >= 0 { // If brightness read appears to be successful using DisplayServices then it should be an Apple display - return true - } - if CGDisplayIsBuiltin(displayID) != 0 { // If built-in display then it should be Apple (except for hackintosh notebooks...) - return true - } - return false - } - - static func getByDisplayID(displayID: CGDirectDisplayID) -> NSScreen? { - return NSScreen.screens.first { $0.displayID == displayID } - } - - static func getDisplayRawNameByID(displayID: CGDirectDisplayID) -> String { - let defaultName: String = "" - if !DEBUG_MACOS10, #available(macOS 11.0, *) { - if let dictionary = ((CoreDisplay_DisplayCreateInfoDictionary(displayID))?.takeRetainedValue() as NSDictionary?), let nameList = dictionary["DisplayProductName"] as? [String: String], let name = nameList["en_US"] ?? nameList.first?.value { - return name - } - } - if let screen = getByDisplayID(displayID: displayID) { - return screen.displayName ?? defaultName - } - return defaultName - } - - static func getDisplayNameByID(displayID: CGDirectDisplayID) -> String { - let defaultName: String = NSLocalizedString("Unknown", comment: "Unknown display name") - if !DEBUG_MACOS10, #available(macOS 11.0, *) { - if let dictionary = ((CoreDisplay_DisplayCreateInfoDictionary(displayID))?.takeRetainedValue() as NSDictionary?), let nameList = dictionary["DisplayProductName"] as? [String: String], var name = nameList[Locale.current.identifier] ?? nameList["en_US"] ?? nameList.first?.value { - if CGDisplayIsInHWMirrorSet(displayID) != 0 || CGDisplayIsInMirrorSet(displayID) != 0 { - let mirroredDisplayID = CGDisplayMirrorsDisplay(displayID) - if mirroredDisplayID != 0, let dictionary = ((CoreDisplay_DisplayCreateInfoDictionary(mirroredDisplayID))?.takeRetainedValue() as NSDictionary?), let nameList = dictionary["DisplayProductName"] as? [String: String], let mirroredName = nameList[Locale.current.identifier] ?? nameList["en_US"] ?? nameList.first?.value { - name.append("~" + mirroredName) - } - } - return name - } - } - if let screen = getByDisplayID(displayID: displayID) { // MARK: This, and NSScreen+Extension.swift will not be needed when we drop MacOS 10 support. - return screen.localizedName - } - return defaultName - } -} diff --git a/MonitorControl/Support/IntelDDC.swift b/MonitorControl/Support/IntelDDC.swift deleted file mode 100644 index fefd16d5..00000000 --- a/MonitorControl/Support/IntelDDC.swift +++ /dev/null @@ -1,260 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others -// Adapted from IntelDDC.swift, @reitermarkus - -import Foundation -import IOKit.i2c -import os.log - -public class IntelDDC { - let displayId: CGDirectDisplayID - let framebuffer: io_service_t - let replyTransactionType: IOOptionBits - var enabled: Bool = false - - deinit { - assert(IOObjectRelease(self.framebuffer) == KERN_SUCCESS) - } - - public init?(for displayId: CGDirectDisplayID, withReplyTransactionType replyTransactionType: IOOptionBits? = nil) { - self.displayId = displayId - guard let framebuffer = IntelDDC.ioFramebufferPortFromDisplayId(displayId: displayId) else { - return nil - } - self.framebuffer = framebuffer - if let replyTransactionType = replyTransactionType { - self.replyTransactionType = replyTransactionType - } else if let replyTransactionType = IntelDDC.supportedTransactionType() { - self.replyTransactionType = replyTransactionType - } else { - os_log("No supported reply transaction type found for display with ID %u.", type: .error, displayId) - return nil - } - } - - public func write(command: UInt8, value: UInt16, errorRecoveryWaitTime: UInt32? = nil, writeSleepTime: UInt32 = 10000, numofWriteCycles: UInt8 = 2) -> Bool { - var success: Bool = false - var data: [UInt8] = Array(repeating: 0, count: 7) - - data[0] = 0x51 - data[1] = 0x84 - data[2] = 0x03 - data[3] = command - data[4] = UInt8(value >> 8) - data[5] = UInt8(value & 255) - data[6] = 0x6E ^ data[0] ^ data[1] ^ data[2] ^ data[3] ^ data[4] ^ data[5] - - for _ in 1 ... numofWriteCycles { - usleep(writeSleepTime) - var request = IOI2CRequest() - request.commFlags = 0 - request.sendAddress = 0x6E - request.sendTransactionType = IOOptionBits(kIOI2CSimpleTransactionType) - request.sendBuffer = withUnsafePointer(to: &data[0]) { vm_address_t(bitPattern: $0) } - request.sendBytes = UInt32(data.count) - request.replyTransactionType = IOOptionBits(kIOI2CNoTransactionType) - request.replyBytes = 0 - if IntelDDC.send(request: &request, to: self.framebuffer, errorRecoveryWaitTime: errorRecoveryWaitTime) { - success = true - } - } - return success - } - - public func read(command: UInt8, tries: UInt = 1, replyTransactionType _: IOOptionBits? = nil, minReplyDelay: UInt64? = nil, errorRecoveryWaitTime: UInt32? = nil, writeSleepTime: UInt32 = 10000) -> (UInt16, UInt16)? { - var data: [UInt8] = Array(repeating: 0, count: 5) - var replyData: [UInt8] = Array(repeating: 0, count: 11) - - data[0] = 0x51 - data[1] = 0x82 - data[2] = 0x01 - data[3] = command - data[4] = 0x6E ^ data[0] ^ data[1] ^ data[2] ^ data[3] - - for i in 1 ... tries { - usleep(writeSleepTime) - usleep(errorRecoveryWaitTime ?? 0) - var request = IOI2CRequest() - request.commFlags = 0 - request.sendAddress = 0x6E - request.sendTransactionType = IOOptionBits(kIOI2CSimpleTransactionType) - request.sendBuffer = withUnsafePointer(to: &data[0]) { vm_address_t(bitPattern: $0) } - request.sendBytes = UInt32(data.count) - request.minReplyDelay = minReplyDelay ?? 10 - request.replyAddress = 0x6F - request.replySubAddress = 0x51 - request.replyTransactionType = self.replyTransactionType - request.replyBytes = UInt32(replyData.count) - request.replyBuffer = withUnsafePointer(to: &replyData[0]) { vm_address_t(bitPattern: $0) } - - if IntelDDC.send(request: &request, to: self.framebuffer, errorRecoveryWaitTime: errorRecoveryWaitTime) { - if replyData.count > 0 { - let checksum = replyData.last! - var calculated = UInt8(0x50) - for i in 0 ..< (replyData.count - 1) { - calculated ^= replyData[i] - } - guard checksum == calculated else { - os_log("Checksum of reply does not match. Expected %u, got %u.", type: .debug, checksum, calculated) - os_log("Response was: %{public}@", type: .debug, replyData.map { String(format: "%02X", $0) }.joined(separator: " ")) - continue - } - } - guard replyData[2] == 0x02 else { - os_log("Got wrong response type for %{public}@. Expected %u, got %u.", type: .debug, String(reflecting: command), 0x02, replyData[2]) - os_log("Response was: %{public}@", type: .debug, replyData.map { String(format: "%02X", $0) }.joined(separator: " ")) - continue - } - guard replyData[3] == 0x00 else { - os_log("Reading %{public}@ is not supported.", type: .debug, String(reflecting: command)) - return nil - } - if i > 1 { - os_log("Reading %{public}@ took %u tries.", type: .debug, String(reflecting: command), i) - } - let (mh, ml, sh, sl) = (replyData[6], replyData[7], replyData[8], replyData[9]) - let maxValue = UInt16(mh << 8) + UInt16(ml) - let currentValue = UInt16(sh << 8) + UInt16(sl) - return (currentValue, maxValue) - } - } - return nil - } - - private static func supportedTransactionType() -> IOOptionBits? { - var ioIterator = io_iterator_t() - guard IOServiceGetMatchingServices(kIOMasterPortDefault, IOServiceNameMatching("IOFramebufferI2CInterface"), &ioIterator) == KERN_SUCCESS else { - return nil - } - defer { - assert(IOObjectRelease(ioIterator) == KERN_SUCCESS) - } - while case let ioService = IOIteratorNext(ioIterator), ioService != 0 { - var serviceProperties: Unmanaged? - guard IORegistryEntryCreateCFProperties(ioService, &serviceProperties, kCFAllocatorDefault, IOOptionBits()) == KERN_SUCCESS, serviceProperties != nil else { - continue - } - let dict = serviceProperties!.takeRetainedValue() as NSDictionary - if let types = dict[kIOI2CTransactionTypesKey] as? UInt64 { - if (1 << kIOI2CDDCciReplyTransactionType) & types != 0 { - os_log("kIOI2CDDCciReplyTransactionType is supported.", type: .debug) - return IOOptionBits(kIOI2CDDCciReplyTransactionType) - } - if (1 << kIOI2CSimpleTransactionType) & types != 0 { - os_log("kIOI2CSimpleTransactionType is supported.", type: .debug) - return IOOptionBits(kIOI2CSimpleTransactionType) - } - } - } - return nil - } - - static func send(request: inout IOI2CRequest, to framebuffer: io_service_t, errorRecoveryWaitTime: UInt32? = nil) -> Bool { - if let errorRecoveryWaitTime = errorRecoveryWaitTime { - usleep(errorRecoveryWaitTime) - } - var busCount: IOItemCount = 0 - guard IOFBGetI2CInterfaceCount(framebuffer, &busCount) == KERN_SUCCESS else { - os_log("Failed to get interface count for framebuffer with ID %u.", type: .error, framebuffer) - return false - } - for bus: IOOptionBits in 0 ..< busCount { - var interface = io_service_t() - guard IOFBCopyI2CInterfaceForBus(framebuffer, bus, &interface) == KERN_SUCCESS else { - os_log("Failed to get interface %u for framebuffer with ID %u.", type: .error, bus, framebuffer) - continue - } - var connect: IOI2CConnectRef? - guard IOI2CInterfaceOpen(interface, IOOptionBits(), &connect) == KERN_SUCCESS else { - os_log("Failed to connect to interface %u for framebuffer with ID %u.", type: .error, bus, framebuffer) - continue - } - defer { IOI2CInterfaceClose(connect, IOOptionBits()) } - guard IOI2CSendRequest(connect, IOOptionBits(), &request) == KERN_SUCCESS else { - os_log("Failed to send request to interface %u for framebuffer with ID %u.", type: .error, bus, framebuffer) - continue - } - guard request.result == KERN_SUCCESS else { - os_log("Request to interface %u for framebuffer with ID %u failed.", type: .error, bus, framebuffer) - continue - } - return true - } - return false - } - - static func servicePortUsingDisplayPropertiesMatching(from displayId: CGDirectDisplayID) -> io_object_t? { - var portIterator = io_iterator_t() - let status: kern_return_t = IOServiceGetMatchingServices(kIOMasterPortDefault, IOServiceMatching(IOFRAMEBUFFER_CONFORMSTO), &portIterator) - guard status == KERN_SUCCESS else { - os_log("No matching services found for display with ID %u.", type: .error, displayId) - return nil - } - defer { - assert(IOObjectRelease(portIterator) == KERN_SUCCESS) - } - while case let port = IOIteratorNext(portIterator), port != 0 { - let dict = IODisplayCreateInfoDictionary(port, IOOptionBits(kIODisplayOnlyPreferredName)).takeRetainedValue() as NSDictionary - let valueForKey = { (k: String) in - (dict[k] as? CFIndex).flatMap { Int32(exactly: $0) }.flatMap { UInt32(bitPattern: $0) } ?? 0 - } - let portVendorId = valueForKey(kDisplayVendorID) - let displayVendorId = CGDisplayVendorNumber(displayId) - guard portVendorId == displayVendorId else { - os_log("Service port vendor ID %u differs from display product ID %u.", type: .debug, - portVendorId, displayVendorId) - continue - } - let portProductId = valueForKey(kDisplayProductID) - let displayProductId = CGDisplayModelNumber(displayId) - guard portProductId == displayProductId else { - os_log("Service port product ID %u differs from display product ID %u.", type: .debug, - portProductId, displayProductId) - continue - } - let portSerialNumber = valueForKey(kDisplaySerialNumber) - let displaySerialNumber = CGDisplaySerialNumber(displayId) - guard portSerialNumber == displaySerialNumber else { - os_log("Service port serial number %u differs from display serial number %u.", type: .debug, portSerialNumber, displaySerialNumber) - continue - } - if let displayLocation = dict[kIODisplayLocationKey] as? NSString { - // the unit number is the number right after the last "@" sign in the display location - // swiftlint:disable:next force_try - let regex = try! NSRegularExpression(pattern: "@([0-9]+)[^@]+$", options: []) - if let match = regex.firstMatch(in: displayLocation as String, options: [], range: NSRange(location: 0, length: displayLocation.length)) { - let unitNumber = UInt32(displayLocation.substring(with: match.range(at: 1))) - guard unitNumber == CGDisplayUnitNumber(displayId) else { - continue - } - } - } - os_log("Vendor ID: %u, Product ID: %u, Serial Number: %u", type: .debug, portVendorId, portProductId, portSerialNumber) - os_log("Unit Number: %u", type: .debug, CGDisplayUnitNumber(displayId)) - os_log("Service Port: %u", type: .debug, port) - return port - } - os_log("No service port found for display with ID %u.", type: .error, displayId) - return nil - } - - static func ioFramebufferPortFromDisplayId(displayId: CGDirectDisplayID) -> io_service_t? { - if CGDisplayIsBuiltin(displayId) == boolean_t(truncating: true) { - return nil - } - var servicePortUsingCGSServiceForDisplayNumber: io_service_t = 0 - CGSServiceForDisplayNumber(displayId, &servicePortUsingCGSServiceForDisplayNumber) - if servicePortUsingCGSServiceForDisplayNumber != 0 { - os_log("Using CGSServiceForDisplayNumber to acquire framebuffer port for %u.", type: .debug, displayId) - return servicePortUsingCGSServiceForDisplayNumber - } - guard let servicePort = self.servicePortUsingDisplayPropertiesMatching(from: displayId) else { - return nil - } - var busCount: IOItemCount = 0 - guard IOFBGetI2CInterfaceCount(servicePort, &busCount) == KERN_SUCCESS, busCount >= 1 else { - os_log("No framebuffer port found for display with ID %u.", type: .error, displayId) - return nil - } - return servicePort - } -} diff --git a/MonitorControl/Support/KeyboardShortcutsManager.swift b/MonitorControl/Support/KeyboardShortcutsManager.swift deleted file mode 100644 index b8d54016..00000000 --- a/MonitorControl/Support/KeyboardShortcutsManager.swift +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import Foundation -import KeyboardShortcuts -import os.log - -class KeyboardShortcutsManager { - var initialKeyRepeat = 0.24 // This should come from UserDefaults instead, but it's ok for now. - var keyRepeat = 0.032 // This should come from UserDefaults instead, but it's ok for now. - - var currentCommand = KeyboardShortcuts.Name.none - var isFirstKeypress = false - var currentEventId = 0 - var isHold = false - - init() { - KeyboardShortcuts.onKeyDown(for: .brightnessUp) { [self] in - self.engage(KeyboardShortcuts.Name.brightnessUp) - } - KeyboardShortcuts.onKeyDown(for: .brightnessDown) { [self] in - self.engage(KeyboardShortcuts.Name.brightnessDown) - } - KeyboardShortcuts.onKeyDown(for: .contrastUp) { [self] in - self.engage(KeyboardShortcuts.Name.contrastUp) - } - KeyboardShortcuts.onKeyDown(for: .contrastDown) { [self] in - self.engage(KeyboardShortcuts.Name.contrastDown) - } - KeyboardShortcuts.onKeyDown(for: .volumeUp) { [self] in - self.engage(KeyboardShortcuts.Name.volumeUp) - } - KeyboardShortcuts.onKeyDown(for: .volumeDown) { [self] in - self.engage(KeyboardShortcuts.Name.volumeDown) - } - KeyboardShortcuts.onKeyDown(for: .mute) { [self] in - self.mute() - } - KeyboardShortcuts.onKeyUp(for: .brightnessUp) { [self] in - disengage() - } - KeyboardShortcuts.onKeyUp(for: .brightnessDown) { [self] in - disengage() - } - KeyboardShortcuts.onKeyUp(for: .contrastUp) { [self] in - disengage() - } - KeyboardShortcuts.onKeyUp(for: .contrastDown) { [self] in - disengage() - } - KeyboardShortcuts.onKeyUp(for: .volumeUp) { [self] in - disengage() - } - KeyboardShortcuts.onKeyUp(for: .volumeDown) { [self] in - disengage() - } - } - - func engage(_ shortcut: KeyboardShortcuts.Name) { - self.initialKeyRepeat = UserDefaults.standard.double(forKey: "InitialKeyRepeat") * 0.014 - self.keyRepeat = UserDefaults.standard.double(forKey: "KeyRepeat") * 0.014 - self.currentCommand = shortcut - self.isFirstKeypress = true - self.isHold = true - self.currentEventId += 1 - self.apply(shortcut, eventId: self.currentEventId) - } - - func disengage() { - self.isHold = false - self.isFirstKeypress = false - self.currentCommand = KeyboardShortcuts.Name.none - } - - func apply(_ shortcut: KeyboardShortcuts.Name, eventId: Int) { - guard app.sleepID == 0, app.reconfigureID == 0 else { - self.disengage() - return - } - guard self.currentCommand == shortcut, self.isHold, eventId == self.currentEventId else { - if [KeyboardShortcuts.Name.volumeUp, KeyboardShortcuts.Name.volumeDown].contains(shortcut) { - self.volume(isUp: true, isPressed: false) - } - return - } - if self.isFirstKeypress { - self.isFirstKeypress = false - DispatchQueue.main.asyncAfter(deadline: .now() + self.initialKeyRepeat) { - self.apply(shortcut, eventId: eventId) - } - } else { - DispatchQueue.main.asyncAfter(deadline: .now() + self.keyRepeat) { - self.apply(shortcut, eventId: eventId) - } - } - switch shortcut { - case KeyboardShortcuts.Name.brightnessUp: self.brightness(isUp: true) - case KeyboardShortcuts.Name.brightnessDown: self.brightness(isUp: false) - case KeyboardShortcuts.Name.contrastUp: self.contrast(isUp: true) - case KeyboardShortcuts.Name.contrastDown: self.contrast(isUp: false) - case KeyboardShortcuts.Name.volumeUp: self.volume(isUp: true, isPressed: true) - case KeyboardShortcuts.Name.volumeDown: self.volume(isUp: false, isPressed: true) - default: break - } - } - - func brightness(isUp: Bool) { - guard let affectedDisplays = DisplayManager.shared.getAffectedDisplays(isBrightness: true, isVolume: false), [KeyboardBrightness.custom.rawValue, KeyboardBrightness.both.rawValue].contains(prefs.integer(forKey: PrefKey.keyboardBrightness.rawValue)) else { - self.disengage() - return - } - for display in affectedDisplays where !display.readPrefAsBool(key: .isDisabled) { - var isAnyDisplayInSwAfterBrightnessMode: Bool = false - for display in affectedDisplays where ((display as? OtherDisplay)?.isSwBrightnessNotDefault() ?? false) && !((display as? OtherDisplay)?.isSw() ?? false) && prefs.bool(forKey: PrefKey.separateCombinedScale.rawValue) { - isAnyDisplayInSwAfterBrightnessMode = true - } - if !(isAnyDisplayInSwAfterBrightnessMode && !(((display as? OtherDisplay)?.isSwBrightnessNotDefault() ?? false) && !((display as? OtherDisplay)?.isSw() ?? false))) { - display.stepBrightness(isUp: isUp, isSmallIncrement: prefs.bool(forKey: PrefKey.useFineScaleBrightness.rawValue)) - } - } - } - - func contrast(isUp: Bool) { - guard let affectedDisplays = DisplayManager.shared.getAffectedDisplays(isBrightness: true, isVolume: false), [KeyboardBrightness.custom.rawValue, KeyboardBrightness.both.rawValue].contains(prefs.integer(forKey: PrefKey.keyboardBrightness.rawValue)) else { - self.disengage() - return - } - for display in affectedDisplays where !display.readPrefAsBool(key: .isDisabled) { - if let otherDisplay = display as? OtherDisplay { - otherDisplay.stepContrast(isUp: isUp, isSmallIncrement: prefs.bool(forKey: PrefKey.useFineScaleBrightness.rawValue)) - } - } - } - - func volume(isUp: Bool, isPressed: Bool) { - guard let affectedDisplays = DisplayManager.shared.getAffectedDisplays(isBrightness: false, isVolume: true), [KeyboardVolume.custom.rawValue, KeyboardVolume.both.rawValue].contains(prefs.integer(forKey: PrefKey.keyboardVolume.rawValue)) else { - self.disengage() - return - } - var wasNotIsPressedVolumeSentAlready = false - for display in affectedDisplays where !display.readPrefAsBool(key: .isDisabled) { - if let display = display as? OtherDisplay { - if isPressed { - display.stepVolume(isUp: isUp, isSmallIncrement: prefs.bool(forKey: PrefKey.useFineScaleVolume.rawValue)) - } else if !wasNotIsPressedVolumeSentAlready, !display.readPrefAsBool(key: .unavailableDDC, for: .audioSpeakerVolume) { - display.playVolumeChangedSound() - wasNotIsPressedVolumeSentAlready = true - } - } - } - } - - func mute() { - guard app.sleepID == 0, app.reconfigureID == 0, [KeyboardVolume.custom.rawValue, KeyboardVolume.both.rawValue].contains(prefs.integer(forKey: PrefKey.keyboardVolume.rawValue)), let affectedDisplays = DisplayManager.shared.getAffectedDisplays(isBrightness: false, isVolume: true) else { - return - } - var wasNotIsPressedVolumeSentAlready = false - for display in affectedDisplays where !display.readPrefAsBool(key: .isDisabled) { - if let display = display as? OtherDisplay { - display.toggleMute() - if !wasNotIsPressedVolumeSentAlready, display.readPrefAsInt(for: .audioMuteScreenBlank) != 1, !display.readPrefAsBool(key: .unavailableDDC, for: .audioSpeakerVolume) { - display.playVolumeChangedSound() - wasNotIsPressedVolumeSentAlready = true - } - } - } - } -} diff --git a/MonitorControl/Support/MediaKeyTapManager.swift b/MonitorControl/Support/MediaKeyTapManager.swift deleted file mode 100644 index 2a5f223a..00000000 --- a/MonitorControl/Support/MediaKeyTapManager.swift +++ /dev/null @@ -1,228 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import AudioToolbox -import Cocoa -import Foundation -import MediaKeyTap -import os.log - -class MediaKeyTapManager: MediaKeyTapDelegate { - var mediaKeyTap: MediaKeyTap? - var keyRepeatTimers: [MediaKey: Timer] = [:] - - func handle(mediaKey: MediaKey, event: KeyEvent?, modifiers: NSEvent.ModifierFlags?) { - let isPressed = event?.keyPressed ?? true - let isRepeat = event?.keyRepeat ?? false - let isControl = modifiers?.isSuperset(of: NSEvent.ModifierFlags([.control])) ?? false - let isCommand = modifiers?.isSuperset(of: NSEvent.ModifierFlags([.command])) ?? false - let isOption = modifiers?.isSuperset(of: NSEvent.ModifierFlags([.option])) ?? false - let isShift = modifiers?.isSuperset(of: NSEvent.ModifierFlags([.shift])) ?? false - if isPressed, isCommand, !isControl, mediaKey == .brightnessDown, DisplayManager.engageMirror() { - return - } - guard app.sleepID == 0, app.reconfigureID == 0 else { - self.showOSDLock(mediaKey) - return - } - if isPressed, self.handleOpenPrefPane(mediaKey: mediaKey, event: event, modifiers: modifiers) { - return - } - var isSmallIncrement = isOption && isShift - let isContrast = isControl && isOption && isCommand - if [.brightnessUp, .brightnessDown].contains(mediaKey), prefs.bool(forKey: PrefKey.useFineScaleBrightness.rawValue) { - isSmallIncrement = !isSmallIncrement - } - if [.volumeUp, .volumeDown, .mute].contains(mediaKey), prefs.bool(forKey: PrefKey.useFineScaleVolume.rawValue) { - isSmallIncrement = !isSmallIncrement - } - if isPressed, isControl, !isOption, mediaKey == .brightnessUp || mediaKey == .brightnessDown { - self.handleDirectedBrightness(isCommandModifier: isCommand, isUp: mediaKey == .brightnessUp, isSmallIncrement: isSmallIncrement) - return - } - let oppositeKey: MediaKey? = self.oppositeMediaKey(mediaKey: mediaKey) - // If the opposite key to the one being held has an active timer, cancel it - we'll be going in the opposite direction - if let oppositeKey = oppositeKey, let oppositeKeyTimer = self.keyRepeatTimers[oppositeKey], oppositeKeyTimer.isValid { - oppositeKeyTimer.invalidate() - } else if let mediaKeyTimer = self.keyRepeatTimers[mediaKey], mediaKeyTimer.isValid { - // If there's already an active timer for the key being held down, let it run rather than executing it again - if isRepeat { - return - } - mediaKeyTimer.invalidate() - } - self.sendDisplayCommand(mediaKey: mediaKey, isRepeat: isRepeat, isSmallIncrement: isSmallIncrement, isPressed: isPressed, isContrast: isContrast) - } - - func handleDirectedBrightness(isCommandModifier: Bool, isUp: Bool, isSmallIncrement: Bool) { - if isCommandModifier { - for otherDisplay in DisplayManager.shared.getOtherDisplays() { - otherDisplay.stepBrightness(isUp: isUp, isSmallIncrement: isSmallIncrement) - } - for appleDisplay in DisplayManager.shared.getAppleDisplays() where !appleDisplay.isBuiltIn() { - appleDisplay.stepBrightness(isUp: isUp, isSmallIncrement: isSmallIncrement) - } - return - } else if let internalDisplay = DisplayManager.shared.getBuiltInDisplay() as? AppleDisplay { - internalDisplay.stepBrightness(isUp: isUp, isSmallIncrement: isSmallIncrement) - return - } - } - - private func showOSDLock(_ mediaKey: MediaKey) { - if [.brightnessUp, .brightnessDown].contains(mediaKey) { - OSDUtils.showOSDLockOnAllDisplays(osdImage: OSDUtils.OSDImage.brightness.rawValue) - } - if [.volumeUp, .volumeDown, .mute].contains(mediaKey) { - OSDUtils.showOSDLockOnAllDisplays(osdImage: OSDUtils.OSDImage.audioSpeaker.rawValue) - } - } - - private func sendDisplayCommand(mediaKey: MediaKey, isRepeat: Bool, isSmallIncrement: Bool, isPressed: Bool, isContrast: Bool = false) { - self.sendDisplayCommandVolumeMute(mediaKey: mediaKey, isRepeat: isRepeat, isSmallIncrement: isSmallIncrement, isPressed: isPressed) - self.sendDisplayCommandBrightnessContrast(mediaKey: mediaKey, isRepeat: isRepeat, isSmallIncrement: isSmallIncrement, isPressed: isPressed, isContrast: isContrast) - } - - private func sendDisplayCommandVolumeMute(mediaKey: MediaKey, isRepeat: Bool, isSmallIncrement: Bool, isPressed: Bool) { - guard [.volumeUp, .volumeDown, .mute].contains(mediaKey), app.sleepID == 0, app.reconfigureID == 0, let affectedDisplays = DisplayManager.shared.getAffectedDisplays(isBrightness: false, isVolume: true) else { - return - } - var wasNotIsPressedVolumeSentAlready = false - for display in affectedDisplays where !display.readPrefAsBool(key: .isDisabled) { - switch mediaKey { - case .mute: - // The mute key should not respond to press + hold or keyup - if !isRepeat, isPressed, let display = display as? OtherDisplay { - display.toggleMute() - if !wasNotIsPressedVolumeSentAlready, display.readPrefAsInt(for: .audioMuteScreenBlank) != 1, !display.readPrefAsBool(key: .unavailableDDC, for: .audioSpeakerVolume) { - display.playVolumeChangedSound() - wasNotIsPressedVolumeSentAlready = true - } - } - case .volumeUp, .volumeDown: - // volume only matters for other displays - if let display = display as? OtherDisplay { - if isPressed { - display.stepVolume(isUp: mediaKey == .volumeUp, isSmallIncrement: isSmallIncrement) - } else if !wasNotIsPressedVolumeSentAlready, !display.readPrefAsBool(key: .unavailableDDC, for: .audioSpeakerVolume) { - display.playVolumeChangedSound() - wasNotIsPressedVolumeSentAlready = true - } - } - default: continue - } - } - } - - private func sendDisplayCommandBrightnessContrast(mediaKey: MediaKey, isRepeat _: Bool, isSmallIncrement: Bool, isPressed: Bool, isContrast: Bool = false) { - guard [.brightnessUp, .brightnessDown].contains(mediaKey), app.sleepID == 0, app.reconfigureID == 0, isPressed, let affectedDisplays = DisplayManager.shared.getAffectedDisplays(isBrightness: true, isVolume: false) else { - return - } - for display in affectedDisplays where !display.readPrefAsBool(key: .isDisabled) { - switch mediaKey { - case .brightnessUp: - if isContrast, let otherDisplay = display as? OtherDisplay { - otherDisplay.stepContrast(isUp: mediaKey == .brightnessUp, isSmallIncrement: isSmallIncrement) - } else { - var isAnyDisplayInSwAfterBrightnessMode: Bool = false - for display in affectedDisplays where ((display as? OtherDisplay)?.isSwBrightnessNotDefault() ?? false) && !((display as? OtherDisplay)?.isSw() ?? false) && prefs.bool(forKey: PrefKey.separateCombinedScale.rawValue) { - isAnyDisplayInSwAfterBrightnessMode = true - } - if !(isAnyDisplayInSwAfterBrightnessMode && !(((display as? OtherDisplay)?.isSwBrightnessNotDefault() ?? false) && !((display as? OtherDisplay)?.isSw() ?? false))) { - display.stepBrightness(isUp: mediaKey == .brightnessUp, isSmallIncrement: isSmallIncrement) - } - } - case .brightnessDown: - if isContrast, let otherDisplay = display as? OtherDisplay { - otherDisplay.stepContrast(isUp: mediaKey == .brightnessUp, isSmallIncrement: isSmallIncrement) - } else { - display.stepBrightness(isUp: mediaKey == .brightnessUp, isSmallIncrement: isSmallIncrement) - } - default: continue - } - } - } - - private func oppositeMediaKey(mediaKey: MediaKey) -> MediaKey? { - if mediaKey == .brightnessUp { - return .brightnessDown - } else if mediaKey == .brightnessDown { - return .brightnessUp - } else if mediaKey == .volumeUp { - return .volumeDown - } else if mediaKey == .volumeDown { - return .volumeUp - } - return nil - } - - func updateMediaKeyTap() { - var keys: [MediaKey] = [] - if [KeyboardBrightness.media.rawValue, KeyboardBrightness.both.rawValue].contains(prefs.integer(forKey: PrefKey.keyboardBrightness.rawValue)) { - keys.append(contentsOf: [.brightnessUp, .brightnessDown]) - } - if [KeyboardVolume.media.rawValue, KeyboardVolume.both.rawValue].contains(prefs.integer(forKey: PrefKey.keyboardVolume.rawValue)) { - keys.append(contentsOf: [.mute, .volumeUp, .volumeDown]) - } - // Remove keys if no external displays are connected - var isInternalDisplayOnly = true - for display in DisplayManager.shared.getAllDisplays() where !display.isBuiltIn() { - isInternalDisplayOnly = false - } - if isInternalDisplayOnly { - let keysToDelete: [MediaKey] = [.volumeUp, .volumeDown, .mute, .brightnessUp, .brightnessDown] - keys.removeAll { keysToDelete.contains($0) } - } - // Remove volume related keys if audio device is controllable - if !isInternalDisplayOnly, let defaultAudioDevice = app.coreAudio.defaultOutputDevice { - let keysToDelete: [MediaKey] = [.volumeUp, .volumeDown, .mute] - if !prefs.bool(forKey: PrefKey.allScreensVolume.rawValue), prefs.bool(forKey: PrefKey.useAudioDeviceNameMatching.rawValue) { - if DisplayManager.shared.updateAudioControlTargetDisplays(deviceName: defaultAudioDevice.name) == 0 { - keys.removeAll { keysToDelete.contains($0) } - } - } else if defaultAudioDevice.canSetVirtualMasterVolume(scope: .output) == true { - keys.removeAll { keysToDelete.contains($0) } - } - } - self.mediaKeyTap?.stop() - // returning an empty array listens for all mediakeys in MediaKeyTap - if keys.count > 0 { - self.mediaKeyTap = MediaKeyTap(delegate: self, on: KeyPressMode.keyDownAndUp, for: keys, observeBuiltIn: true) - self.mediaKeyTap?.start() - } - } - - func handleOpenPrefPane(mediaKey: MediaKey, event: KeyEvent?, modifiers: NSEvent.ModifierFlags?) -> Bool { - guard let modifiers = modifiers else { return false } - if !(modifiers.contains(.option) && !modifiers.contains(.shift) && !modifiers.contains(.control) && !modifiers.contains(.command)) { - return false - } - if event?.keyRepeat == true { - return false - } - switch mediaKey { - case .brightnessUp, .brightnessDown: - NSWorkspace.shared.open(URL(fileURLWithPath: "/System/Library/PreferencePanes/Displays.prefPane")) - case .mute, .volumeUp, .volumeDown: - NSWorkspace.shared.open(URL(fileURLWithPath: "/System/Library/PreferencePanes/Sound.prefPane")) - default: - return false - } - return true - } - - static func acquirePrivileges() { - if !self.readPrivileges(prompt: true) { - let alert = NSAlert() - alert.messageText = NSLocalizedString("Shortcuts not available", comment: "Shown in the alert dialog") - alert.informativeText = NSLocalizedString("You need to enable MonitorControl in System Preferences > Security and Privacy > Accessibility for the keyboard shortcuts to work", comment: "Shown in the alert dialog") - alert.runModal() - } - } - - static func readPrivileges(prompt: Bool) -> Bool { - let options: NSDictionary = [kAXTrustedCheckOptionPrompt.takeRetainedValue() as NSString: prompt] - let status = AXIsProcessTrustedWithOptions(options) - os_log("Reading Accessibility privileges - Current access status %{public}@", type: .info, String(status)) - return status - } -} diff --git a/MonitorControl/Support/MenuHandler.swift b/MonitorControl/Support/MenuHandler.swift deleted file mode 100644 index a010b434..00000000 --- a/MonitorControl/Support/MenuHandler.swift +++ /dev/null @@ -1,273 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import AppKit -import os.log - -class MenuHandler: NSMenu, NSMenuDelegate { - var combinedSliderHandler: [Command: SliderHandler] = [:] - - var lastMenuRelevantDisplayId: CGDirectDisplayID = 0 - - func clearMenu() { - var items: [NSMenuItem] = [] - for i in 0 ..< self.items.count { - items.append(self.items[i]) - } - for item in items { - self.removeItem(item) - } - self.combinedSliderHandler.removeAll() - } - - func menuWillOpen(_: NSMenu) { - self.updateMenuRelevantDisplay() - } - - func updateMenus(dontClose: Bool = false) { - os_log("Menu update initiated", type: .debug) - if !dontClose { - self.cancelTrackingWithoutAnimation() - } - app.statusItem.isVisible = prefs.integer(forKey: PrefKey.menuIcon.rawValue) == MenuIcon.show.rawValue ? true : false - self.clearMenu() - let currentDisplay = DisplayManager.shared.getCurrentDisplay() - var displays: [Display] = [] - if !prefs.bool(forKey: PrefKey.hideAppleFromMenu.rawValue) { - displays.append(contentsOf: DisplayManager.shared.getAppleDisplays()) - } - if !prefs.bool(forKey: PrefKey.disableSoftwareFallback.rawValue) { - displays.append(contentsOf: DisplayManager.shared.getOtherDisplays()) - } else { - displays.append(contentsOf: DisplayManager.shared.getDdcCapableDisplays()) - } - let relevant = prefs.bool(forKey: PrefKey.slidersRelevant.rawValue) - let combine = prefs.bool(forKey: PrefKey.slidersCombine.rawValue) - let numOfDisplays = displays.count - if numOfDisplays != 0 { - let asSubMenu: Bool = (displays.count > 3 && !relevant && !combine && app.macOS10()) ? true : false - var iterator = 0 - for display in displays where !relevant || display == currentDisplay { - iterator += 1 - if !relevant, !combine, iterator != 1, app.macOS10() { - self.insertItem(NSMenuItem.separator(), at: 0) - } - self.updateDisplayMenu(display: display, asSubMenu: asSubMenu, numOfDisplays: numOfDisplays) - } - if combine { - self.addCombinedDisplayMenuBlock() - } - } - self.addDefaultMenuOptions() - } - - func addSliderItem(monitorSubMenu: NSMenu, sliderHandler: SliderHandler) { - let item = NSMenuItem() - item.view = sliderHandler.view - monitorSubMenu.insertItem(item, at: 0) - if app.macOS10() { - let sliderHeaderItem = NSMenuItem() - let attrs: [NSAttributedString.Key: Any] = [.foregroundColor: NSColor.systemGray, .font: NSFont.systemFont(ofSize: 12)] - sliderHeaderItem.attributedTitle = NSAttributedString(string: sliderHandler.title, attributes: attrs) - monitorSubMenu.insertItem(sliderHeaderItem, at: 0) - } - } - - func setupMenuSliderHandler(command: Command, display: Display, title: String) -> SliderHandler { - if prefs.bool(forKey: PrefKey.slidersCombine.rawValue), let combinedHandler = self.combinedSliderHandler[command] { - combinedHandler.addDisplay(display) - display.sliderHandler[command] = combinedHandler - return combinedHandler - } else { - let sliderHandler = SliderHandler(display: display, command: command, title: title) - if prefs.bool(forKey: PrefKey.slidersCombine.rawValue) { - self.combinedSliderHandler[command] = sliderHandler - } - display.sliderHandler[command] = sliderHandler - return sliderHandler - } - } - - func addDisplayMenuBlock(addedSliderHandlers: [SliderHandler], blockName: String, monitorSubMenu: NSMenu, numOfDisplays: Int, asSubMenu: Bool) { - if numOfDisplays > 1, !prefs.bool(forKey: PrefKey.slidersRelevant.rawValue), !DEBUG_MACOS10, #available(macOS 11.0, *) { - class BlockView: NSView { - override func draw(_: NSRect) { - let radius = CGFloat(11) - let outerMargin = CGFloat(15) - let blockRect = self.frame.insetBy(dx: outerMargin, dy: outerMargin / 2 + 2).offsetBy(dx: 0, dy: outerMargin / 2 * -1 + 7) - for i in 1 ... 5 { - let blockPath = NSBezierPath(roundedRect: blockRect.insetBy(dx: CGFloat(i) * -1, dy: CGFloat(i) * -1), xRadius: radius + CGFloat(i) * 0.5, yRadius: radius + CGFloat(i) * 0.5) - NSColor.black.withAlphaComponent(0.1 / CGFloat(i)).setStroke() - blockPath.stroke() - } - let blockPath = NSBezierPath(roundedRect: blockRect, xRadius: radius, yRadius: radius) - if [NSAppearance.Name.darkAqua, NSAppearance.Name.vibrantDark].contains(effectiveAppearance.name) { - NSColor.systemGray.withAlphaComponent(0.3).setStroke() - blockPath.stroke() - } - if ![NSAppearance.Name.darkAqua, NSAppearance.Name.vibrantDark].contains(effectiveAppearance.name) { - NSColor.white.withAlphaComponent(0.5).setFill() - blockPath.fill() - } - } - } - var contentWidth: CGFloat = 0 - var contentHeight: CGFloat = 0 - for addedSliderHandler in addedSliderHandlers { - contentWidth = max(addedSliderHandler.view!.frame.width, contentWidth) - contentHeight += addedSliderHandler.view!.frame.height - } - var blockNameView: NSTextField? - if blockName != "" { - contentHeight += 21 - let attrs: [NSAttributedString.Key: Any] = [.foregroundColor: NSColor.textColor, .font: NSFont.boldSystemFont(ofSize: 12)] - blockNameView = NSTextField(labelWithAttributedString: NSAttributedString(string: blockName, attributes: attrs)) - blockNameView?.alphaValue = 0.5 - } - let margin = CGFloat(13) - let itemView = BlockView(frame: NSRect(x: 0, y: 0, width: contentWidth + margin * 2, height: contentHeight + margin * 2)) - var sliderPosition = CGFloat(margin * -1 + 1) - for addedSliderHandler in addedSliderHandlers { - addedSliderHandler.view!.setFrameOrigin(NSPoint(x: margin, y: margin + sliderPosition + 13)) - itemView.addSubview(addedSliderHandler.view!) - sliderPosition += addedSliderHandler.view!.frame.height - } - if let blockNameView = blockNameView { - blockNameView.setFrameOrigin(NSPoint(x: margin + 13, y: contentHeight - 8)) - itemView.addSubview(blockNameView) - } - let item = NSMenuItem() - item.view = itemView - monitorSubMenu.insertItem(item, at: 0) - } else { - for addedSliderHandler in addedSliderHandlers { - self.addSliderItem(monitorSubMenu: monitorSubMenu, sliderHandler: addedSliderHandler) - } - } - self.appendMenuHeader(friendlyName: blockName, monitorSubMenu: monitorSubMenu, asSubMenu: asSubMenu, numOfDisplays: numOfDisplays) - } - - func addCombinedDisplayMenuBlock() { - if let sliderHandler = self.combinedSliderHandler[.audioSpeakerVolume] { - self.addSliderItem(monitorSubMenu: self, sliderHandler: sliderHandler) - } - if let sliderHandler = self.combinedSliderHandler[.contrast] { - self.addSliderItem(monitorSubMenu: self, sliderHandler: sliderHandler) - } - if let sliderHandler = self.combinedSliderHandler[.brightness] { - self.addSliderItem(monitorSubMenu: self, sliderHandler: sliderHandler) - } - } - - func updateDisplayMenu(display: Display, asSubMenu: Bool, numOfDisplays: Int) { - os_log("Addig menu items for display %{public}@", type: .info, "\(display.identifier)") - let monitorSubMenu: NSMenu = asSubMenu ? NSMenu() : self - var addedSliderHandlers: [SliderHandler] = [] - display.sliderHandler[.audioSpeakerVolume] = nil - if let otherDisplay = display as? OtherDisplay, !otherDisplay.isSw(), !display.readPrefAsBool(key: .unavailableDDC, for: .audioSpeakerVolume), !prefs.bool(forKey: PrefKey.hideVolume.rawValue) { - let title = NSLocalizedString("Volume", comment: "Shown in menu") - addedSliderHandlers.append(self.setupMenuSliderHandler(command: .audioSpeakerVolume, display: display, title: title)) - } - display.sliderHandler[.contrast] = nil - if let otherDisplay = display as? OtherDisplay, !otherDisplay.isSw(), !display.readPrefAsBool(key: .unavailableDDC, for: .contrast), prefs.bool(forKey: PrefKey.showContrast.rawValue) { - let title = NSLocalizedString("Contrast", comment: "Shown in menu") - addedSliderHandlers.append(self.setupMenuSliderHandler(command: .contrast, display: display, title: title)) - } - display.sliderHandler[.brightness] = nil - if !display.readPrefAsBool(key: .unavailableDDC, for: .brightness), !prefs.bool(forKey: PrefKey.hideBrightness.rawValue) { - let title = NSLocalizedString("Brightness", comment: "Shown in menu") - addedSliderHandlers.append(self.setupMenuSliderHandler(command: .brightness, display: display, title: title)) - } - if !prefs.bool(forKey: PrefKey.slidersCombine.rawValue) { - self.addDisplayMenuBlock(addedSliderHandlers: addedSliderHandlers, blockName: display.readPrefAsString(key: .friendlyName) != "" ? display.readPrefAsString(key: .friendlyName) : display.name, monitorSubMenu: monitorSubMenu, numOfDisplays: numOfDisplays, asSubMenu: asSubMenu) - } - if addedSliderHandlers.count > 0, prefs.integer(forKey: PrefKey.menuIcon.rawValue) == MenuIcon.sliderOnly.rawValue { - app.statusItem.isVisible = true - } - } - - private func appendMenuHeader(friendlyName: String, monitorSubMenu: NSMenu, asSubMenu: Bool, numOfDisplays: Int) { - let monitorMenuItem = NSMenuItem() - if asSubMenu { - monitorMenuItem.title = "\(friendlyName)" - monitorMenuItem.submenu = monitorSubMenu - self.insertItem(monitorMenuItem, at: 0) - } else if app.macOS10(), numOfDisplays > 1 { - let attrs: [NSAttributedString.Key: Any] = [.foregroundColor: NSColor.systemGray, .font: NSFont.boldSystemFont(ofSize: 12)] - monitorMenuItem.attributedTitle = NSAttributedString(string: "\(friendlyName)", attributes: attrs) - self.insertItem(monitorMenuItem, at: 0) - } - } - - func updateMenuRelevantDisplay() { - if prefs.bool(forKey: PrefKey.slidersRelevant.rawValue) { - if let display = DisplayManager.shared.getCurrentDisplay(), display.identifier != self.lastMenuRelevantDisplayId { - os_log("Menu must be refreshed as relevant display changed since last time.") - self.lastMenuRelevantDisplayId = display.identifier - self.updateMenus(dontClose: true) - } - } - } - - func addDefaultMenuOptions() { - if !DEBUG_MACOS10, #available(macOS 11.0, *), prefs.integer(forKey: PrefKey.menuItemStyle.rawValue) == MenuItemStyle.icon.rawValue { - let iconSize = CGFloat(22) - let viewWidth = max(120, self.size.width) - var compensateForBlock: CGFloat = 0 - if viewWidth > 230 { // if there are display blocks, we need to compensate a bit for the negative inset of the blocks - compensateForBlock = 4 - } - - let menuItemView = NSView(frame: NSRect(x: 0, y: 0, width: viewWidth, height: iconSize + 10)) - - let preferencesIcon = NSButton() - preferencesIcon.bezelStyle = .regularSquare - preferencesIcon.isBordered = false - preferencesIcon.setButtonType(.momentaryChange) - preferencesIcon.image = NSImage(systemSymbolName: "ellipsis.circle", accessibilityDescription: NSLocalizedString("Preferences...", comment: "Shown in menu")) - preferencesIcon.alternateImage = NSImage(systemSymbolName: "ellipsis.circle.fill", accessibilityDescription: NSLocalizedString("Preferences...", comment: "Shown in menu")) - preferencesIcon.alphaValue = 0.3 - preferencesIcon.frame = NSRect(x: menuItemView.frame.maxX - iconSize - 16 + compensateForBlock, y: menuItemView.frame.origin.y + 5, width: iconSize, height: iconSize) - preferencesIcon.imageScaling = .scaleProportionallyUpOrDown - preferencesIcon.action = #selector(app.prefsClicked) - - let updateIcon = NSButton() - updateIcon.bezelStyle = .regularSquare - updateIcon.isBordered = false - updateIcon.setButtonType(.momentaryChange) - updateIcon.image = NSImage(systemSymbolName: "arrow.triangle.2.circlepath.circle", accessibilityDescription: NSLocalizedString("Check for updates...", comment: "Shown in menu")) - updateIcon.alternateImage = NSImage(systemSymbolName: "arrow.triangle.2.circlepath.circle.fill", accessibilityDescription: NSLocalizedString("Check for updates...", comment: "Shown in menu")) - updateIcon.alphaValue = 0.3 - updateIcon.frame = NSRect(x: menuItemView.frame.maxX - iconSize * 2 - 10 - 16 + compensateForBlock, y: menuItemView.frame.origin.y + 5, width: iconSize, height: iconSize) - updateIcon.imageScaling = .scaleProportionallyUpOrDown - updateIcon.action = #selector(app.updaterController.checkForUpdates(_:)) - updateIcon.target = app.updaterController - - let quitIcon = NSButton() - quitIcon.bezelStyle = .regularSquare - quitIcon.isBordered = false - quitIcon.setButtonType(.momentaryChange) - quitIcon.image = NSImage(systemSymbolName: "xmark.circle", accessibilityDescription: NSLocalizedString("Quit", comment: "Shown in menu")) - quitIcon.alternateImage = NSImage(systemSymbolName: "xmark.circle.fill", accessibilityDescription: NSLocalizedString("Quit", comment: "Shown in menu")) - quitIcon.alphaValue = 0.3 - quitIcon.frame = NSRect(x: menuItemView.frame.maxX - iconSize * 3 - 20 - 16 + compensateForBlock, y: menuItemView.frame.origin.y + 5, width: iconSize, height: iconSize) - quitIcon.imageScaling = .scaleProportionallyUpOrDown - quitIcon.action = #selector(app.quitClicked) - - menuItemView.addSubview(preferencesIcon) - menuItemView.addSubview(updateIcon) - menuItemView.addSubview(quitIcon) - let item = NSMenuItem() - item.view = menuItemView - self.insertItem(item, at: self.items.count) - } else if prefs.integer(forKey: PrefKey.menuItemStyle.rawValue) != MenuItemStyle.hide.rawValue { - if app.macOS10() { - self.insertItem(NSMenuItem.separator(), at: self.items.count) - } - self.insertItem(withTitle: NSLocalizedString("Preferences...", comment: "Shown in menu"), action: #selector(app.prefsClicked), keyEquivalent: "", at: self.items.count) - let updateItem = NSMenuItem(title: NSLocalizedString("Check for updates...", comment: "Shown in menu"), action: #selector(app.updaterController.checkForUpdates(_:)), keyEquivalent: "") - updateItem.target = app.updaterController - self.insertItem(updateItem, at: self.items.count) - self.insertItem(withTitle: NSLocalizedString("Quit", comment: "Shown in menu"), action: #selector(app.quitClicked), keyEquivalent: "", at: self.items.count) - } - } -} diff --git a/MonitorControl/Support/OSDUtils.swift b/MonitorControl/Support/OSDUtils.swift deleted file mode 100644 index a79ff8ab..00000000 --- a/MonitorControl/Support/OSDUtils.swift +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright © MonitorControl. @victorchabbert, @JoniVR, @theOneyouseek, @waydabber and others - -import Cocoa - -class OSDUtils: NSObject { - enum OSDImage: Int64 { - case brightness = 1 - case audioSpeaker = 3 - case audioSpeakerMuted = 4 - case contrast = 0 - } - - static func getOSDImageByCommand(command: Command, value: Float = 1) -> OSDImage { - var osdImage: OSDImage - switch command { - case .audioSpeakerVolume: osdImage = value > 0 ? .audioSpeaker : .audioSpeakerMuted - case .audioMuteScreenBlank: osdImage = .audioSpeakerMuted - case .contrast: osdImage = .contrast - default: osdImage = .brightness - } - return osdImage - } - - static func showOsd(displayID: CGDirectDisplayID, command: Command, value: Float, maxValue: Float = 1, roundChiclet: Bool = false, lock: Bool = false) { - guard let manager = OSDManager.sharedManager() as? OSDManager else { - return - } - let osdImage = self.getOSDImageByCommand(command: command, value: value) - let filledChiclets: Int - let totalChiclets: Int - if roundChiclet { - let osdChiclet = OSDUtils.chiclet(fromValue: value, maxValue: maxValue) - filledChiclets = Int(round(osdChiclet)) - totalChiclets = 16 - } else { - filledChiclets = Int(value * 100) - totalChiclets = Int(maxValue * 100) - } - manager.showImage(osdImage.rawValue, onDisplayID: displayID, priority: 0x1F4, msecUntilFade: 1000, filledChiclets: UInt32(filledChiclets), totalChiclets: UInt32(totalChiclets), locked: lock) - } - - static func showOsdVolumeDisabled(displayID: CGDirectDisplayID) { - guard let manager = OSDManager.sharedManager() as? OSDManager else { - return - } - manager.showImage(22, onDisplayID: displayID, priority: 0x1F4, msecUntilFade: 1000) - } - - static func showOsdMuteDisabled(displayID: CGDirectDisplayID) { - guard let manager = OSDManager.sharedManager() as? OSDManager else { - return - } - manager.showImage(21, onDisplayID: displayID, priority: 0x1F4, msecUntilFade: 1000) - } - - static func popEmptyOsd(displayID: CGDirectDisplayID, command: Command) { - guard let manager = OSDManager.sharedManager() as? OSDManager else { - return - } - let osdImage = self.getOSDImageByCommand(command: command) - manager.showImage(osdImage.rawValue, onDisplayID: displayID, priority: 0x1F4, msecUntilFade: 0) - } - - static let chicletCount: Float = 16 - - static func chiclet(fromValue value: Float, maxValue: Float, half: Bool = false) -> Float { - return (value * self.chicletCount * (half ? 2 : 1)) / maxValue - } - - static func value(fromChiclet chiclet: Float, maxValue: Float, half: Bool = false) -> Float { - return (chiclet * maxValue) / (self.chicletCount * (half ? 2 : 1)) - } - - static func getDistance(fromNearestChiclet chiclet: Float) -> Float { - return abs(chiclet.rounded(.towardZero) - chiclet) - } - - static func showOSDLockOnAllDisplays(osdImage: Int64) { - var displayCount: UInt32 = 0 - var onlineDisplays = [CGDirectDisplayID](repeating: 0, count: Int(16)) - if CGGetOnlineDisplayList(16, &onlineDisplays, &displayCount) == CGError.success { - let displayIDs = onlineDisplays.prefix(Int(displayCount)) - for id in displayIDs { - if let manager = OSDManager.sharedManager() as? OSDManager { - manager.showImage(osdImage, onDisplayID: id, priority: 0x1F4, msecUntilFade: 1000, filledChiclets: 0, totalChiclets: 100, locked: true) - } - } - } - } -} diff --git a/MonitorControl/Support/SliderHandler.swift b/MonitorControl/Support/SliderHandler.swift deleted file mode 100644 index e50ef037..00000000 --- a/MonitorControl/Support/SliderHandler.swift +++ /dev/null @@ -1,386 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import Cocoa -import os.log - -class SliderHandler { - var slider: MCSlider? - var view: NSView? - var percentageBox: NSTextField? - var displays: [Display] = [] - var values: [CGDirectDisplayID: Float] = [:] - var title: String - let command: Command - var icon: ClickThroughImageView? - - class MCSliderCell: NSSliderCell { - let knobFillColor = NSColor(white: 1, alpha: 1) - let knobFillColorTracking = NSColor(white: 0.8, alpha: 1) - let knobStrokeColor = NSColor.systemGray.withAlphaComponent(0.5) - let knobShadowColor = NSColor(white: 0, alpha: 0.03) - let barFillColor = NSColor.systemGray.withAlphaComponent(0.2) - let barStrokeColor = NSColor.systemGray.withAlphaComponent(0.5) - let barFilledFillColor = NSColor(white: 1, alpha: 1) - let highlightDisplayIndicatorColor = NSColor(white: 0.85, alpha: 1) // This is visible if there is more the 2 displays - let tickMarkColor = NSColor.systemGray.withAlphaComponent(0.5) - - let inset: CGFloat = 3.5 - let offsetX: CGFloat = -1.5 - let offsetY: CGFloat = -1.5 - - let tickMarkKnobExtraInset: CGFloat = 4 - let tickMarkKnobExtraRadiusMultiplier: CGFloat = 0.5 - - var numOfTickmarks: Int = 0 - var isHighlightDisplayItems: Bool = false - var displayHighlightItems: [CGDirectDisplayID: Float] = [:] - - var isTracking: Bool = false - - required init(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - } - - override init() { - super.init() - } - - override func barRect(flipped: Bool) -> NSRect { - let bar = super.barRect(flipped: flipped) - let knob = super.knobRect(flipped: flipped) - return NSRect(x: bar.origin.x, y: knob.origin.y, width: bar.width, height: knob.height).insetBy(dx: 0, dy: self.inset).offsetBy(dx: self.offsetX, dy: self.offsetY) - } - - override func startTracking(at startPoint: NSPoint, in controlView: NSView) -> Bool { - self.isTracking = true - return super.startTracking(at: startPoint, in: controlView) - } - - override func stopTracking(last lastPoint: NSPoint, current stopPoint: NSPoint, in controlView: NSView, mouseIsUp flag: Bool) { - self.isTracking = false - return super.stopTracking(last: lastPoint, current: stopPoint, in: controlView, mouseIsUp: flag) - } - - override func drawKnob(_ knobRect: NSRect) { - guard !DEBUG_MACOS10, #available(macOS 11.0, *) else { - super.drawKnob(knobRect) - return - } - // This is intentionally empty as the knob is inside the bar. Please leave it like this! - } - - override func drawBar(inside aRect: NSRect, flipped: Bool) { - guard !DEBUG_MACOS10, #available(macOS 11.0, *) else { - super.drawBar(inside: aRect, flipped: flipped) - return - } - var maxValue: Float = self.floatValue - var minValue: Float = self.floatValue - - if self.isHighlightDisplayItems { - maxValue = max(self.displayHighlightItems.values.max() ?? 0, maxValue) - minValue = min(self.displayHighlightItems.values.min() ?? 1, minValue) - } - - let barRadius = aRect.height * 0.5 * (self.numOfTickmarks == 0 ? 1 : self.tickMarkKnobExtraRadiusMultiplier) - let bar = NSBezierPath(roundedRect: aRect, xRadius: barRadius, yRadius: barRadius) - self.barFillColor.setFill() - bar.fill() - - let barFilledWidth = (aRect.width - aRect.height) * CGFloat(maxValue) + aRect.height - let barFilledRect = NSRect(x: aRect.origin.x, y: aRect.origin.y, width: barFilledWidth, height: aRect.height) - let barFilled = NSBezierPath(roundedRect: barFilledRect, xRadius: barRadius, yRadius: barRadius) - self.barFilledFillColor.setFill() - barFilled.fill() - - let knobMinX = aRect.origin.x + (aRect.width - aRect.height) * CGFloat(minValue) - let knobMaxX = aRect.origin.x + (aRect.width - aRect.height) * CGFloat(maxValue) - let knobRect = NSRect(x: knobMinX + (self.numOfTickmarks == 0 ? CGFloat(0) : self.tickMarkKnobExtraInset), y: aRect.origin.y, width: aRect.height + CGFloat(knobMaxX - knobMinX), height: aRect.height).insetBy(dx: self.numOfTickmarks == 0 ? CGFloat(0) : self.tickMarkKnobExtraInset, dy: 0) - let knobRadius = knobRect.height * 0.5 * (self.numOfTickmarks == 0 ? 1 : self.tickMarkKnobExtraRadiusMultiplier) - - if self.numOfTickmarks > 0 { - for i in 1 ... self.numOfTickmarks - 2 { - let currentMarkLocation = CGFloat((Float(1) / Float(self.numOfTickmarks - 1)) * Float(i)) - let tickMarkBounds = NSRect(x: aRect.origin.x + aRect.height + self.tickMarkKnobExtraInset - knobRect.height + self.tickMarkKnobExtraInset * 2 + CGFloat(Float((aRect.width - self.tickMarkKnobExtraInset * 5) * currentMarkLocation)), y: aRect.origin.y + aRect.height * (1 / 3), width: 4, height: aRect.height / 3) - let tickmark = NSBezierPath(roundedRect: tickMarkBounds, xRadius: 2, yRadius: 2) - self.tickMarkColor.setFill() - tickmark.fill() - } - } - - let knobAlpha = CGFloat(max(0, min(1, (minValue - 0.08) * 5))) - for i in 1 ... 3 { - let knobShadow = NSBezierPath(roundedRect: knobRect.offsetBy(dx: CGFloat(-1 * 2 * i), dy: 0), xRadius: knobRadius, yRadius: knobRadius) - self.knobShadowColor.withAlphaComponent(self.knobShadowColor.alphaComponent * knobAlpha).setFill() - knobShadow.fill() - } - - let knob = NSBezierPath(roundedRect: knobRect, xRadius: knobRadius, yRadius: knobRadius) - (self.isTracking ? self.knobFillColorTracking : self.knobFillColor).withAlphaComponent(knobAlpha).setFill() - knob.fill() - - if self.isHighlightDisplayItems, self.displayHighlightItems.count > 2 { - for currentMarkLocation in self.displayHighlightItems.values { - let highlightKnobX = aRect.origin.x + (aRect.width - aRect.height) * CGFloat(currentMarkLocation) - let highlightKnobRect = NSRect(x: highlightKnobX + (self.numOfTickmarks == 0 ? CGFloat(0) : self.tickMarkKnobExtraInset), y: aRect.origin.y, width: aRect.height, height: aRect.height).insetBy(dx: (self.numOfTickmarks == 0 ? CGFloat(0) : self.tickMarkKnobExtraInset) + CGFloat(self.numOfTickmarks == 0 ? 6 : 3), dy: CGFloat(self.numOfTickmarks == 0 ? 6 : 6)) - let highlightKnobRadius = highlightKnobRect.height * 0.5 * (self.numOfTickmarks == 0 ? 1 : self.tickMarkKnobExtraRadiusMultiplier) - let highlightKnob = NSBezierPath(roundedRect: highlightKnobRect, xRadius: highlightKnobRadius, yRadius: highlightKnobRadius) - let highlightDisplayIndicatorAlpha = CGFloat(max(0, min(1, (currentMarkLocation - 0.08) * 5))) - self.highlightDisplayIndicatorColor.withAlphaComponent(self.highlightDisplayIndicatorColor.alphaComponent * highlightDisplayIndicatorAlpha).setFill() - highlightKnob.fill() - } - } - - self.knobStrokeColor.withAlphaComponent(self.knobStrokeColor.alphaComponent * knobAlpha).setStroke() - knob.stroke() - self.barStrokeColor.setStroke() - bar.stroke() - } - } - - class MCSlider: NSSlider { - required init?(coder: NSCoder) { - super.init(coder: coder) - } - - override init(frame frameRect: NSRect) { - super.init(frame: frameRect) - self.cell = MCSliderCell() - } - - func setNumOfCustomTickmarks(_ numOfCustomTickmarks: Int) { - if let cell = self.cell as? MCSliderCell { - cell.numOfTickmarks = numOfCustomTickmarks - } - } - - func setDisplayHighlightItems(_ isHighlightDisplayItems: Bool) { - if let cell = self.cell as? MCSliderCell { - cell.isHighlightDisplayItems = isHighlightDisplayItems - } - } - - func setHighlightItem(_ displayID: CGDirectDisplayID, value: Float) { - if let cell = self.cell as? MCSliderCell { - cell.displayHighlightItems[displayID] = value - } - } - - func removeHighlightItem(_ displayID: CGDirectDisplayID) { - if let cell = self.cell as? MCSliderCell { - if cell.displayHighlightItems[displayID] != nil { - cell.displayHighlightItems[displayID] = nil - } - } - } - - func resetHighlightItems() { - if let cell = self.cell as? MCSliderCell { - cell.displayHighlightItems.removeAll() - } - } - - // Credits for this class go to @thompsonate - https://github.com/thompsonate/Scrollable-NSSlider - override func scrollWheel(with event: NSEvent) { - guard self.isEnabled else { return } - let range = Float(self.maxValue - self.minValue) - var delta = Float(0) - if self.isVertical, self.sliderType == .linear { - delta = Float(event.deltaY) - } else if self.userInterfaceLayoutDirection == .rightToLeft { - delta = Float(event.deltaY + event.deltaX) - } else { - delta = Float(event.deltaY - event.deltaX) - } - if event.isDirectionInvertedFromDevice { - delta *= -1 - } - let increment = range * delta / 100 - let value = self.floatValue + increment - self.floatValue = value - self.sendAction(self.action, to: self.target) - } - } - - class ClickThroughImageView: NSImageView { - override func hitTest(_ point: NSPoint) -> NSView? { - return subviews.first { subview in subview.hitTest(point) != nil - } - } - } - - public init(display: Display?, command: Command, title: String = "", position _: Int = 0) { - self.command = command - self.title = title - let slider = SliderHandler.MCSlider(value: 0, minValue: 0, maxValue: 1, target: self, action: #selector(SliderHandler.valueChanged)) - let showPercent = prefs.bool(forKey: PrefKey.enableSliderPercent.rawValue) - slider.isEnabled = true - slider.setNumOfCustomTickmarks(prefs.bool(forKey: PrefKey.showTickMarks.rawValue) ? 5 : 0) - self.slider = slider - if !DEBUG_MACOS10, #available(macOS 11.0, *) { - slider.frame.size.width = 180 - slider.frame.origin = NSPoint(x: 15, y: 5) - let view = NSView(frame: NSRect(x: 0, y: 0, width: slider.frame.width + 30 + (showPercent ? 38 : 0), height: slider.frame.height + 14)) - view.frame.origin = NSPoint(x: 12, y: 0) - var iconName: String = "circle.dashed" - switch command { - case .audioSpeakerVolume: iconName = "speaker.wave.2.fill" - case .brightness: iconName = "sun.max.fill" - case .contrast: iconName = "circle.lefthalf.fill" - default: break - } - let icon = SliderHandler.ClickThroughImageView() - icon.image = NSImage(systemSymbolName: iconName, accessibilityDescription: title) - icon.contentTintColor = NSColor.black.withAlphaComponent(0.6) - icon.frame = NSRect(x: view.frame.origin.x + 6.5, y: view.frame.origin.y + 13, width: 15, height: 15) - icon.imageAlignment = .alignCenter - view.addSubview(slider) - view.addSubview(icon) - self.icon = icon - if showPercent { - let percentageBox = NSTextField(frame: NSRect(x: 15 + slider.frame.size.width - 2, y: 17, width: 40, height: 12)) - self.setupPercentageBox(percentageBox) - self.percentageBox = percentageBox - view.addSubview(percentageBox) - } - self.view = view - } else { - slider.frame.size.width = 180 - slider.frame.origin = NSPoint(x: 15, y: 5) - let view = NSView(frame: NSRect(x: 0, y: 0, width: slider.frame.width + 30 + (showPercent ? 38 : 0), height: slider.frame.height + 10)) - view.addSubview(slider) - if showPercent { - let percentageBox = NSTextField(frame: NSRect(x: 15 + slider.frame.size.width - 2, y: 18, width: 40, height: 12)) - self.setupPercentageBox(percentageBox) - self.percentageBox = percentageBox - view.addSubview(percentageBox) - } - self.view = view - } - slider.maxValue = 1 - if let displayToAppend = display { - self.addDisplay(displayToAppend) - } - } - - func addDisplay(_ display: Display) { - self.displays.append(display) - if let otherDisplay = display as? OtherDisplay { - let value = otherDisplay.setupSliderCurrentValue(command: self.command) - self.setValue(value, displayID: otherDisplay.identifier) - } else if let appleDisplay = display as? AppleDisplay { - if self.command == .brightness { - self.setValue(appleDisplay.getAppleBrightness(), displayID: appleDisplay.identifier) - } - } - } - - func setupPercentageBox(_ percentageBox: NSTextField) { - percentageBox.font = NSFont.systemFont(ofSize: 12) - percentageBox.isEditable = false - percentageBox.isBordered = false - percentageBox.drawsBackground = false - percentageBox.alignment = .right - percentageBox.alphaValue = 0.7 - } - - func valueChangedOtherDisplay(otherDisplay: OtherDisplay, value: Float) { - // For the speaker volume slider, also set/unset the mute command when the value is changed from/to 0 - if self.command == .audioSpeakerVolume, (otherDisplay.readPrefAsInt(for: .audioMuteScreenBlank) == 1 && value > 0) || (otherDisplay.readPrefAsInt(for: .audioMuteScreenBlank) != 1 && value == 0) { - otherDisplay.toggleMute(fromVolumeSlider: true) - } - if self.command == Command.brightness { - _ = otherDisplay.setBrightness(value) - return - } else if !otherDisplay.isSw() { - if self.command == Command.audioSpeakerVolume { - if !otherDisplay.readPrefAsBool(key: .enableMuteUnmute) || value != 0 { - _ = otherDisplay.writeDDCValues(command: self.command, value: otherDisplay.convValueToDDC(for: self.command, from: value)) - } - } else { - _ = otherDisplay.writeDDCValues(command: self.command, value: otherDisplay.convValueToDDC(for: self.command, from: value)) - } - otherDisplay.savePref(value, for: self.command) - } - } - - @objc func valueChanged(slider: MCSlider) { - guard app.sleepID == 0, app.reconfigureID == 0 else { - return - } - var value = slider.floatValue - self.updateIcon() - if prefs.bool(forKey: PrefKey.enableSliderSnap.rawValue) { - let intPercent = Int(value * 100) - let snapInterval = 25 - let snapThreshold = 3 - let closest = (intPercent + snapInterval / 2) / snapInterval * snapInterval - if abs(closest - intPercent) <= snapThreshold { - value = Float(closest) / 100 - slider.floatValue = value - } - } - if self.percentageBox == self.percentageBox { - self.percentageBox?.stringValue = "" + String(Int(value * 100)) + "%" - } - for display in self.displays { - slider.setHighlightItem(display.identifier, value: value) - if self.command == .brightness, let appleDisplay = display as? AppleDisplay { - _ = appleDisplay.setBrightness(value) - } else if let otherDisplay = display as? OtherDisplay { - self.valueChangedOtherDisplay(otherDisplay: otherDisplay, value: value) - } - } - slider.setDisplayHighlightItems(false) - } - - func updateIcon() { - // This looks hideous so I disable it for now. Maybe after a bit of tinkering it will look better - /* - if self.command == .audioSpeakerVolume { - let value = self.slider?.floatValue ?? 0.5 - if value > 2/3 { - self.icon?.image = NSImage(systemSymbolName: "speaker.wave.3.fill", accessibilityDescription: "") - } else if value > 1/3 { - self.icon?.image = NSImage(systemSymbolName: "speaker.wave.2.fill", accessibilityDescription: "") - } else if value != 0 { - self.icon?.image = NSImage(systemSymbolName: "speaker.wave.1.fill", accessibilityDescription: "") - } else { - self.icon?.image = NSImage(systemSymbolName: "speaker.slash.fill", accessibilityDescription: "") - } - } - */ - } - - func setValue(_ value: Float, displayID: CGDirectDisplayID = 0) { - if let slider = self.slider { - if displayID != 0 { - self.values[displayID] = value - slider.setHighlightItem(displayID, value: value) - } - var sumVal: Float = 0 - var maxVal: Float = 0 - var minVal: Float = 1 - var num: Int = 0 - for key in self.values.keys { - if let val = values[key] { - sumVal += val - maxVal = max(maxVal, val) - minVal = min(minVal, val) - num += 1 - } - } - // let average = sumVal / Float(num) - slider.floatValue = value - self.updateIcon() - if abs(maxVal - minVal) > 0.001 { - slider.setDisplayHighlightItems(true) - } else { - slider.setDisplayHighlightItems(false) - } - if self.percentageBox == self.percentageBox { - self.percentageBox?.stringValue = "" + String(Int(value * 100)) + "%" - } - } - } -} diff --git a/MonitorControl/UI/Base.lproj/Main.storyboard b/MonitorControl/UI/Base.lproj/Main.storyboard deleted file mode 100644 index 6f718582..00000000 --- a/MonitorControl/UI/Base.lproj/Main.storyboard +++ /dev/null @@ -1,2210 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only. - - - - - - - - - - - - - - - - Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps. - - - - - - - - - - - - - - - - - - - - - - - - - Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default. - - - - - - - - - - - - - - - - Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @the0neyouseek -@JoniVR -@waydabber - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/MonitorControl/UI/de.lproj/Localizable.strings b/MonitorControl/UI/de.lproj/Localizable.strings deleted file mode 100644 index 93a22e04..00000000 --- a/MonitorControl/UI/de.lproj/Localizable.strings +++ /dev/null @@ -1,136 +0,0 @@ -/* Shown in the main prefs window */ -"About" = "Über"; - -/* Shown in the main prefs window */ -"App menu" = "App menu"; - -/* Apple Silicon designation (shown after the version number in Preferences) */ -"Apple Silicon" = "Apple Silicon"; - -/* Shown in the alert dialog */ -"Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure." = "Bist du sicher, dass du eine längere Verzögerung aktivieren willst? Wenn du dies tust, kann dein System einfrieren und einen Neustart erfordern. Der Start bei der Anmeldung wird als Sicherheitsmassnahme deaktiviert."; - -/* Shown in the alert dialog */ -"Are you sure you want to reset all preferences?" = "Bist du sicher, dass du alle Einstellungen zurücksetzen willst?"; - -/* Shown in menu */ -"Brightness" = "Helligkeit"; - -/* Build */ -"Build" = "Build"; - -/* Shown in the Display Preferences */ -"Built-in Display" = "Integriertes Display"; - -/* Shown in menu */ -"Check for updates..." = "Check for updates..."; - -/* Shown in menu */ -"Contrast" = "Kontrast"; - -/* Version */ -"Copyright Ⓒ MonitorControl, " = "Copyright Ⓒ MonitorControl, "; - -/* Shown in the main prefs window */ -"Displays" = "Displays"; - -/* Shown in the alert dialog */ -"Enable Longer Delay?" = "Längere Verzögerung einschalten?"; - -/* Shown in the Display Preferences */ -"External Display" = "Externes Display"; - -/* Shown in the main prefs window */ -"General" = "Allgemein"; - -/* Shown in the Display Preferences */ -"Hardware (Apple)" = "Hardware (Apple)"; - -/* Shown in the Display Preferences */ -"Hardware (DDC)" = "Hardware (DDC)"; - -/* Shown in the alert dialog */ -"Incompatible previous version" = "Incompatible previous version"; - -/* Intel designation (shown after the version number in Preferences) */ -"Intel" = "Intel"; - -/* Shown in the main prefs window */ -"Keyboard" = "Keyboard"; - -/* Shown in the alert dialog */ -"No" = "Nein"; - -/* Shown in the Display Preferences */ -"No Control" = "No Control"; - -/* Shown in the Display Preferences */ -"Other Display" = "Anderes Display"; - -/* Shown in the alert dialog */ -"Preferences for an incompatible previous app version detected. Default preferences are reloaded." = "Preferences for an incompatible previous app version detected. Default preferences are reloaded."; - -/* Shown in menu */ -"Preferences..." = "Preferences..."; - -/* Shown in menu */ -"Quit" = "Quit"; - -/* Shown in the alert dialog */ -"Reset Preferences?" = "Einstellungen zurücksetzen?"; - -/* Shown in the alert dialog */ -"Safe Mode Activated" = "Safe Mode Activated"; - -/* Shown in the alert dialog */ -"Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked." = "Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked."; - -/* Shown in the alert dialog */ -"Shortcuts not available" = "Kurzbefehle sind nicht verfügbar"; - -/* Shown in the Display Preferences */ -"Software (Gamma)" = "Software (Gamma)"; - -/* Shown in the Display Preferences */ -"Software (Gamma, Forced)" = "Software (Gamma, Forced)"; - -/* Shown in the Display Preferences */ -"Software (Shade)" = "Software (Shade)"; - -/* Shown in the Display Preferences */ -"This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display." = "This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display."; - -/* Shown in the Display Preferences */ -"This display has an unspecified control status." = "This display has an unspecified control status."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control but the current settings allow for software control only." = "This display is reported to support hardware DDC control but the current settings allow for software control only."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control." = "This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control."; - -/* Shown in the Display Preferences */ -"This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well." = "This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well."; - -/* Shown in the Display Preferences */ -"This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode." = "This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode."; - -/* unknown display name - unknown model - unknown vendor */ -"Unknown" = "Unbekannt"; - -/* Version */ -"Version" = "Version"; - -/* Shown in the Display Preferences */ -"Virtual Display" = "Virtuelles Display"; - -/* Shown in menu */ -"Volume" = "Lautstärke"; - -/* Shown in the alert dialog */ -"Yes" = "Ja"; - -/* Shown in the alert dialog */ -"You need to enable MonitorControl in System Preferences > Security and Privacy > Accessibility for the keyboard shortcuts to work" = "Du musst MonitorControl in Systemeinstellungen > Sicherheit > Datenschutz > Bedienungshilfen aktivieren, damit die Kurzbefehle funktionieren."; diff --git a/MonitorControl/UI/de.lproj/Main.strings b/MonitorControl/UI/de.lproj/Main.strings deleted file mode 100644 index bd5a7240..00000000 --- a/MonitorControl/UI/de.lproj/Main.strings +++ /dev/null @@ -1,401 +0,0 @@ -/* Class = "NSButtonCell"; title = "Sync brightness changes from Built-in and Apple displays"; ObjectID = "0ca-DG-AgB"; */ -"0ca-DG-AgB.title" = "Sync brightness changes from Built-in and Apple displays"; - -/* Class = "NSButtonCell"; title = "Attempt to read display settings"; ObjectID = "0qp-fq-8MI"; */ -"0qp-fq-8MI.title" = "Attempt to read display settings"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl"; ObjectID = "1PJ-14-Bvn"; */ -"1PJ-14-Bvn.title" = "MonitorControl"; - -/* Class = "NSMenuItem"; title = "Standard keyboard volume and mute keys"; ObjectID = "1sy-Kd-WL5"; */ -"1sy-Kd-WL5.title" = "Standard keyboard volume and mute keys"; - -/* Class = "NSButtonCell"; title = "Change volume for all screens"; ObjectID = "1XT-3S-UuD"; */ -"1XT-3S-UuD.title" = "Change volume for all screens"; - -/* Class = "NSTextFieldCell"; title = "DDC min"; ObjectID = "1zE-fg-xEm"; */ -"1zE-fg-xEm.title" = "DDC min"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "4CG-0I-anB"; */ -"4CG-0I-anB.title" = "Custom keyboard shortcuts"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; ObjectID = "4dX-o1-xAc"; */ -"4dX-o1-xAc.title" = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; - -/* Class = "NSButtonCell"; title = "Show separate controls for each display in menu"; ObjectID = "4t2-Rv-njr"; */ -"4t2-Rv-njr.title" = "Show separate controls for each display in menu"; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "567-le-fLg"; */ -"567-le-fLg.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Reset Preferences"; ObjectID = "5yT-5F-X5R"; */ -"5yT-5F-X5R.title" = "Reset Preferences"; - -/* Class = "NSMenuItem"; title = "Always hide"; ObjectID = "6mo-7S-oOO"; */ -"6mo-7S-oOO.title" = "Always hide"; - -/* Class = "NSTextFieldCell"; title = "Slider behavior:"; ObjectID = "75n-7M-1mS"; */ -"75n-7M-1mS.title" = "Slider behavior:"; - -/* Class = "NSButtonCell"; title = "Use combined slider for all displays"; ObjectID = "7rn-Lu-fcl"; */ -"7rn-Lu-fcl.title" = "Use combined slider for all displays"; - -/* Class = "NSButtonCell"; title = "Show slider tick marks"; ObjectID = "7zf-m1-gJO"; */ -"7zf-m1-gJO.title" = "Show slider tick marks"; - -/* Class = "NSTextFieldCell"; title = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; ObjectID = "8Gx-Ya-zhp"; */ -"8Gx-Ya-zhp.title" = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale"; ObjectID = "8Q8-57-xnT"; */ -"8Q8-57-xnT.title" = "Use fine OSD scale"; - -/* Class = "NSButtonCell"; title = "Special thanks to our contributors!"; ObjectID = "95V-M4-2l5"; */ -"95V-M4-2l5.title" = "Besonderen Dank an unsere Mitwirkenden!"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "9eC-PD-FHl"; */ -"9eC-PD-FHl.title" = "Custom keyboard shortcuts"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "9H1-0z-xsx"; */ -"9H1-0z-xsx.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; ObjectID = "A8P-vn-DEJ"; */ -"A8P-vn-DEJ.title" = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; - -/* Class = "NSButtonCell"; title = "Disable software dimming as fallback"; ObjectID = "afB-Xx-Lta"; */ -"afB-Xx-Lta.title" = "Disable software dimming as fallback"; - -/* Class = "NSTextFieldCell"; title = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; ObjectID = "an7-Aj-3fZ"; */ -"an7-Aj-3fZ.title" = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; - -/* Class = "NSTextFieldCell"; title = "Brightness:"; ObjectID = "Bhb-6l-uPQ"; */ -"Bhb-6l-uPQ.title" = "Brightness:"; - -/* Class = "NSTextFieldCell"; title = "(Gamma->DDC)"; ObjectID = "Bid-UL-blc"; */ -"Bid-UL-blc.title" = "(Gamma->DDC)"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only. Results may vary."; ObjectID = "bIe-6O-xEH"; */ -"bIe-6O-xEH.title" = "For hardware (DDC) controlled displays only. Results may vary."; - -/* Class = "NSButtonCell"; title = "Disable macOS volume OSD"; ObjectID = "bkM-Px-U3b"; */ -"bkM-Px-U3b.title" = "macOS Lautstärke OSD deaktivieren"; - -/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "bP4-GJ-vhJ"; */ -"bP4-GJ-vhJ.title" = "OSD scale:"; - -/* Class = "NSButtonCell"; title = "Reset settings"; ObjectID = "BYS-7Y-bRz"; */ -"BYS-7Y-bRz.title" = "Zurücksetzen"; - -/* Class = "NSButtonCell"; title = "Enable Mute DDC command"; ObjectID = "bZq-0d-lJa"; */ -"bZq-0d-lJa.title" = "Stummschaltung DDC Befehl aktivieren"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "Bzq-Co-fex"; */ -"Bzq-Co-fex.title" = "Decrease:"; - -/* Class = "NSButtonCell"; title = "Show volume slider in menu"; ObjectID = "c9D-MB-lma"; */ -"c9D-MB-lma.title" = "Show volume slider in menu"; - -/* Class = "NSMenuItem"; title = "Custom"; ObjectID = "Cle-DD-vR7"; */ -"Cle-DD-vR7.title" = "Benutzerdefiniert"; - -/* Class = "NSButtonCell"; title = "Website"; ObjectID = "Cln-uW-2dd"; */ -"Cln-uW-2dd.title" = "Webseite"; - -/* Class = "NSTextFieldCell"; title = "Upon startup or wake:"; ObjectID = "cNt-Cq-vK4"; */ -"cNt-Cq-vK4.title" = "Upon startup or wake:"; - -/* Class = "NSTextFieldCell"; title = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; ObjectID = "Cz1-Mh-llk"; */ -"Cz1-Mh-llk.title" = "⚠️ Warnung! Ändern einiger dieser Einstellungen können zu unerwartetem Verhalten führen!"; - -/* Class = "NSTextFieldCell"; title = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; ObjectID = "D4H-hU-FLn"; */ -"D4H-hU-FLn.title" = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; - -/* Class = "NSTextFieldCell"; title = "VCP list"; ObjectID = "D9t-vT-gNJ"; */ -"D9t-vT-gNJ.title" = "VCP list"; - -/* Class = "NSTextFieldCell"; title = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; ObjectID = "Dha-Tm-cDM"; */ -"Dha-Tm-cDM.title" = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; - -/* Class = "NSTextFieldCell"; title = "You can disable smooth transitions for a more direct, immediate control."; ObjectID = "ENt-mP-0yH"; */ -"ENt-mP-0yH.title" = "You can disable smooth transitions for a more direct, immediate control."; - -/* Class = "NSMenuItem"; title = "Minimal"; ObjectID = "Eq3-z9-yIo"; */ -"Eq3-z9-yIo.title" = "Minimal"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "eue-as-VOR"; */ -"eue-as-VOR.title" = "Increase:"; - -/* Class = "NSTextFieldCell"; title = "Scale mapping curve"; ObjectID = "Eui-5S-JR6"; */ -"Eui-5S-JR6.title" = "Scale mapping curve"; - -/* Class = "NSTextFieldCell"; title = "Mute:"; ObjectID = "EvN-FT-vdZ"; */ -"EvN-FT-vdZ.title" = "Mute:"; - -/* Class = "NSTextFieldCell"; title = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; ObjectID = "f6J-Ui-uMB"; */ -"f6J-Ui-uMB.title" = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; - -/* Class = "NSButtonCell"; title = "Reset Name"; ObjectID = "f9g-8s-gdd"; */ -"f9g-8s-gdd.title" = "Name zurücksetzen"; - -/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "Faf-9L-TXx"; */ -"Faf-9L-TXx.title" = "Automatically check for updates"; - -/* Class = "NSTextFieldCell"; title = "Brightness control:"; ObjectID = "fe9-Ia-t9m"; */ -"fe9-Ia-t9m.title" = "Brightness control:"; - -/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */ -"FER-Ri-4UO.title" = "Volume:"; - -/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */ -"fmZ-HI-Mdc.title" = "Apple and built-in displays already have a brightness slider in Control Center."; - -/* Class = "NSMenuItem"; title = "None"; ObjectID = "FoA-yh-Yx3"; */ -"FoA-yh-Yx3.title" = "Keine"; - -/* Class = "NSMenuItem"; title = "Show as icons"; ObjectID = "fR3-kq-cps"; */ -"fR3-kq-cps.title" = "Show as icons"; - -/* Class = "NSMenuItem"; title = "Show as text"; ObjectID = "fWd-Es-zsy"; */ -"fWd-Es-zsy.title" = "Show as text"; - -/* Class = "NSTextFieldCell"; title = "Invert"; ObjectID = "G5A-y3-eZz"; */ -"G5A-y3-eZz.title" = "Invert"; - -/* Class = "NSTextFieldCell"; title = "Brightness slider for hardware or software controlled displays or TVs."; ObjectID = "gXH-HL-ZOL"; */ -"gXH-HL-ZOL.title" = "Brightness slider for hardware or software controlled displays or TVs."; - -/* Class = "NSTextFieldCell"; title = "Override audio device name:"; ObjectID = "H9X-it-sXs"; */ -"H9X-it-sXs.title" = "Override audio device name:"; - -/* Class = "NSTextFieldCell"; title = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; ObjectID = "hF7-fM-aKr"; */ -"hF7-fM-aKr.title" = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; - -/* Class = "NSButtonCell"; title = "Get current"; ObjectID = "hkC-vq-IcD"; */ -"hkC-vq-IcD.title" = "Get current"; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "HLE-Vp-kcS"; */ -"HLE-Vp-kcS.title" = "Record shortcuts:"; - -/* Class = "NSMenuItem"; title = "Hide"; ObjectID = "HUT-Qc-kuu"; */ -"HUT-Qc-kuu.title" = "Hide"; - -/* Class = "NSTextFieldCell"; title = "Additional controls:"; ObjectID = "i5X-M5-Tf5"; */ -"i5X-M5-Tf5.title" = "Additional controls:"; - -/* Class = "NSTextFieldCell"; title = "Brightness"; ObjectID = "IJB-mO-e8I"; */ -"IJB-mO-e8I.title" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable smooth brightness transitions"; ObjectID = "IK4-u5-qjf"; */ -"IK4-u5-qjf.title" = "Enable smooth brightness transitions"; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale for volume"; ObjectID = "J3L-MW-iJL"; */ -"J3L-MW-iJL.title" = "Use fine OSD scale for volume"; - -/* Class = "NSButtonCell"; title = "Start at Login"; ObjectID = "j72-NF-zsW"; */ -"j72-NF-zsW.title" = "Start beim Login"; - -/* Class = "NSButtonCell"; title = "Change for all screens"; ObjectID = "JC3-pb-XnR"; */ -"JC3-pb-XnR.title" = "Change for all screens"; - -/* Class = "NSTextFieldCell"; title = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; ObjectID = "Jx2-gO-nq9"; */ -"Jx2-gO-nq9.title" = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; - -/* Class = "NSButtonCell"; title = "Apply last saved values to the display"; ObjectID = "K0S-zN-M4k"; */ -"K0S-zN-M4k.title" = "Apply last saved values to the display"; - -/* Class = "NSButtonCell"; title = "Enable for Apple branded and built-in displays as well"; ObjectID = "K6A-4z-1aQ"; */ -"K6A-4z-1aQ.title" = "Enable for Apple branded and built-in displays as well"; - -/* Class = "NSTextFieldCell"; title = "Don't use software dimming as fallback if no hardware control is available."; ObjectID = "kgh-b4-gmO"; */ -"kgh-b4-gmO.title" = "Don't use software dimming as fallback if no hardware control is available."; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "kqJ-jQ-b7U"; */ -"kqJ-jQ-b7U.title" = "Record shortcuts:"; - -/* Class = "NSTextFieldCell"; title = "Brightness and contrast control:"; ObjectID = "LO4-4k-gxY"; */ -"LO4-4k-gxY.title" = "Brightness and contrast control:"; - -/* Class = "NSTextFieldCell"; title = "Display type:"; ObjectID = "lSJ-6w-KJ2"; */ -"lSJ-6w-KJ2.title" = "Display Typ:"; - -/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "ltL-gR-K3Z"; */ -"ltL-gR-K3Z.title" = "Screen to control:"; - -/* Class = "NSButtonCell"; title = "Enable slider snapping"; ObjectID = "MlU-hl-d46"; */ -"MlU-hl-d46.title" = "Enable slider snapping"; - -/* Class = "NSMenuItem"; title = "Always show in the menu bar"; ObjectID = "MM0-Lf-VgF"; */ -"MM0-Lf-VgF.title" = "Always show in the menu bar"; - -/* Class = "NSButtonCell"; title = "Use window focus to determine which display to control"; ObjectID = "mMG-Ac-gdB"; */ -"mMG-Ac-gdB.title" = "Use window focus to determine which display to control"; - -/* Class = "NSTextFieldCell"; title = "Contrast:"; ObjectID = "MMk-S2-yJN"; */ -"MMk-S2-yJN.title" = "Contrast:"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "mue-fa-8z6"; */ -"mue-fa-8z6.title" = "Increase:"; - -/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */ -"MWo-6I-s9L.title" = "Show brightness slider in menu"; - -/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */ -"O8o-hI-8eR.title" = "Separate scales for combined hardware & software dimming"; - -/* Class = "NSButtonCell"; title = "Use audio device name to determine which display to control"; ObjectID = "OAa-B4-8r3"; */ -"OAa-B4-8r3.title" = "Use audio device name to determine which display to control"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "OG9-iA-jK1"; */ -"OG9-iA-jK1.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "oHf-Gh-68c"; */ -"oHf-Gh-68c.title" = "Disable keyboard"; - -/* Class = "NSTextFieldCell"; title = "Application:"; ObjectID = "okD-DG-pYa"; */ -"okD-DG-pYa.title" = "Anwendung:"; - -/* Class = "NSMenuItem"; title = "Standard keyboard brightness keys"; ObjectID = "Oke-bW-cb1"; */ -"Oke-bW-cb1.title" = "Standard keyboard brightness keys"; - -/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */ -"Orv-yj-Nad.title" = "count:"; - -/* Class = "NSTextFieldCell"; title = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; ObjectID = "pa0-Hz-ace"; */ -"pa0-Hz-ace.title" = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; - -/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */ -"PaK-1f-DsW.title" = "Steuerung:"; - -/* Class = "NSButtonCell"; title = "Longer delay during DDC read operations"; ObjectID = "pF5-Sw-7BR"; */ -"pF5-Sw-7BR.title" = "Längere Verzögerung bei DDC-Lesevorgängen"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only."; ObjectID = "POy-35-bh0"; */ -"POy-35-bh0.title" = "For hardware (DDC) controlled displays only."; - -/* Class = "NSTextFieldCell"; title = "DDC max"; ObjectID = "psF-vX-AFB"; */ -"psF-vX-AFB.title" = "DDC max"; - -/* Class = "NSButtonCell"; title = "Show sliders only for the display currently showing the menu"; ObjectID = "PvP-TV-OmT"; */ -"PvP-TV-OmT.title" = "Show sliders only for the display currently showing the menu"; - -/* Class = "NSTextFieldCell"; title = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; ObjectID = "PyY-p9-3NP"; */ -"PyY-p9-3NP.title" = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "QDG-SA-mRX"; */ -"QDG-SA-mRX.title" = "Both standard and custom shortcuts"; - -/* Class = "NSButtonCell"; title = "Quit appliation"; ObjectID = "qlb-wH-qr4"; */ -"qlb-wH-qr4.title" = "Quit appliation"; - -/* Class = "NSButtonCell"; title = "Show contrast slider in menu"; ObjectID = "qO0-dB-yUs"; */ -"qO0-dB-yUs.title" = "Show contrast slider in menu"; - -/* Class = "NSTextFieldCell"; title = "Volume control (DDC only):"; ObjectID = "qoh-Gn-f11"; */ -"qoh-Gn-f11.title" = "Volume control (DDC only):"; - -/* Class = "NSTextFieldCell"; title = "Show percentage next to slider for more precision."; ObjectID = "qXy-CL-Wf1"; */ -"qXy-CL-Wf1.title" = "Show percentage next to slider for more precision."; - -/* Class = "NSButtonCell"; title = "Combine hardware and software dimming"; ObjectID = "r76-Zc-x09"; */ -"r76-Zc-x09.title" = "Combine hardware and software dimming"; - -/* Class = "NSTextFieldCell"; title = "Advanced:"; ObjectID = "r7i-oG-Ab6"; */ -"r7i-oG-Ab6.title" = "Erweitert:"; - -/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "Riq-uM-bTs"; */ -"Riq-uM-bTs.title" = "Normal"; - -/* Class = "NSButton"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "RkH-7d-KvR"; */ -"RkH-7d-KvR.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Show advanced settings"; ObjectID = "sAR-sh-y8e"; */ -"sAR-sh-y8e.title" = "Show advanced settings"; - -/* Class = "NSTextFieldCell"; title = "General menu items style:"; ObjectID = "thh-DG-ecH"; */ -"thh-DG-ecH.title" = "General menu items style:"; - -/* Class = "NSTextFieldCell"; title = "@the0neyouseek\n@JoniVR\n@waydabber"; ObjectID = "TKd-J8-Iyk"; */ -"TKd-J8-Iyk.title" = "@the0neyouseek\n@reitermarkus\n@JoniVR\n@waydabber"; - -/* Class = "NSTextFieldCell"; title = "Menu Icon:"; ObjectID = "u6s-Pb-BCG"; */ -"u6s-Pb-BCG.title" = "Menu Icon:"; - -/* Class = "NSTextFieldCell"; title = "Works if an audio device is selected with no native volume control."; ObjectID = "uF5-a9-Ngz"; */ -"uF5-a9-Ngz.title" = "Works if an audio device is selected with no native volume control."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "uJS-s3-Zpi"; */ -"uJS-s3-Zpi.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable keyboard control for display"; ObjectID = "UqR-WE-jHl"; */ -"UqR-WE-jHl.title" = "Tastatursteuerung für das Display verwenden"; - -/* Class = "NSTextFieldCell"; title = "Contrast (DDC)"; ObjectID = "urd-Rh-aiL"; */ -"urd-Rh-aiL.title" = "Contrast"; - -/* Class = "NSButtonCell"; title = "Do not use alternative brightness keys"; ObjectID = "vd2-Lk-neX"; */ -"vd2-Lk-neX.title" = "Do not use alternative brightness keys"; - -/* Class = "NSMenuItem"; title = "Heavy"; ObjectID = "vik-vN-bJe"; */ -"vik-vN-bJe.title" = "Stark"; - -/* Class = "NSTextFieldCell"; title = "Multiple displays:"; ObjectID = "vri-pv-tJ4"; */ -"vri-pv-tJ4.title" = "Multiple displays:"; - -/* Class = "NSTextFieldCell"; title = "DDC read polling mode:"; ObjectID = "vwm-hY-on5"; */ -"vwm-hY-on5.title" = "DDC Leseabfrage Modus:"; - -/* Class = "NSTextFieldCell"; title = "General options:"; ObjectID = "W58-ch-j69"; */ -"W58-ch-j69.title" = "General options:"; - -/* Class = "NSTextFieldCell"; title = "Useful when a display tends to reset its settings during sleep."; ObjectID = "w8B-x6-sq5"; */ -"w8B-x6-sq5.title" = "Useful when a display tends to reset its settings during sleep."; - -/* Class = "NSTextFieldCell"; title = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; ObjectID = "wjv-tq-iUx"; */ -"wjv-tq-iUx.title" = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; - -/* Class = "NSTextFieldCell"; title = "Display advanced settings and additional information in Preferences."; ObjectID = "X6w-Ee-9Jq"; */ -"X6w-Ee-9Jq.title" = "Display advanced settings and additional information in Preferences."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "xDF-IA-bBh"; */ -"xDF-IA-bBh.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Update settings from the display. May not work with some hardware."; ObjectID = "xjq-hs-wWB"; */ -"xjq-hs-wWB.title" = "Update settings from the display. May not work with some hardware."; - -/* Class = "NSMenuItem"; title = "Only if at least one slider is present"; ObjectID = "xLa-PN-rsq"; */ -"xLa-PN-rsq.title" = "Only if at least one slider is present"; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "xQJ-aJ-VhH"; */ -"xQJ-aJ-VhH.title" = "Both standard and custom shortcuts"; - -/* Class = "NSTextFieldCell"; title = "Works best with various syncing and 'control all' keyboard settings enabled."; ObjectID = "XU4-Bn-bwH"; */ -"XU4-Bn-bwH.title" = "Works best with various syncing and 'control all' keyboard settings enabled."; - -/* Class = "NSTextFieldCell"; title = "Available"; ObjectID = "yBJ-5d-I7e"; */ -"yBJ-5d-I7e.title" = "Available"; - -/* Class = "NSTextFieldCell"; title = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; ObjectID = "YHZ-VL-QJ3"; */ -"YHZ-VL-QJ3.title" = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; - -/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */ -"yn8-Nd-o89.title" = "Assume last saved settings are valid (recommended)"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "yQh-Ve-WEE"; */ -"yQh-Ve-WEE.title" = "Decrease:"; - -/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "YqZ-LS-YvR"; */ -"YqZ-LS-YvR.title" = "Bezeichnung:"; - -/* Class = "NSButtonCell"; title = "Use hardware DDC control"; ObjectID = "ZdU-gV-V05"; */ -"ZdU-gV-V05.title" = "Hardware DDC Regelung verwenden"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "zHa-xo-XPW"; */ -"zHa-xo-XPW.title" = "Disable keyboard"; - -/* Class = "NSButtonCell"; title = "Donate"; ObjectID = "ZKk-ve-rS4"; */ -"ZKk-ve-rS4.title" = "Spenden"; - -/* Class = "NSButtonCell"; title = "Show percentages"; ObjectID = "ZUu-MR-XwA"; */ -"ZUu-MR-XwA.title" = "Show percentages"; - -/* Class = "NSTextFieldCell"; title = "Combined dimming switchover point:"; ObjectID = "zv8-pZ-OPy"; */ -"zv8-pZ-OPy.title" = "Combined dimming switchover point:"; diff --git a/MonitorControl/UI/en.lproj/Localizable.strings b/MonitorControl/UI/en.lproj/Localizable.strings deleted file mode 100644 index 5326a091..00000000 --- a/MonitorControl/UI/en.lproj/Localizable.strings +++ /dev/null @@ -1,134 +0,0 @@ -/* Shown in the main prefs window */ -"About" = "About"; - -/* Shown in the main prefs window */ -"App menu" = "App menu"; - -/* Apple Silicon designation (shown after the version number in Preferences) */ -"Apple Silicon" = "Apple Silicon"; - -/* Shown in the alert dialog */ -"Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure." = "Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure."; - -/* Shown in the alert dialog */ -"Are you sure you want to reset all preferences?" = "Are you sure you want to reset all preferences?"; - -/* Shown in menu */ -"Brightness" = "Brightness"; - -/* Build */ -"Build" = "Build"; - -/* Shown in the Display Preferences */ -"Built-in Display" = "Built-in Display"; - -/* Shown in menu */ -"Check for updates..." = "Check for updates..."; - -/* Shown in menu */ -"Contrast" = "Contrast"; - -/* Version */ -"Copyright Ⓒ MonitorControl, " = "Copyright Ⓒ MonitorControl, "; - -/* Shown in the main prefs window */ -"Displays" = "Displays"; - -/* Shown in the alert dialog */ -"Enable Longer Delay?" = "Enable Longer Delay?"; - -/* Shown in the Display Preferences */ -"External Display" = "External Display"; - -/* Shown in the main prefs window */ -"General" = "General"; - -/* Shown in the Display Preferences */ -"Hardware (Apple)" = "Hardware (Apple)"; - -/* Shown in the Display Preferences */ -"Hardware (DDC)" = "Hardware (DDC)"; - -/* Shown in the alert dialog */ -"Incompatible previous version" = "Incompatible previous version"; - -/* Intel designation (shown after the version number in Preferences) */ -"Intel" = "Intel"; - -/* Shown in the main prefs window */ -"Keyboard" = "Keyboard"; - -/* Shown in the alert dialog */ -"No" = "No"; - -/* Shown in the Display Preferences */ -"No Control" = "No Control"; - -/* Shown in the Display Preferences */ -"Other Display" = "Other Display"; - -/* Shown in the alert dialog */ -"Preferences for an incompatible previous app version detected. Default preferences are reloaded." = "Preferences for an incompatible previous app version detected. Default preferences are reloaded."; - -/* Shown in menu */ -"Preferences..." = "Preferences..."; - -/* Shown in menu */ -"Quit" = "Quit"; - -/* Shown in the alert dialog */ -"Reset Preferences?" = "Reset Preferences?"; - -/* Shown in the alert dialog */ -"Safe Mode Activated" = "Safe Mode Activated"; - -/* Shown in the alert dialog */ -"Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked." = "Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked."; - -/* Shown in the alert dialog */ -"Shortcuts not available" = "Shortcuts not available"; - -/* Shown in the Display Preferences */ -"Software (Gamma)" = "Software (Gamma)"; - -/* Shown in the Display Preferences */ -"Software (Gamma, Forced)" = "Software (Gamma, Forced)"; - -/* Shown in the Display Preferences */ -"Software (Shade)" = "Software (Shade)"; - -/* Shown in the Display Preferences */ -"This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display." = "This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display."; - -/* Shown in the Display Preferences */ -"This display has an unspecified control status." = "This display has an unspecified control status."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control but the current settings allow for software control only." = "This display is reported to support hardware DDC control but the current settings allow for software control only."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control." = "This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control."; - -/* Shown in the Display Preferences */ -"This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well." = "This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well."; - -/* Shown in the Display Preferences */ -"This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode." = "This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode."; - -/* Unknown display name */ -"Unknown" = "Unknown"; - -/* Version */ -"Version" = "Version"; - -/* Shown in the Display Preferences */ -"Virtual Display" = "Virtual Display"; - -/* Shown in menu */ -"Volume" = "Volume"; - -/* Shown in the alert dialog */ -"Yes" = "Yes"; - -/* Shown in the alert dialog */ -"You need to enable MonitorControl in System Preferences > Security and Privacy > Accessibility for the keyboard shortcuts to work" = "You need to enable MonitorControl in System Preferences > Security and Privacy > Accessibility for the keyboard shortcuts to work"; diff --git a/MonitorControl/UI/en.lproj/Main.strings b/MonitorControl/UI/en.lproj/Main.strings deleted file mode 100644 index 6628331b..00000000 --- a/MonitorControl/UI/en.lproj/Main.strings +++ /dev/null @@ -1,401 +0,0 @@ -/* Class = "NSButtonCell"; title = "Sync brightness changes from Built-in and Apple displays"; ObjectID = "0ca-DG-AgB"; */ -"0ca-DG-AgB.title" = "Sync brightness changes from Built-in and Apple displays"; - -/* Class = "NSButtonCell"; title = "Attempt to read display settings"; ObjectID = "0qp-fq-8MI"; */ -"0qp-fq-8MI.title" = "Attempt to read display settings"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl"; ObjectID = "1PJ-14-Bvn"; */ -"1PJ-14-Bvn.title" = "MonitorControl"; - -/* Class = "NSMenuItem"; title = "Standard keyboard volume and mute keys"; ObjectID = "1sy-Kd-WL5"; */ -"1sy-Kd-WL5.title" = "Standard keyboard volume and mute keys"; - -/* Class = "NSButtonCell"; title = "Change volume for all screens"; ObjectID = "1XT-3S-UuD"; */ -"1XT-3S-UuD.title" = "Change volume for all screens"; - -/* Class = "NSTextFieldCell"; title = "DDC min"; ObjectID = "1zE-fg-xEm"; */ -"1zE-fg-xEm.title" = "DDC min"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "4CG-0I-anB"; */ -"4CG-0I-anB.title" = "Custom keyboard shortcuts"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; ObjectID = "4dX-o1-xAc"; */ -"4dX-o1-xAc.title" = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; - -/* Class = "NSButtonCell"; title = "Show separate controls for each display in menu"; ObjectID = "4t2-Rv-njr"; */ -"4t2-Rv-njr.title" = "Show separate controls for each display in menu"; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "567-le-fLg"; */ -"567-le-fLg.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Reset Preferences"; ObjectID = "5yT-5F-X5R"; */ -"5yT-5F-X5R.title" = "Reset Preferences"; - -/* Class = "NSMenuItem"; title = "Always hide"; ObjectID = "6mo-7S-oOO"; */ -"6mo-7S-oOO.title" = "Always hide"; - -/* Class = "NSTextFieldCell"; title = "Slider behavior:"; ObjectID = "75n-7M-1mS"; */ -"75n-7M-1mS.title" = "Slider behavior:"; - -/* Class = "NSButtonCell"; title = "Use combined slider for all displays"; ObjectID = "7rn-Lu-fcl"; */ -"7rn-Lu-fcl.title" = "Use combined slider for all displays"; - -/* Class = "NSButtonCell"; title = "Show slider tick marks"; ObjectID = "7zf-m1-gJO"; */ -"7zf-m1-gJO.title" = "Show slider tick marks"; - -/* Class = "NSTextFieldCell"; title = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; ObjectID = "8Gx-Ya-zhp"; */ -"8Gx-Ya-zhp.title" = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale"; ObjectID = "8Q8-57-xnT"; */ -"8Q8-57-xnT.title" = "Use fine OSD scale"; - -/* Class = "NSButtonCell"; title = "Special thanks to our contributors!"; ObjectID = "95V-M4-2l5"; */ -"95V-M4-2l5.title" = "Special thanks to our contributors!"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "9eC-PD-FHl"; */ -"9eC-PD-FHl.title" = "Custom keyboard shortcuts"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "9H1-0z-xsx"; */ -"9H1-0z-xsx.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; ObjectID = "A8P-vn-DEJ"; */ -"A8P-vn-DEJ.title" = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; - -/* Class = "NSButtonCell"; title = "Disable software dimming as fallback"; ObjectID = "afB-Xx-Lta"; */ -"afB-Xx-Lta.title" = "Disable software dimming as fallback"; - -/* Class = "NSTextFieldCell"; title = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; ObjectID = "an7-Aj-3fZ"; */ -"an7-Aj-3fZ.title" = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; - -/* Class = "NSTextFieldCell"; title = "Brightness:"; ObjectID = "Bhb-6l-uPQ"; */ -"Bhb-6l-uPQ.title" = "Brightness:"; - -/* Class = "NSTextFieldCell"; title = "(Gamma->DDC)"; ObjectID = "Bid-UL-blc"; */ -"Bid-UL-blc.title" = "(Gamma->DDC)"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only. Results may vary."; ObjectID = "bIe-6O-xEH"; */ -"bIe-6O-xEH.title" = "For hardware (DDC) controlled displays only. Results may vary."; - -/* Class = "NSButtonCell"; title = "Disable macOS volume OSD"; ObjectID = "bkM-Px-U3b"; */ -"bkM-Px-U3b.title" = "Disable macOS volume OSD"; - -/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "bP4-GJ-vhJ"; */ -"bP4-GJ-vhJ.title" = "OSD scale:"; - -/* Class = "NSButtonCell"; title = "Reset settings"; ObjectID = "BYS-7Y-bRz"; */ -"BYS-7Y-bRz.title" = "Reset settings"; - -/* Class = "NSButtonCell"; title = "Enable Mute DDC command"; ObjectID = "bZq-0d-lJa"; */ -"bZq-0d-lJa.title" = "Enable Mute DDC command"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "Bzq-Co-fex"; */ -"Bzq-Co-fex.title" = "Decrease:"; - -/* Class = "NSButtonCell"; title = "Show volume slider in menu"; ObjectID = "c9D-MB-lma"; */ -"c9D-MB-lma.title" = "Show volume slider in menu"; - -/* Class = "NSMenuItem"; title = "Custom"; ObjectID = "Cle-DD-vR7"; */ -"Cle-DD-vR7.title" = "Custom"; - -/* Class = "NSButtonCell"; title = "Website"; ObjectID = "Cln-uW-2dd"; */ -"Cln-uW-2dd.title" = "Website"; - -/* Class = "NSTextFieldCell"; title = "Upon startup or wake:"; ObjectID = "cNt-Cq-vK4"; */ -"cNt-Cq-vK4.title" = "Upon startup or wake:"; - -/* Class = "NSTextFieldCell"; title = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; ObjectID = "Cz1-Mh-llk"; */ -"Cz1-Mh-llk.title" = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; - -/* Class = "NSTextFieldCell"; title = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; ObjectID = "D4H-hU-FLn"; */ -"D4H-hU-FLn.title" = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; - -/* Class = "NSTextFieldCell"; title = "VCP list"; ObjectID = "D9t-vT-gNJ"; */ -"D9t-vT-gNJ.title" = "VCP list"; - -/* Class = "NSTextFieldCell"; title = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; ObjectID = "Dha-Tm-cDM"; */ -"Dha-Tm-cDM.title" = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; - -/* Class = "NSTextFieldCell"; title = "You can disable smooth transitions for a more direct, immediate control."; ObjectID = "ENt-mP-0yH"; */ -"ENt-mP-0yH.title" = "You can disable smooth transitions for a more direct, immediate control."; - -/* Class = "NSMenuItem"; title = "Minimal"; ObjectID = "Eq3-z9-yIo"; */ -"Eq3-z9-yIo.title" = "Minimal"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "eue-as-VOR"; */ -"eue-as-VOR.title" = "Increase:"; - -/* Class = "NSTextFieldCell"; title = "Scale mapping curve"; ObjectID = "Eui-5S-JR6"; */ -"Eui-5S-JR6.title" = "Scale mapping curve"; - -/* Class = "NSTextFieldCell"; title = "Mute:"; ObjectID = "EvN-FT-vdZ"; */ -"EvN-FT-vdZ.title" = "Mute:"; - -/* Class = "NSTextFieldCell"; title = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; ObjectID = "f6J-Ui-uMB"; */ -"f6J-Ui-uMB.title" = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; - -/* Class = "NSButtonCell"; title = "Reset Name"; ObjectID = "f9g-8s-gdd"; */ -"f9g-8s-gdd.title" = "Reset Name"; - -/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "Faf-9L-TXx"; */ -"Faf-9L-TXx.title" = "Automatically check for updates"; - -/* Class = "NSTextFieldCell"; title = "Brightness control:"; ObjectID = "fe9-Ia-t9m"; */ -"fe9-Ia-t9m.title" = "Brightness control:"; - -/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */ -"FER-Ri-4UO.title" = "Volume:"; - -/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */ -"fmZ-HI-Mdc.title" = "Apple and built-in displays already have a brightness slider in Control Center."; - -/* Class = "NSMenuItem"; title = "None"; ObjectID = "FoA-yh-Yx3"; */ -"FoA-yh-Yx3.title" = "None"; - -/* Class = "NSMenuItem"; title = "Show as icons"; ObjectID = "fR3-kq-cps"; */ -"fR3-kq-cps.title" = "Show as icons"; - -/* Class = "NSMenuItem"; title = "Show as text"; ObjectID = "fWd-Es-zsy"; */ -"fWd-Es-zsy.title" = "Show as text"; - -/* Class = "NSTextFieldCell"; title = "Invert"; ObjectID = "G5A-y3-eZz"; */ -"G5A-y3-eZz.title" = "Invert"; - -/* Class = "NSTextFieldCell"; title = "Brightness slider for hardware or software controlled displays or TVs."; ObjectID = "gXH-HL-ZOL"; */ -"gXH-HL-ZOL.title" = "Brightness slider for hardware or software controlled displays or TVs."; - -/* Class = "NSTextFieldCell"; title = "Override audio device name:"; ObjectID = "H9X-it-sXs"; */ -"H9X-it-sXs.title" = "Override audio device name:"; - -/* Class = "NSTextFieldCell"; title = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; ObjectID = "hF7-fM-aKr"; */ -"hF7-fM-aKr.title" = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; - -/* Class = "NSButtonCell"; title = "Get current"; ObjectID = "hkC-vq-IcD"; */ -"hkC-vq-IcD.title" = "Get current"; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "HLE-Vp-kcS"; */ -"HLE-Vp-kcS.title" = "Record shortcuts:"; - -/* Class = "NSMenuItem"; title = "Hide"; ObjectID = "HUT-Qc-kuu"; */ -"HUT-Qc-kuu.title" = "Hide"; - -/* Class = "NSTextFieldCell"; title = "Additional controls:"; ObjectID = "i5X-M5-Tf5"; */ -"i5X-M5-Tf5.title" = "Additional controls:"; - -/* Class = "NSTextFieldCell"; title = "Brightness"; ObjectID = "IJB-mO-e8I"; */ -"IJB-mO-e8I.title" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable smooth brightness transitions"; ObjectID = "IK4-u5-qjf"; */ -"IK4-u5-qjf.title" = "Enable smooth brightness transitions"; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale for volume"; ObjectID = "J3L-MW-iJL"; */ -"J3L-MW-iJL.title" = "Use fine OSD scale for volume"; - -/* Class = "NSButtonCell"; title = "Start at Login"; ObjectID = "j72-NF-zsW"; */ -"j72-NF-zsW.title" = "Start at Login"; - -/* Class = "NSButtonCell"; title = "Change for all screens"; ObjectID = "JC3-pb-XnR"; */ -"JC3-pb-XnR.title" = "Change for all screens"; - -/* Class = "NSTextFieldCell"; title = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; ObjectID = "Jx2-gO-nq9"; */ -"Jx2-gO-nq9.title" = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; - -/* Class = "NSButtonCell"; title = "Apply last saved values to the display"; ObjectID = "K0S-zN-M4k"; */ -"K0S-zN-M4k.title" = "Apply last saved values to the display"; - -/* Class = "NSButtonCell"; title = "Enable for Apple branded and built-in displays as well"; ObjectID = "K6A-4z-1aQ"; */ -"K6A-4z-1aQ.title" = "Enable for Apple branded and built-in displays as well"; - -/* Class = "NSTextFieldCell"; title = "Don't use software dimming as fallback if no hardware control is available."; ObjectID = "kgh-b4-gmO"; */ -"kgh-b4-gmO.title" = "Don't use software dimming as fallback if no hardware control is available."; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "kqJ-jQ-b7U"; */ -"kqJ-jQ-b7U.title" = "Record shortcuts:"; - -/* Class = "NSTextFieldCell"; title = "Brightness and contrast control:"; ObjectID = "LO4-4k-gxY"; */ -"LO4-4k-gxY.title" = "Brightness and contrast control:"; - -/* Class = "NSTextFieldCell"; title = "Display type:"; ObjectID = "lSJ-6w-KJ2"; */ -"lSJ-6w-KJ2.title" = "Display type:"; - -/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "ltL-gR-K3Z"; */ -"ltL-gR-K3Z.title" = "Screen to control:"; - -/* Class = "NSButtonCell"; title = "Enable slider snapping"; ObjectID = "MlU-hl-d46"; */ -"MlU-hl-d46.title" = "Enable slider snapping"; - -/* Class = "NSMenuItem"; title = "Always show in the menu bar"; ObjectID = "MM0-Lf-VgF"; */ -"MM0-Lf-VgF.title" = "Always show in the menu bar"; - -/* Class = "NSButtonCell"; title = "Use window focus to determine which display to control"; ObjectID = "mMG-Ac-gdB"; */ -"mMG-Ac-gdB.title" = "Use window focus to determine which display to control"; - -/* Class = "NSTextFieldCell"; title = "Contrast:"; ObjectID = "MMk-S2-yJN"; */ -"MMk-S2-yJN.title" = "Contrast:"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "mue-fa-8z6"; */ -"mue-fa-8z6.title" = "Increase:"; - -/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */ -"MWo-6I-s9L.title" = "Show brightness slider in menu"; - -/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */ -"O8o-hI-8eR.title" = "Separate scales for combined hardware & software dimming"; - -/* Class = "NSButtonCell"; title = "Use audio device name to determine which display to control"; ObjectID = "OAa-B4-8r3"; */ -"OAa-B4-8r3.title" = "Use audio device name to determine which display to control"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "OG9-iA-jK1"; */ -"OG9-iA-jK1.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "oHf-Gh-68c"; */ -"oHf-Gh-68c.title" = "Disable keyboard"; - -/* Class = "NSTextFieldCell"; title = "Application:"; ObjectID = "okD-DG-pYa"; */ -"okD-DG-pYa.title" = "Application:"; - -/* Class = "NSMenuItem"; title = "Standard keyboard brightness keys"; ObjectID = "Oke-bW-cb1"; */ -"Oke-bW-cb1.title" = "Standard keyboard brightness keys"; - -/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */ -"Orv-yj-Nad.title" = "count:"; - -/* Class = "NSTextFieldCell"; title = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; ObjectID = "pa0-Hz-ace"; */ -"pa0-Hz-ace.title" = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; - -/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */ -"PaK-1f-DsW.title" = "Control method:"; - -/* Class = "NSButtonCell"; title = "Longer delay during DDC read operations"; ObjectID = "pF5-Sw-7BR"; */ -"pF5-Sw-7BR.title" = "Longer delay during DDC read operations"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only."; ObjectID = "POy-35-bh0"; */ -"POy-35-bh0.title" = "For hardware (DDC) controlled displays only."; - -/* Class = "NSTextFieldCell"; title = "DDC max"; ObjectID = "psF-vX-AFB"; */ -"psF-vX-AFB.title" = "DDC max"; - -/* Class = "NSButtonCell"; title = "Show sliders only for the display currently showing the menu"; ObjectID = "PvP-TV-OmT"; */ -"PvP-TV-OmT.title" = "Show sliders only for the display currently showing the menu"; - -/* Class = "NSTextFieldCell"; title = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; ObjectID = "PyY-p9-3NP"; */ -"PyY-p9-3NP.title" = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "QDG-SA-mRX"; */ -"QDG-SA-mRX.title" = "Both standard and custom shortcuts"; - -/* Class = "NSButtonCell"; title = "Quit appliation"; ObjectID = "qlb-wH-qr4"; */ -"qlb-wH-qr4.title" = "Quit appliation"; - -/* Class = "NSButtonCell"; title = "Show contrast slider in menu"; ObjectID = "qO0-dB-yUs"; */ -"qO0-dB-yUs.title" = "Show contrast slider in menu"; - -/* Class = "NSTextFieldCell"; title = "Volume control (DDC only):"; ObjectID = "qoh-Gn-f11"; */ -"qoh-Gn-f11.title" = "Volume control (DDC only):"; - -/* Class = "NSTextFieldCell"; title = "Show percentage next to slider for more precision."; ObjectID = "qXy-CL-Wf1"; */ -"qXy-CL-Wf1.title" = "Show percentage next to slider for more precision."; - -/* Class = "NSButtonCell"; title = "Combine hardware and software dimming"; ObjectID = "r76-Zc-x09"; */ -"r76-Zc-x09.title" = "Combine hardware and software dimming"; - -/* Class = "NSTextFieldCell"; title = "Advanced:"; ObjectID = "r7i-oG-Ab6"; */ -"r7i-oG-Ab6.title" = "Advanced:"; - -/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "Riq-uM-bTs"; */ -"Riq-uM-bTs.title" = "Normal"; - -/* Class = "NSButton"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "RkH-7d-KvR"; */ -"RkH-7d-KvR.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Show advanced settings"; ObjectID = "sAR-sh-y8e"; */ -"sAR-sh-y8e.title" = "Show advanced settings"; - -/* Class = "NSTextFieldCell"; title = "General menu items style:"; ObjectID = "thh-DG-ecH"; */ -"thh-DG-ecH.title" = "General menu items style:"; - -/* Class = "NSTextFieldCell"; title = "@the0neyouseek\n@JoniVR\n@waydabber"; ObjectID = "TKd-J8-Iyk"; */ -"TKd-J8-Iyk.title" = "@the0neyouseek\n@JoniVR\n@waydabber"; - -/* Class = "NSTextFieldCell"; title = "Menu Icon:"; ObjectID = "u6s-Pb-BCG"; */ -"u6s-Pb-BCG.title" = "Menu Icon:"; - -/* Class = "NSTextFieldCell"; title = "Works if an audio device is selected with no native volume control."; ObjectID = "uF5-a9-Ngz"; */ -"uF5-a9-Ngz.title" = "Works if an audio device is selected with no native volume control."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "uJS-s3-Zpi"; */ -"uJS-s3-Zpi.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable keyboard control for display"; ObjectID = "UqR-WE-jHl"; */ -"UqR-WE-jHl.title" = "Enable keyboard control for display"; - -/* Class = "NSTextFieldCell"; title = "Contrast (DDC)"; ObjectID = "urd-Rh-aiL"; */ -"urd-Rh-aiL.title" = "Contrast (DDC)"; - -/* Class = "NSButtonCell"; title = "Do not use alternative brightness keys"; ObjectID = "vd2-Lk-neX"; */ -"vd2-Lk-neX.title" = "Do not use alternative brightness keys"; - -/* Class = "NSMenuItem"; title = "Heavy"; ObjectID = "vik-vN-bJe"; */ -"vik-vN-bJe.title" = "Heavy"; - -/* Class = "NSTextFieldCell"; title = "Multiple displays:"; ObjectID = "vri-pv-tJ4"; */ -"vri-pv-tJ4.title" = "Multiple displays:"; - -/* Class = "NSTextFieldCell"; title = "DDC read polling mode:"; ObjectID = "vwm-hY-on5"; */ -"vwm-hY-on5.title" = "DDC read polling mode:"; - -/* Class = "NSTextFieldCell"; title = "General options:"; ObjectID = "W58-ch-j69"; */ -"W58-ch-j69.title" = "General options:"; - -/* Class = "NSTextFieldCell"; title = "Useful when a display tends to reset its settings during sleep."; ObjectID = "w8B-x6-sq5"; */ -"w8B-x6-sq5.title" = "Useful when a display tends to reset its settings during sleep."; - -/* Class = "NSTextFieldCell"; title = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; ObjectID = "wjv-tq-iUx"; */ -"wjv-tq-iUx.title" = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; - -/* Class = "NSTextFieldCell"; title = "Display advanced settings and additional information in Preferences."; ObjectID = "X6w-Ee-9Jq"; */ -"X6w-Ee-9Jq.title" = "Display advanced settings and additional information in Preferences."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "xDF-IA-bBh"; */ -"xDF-IA-bBh.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Update settings from the display. May not work with some hardware."; ObjectID = "xjq-hs-wWB"; */ -"xjq-hs-wWB.title" = "Update settings from the display. May not work with some hardware."; - -/* Class = "NSMenuItem"; title = "Only if at least one slider is present"; ObjectID = "xLa-PN-rsq"; */ -"xLa-PN-rsq.title" = "Only if at least one slider is present"; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "xQJ-aJ-VhH"; */ -"xQJ-aJ-VhH.title" = "Both standard and custom shortcuts"; - -/* Class = "NSTextFieldCell"; title = "Works best with various syncing and 'control all' keyboard settings enabled."; ObjectID = "XU4-Bn-bwH"; */ -"XU4-Bn-bwH.title" = "Works best with various syncing and 'control all' keyboard settings enabled."; - -/* Class = "NSTextFieldCell"; title = "Available"; ObjectID = "yBJ-5d-I7e"; */ -"yBJ-5d-I7e.title" = "Available"; - -/* Class = "NSTextFieldCell"; title = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; ObjectID = "YHZ-VL-QJ3"; */ -"YHZ-VL-QJ3.title" = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; - -/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */ -"yn8-Nd-o89.title" = "Assume last saved settings are valid (recommended)"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "yQh-Ve-WEE"; */ -"yQh-Ve-WEE.title" = "Decrease:"; - -/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "YqZ-LS-YvR"; */ -"YqZ-LS-YvR.title" = "Identifier:"; - -/* Class = "NSButtonCell"; title = "Use hardware DDC control"; ObjectID = "ZdU-gV-V05"; */ -"ZdU-gV-V05.title" = "Use hardware DDC control"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "zHa-xo-XPW"; */ -"zHa-xo-XPW.title" = "Disable keyboard"; - -/* Class = "NSButtonCell"; title = "Donate"; ObjectID = "ZKk-ve-rS4"; */ -"ZKk-ve-rS4.title" = "Donate"; - -/* Class = "NSButtonCell"; title = "Show percentages"; ObjectID = "ZUu-MR-XwA"; */ -"ZUu-MR-XwA.title" = "Show percentages"; - -/* Class = "NSTextFieldCell"; title = "Combined dimming switchover point:"; ObjectID = "zv8-pZ-OPy"; */ -"zv8-pZ-OPy.title" = "Combined dimming switchover point:"; diff --git a/MonitorControl/UI/es-419.lproj/Localizable.strings b/MonitorControl/UI/es-419.lproj/Localizable.strings deleted file mode 100644 index fcb4fca1..00000000 --- a/MonitorControl/UI/es-419.lproj/Localizable.strings +++ /dev/null @@ -1,134 +0,0 @@ -/* Shown in the main prefs window */ -"About" = "Acerca de"; - -/* Shown in the main prefs window */ -"App menu" = "App menu"; - -/* Apple Silicon designation (shown after the version number in Preferences) */ -"Apple Silicon" = "Apple Silicon"; - -/* Shown in the alert dialog */ -"Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure." = "¿Está seguro de que quiere activar un retraso mayor? Hacerlo puede congelar su sistema y requerir un reinicio. El inicio al iniciar la sesión se desactivará como medida de seguridad."; - -/* Shown in the alert dialog */ -"Are you sure you want to reset all preferences?" = "¿Estás seguro de que quieres restablecer todas las preferencias?"; - -/* Shown in menu */ -"Brightness" = "Brillo"; - -/* Build */ -"Build" = "Compilación"; - -/* Shown in the Display Preferences */ -"Built-in Display" = "Pantalla incorporada"; - -/* Shown in menu */ -"Check for updates..." = "Check for updates..."; - -/* Shown in menu */ -"Contrast" = "Contraste"; - -/* Version */ -"Copyright Ⓒ MonitorControl, " = "Copyright Ⓒ MonitorControl, "; - -/* Shown in the main prefs window */ -"Displays" = "Pantallas"; - -/* Shown in the alert dialog */ -"Enable Longer Delay?" = "¿Permitir un mayor atenuación?"; - -/* Shown in the Display Preferences */ -"External Display" = "Pantallas externas"; - -/* Shown in the main prefs window */ -"General" = "General"; - -/* Shown in the Display Preferences */ -"Hardware (Apple)" = "Hardware (Apple)"; - -/* Shown in the Display Preferences */ -"Hardware (DDC)" = "Hardware (DDC)"; - -/* Shown in the alert dialog */ -"Incompatible previous version" = "Incompatible previous version"; - -/* Intel designation (shown after the version number in Preferences) */ -"Intel" = "Intel"; - -/* Shown in the main prefs window */ -"Keyboard" = "Keyboard"; - -/* Shown in the alert dialog */ -"No" = "No"; - -/* Shown in the Display Preferences */ -"No Control" = "No Control"; - -/* Shown in the Display Preferences */ -"Other Display" = "Otras pantallas"; - -/* Shown in the alert dialog */ -"Preferences for an incompatible previous app version detected. Default preferences are reloaded." = "Preferences for an incompatible previous app version detected. Default preferences are reloaded."; - -/* Shown in menu */ -"Preferences..." = "Preferences..."; - -/* Shown in menu */ -"Quit" = "Quit"; - -/* Shown in the alert dialog */ -"Reset Preferences?" = "¿Restablecer las preferencias?"; - -/* Shown in the alert dialog */ -"Safe Mode Activated" = "Safe Mode Activated"; - -/* Shown in the alert dialog */ -"Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked." = "Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked."; - -/* Shown in the alert dialog */ -"Shortcuts not available" = "Atajos no disponibles"; - -/* Shown in the Display Preferences */ -"Software (Gamma)" = "Software (Gamma)"; - -/* Shown in the Display Preferences */ -"Software (Gamma, Forced)" = "Software (Gamma, Forced)"; - -/* Shown in the Display Preferences */ -"Software (Shade)" = "Software (Shade)"; - -/* Shown in the Display Preferences */ -"This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display." = "This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display."; - -/* Shown in the Display Preferences */ -"This display has an unspecified control status." = "This display has an unspecified control status."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control but the current settings allow for software control only." = "This display is reported to support hardware DDC control but the current settings allow for software control only."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control." = "This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control."; - -/* Shown in the Display Preferences */ -"This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well." = "This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well."; - -/* Shown in the Display Preferences */ -"This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode." = "This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode."; - -/* Unknown display name */ -"Unknown" = "Desconocido"; - -/* Version */ -"Version" = "Versión"; - -/* Shown in the Display Preferences */ -"Virtual Display" = "Pantalla virtual"; - -/* Shown in menu */ -"Volume" = "Volumen"; - -/* Shown in the alert dialog */ -"Yes" = "Sí"; - -/* Shown in the alert dialog */ -"You need to enable MonitorControl in System Preferences > Security and Privacy > Accessibility for the keyboard shortcuts to work" = "Es necesario activar MonitorControl en Preferencias del Sistema > Seguridad y Privacidad > Accesibilidad para que los atajos de teclado funcionen"; diff --git a/MonitorControl/UI/es-419.lproj/Main.strings b/MonitorControl/UI/es-419.lproj/Main.strings deleted file mode 100644 index 1bf2f5dc..00000000 --- a/MonitorControl/UI/es-419.lproj/Main.strings +++ /dev/null @@ -1,401 +0,0 @@ -/* Class = "NSButtonCell"; title = "Sync brightness changes from Built-in and Apple displays"; ObjectID = "0ca-DG-AgB"; */ -"0ca-DG-AgB.title" = "Sync brightness changes from Built-in and Apple displays"; - -/* Class = "NSButtonCell"; title = "Attempt to read display settings"; ObjectID = "0qp-fq-8MI"; */ -"0qp-fq-8MI.title" = "Attempt to read display settings"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl"; ObjectID = "1PJ-14-Bvn"; */ -"1PJ-14-Bvn.title" = "MonitorControl"; - -/* Class = "NSMenuItem"; title = "Standard keyboard volume and mute keys"; ObjectID = "1sy-Kd-WL5"; */ -"1sy-Kd-WL5.title" = "Standard keyboard volume and mute keys"; - -/* Class = "NSButtonCell"; title = "Change volume for all screens"; ObjectID = "1XT-3S-UuD"; */ -"1XT-3S-UuD.title" = "Change volume for all screens"; - -/* Class = "NSTextFieldCell"; title = "DDC min"; ObjectID = "1zE-fg-xEm"; */ -"1zE-fg-xEm.title" = "DDC min"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "4CG-0I-anB"; */ -"4CG-0I-anB.title" = "Custom keyboard shortcuts"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; ObjectID = "4dX-o1-xAc"; */ -"4dX-o1-xAc.title" = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; - -/* Class = "NSButtonCell"; title = "Show separate controls for each display in menu"; ObjectID = "4t2-Rv-njr"; */ -"4t2-Rv-njr.title" = "Show separate controls for each display in menu"; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "567-le-fLg"; */ -"567-le-fLg.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Reset Preferences"; ObjectID = "5yT-5F-X5R"; */ -"5yT-5F-X5R.title" = "Reset Preferences"; - -/* Class = "NSMenuItem"; title = "Always hide"; ObjectID = "6mo-7S-oOO"; */ -"6mo-7S-oOO.title" = "Always hide"; - -/* Class = "NSTextFieldCell"; title = "Slider behavior:"; ObjectID = "75n-7M-1mS"; */ -"75n-7M-1mS.title" = "Slider behavior:"; - -/* Class = "NSButtonCell"; title = "Use combined slider for all displays"; ObjectID = "7rn-Lu-fcl"; */ -"7rn-Lu-fcl.title" = "Use combined slider for all displays"; - -/* Class = "NSButtonCell"; title = "Show slider tick marks"; ObjectID = "7zf-m1-gJO"; */ -"7zf-m1-gJO.title" = "Show slider tick marks"; - -/* Class = "NSTextFieldCell"; title = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; ObjectID = "8Gx-Ya-zhp"; */ -"8Gx-Ya-zhp.title" = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale"; ObjectID = "8Q8-57-xnT"; */ -"8Q8-57-xnT.title" = "Use fine OSD scale"; - -/* Class = "NSButtonCell"; title = "Special thanks to our contributors!"; ObjectID = "95V-M4-2l5"; */ -"95V-M4-2l5.title" = "Agradecimientos especiales para colaboradores!"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "9eC-PD-FHl"; */ -"9eC-PD-FHl.title" = "Custom keyboard shortcuts"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "9H1-0z-xsx"; */ -"9H1-0z-xsx.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; ObjectID = "A8P-vn-DEJ"; */ -"A8P-vn-DEJ.title" = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; - -/* Class = "NSButtonCell"; title = "Disable software dimming as fallback"; ObjectID = "afB-Xx-Lta"; */ -"afB-Xx-Lta.title" = "Disable software dimming as fallback"; - -/* Class = "NSTextFieldCell"; title = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; ObjectID = "an7-Aj-3fZ"; */ -"an7-Aj-3fZ.title" = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; - -/* Class = "NSTextFieldCell"; title = "Brightness:"; ObjectID = "Bhb-6l-uPQ"; */ -"Bhb-6l-uPQ.title" = "Brightness:"; - -/* Class = "NSTextFieldCell"; title = "(Gamma->DDC)"; ObjectID = "Bid-UL-blc"; */ -"Bid-UL-blc.title" = "(Gamma->DDC)"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only. Results may vary."; ObjectID = "bIe-6O-xEH"; */ -"bIe-6O-xEH.title" = "For hardware (DDC) controlled displays only. Results may vary."; - -/* Class = "NSButtonCell"; title = "Disable macOS volume OSD"; ObjectID = "bkM-Px-U3b"; */ -"bkM-Px-U3b.title" = "Desactivar el OSD de volumen de macOS"; - -/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "bP4-GJ-vhJ"; */ -"bP4-GJ-vhJ.title" = "OSD scale:"; - -/* Class = "NSButtonCell"; title = "Reset settings"; ObjectID = "BYS-7Y-bRz"; */ -"BYS-7Y-bRz.title" = "Reiniciar configuraciones"; - -/* Class = "NSButtonCell"; title = "Enable Mute DDC command"; ObjectID = "bZq-0d-lJa"; */ -"bZq-0d-lJa.title" = "Activar el comando DDC de silenciamiento"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "Bzq-Co-fex"; */ -"Bzq-Co-fex.title" = "Decrease:"; - -/* Class = "NSButtonCell"; title = "Show volume slider in menu"; ObjectID = "c9D-MB-lma"; */ -"c9D-MB-lma.title" = "Show volume slider in menu"; - -/* Class = "NSMenuItem"; title = "Custom"; ObjectID = "Cle-DD-vR7"; */ -"Cle-DD-vR7.title" = "Custom"; - -/* Class = "NSButtonCell"; title = "Website"; ObjectID = "Cln-uW-2dd"; */ -"Cln-uW-2dd.title" = "Sitio web"; - -/* Class = "NSTextFieldCell"; title = "Upon startup or wake:"; ObjectID = "cNt-Cq-vK4"; */ -"cNt-Cq-vK4.title" = "Upon startup or wake:"; - -/* Class = "NSTextFieldCell"; title = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; ObjectID = "Cz1-Mh-llk"; */ -"Cz1-Mh-llk.title" = "⚠️ Advertencia! La modificación de algunos de estos ajustes puede provocar un comportamiento inesperado."; - -/* Class = "NSTextFieldCell"; title = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; ObjectID = "D4H-hU-FLn"; */ -"D4H-hU-FLn.title" = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; - -/* Class = "NSTextFieldCell"; title = "VCP list"; ObjectID = "D9t-vT-gNJ"; */ -"D9t-vT-gNJ.title" = "VCP list"; - -/* Class = "NSTextFieldCell"; title = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; ObjectID = "Dha-Tm-cDM"; */ -"Dha-Tm-cDM.title" = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; - -/* Class = "NSTextFieldCell"; title = "You can disable smooth transitions for a more direct, immediate control."; ObjectID = "ENt-mP-0yH"; */ -"ENt-mP-0yH.title" = "You can disable smooth transitions for a more direct, immediate control."; - -/* Class = "NSMenuItem"; title = "Minimal"; ObjectID = "Eq3-z9-yIo"; */ -"Eq3-z9-yIo.title" = "Minimal"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "eue-as-VOR"; */ -"eue-as-VOR.title" = "Increase:"; - -/* Class = "NSTextFieldCell"; title = "Scale mapping curve"; ObjectID = "Eui-5S-JR6"; */ -"Eui-5S-JR6.title" = "Scale mapping curve"; - -/* Class = "NSTextFieldCell"; title = "Mute:"; ObjectID = "EvN-FT-vdZ"; */ -"EvN-FT-vdZ.title" = "Mute:"; - -/* Class = "NSTextFieldCell"; title = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; ObjectID = "f6J-Ui-uMB"; */ -"f6J-Ui-uMB.title" = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; - -/* Class = "NSButtonCell"; title = "Reset Name"; ObjectID = "f9g-8s-gdd"; */ -"f9g-8s-gdd.title" = "Reset Name"; - -/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "Faf-9L-TXx"; */ -"Faf-9L-TXx.title" = "Automatically check for updates"; - -/* Class = "NSTextFieldCell"; title = "Brightness control:"; ObjectID = "fe9-Ia-t9m"; */ -"fe9-Ia-t9m.title" = "Brightness control:"; - -/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */ -"FER-Ri-4UO.title" = "Volume:"; - -/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */ -"fmZ-HI-Mdc.title" = "Apple and built-in displays already have a brightness slider in Control Center."; - -/* Class = "NSMenuItem"; title = "None"; ObjectID = "FoA-yh-Yx3"; */ -"FoA-yh-Yx3.title" = "Ninguno"; - -/* Class = "NSMenuItem"; title = "Show as icons"; ObjectID = "fR3-kq-cps"; */ -"fR3-kq-cps.title" = "Show as icons"; - -/* Class = "NSMenuItem"; title = "Show as text"; ObjectID = "fWd-Es-zsy"; */ -"fWd-Es-zsy.title" = "Show as text"; - -/* Class = "NSTextFieldCell"; title = "Invert"; ObjectID = "G5A-y3-eZz"; */ -"G5A-y3-eZz.title" = "Invert"; - -/* Class = "NSTextFieldCell"; title = "Brightness slider for hardware or software controlled displays or TVs."; ObjectID = "gXH-HL-ZOL"; */ -"gXH-HL-ZOL.title" = "Brightness slider for hardware or software controlled displays or TVs."; - -/* Class = "NSTextFieldCell"; title = "Override audio device name:"; ObjectID = "H9X-it-sXs"; */ -"H9X-it-sXs.title" = "Override audio device name:"; - -/* Class = "NSTextFieldCell"; title = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; ObjectID = "hF7-fM-aKr"; */ -"hF7-fM-aKr.title" = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; - -/* Class = "NSButtonCell"; title = "Get current"; ObjectID = "hkC-vq-IcD"; */ -"hkC-vq-IcD.title" = "Get current"; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "HLE-Vp-kcS"; */ -"HLE-Vp-kcS.title" = "Record shortcuts:"; - -/* Class = "NSMenuItem"; title = "Hide"; ObjectID = "HUT-Qc-kuu"; */ -"HUT-Qc-kuu.title" = "Hide"; - -/* Class = "NSTextFieldCell"; title = "Additional controls:"; ObjectID = "i5X-M5-Tf5"; */ -"i5X-M5-Tf5.title" = "Additional controls:"; - -/* Class = "NSTextFieldCell"; title = "Brightness"; ObjectID = "IJB-mO-e8I"; */ -"IJB-mO-e8I.title" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable smooth brightness transitions"; ObjectID = "IK4-u5-qjf"; */ -"IK4-u5-qjf.title" = "Enable smooth brightness transitions"; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale for volume"; ObjectID = "J3L-MW-iJL"; */ -"J3L-MW-iJL.title" = "Use fine OSD scale for volume"; - -/* Class = "NSButtonCell"; title = "Start at Login"; ObjectID = "j72-NF-zsW"; */ -"j72-NF-zsW.title" = "Iniciar app en inicio"; - -/* Class = "NSButtonCell"; title = "Change for all screens"; ObjectID = "JC3-pb-XnR"; */ -"JC3-pb-XnR.title" = "Change for all screens"; - -/* Class = "NSTextFieldCell"; title = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; ObjectID = "Jx2-gO-nq9"; */ -"Jx2-gO-nq9.title" = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; - -/* Class = "NSButtonCell"; title = "Apply last saved values to the display"; ObjectID = "K0S-zN-M4k"; */ -"K0S-zN-M4k.title" = "Apply last saved values to the display"; - -/* Class = "NSButtonCell"; title = "Enable for Apple branded and built-in displays as well"; ObjectID = "K6A-4z-1aQ"; */ -"K6A-4z-1aQ.title" = "Enable for Apple branded and built-in displays as well"; - -/* Class = "NSTextFieldCell"; title = "Don't use software dimming as fallback if no hardware control is available."; ObjectID = "kgh-b4-gmO"; */ -"kgh-b4-gmO.title" = "Don't use software dimming as fallback if no hardware control is available."; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "kqJ-jQ-b7U"; */ -"kqJ-jQ-b7U.title" = "Record shortcuts:"; - -/* Class = "NSTextFieldCell"; title = "Brightness and contrast control:"; ObjectID = "LO4-4k-gxY"; */ -"LO4-4k-gxY.title" = "Brightness and contrast control:"; - -/* Class = "NSTextFieldCell"; title = "Display type:"; ObjectID = "lSJ-6w-KJ2"; */ -"lSJ-6w-KJ2.title" = "Tipo de pantalla:"; - -/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "ltL-gR-K3Z"; */ -"ltL-gR-K3Z.title" = "Screen to control:"; - -/* Class = "NSButtonCell"; title = "Enable slider snapping"; ObjectID = "MlU-hl-d46"; */ -"MlU-hl-d46.title" = "Enable slider snapping"; - -/* Class = "NSMenuItem"; title = "Always show in the menu bar"; ObjectID = "MM0-Lf-VgF"; */ -"MM0-Lf-VgF.title" = "Always show in the menu bar"; - -/* Class = "NSButtonCell"; title = "Use window focus to determine which display to control"; ObjectID = "mMG-Ac-gdB"; */ -"mMG-Ac-gdB.title" = "Use window focus to determine which display to control"; - -/* Class = "NSTextFieldCell"; title = "Contrast:"; ObjectID = "MMk-S2-yJN"; */ -"MMk-S2-yJN.title" = "Contrast:"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "mue-fa-8z6"; */ -"mue-fa-8z6.title" = "Increase:"; - -/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */ -"MWo-6I-s9L.title" = "Show brightness slider in menu"; - -/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */ -"O8o-hI-8eR.title" = "Separate scales for combined hardware & software dimming"; - -/* Class = "NSButtonCell"; title = "Use audio device name to determine which display to control"; ObjectID = "OAa-B4-8r3"; */ -"OAa-B4-8r3.title" = "Use audio device name to determine which display to control"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "OG9-iA-jK1"; */ -"OG9-iA-jK1.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "oHf-Gh-68c"; */ -"oHf-Gh-68c.title" = "Disable keyboard"; - -/* Class = "NSTextFieldCell"; title = "Application:"; ObjectID = "okD-DG-pYa"; */ -"okD-DG-pYa.title" = "Aplicación:"; - -/* Class = "NSMenuItem"; title = "Standard keyboard brightness keys"; ObjectID = "Oke-bW-cb1"; */ -"Oke-bW-cb1.title" = "Standard keyboard brightness keys"; - -/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */ -"Orv-yj-Nad.title" = "count:"; - -/* Class = "NSTextFieldCell"; title = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; ObjectID = "pa0-Hz-ace"; */ -"pa0-Hz-ace.title" = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; - -/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */ -"PaK-1f-DsW.title" = "Método de control:"; - -/* Class = "NSButtonCell"; title = "Longer delay during DDC read operations"; ObjectID = "pF5-Sw-7BR"; */ -"pF5-Sw-7BR.title" = "Mayor retardo en las operaciones de lectura del DDC"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only."; ObjectID = "POy-35-bh0"; */ -"POy-35-bh0.title" = "For hardware (DDC) controlled displays only."; - -/* Class = "NSTextFieldCell"; title = "DDC max"; ObjectID = "psF-vX-AFB"; */ -"psF-vX-AFB.title" = "DDC max"; - -/* Class = "NSButtonCell"; title = "Show sliders only for the display currently showing the menu"; ObjectID = "PvP-TV-OmT"; */ -"PvP-TV-OmT.title" = "Show sliders only for the display currently showing the menu"; - -/* Class = "NSTextFieldCell"; title = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; ObjectID = "PyY-p9-3NP"; */ -"PyY-p9-3NP.title" = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "QDG-SA-mRX"; */ -"QDG-SA-mRX.title" = "Both standard and custom shortcuts"; - -/* Class = "NSButtonCell"; title = "Quit appliation"; ObjectID = "qlb-wH-qr4"; */ -"qlb-wH-qr4.title" = "Quit appliation"; - -/* Class = "NSButtonCell"; title = "Show contrast slider in menu"; ObjectID = "qO0-dB-yUs"; */ -"qO0-dB-yUs.title" = "Show contrast slider in menu"; - -/* Class = "NSTextFieldCell"; title = "Volume control (DDC only):"; ObjectID = "qoh-Gn-f11"; */ -"qoh-Gn-f11.title" = "Volume control (DDC only):"; - -/* Class = "NSTextFieldCell"; title = "Show percentage next to slider for more precision."; ObjectID = "qXy-CL-Wf1"; */ -"qXy-CL-Wf1.title" = "Show percentage next to slider for more precision."; - -/* Class = "NSButtonCell"; title = "Combine hardware and software dimming"; ObjectID = "r76-Zc-x09"; */ -"r76-Zc-x09.title" = "Combine hardware and software dimming"; - -/* Class = "NSTextFieldCell"; title = "Advanced:"; ObjectID = "r7i-oG-Ab6"; */ -"r7i-oG-Ab6.title" = "Avanzado:"; - -/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "Riq-uM-bTs"; */ -"Riq-uM-bTs.title" = "Normal"; - -/* Class = "NSButton"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "RkH-7d-KvR"; */ -"RkH-7d-KvR.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Show advanced settings"; ObjectID = "sAR-sh-y8e"; */ -"sAR-sh-y8e.title" = "Show advanced settings"; - -/* Class = "NSTextFieldCell"; title = "General menu items style:"; ObjectID = "thh-DG-ecH"; */ -"thh-DG-ecH.title" = "General menu items style:"; - -/* Class = "NSTextFieldCell"; title = "@the0neyouseek\n@JoniVR\n@waydabber"; ObjectID = "TKd-J8-Iyk"; */ -"TKd-J8-Iyk.title" = "@the0neyouseek\n@JoniVR\n@waydabber"; - -/* Class = "NSTextFieldCell"; title = "Menu Icon:"; ObjectID = "u6s-Pb-BCG"; */ -"u6s-Pb-BCG.title" = "Menu Icon:"; - -/* Class = "NSTextFieldCell"; title = "Works if an audio device is selected with no native volume control."; ObjectID = "uF5-a9-Ngz"; */ -"uF5-a9-Ngz.title" = "Works if an audio device is selected with no native volume control."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "uJS-s3-Zpi"; */ -"uJS-s3-Zpi.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable keyboard control for display"; ObjectID = "UqR-WE-jHl"; */ -"UqR-WE-jHl.title" = "Habilitar el control de pantalla en teclado"; - -/* Class = "NSTextFieldCell"; title = "Contrast (DDC)"; ObjectID = "urd-Rh-aiL"; */ -"urd-Rh-aiL.title" = "Contrast"; - -/* Class = "NSButtonCell"; title = "Do not use alternative brightness keys"; ObjectID = "vd2-Lk-neX"; */ -"vd2-Lk-neX.title" = "Do not use alternative brightness keys"; - -/* Class = "NSMenuItem"; title = "Heavy"; ObjectID = "vik-vN-bJe"; */ -"vik-vN-bJe.title" = "Heavy"; - -/* Class = "NSTextFieldCell"; title = "Multiple displays:"; ObjectID = "vri-pv-tJ4"; */ -"vri-pv-tJ4.title" = "Multiple displays:"; - -/* Class = "NSTextFieldCell"; title = "DDC read polling mode:"; ObjectID = "vwm-hY-on5"; */ -"vwm-hY-on5.title" = "Modo de lectura DDC:"; - -/* Class = "NSTextFieldCell"; title = "General options:"; ObjectID = "W58-ch-j69"; */ -"W58-ch-j69.title" = "General options:"; - -/* Class = "NSTextFieldCell"; title = "Useful when a display tends to reset its settings during sleep."; ObjectID = "w8B-x6-sq5"; */ -"w8B-x6-sq5.title" = "Useful when a display tends to reset its settings during sleep."; - -/* Class = "NSTextFieldCell"; title = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; ObjectID = "wjv-tq-iUx"; */ -"wjv-tq-iUx.title" = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; - -/* Class = "NSTextFieldCell"; title = "Display advanced settings and additional information in Preferences."; ObjectID = "X6w-Ee-9Jq"; */ -"X6w-Ee-9Jq.title" = "Display advanced settings and additional information in Preferences."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "xDF-IA-bBh"; */ -"xDF-IA-bBh.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Update settings from the display. May not work with some hardware."; ObjectID = "xjq-hs-wWB"; */ -"xjq-hs-wWB.title" = "Update settings from the display. May not work with some hardware."; - -/* Class = "NSMenuItem"; title = "Only if at least one slider is present"; ObjectID = "xLa-PN-rsq"; */ -"xLa-PN-rsq.title" = "Only if at least one slider is present"; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "xQJ-aJ-VhH"; */ -"xQJ-aJ-VhH.title" = "Both standard and custom shortcuts"; - -/* Class = "NSTextFieldCell"; title = "Works best with various syncing and 'control all' keyboard settings enabled."; ObjectID = "XU4-Bn-bwH"; */ -"XU4-Bn-bwH.title" = "Works best with various syncing and 'control all' keyboard settings enabled."; - -/* Class = "NSTextFieldCell"; title = "Available"; ObjectID = "yBJ-5d-I7e"; */ -"yBJ-5d-I7e.title" = "Available"; - -/* Class = "NSTextFieldCell"; title = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; ObjectID = "YHZ-VL-QJ3"; */ -"YHZ-VL-QJ3.title" = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; - -/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */ -"yn8-Nd-o89.title" = "Assume last saved settings are valid (recommended)"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "yQh-Ve-WEE"; */ -"yQh-Ve-WEE.title" = "Decrease:"; - -/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "YqZ-LS-YvR"; */ -"YqZ-LS-YvR.title" = "Identificador:"; - -/* Class = "NSButtonCell"; title = "Use hardware DDC control"; ObjectID = "ZdU-gV-V05"; */ -"ZdU-gV-V05.title" = "Utilizar el control DDC por hardware"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "zHa-xo-XPW"; */ -"zHa-xo-XPW.title" = "Disable keyboard"; - -/* Class = "NSButtonCell"; title = "Donate"; ObjectID = "ZKk-ve-rS4"; */ -"ZKk-ve-rS4.title" = "Donar"; - -/* Class = "NSButtonCell"; title = "Show percentages"; ObjectID = "ZUu-MR-XwA"; */ -"ZUu-MR-XwA.title" = "Show percentages"; - -/* Class = "NSTextFieldCell"; title = "Combined dimming switchover point:"; ObjectID = "zv8-pZ-OPy"; */ -"zv8-pZ-OPy.title" = "Combined dimming switchover point:"; diff --git a/MonitorControl/UI/fr.lproj/Localizable.strings b/MonitorControl/UI/fr.lproj/Localizable.strings deleted file mode 100644 index db6fdc62..00000000 --- a/MonitorControl/UI/fr.lproj/Localizable.strings +++ /dev/null @@ -1,136 +0,0 @@ -/* Shown in the main prefs window */ -"About" = "À Propos"; - -/* Shown in the main prefs window */ -"App menu" = "App menu"; - -/* Apple Silicon designation (shown after the version number in Preferences) */ -"Apple Silicon" = "Apple Silicon"; - -/* Shown in the alert dialog */ -"Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure." = "Êtes-vous sûr de vouloir augmenter cette durée? Cela peut entrainer un gêle du système et nécessiter un redémarrage. Par sécurité, cette option sera désactivée au démarrage."; - -/* Shown in the alert dialog */ -"Are you sure you want to reset all preferences?" = "Êtes-vous sûr de vouloir réinitialiser toutes les préférences?"; - -/* Sown in menu */ -"Brightness" = "Luminosité"; - -/* Build */ -"Build" = "Build"; - -/* Shown in the Display Preferences */ -"Built-in Display" = "Écran intégré"; - -/* Shown in menu */ -"Check for updates..." = "Check for updates..."; - -/* Shown in menu */ -"Contrast" = "Contraste"; - -/* Version */ -"Copyright Ⓒ MonitorControl, " = "Copyright Ⓒ MonitorControl, "; - -/* Shown in the main prefs window */ -"Displays" = "Écrans"; - -/* Shown in the alert dialog */ -"Enable Longer Delay?" = "Activer une plus longue durée ?"; - -/* Shown in the Display Preferences */ -"External Display" = "Écran externe"; - -/* Shown in the main prefs window */ -"General" = "Général"; - -/* Shown in the Display Preferences */ -"Hardware (Apple)" = "Hardware (Apple)"; - -/* Shown in the Display Preferences */ -"Hardware (DDC)" = "Matériel (DDC)"; - -/* Shown in the alert dialog */ -"Incompatible previous version" = "Incompatible previous version"; - -/* Intel designation (shown after the version number in Preferences) */ -"Intel" = "Intel"; - -/* Shown in the main prefs window */ -"Keyboard" = "Keyboard"; - -/* Shown in the alert dialog */ -"No" = "Non"; - -/* Shown in the Display Preferences */ -"No Control" = "No Control"; - -/* Shown in the Display Preferences */ -"Other Display" = "Autre écran"; - -/* Shown in the alert dialog */ -"Preferences for an incompatible previous app version detected. Default preferences are reloaded." = "Preferences for an incompatible previous app version detected. Default preferences are reloaded."; - -/* Shown in menu */ -"Preferences..." = "Preferences..."; - -/* Shown in menu */ -"Quit" = "Quit"; - -/* Shown in the alert dialog */ -"Reset Preferences?" = "Réinitialiser les préférences ?"; - -/* Shown in the alert dialog */ -"Safe Mode Activated" = "Mode sans échec activé"; - -/* Shown in the alert dialog */ -"Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked." = "Maj. appuyée pendant le démarrage. MonitorControl démarré en mode sans échec. Les préférences par défaut sont utilisées, la communication via DDC est bloquée."; - -/* Shown in the alert dialog */ -"Shortcuts not available" = "Raccourcis non disponible"; - -/* Shown in the Display Preferences */ -"Software (Gamma)" = "Software (Gamma)"; - -/* Shown in the Display Preferences */ -"Software (Gamma, Forced)" = "Software (Gamma, Forced)"; - -/* Shown in the Display Preferences */ -"Software (Shade)" = "Software (Shade)"; - -/* Shown in the Display Preferences */ -"This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display." = "This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display."; - -/* Shown in the Display Preferences */ -"This display has an unspecified control status." = "This display has an unspecified control status."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control but the current settings allow for software control only." = "This display is reported to support hardware DDC control but the current settings allow for software control only."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control." = "This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control."; - -/* Shown in the Display Preferences */ -"This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well." = "This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well."; - -/* Shown in the Display Preferences */ -"This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode." = "This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode."; - -/* Unknown display name - Unknown model - Unknown vendor */ -"Unknown" = "Inconnu"; - -/* Version */ -"Version" = "Version"; - -/* Shown in the Display Preferences */ -"Virtual Display" = "Écran virtuel"; - -/* Shown in menu */ -"Volume" = "Volume"; - -/* Shown in the alert dialog */ -"Yes" = "Oui"; - -/* Shown in the alert dialog */ -"You need to enable MonitorControl in System Preferences > Security and Privacy > Accessibility for the keyboard shortcuts to work" = "Vous devez activer MonitorControl dans Préférences Système > Sécurité et confidentialité > Accessibilité pour que les raccourcis clavier fonctionnent"; diff --git a/MonitorControl/UI/fr.lproj/Main.strings b/MonitorControl/UI/fr.lproj/Main.strings deleted file mode 100644 index f53237aa..00000000 --- a/MonitorControl/UI/fr.lproj/Main.strings +++ /dev/null @@ -1,401 +0,0 @@ -/* Class = "NSButtonCell"; title = "Sync brightness changes from Built-in and Apple displays"; ObjectID = "0ca-DG-AgB"; */ -"0ca-DG-AgB.title" = "Sync brightness changes from Built-in and Apple displays"; - -/* Class = "NSButtonCell"; title = "Attempt to read display settings"; ObjectID = "0qp-fq-8MI"; */ -"0qp-fq-8MI.title" = "Attempt to read display settings"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl"; ObjectID = "1PJ-14-Bvn"; */ -"1PJ-14-Bvn.title" = "MonitorControl"; - -/* Class = "NSMenuItem"; title = "Standard keyboard volume and mute keys"; ObjectID = "1sy-Kd-WL5"; */ -"1sy-Kd-WL5.title" = "Standard keyboard volume and mute keys"; - -/* Class = "NSButtonCell"; title = "Change volume for all screens"; ObjectID = "1XT-3S-UuD"; */ -"1XT-3S-UuD.title" = "Change volume for all screens"; - -/* Class = "NSTextFieldCell"; title = "DDC min"; ObjectID = "1zE-fg-xEm"; */ -"1zE-fg-xEm.title" = "DDC min"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "4CG-0I-anB"; */ -"4CG-0I-anB.title" = "Custom keyboard shortcuts"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; ObjectID = "4dX-o1-xAc"; */ -"4dX-o1-xAc.title" = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; - -/* Class = "NSButtonCell"; title = "Show separate controls for each display in menu"; ObjectID = "4t2-Rv-njr"; */ -"4t2-Rv-njr.title" = "Show separate controls for each display in menu"; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "567-le-fLg"; */ -"567-le-fLg.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Reset Preferences"; ObjectID = "5yT-5F-X5R"; */ -"5yT-5F-X5R.title" = "Reset Preferences"; - -/* Class = "NSMenuItem"; title = "Always hide"; ObjectID = "6mo-7S-oOO"; */ -"6mo-7S-oOO.title" = "Always hide"; - -/* Class = "NSTextFieldCell"; title = "Slider behavior:"; ObjectID = "75n-7M-1mS"; */ -"75n-7M-1mS.title" = "Slider behavior:"; - -/* Class = "NSButtonCell"; title = "Use combined slider for all displays"; ObjectID = "7rn-Lu-fcl"; */ -"7rn-Lu-fcl.title" = "Use combined slider for all displays"; - -/* Class = "NSButtonCell"; title = "Show slider tick marks"; ObjectID = "7zf-m1-gJO"; */ -"7zf-m1-gJO.title" = "Show slider tick marks"; - -/* Class = "NSTextFieldCell"; title = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; ObjectID = "8Gx-Ya-zhp"; */ -"8Gx-Ya-zhp.title" = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale"; ObjectID = "8Q8-57-xnT"; */ -"8Q8-57-xnT.title" = "Use fine OSD scale"; - -/* Class = "NSButtonCell"; title = "Special thanks to our contributors!"; ObjectID = "95V-M4-2l5"; */ -"95V-M4-2l5.title" = "Special thanks to our contributors!"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "9eC-PD-FHl"; */ -"9eC-PD-FHl.title" = "Custom keyboard shortcuts"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "9H1-0z-xsx"; */ -"9H1-0z-xsx.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; ObjectID = "A8P-vn-DEJ"; */ -"A8P-vn-DEJ.title" = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; - -/* Class = "NSButtonCell"; title = "Disable software dimming as fallback"; ObjectID = "afB-Xx-Lta"; */ -"afB-Xx-Lta.title" = "Disable software dimming as fallback"; - -/* Class = "NSTextFieldCell"; title = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; ObjectID = "an7-Aj-3fZ"; */ -"an7-Aj-3fZ.title" = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; - -/* Class = "NSTextFieldCell"; title = "Brightness:"; ObjectID = "Bhb-6l-uPQ"; */ -"Bhb-6l-uPQ.title" = "Brightness:"; - -/* Class = "NSTextFieldCell"; title = "(Gamma->DDC)"; ObjectID = "Bid-UL-blc"; */ -"Bid-UL-blc.title" = "(Gamma->DDC)"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only. Results may vary."; ObjectID = "bIe-6O-xEH"; */ -"bIe-6O-xEH.title" = "For hardware (DDC) controlled displays only. Results may vary."; - -/* Class = "NSButtonCell"; title = "Disable macOS volume OSD"; ObjectID = "bkM-Px-U3b"; */ -"bkM-Px-U3b.title" = "Disable macOS volume OSD"; - -/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "bP4-GJ-vhJ"; */ -"bP4-GJ-vhJ.title" = "OSD scale:"; - -/* Class = "NSButtonCell"; title = "Reset settings"; ObjectID = "BYS-7Y-bRz"; */ -"BYS-7Y-bRz.title" = "Reset settings"; - -/* Class = "NSButtonCell"; title = "Enable Mute DDC command"; ObjectID = "bZq-0d-lJa"; */ -"bZq-0d-lJa.title" = "Enable Mute DDC command"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "Bzq-Co-fex"; */ -"Bzq-Co-fex.title" = "Decrease:"; - -/* Class = "NSButtonCell"; title = "Show volume slider in menu"; ObjectID = "c9D-MB-lma"; */ -"c9D-MB-lma.title" = "Show volume slider in menu"; - -/* Class = "NSMenuItem"; title = "Custom"; ObjectID = "Cle-DD-vR7"; */ -"Cle-DD-vR7.title" = "Custom"; - -/* Class = "NSButtonCell"; title = "Website"; ObjectID = "Cln-uW-2dd"; */ -"Cln-uW-2dd.title" = "Website"; - -/* Class = "NSTextFieldCell"; title = "Upon startup or wake:"; ObjectID = "cNt-Cq-vK4"; */ -"cNt-Cq-vK4.title" = "Upon startup or wake:"; - -/* Class = "NSTextFieldCell"; title = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; ObjectID = "Cz1-Mh-llk"; */ -"Cz1-Mh-llk.title" = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; - -/* Class = "NSTextFieldCell"; title = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; ObjectID = "D4H-hU-FLn"; */ -"D4H-hU-FLn.title" = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; - -/* Class = "NSTextFieldCell"; title = "VCP list"; ObjectID = "D9t-vT-gNJ"; */ -"D9t-vT-gNJ.title" = "VCP list"; - -/* Class = "NSTextFieldCell"; title = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; ObjectID = "Dha-Tm-cDM"; */ -"Dha-Tm-cDM.title" = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; - -/* Class = "NSTextFieldCell"; title = "You can disable smooth transitions for a more direct, immediate control."; ObjectID = "ENt-mP-0yH"; */ -"ENt-mP-0yH.title" = "You can disable smooth transitions for a more direct, immediate control."; - -/* Class = "NSMenuItem"; title = "Minimal"; ObjectID = "Eq3-z9-yIo"; */ -"Eq3-z9-yIo.title" = "Minimal"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "eue-as-VOR"; */ -"eue-as-VOR.title" = "Increase:"; - -/* Class = "NSTextFieldCell"; title = "Scale mapping curve"; ObjectID = "Eui-5S-JR6"; */ -"Eui-5S-JR6.title" = "Scale mapping curve"; - -/* Class = "NSTextFieldCell"; title = "Mute:"; ObjectID = "EvN-FT-vdZ"; */ -"EvN-FT-vdZ.title" = "Mute:"; - -/* Class = "NSTextFieldCell"; title = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; ObjectID = "f6J-Ui-uMB"; */ -"f6J-Ui-uMB.title" = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; - -/* Class = "NSButtonCell"; title = "Reset Name"; ObjectID = "f9g-8s-gdd"; */ -"f9g-8s-gdd.title" = "Reset Name"; - -/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "Faf-9L-TXx"; */ -"Faf-9L-TXx.title" = "Automatically check for updates"; - -/* Class = "NSTextFieldCell"; title = "Brightness control:"; ObjectID = "fe9-Ia-t9m"; */ -"fe9-Ia-t9m.title" = "Brightness control:"; - -/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */ -"FER-Ri-4UO.title" = "Volume:"; - -/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */ -"fmZ-HI-Mdc.title" = "Apple and built-in displays already have a brightness slider in Control Center."; - -/* Class = "NSMenuItem"; title = "None"; ObjectID = "FoA-yh-Yx3"; */ -"FoA-yh-Yx3.title" = "None"; - -/* Class = "NSMenuItem"; title = "Show as icons"; ObjectID = "fR3-kq-cps"; */ -"fR3-kq-cps.title" = "Show as icons"; - -/* Class = "NSMenuItem"; title = "Show as text"; ObjectID = "fWd-Es-zsy"; */ -"fWd-Es-zsy.title" = "Show as text"; - -/* Class = "NSTextFieldCell"; title = "Invert"; ObjectID = "G5A-y3-eZz"; */ -"G5A-y3-eZz.title" = "Invert"; - -/* Class = "NSTextFieldCell"; title = "Brightness slider for hardware or software controlled displays or TVs."; ObjectID = "gXH-HL-ZOL"; */ -"gXH-HL-ZOL.title" = "Brightness slider for hardware or software controlled displays or TVs."; - -/* Class = "NSTextFieldCell"; title = "Override audio device name:"; ObjectID = "H9X-it-sXs"; */ -"H9X-it-sXs.title" = "Override audio device name:"; - -/* Class = "NSTextFieldCell"; title = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; ObjectID = "hF7-fM-aKr"; */ -"hF7-fM-aKr.title" = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; - -/* Class = "NSButtonCell"; title = "Get current"; ObjectID = "hkC-vq-IcD"; */ -"hkC-vq-IcD.title" = "Get current"; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "HLE-Vp-kcS"; */ -"HLE-Vp-kcS.title" = "Record shortcuts:"; - -/* Class = "NSMenuItem"; title = "Hide"; ObjectID = "HUT-Qc-kuu"; */ -"HUT-Qc-kuu.title" = "Hide"; - -/* Class = "NSTextFieldCell"; title = "Additional controls:"; ObjectID = "i5X-M5-Tf5"; */ -"i5X-M5-Tf5.title" = "Additional controls:"; - -/* Class = "NSTextFieldCell"; title = "Brightness"; ObjectID = "IJB-mO-e8I"; */ -"IJB-mO-e8I.title" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable smooth brightness transitions"; ObjectID = "IK4-u5-qjf"; */ -"IK4-u5-qjf.title" = "Enable smooth brightness transitions"; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale for volume"; ObjectID = "J3L-MW-iJL"; */ -"J3L-MW-iJL.title" = "Use fine OSD scale for volume"; - -/* Class = "NSButtonCell"; title = "Start at Login"; ObjectID = "j72-NF-zsW"; */ -"j72-NF-zsW.title" = "Lancer MonitorControl au démarrage"; - -/* Class = "NSButtonCell"; title = "Change for all screens"; ObjectID = "JC3-pb-XnR"; */ -"JC3-pb-XnR.title" = "Change for all screens"; - -/* Class = "NSTextFieldCell"; title = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; ObjectID = "Jx2-gO-nq9"; */ -"Jx2-gO-nq9.title" = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; - -/* Class = "NSButtonCell"; title = "Apply last saved values to the display"; ObjectID = "K0S-zN-M4k"; */ -"K0S-zN-M4k.title" = "Apply last saved values to the display"; - -/* Class = "NSButtonCell"; title = "Enable for Apple branded and built-in displays as well"; ObjectID = "K6A-4z-1aQ"; */ -"K6A-4z-1aQ.title" = "Enable for Apple branded and built-in displays as well"; - -/* Class = "NSTextFieldCell"; title = "Don't use software dimming as fallback if no hardware control is available."; ObjectID = "kgh-b4-gmO"; */ -"kgh-b4-gmO.title" = "Don't use software dimming as fallback if no hardware control is available."; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "kqJ-jQ-b7U"; */ -"kqJ-jQ-b7U.title" = "Record shortcuts:"; - -/* Class = "NSTextFieldCell"; title = "Brightness and contrast control:"; ObjectID = "LO4-4k-gxY"; */ -"LO4-4k-gxY.title" = "Brightness and contrast control:"; - -/* Class = "NSTextFieldCell"; title = "Display type:"; ObjectID = "lSJ-6w-KJ2"; */ -"lSJ-6w-KJ2.title" = "Display type:"; - -/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "ltL-gR-K3Z"; */ -"ltL-gR-K3Z.title" = "Screen to control:"; - -/* Class = "NSButtonCell"; title = "Enable slider snapping"; ObjectID = "MlU-hl-d46"; */ -"MlU-hl-d46.title" = "Enable slider snapping"; - -/* Class = "NSMenuItem"; title = "Always show in the menu bar"; ObjectID = "MM0-Lf-VgF"; */ -"MM0-Lf-VgF.title" = "Always show in the menu bar"; - -/* Class = "NSButtonCell"; title = "Use window focus to determine which display to control"; ObjectID = "mMG-Ac-gdB"; */ -"mMG-Ac-gdB.title" = "Use window focus to determine which display to control"; - -/* Class = "NSTextFieldCell"; title = "Contrast:"; ObjectID = "MMk-S2-yJN"; */ -"MMk-S2-yJN.title" = "Contrast:"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "mue-fa-8z6"; */ -"mue-fa-8z6.title" = "Increase:"; - -/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */ -"MWo-6I-s9L.title" = "Show brightness slider in menu"; - -/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */ -"O8o-hI-8eR.title" = "Separate scales for combined hardware & software dimming"; - -/* Class = "NSButtonCell"; title = "Use audio device name to determine which display to control"; ObjectID = "OAa-B4-8r3"; */ -"OAa-B4-8r3.title" = "Use audio device name to determine which display to control"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "OG9-iA-jK1"; */ -"OG9-iA-jK1.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "oHf-Gh-68c"; */ -"oHf-Gh-68c.title" = "Disable keyboard"; - -/* Class = "NSTextFieldCell"; title = "Application:"; ObjectID = "okD-DG-pYa"; */ -"okD-DG-pYa.title" = "Application:"; - -/* Class = "NSMenuItem"; title = "Standard keyboard brightness keys"; ObjectID = "Oke-bW-cb1"; */ -"Oke-bW-cb1.title" = "Standard keyboard brightness keys"; - -/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */ -"Orv-yj-Nad.title" = "count:"; - -/* Class = "NSTextFieldCell"; title = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; ObjectID = "pa0-Hz-ace"; */ -"pa0-Hz-ace.title" = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; - -/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */ -"PaK-1f-DsW.title" = "Control method:"; - -/* Class = "NSButtonCell"; title = "Longer delay during DDC read operations"; ObjectID = "pF5-Sw-7BR"; */ -"pF5-Sw-7BR.title" = "Longer delay during DDC read operations"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only."; ObjectID = "POy-35-bh0"; */ -"POy-35-bh0.title" = "For hardware (DDC) controlled displays only."; - -/* Class = "NSTextFieldCell"; title = "DDC max"; ObjectID = "psF-vX-AFB"; */ -"psF-vX-AFB.title" = "DDC max"; - -/* Class = "NSButtonCell"; title = "Show sliders only for the display currently showing the menu"; ObjectID = "PvP-TV-OmT"; */ -"PvP-TV-OmT.title" = "Show sliders only for the display currently showing the menu"; - -/* Class = "NSTextFieldCell"; title = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; ObjectID = "PyY-p9-3NP"; */ -"PyY-p9-3NP.title" = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "QDG-SA-mRX"; */ -"QDG-SA-mRX.title" = "Both standard and custom shortcuts"; - -/* Class = "NSButtonCell"; title = "Quit appliation"; ObjectID = "qlb-wH-qr4"; */ -"qlb-wH-qr4.title" = "Quit appliation"; - -/* Class = "NSButtonCell"; title = "Show contrast slider in menu"; ObjectID = "qO0-dB-yUs"; */ -"qO0-dB-yUs.title" = "Show contrast slider in menu"; - -/* Class = "NSTextFieldCell"; title = "Volume control (DDC only):"; ObjectID = "qoh-Gn-f11"; */ -"qoh-Gn-f11.title" = "Volume control (DDC only):"; - -/* Class = "NSTextFieldCell"; title = "Show percentage next to slider for more precision."; ObjectID = "qXy-CL-Wf1"; */ -"qXy-CL-Wf1.title" = "Show percentage next to slider for more precision."; - -/* Class = "NSButtonCell"; title = "Combine hardware and software dimming"; ObjectID = "r76-Zc-x09"; */ -"r76-Zc-x09.title" = "Combine hardware and software dimming"; - -/* Class = "NSTextFieldCell"; title = "Advanced:"; ObjectID = "r7i-oG-Ab6"; */ -"r7i-oG-Ab6.title" = "Advanced:"; - -/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "Riq-uM-bTs"; */ -"Riq-uM-bTs.title" = "Normal"; - -/* Class = "NSButton"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "RkH-7d-KvR"; */ -"RkH-7d-KvR.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Show advanced settings"; ObjectID = "sAR-sh-y8e"; */ -"sAR-sh-y8e.title" = "Show advanced settings"; - -/* Class = "NSTextFieldCell"; title = "General menu items style:"; ObjectID = "thh-DG-ecH"; */ -"thh-DG-ecH.title" = "General menu items style:"; - -/* Class = "NSTextFieldCell"; title = "@the0neyouseek\n@JoniVR\n@waydabber"; ObjectID = "TKd-J8-Iyk"; */ -"TKd-J8-Iyk.title" = "@the0neyouseek\n@reitermarkus\n@JoniVR\n@waydabber"; - -/* Class = "NSTextFieldCell"; title = "Menu Icon:"; ObjectID = "u6s-Pb-BCG"; */ -"u6s-Pb-BCG.title" = "Menu Icon:"; - -/* Class = "NSTextFieldCell"; title = "Works if an audio device is selected with no native volume control."; ObjectID = "uF5-a9-Ngz"; */ -"uF5-a9-Ngz.title" = "Works if an audio device is selected with no native volume control."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "uJS-s3-Zpi"; */ -"uJS-s3-Zpi.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable keyboard control for display"; ObjectID = "UqR-WE-jHl"; */ -"UqR-WE-jHl.title" = "Enable keyboard control for display"; - -/* Class = "NSTextFieldCell"; title = "Contrast (DDC)"; ObjectID = "urd-Rh-aiL"; */ -"urd-Rh-aiL.title" = "Contrast"; - -/* Class = "NSButtonCell"; title = "Do not use alternative brightness keys"; ObjectID = "vd2-Lk-neX"; */ -"vd2-Lk-neX.title" = "Do not use alternative brightness keys"; - -/* Class = "NSMenuItem"; title = "Heavy"; ObjectID = "vik-vN-bJe"; */ -"vik-vN-bJe.title" = "Heavy"; - -/* Class = "NSTextFieldCell"; title = "Multiple displays:"; ObjectID = "vri-pv-tJ4"; */ -"vri-pv-tJ4.title" = "Multiple displays:"; - -/* Class = "NSTextFieldCell"; title = "DDC read polling mode:"; ObjectID = "vwm-hY-on5"; */ -"vwm-hY-on5.title" = "DDC read polling mode:"; - -/* Class = "NSTextFieldCell"; title = "General options:"; ObjectID = "W58-ch-j69"; */ -"W58-ch-j69.title" = "General options:"; - -/* Class = "NSTextFieldCell"; title = "Useful when a display tends to reset its settings during sleep."; ObjectID = "w8B-x6-sq5"; */ -"w8B-x6-sq5.title" = "Useful when a display tends to reset its settings during sleep."; - -/* Class = "NSTextFieldCell"; title = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; ObjectID = "wjv-tq-iUx"; */ -"wjv-tq-iUx.title" = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; - -/* Class = "NSTextFieldCell"; title = "Display advanced settings and additional information in Preferences."; ObjectID = "X6w-Ee-9Jq"; */ -"X6w-Ee-9Jq.title" = "Display advanced settings and additional information in Preferences."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "xDF-IA-bBh"; */ -"xDF-IA-bBh.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Update settings from the display. May not work with some hardware."; ObjectID = "xjq-hs-wWB"; */ -"xjq-hs-wWB.title" = "Update settings from the display. May not work with some hardware."; - -/* Class = "NSMenuItem"; title = "Only if at least one slider is present"; ObjectID = "xLa-PN-rsq"; */ -"xLa-PN-rsq.title" = "Only if at least one slider is present"; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "xQJ-aJ-VhH"; */ -"xQJ-aJ-VhH.title" = "Both standard and custom shortcuts"; - -/* Class = "NSTextFieldCell"; title = "Works best with various syncing and 'control all' keyboard settings enabled."; ObjectID = "XU4-Bn-bwH"; */ -"XU4-Bn-bwH.title" = "Works best with various syncing and 'control all' keyboard settings enabled."; - -/* Class = "NSTextFieldCell"; title = "Available"; ObjectID = "yBJ-5d-I7e"; */ -"yBJ-5d-I7e.title" = "Available"; - -/* Class = "NSTextFieldCell"; title = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; ObjectID = "YHZ-VL-QJ3"; */ -"YHZ-VL-QJ3.title" = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; - -/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */ -"yn8-Nd-o89.title" = "Assume last saved settings are valid (recommended)"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "yQh-Ve-WEE"; */ -"yQh-Ve-WEE.title" = "Decrease:"; - -/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "YqZ-LS-YvR"; */ -"YqZ-LS-YvR.title" = "Identifier:"; - -/* Class = "NSButtonCell"; title = "Use hardware DDC control"; ObjectID = "ZdU-gV-V05"; */ -"ZdU-gV-V05.title" = "Use hardware DDC control"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "zHa-xo-XPW"; */ -"zHa-xo-XPW.title" = "Disable keyboard"; - -/* Class = "NSButtonCell"; title = "Donate"; ObjectID = "ZKk-ve-rS4"; */ -"ZKk-ve-rS4.title" = "Donate"; - -/* Class = "NSButtonCell"; title = "Show percentages"; ObjectID = "ZUu-MR-XwA"; */ -"ZUu-MR-XwA.title" = "Show percentages"; - -/* Class = "NSTextFieldCell"; title = "Combined dimming switchover point:"; ObjectID = "zv8-pZ-OPy"; */ -"zv8-pZ-OPy.title" = "Combined dimming switchover point:"; diff --git a/MonitorControl/UI/hu.lproj/Localizable.strings b/MonitorControl/UI/hu.lproj/Localizable.strings deleted file mode 100644 index c195baaa..00000000 --- a/MonitorControl/UI/hu.lproj/Localizable.strings +++ /dev/null @@ -1,136 +0,0 @@ -/* Shown in the main prefs window */ -"About" = "Névjegy"; - -/* Shown in the main prefs window */ -"App menu" = "Menü"; - -/* Apple Silicon designation (shown after the version number in Preferences) */ -"Apple Silicon" = "Apple Silicon"; - -/* Shown in the alert dialog */ -"Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure." = "Biztos benne, hogy engedélyezni kívánja a hosszabb várakozást? Ez bizonyos esetekben a rendszer lefagyását eredményezheti, akár újraindítás is szükségessé válhat. A bejelentkezéskori automatikus indítást letiltjuk a biztonság kedvéért."; - -/* Shown in the alert dialog */ -"Are you sure you want to reset all preferences?" = "Biztos benne, hogy vissza kívánja állítani az alapértelmezett beállításokat?"; - -/* Sown in menu */ -"Brightness" = "Fényerő"; - -/* Build */ -"Build" = "Build"; - -/* Shown in the Display Preferences */ -"Built-in Display" = "Beépített"; - -/* Shown in menu */ -"Check for updates..." = "Frissítések ellenőrzése..."; - -/* Shown in menu */ -"Contrast" = "Kontraszt"; - -/* Version */ -"Copyright Ⓒ MonitorControl, " = "Copyright Ⓒ MonitorControl, "; - -/* Shown in the main prefs window */ -"Displays" = "Kijelzők"; - -/* Shown in the alert dialog */ -"Enable Longer Delay?" = "Hosszabb várakozás engedélyezése?"; - -/* Shown in the Display Preferences */ -"External Display" = "Külső kijelző"; - -/* Shown in the main prefs window */ -"General" = "Általános"; - -/* Shown in the Display Preferences */ -"Hardware (Apple)" = "Hardver (Apple)"; - -/* Shown in the Display Preferences */ -"Hardware (DDC)" = "Hardver (DDC)"; - -/* Shown in the alert dialog */ -"Incompatible previous version" = "Inkompatibilis előző verzió"; - -/* Intel designation (shown after the version number in Preferences) */ -"Intel" = "Intel"; - -/* Shown in the main prefs window */ -"Keyboard" = "Billentyűzet"; - -/* Shown in the alert dialog */ -"No" = "Nem"; - -/* Shown in the Display Preferences */ -"No Control" = "Nem vezérelt"; - -/* Shown in the Display Preferences */ -"Other Display" = "Egyéb kijelző"; - -/* Shown in the alert dialog */ -"Preferences for an incompatible previous app version detected. Default preferences are reloaded." = "Az előző alkalmazásverzió beállításai nem kompatibilisek ezzel a verzióval. Visszaállítottuk az alapértelmezett beállításokat."; - -/* Shown in menu */ -"Preferences..." = "Beállítások..."; - -/* Shown in menu */ -"Quit" = "Kilépés"; - -/* Shown in the alert dialog */ -"Reset Preferences?" = "Alapértelmezett beállítások"; - -/* Shown in the alert dialog */ -"Safe Mode Activated" = "Biztonsági mód engedélyezve"; - -/* Shown in the alert dialog */ -"Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked." = "A Shift gomb le lett nyomva indítás közben, az alkalmazás biztonsági módban indult el. Az alapértelmezett beállításokat visszaállítottuk, a DDC olvasás letiltásra került."; - -/* Shown in the alert dialog */ -"Shortcuts not available" = "Gyorsbillentyűk nem elérhetők"; - -/* Shown in the Display Preferences */ -"Software (Gamma)" = "Szoftver (gamma)"; - -/* Shown in the Display Preferences */ -"Software (Gamma, Forced)" = "Szoftver (erőltetett)"; - -/* Shown in the Display Preferences */ -"Software (Shade)" = "Szoftver (árnyékolás)"; - -/* Shown in the Display Preferences */ -"This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display." = "Ez a kijelző nem támogatja a hardveres vezérlést, hanem szoftveres fényerővezérlést tesz lehetővé gamma táblázat manipulálás segítségével. Ennek okai lehetnek a nem támogatott kimenet (pl. Mac mini HDMI kimenet) vagy feketelistára helyezett kijelző használata."; - -/* Shown in the Display Preferences */ -"This display has an unspecified control status." = "A kijelzőnek nem meghatározott a vezérlési státusza."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control but the current settings allow for software control only." = "Ez a kijelző támogatja a hardveres vezérlést, azonban az aktuális beállítások csak szoftveres vezérlést tesznek lehetővé."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control." = "Ez a kijelző támogatja a hardveres vezérlést. Amennyiben problémákat tapasztal, kapcsolja ki a hardveres DDC vezérlést a szoftveres alternatíva érdekében!"; - -/* Shown in the Display Preferences */ -"This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well." = "Ez a kijelző az Apple saját fényerőkezelő protokolját támogatja. Ez lehetővé teszi a macOS számára is a fényerő vezérlését, MonitorControl nélkül is."; - -/* Shown in the Display Preferences */ -"This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode." = "Ez egy virtuális kijelző (AirPlay, Sidecar, DisplayLink állomás vagy hasonló), amely nem támogatja sem a hardveres, sem a szoftveres gamma táblázat alapú fényerőkezelést. Emiatt a program árnyékolást alkalmaz, amennyiben a kijelző nincs tükrözve. Az egérkurzorra az árnyékolás nincs hatással, valamint képernyőhibák jelentkezhetnek, amikor teljes képernyős ablakváltás történik."; - -/* Unknown display name - Unknown model - Unknown vendor */ -"Unknown" = "Ismeretlen"; - -/* Version */ -"Version" = "Verzió"; - -/* Shown in the Display Preferences */ -"Virtual Display" = "Virtuális kijelző"; - -/* Shown in menu */ -"Volume" = "Hangerő"; - -/* Shown in the alert dialog */ -"Yes" = "Igen"; - -/* Shown in the alert dialog */ -"You need to enable MonitorControl in System Preferences > Security and Privacy > Accessibility for the keyboard shortcuts to work" = "Engedélyeznie kell a MonitorControlt a Rendszerbeállítások > Biztonság és adatvédelem > Kisegítő lehetőségek alatt a gyorsbillentyűk használatához!"; diff --git a/MonitorControl/UI/hu.lproj/Main.strings b/MonitorControl/UI/hu.lproj/Main.strings deleted file mode 100644 index 95148dff..00000000 --- a/MonitorControl/UI/hu.lproj/Main.strings +++ /dev/null @@ -1,401 +0,0 @@ -/* Class = "NSButtonCell"; title = "Sync brightness changes from Built-in and Apple displays"; ObjectID = "0ca-DG-AgB"; */ -"0ca-DG-AgB.title" = "Beépített és Apple kijelzők fényerejének szinkronizálása"; - -/* Class = "NSButtonCell"; title = "Attempt to read display settings"; ObjectID = "0qp-fq-8MI"; */ -"0qp-fq-8MI.title" = "Képernyőbeállítások olvasásának megkísérlése"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl"; ObjectID = "1PJ-14-Bvn"; */ -"1PJ-14-Bvn.title" = "MonitorControl"; - -/* Class = "NSMenuItem"; title = "Standard keyboard volume and mute keys"; ObjectID = "1sy-Kd-WL5"; */ -"1sy-Kd-WL5.title" = "Hagyományos hangerő és némító billentyűk"; - -/* Class = "NSButtonCell"; title = "Change volume for all screens"; ObjectID = "1XT-3S-UuD"; */ -"1XT-3S-UuD.title" = "Hangerő módosítása minden képernyőn"; - -/* Class = "NSTextFieldCell"; title = "DDC min"; ObjectID = "1zE-fg-xEm"; */ -"1zE-fg-xEm.title" = "DDC min"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "4CG-0I-anB"; */ -"4CG-0I-anB.title" = "Egyéni billentyűkombinációk"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; ObjectID = "4dX-o1-xAc"; */ -"4dX-o1-xAc.title" = "Az alkalmazás az egér poziciója alapján határozza meg a vezérelt kijelzőt. Az ablakfókusz mód nem mindig működik teljes képernyős programokkal."; - -/* Class = "NSButtonCell"; title = "Show separate controls for each display in menu"; ObjectID = "4t2-Rv-njr"; */ -"4t2-Rv-njr.title" = "Külön vezérlő minden képernyő számára"; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "567-le-fLg"; */ -"567-le-fLg.ibExternalAccessibilityDescription" = "Fényerő"; - -/* Class = "NSButtonCell"; title = "Reset Preferences"; ObjectID = "5yT-5F-X5R"; */ -"5yT-5F-X5R.title" = "Beállítások visszaállítása"; - -/* Class = "NSMenuItem"; title = "Always hide"; ObjectID = "6mo-7S-oOO"; */ -"6mo-7S-oOO.title" = "Mindig rejtett"; - -/* Class = "NSTextFieldCell"; title = "Slider behavior:"; ObjectID = "75n-7M-1mS"; */ -"75n-7M-1mS.title" = "Csúszka viselkedés:"; - -/* Class = "NSButtonCell"; title = "Use combined slider for all displays"; ObjectID = "7rn-Lu-fcl"; */ -"7rn-Lu-fcl.title" = "Kombinált csúszka az összes kijelző számára"; - -/* Class = "NSButtonCell"; title = "Show slider tick marks"; ObjectID = "7zf-m1-gJO"; */ -"7zf-m1-gJO.title" = "Mértékjelek mutatása mutatása"; - -/* Class = "NSTextFieldCell"; title = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; ObjectID = "8Gx-Ya-zhp"; */ -"8Gx-Ya-zhp.title" = "A csúszka fogantyú 0%, 25%, 50%, 75% és 100% pontokhoz ugrik, hogy ezek könnyebben beállíthatók legyenek."; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale"; ObjectID = "8Q8-57-xnT"; */ -"8Q8-57-xnT.title" = "Finom OSD skála használata"; - -/* Class = "NSButtonCell"; title = "Special thanks to our contributors!"; ObjectID = "95V-M4-2l5"; */ -"95V-M4-2l5.title" = "Köszönjük mindenkinek, aki hozzájárult!"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "9eC-PD-FHl"; */ -"9eC-PD-FHl.title" = "Egyéni billentyűkombinációk"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "9H1-0z-xsx"; */ -"9H1-0z-xsx.ibExternalAccessibilityDescription" = "Fényerő"; - -/* Class = "NSTextFieldCell"; title = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; ObjectID = "A8P-vn-DEJ"; */ -"A8P-vn-DEJ.title" = "Mértékjelek mutatása 0%, 25%, 50%, 75% és 100% pontokon."; - -/* Class = "NSButtonCell"; title = "Disable software dimming as fallback"; ObjectID = "afB-Xx-Lta"; */ -"afB-Xx-Lta.title" = "Szoftveres sötétítési opció letiltása"; - -/* Class = "NSTextFieldCell"; title = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; ObjectID = "an7-Aj-3fZ"; */ -"an7-Aj-3fZ.title" = "Utolsó ismert, vagy alapértelmezett fényerő, hangerő és egyéb beálltások használata. A megváltoztatott értékek első változtatáskor érvényesülnek."; - -/* Class = "NSTextFieldCell"; title = "Brightness:"; ObjectID = "Bhb-6l-uPQ"; */ -"Bhb-6l-uPQ.title" = "Fényerő:"; - -/* Class = "NSTextFieldCell"; title = "(Gamma->DDC)"; ObjectID = "Bid-UL-blc"; */ -"Bid-UL-blc.title" = "(Gamma->DDC)"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only. Results may vary."; ObjectID = "bIe-6O-xEH"; */ -"bIe-6O-xEH.title" = "Hardveresen (DDC) vezérelt kijelzők esetén működhet."; - -/* Class = "NSButtonCell"; title = "Disable macOS volume OSD"; ObjectID = "bkM-Px-U3b"; */ -"bkM-Px-U3b.title" = "MacOS hangerő OSD tiltása"; - -/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "bP4-GJ-vhJ"; */ -"bP4-GJ-vhJ.title" = "OSD skála:"; - -/* Class = "NSButtonCell"; title = "Reset settings"; ObjectID = "BYS-7Y-bRz"; */ -"BYS-7Y-bRz.title" = "Visszaállítás"; - -/* Class = "NSButtonCell"; title = "Enable Mute DDC command"; ObjectID = "bZq-0d-lJa"; */ -"bZq-0d-lJa.title" = "DDC némítás parancs engedélyezése"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "Bzq-Co-fex"; */ -"Bzq-Co-fex.title" = "Csökkentés:"; - -/* Class = "NSButtonCell"; title = "Show volume slider in menu"; ObjectID = "c9D-MB-lma"; */ -"c9D-MB-lma.title" = "Hangerő csúszka mutatása"; - -/* Class = "NSMenuItem"; title = "Custom"; ObjectID = "Cle-DD-vR7"; */ -"Cle-DD-vR7.title" = "Egyedi"; - -/* Class = "NSButtonCell"; title = "Website"; ObjectID = "Cln-uW-2dd"; */ -"Cln-uW-2dd.title" = "Weboldal"; - -/* Class = "NSTextFieldCell"; title = "Upon startup or wake:"; ObjectID = "cNt-Cq-vK4"; */ -"cNt-Cq-vK4.title" = "Indításkor vagy alvás után:"; - -/* Class = "NSTextFieldCell"; title = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; ObjectID = "Cz1-Mh-llk"; */ -"Cz1-Mh-llk.title" = "⚠️ Figyelem! Ezen beállítások változtatása veszélyeztetheti a rendszer stabilitását!"; - -/* Class = "NSTextFieldCell"; title = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; ObjectID = "D4H-hU-FLn"; */ -"D4H-hU-FLn.title" = "Az alternatív gombok az F14/F15 (Scroll Lock vagy Pause PC-k esetén ill. fényerő gombok egyes Logitech billentyűn)."; - -/* Class = "NSTextFieldCell"; title = "VCP list"; ObjectID = "D9t-vT-gNJ"; */ -"D9t-vT-gNJ.title" = "VCP lista"; - -/* Class = "NSTextFieldCell"; title = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; ObjectID = "Dha-Tm-cDM"; */ -"Dha-Tm-cDM.title" = "Enélkül az alkalmazás az egér poziciója alapján dönti el a vezérlendő kijelzőt. A hangeszköz neve módosítható a Kijelzők alatt szükség esetén."; - -/* Class = "NSTextFieldCell"; title = "You can disable smooth transitions for a more direct, immediate control."; ObjectID = "ENt-mP-0yH"; */ -"ENt-mP-0yH.title" = "A finom átmenet letitlható a direktebb, azonnali vezérlés érdekében."; - -/* Class = "NSMenuItem"; title = "Minimal"; ObjectID = "Eq3-z9-yIo"; */ -"Eq3-z9-yIo.title" = "Minimális"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "eue-as-VOR"; */ -"eue-as-VOR.title" = "Növelés:"; - -/* Class = "NSTextFieldCell"; title = "Scale mapping curve"; ObjectID = "Eui-5S-JR6"; */ -"Eui-5S-JR6.title" = "Skála görbület"; - -/* Class = "NSTextFieldCell"; title = "Mute:"; ObjectID = "EvN-FT-vdZ"; */ -"EvN-FT-vdZ.title" = "Némítás:"; - -/* Class = "NSTextFieldCell"; title = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; ObjectID = "f6J-Ui-uMB"; */ -"f6J-Ui-uMB.title" = "Alapesetben egy OSD egységnyi a szintváltozás. Ez a beállítás a finom vezérlést teszi alapértelmezetté."; - -/* Class = "NSButtonCell"; title = "Reset Name"; ObjectID = "f9g-8s-gdd"; */ -"f9g-8s-gdd.title" = "Alaphelyzet"; - -/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "Faf-9L-TXx"; */ -"Faf-9L-TXx.title" = "Frissítések automatikus ellenőrzése"; - -/* Class = "NSTextFieldCell"; title = "Brightness control:"; ObjectID = "fe9-Ia-t9m"; */ -"fe9-Ia-t9m.title" = "Fényerő vezérlés:"; - -/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */ -"FER-Ri-4UO.title" = "Hangerő:"; - -/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */ -"fmZ-HI-Mdc.title" = "Az Apple és beépített kijelzők már rendelkeznek csúszkával a Vezérlőközpontban"; - -/* Class = "NSMenuItem"; title = "None"; ObjectID = "FoA-yh-Yx3"; */ -"FoA-yh-Yx3.title" = "Nincs"; - -/* Class = "NSMenuItem"; title = "Show as icons"; ObjectID = "fR3-kq-cps"; */ -"fR3-kq-cps.title" = "Megjelenítés ikonként"; - -/* Class = "NSMenuItem"; title = "Show as text"; ObjectID = "fWd-Es-zsy"; */ -"fWd-Es-zsy.title" = "Megjelenítés szövegként"; - -/* Class = "NSTextFieldCell"; title = "Invert"; ObjectID = "G5A-y3-eZz"; */ -"G5A-y3-eZz.title" = "Invertálás"; - -/* Class = "NSTextFieldCell"; title = "Brightness slider for hardware or software controlled displays or TVs."; ObjectID = "gXH-HL-ZOL"; */ -"gXH-HL-ZOL.title" = "Fényerő csúszka hardveresen vagy szoftveresen vezérelt kijelzők, TV-k számára."; - -/* Class = "NSTextFieldCell"; title = "Override audio device name:"; ObjectID = "H9X-it-sXs"; */ -"H9X-it-sXs.title" = "Hangeszköz nevének felülírása:"; - -/* Class = "NSTextFieldCell"; title = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; ObjectID = "hF7-fM-aKr"; */ -"hF7-fM-aKr.title" = "Indítsa újra az alkalmazást a Beállítások eléréséhez, ha az opció rejtett. Az alábbi gombbal kiléphet az alkalmazásból."; - -/* Class = "NSButtonCell"; title = "Get current"; ObjectID = "hkC-vq-IcD"; */ -"hkC-vq-IcD.title" = "Aktuális"; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "HLE-Vp-kcS"; */ -"HLE-Vp-kcS.title" = "Rögzítés:"; - -/* Class = "NSMenuItem"; title = "Hide"; ObjectID = "HUT-Qc-kuu"; */ -"HUT-Qc-kuu.title" = "Elrejtés"; - -/* Class = "NSTextFieldCell"; title = "Additional controls:"; ObjectID = "i5X-M5-Tf5"; */ -"i5X-M5-Tf5.title" = "További vezérlők:"; - -/* Class = "NSTextFieldCell"; title = "Brightness"; ObjectID = "IJB-mO-e8I"; */ -"IJB-mO-e8I.title" = "Fényerő"; - -/* Class = "NSButtonCell"; title = "Enable smooth brightness transitions"; ObjectID = "IK4-u5-qjf"; */ -"IK4-u5-qjf.title" = "Finom fényerő átmenet engedélyeze"; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale for volume"; ObjectID = "J3L-MW-iJL"; */ -"J3L-MW-iJL.title" = "Finom OSD skála a hangerő számára"; - -/* Class = "NSButtonCell"; title = "Start at Login"; ObjectID = "j72-NF-zsW"; */ -"j72-NF-zsW.title" = "Automatikus indítás bejelentkezéskor"; - -/* Class = "NSButtonCell"; title = "Change for all screens"; ObjectID = "JC3-pb-XnR"; */ -"JC3-pb-XnR.title" = "Minden képernyő módosítása"; - -/* Class = "NSTextFieldCell"; title = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; ObjectID = "Jx2-gO-nq9"; */ -"Jx2-gO-nq9.title" = "Megjegyzés: a Shift nyomvatartásával induláskor aktiválhatja a Biztonsági Módot az alapértelmezett értékek helyreállítására."; - -/* Class = "NSButtonCell"; title = "Apply last saved values to the display"; ObjectID = "K0S-zN-M4k"; */ -"K0S-zN-M4k.title" = "Utolsó mentett értékek elküldése a kijelzőnek"; - -/* Class = "NSButtonCell"; title = "Enable for Apple branded and built-in displays as well"; ObjectID = "K6A-4z-1aQ"; */ -"K6A-4z-1aQ.title" = "Engedélyezés Apple és beépített kijelzők esetén is"; - -/* Class = "NSTextFieldCell"; title = "Don't use software dimming as fallback if no hardware control is available."; ObjectID = "kgh-b4-gmO"; */ -"kgh-b4-gmO.title" = "Szoftveres sötétítés használatának mellőzése, ha hardveres állítás nem lehetséges."; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "kqJ-jQ-b7U"; */ -"kqJ-jQ-b7U.title" = "Rögzítés:"; - -/* Class = "NSTextFieldCell"; title = "Brightness and contrast control:"; ObjectID = "LO4-4k-gxY"; */ -"LO4-4k-gxY.title" = "Fényerő és kontraszt vezérlés:"; - -/* Class = "NSTextFieldCell"; title = "Display type:"; ObjectID = "lSJ-6w-KJ2"; */ -"lSJ-6w-KJ2.title" = "Kijelző típusa:"; - -/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "ltL-gR-K3Z"; */ -"ltL-gR-K3Z.title" = "Vezérelt képernyő:"; - -/* Class = "NSButtonCell"; title = "Enable slider snapping"; ObjectID = "MlU-hl-d46"; */ -"MlU-hl-d46.title" = "Csúszka igazítás engedélyezése"; - -/* Class = "NSMenuItem"; title = "Always show in the menu bar"; ObjectID = "MM0-Lf-VgF"; */ -"MM0-Lf-VgF.title" = "Mindig legyen látható a menüben"; - -/* Class = "NSButtonCell"; title = "Use window focus to determine which display to control"; ObjectID = "mMG-Ac-gdB"; */ -"mMG-Ac-gdB.title" = "Ablakfókusz határozza meg a vezérelt kijelzőt"; - -/* Class = "NSTextFieldCell"; title = "Contrast:"; ObjectID = "MMk-S2-yJN"; */ -"MMk-S2-yJN.title" = "Kontraszt:"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "mue-fa-8z6"; */ -"mue-fa-8z6.title" = "Növelés:"; - -/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */ -"MWo-6I-s9L.title" = "Fényerő csúszka megjelenítése a menüben"; - -/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */ -"O8o-hI-8eR.title" = "Külön skála kombinált hardver/szoftver sötétítésnál"; - -/* Class = "NSButtonCell"; title = "Use audio device name to determine which display to control"; ObjectID = "OAa-B4-8r3"; */ -"OAa-B4-8r3.title" = "Hangeszköz nevének megfelelő kijelző vezérlése"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "OG9-iA-jK1"; */ -"OG9-iA-jK1.ibExternalAccessibilityDescription" = "Fényerő"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "oHf-Gh-68c"; */ -"oHf-Gh-68c.title" = "Billentyűk letiltása"; - -/* Class = "NSTextFieldCell"; title = "Application:"; ObjectID = "okD-DG-pYa"; */ -"okD-DG-pYa.title" = "Alkalmazás:"; - -/* Class = "NSMenuItem"; title = "Standard keyboard brightness keys"; ObjectID = "Oke-bW-cb1"; */ -"Oke-bW-cb1.title" = "Hagyományos fényerő billentyűk használata"; - -/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */ -"Orv-yj-Nad.title" = "számosság:"; - -/* Class = "NSTextFieldCell"; title = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; ObjectID = "pa0-Hz-ace"; */ -"pa0-Hz-ace.title" = "Az Apple billentyűzet fényerőgombjainak használata. A Control lenyomásával a beépített kijelzőt, a Control+Option segítségével a külső kijelzőt vezérelheti. Shift+Option finom vezérlést tesz lehetővé. Control+Option+Command nyomvatartása a kontrasztot szabályozza. "; - -/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */ -"PaK-1f-DsW.title" = "Vezérlés:"; - -/* Class = "NSButtonCell"; title = "Longer delay during DDC read operations"; ObjectID = "pF5-Sw-7BR"; */ -"pF5-Sw-7BR.title" = "Hosszabb várakozás DDC olvasáskor"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only."; ObjectID = "POy-35-bh0"; */ -"POy-35-bh0.title" = "Hardveres (DDC) vezérelt kijelzők esetén."; - -/* Class = "NSTextFieldCell"; title = "DDC max"; ObjectID = "psF-vX-AFB"; */ -"psF-vX-AFB.title" = "DDC max"; - -/* Class = "NSButtonCell"; title = "Show sliders only for the display currently showing the menu"; ObjectID = "PvP-TV-OmT"; */ -"PvP-TV-OmT.title" = "Az aktuális kijelző csúszkáinak mutatása"; - -/* Class = "NSTextFieldCell"; title = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; ObjectID = "PyY-p9-3NP"; */ -"PyY-p9-3NP.title" = "Szoftveres sötétítés alkalmazása, miután a kijelző elérte a minimális hardveres fényerőt. Csak hardveres (DDC) kijelzők esetén."; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "QDG-SA-mRX"; */ -"QDG-SA-mRX.title" = "Hagyományos és egyedi billentyűkombinációk"; - -/* Class = "NSButtonCell"; title = "Quit appliation"; ObjectID = "qlb-wH-qr4"; */ -"qlb-wH-qr4.title" = "Kilépés"; - -/* Class = "NSButtonCell"; title = "Show contrast slider in menu"; ObjectID = "qO0-dB-yUs"; */ -"qO0-dB-yUs.title" = "Kontraszt csúszka megjelenítése"; - -/* Class = "NSTextFieldCell"; title = "Volume control (DDC only):"; ObjectID = "qoh-Gn-f11"; */ -"qoh-Gn-f11.title" = "Hangerő vezérlés (DDC esetén):"; - -/* Class = "NSTextFieldCell"; title = "Show percentage next to slider for more precision."; ObjectID = "qXy-CL-Wf1"; */ -"qXy-CL-Wf1.title" = "Százalékok mutatása a csúszka mellett a precizitás érdekében."; - -/* Class = "NSButtonCell"; title = "Combine hardware and software dimming"; ObjectID = "r76-Zc-x09"; */ -"r76-Zc-x09.title" = "Hardveres és szoftveres fényerővezérlés kombinálása"; - -/* Class = "NSTextFieldCell"; title = "Advanced:"; ObjectID = "r7i-oG-Ab6"; */ -"r7i-oG-Ab6.title" = "Haladó:"; - -/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "Riq-uM-bTs"; */ -"Riq-uM-bTs.title" = "Normál"; - -/* Class = "NSButton"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "RkH-7d-KvR"; */ -"RkH-7d-KvR.ibExternalAccessibilityDescription" = "Fényerő"; - -/* Class = "NSButtonCell"; title = "Show advanced settings"; ObjectID = "sAR-sh-y8e"; */ -"sAR-sh-y8e.title" = "Haladó beállítások mutatása"; - -/* Class = "NSTextFieldCell"; title = "General menu items style:"; ObjectID = "thh-DG-ecH"; */ -"thh-DG-ecH.title" = "Általános menüpontok stílusa:"; - -/* Class = "NSTextFieldCell"; title = "@the0neyouseek\n@JoniVR\n@waydabber"; ObjectID = "TKd-J8-Iyk"; */ -"TKd-J8-Iyk.title" = "@the0neyouseek\n@JoniVR\n@waydabber"; - -/* Class = "NSTextFieldCell"; title = "Menu Icon:"; ObjectID = "u6s-Pb-BCG"; */ -"u6s-Pb-BCG.title" = "Menü ikon:"; - -/* Class = "NSTextFieldCell"; title = "Works if an audio device is selected with no native volume control."; ObjectID = "uF5-a9-Ngz"; */ -"uF5-a9-Ngz.title" = "Akkor működik, ha hangerővezérléssel nem rendelkező hangeszköz van kiválasztva."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "uJS-s3-Zpi"; */ -"uJS-s3-Zpi.ibExternalAccessibilityDescription" = "Fényerő"; - -/* Class = "NSButtonCell"; title = "Enable keyboard control for display"; ObjectID = "UqR-WE-jHl"; */ -"UqR-WE-jHl.title" = "Vezérlés billentyűzetről"; - -/* Class = "NSTextFieldCell"; title = "Contrast (DDC)"; ObjectID = "urd-Rh-aiL"; */ -"urd-Rh-aiL.title" = "Kontraszt"; - -/* Class = "NSButtonCell"; title = "Do not use alternative brightness keys"; ObjectID = "vd2-Lk-neX"; */ -"vd2-Lk-neX.title" = "Alternatív fényerőgombok használatának mellőzése"; - -/* Class = "NSMenuItem"; title = "Heavy"; ObjectID = "vik-vN-bJe"; */ -"vik-vN-bJe.title" = "Magas"; - -/* Class = "NSTextFieldCell"; title = "Multiple displays:"; ObjectID = "vri-pv-tJ4"; */ -"vri-pv-tJ4.title" = "Több kijelző esetén:"; - -/* Class = "NSTextFieldCell"; title = "DDC read polling mode:"; ObjectID = "vwm-hY-on5"; */ -"vwm-hY-on5.title" = "DDC olvasás mód:"; - -/* Class = "NSTextFieldCell"; title = "General options:"; ObjectID = "W58-ch-j69"; */ -"W58-ch-j69.title" = "Általános beállítások:"; - -/* Class = "NSTextFieldCell"; title = "Useful when a display tends to reset its settings during sleep."; ObjectID = "w8B-x6-sq5"; */ -"w8B-x6-sq5.title" = "Hasznos, amikor a kijelző hajlamos visszaállni alvás után."; - -/* Class = "NSTextFieldCell"; title = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; ObjectID = "wjv-tq-iUx"; */ -"wjv-tq-iUx.title" = "A környezetifény-érzékelő, Touch Bar, Vezérlőközpont módosításai minden kijelzőre hatással vannak."; - -/* Class = "NSTextFieldCell"; title = "Display advanced settings and additional information in Preferences."; ObjectID = "X6w-Ee-9Jq"; */ -"X6w-Ee-9Jq.title" = "Haladó beállítások és további információk megjelenítése a Beállításokban."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "xDF-IA-bBh"; */ -"xDF-IA-bBh.ibExternalAccessibilityDescription" = "Fényerő"; - -/* Class = "NSTextFieldCell"; title = "Update settings from the display. May not work with some hardware."; ObjectID = "xjq-hs-wWB"; */ -"xjq-hs-wWB.title" = "Beállítások frissítése a kijelző állapota alapján. Nem minden hardverrel működik."; - -/* Class = "NSMenuItem"; title = "Only if at least one slider is present"; ObjectID = "xLa-PN-rsq"; */ -"xLa-PN-rsq.title" = "Csak ha legalább egy vezérlő megjelenik"; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "xQJ-aJ-VhH"; */ -"xQJ-aJ-VhH.title" = "Hagyományos és egyedi billentyűkombinációk"; - -/* Class = "NSTextFieldCell"; title = "Works best with various syncing and 'control all' keyboard settings enabled."; ObjectID = "XU4-Bn-bwH"; */ -"XU4-Bn-bwH.title" = "A szinkronizációs és mindent vezérlő beállításokkal működik a legjobban."; - -/* Class = "NSTextFieldCell"; title = "Available"; ObjectID = "yBJ-5d-I7e"; */ -"yBJ-5d-I7e.title" = "Elérhető"; - -/* Class = "NSTextFieldCell"; title = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; ObjectID = "YHZ-VL-QJ3"; */ -"YHZ-VL-QJ3.title" = "A teljes OSD skála elérhető a hardveres fényerővezérlés számára, majd a minimum elérése után további szoftveres csökkentés történik."; - -/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */ -"yn8-Nd-o89.title" = "Utolsó ismert beállítások feltételezése (javasolt)"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "yQh-Ve-WEE"; */ -"yQh-Ve-WEE.title" = "Csökkentés:"; - -/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "YqZ-LS-YvR"; */ -"YqZ-LS-YvR.title" = "Azonosító:"; - -/* Class = "NSButtonCell"; title = "Use hardware DDC control"; ObjectID = "ZdU-gV-V05"; */ -"ZdU-gV-V05.title" = "Hardveres DDC vezérlés"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "zHa-xo-XPW"; */ -"zHa-xo-XPW.title" = "Billentyűk letiltása"; - -/* Class = "NSButtonCell"; title = "Donate"; ObjectID = "ZKk-ve-rS4"; */ -"ZKk-ve-rS4.title" = "Adakozás"; - -/* Class = "NSButtonCell"; title = "Show percentages"; ObjectID = "ZUu-MR-XwA"; */ -"ZUu-MR-XwA.title" = "Százalékok mutatása"; - -/* Class = "NSTextFieldCell"; title = "Combined dimming switchover point:"; ObjectID = "zv8-pZ-OPy"; */ -"zv8-pZ-OPy.title" = "Kombinált fényerő váltópont:"; diff --git a/MonitorControl/UI/it.lproj/Localizable.strings b/MonitorControl/UI/it.lproj/Localizable.strings deleted file mode 100644 index 651cbae0..00000000 --- a/MonitorControl/UI/it.lproj/Localizable.strings +++ /dev/null @@ -1,136 +0,0 @@ -/* Shown in the main prefs window */ -"About" = "Informazioni"; - -/* Shown in the main prefs window */ -"App menu" = "App menu"; - -/* Apple Silicon designation (shown after the version number in Preferences) */ -"Apple Silicon" = "Apple Silicon"; - -/* Shown in the alert dialog */ -"Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure." = "Sei sicuro di voler abilitare un delay più lungo? Ciò potrebbe causare un freeze del sistema e richeidere un riavvio. L'avvio al login sarà disabilitato per sicurezza."; - -/* Shown in the alert dialog */ -"Are you sure you want to reset all preferences?" = "Sei sicuro di voler resettare tutte le preferenze?"; - -/* Sown in menu */ -"Brightness" = "Luminosità"; - -/* Build */ -"Build" = "Build"; - -/* Shown in the Display Preferences */ -"Built-in Display" = "Monitor Built-in"; - -/* Shown in menu */ -"Check for updates..." = "Check for updates..."; - -/* Shown in menu */ -"Contrast" = "Contrasto"; - -/* Version */ -"Copyright Ⓒ MonitorControl, " = "Copyright Ⓒ MonitorControl, "; - -/* Shown in the main prefs window */ -"Displays" = "Monitor"; - -/* Shown in the alert dialog */ -"Enable Longer Delay?" = "Abilitare Delay più Lungo?"; - -/* Shown in the Display Preferences */ -"External Display" = "Monitor esterno"; - -/* Shown in the main prefs window */ -"General" = "Generale"; - -/* Shown in the Display Preferences */ -"Hardware (Apple)" = "Hardware (Apple)"; - -/* Shown in the Display Preferences */ -"Hardware (DDC)" = "Hardware (DDC)"; - -/* Shown in the alert dialog */ -"Incompatible previous version" = "Incompatible previous version"; - -/* Intel designation (shown after the version number in Preferences) */ -"Intel" = "Intel"; - -/* Shown in the main prefs window */ -"Keyboard" = "Keyboard"; - -/* Shown in the alert dialog */ -"No" = "No"; - -/* Shown in the Display Preferences */ -"No Control" = "No Control"; - -/* Shown in the Display Preferences */ -"Other Display" = "Altri monitor"; - -/* Shown in the alert dialog */ -"Preferences for an incompatible previous app version detected. Default preferences are reloaded." = "Preferences for an incompatible previous app version detected. Default preferences are reloaded."; - -/* Shown in menu */ -"Preferences..." = "Preferences..."; - -/* Shown in menu */ -"Quit" = "Quit"; - -/* Shown in the alert dialog */ -"Reset Preferences?" = "Resettare Preferenze?"; - -/* Shown in the alert dialog */ -"Safe Mode Activated" = "Safe Mode attivata"; - -/* Shown in the alert dialog */ -"Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked." = "Il tasto shift è stato premuto durante l'avvio. MonitorControl avviato in safe mode. Verranno caricate le impostazioni di default, la lettura DDC è bloccata."; - -/* Shown in the alert dialog */ -"Shortcuts not available" = "Comandi rapidi non disponibili"; - -/* Shown in the Display Preferences */ -"Software (Gamma)" = "Software (Gamma)"; - -/* Shown in the Display Preferences */ -"Software (Gamma, Forced)" = "Software (Gamma, Forced)"; - -/* Shown in the Display Preferences */ -"Software (Shade)" = "Software (Shade)"; - -/* Shown in the Display Preferences */ -"This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display." = "This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display."; - -/* Shown in the Display Preferences */ -"This display has an unspecified control status." = "This display has an unspecified control status."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control but the current settings allow for software control only." = "This display is reported to support hardware DDC control but the current settings allow for software control only."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control." = "This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control."; - -/* Shown in the Display Preferences */ -"This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well." = "This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well."; - -/* Shown in the Display Preferences */ -"This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode." = "This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode."; - -/* Unknown display name - Unknown model - Unknown vendor */ -"Unknown" = "Sconosciuto"; - -/* Version */ -"Version" = "Versione"; - -/* Shown in the Display Preferences */ -"Virtual Display" = "Monitor virtuale"; - -/* Shown in menu */ -"Volume" = "Volume"; - -/* Shown in the alert dialog */ -"Yes" = "Sì"; - -/* Shown in the alert dialog */ -"You need to enable MonitorControl in System Preferences > Security and Privacy > Accessibility for the keyboard shortcuts to work" = "E' necessario abilitare MonitorControl nelle Preferenze di Sistema > Sicurezza e Privacy > Accessibilità affinchè le abbreviazioni da tastiera funzionino"; diff --git a/MonitorControl/UI/it.lproj/Main.strings b/MonitorControl/UI/it.lproj/Main.strings deleted file mode 100644 index acd39c9c..00000000 --- a/MonitorControl/UI/it.lproj/Main.strings +++ /dev/null @@ -1,401 +0,0 @@ -/* Class = "NSButtonCell"; title = "Sync brightness changes from Built-in and Apple displays"; ObjectID = "0ca-DG-AgB"; */ -"0ca-DG-AgB.title" = "Sync brightness changes from Built-in and Apple displays"; - -/* Class = "NSButtonCell"; title = "Attempt to read display settings"; ObjectID = "0qp-fq-8MI"; */ -"0qp-fq-8MI.title" = "Attempt to read display settings"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl"; ObjectID = "1PJ-14-Bvn"; */ -"1PJ-14-Bvn.title" = "MonitorControl"; - -/* Class = "NSMenuItem"; title = "Standard keyboard volume and mute keys"; ObjectID = "1sy-Kd-WL5"; */ -"1sy-Kd-WL5.title" = "Standard keyboard volume and mute keys"; - -/* Class = "NSButtonCell"; title = "Change volume for all screens"; ObjectID = "1XT-3S-UuD"; */ -"1XT-3S-UuD.title" = "Change volume for all screens"; - -/* Class = "NSTextFieldCell"; title = "DDC min"; ObjectID = "1zE-fg-xEm"; */ -"1zE-fg-xEm.title" = "DDC min"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "4CG-0I-anB"; */ -"4CG-0I-anB.title" = "Custom keyboard shortcuts"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; ObjectID = "4dX-o1-xAc"; */ -"4dX-o1-xAc.title" = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; - -/* Class = "NSButtonCell"; title = "Show separate controls for each display in menu"; ObjectID = "4t2-Rv-njr"; */ -"4t2-Rv-njr.title" = "Show separate controls for each display in menu"; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "567-le-fLg"; */ -"567-le-fLg.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Reset Preferences"; ObjectID = "5yT-5F-X5R"; */ -"5yT-5F-X5R.title" = "Reset Preferences"; - -/* Class = "NSMenuItem"; title = "Always hide"; ObjectID = "6mo-7S-oOO"; */ -"6mo-7S-oOO.title" = "Always hide"; - -/* Class = "NSTextFieldCell"; title = "Slider behavior:"; ObjectID = "75n-7M-1mS"; */ -"75n-7M-1mS.title" = "Slider behavior:"; - -/* Class = "NSButtonCell"; title = "Use combined slider for all displays"; ObjectID = "7rn-Lu-fcl"; */ -"7rn-Lu-fcl.title" = "Use combined slider for all displays"; - -/* Class = "NSButtonCell"; title = "Show slider tick marks"; ObjectID = "7zf-m1-gJO"; */ -"7zf-m1-gJO.title" = "Show slider tick marks"; - -/* Class = "NSTextFieldCell"; title = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; ObjectID = "8Gx-Ya-zhp"; */ -"8Gx-Ya-zhp.title" = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale"; ObjectID = "8Q8-57-xnT"; */ -"8Q8-57-xnT.title" = "Use fine OSD scale"; - -/* Class = "NSButtonCell"; title = "Special thanks to our contributors!"; ObjectID = "95V-M4-2l5"; */ -"95V-M4-2l5.title" = "Ringraziamenti speciali ai nostri contributori!"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "9eC-PD-FHl"; */ -"9eC-PD-FHl.title" = "Custom keyboard shortcuts"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "9H1-0z-xsx"; */ -"9H1-0z-xsx.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; ObjectID = "A8P-vn-DEJ"; */ -"A8P-vn-DEJ.title" = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; - -/* Class = "NSButtonCell"; title = "Disable software dimming as fallback"; ObjectID = "afB-Xx-Lta"; */ -"afB-Xx-Lta.title" = "Disable software dimming as fallback"; - -/* Class = "NSTextFieldCell"; title = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; ObjectID = "an7-Aj-3fZ"; */ -"an7-Aj-3fZ.title" = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; - -/* Class = "NSTextFieldCell"; title = "Brightness:"; ObjectID = "Bhb-6l-uPQ"; */ -"Bhb-6l-uPQ.title" = "Brightness:"; - -/* Class = "NSTextFieldCell"; title = "(Gamma->DDC)"; ObjectID = "Bid-UL-blc"; */ -"Bid-UL-blc.title" = "(Gamma->DDC)"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only. Results may vary."; ObjectID = "bIe-6O-xEH"; */ -"bIe-6O-xEH.title" = "For hardware (DDC) controlled displays only. Results may vary."; - -/* Class = "NSButtonCell"; title = "Disable macOS volume OSD"; ObjectID = "bkM-Px-U3b"; */ -"bkM-Px-U3b.title" = "Disabilita volume OSD di macOS"; - -/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "bP4-GJ-vhJ"; */ -"bP4-GJ-vhJ.title" = "OSD scale:"; - -/* Class = "NSButtonCell"; title = "Reset settings"; ObjectID = "BYS-7Y-bRz"; */ -"BYS-7Y-bRz.title" = "Resetta preferenze"; - -/* Class = "NSButtonCell"; title = "Enable Mute DDC command"; ObjectID = "bZq-0d-lJa"; */ -"bZq-0d-lJa.title" = "Abilità comando Muto DDC"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "Bzq-Co-fex"; */ -"Bzq-Co-fex.title" = "Decrease:"; - -/* Class = "NSButtonCell"; title = "Show volume slider in menu"; ObjectID = "c9D-MB-lma"; */ -"c9D-MB-lma.title" = "Show volume slider in menu"; - -/* Class = "NSMenuItem"; title = "Custom"; ObjectID = "Cle-DD-vR7"; */ -"Cle-DD-vR7.title" = "Custom"; - -/* Class = "NSButtonCell"; title = "Website"; ObjectID = "Cln-uW-2dd"; */ -"Cln-uW-2dd.title" = "Sito web"; - -/* Class = "NSTextFieldCell"; title = "Upon startup or wake:"; ObjectID = "cNt-Cq-vK4"; */ -"cNt-Cq-vK4.title" = "Upon startup or wake:"; - -/* Class = "NSTextFieldCell"; title = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; ObjectID = "Cz1-Mh-llk"; */ -"Cz1-Mh-llk.title" = "⚠️ Attenzione! La modifica di queste opzioni può causare freeze di sistema o comportamenti inattesi!"; - -/* Class = "NSTextFieldCell"; title = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; ObjectID = "D4H-hU-FLn"; */ -"D4H-hU-FLn.title" = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; - -/* Class = "NSTextFieldCell"; title = "VCP list"; ObjectID = "D9t-vT-gNJ"; */ -"D9t-vT-gNJ.title" = "VCP list"; - -/* Class = "NSTextFieldCell"; title = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; ObjectID = "Dha-Tm-cDM"; */ -"Dha-Tm-cDM.title" = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; - -/* Class = "NSTextFieldCell"; title = "You can disable smooth transitions for a more direct, immediate control."; ObjectID = "ENt-mP-0yH"; */ -"ENt-mP-0yH.title" = "You can disable smooth transitions for a more direct, immediate control."; - -/* Class = "NSMenuItem"; title = "Minimal"; ObjectID = "Eq3-z9-yIo"; */ -"Eq3-z9-yIo.title" = "Minimale"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "eue-as-VOR"; */ -"eue-as-VOR.title" = "Increase:"; - -/* Class = "NSTextFieldCell"; title = "Scale mapping curve"; ObjectID = "Eui-5S-JR6"; */ -"Eui-5S-JR6.title" = "Scale mapping curve"; - -/* Class = "NSTextFieldCell"; title = "Mute:"; ObjectID = "EvN-FT-vdZ"; */ -"EvN-FT-vdZ.title" = "Mute:"; - -/* Class = "NSTextFieldCell"; title = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; ObjectID = "f6J-Ui-uMB"; */ -"f6J-Ui-uMB.title" = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; - -/* Class = "NSButtonCell"; title = "Reset Name"; ObjectID = "f9g-8s-gdd"; */ -"f9g-8s-gdd.title" = "Resetta Nome"; - -/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "Faf-9L-TXx"; */ -"Faf-9L-TXx.title" = "Automatically check for updates"; - -/* Class = "NSTextFieldCell"; title = "Brightness control:"; ObjectID = "fe9-Ia-t9m"; */ -"fe9-Ia-t9m.title" = "Brightness control:"; - -/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */ -"FER-Ri-4UO.title" = "Volume:"; - -/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */ -"fmZ-HI-Mdc.title" = "Apple and built-in displays already have a brightness slider in Control Center."; - -/* Class = "NSMenuItem"; title = "None"; ObjectID = "FoA-yh-Yx3"; */ -"FoA-yh-Yx3.title" = "None"; - -/* Class = "NSMenuItem"; title = "Show as icons"; ObjectID = "fR3-kq-cps"; */ -"fR3-kq-cps.title" = "Show as icons"; - -/* Class = "NSMenuItem"; title = "Show as text"; ObjectID = "fWd-Es-zsy"; */ -"fWd-Es-zsy.title" = "Show as text"; - -/* Class = "NSTextFieldCell"; title = "Invert"; ObjectID = "G5A-y3-eZz"; */ -"G5A-y3-eZz.title" = "Invert"; - -/* Class = "NSTextFieldCell"; title = "Brightness slider for hardware or software controlled displays or TVs."; ObjectID = "gXH-HL-ZOL"; */ -"gXH-HL-ZOL.title" = "Brightness slider for hardware or software controlled displays or TVs."; - -/* Class = "NSTextFieldCell"; title = "Override audio device name:"; ObjectID = "H9X-it-sXs"; */ -"H9X-it-sXs.title" = "Override audio device name:"; - -/* Class = "NSTextFieldCell"; title = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; ObjectID = "hF7-fM-aKr"; */ -"hF7-fM-aKr.title" = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; - -/* Class = "NSButtonCell"; title = "Get current"; ObjectID = "hkC-vq-IcD"; */ -"hkC-vq-IcD.title" = "Get current"; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "HLE-Vp-kcS"; */ -"HLE-Vp-kcS.title" = "Record shortcuts:"; - -/* Class = "NSMenuItem"; title = "Hide"; ObjectID = "HUT-Qc-kuu"; */ -"HUT-Qc-kuu.title" = "Hide"; - -/* Class = "NSTextFieldCell"; title = "Additional controls:"; ObjectID = "i5X-M5-Tf5"; */ -"i5X-M5-Tf5.title" = "Additional controls:"; - -/* Class = "NSTextFieldCell"; title = "Brightness"; ObjectID = "IJB-mO-e8I"; */ -"IJB-mO-e8I.title" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable smooth brightness transitions"; ObjectID = "IK4-u5-qjf"; */ -"IK4-u5-qjf.title" = "Enable smooth brightness transitions"; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale for volume"; ObjectID = "J3L-MW-iJL"; */ -"J3L-MW-iJL.title" = "Use fine OSD scale for volume"; - -/* Class = "NSButtonCell"; title = "Start at Login"; ObjectID = "j72-NF-zsW"; */ -"j72-NF-zsW.title" = "Avvia MonitorControl al login"; - -/* Class = "NSButtonCell"; title = "Change for all screens"; ObjectID = "JC3-pb-XnR"; */ -"JC3-pb-XnR.title" = "Change for all screens"; - -/* Class = "NSTextFieldCell"; title = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; ObjectID = "Jx2-gO-nq9"; */ -"Jx2-gO-nq9.title" = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; - -/* Class = "NSButtonCell"; title = "Apply last saved values to the display"; ObjectID = "K0S-zN-M4k"; */ -"K0S-zN-M4k.title" = "Apply last saved values to the display"; - -/* Class = "NSButtonCell"; title = "Enable for Apple branded and built-in displays as well"; ObjectID = "K6A-4z-1aQ"; */ -"K6A-4z-1aQ.title" = "Enable for Apple branded and built-in displays as well"; - -/* Class = "NSTextFieldCell"; title = "Don't use software dimming as fallback if no hardware control is available."; ObjectID = "kgh-b4-gmO"; */ -"kgh-b4-gmO.title" = "Don't use software dimming as fallback if no hardware control is available."; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "kqJ-jQ-b7U"; */ -"kqJ-jQ-b7U.title" = "Record shortcuts:"; - -/* Class = "NSTextFieldCell"; title = "Brightness and contrast control:"; ObjectID = "LO4-4k-gxY"; */ -"LO4-4k-gxY.title" = "Brightness and contrast control:"; - -/* Class = "NSTextFieldCell"; title = "Display type:"; ObjectID = "lSJ-6w-KJ2"; */ -"lSJ-6w-KJ2.title" = "Tipo di monitor:"; - -/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "ltL-gR-K3Z"; */ -"ltL-gR-K3Z.title" = "Screen to control:"; - -/* Class = "NSButtonCell"; title = "Enable slider snapping"; ObjectID = "MlU-hl-d46"; */ -"MlU-hl-d46.title" = "Enable slider snapping"; - -/* Class = "NSMenuItem"; title = "Always show in the menu bar"; ObjectID = "MM0-Lf-VgF"; */ -"MM0-Lf-VgF.title" = "Always show in the menu bar"; - -/* Class = "NSButtonCell"; title = "Use window focus to determine which display to control"; ObjectID = "mMG-Ac-gdB"; */ -"mMG-Ac-gdB.title" = "Use window focus to determine which display to control"; - -/* Class = "NSTextFieldCell"; title = "Contrast:"; ObjectID = "MMk-S2-yJN"; */ -"MMk-S2-yJN.title" = "Contrast:"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "mue-fa-8z6"; */ -"mue-fa-8z6.title" = "Increase:"; - -/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */ -"MWo-6I-s9L.title" = "Show brightness slider in menu"; - -/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */ -"O8o-hI-8eR.title" = "Separate scales for combined hardware & software dimming"; - -/* Class = "NSButtonCell"; title = "Use audio device name to determine which display to control"; ObjectID = "OAa-B4-8r3"; */ -"OAa-B4-8r3.title" = "Use audio device name to determine which display to control"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "OG9-iA-jK1"; */ -"OG9-iA-jK1.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "oHf-Gh-68c"; */ -"oHf-Gh-68c.title" = "Disable keyboard"; - -/* Class = "NSTextFieldCell"; title = "Application:"; ObjectID = "okD-DG-pYa"; */ -"okD-DG-pYa.title" = "Applicazione:"; - -/* Class = "NSMenuItem"; title = "Standard keyboard brightness keys"; ObjectID = "Oke-bW-cb1"; */ -"Oke-bW-cb1.title" = "Standard keyboard brightness keys"; - -/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */ -"Orv-yj-Nad.title" = "count:"; - -/* Class = "NSTextFieldCell"; title = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; ObjectID = "pa0-Hz-ace"; */ -"pa0-Hz-ace.title" = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; - -/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */ -"PaK-1f-DsW.title" = "Tipo di controllo:"; - -/* Class = "NSButtonCell"; title = "Longer delay during DDC read operations"; ObjectID = "pF5-Sw-7BR"; */ -"pF5-Sw-7BR.title" = "Delay più lungo durante le operazioni di lettura DDC"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only."; ObjectID = "POy-35-bh0"; */ -"POy-35-bh0.title" = "For hardware (DDC) controlled displays only."; - -/* Class = "NSTextFieldCell"; title = "DDC max"; ObjectID = "psF-vX-AFB"; */ -"psF-vX-AFB.title" = "DDC max"; - -/* Class = "NSButtonCell"; title = "Show sliders only for the display currently showing the menu"; ObjectID = "PvP-TV-OmT"; */ -"PvP-TV-OmT.title" = "Show sliders only for the display currently showing the menu"; - -/* Class = "NSTextFieldCell"; title = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; ObjectID = "PyY-p9-3NP"; */ -"PyY-p9-3NP.title" = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "QDG-SA-mRX"; */ -"QDG-SA-mRX.title" = "Both standard and custom shortcuts"; - -/* Class = "NSButtonCell"; title = "Quit appliation"; ObjectID = "qlb-wH-qr4"; */ -"qlb-wH-qr4.title" = "Quit appliation"; - -/* Class = "NSButtonCell"; title = "Show contrast slider in menu"; ObjectID = "qO0-dB-yUs"; */ -"qO0-dB-yUs.title" = "Show contrast slider in menu"; - -/* Class = "NSTextFieldCell"; title = "Volume control (DDC only):"; ObjectID = "qoh-Gn-f11"; */ -"qoh-Gn-f11.title" = "Volume control (DDC only):"; - -/* Class = "NSTextFieldCell"; title = "Show percentage next to slider for more precision."; ObjectID = "qXy-CL-Wf1"; */ -"qXy-CL-Wf1.title" = "Show percentage next to slider for more precision."; - -/* Class = "NSButtonCell"; title = "Combine hardware and software dimming"; ObjectID = "r76-Zc-x09"; */ -"r76-Zc-x09.title" = "Combine hardware and software dimming"; - -/* Class = "NSTextFieldCell"; title = "Advanced:"; ObjectID = "r7i-oG-Ab6"; */ -"r7i-oG-Ab6.title" = "Avanzate:"; - -/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "Riq-uM-bTs"; */ -"Riq-uM-bTs.title" = "Normale"; - -/* Class = "NSButton"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "RkH-7d-KvR"; */ -"RkH-7d-KvR.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Show advanced settings"; ObjectID = "sAR-sh-y8e"; */ -"sAR-sh-y8e.title" = "Show advanced settings"; - -/* Class = "NSTextFieldCell"; title = "General menu items style:"; ObjectID = "thh-DG-ecH"; */ -"thh-DG-ecH.title" = "General menu items style:"; - -/* Class = "NSTextFieldCell"; title = "@the0neyouseek\n@JoniVR\n@waydabber"; ObjectID = "TKd-J8-Iyk"; */ -"TKd-J8-Iyk.title" = "@the0neyouseek\n@reitermarkus\n@JoniVR\n@waydabber"; - -/* Class = "NSTextFieldCell"; title = "Menu Icon:"; ObjectID = "u6s-Pb-BCG"; */ -"u6s-Pb-BCG.title" = "Menu Icon:"; - -/* Class = "NSTextFieldCell"; title = "Works if an audio device is selected with no native volume control."; ObjectID = "uF5-a9-Ngz"; */ -"uF5-a9-Ngz.title" = "Works if an audio device is selected with no native volume control."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "uJS-s3-Zpi"; */ -"uJS-s3-Zpi.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable keyboard control for display"; ObjectID = "UqR-WE-jHl"; */ -"UqR-WE-jHl.title" = "Controlla monitor da tastiera"; - -/* Class = "NSTextFieldCell"; title = "Contrast (DDC)"; ObjectID = "urd-Rh-aiL"; */ -"urd-Rh-aiL.title" = "Contrast"; - -/* Class = "NSButtonCell"; title = "Do not use alternative brightness keys"; ObjectID = "vd2-Lk-neX"; */ -"vd2-Lk-neX.title" = "Do not use alternative brightness keys"; - -/* Class = "NSMenuItem"; title = "Heavy"; ObjectID = "vik-vN-bJe"; */ -"vik-vN-bJe.title" = "Intensiva"; - -/* Class = "NSTextFieldCell"; title = "Multiple displays:"; ObjectID = "vri-pv-tJ4"; */ -"vri-pv-tJ4.title" = "Multiple displays:"; - -/* Class = "NSTextFieldCell"; title = "DDC read polling mode:"; ObjectID = "vwm-hY-on5"; */ -"vwm-hY-on5.title" = "Modalità lettura polling DDC:"; - -/* Class = "NSTextFieldCell"; title = "General options:"; ObjectID = "W58-ch-j69"; */ -"W58-ch-j69.title" = "General options:"; - -/* Class = "NSTextFieldCell"; title = "Useful when a display tends to reset its settings during sleep."; ObjectID = "w8B-x6-sq5"; */ -"w8B-x6-sq5.title" = "Useful when a display tends to reset its settings during sleep."; - -/* Class = "NSTextFieldCell"; title = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; ObjectID = "wjv-tq-iUx"; */ -"wjv-tq-iUx.title" = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; - -/* Class = "NSTextFieldCell"; title = "Display advanced settings and additional information in Preferences."; ObjectID = "X6w-Ee-9Jq"; */ -"X6w-Ee-9Jq.title" = "Display advanced settings and additional information in Preferences."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "xDF-IA-bBh"; */ -"xDF-IA-bBh.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Update settings from the display. May not work with some hardware."; ObjectID = "xjq-hs-wWB"; */ -"xjq-hs-wWB.title" = "Update settings from the display. May not work with some hardware."; - -/* Class = "NSMenuItem"; title = "Only if at least one slider is present"; ObjectID = "xLa-PN-rsq"; */ -"xLa-PN-rsq.title" = "Only if at least one slider is present"; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "xQJ-aJ-VhH"; */ -"xQJ-aJ-VhH.title" = "Both standard and custom shortcuts"; - -/* Class = "NSTextFieldCell"; title = "Works best with various syncing and 'control all' keyboard settings enabled."; ObjectID = "XU4-Bn-bwH"; */ -"XU4-Bn-bwH.title" = "Works best with various syncing and 'control all' keyboard settings enabled."; - -/* Class = "NSTextFieldCell"; title = "Available"; ObjectID = "yBJ-5d-I7e"; */ -"yBJ-5d-I7e.title" = "Available"; - -/* Class = "NSTextFieldCell"; title = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; ObjectID = "YHZ-VL-QJ3"; */ -"YHZ-VL-QJ3.title" = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; - -/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */ -"yn8-Nd-o89.title" = "Assume last saved settings are valid (recommended)"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "yQh-Ve-WEE"; */ -"yQh-Ve-WEE.title" = "Decrease:"; - -/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "YqZ-LS-YvR"; */ -"YqZ-LS-YvR.title" = "Identificatore:"; - -/* Class = "NSButtonCell"; title = "Use hardware DDC control"; ObjectID = "ZdU-gV-V05"; */ -"ZdU-gV-V05.title" = "Usa controllo hardware DDC"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "zHa-xo-XPW"; */ -"zHa-xo-XPW.title" = "Disable keyboard"; - -/* Class = "NSButtonCell"; title = "Donate"; ObjectID = "ZKk-ve-rS4"; */ -"ZKk-ve-rS4.title" = "Fai una donazione"; - -/* Class = "NSButtonCell"; title = "Show percentages"; ObjectID = "ZUu-MR-XwA"; */ -"ZUu-MR-XwA.title" = "Show percentages"; - -/* Class = "NSTextFieldCell"; title = "Combined dimming switchover point:"; ObjectID = "zv8-pZ-OPy"; */ -"zv8-pZ-OPy.title" = "Combined dimming switchover point:"; diff --git a/MonitorControl/UI/ja.lproj/Localizable.strings b/MonitorControl/UI/ja.lproj/Localizable.strings deleted file mode 100644 index 3a0f68cf..00000000 --- a/MonitorControl/UI/ja.lproj/Localizable.strings +++ /dev/null @@ -1,136 +0,0 @@ -/* Shown in the main prefs window */ -"About" = "About"; - -/* Shown in the main prefs window */ -"App menu" = "App menu"; - -/* Apple Silicon designation (shown after the version number in Preferences) */ -"Apple Silicon" = "Apple Silicon"; - -/* Shown in the alert dialog */ -"Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure." = "Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure."; - -/* Shown in the alert dialog */ -"Are you sure you want to reset all preferences?" = "すべての環境設定を初期状態に戻してよろしいですか?"; - -/* Sown in menu */ -"Brightness" = "画面輝度"; - -/* Build */ -"Build" = "ビルド"; - -/* Shown in the Display Preferences */ -"Built-in Display" = "Built-in Display"; - -/* Shown in menu */ -"Check for updates..." = "Check for updates..."; - -/* Shown in menu */ -"Contrast" = "コントラスト"; - -/* Version */ -"Copyright Ⓒ MonitorControl, " = "Copyright Ⓒ MonitorControl, "; - -/* Shown in the main prefs window */ -"Displays" = "画面"; - -/* Shown in the alert dialog */ -"Enable Longer Delay?" = "Enable Longer Delay?"; - -/* Shown in the Display Preferences */ -"External Display" = "External Display"; - -/* Shown in the main prefs window */ -"General" = "一般"; - -/* Shown in the Display Preferences */ -"Hardware (Apple)" = "Hardware (Apple)"; - -/* Shown in the Display Preferences */ -"Hardware (DDC)" = "Hardware (DDC)"; - -/* Shown in the alert dialog */ -"Incompatible previous version" = "Incompatible previous version"; - -/* Intel designation (shown after the version number in Preferences) */ -"Intel" = "Intel"; - -/* Shown in the main prefs window */ -"Keyboard" = "Keyboard"; - -/* Shown in the alert dialog */ -"No" = "No"; - -/* Shown in the Display Preferences */ -"No Control" = "No Control"; - -/* Shown in the Display Preferences */ -"Other Display" = "Other Display"; - -/* Shown in the alert dialog */ -"Preferences for an incompatible previous app version detected. Default preferences are reloaded." = "Preferences for an incompatible previous app version detected. Default preferences are reloaded."; - -/* Shown in menu */ -"Preferences..." = "Preferences..."; - -/* Shown in menu */ -"Quit" = "Quit"; - -/* Shown in the alert dialog */ -"Reset Preferences?" = "環境設定を初期状態に戻しますか?"; - -/* Shown in the alert dialog */ -"Safe Mode Activated" = "Safe Mode Activated"; - -/* Shown in the alert dialog */ -"Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked." = "Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked."; - -/* Shown in the alert dialog */ -"Shortcuts not available" = "ショートカットキーを使用できません"; - -/* Shown in the Display Preferences */ -"Software (Gamma)" = "Software (Gamma)"; - -/* Shown in the Display Preferences */ -"Software (Gamma, Forced)" = "Software (Gamma, Forced)"; - -/* Shown in the Display Preferences */ -"Software (Shade)" = "Software (Shade)"; - -/* Shown in the Display Preferences */ -"This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display." = "This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display."; - -/* Shown in the Display Preferences */ -"This display has an unspecified control status." = "This display has an unspecified control status."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control but the current settings allow for software control only." = "This display is reported to support hardware DDC control but the current settings allow for software control only."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control." = "This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control."; - -/* Shown in the Display Preferences */ -"This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well." = "This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well."; - -/* Shown in the Display Preferences */ -"This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode." = "This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode."; - -/* Unknown display name - Unknown model - Unknown vendor */ -"Unknown" = "不明"; - -/* Version */ -"Version" = "バージョン"; - -/* Shown in the Display Preferences */ -"Virtual Display" = "Virtual Display"; - -/* Shown in menu */ -"Volume" = "音量"; - -/* Shown in the alert dialog */ -"Yes" = "Yes"; - -/* Shown in the alert dialog */ -"You need to enable MonitorControl in System Preferences > Security and Privacy > Accessibility for the keyboard shortcuts to work" = "ショートカットキーを使用するには、 環境設定 > セキュリティとプライバシー > アクセリビリティ からMonitorControlを有効にしてください。"; diff --git a/MonitorControl/UI/ja.lproj/Main.strings b/MonitorControl/UI/ja.lproj/Main.strings deleted file mode 100644 index 82909233..00000000 --- a/MonitorControl/UI/ja.lproj/Main.strings +++ /dev/null @@ -1,401 +0,0 @@ -/* Class = "NSButtonCell"; title = "Sync brightness changes from Built-in and Apple displays"; ObjectID = "0ca-DG-AgB"; */ -"0ca-DG-AgB.title" = "Sync brightness changes from Built-in and Apple displays"; - -/* Class = "NSButtonCell"; title = "Attempt to read display settings"; ObjectID = "0qp-fq-8MI"; */ -"0qp-fq-8MI.title" = "Attempt to read display settings"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl"; ObjectID = "1PJ-14-Bvn"; */ -"1PJ-14-Bvn.title" = "MonitorControl"; - -/* Class = "NSMenuItem"; title = "Standard keyboard volume and mute keys"; ObjectID = "1sy-Kd-WL5"; */ -"1sy-Kd-WL5.title" = "Standard keyboard volume and mute keys"; - -/* Class = "NSButtonCell"; title = "Change volume for all screens"; ObjectID = "1XT-3S-UuD"; */ -"1XT-3S-UuD.title" = "Change volume for all screens"; - -/* Class = "NSTextFieldCell"; title = "DDC min"; ObjectID = "1zE-fg-xEm"; */ -"1zE-fg-xEm.title" = "DDC min"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "4CG-0I-anB"; */ -"4CG-0I-anB.title" = "Custom keyboard shortcuts"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; ObjectID = "4dX-o1-xAc"; */ -"4dX-o1-xAc.title" = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; - -/* Class = "NSButtonCell"; title = "Show separate controls for each display in menu"; ObjectID = "4t2-Rv-njr"; */ -"4t2-Rv-njr.title" = "Show separate controls for each display in menu"; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "567-le-fLg"; */ -"567-le-fLg.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Reset Preferences"; ObjectID = "5yT-5F-X5R"; */ -"5yT-5F-X5R.title" = "Reset Preferences"; - -/* Class = "NSMenuItem"; title = "Always hide"; ObjectID = "6mo-7S-oOO"; */ -"6mo-7S-oOO.title" = "Always hide"; - -/* Class = "NSTextFieldCell"; title = "Slider behavior:"; ObjectID = "75n-7M-1mS"; */ -"75n-7M-1mS.title" = "Slider behavior:"; - -/* Class = "NSButtonCell"; title = "Use combined slider for all displays"; ObjectID = "7rn-Lu-fcl"; */ -"7rn-Lu-fcl.title" = "Use combined slider for all displays"; - -/* Class = "NSButtonCell"; title = "Show slider tick marks"; ObjectID = "7zf-m1-gJO"; */ -"7zf-m1-gJO.title" = "Show slider tick marks"; - -/* Class = "NSTextFieldCell"; title = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; ObjectID = "8Gx-Ya-zhp"; */ -"8Gx-Ya-zhp.title" = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale"; ObjectID = "8Q8-57-xnT"; */ -"8Q8-57-xnT.title" = "Use fine OSD scale"; - -/* Class = "NSButtonCell"; title = "Special thanks to our contributors!"; ObjectID = "95V-M4-2l5"; */ -"95V-M4-2l5.title" = "Special thanks to our contributors!"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "9eC-PD-FHl"; */ -"9eC-PD-FHl.title" = "Custom keyboard shortcuts"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "9H1-0z-xsx"; */ -"9H1-0z-xsx.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; ObjectID = "A8P-vn-DEJ"; */ -"A8P-vn-DEJ.title" = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; - -/* Class = "NSButtonCell"; title = "Disable software dimming as fallback"; ObjectID = "afB-Xx-Lta"; */ -"afB-Xx-Lta.title" = "Disable software dimming as fallback"; - -/* Class = "NSTextFieldCell"; title = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; ObjectID = "an7-Aj-3fZ"; */ -"an7-Aj-3fZ.title" = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; - -/* Class = "NSTextFieldCell"; title = "Brightness:"; ObjectID = "Bhb-6l-uPQ"; */ -"Bhb-6l-uPQ.title" = "Brightness:"; - -/* Class = "NSTextFieldCell"; title = "(Gamma->DDC)"; ObjectID = "Bid-UL-blc"; */ -"Bid-UL-blc.title" = "(Gamma->DDC)"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only. Results may vary."; ObjectID = "bIe-6O-xEH"; */ -"bIe-6O-xEH.title" = "For hardware (DDC) controlled displays only. Results may vary."; - -/* Class = "NSButtonCell"; title = "Disable macOS volume OSD"; ObjectID = "bkM-Px-U3b"; */ -"bkM-Px-U3b.title" = "macOSの音量調節OSDを無効にする"; - -/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "bP4-GJ-vhJ"; */ -"bP4-GJ-vhJ.title" = "OSD scale:"; - -/* Class = "NSButtonCell"; title = "Reset settings"; ObjectID = "BYS-7Y-bRz"; */ -"BYS-7Y-bRz.title" = "初期設定に戻す"; - -/* Class = "NSButtonCell"; title = "Enable Mute DDC command"; ObjectID = "bZq-0d-lJa"; */ -"bZq-0d-lJa.title" = "Enable Mute DDC command"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "Bzq-Co-fex"; */ -"Bzq-Co-fex.title" = "Decrease:"; - -/* Class = "NSButtonCell"; title = "Show volume slider in menu"; ObjectID = "c9D-MB-lma"; */ -"c9D-MB-lma.title" = "Show volume slider in menu"; - -/* Class = "NSMenuItem"; title = "Custom"; ObjectID = "Cle-DD-vR7"; */ -"Cle-DD-vR7.title" = "カスタム"; - -/* Class = "NSButtonCell"; title = "Website"; ObjectID = "Cln-uW-2dd"; */ -"Cln-uW-2dd.title" = "ウェブサイト"; - -/* Class = "NSTextFieldCell"; title = "Upon startup or wake:"; ObjectID = "cNt-Cq-vK4"; */ -"cNt-Cq-vK4.title" = "Upon startup or wake:"; - -/* Class = "NSTextFieldCell"; title = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; ObjectID = "Cz1-Mh-llk"; */ -"Cz1-Mh-llk.title" = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; - -/* Class = "NSTextFieldCell"; title = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; ObjectID = "D4H-hU-FLn"; */ -"D4H-hU-FLn.title" = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; - -/* Class = "NSTextFieldCell"; title = "VCP list"; ObjectID = "D9t-vT-gNJ"; */ -"D9t-vT-gNJ.title" = "VCP list"; - -/* Class = "NSTextFieldCell"; title = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; ObjectID = "Dha-Tm-cDM"; */ -"Dha-Tm-cDM.title" = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; - -/* Class = "NSTextFieldCell"; title = "You can disable smooth transitions for a more direct, immediate control."; ObjectID = "ENt-mP-0yH"; */ -"ENt-mP-0yH.title" = "You can disable smooth transitions for a more direct, immediate control."; - -/* Class = "NSMenuItem"; title = "Minimal"; ObjectID = "Eq3-z9-yIo"; */ -"Eq3-z9-yIo.title" = "低頻度"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "eue-as-VOR"; */ -"eue-as-VOR.title" = "Increase:"; - -/* Class = "NSTextFieldCell"; title = "Scale mapping curve"; ObjectID = "Eui-5S-JR6"; */ -"Eui-5S-JR6.title" = "Scale mapping curve"; - -/* Class = "NSTextFieldCell"; title = "Mute:"; ObjectID = "EvN-FT-vdZ"; */ -"EvN-FT-vdZ.title" = "Mute:"; - -/* Class = "NSTextFieldCell"; title = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; ObjectID = "f6J-Ui-uMB"; */ -"f6J-Ui-uMB.title" = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; - -/* Class = "NSButtonCell"; title = "Reset Name"; ObjectID = "f9g-8s-gdd"; */ -"f9g-8s-gdd.title" = "Reset Name"; - -/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "Faf-9L-TXx"; */ -"Faf-9L-TXx.title" = "Automatically check for updates"; - -/* Class = "NSTextFieldCell"; title = "Brightness control:"; ObjectID = "fe9-Ia-t9m"; */ -"fe9-Ia-t9m.title" = "Brightness control:"; - -/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */ -"FER-Ri-4UO.title" = "Volume:"; - -/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */ -"fmZ-HI-Mdc.title" = "Apple and built-in displays already have a brightness slider in Control Center."; - -/* Class = "NSMenuItem"; title = "None"; ObjectID = "FoA-yh-Yx3"; */ -"FoA-yh-Yx3.title" = "設定しない"; - -/* Class = "NSMenuItem"; title = "Show as icons"; ObjectID = "fR3-kq-cps"; */ -"fR3-kq-cps.title" = "Show as icons"; - -/* Class = "NSMenuItem"; title = "Show as text"; ObjectID = "fWd-Es-zsy"; */ -"fWd-Es-zsy.title" = "Show as text"; - -/* Class = "NSTextFieldCell"; title = "Invert"; ObjectID = "G5A-y3-eZz"; */ -"G5A-y3-eZz.title" = "Invert"; - -/* Class = "NSTextFieldCell"; title = "Brightness slider for hardware or software controlled displays or TVs."; ObjectID = "gXH-HL-ZOL"; */ -"gXH-HL-ZOL.title" = "Brightness slider for hardware or software controlled displays or TVs."; - -/* Class = "NSTextFieldCell"; title = "Override audio device name:"; ObjectID = "H9X-it-sXs"; */ -"H9X-it-sXs.title" = "Override audio device name:"; - -/* Class = "NSTextFieldCell"; title = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; ObjectID = "hF7-fM-aKr"; */ -"hF7-fM-aKr.title" = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; - -/* Class = "NSButtonCell"; title = "Get current"; ObjectID = "hkC-vq-IcD"; */ -"hkC-vq-IcD.title" = "Get current"; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "HLE-Vp-kcS"; */ -"HLE-Vp-kcS.title" = "Record shortcuts:"; - -/* Class = "NSMenuItem"; title = "Hide"; ObjectID = "HUT-Qc-kuu"; */ -"HUT-Qc-kuu.title" = "Hide"; - -/* Class = "NSTextFieldCell"; title = "Additional controls:"; ObjectID = "i5X-M5-Tf5"; */ -"i5X-M5-Tf5.title" = "Additional controls:"; - -/* Class = "NSTextFieldCell"; title = "Brightness"; ObjectID = "IJB-mO-e8I"; */ -"IJB-mO-e8I.title" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable smooth brightness transitions"; ObjectID = "IK4-u5-qjf"; */ -"IK4-u5-qjf.title" = "Enable smooth brightness transitions"; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale for volume"; ObjectID = "J3L-MW-iJL"; */ -"J3L-MW-iJL.title" = "Use fine OSD scale for volume"; - -/* Class = "NSButtonCell"; title = "Start at Login"; ObjectID = "j72-NF-zsW"; */ -"j72-NF-zsW.title" = "ログイン時にMonitorControlを起動する"; - -/* Class = "NSButtonCell"; title = "Change for all screens"; ObjectID = "JC3-pb-XnR"; */ -"JC3-pb-XnR.title" = "Change for all screens"; - -/* Class = "NSTextFieldCell"; title = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; ObjectID = "Jx2-gO-nq9"; */ -"Jx2-gO-nq9.title" = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; - -/* Class = "NSButtonCell"; title = "Apply last saved values to the display"; ObjectID = "K0S-zN-M4k"; */ -"K0S-zN-M4k.title" = "Apply last saved values to the display"; - -/* Class = "NSButtonCell"; title = "Enable for Apple branded and built-in displays as well"; ObjectID = "K6A-4z-1aQ"; */ -"K6A-4z-1aQ.title" = "Enable for Apple branded and built-in displays as well"; - -/* Class = "NSTextFieldCell"; title = "Don't use software dimming as fallback if no hardware control is available."; ObjectID = "kgh-b4-gmO"; */ -"kgh-b4-gmO.title" = "Don't use software dimming as fallback if no hardware control is available."; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "kqJ-jQ-b7U"; */ -"kqJ-jQ-b7U.title" = "Record shortcuts:"; - -/* Class = "NSTextFieldCell"; title = "Brightness and contrast control:"; ObjectID = "LO4-4k-gxY"; */ -"LO4-4k-gxY.title" = "Brightness and contrast control:"; - -/* Class = "NSTextFieldCell"; title = "Display type:"; ObjectID = "lSJ-6w-KJ2"; */ -"lSJ-6w-KJ2.title" = "Display type:"; - -/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "ltL-gR-K3Z"; */ -"ltL-gR-K3Z.title" = "Screen to control:"; - -/* Class = "NSButtonCell"; title = "Enable slider snapping"; ObjectID = "MlU-hl-d46"; */ -"MlU-hl-d46.title" = "Enable slider snapping"; - -/* Class = "NSMenuItem"; title = "Always show in the menu bar"; ObjectID = "MM0-Lf-VgF"; */ -"MM0-Lf-VgF.title" = "Always show in the menu bar"; - -/* Class = "NSButtonCell"; title = "Use window focus to determine which display to control"; ObjectID = "mMG-Ac-gdB"; */ -"mMG-Ac-gdB.title" = "Use window focus to determine which display to control"; - -/* Class = "NSTextFieldCell"; title = "Contrast:"; ObjectID = "MMk-S2-yJN"; */ -"MMk-S2-yJN.title" = "Contrast:"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "mue-fa-8z6"; */ -"mue-fa-8z6.title" = "Increase:"; - -/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */ -"MWo-6I-s9L.title" = "Show brightness slider in menu"; - -/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */ -"O8o-hI-8eR.title" = "Separate scales for combined hardware & software dimming"; - -/* Class = "NSButtonCell"; title = "Use audio device name to determine which display to control"; ObjectID = "OAa-B4-8r3"; */ -"OAa-B4-8r3.title" = "Use audio device name to determine which display to control"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "OG9-iA-jK1"; */ -"OG9-iA-jK1.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "oHf-Gh-68c"; */ -"oHf-Gh-68c.title" = "Disable keyboard"; - -/* Class = "NSTextFieldCell"; title = "Application:"; ObjectID = "okD-DG-pYa"; */ -"okD-DG-pYa.title" = "Application:"; - -/* Class = "NSMenuItem"; title = "Standard keyboard brightness keys"; ObjectID = "Oke-bW-cb1"; */ -"Oke-bW-cb1.title" = "Standard keyboard brightness keys"; - -/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */ -"Orv-yj-Nad.title" = "count:"; - -/* Class = "NSTextFieldCell"; title = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; ObjectID = "pa0-Hz-ace"; */ -"pa0-Hz-ace.title" = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; - -/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */ -"PaK-1f-DsW.title" = "Control method:"; - -/* Class = "NSButtonCell"; title = "Longer delay during DDC read operations"; ObjectID = "pF5-Sw-7BR"; */ -"pF5-Sw-7BR.title" = "Longer delay during DDC read operations"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only."; ObjectID = "POy-35-bh0"; */ -"POy-35-bh0.title" = "For hardware (DDC) controlled displays only."; - -/* Class = "NSTextFieldCell"; title = "DDC max"; ObjectID = "psF-vX-AFB"; */ -"psF-vX-AFB.title" = "DDC max"; - -/* Class = "NSButtonCell"; title = "Show sliders only for the display currently showing the menu"; ObjectID = "PvP-TV-OmT"; */ -"PvP-TV-OmT.title" = "Show sliders only for the display currently showing the menu"; - -/* Class = "NSTextFieldCell"; title = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; ObjectID = "PyY-p9-3NP"; */ -"PyY-p9-3NP.title" = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "QDG-SA-mRX"; */ -"QDG-SA-mRX.title" = "Both standard and custom shortcuts"; - -/* Class = "NSButtonCell"; title = "Quit appliation"; ObjectID = "qlb-wH-qr4"; */ -"qlb-wH-qr4.title" = "Quit appliation"; - -/* Class = "NSButtonCell"; title = "Show contrast slider in menu"; ObjectID = "qO0-dB-yUs"; */ -"qO0-dB-yUs.title" = "Show contrast slider in menu"; - -/* Class = "NSTextFieldCell"; title = "Volume control (DDC only):"; ObjectID = "qoh-Gn-f11"; */ -"qoh-Gn-f11.title" = "Volume control (DDC only):"; - -/* Class = "NSTextFieldCell"; title = "Show percentage next to slider for more precision."; ObjectID = "qXy-CL-Wf1"; */ -"qXy-CL-Wf1.title" = "Show percentage next to slider for more precision."; - -/* Class = "NSButtonCell"; title = "Combine hardware and software dimming"; ObjectID = "r76-Zc-x09"; */ -"r76-Zc-x09.title" = "Combine hardware and software dimming"; - -/* Class = "NSTextFieldCell"; title = "Advanced:"; ObjectID = "r7i-oG-Ab6"; */ -"r7i-oG-Ab6.title" = "Advanced:"; - -/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "Riq-uM-bTs"; */ -"Riq-uM-bTs.title" = "普通"; - -/* Class = "NSButton"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "RkH-7d-KvR"; */ -"RkH-7d-KvR.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Show advanced settings"; ObjectID = "sAR-sh-y8e"; */ -"sAR-sh-y8e.title" = "Show advanced settings"; - -/* Class = "NSTextFieldCell"; title = "General menu items style:"; ObjectID = "thh-DG-ecH"; */ -"thh-DG-ecH.title" = "General menu items style:"; - -/* Class = "NSTextFieldCell"; title = "@the0neyouseek\n@JoniVR\n@waydabber"; ObjectID = "TKd-J8-Iyk"; */ -"TKd-J8-Iyk.title" = "@the0neyouseek\n@reitermarkus\n@JoniVR\n@waydabber"; - -/* Class = "NSTextFieldCell"; title = "Menu Icon:"; ObjectID = "u6s-Pb-BCG"; */ -"u6s-Pb-BCG.title" = "Menu Icon:"; - -/* Class = "NSTextFieldCell"; title = "Works if an audio device is selected with no native volume control."; ObjectID = "uF5-a9-Ngz"; */ -"uF5-a9-Ngz.title" = "Works if an audio device is selected with no native volume control."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "uJS-s3-Zpi"; */ -"uJS-s3-Zpi.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable keyboard control for display"; ObjectID = "UqR-WE-jHl"; */ -"UqR-WE-jHl.title" = "画面のキーボード操作を有効にする"; - -/* Class = "NSTextFieldCell"; title = "Contrast (DDC)"; ObjectID = "urd-Rh-aiL"; */ -"urd-Rh-aiL.title" = "Contrast"; - -/* Class = "NSButtonCell"; title = "Do not use alternative brightness keys"; ObjectID = "vd2-Lk-neX"; */ -"vd2-Lk-neX.title" = "Do not use alternative brightness keys"; - -/* Class = "NSMenuItem"; title = "Heavy"; ObjectID = "vik-vN-bJe"; */ -"vik-vN-bJe.title" = "高頻度"; - -/* Class = "NSTextFieldCell"; title = "Multiple displays:"; ObjectID = "vri-pv-tJ4"; */ -"vri-pv-tJ4.title" = "Multiple displays:"; - -/* Class = "NSTextFieldCell"; title = "DDC read polling mode:"; ObjectID = "vwm-hY-on5"; */ -"vwm-hY-on5.title" = "DDC read polling mode:"; - -/* Class = "NSTextFieldCell"; title = "General options:"; ObjectID = "W58-ch-j69"; */ -"W58-ch-j69.title" = "General options:"; - -/* Class = "NSTextFieldCell"; title = "Useful when a display tends to reset its settings during sleep."; ObjectID = "w8B-x6-sq5"; */ -"w8B-x6-sq5.title" = "Useful when a display tends to reset its settings during sleep."; - -/* Class = "NSTextFieldCell"; title = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; ObjectID = "wjv-tq-iUx"; */ -"wjv-tq-iUx.title" = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; - -/* Class = "NSTextFieldCell"; title = "Display advanced settings and additional information in Preferences."; ObjectID = "X6w-Ee-9Jq"; */ -"X6w-Ee-9Jq.title" = "Display advanced settings and additional information in Preferences."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "xDF-IA-bBh"; */ -"xDF-IA-bBh.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Update settings from the display. May not work with some hardware."; ObjectID = "xjq-hs-wWB"; */ -"xjq-hs-wWB.title" = "Update settings from the display. May not work with some hardware."; - -/* Class = "NSMenuItem"; title = "Only if at least one slider is present"; ObjectID = "xLa-PN-rsq"; */ -"xLa-PN-rsq.title" = "Only if at least one slider is present"; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "xQJ-aJ-VhH"; */ -"xQJ-aJ-VhH.title" = "Both standard and custom shortcuts"; - -/* Class = "NSTextFieldCell"; title = "Works best with various syncing and 'control all' keyboard settings enabled."; ObjectID = "XU4-Bn-bwH"; */ -"XU4-Bn-bwH.title" = "Works best with various syncing and 'control all' keyboard settings enabled."; - -/* Class = "NSTextFieldCell"; title = "Available"; ObjectID = "yBJ-5d-I7e"; */ -"yBJ-5d-I7e.title" = "Available"; - -/* Class = "NSTextFieldCell"; title = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; ObjectID = "YHZ-VL-QJ3"; */ -"YHZ-VL-QJ3.title" = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; - -/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */ -"yn8-Nd-o89.title" = "Assume last saved settings are valid (recommended)"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "yQh-Ve-WEE"; */ -"yQh-Ve-WEE.title" = "Decrease:"; - -/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "YqZ-LS-YvR"; */ -"YqZ-LS-YvR.title" = "Identifier:"; - -/* Class = "NSButtonCell"; title = "Use hardware DDC control"; ObjectID = "ZdU-gV-V05"; */ -"ZdU-gV-V05.title" = "ハードウェアDDC制御を使用する"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "zHa-xo-XPW"; */ -"zHa-xo-XPW.title" = "Disable keyboard"; - -/* Class = "NSButtonCell"; title = "Donate"; ObjectID = "ZKk-ve-rS4"; */ -"ZKk-ve-rS4.title" = "寄付"; - -/* Class = "NSButtonCell"; title = "Show percentages"; ObjectID = "ZUu-MR-XwA"; */ -"ZUu-MR-XwA.title" = "Show percentages"; - -/* Class = "NSTextFieldCell"; title = "Combined dimming switchover point:"; ObjectID = "zv8-pZ-OPy"; */ -"zv8-pZ-OPy.title" = "Combined dimming switchover point:"; diff --git a/MonitorControl/UI/ko.lproj/Localizable.strings b/MonitorControl/UI/ko.lproj/Localizable.strings deleted file mode 100644 index 95f1f919..00000000 --- a/MonitorControl/UI/ko.lproj/Localizable.strings +++ /dev/null @@ -1,134 +0,0 @@ -/* Shown in the main prefs window */ -"About" = "정보"; - -/* Shown in the main prefs window */ -"App menu" = "App menu"; - -/* Apple Silicon designation (shown after the version number in Preferences) */ -"Apple Silicon" = "Apple Silicon"; - -/* Shown in the alert dialog */ -"Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure." = "응답지연 시간을 연장하시겠습니까? 시스템이 멈추거나 재시작이 필요할 수 있습니다. 로그인 시 자동 실행 옵션은 안전을 위해 비활성화됩니다."; - -/* Shown in the alert dialog */ -"Are you sure you want to reset all preferences?" = "모든 설정을 초기화하시겠습니까?"; - -/* Shown in menu */ -"Brightness" = "밝기"; - -/* Build */ -"Build" = "빌드"; - -/* Shown in the Display Preferences */ -"Built-in Display" = "내장 디스플레이"; - -/* Shown in menu */ -"Check for updates..." = "Check for updates..."; - -/* Shown in menu */ -"Contrast" = "대비"; - -/* Version */ -"Copyright Ⓒ MonitorControl, " = "Copyright Ⓒ MonitorControl, "; - -/* Shown in the main prefs window */ -"Displays" = "디스플레이"; - -/* Shown in the alert dialog */ -"Enable Longer Delay?" = "응답지연 시간 연장"; - -/* Shown in the Display Preferences */ -"External Display" = "외장 디스플레이"; - -/* Shown in the main prefs window */ -"General" = "일반"; - -/* Shown in the Display Preferences */ -"Hardware (Apple)" = "Hardware (Apple)"; - -/* Shown in the Display Preferences */ -"Hardware (DDC)" = "하드웨어 (DDC)"; - -/* Shown in the alert dialog */ -"Incompatible previous version" = "Incompatible previous version"; - -/* Intel designation (shown after the version number in Preferences) */ -"Intel" = "Intel"; - -/* Shown in the main prefs window */ -"Keyboard" = "Keyboard"; - -/* Shown in the alert dialog */ -"No" = "아니오"; - -/* Shown in the Display Preferences */ -"No Control" = "No Control"; - -/* Shown in the Display Preferences */ -"Other Display" = "그 외 디스플레이"; - -/* Shown in the alert dialog */ -"Preferences for an incompatible previous app version detected. Default preferences are reloaded." = "Preferences for an incompatible previous app version detected. Default preferences are reloaded."; - -/* Shown in menu */ -"Preferences..." = "Preferences..."; - -/* Shown in menu */ -"Quit" = "Quit"; - -/* Shown in the alert dialog */ -"Reset Preferences?" = "설정 초기화"; - -/* Shown in the alert dialog */ -"Safe Mode Activated" = "안전모드 활성화 됨"; - -/* Shown in the alert dialog */ -"Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked." = "쉬프트가 눌린 채로 시작되었습니다. MonitorControl 이 안전모드로 시작되었습니다. 기본 설정으로 다시 로딩되었으며, DDC 읽기가 제한됩니다."; - -/* Shown in the alert dialog */ -"Shortcuts not available" = "단축키를 사용할 수 없음"; - -/* Shown in the Display Preferences */ -"Software (Gamma)" = "Software (Gamma)"; - -/* Shown in the Display Preferences */ -"Software (Gamma, Forced)" = "Software (Gamma, Forced)"; - -/* Shown in the Display Preferences */ -"Software (Shade)" = "Software (Shade)"; - -/* Shown in the Display Preferences */ -"This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display." = "This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display."; - -/* Shown in the Display Preferences */ -"This display has an unspecified control status." = "This display has an unspecified control status."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control but the current settings allow for software control only." = "This display is reported to support hardware DDC control but the current settings allow for software control only."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control." = "This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control."; - -/* Shown in the Display Preferences */ -"This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well." = "This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well."; - -/* Shown in the Display Preferences */ -"This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode." = "This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode."; - -/* Unknown display name */ -"Unknown" = "알 수 없음"; - -/* Version */ -"Version" = "버전"; - -/* Shown in the Display Preferences */ -"Virtual Display" = "가상 디스플레이"; - -/* Shown in menu */ -"Volume" = "볼륨"; - -/* Shown in the alert dialog */ -"Yes" = "예"; - -/* Shown in the alert dialog */ -"You need to enable MonitorControl in System Preferences > Security and Privacy > Accessibility for the keyboard shortcuts to work" = "단축키가 동작하기 위해서는 시스템 환경설정 > 보안 및 개인 정보 보호 > 손쉬운 사용에서 MonitorControl 항목을 체크해야 합니다."; diff --git a/MonitorControl/UI/ko.lproj/Main.strings b/MonitorControl/UI/ko.lproj/Main.strings deleted file mode 100644 index 6def2e2c..00000000 --- a/MonitorControl/UI/ko.lproj/Main.strings +++ /dev/null @@ -1,401 +0,0 @@ -/* Class = "NSButtonCell"; title = "Sync brightness changes from Built-in and Apple displays"; ObjectID = "0ca-DG-AgB"; */ -"0ca-DG-AgB.title" = "Sync brightness changes from Built-in and Apple displays"; - -/* Class = "NSButtonCell"; title = "Attempt to read display settings"; ObjectID = "0qp-fq-8MI"; */ -"0qp-fq-8MI.title" = "Attempt to read display settings"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl"; ObjectID = "1PJ-14-Bvn"; */ -"1PJ-14-Bvn.title" = "MonitorControl"; - -/* Class = "NSMenuItem"; title = "Standard keyboard volume and mute keys"; ObjectID = "1sy-Kd-WL5"; */ -"1sy-Kd-WL5.title" = "Standard keyboard volume and mute keys"; - -/* Class = "NSButtonCell"; title = "Change volume for all screens"; ObjectID = "1XT-3S-UuD"; */ -"1XT-3S-UuD.title" = "Change volume for all screens"; - -/* Class = "NSTextFieldCell"; title = "DDC min"; ObjectID = "1zE-fg-xEm"; */ -"1zE-fg-xEm.title" = "DDC min"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "4CG-0I-anB"; */ -"4CG-0I-anB.title" = "Custom keyboard shortcuts"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; ObjectID = "4dX-o1-xAc"; */ -"4dX-o1-xAc.title" = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; - -/* Class = "NSButtonCell"; title = "Show separate controls for each display in menu"; ObjectID = "4t2-Rv-njr"; */ -"4t2-Rv-njr.title" = "Show separate controls for each display in menu"; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "567-le-fLg"; */ -"567-le-fLg.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Reset Preferences"; ObjectID = "5yT-5F-X5R"; */ -"5yT-5F-X5R.title" = "Reset Preferences"; - -/* Class = "NSMenuItem"; title = "Always hide"; ObjectID = "6mo-7S-oOO"; */ -"6mo-7S-oOO.title" = "Always hide"; - -/* Class = "NSTextFieldCell"; title = "Slider behavior:"; ObjectID = "75n-7M-1mS"; */ -"75n-7M-1mS.title" = "Slider behavior:"; - -/* Class = "NSButtonCell"; title = "Use combined slider for all displays"; ObjectID = "7rn-Lu-fcl"; */ -"7rn-Lu-fcl.title" = "Use combined slider for all displays"; - -/* Class = "NSButtonCell"; title = "Show slider tick marks"; ObjectID = "7zf-m1-gJO"; */ -"7zf-m1-gJO.title" = "Show slider tick marks"; - -/* Class = "NSTextFieldCell"; title = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; ObjectID = "8Gx-Ya-zhp"; */ -"8Gx-Ya-zhp.title" = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale"; ObjectID = "8Q8-57-xnT"; */ -"8Q8-57-xnT.title" = "Use fine OSD scale"; - -/* Class = "NSButtonCell"; title = "Special thanks to our contributors!"; ObjectID = "95V-M4-2l5"; */ -"95V-M4-2l5.title" = "기여자에게 특별한 감사를 드립니다!"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "9eC-PD-FHl"; */ -"9eC-PD-FHl.title" = "Custom keyboard shortcuts"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "9H1-0z-xsx"; */ -"9H1-0z-xsx.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; ObjectID = "A8P-vn-DEJ"; */ -"A8P-vn-DEJ.title" = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; - -/* Class = "NSButtonCell"; title = "Disable software dimming as fallback"; ObjectID = "afB-Xx-Lta"; */ -"afB-Xx-Lta.title" = "Disable software dimming as fallback"; - -/* Class = "NSTextFieldCell"; title = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; ObjectID = "an7-Aj-3fZ"; */ -"an7-Aj-3fZ.title" = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; - -/* Class = "NSTextFieldCell"; title = "Brightness:"; ObjectID = "Bhb-6l-uPQ"; */ -"Bhb-6l-uPQ.title" = "Brightness:"; - -/* Class = "NSTextFieldCell"; title = "(Gamma->DDC)"; ObjectID = "Bid-UL-blc"; */ -"Bid-UL-blc.title" = "(Gamma->DDC)"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only. Results may vary."; ObjectID = "bIe-6O-xEH"; */ -"bIe-6O-xEH.title" = "For hardware (DDC) controlled displays only. Results may vary."; - -/* Class = "NSButtonCell"; title = "Disable macOS volume OSD"; ObjectID = "bkM-Px-U3b"; */ -"bkM-Px-U3b.title" = "맥OS 볼륨 OSD 비활성화"; - -/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "bP4-GJ-vhJ"; */ -"bP4-GJ-vhJ.title" = "OSD scale:"; - -/* Class = "NSButtonCell"; title = "Reset settings"; ObjectID = "BYS-7Y-bRz"; */ -"BYS-7Y-bRz.title" = "설정 초기화"; - -/* Class = "NSButtonCell"; title = "Enable Mute DDC command"; ObjectID = "bZq-0d-lJa"; */ -"bZq-0d-lJa.title" = "음소거 DDC 커맨드 활성화"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "Bzq-Co-fex"; */ -"Bzq-Co-fex.title" = "Decrease:"; - -/* Class = "NSButtonCell"; title = "Show volume slider in menu"; ObjectID = "c9D-MB-lma"; */ -"c9D-MB-lma.title" = "Show volume slider in menu"; - -/* Class = "NSMenuItem"; title = "Custom"; ObjectID = "Cle-DD-vR7"; */ -"Cle-DD-vR7.title" = "사용자 설정"; - -/* Class = "NSButtonCell"; title = "Website"; ObjectID = "Cln-uW-2dd"; */ -"Cln-uW-2dd.title" = "웹사이트"; - -/* Class = "NSTextFieldCell"; title = "Upon startup or wake:"; ObjectID = "cNt-Cq-vK4"; */ -"cNt-Cq-vK4.title" = "Upon startup or wake:"; - -/* Class = "NSTextFieldCell"; title = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; ObjectID = "Cz1-Mh-llk"; */ -"Cz1-Mh-llk.title" = "⚠️ 경고! 이 설정을 변경하면 시스템이 멈추거나 예기치 않은 동작이 발생할 수 있습니다"; - -/* Class = "NSTextFieldCell"; title = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; ObjectID = "D4H-hU-FLn"; */ -"D4H-hU-FLn.title" = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; - -/* Class = "NSTextFieldCell"; title = "VCP list"; ObjectID = "D9t-vT-gNJ"; */ -"D9t-vT-gNJ.title" = "VCP list"; - -/* Class = "NSTextFieldCell"; title = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; ObjectID = "Dha-Tm-cDM"; */ -"Dha-Tm-cDM.title" = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; - -/* Class = "NSTextFieldCell"; title = "You can disable smooth transitions for a more direct, immediate control."; ObjectID = "ENt-mP-0yH"; */ -"ENt-mP-0yH.title" = "You can disable smooth transitions for a more direct, immediate control."; - -/* Class = "NSMenuItem"; title = "Minimal"; ObjectID = "Eq3-z9-yIo"; */ -"Eq3-z9-yIo.title" = "최소"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "eue-as-VOR"; */ -"eue-as-VOR.title" = "Increase:"; - -/* Class = "NSTextFieldCell"; title = "Scale mapping curve"; ObjectID = "Eui-5S-JR6"; */ -"Eui-5S-JR6.title" = "Scale mapping curve"; - -/* Class = "NSTextFieldCell"; title = "Mute:"; ObjectID = "EvN-FT-vdZ"; */ -"EvN-FT-vdZ.title" = "Mute:"; - -/* Class = "NSTextFieldCell"; title = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; ObjectID = "f6J-Ui-uMB"; */ -"f6J-Ui-uMB.title" = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; - -/* Class = "NSButtonCell"; title = "Reset Name"; ObjectID = "f9g-8s-gdd"; */ -"f9g-8s-gdd.title" = "Reset Name"; - -/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "Faf-9L-TXx"; */ -"Faf-9L-TXx.title" = "Automatically check for updates"; - -/* Class = "NSTextFieldCell"; title = "Brightness control:"; ObjectID = "fe9-Ia-t9m"; */ -"fe9-Ia-t9m.title" = "Brightness control:"; - -/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */ -"FER-Ri-4UO.title" = "Volume:"; - -/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */ -"fmZ-HI-Mdc.title" = "Apple and built-in displays already have a brightness slider in Control Center."; - -/* Class = "NSMenuItem"; title = "None"; ObjectID = "FoA-yh-Yx3"; */ -"FoA-yh-Yx3.title" = "설정하지 않음"; - -/* Class = "NSMenuItem"; title = "Show as icons"; ObjectID = "fR3-kq-cps"; */ -"fR3-kq-cps.title" = "Show as icons"; - -/* Class = "NSMenuItem"; title = "Show as text"; ObjectID = "fWd-Es-zsy"; */ -"fWd-Es-zsy.title" = "Show as text"; - -/* Class = "NSTextFieldCell"; title = "Invert"; ObjectID = "G5A-y3-eZz"; */ -"G5A-y3-eZz.title" = "Invert"; - -/* Class = "NSTextFieldCell"; title = "Brightness slider for hardware or software controlled displays or TVs."; ObjectID = "gXH-HL-ZOL"; */ -"gXH-HL-ZOL.title" = "Brightness slider for hardware or software controlled displays or TVs."; - -/* Class = "NSTextFieldCell"; title = "Override audio device name:"; ObjectID = "H9X-it-sXs"; */ -"H9X-it-sXs.title" = "Override audio device name:"; - -/* Class = "NSTextFieldCell"; title = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; ObjectID = "hF7-fM-aKr"; */ -"hF7-fM-aKr.title" = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; - -/* Class = "NSButtonCell"; title = "Get current"; ObjectID = "hkC-vq-IcD"; */ -"hkC-vq-IcD.title" = "Get current"; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "HLE-Vp-kcS"; */ -"HLE-Vp-kcS.title" = "Record shortcuts:"; - -/* Class = "NSMenuItem"; title = "Hide"; ObjectID = "HUT-Qc-kuu"; */ -"HUT-Qc-kuu.title" = "Hide"; - -/* Class = "NSTextFieldCell"; title = "Additional controls:"; ObjectID = "i5X-M5-Tf5"; */ -"i5X-M5-Tf5.title" = "Additional controls:"; - -/* Class = "NSTextFieldCell"; title = "Brightness"; ObjectID = "IJB-mO-e8I"; */ -"IJB-mO-e8I.title" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable smooth brightness transitions"; ObjectID = "IK4-u5-qjf"; */ -"IK4-u5-qjf.title" = "Enable smooth brightness transitions"; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale for volume"; ObjectID = "J3L-MW-iJL"; */ -"J3L-MW-iJL.title" = "Use fine OSD scale for volume"; - -/* Class = "NSButtonCell"; title = "Start at Login"; ObjectID = "j72-NF-zsW"; */ -"j72-NF-zsW.title" = "로그인 시 시작"; - -/* Class = "NSButtonCell"; title = "Change for all screens"; ObjectID = "JC3-pb-XnR"; */ -"JC3-pb-XnR.title" = "Change for all screens"; - -/* Class = "NSTextFieldCell"; title = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; ObjectID = "Jx2-gO-nq9"; */ -"Jx2-gO-nq9.title" = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; - -/* Class = "NSButtonCell"; title = "Apply last saved values to the display"; ObjectID = "K0S-zN-M4k"; */ -"K0S-zN-M4k.title" = "Apply last saved values to the display"; - -/* Class = "NSButtonCell"; title = "Enable for Apple branded and built-in displays as well"; ObjectID = "K6A-4z-1aQ"; */ -"K6A-4z-1aQ.title" = "Enable for Apple branded and built-in displays as well"; - -/* Class = "NSTextFieldCell"; title = "Don't use software dimming as fallback if no hardware control is available."; ObjectID = "kgh-b4-gmO"; */ -"kgh-b4-gmO.title" = "Don't use software dimming as fallback if no hardware control is available."; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "kqJ-jQ-b7U"; */ -"kqJ-jQ-b7U.title" = "Record shortcuts:"; - -/* Class = "NSTextFieldCell"; title = "Brightness and contrast control:"; ObjectID = "LO4-4k-gxY"; */ -"LO4-4k-gxY.title" = "Brightness and contrast control:"; - -/* Class = "NSTextFieldCell"; title = "Display type:"; ObjectID = "lSJ-6w-KJ2"; */ -"lSJ-6w-KJ2.title" = "디스플레이 타입:"; - -/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "ltL-gR-K3Z"; */ -"ltL-gR-K3Z.title" = "Screen to control:"; - -/* Class = "NSButtonCell"; title = "Enable slider snapping"; ObjectID = "MlU-hl-d46"; */ -"MlU-hl-d46.title" = "Enable slider snapping"; - -/* Class = "NSMenuItem"; title = "Always show in the menu bar"; ObjectID = "MM0-Lf-VgF"; */ -"MM0-Lf-VgF.title" = "Always show in the menu bar"; - -/* Class = "NSButtonCell"; title = "Use window focus to determine which display to control"; ObjectID = "mMG-Ac-gdB"; */ -"mMG-Ac-gdB.title" = "Use window focus to determine which display to control"; - -/* Class = "NSTextFieldCell"; title = "Contrast:"; ObjectID = "MMk-S2-yJN"; */ -"MMk-S2-yJN.title" = "Contrast:"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "mue-fa-8z6"; */ -"mue-fa-8z6.title" = "Increase:"; - -/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */ -"MWo-6I-s9L.title" = "Show brightness slider in menu"; - -/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */ -"O8o-hI-8eR.title" = "Separate scales for combined hardware & software dimming"; - -/* Class = "NSButtonCell"; title = "Use audio device name to determine which display to control"; ObjectID = "OAa-B4-8r3"; */ -"OAa-B4-8r3.title" = "Use audio device name to determine which display to control"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "OG9-iA-jK1"; */ -"OG9-iA-jK1.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "oHf-Gh-68c"; */ -"oHf-Gh-68c.title" = "Disable keyboard"; - -/* Class = "NSTextFieldCell"; title = "Application:"; ObjectID = "okD-DG-pYa"; */ -"okD-DG-pYa.title" = "애플리케이션:"; - -/* Class = "NSMenuItem"; title = "Standard keyboard brightness keys"; ObjectID = "Oke-bW-cb1"; */ -"Oke-bW-cb1.title" = "Standard keyboard brightness keys"; - -/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */ -"Orv-yj-Nad.title" = "count:"; - -/* Class = "NSTextFieldCell"; title = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; ObjectID = "pa0-Hz-ace"; */ -"pa0-Hz-ace.title" = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; - -/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */ -"PaK-1f-DsW.title" = "제어 방식:"; - -/* Class = "NSButtonCell"; title = "Longer delay during DDC read operations"; ObjectID = "pF5-Sw-7BR"; */ -"pF5-Sw-7BR.title" = "DDC 리드 작업 중 응답지연 시간 연장"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only."; ObjectID = "POy-35-bh0"; */ -"POy-35-bh0.title" = "For hardware (DDC) controlled displays only."; - -/* Class = "NSTextFieldCell"; title = "DDC max"; ObjectID = "psF-vX-AFB"; */ -"psF-vX-AFB.title" = "DDC max"; - -/* Class = "NSButtonCell"; title = "Show sliders only for the display currently showing the menu"; ObjectID = "PvP-TV-OmT"; */ -"PvP-TV-OmT.title" = "Show sliders only for the display currently showing the menu"; - -/* Class = "NSTextFieldCell"; title = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; ObjectID = "PyY-p9-3NP"; */ -"PyY-p9-3NP.title" = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "QDG-SA-mRX"; */ -"QDG-SA-mRX.title" = "Both standard and custom shortcuts"; - -/* Class = "NSButtonCell"; title = "Quit appliation"; ObjectID = "qlb-wH-qr4"; */ -"qlb-wH-qr4.title" = "Quit appliation"; - -/* Class = "NSButtonCell"; title = "Show contrast slider in menu"; ObjectID = "qO0-dB-yUs"; */ -"qO0-dB-yUs.title" = "Show contrast slider in menu"; - -/* Class = "NSTextFieldCell"; title = "Volume control (DDC only):"; ObjectID = "qoh-Gn-f11"; */ -"qoh-Gn-f11.title" = "Volume control (DDC only):"; - -/* Class = "NSTextFieldCell"; title = "Show percentage next to slider for more precision."; ObjectID = "qXy-CL-Wf1"; */ -"qXy-CL-Wf1.title" = "Show percentage next to slider for more precision."; - -/* Class = "NSButtonCell"; title = "Combine hardware and software dimming"; ObjectID = "r76-Zc-x09"; */ -"r76-Zc-x09.title" = "Combine hardware and software dimming"; - -/* Class = "NSTextFieldCell"; title = "Advanced:"; ObjectID = "r7i-oG-Ab6"; */ -"r7i-oG-Ab6.title" = "고급:"; - -/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "Riq-uM-bTs"; */ -"Riq-uM-bTs.title" = "보통"; - -/* Class = "NSButton"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "RkH-7d-KvR"; */ -"RkH-7d-KvR.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Show advanced settings"; ObjectID = "sAR-sh-y8e"; */ -"sAR-sh-y8e.title" = "Show advanced settings"; - -/* Class = "NSTextFieldCell"; title = "General menu items style:"; ObjectID = "thh-DG-ecH"; */ -"thh-DG-ecH.title" = "General menu items style:"; - -/* Class = "NSTextFieldCell"; title = "@the0neyouseek\n@JoniVR\n@waydabber"; ObjectID = "TKd-J8-Iyk"; */ -"TKd-J8-Iyk.title" = "@the0neyouseek\n@JoniVR\n@waydabber"; - -/* Class = "NSTextFieldCell"; title = "Menu Icon:"; ObjectID = "u6s-Pb-BCG"; */ -"u6s-Pb-BCG.title" = "Menu Icon:"; - -/* Class = "NSTextFieldCell"; title = "Works if an audio device is selected with no native volume control."; ObjectID = "uF5-a9-Ngz"; */ -"uF5-a9-Ngz.title" = "Works if an audio device is selected with no native volume control."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "uJS-s3-Zpi"; */ -"uJS-s3-Zpi.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable keyboard control for display"; ObjectID = "UqR-WE-jHl"; */ -"UqR-WE-jHl.title" = "디스플레이 키보드 제어 활성화"; - -/* Class = "NSTextFieldCell"; title = "Contrast (DDC)"; ObjectID = "urd-Rh-aiL"; */ -"urd-Rh-aiL.title" = "Contrast"; - -/* Class = "NSButtonCell"; title = "Do not use alternative brightness keys"; ObjectID = "vd2-Lk-neX"; */ -"vd2-Lk-neX.title" = "Do not use alternative brightness keys"; - -/* Class = "NSMenuItem"; title = "Heavy"; ObjectID = "vik-vN-bJe"; */ -"vik-vN-bJe.title" = "자주"; - -/* Class = "NSTextFieldCell"; title = "Multiple displays:"; ObjectID = "vri-pv-tJ4"; */ -"vri-pv-tJ4.title" = "Multiple displays:"; - -/* Class = "NSTextFieldCell"; title = "DDC read polling mode:"; ObjectID = "vwm-hY-on5"; */ -"vwm-hY-on5.title" = "DDC 리드 폴링 모드:"; - -/* Class = "NSTextFieldCell"; title = "General options:"; ObjectID = "W58-ch-j69"; */ -"W58-ch-j69.title" = "General options:"; - -/* Class = "NSTextFieldCell"; title = "Useful when a display tends to reset its settings during sleep."; ObjectID = "w8B-x6-sq5"; */ -"w8B-x6-sq5.title" = "Useful when a display tends to reset its settings during sleep."; - -/* Class = "NSTextFieldCell"; title = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; ObjectID = "wjv-tq-iUx"; */ -"wjv-tq-iUx.title" = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; - -/* Class = "NSTextFieldCell"; title = "Display advanced settings and additional information in Preferences."; ObjectID = "X6w-Ee-9Jq"; */ -"X6w-Ee-9Jq.title" = "Display advanced settings and additional information in Preferences."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "xDF-IA-bBh"; */ -"xDF-IA-bBh.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Update settings from the display. May not work with some hardware."; ObjectID = "xjq-hs-wWB"; */ -"xjq-hs-wWB.title" = "Update settings from the display. May not work with some hardware."; - -/* Class = "NSMenuItem"; title = "Only if at least one slider is present"; ObjectID = "xLa-PN-rsq"; */ -"xLa-PN-rsq.title" = "Only if at least one slider is present"; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "xQJ-aJ-VhH"; */ -"xQJ-aJ-VhH.title" = "Both standard and custom shortcuts"; - -/* Class = "NSTextFieldCell"; title = "Works best with various syncing and 'control all' keyboard settings enabled."; ObjectID = "XU4-Bn-bwH"; */ -"XU4-Bn-bwH.title" = "Works best with various syncing and 'control all' keyboard settings enabled."; - -/* Class = "NSTextFieldCell"; title = "Available"; ObjectID = "yBJ-5d-I7e"; */ -"yBJ-5d-I7e.title" = "Available"; - -/* Class = "NSTextFieldCell"; title = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; ObjectID = "YHZ-VL-QJ3"; */ -"YHZ-VL-QJ3.title" = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; - -/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */ -"yn8-Nd-o89.title" = "Assume last saved settings are valid (recommended)"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "yQh-Ve-WEE"; */ -"yQh-Ve-WEE.title" = "Decrease:"; - -/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "YqZ-LS-YvR"; */ -"YqZ-LS-YvR.title" = "식별자:"; - -/* Class = "NSButtonCell"; title = "Use hardware DDC control"; ObjectID = "ZdU-gV-V05"; */ -"ZdU-gV-V05.title" = "하드웨어 DDC 제어 사용"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "zHa-xo-XPW"; */ -"zHa-xo-XPW.title" = "Disable keyboard"; - -/* Class = "NSButtonCell"; title = "Donate"; ObjectID = "ZKk-ve-rS4"; */ -"ZKk-ve-rS4.title" = "기부하기"; - -/* Class = "NSButtonCell"; title = "Show percentages"; ObjectID = "ZUu-MR-XwA"; */ -"ZUu-MR-XwA.title" = "Show percentages"; - -/* Class = "NSTextFieldCell"; title = "Combined dimming switchover point:"; ObjectID = "zv8-pZ-OPy"; */ -"zv8-pZ-OPy.title" = "Combined dimming switchover point:"; diff --git a/MonitorControl/UI/nl.lproj/Localizable.strings b/MonitorControl/UI/nl.lproj/Localizable.strings deleted file mode 100644 index 57094541..00000000 --- a/MonitorControl/UI/nl.lproj/Localizable.strings +++ /dev/null @@ -1,136 +0,0 @@ -/* Shown in the main prefs window */ -"About" = "Over"; - -/* Shown in the main prefs window */ -"App menu" = "App menu"; - -/* Apple Silicon designation (shown after the version number in Preferences) */ -"Apple Silicon" = "Apple Silicon"; - -/* Shown in the alert dialog */ -"Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure." = "Weet u zeker dat u een langere vertraging wilt inschakelen? Als u dit doet kan uw systeem vastlopen en een herstart nodig hebben. Start bij het inloggen wordt uitgeschakeld als veiligheidsmaatregel."; - -/* Shown in the alert dialog */ -"Are you sure you want to reset all preferences?" = "Weet u zeker dat u alle voorkeuren wilt herstellen?"; - -/* Shown in menu */ -"Brightness" = "Helderheid"; - -/* Build */ -"Build" = "Build"; - -/* Shown in the Display Preferences */ -"Built-in Display" = "Ingebouwd Beeldscherm"; - -/* Shown in menu */ -"Check for updates..." = "Check for updates..."; - -/* Shown in menu */ -"Contrast" = "Contrast"; - -/* Version */ -"Copyright Ⓒ MonitorControl, " = "Copyright Ⓒ MonitorControl, "; - -/* Shown in the main prefs window */ -"Displays" = "Beeldschermen"; - -/* Shown in the alert dialog */ -"Enable Longer Delay?" = "Langere vertraging inschakelen?"; - -/* Shown in the Display Preferences */ -"External Display" = "Extern Beeldscherm"; - -/* Shown in the main prefs window */ -"General" = "Algemeen"; - -/* Shown in the Display Preferences */ -"Hardware (Apple)" = "Hardware (Apple)"; - -/* Shown in the Display Preferences */ -"Hardware (DDC)" = "Hardware (DDC)"; - -/* Shown in the alert dialog */ -"Incompatible previous version" = "Incompatible previous version"; - -/* Intel designation (shown after the version number in Preferences) */ -"Intel" = "Intel"; - -/* Shown in the main prefs window */ -"Keyboard" = "Keyboard"; - -/* Shown in the alert dialog */ -"No" = "Nee"; - -/* Shown in the Display Preferences */ -"No Control" = "No Control"; - -/* Shown in the Display Preferences */ -"Other Display" = "Ander Beeldscherm"; - -/* Shown in the alert dialog */ -"Preferences for an incompatible previous app version detected. Default preferences are reloaded." = "Preferences for an incompatible previous app version detected. Default preferences are reloaded."; - -/* Shown in menu */ -"Preferences..." = "Preferences..."; - -/* Shown in menu */ -"Quit" = "Quit"; - -/* Shown in the alert dialog */ -"Reset Preferences?" = "Reset Voorkeuren?"; - -/* Shown in the alert dialog */ -"Safe Mode Activated" = "Veilige Modus Geactiveerd"; - -/* Shown in the alert dialog */ -"Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked." = "Shift werd ingedrukt tijdens het opstarten. MonitorControl is gestart in veilige modus. Standaardinstellingen zijn herladen, DDC uitlezen is geblokkeerd."; - -/* Shown in the alert dialog */ -"Shortcuts not available" = "Sneltoetsen niet beschikbaar"; - -/* Shown in the Display Preferences */ -"Software (Gamma)" = "Software (Gamma)"; - -/* Shown in the Display Preferences */ -"Software (Gamma, Forced)" = "Software (Gamma, Forced)"; - -/* Shown in the Display Preferences */ -"Software (Shade)" = "Software (Shade)"; - -/* Shown in the Display Preferences */ -"This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display." = "This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display."; - -/* Shown in the Display Preferences */ -"This display has an unspecified control status." = "This display has an unspecified control status."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control but the current settings allow for software control only." = "This display is reported to support hardware DDC control but the current settings allow for software control only."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control." = "This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control."; - -/* Shown in the Display Preferences */ -"This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well." = "This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well."; - -/* Shown in the Display Preferences */ -"This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode." = "This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode."; - -/* unknown display name - unknown model - unknown vendor */ -"Unknown" = "Onbekend"; - -/* Version */ -"Version" = "Versie"; - -/* Shown in the Display Preferences */ -"Virtual Display" = "Virtueel Beeldscherm"; - -/* Shown in menu */ -"Volume" = "Volume"; - -/* Shown in the alert dialog */ -"Yes" = "Ja"; - -/* Shown in the alert dialog */ -"You need to enable MonitorControl in System Preferences > Security and Privacy > Accessibility for the keyboard shortcuts to work" = "U moet MonitorControl inschakelen in Systeemvoorkeuren > Beveiliging en Privacy > Privacy > Toegankelijkheid inschakelen, zodat de sneltoetsen werken."; diff --git a/MonitorControl/UI/nl.lproj/Main.strings b/MonitorControl/UI/nl.lproj/Main.strings deleted file mode 100644 index 718d08fc..00000000 --- a/MonitorControl/UI/nl.lproj/Main.strings +++ /dev/null @@ -1,401 +0,0 @@ -/* Class = "NSButtonCell"; title = "Sync brightness changes from Built-in and Apple displays"; ObjectID = "0ca-DG-AgB"; */ -"0ca-DG-AgB.title" = "Sync brightness changes from Built-in and Apple displays"; - -/* Class = "NSButtonCell"; title = "Attempt to read display settings"; ObjectID = "0qp-fq-8MI"; */ -"0qp-fq-8MI.title" = "Attempt to read display settings"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl"; ObjectID = "1PJ-14-Bvn"; */ -"1PJ-14-Bvn.title" = "MonitorControl"; - -/* Class = "NSMenuItem"; title = "Standard keyboard volume and mute keys"; ObjectID = "1sy-Kd-WL5"; */ -"1sy-Kd-WL5.title" = "Standard keyboard volume and mute keys"; - -/* Class = "NSButtonCell"; title = "Change volume for all screens"; ObjectID = "1XT-3S-UuD"; */ -"1XT-3S-UuD.title" = "Change volume for all screens"; - -/* Class = "NSTextFieldCell"; title = "DDC min"; ObjectID = "1zE-fg-xEm"; */ -"1zE-fg-xEm.title" = "DDC min"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "4CG-0I-anB"; */ -"4CG-0I-anB.title" = "Custom keyboard shortcuts"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; ObjectID = "4dX-o1-xAc"; */ -"4dX-o1-xAc.title" = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; - -/* Class = "NSButtonCell"; title = "Show separate controls for each display in menu"; ObjectID = "4t2-Rv-njr"; */ -"4t2-Rv-njr.title" = "Show separate controls for each display in menu"; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "567-le-fLg"; */ -"567-le-fLg.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Reset Preferences"; ObjectID = "5yT-5F-X5R"; */ -"5yT-5F-X5R.title" = "Reset Preferences"; - -/* Class = "NSMenuItem"; title = "Always hide"; ObjectID = "6mo-7S-oOO"; */ -"6mo-7S-oOO.title" = "Always hide"; - -/* Class = "NSTextFieldCell"; title = "Slider behavior:"; ObjectID = "75n-7M-1mS"; */ -"75n-7M-1mS.title" = "Slider behavior:"; - -/* Class = "NSButtonCell"; title = "Use combined slider for all displays"; ObjectID = "7rn-Lu-fcl"; */ -"7rn-Lu-fcl.title" = "Use combined slider for all displays"; - -/* Class = "NSButtonCell"; title = "Show slider tick marks"; ObjectID = "7zf-m1-gJO"; */ -"7zf-m1-gJO.title" = "Show slider tick marks"; - -/* Class = "NSTextFieldCell"; title = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; ObjectID = "8Gx-Ya-zhp"; */ -"8Gx-Ya-zhp.title" = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale"; ObjectID = "8Q8-57-xnT"; */ -"8Q8-57-xnT.title" = "Use fine OSD scale"; - -/* Class = "NSButtonCell"; title = "Special thanks to our contributors!"; ObjectID = "95V-M4-2l5"; */ -"95V-M4-2l5.title" = "Speciale dank aan onze bijdragers!"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "9eC-PD-FHl"; */ -"9eC-PD-FHl.title" = "Custom keyboard shortcuts"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "9H1-0z-xsx"; */ -"9H1-0z-xsx.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; ObjectID = "A8P-vn-DEJ"; */ -"A8P-vn-DEJ.title" = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; - -/* Class = "NSButtonCell"; title = "Disable software dimming as fallback"; ObjectID = "afB-Xx-Lta"; */ -"afB-Xx-Lta.title" = "Disable software dimming as fallback"; - -/* Class = "NSTextFieldCell"; title = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; ObjectID = "an7-Aj-3fZ"; */ -"an7-Aj-3fZ.title" = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; - -/* Class = "NSTextFieldCell"; title = "Brightness:"; ObjectID = "Bhb-6l-uPQ"; */ -"Bhb-6l-uPQ.title" = "Brightness:"; - -/* Class = "NSTextFieldCell"; title = "(Gamma->DDC)"; ObjectID = "Bid-UL-blc"; */ -"Bid-UL-blc.title" = "(Gamma->DDC)"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only. Results may vary."; ObjectID = "bIe-6O-xEH"; */ -"bIe-6O-xEH.title" = "For hardware (DDC) controlled displays only. Results may vary."; - -/* Class = "NSButtonCell"; title = "Disable macOS volume OSD"; ObjectID = "bkM-Px-U3b"; */ -"bkM-Px-U3b.title" = "MacOS volume OSD uitzetten"; - -/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "bP4-GJ-vhJ"; */ -"bP4-GJ-vhJ.title" = "OSD scale:"; - -/* Class = "NSButtonCell"; title = "Reset settings"; ObjectID = "BYS-7Y-bRz"; */ -"BYS-7Y-bRz.title" = "Herstel instellingen"; - -/* Class = "NSButtonCell"; title = "Enable Mute DDC command"; ObjectID = "bZq-0d-lJa"; */ -"bZq-0d-lJa.title" = "Schakel DDC commando voor dempen in"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "Bzq-Co-fex"; */ -"Bzq-Co-fex.title" = "Decrease:"; - -/* Class = "NSButtonCell"; title = "Show volume slider in menu"; ObjectID = "c9D-MB-lma"; */ -"c9D-MB-lma.title" = "Show volume slider in menu"; - -/* Class = "NSMenuItem"; title = "Custom"; ObjectID = "Cle-DD-vR7"; */ -"Cle-DD-vR7.title" = "Custom"; - -/* Class = "NSButtonCell"; title = "Website"; ObjectID = "Cln-uW-2dd"; */ -"Cln-uW-2dd.title" = "Website"; - -/* Class = "NSTextFieldCell"; title = "Upon startup or wake:"; ObjectID = "cNt-Cq-vK4"; */ -"cNt-Cq-vK4.title" = "Upon startup or wake:"; - -/* Class = "NSTextFieldCell"; title = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; ObjectID = "Cz1-Mh-llk"; */ -"Cz1-Mh-llk.title" = "⚠️ Waarschuwing! Het wijzigen van sommige instellingen kan er voor zorgen dat het systeem vastloopt of onverwacht gedrag vertoont!"; - -/* Class = "NSTextFieldCell"; title = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; ObjectID = "D4H-hU-FLn"; */ -"D4H-hU-FLn.title" = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; - -/* Class = "NSTextFieldCell"; title = "VCP list"; ObjectID = "D9t-vT-gNJ"; */ -"D9t-vT-gNJ.title" = "VCP list"; - -/* Class = "NSTextFieldCell"; title = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; ObjectID = "Dha-Tm-cDM"; */ -"Dha-Tm-cDM.title" = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; - -/* Class = "NSTextFieldCell"; title = "You can disable smooth transitions for a more direct, immediate control."; ObjectID = "ENt-mP-0yH"; */ -"ENt-mP-0yH.title" = "You can disable smooth transitions for a more direct, immediate control."; - -/* Class = "NSMenuItem"; title = "Minimal"; ObjectID = "Eq3-z9-yIo"; */ -"Eq3-z9-yIo.title" = "Minimaal"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "eue-as-VOR"; */ -"eue-as-VOR.title" = "Increase:"; - -/* Class = "NSTextFieldCell"; title = "Scale mapping curve"; ObjectID = "Eui-5S-JR6"; */ -"Eui-5S-JR6.title" = "Scale mapping curve"; - -/* Class = "NSTextFieldCell"; title = "Mute:"; ObjectID = "EvN-FT-vdZ"; */ -"EvN-FT-vdZ.title" = "Mute:"; - -/* Class = "NSTextFieldCell"; title = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; ObjectID = "f6J-Ui-uMB"; */ -"f6J-Ui-uMB.title" = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; - -/* Class = "NSButtonCell"; title = "Reset Name"; ObjectID = "f9g-8s-gdd"; */ -"f9g-8s-gdd.title" = "Reset Naam"; - -/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "Faf-9L-TXx"; */ -"Faf-9L-TXx.title" = "Automatically check for updates"; - -/* Class = "NSTextFieldCell"; title = "Brightness control:"; ObjectID = "fe9-Ia-t9m"; */ -"fe9-Ia-t9m.title" = "Brightness control:"; - -/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */ -"FER-Ri-4UO.title" = "Volume:"; - -/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */ -"fmZ-HI-Mdc.title" = "Apple and built-in displays already have a brightness slider in Control Center."; - -/* Class = "NSMenuItem"; title = "None"; ObjectID = "FoA-yh-Yx3"; */ -"FoA-yh-Yx3.title" = "Geen"; - -/* Class = "NSMenuItem"; title = "Show as icons"; ObjectID = "fR3-kq-cps"; */ -"fR3-kq-cps.title" = "Show as icons"; - -/* Class = "NSMenuItem"; title = "Show as text"; ObjectID = "fWd-Es-zsy"; */ -"fWd-Es-zsy.title" = "Show as text"; - -/* Class = "NSTextFieldCell"; title = "Invert"; ObjectID = "G5A-y3-eZz"; */ -"G5A-y3-eZz.title" = "Invert"; - -/* Class = "NSTextFieldCell"; title = "Brightness slider for hardware or software controlled displays or TVs."; ObjectID = "gXH-HL-ZOL"; */ -"gXH-HL-ZOL.title" = "Brightness slider for hardware or software controlled displays or TVs."; - -/* Class = "NSTextFieldCell"; title = "Override audio device name:"; ObjectID = "H9X-it-sXs"; */ -"H9X-it-sXs.title" = "Override audio device name:"; - -/* Class = "NSTextFieldCell"; title = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; ObjectID = "hF7-fM-aKr"; */ -"hF7-fM-aKr.title" = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; - -/* Class = "NSButtonCell"; title = "Get current"; ObjectID = "hkC-vq-IcD"; */ -"hkC-vq-IcD.title" = "Get current"; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "HLE-Vp-kcS"; */ -"HLE-Vp-kcS.title" = "Record shortcuts:"; - -/* Class = "NSMenuItem"; title = "Hide"; ObjectID = "HUT-Qc-kuu"; */ -"HUT-Qc-kuu.title" = "Hide"; - -/* Class = "NSTextFieldCell"; title = "Additional controls:"; ObjectID = "i5X-M5-Tf5"; */ -"i5X-M5-Tf5.title" = "Additional controls:"; - -/* Class = "NSTextFieldCell"; title = "Brightness"; ObjectID = "IJB-mO-e8I"; */ -"IJB-mO-e8I.title" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable smooth brightness transitions"; ObjectID = "IK4-u5-qjf"; */ -"IK4-u5-qjf.title" = "Enable smooth brightness transitions"; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale for volume"; ObjectID = "J3L-MW-iJL"; */ -"J3L-MW-iJL.title" = "Use fine OSD scale for volume"; - -/* Class = "NSButtonCell"; title = "Start at Login"; ObjectID = "j72-NF-zsW"; */ -"j72-NF-zsW.title" = "Start bij Inloggen"; - -/* Class = "NSButtonCell"; title = "Change for all screens"; ObjectID = "JC3-pb-XnR"; */ -"JC3-pb-XnR.title" = "Change for all screens"; - -/* Class = "NSTextFieldCell"; title = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; ObjectID = "Jx2-gO-nq9"; */ -"Jx2-gO-nq9.title" = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; - -/* Class = "NSButtonCell"; title = "Apply last saved values to the display"; ObjectID = "K0S-zN-M4k"; */ -"K0S-zN-M4k.title" = "Apply last saved values to the display"; - -/* Class = "NSButtonCell"; title = "Enable for Apple branded and built-in displays as well"; ObjectID = "K6A-4z-1aQ"; */ -"K6A-4z-1aQ.title" = "Enable for Apple branded and built-in displays as well"; - -/* Class = "NSTextFieldCell"; title = "Don't use software dimming as fallback if no hardware control is available."; ObjectID = "kgh-b4-gmO"; */ -"kgh-b4-gmO.title" = "Don't use software dimming as fallback if no hardware control is available."; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "kqJ-jQ-b7U"; */ -"kqJ-jQ-b7U.title" = "Record shortcuts:"; - -/* Class = "NSTextFieldCell"; title = "Brightness and contrast control:"; ObjectID = "LO4-4k-gxY"; */ -"LO4-4k-gxY.title" = "Brightness and contrast control:"; - -/* Class = "NSTextFieldCell"; title = "Display type:"; ObjectID = "lSJ-6w-KJ2"; */ -"lSJ-6w-KJ2.title" = "Beeldscherm type:"; - -/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "ltL-gR-K3Z"; */ -"ltL-gR-K3Z.title" = "Screen to control:"; - -/* Class = "NSButtonCell"; title = "Enable slider snapping"; ObjectID = "MlU-hl-d46"; */ -"MlU-hl-d46.title" = "Enable slider snapping"; - -/* Class = "NSMenuItem"; title = "Always show in the menu bar"; ObjectID = "MM0-Lf-VgF"; */ -"MM0-Lf-VgF.title" = "Always show in the menu bar"; - -/* Class = "NSButtonCell"; title = "Use window focus to determine which display to control"; ObjectID = "mMG-Ac-gdB"; */ -"mMG-Ac-gdB.title" = "Use window focus to determine which display to control"; - -/* Class = "NSTextFieldCell"; title = "Contrast:"; ObjectID = "MMk-S2-yJN"; */ -"MMk-S2-yJN.title" = "Contrast:"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "mue-fa-8z6"; */ -"mue-fa-8z6.title" = "Increase:"; - -/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */ -"MWo-6I-s9L.title" = "Show brightness slider in menu"; - -/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */ -"O8o-hI-8eR.title" = "Separate scales for combined hardware & software dimming"; - -/* Class = "NSButtonCell"; title = "Use audio device name to determine which display to control"; ObjectID = "OAa-B4-8r3"; */ -"OAa-B4-8r3.title" = "Use audio device name to determine which display to control"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "OG9-iA-jK1"; */ -"OG9-iA-jK1.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "oHf-Gh-68c"; */ -"oHf-Gh-68c.title" = "Disable keyboard"; - -/* Class = "NSTextFieldCell"; title = "Application:"; ObjectID = "okD-DG-pYa"; */ -"okD-DG-pYa.title" = "Applicatie:"; - -/* Class = "NSMenuItem"; title = "Standard keyboard brightness keys"; ObjectID = "Oke-bW-cb1"; */ -"Oke-bW-cb1.title" = "Standard keyboard brightness keys"; - -/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */ -"Orv-yj-Nad.title" = "count:"; - -/* Class = "NSTextFieldCell"; title = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; ObjectID = "pa0-Hz-ace"; */ -"pa0-Hz-ace.title" = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; - -/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */ -"PaK-1f-DsW.title" = "Besturingsmethode:"; - -/* Class = "NSButtonCell"; title = "Longer delay during DDC read operations"; ObjectID = "pF5-Sw-7BR"; */ -"pF5-Sw-7BR.title" = "Langere vertraging tijdens DDC-leesbewerkingen"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only."; ObjectID = "POy-35-bh0"; */ -"POy-35-bh0.title" = "For hardware (DDC) controlled displays only."; - -/* Class = "NSTextFieldCell"; title = "DDC max"; ObjectID = "psF-vX-AFB"; */ -"psF-vX-AFB.title" = "DDC max"; - -/* Class = "NSButtonCell"; title = "Show sliders only for the display currently showing the menu"; ObjectID = "PvP-TV-OmT"; */ -"PvP-TV-OmT.title" = "Show sliders only for the display currently showing the menu"; - -/* Class = "NSTextFieldCell"; title = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; ObjectID = "PyY-p9-3NP"; */ -"PyY-p9-3NP.title" = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "QDG-SA-mRX"; */ -"QDG-SA-mRX.title" = "Both standard and custom shortcuts"; - -/* Class = "NSButtonCell"; title = "Quit appliation"; ObjectID = "qlb-wH-qr4"; */ -"qlb-wH-qr4.title" = "Quit appliation"; - -/* Class = "NSButtonCell"; title = "Show contrast slider in menu"; ObjectID = "qO0-dB-yUs"; */ -"qO0-dB-yUs.title" = "Show contrast slider in menu"; - -/* Class = "NSTextFieldCell"; title = "Volume control (DDC only):"; ObjectID = "qoh-Gn-f11"; */ -"qoh-Gn-f11.title" = "Volume control (DDC only):"; - -/* Class = "NSTextFieldCell"; title = "Show percentage next to slider for more precision."; ObjectID = "qXy-CL-Wf1"; */ -"qXy-CL-Wf1.title" = "Show percentage next to slider for more precision."; - -/* Class = "NSButtonCell"; title = "Combine hardware and software dimming"; ObjectID = "r76-Zc-x09"; */ -"r76-Zc-x09.title" = "Combine hardware and software dimming"; - -/* Class = "NSTextFieldCell"; title = "Advanced:"; ObjectID = "r7i-oG-Ab6"; */ -"r7i-oG-Ab6.title" = "Geavanceerd:"; - -/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "Riq-uM-bTs"; */ -"Riq-uM-bTs.title" = "Normaal"; - -/* Class = "NSButton"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "RkH-7d-KvR"; */ -"RkH-7d-KvR.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Show advanced settings"; ObjectID = "sAR-sh-y8e"; */ -"sAR-sh-y8e.title" = "Show advanced settings"; - -/* Class = "NSTextFieldCell"; title = "General menu items style:"; ObjectID = "thh-DG-ecH"; */ -"thh-DG-ecH.title" = "General menu items style:"; - -/* Class = "NSTextFieldCell"; title = "@the0neyouseek\n@JoniVR\n@waydabber"; ObjectID = "TKd-J8-Iyk"; */ -"TKd-J8-Iyk.title" = "@the0neyouseek\n@JoniVR\n@waydabber"; - -/* Class = "NSTextFieldCell"; title = "Menu Icon:"; ObjectID = "u6s-Pb-BCG"; */ -"u6s-Pb-BCG.title" = "Menu Icon:"; - -/* Class = "NSTextFieldCell"; title = "Works if an audio device is selected with no native volume control."; ObjectID = "uF5-a9-Ngz"; */ -"uF5-a9-Ngz.title" = "Works if an audio device is selected with no native volume control."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "uJS-s3-Zpi"; */ -"uJS-s3-Zpi.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable keyboard control for display"; ObjectID = "UqR-WE-jHl"; */ -"UqR-WE-jHl.title" = "Toetsenbordbediening inschakelen voor beeldscherm"; - -/* Class = "NSTextFieldCell"; title = "Contrast (DDC)"; ObjectID = "urd-Rh-aiL"; */ -"urd-Rh-aiL.title" = "Contrast"; - -/* Class = "NSButtonCell"; title = "Do not use alternative brightness keys"; ObjectID = "vd2-Lk-neX"; */ -"vd2-Lk-neX.title" = "Do not use alternative brightness keys"; - -/* Class = "NSMenuItem"; title = "Heavy"; ObjectID = "vik-vN-bJe"; */ -"vik-vN-bJe.title" = "Zwaar"; - -/* Class = "NSTextFieldCell"; title = "Multiple displays:"; ObjectID = "vri-pv-tJ4"; */ -"vri-pv-tJ4.title" = "Multiple displays:"; - -/* Class = "NSTextFieldCell"; title = "DDC read polling mode:"; ObjectID = "vwm-hY-on5"; */ -"vwm-hY-on5.title" = "DDC peiling modus:"; - -/* Class = "NSTextFieldCell"; title = "General options:"; ObjectID = "W58-ch-j69"; */ -"W58-ch-j69.title" = "General options:"; - -/* Class = "NSTextFieldCell"; title = "Useful when a display tends to reset its settings during sleep."; ObjectID = "w8B-x6-sq5"; */ -"w8B-x6-sq5.title" = "Useful when a display tends to reset its settings during sleep."; - -/* Class = "NSTextFieldCell"; title = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; ObjectID = "wjv-tq-iUx"; */ -"wjv-tq-iUx.title" = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; - -/* Class = "NSTextFieldCell"; title = "Display advanced settings and additional information in Preferences."; ObjectID = "X6w-Ee-9Jq"; */ -"X6w-Ee-9Jq.title" = "Display advanced settings and additional information in Preferences."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "xDF-IA-bBh"; */ -"xDF-IA-bBh.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Update settings from the display. May not work with some hardware."; ObjectID = "xjq-hs-wWB"; */ -"xjq-hs-wWB.title" = "Update settings from the display. May not work with some hardware."; - -/* Class = "NSMenuItem"; title = "Only if at least one slider is present"; ObjectID = "xLa-PN-rsq"; */ -"xLa-PN-rsq.title" = "Only if at least one slider is present"; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "xQJ-aJ-VhH"; */ -"xQJ-aJ-VhH.title" = "Both standard and custom shortcuts"; - -/* Class = "NSTextFieldCell"; title = "Works best with various syncing and 'control all' keyboard settings enabled."; ObjectID = "XU4-Bn-bwH"; */ -"XU4-Bn-bwH.title" = "Works best with various syncing and 'control all' keyboard settings enabled."; - -/* Class = "NSTextFieldCell"; title = "Available"; ObjectID = "yBJ-5d-I7e"; */ -"yBJ-5d-I7e.title" = "Available"; - -/* Class = "NSTextFieldCell"; title = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; ObjectID = "YHZ-VL-QJ3"; */ -"YHZ-VL-QJ3.title" = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; - -/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */ -"yn8-Nd-o89.title" = "Assume last saved settings are valid (recommended)"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "yQh-Ve-WEE"; */ -"yQh-Ve-WEE.title" = "Decrease:"; - -/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "YqZ-LS-YvR"; */ -"YqZ-LS-YvR.title" = "Identificatie:"; - -/* Class = "NSButtonCell"; title = "Use hardware DDC control"; ObjectID = "ZdU-gV-V05"; */ -"ZdU-gV-V05.title" = "Gebruik hardwarematige DDC-besturing"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "zHa-xo-XPW"; */ -"zHa-xo-XPW.title" = "Disable keyboard"; - -/* Class = "NSButtonCell"; title = "Donate"; ObjectID = "ZKk-ve-rS4"; */ -"ZKk-ve-rS4.title" = "Doneer"; - -/* Class = "NSButtonCell"; title = "Show percentages"; ObjectID = "ZUu-MR-XwA"; */ -"ZUu-MR-XwA.title" = "Show percentages"; - -/* Class = "NSTextFieldCell"; title = "Combined dimming switchover point:"; ObjectID = "zv8-pZ-OPy"; */ -"zv8-pZ-OPy.title" = "Combined dimming switchover point:"; diff --git a/MonitorControl/UI/pl.lproj/Localizable.strings b/MonitorControl/UI/pl.lproj/Localizable.strings deleted file mode 100644 index beb40358..00000000 --- a/MonitorControl/UI/pl.lproj/Localizable.strings +++ /dev/null @@ -1,136 +0,0 @@ -/* Shown in the main prefs window */ -"About" = "Informacje"; - -/* Shown in the main prefs window */ -"App menu" = "App menu"; - -/* Apple Silicon designation (shown after the version number in Preferences) */ -"Apple Silicon" = "Apple Silicon"; - -/* Shown in the alert dialog */ -"Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure." = "Czy na pewno chcesz ustawić większe opóźnienie? Może to skutkować zawieszeniem systemu i koniecznością restartu. Uruchamianie programu podczas logowania zostanie wyłączone."; - -/* Shown in the alert dialog */ -"Are you sure you want to reset all preferences?" = "Czy na pewno chcesz przywrócić wszystkie ustawienia do stanu początkowego?"; - -/* Sown in menu */ -"Brightness" = "Jasność"; - -/* Build */ -"Build" = "Kompilacja"; - -/* Shown in the Display Preferences */ -"Built-in Display" = "Wbudowany Wyświetlacz"; - -/* Shown in menu */ -"Check for updates..." = "Check for updates..."; - -/* Shown in menu */ -"Contrast" = "Kontrast"; - -/* Version */ -"Copyright Ⓒ MonitorControl, " = "Copyright Ⓒ MonitorControl, "; - -/* Shown in the main prefs window */ -"Displays" = "Wyświetlacze"; - -/* Shown in the alert dialog */ -"Enable Longer Delay?" = "Włączyć dłuższe opóźnienie?"; - -/* Shown in the Display Preferences */ -"External Display" = "Zewnętrzny Wyświetlacz"; - -/* Shown in the main prefs window */ -"General" = "Ogólne"; - -/* Shown in the Display Preferences */ -"Hardware (Apple)" = "Hardware (Apple)"; - -/* Shown in the Display Preferences */ -"Hardware (DDC)" = "Hardware (DDC)"; - -/* Shown in the alert dialog */ -"Incompatible previous version" = "Incompatible previous version"; - -/* Intel designation (shown after the version number in Preferences) */ -"Intel" = "Intel"; - -/* Shown in the main prefs window */ -"Keyboard" = "Keyboard"; - -/* Shown in the alert dialog */ -"No" = "Nie"; - -/* Shown in the Display Preferences */ -"No Control" = "No Control"; - -/* Shown in the Display Preferences */ -"Other Display" = "Inny Wyświetlacz"; - -/* Shown in the alert dialog */ -"Preferences for an incompatible previous app version detected. Default preferences are reloaded." = "Preferences for an incompatible previous app version detected. Default preferences are reloaded."; - -/* Shown in menu */ -"Preferences..." = "Preferences..."; - -/* Shown in menu */ -"Quit" = "Quit"; - -/* Shown in the alert dialog */ -"Reset Preferences?" = "Zresetować Preferencje?"; - -/* Shown in the alert dialog */ -"Safe Mode Activated" = "Safe Mode Activated"; - -/* Shown in the alert dialog */ -"Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked." = "Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked."; - -/* Shown in the alert dialog */ -"Shortcuts not available" = "Skróty klawiszowe niedostępne"; - -/* Shown in the Display Preferences */ -"Software (Gamma)" = "Software (Gamma)"; - -/* Shown in the Display Preferences */ -"Software (Gamma, Forced)" = "Software (Gamma, Forced)"; - -/* Shown in the Display Preferences */ -"Software (Shade)" = "Software (Shade)"; - -/* Shown in the Display Preferences */ -"This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display." = "This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display."; - -/* Shown in the Display Preferences */ -"This display has an unspecified control status." = "This display has an unspecified control status."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control but the current settings allow for software control only." = "This display is reported to support hardware DDC control but the current settings allow for software control only."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control." = "This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control."; - -/* Shown in the Display Preferences */ -"This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well." = "This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well."; - -/* Shown in the Display Preferences */ -"This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode." = "This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode."; - -/* Unknown display name - Unknown model - Unknown vendor */ -"Unknown" = "Nieznany"; - -/* Version */ -"Version" = "Wersja"; - -/* Shown in the Display Preferences */ -"Virtual Display" = "Wirtualny Wyświetlacz"; - -/* Shown in menu */ -"Volume" = "Głośność"; - -/* Shown in the alert dialog */ -"Yes" = "Tak"; - -/* Shown in the alert dialog */ -"You need to enable MonitorControl in System Preferences > Security and Privacy > Accessibility for the keyboard shortcuts to work" = "Musisz włączyć MonitorControl w Preferencjach systemowych > Ochrona i prywatność > Dostępność, aby skróty klawiszowe mogły działać"; diff --git a/MonitorControl/UI/pl.lproj/Main.strings b/MonitorControl/UI/pl.lproj/Main.strings deleted file mode 100644 index 65678127..00000000 --- a/MonitorControl/UI/pl.lproj/Main.strings +++ /dev/null @@ -1,401 +0,0 @@ -/* Class = "NSButtonCell"; title = "Sync brightness changes from Built-in and Apple displays"; ObjectID = "0ca-DG-AgB"; */ -"0ca-DG-AgB.title" = "Sync brightness changes from Built-in and Apple displays"; - -/* Class = "NSButtonCell"; title = "Attempt to read display settings"; ObjectID = "0qp-fq-8MI"; */ -"0qp-fq-8MI.title" = "Attempt to read display settings"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl"; ObjectID = "1PJ-14-Bvn"; */ -"1PJ-14-Bvn.title" = "MonitorControl"; - -/* Class = "NSMenuItem"; title = "Standard keyboard volume and mute keys"; ObjectID = "1sy-Kd-WL5"; */ -"1sy-Kd-WL5.title" = "Standard keyboard volume and mute keys"; - -/* Class = "NSButtonCell"; title = "Change volume for all screens"; ObjectID = "1XT-3S-UuD"; */ -"1XT-3S-UuD.title" = "Change volume for all screens"; - -/* Class = "NSTextFieldCell"; title = "DDC min"; ObjectID = "1zE-fg-xEm"; */ -"1zE-fg-xEm.title" = "DDC min"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "4CG-0I-anB"; */ -"4CG-0I-anB.title" = "Custom keyboard shortcuts"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; ObjectID = "4dX-o1-xAc"; */ -"4dX-o1-xAc.title" = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; - -/* Class = "NSButtonCell"; title = "Show separate controls for each display in menu"; ObjectID = "4t2-Rv-njr"; */ -"4t2-Rv-njr.title" = "Show separate controls for each display in menu"; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "567-le-fLg"; */ -"567-le-fLg.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Reset Preferences"; ObjectID = "5yT-5F-X5R"; */ -"5yT-5F-X5R.title" = "Reset Preferences"; - -/* Class = "NSMenuItem"; title = "Always hide"; ObjectID = "6mo-7S-oOO"; */ -"6mo-7S-oOO.title" = "Always hide"; - -/* Class = "NSTextFieldCell"; title = "Slider behavior:"; ObjectID = "75n-7M-1mS"; */ -"75n-7M-1mS.title" = "Slider behavior:"; - -/* Class = "NSButtonCell"; title = "Use combined slider for all displays"; ObjectID = "7rn-Lu-fcl"; */ -"7rn-Lu-fcl.title" = "Use combined slider for all displays"; - -/* Class = "NSButtonCell"; title = "Show slider tick marks"; ObjectID = "7zf-m1-gJO"; */ -"7zf-m1-gJO.title" = "Show slider tick marks"; - -/* Class = "NSTextFieldCell"; title = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; ObjectID = "8Gx-Ya-zhp"; */ -"8Gx-Ya-zhp.title" = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale"; ObjectID = "8Q8-57-xnT"; */ -"8Q8-57-xnT.title" = "Use fine OSD scale"; - -/* Class = "NSButtonCell"; title = "Special thanks to our contributors!"; ObjectID = "95V-M4-2l5"; */ -"95V-M4-2l5.title" = "Specjalne podziękowania naszym współtwórcom!"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "9eC-PD-FHl"; */ -"9eC-PD-FHl.title" = "Custom keyboard shortcuts"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "9H1-0z-xsx"; */ -"9H1-0z-xsx.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; ObjectID = "A8P-vn-DEJ"; */ -"A8P-vn-DEJ.title" = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; - -/* Class = "NSButtonCell"; title = "Disable software dimming as fallback"; ObjectID = "afB-Xx-Lta"; */ -"afB-Xx-Lta.title" = "Disable software dimming as fallback"; - -/* Class = "NSTextFieldCell"; title = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; ObjectID = "an7-Aj-3fZ"; */ -"an7-Aj-3fZ.title" = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; - -/* Class = "NSTextFieldCell"; title = "Brightness:"; ObjectID = "Bhb-6l-uPQ"; */ -"Bhb-6l-uPQ.title" = "Brightness:"; - -/* Class = "NSTextFieldCell"; title = "(Gamma->DDC)"; ObjectID = "Bid-UL-blc"; */ -"Bid-UL-blc.title" = "(Gamma->DDC)"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only. Results may vary."; ObjectID = "bIe-6O-xEH"; */ -"bIe-6O-xEH.title" = "For hardware (DDC) controlled displays only. Results may vary."; - -/* Class = "NSButtonCell"; title = "Disable macOS volume OSD"; ObjectID = "bkM-Px-U3b"; */ -"bkM-Px-U3b.title" = "Wyłącz OSD głośności macOS"; - -/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "bP4-GJ-vhJ"; */ -"bP4-GJ-vhJ.title" = "OSD scale:"; - -/* Class = "NSButtonCell"; title = "Reset settings"; ObjectID = "BYS-7Y-bRz"; */ -"BYS-7Y-bRz.title" = "Zresetuj ustawienia"; - -/* Class = "NSButtonCell"; title = "Enable Mute DDC command"; ObjectID = "bZq-0d-lJa"; */ -"bZq-0d-lJa.title" = "Uruchom komendę Wyciszenia DDC"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "Bzq-Co-fex"; */ -"Bzq-Co-fex.title" = "Decrease:"; - -/* Class = "NSButtonCell"; title = "Show volume slider in menu"; ObjectID = "c9D-MB-lma"; */ -"c9D-MB-lma.title" = "Show volume slider in menu"; - -/* Class = "NSMenuItem"; title = "Custom"; ObjectID = "Cle-DD-vR7"; */ -"Cle-DD-vR7.title" = "Niestandardowy"; - -/* Class = "NSButtonCell"; title = "Website"; ObjectID = "Cln-uW-2dd"; */ -"Cln-uW-2dd.title" = "Strona"; - -/* Class = "NSTextFieldCell"; title = "Upon startup or wake:"; ObjectID = "cNt-Cq-vK4"; */ -"cNt-Cq-vK4.title" = "Upon startup or wake:"; - -/* Class = "NSTextFieldCell"; title = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; ObjectID = "Cz1-Mh-llk"; */ -"Cz1-Mh-llk.title" = "⚠️ Uwaga! Zmiana niektórych z tych ustawień może doprowadzić do zawieszeń systemu bądź też innych nieprzewidzianych zachowań!"; - -/* Class = "NSTextFieldCell"; title = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; ObjectID = "D4H-hU-FLn"; */ -"D4H-hU-FLn.title" = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; - -/* Class = "NSTextFieldCell"; title = "VCP list"; ObjectID = "D9t-vT-gNJ"; */ -"D9t-vT-gNJ.title" = "VCP list"; - -/* Class = "NSTextFieldCell"; title = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; ObjectID = "Dha-Tm-cDM"; */ -"Dha-Tm-cDM.title" = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; - -/* Class = "NSTextFieldCell"; title = "You can disable smooth transitions for a more direct, immediate control."; ObjectID = "ENt-mP-0yH"; */ -"ENt-mP-0yH.title" = "You can disable smooth transitions for a more direct, immediate control."; - -/* Class = "NSMenuItem"; title = "Minimal"; ObjectID = "Eq3-z9-yIo"; */ -"Eq3-z9-yIo.title" = "Minimalny"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "eue-as-VOR"; */ -"eue-as-VOR.title" = "Increase:"; - -/* Class = "NSTextFieldCell"; title = "Scale mapping curve"; ObjectID = "Eui-5S-JR6"; */ -"Eui-5S-JR6.title" = "Scale mapping curve"; - -/* Class = "NSTextFieldCell"; title = "Mute:"; ObjectID = "EvN-FT-vdZ"; */ -"EvN-FT-vdZ.title" = "Mute:"; - -/* Class = "NSTextFieldCell"; title = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; ObjectID = "f6J-Ui-uMB"; */ -"f6J-Ui-uMB.title" = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; - -/* Class = "NSButtonCell"; title = "Reset Name"; ObjectID = "f9g-8s-gdd"; */ -"f9g-8s-gdd.title" = "Zresetuj Nazwę"; - -/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "Faf-9L-TXx"; */ -"Faf-9L-TXx.title" = "Automatically check for updates"; - -/* Class = "NSTextFieldCell"; title = "Brightness control:"; ObjectID = "fe9-Ia-t9m"; */ -"fe9-Ia-t9m.title" = "Brightness control:"; - -/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */ -"FER-Ri-4UO.title" = "Volume:"; - -/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */ -"fmZ-HI-Mdc.title" = "Apple and built-in displays already have a brightness slider in Control Center."; - -/* Class = "NSMenuItem"; title = "None"; ObjectID = "FoA-yh-Yx3"; */ -"FoA-yh-Yx3.title" = "Nikt"; - -/* Class = "NSMenuItem"; title = "Show as icons"; ObjectID = "fR3-kq-cps"; */ -"fR3-kq-cps.title" = "Show as icons"; - -/* Class = "NSMenuItem"; title = "Show as text"; ObjectID = "fWd-Es-zsy"; */ -"fWd-Es-zsy.title" = "Show as text"; - -/* Class = "NSTextFieldCell"; title = "Invert"; ObjectID = "G5A-y3-eZz"; */ -"G5A-y3-eZz.title" = "Invert"; - -/* Class = "NSTextFieldCell"; title = "Brightness slider for hardware or software controlled displays or TVs."; ObjectID = "gXH-HL-ZOL"; */ -"gXH-HL-ZOL.title" = "Brightness slider for hardware or software controlled displays or TVs."; - -/* Class = "NSTextFieldCell"; title = "Override audio device name:"; ObjectID = "H9X-it-sXs"; */ -"H9X-it-sXs.title" = "Override audio device name:"; - -/* Class = "NSTextFieldCell"; title = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; ObjectID = "hF7-fM-aKr"; */ -"hF7-fM-aKr.title" = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; - -/* Class = "NSButtonCell"; title = "Get current"; ObjectID = "hkC-vq-IcD"; */ -"hkC-vq-IcD.title" = "Get current"; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "HLE-Vp-kcS"; */ -"HLE-Vp-kcS.title" = "Record shortcuts:"; - -/* Class = "NSMenuItem"; title = "Hide"; ObjectID = "HUT-Qc-kuu"; */ -"HUT-Qc-kuu.title" = "Hide"; - -/* Class = "NSTextFieldCell"; title = "Additional controls:"; ObjectID = "i5X-M5-Tf5"; */ -"i5X-M5-Tf5.title" = "Additional controls:"; - -/* Class = "NSTextFieldCell"; title = "Brightness"; ObjectID = "IJB-mO-e8I"; */ -"IJB-mO-e8I.title" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable smooth brightness transitions"; ObjectID = "IK4-u5-qjf"; */ -"IK4-u5-qjf.title" = "Enable smooth brightness transitions"; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale for volume"; ObjectID = "J3L-MW-iJL"; */ -"J3L-MW-iJL.title" = "Use fine OSD scale for volume"; - -/* Class = "NSButtonCell"; title = "Start at Login"; ObjectID = "j72-NF-zsW"; */ -"j72-NF-zsW.title" = "Uruchamiaj MonitorContol podczas logowania"; - -/* Class = "NSButtonCell"; title = "Change for all screens"; ObjectID = "JC3-pb-XnR"; */ -"JC3-pb-XnR.title" = "Change for all screens"; - -/* Class = "NSTextFieldCell"; title = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; ObjectID = "Jx2-gO-nq9"; */ -"Jx2-gO-nq9.title" = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; - -/* Class = "NSButtonCell"; title = "Apply last saved values to the display"; ObjectID = "K0S-zN-M4k"; */ -"K0S-zN-M4k.title" = "Apply last saved values to the display"; - -/* Class = "NSButtonCell"; title = "Enable for Apple branded and built-in displays as well"; ObjectID = "K6A-4z-1aQ"; */ -"K6A-4z-1aQ.title" = "Enable for Apple branded and built-in displays as well"; - -/* Class = "NSTextFieldCell"; title = "Don't use software dimming as fallback if no hardware control is available."; ObjectID = "kgh-b4-gmO"; */ -"kgh-b4-gmO.title" = "Don't use software dimming as fallback if no hardware control is available."; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "kqJ-jQ-b7U"; */ -"kqJ-jQ-b7U.title" = "Record shortcuts:"; - -/* Class = "NSTextFieldCell"; title = "Brightness and contrast control:"; ObjectID = "LO4-4k-gxY"; */ -"LO4-4k-gxY.title" = "Brightness and contrast control:"; - -/* Class = "NSTextFieldCell"; title = "Display type:"; ObjectID = "lSJ-6w-KJ2"; */ -"lSJ-6w-KJ2.title" = "Rodzaj wyświetlacza:"; - -/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "ltL-gR-K3Z"; */ -"ltL-gR-K3Z.title" = "Screen to control:"; - -/* Class = "NSButtonCell"; title = "Enable slider snapping"; ObjectID = "MlU-hl-d46"; */ -"MlU-hl-d46.title" = "Enable slider snapping"; - -/* Class = "NSMenuItem"; title = "Always show in the menu bar"; ObjectID = "MM0-Lf-VgF"; */ -"MM0-Lf-VgF.title" = "Always show in the menu bar"; - -/* Class = "NSButtonCell"; title = "Use window focus to determine which display to control"; ObjectID = "mMG-Ac-gdB"; */ -"mMG-Ac-gdB.title" = "Use window focus to determine which display to control"; - -/* Class = "NSTextFieldCell"; title = "Contrast:"; ObjectID = "MMk-S2-yJN"; */ -"MMk-S2-yJN.title" = "Contrast:"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "mue-fa-8z6"; */ -"mue-fa-8z6.title" = "Increase:"; - -/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */ -"MWo-6I-s9L.title" = "Show brightness slider in menu"; - -/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */ -"O8o-hI-8eR.title" = "Separate scales for combined hardware & software dimming"; - -/* Class = "NSButtonCell"; title = "Use audio device name to determine which display to control"; ObjectID = "OAa-B4-8r3"; */ -"OAa-B4-8r3.title" = "Use audio device name to determine which display to control"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "OG9-iA-jK1"; */ -"OG9-iA-jK1.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "oHf-Gh-68c"; */ -"oHf-Gh-68c.title" = "Disable keyboard"; - -/* Class = "NSTextFieldCell"; title = "Application:"; ObjectID = "okD-DG-pYa"; */ -"okD-DG-pYa.title" = "Aplikacja:"; - -/* Class = "NSMenuItem"; title = "Standard keyboard brightness keys"; ObjectID = "Oke-bW-cb1"; */ -"Oke-bW-cb1.title" = "Standard keyboard brightness keys"; - -/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */ -"Orv-yj-Nad.title" = "count:"; - -/* Class = "NSTextFieldCell"; title = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; ObjectID = "pa0-Hz-ace"; */ -"pa0-Hz-ace.title" = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; - -/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */ -"PaK-1f-DsW.title" = "Metoda kontroli:"; - -/* Class = "NSButtonCell"; title = "Longer delay during DDC read operations"; ObjectID = "pF5-Sw-7BR"; */ -"pF5-Sw-7BR.title" = "Dłuższe opóźnienie podczas odczytywania operacji DDC"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only."; ObjectID = "POy-35-bh0"; */ -"POy-35-bh0.title" = "For hardware (DDC) controlled displays only."; - -/* Class = "NSTextFieldCell"; title = "DDC max"; ObjectID = "psF-vX-AFB"; */ -"psF-vX-AFB.title" = "DDC max"; - -/* Class = "NSButtonCell"; title = "Show sliders only for the display currently showing the menu"; ObjectID = "PvP-TV-OmT"; */ -"PvP-TV-OmT.title" = "Show sliders only for the display currently showing the menu"; - -/* Class = "NSTextFieldCell"; title = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; ObjectID = "PyY-p9-3NP"; */ -"PyY-p9-3NP.title" = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "QDG-SA-mRX"; */ -"QDG-SA-mRX.title" = "Both standard and custom shortcuts"; - -/* Class = "NSButtonCell"; title = "Quit appliation"; ObjectID = "qlb-wH-qr4"; */ -"qlb-wH-qr4.title" = "Quit appliation"; - -/* Class = "NSButtonCell"; title = "Show contrast slider in menu"; ObjectID = "qO0-dB-yUs"; */ -"qO0-dB-yUs.title" = "Show contrast slider in menu"; - -/* Class = "NSTextFieldCell"; title = "Volume control (DDC only):"; ObjectID = "qoh-Gn-f11"; */ -"qoh-Gn-f11.title" = "Volume control (DDC only):"; - -/* Class = "NSTextFieldCell"; title = "Show percentage next to slider for more precision."; ObjectID = "qXy-CL-Wf1"; */ -"qXy-CL-Wf1.title" = "Show percentage next to slider for more precision."; - -/* Class = "NSButtonCell"; title = "Combine hardware and software dimming"; ObjectID = "r76-Zc-x09"; */ -"r76-Zc-x09.title" = "Combine hardware and software dimming"; - -/* Class = "NSTextFieldCell"; title = "Advanced:"; ObjectID = "r7i-oG-Ab6"; */ -"r7i-oG-Ab6.title" = "Zaawansowane:"; - -/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "Riq-uM-bTs"; */ -"Riq-uM-bTs.title" = "Normalny"; - -/* Class = "NSButton"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "RkH-7d-KvR"; */ -"RkH-7d-KvR.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Show advanced settings"; ObjectID = "sAR-sh-y8e"; */ -"sAR-sh-y8e.title" = "Show advanced settings"; - -/* Class = "NSTextFieldCell"; title = "General menu items style:"; ObjectID = "thh-DG-ecH"; */ -"thh-DG-ecH.title" = "General menu items style:"; - -/* Class = "NSTextFieldCell"; title = "@the0neyouseek\n@JoniVR\n@waydabber"; ObjectID = "TKd-J8-Iyk"; */ -"TKd-J8-Iyk.title" = "@the0neyouseek\n@reitermarkus\n@JoniVR\n@waydabber"; - -/* Class = "NSTextFieldCell"; title = "Menu Icon:"; ObjectID = "u6s-Pb-BCG"; */ -"u6s-Pb-BCG.title" = "Menu Icon:"; - -/* Class = "NSTextFieldCell"; title = "Works if an audio device is selected with no native volume control."; ObjectID = "uF5-a9-Ngz"; */ -"uF5-a9-Ngz.title" = "Works if an audio device is selected with no native volume control."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "uJS-s3-Zpi"; */ -"uJS-s3-Zpi.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable keyboard control for display"; ObjectID = "UqR-WE-jHl"; */ -"UqR-WE-jHl.title" = "Włącz sterowanie klawiaturą dla tego wyświetlacza"; - -/* Class = "NSTextFieldCell"; title = "Contrast (DDC)"; ObjectID = "urd-Rh-aiL"; */ -"urd-Rh-aiL.title" = "Contrast"; - -/* Class = "NSButtonCell"; title = "Do not use alternative brightness keys"; ObjectID = "vd2-Lk-neX"; */ -"vd2-Lk-neX.title" = "Do not use alternative brightness keys"; - -/* Class = "NSMenuItem"; title = "Heavy"; ObjectID = "vik-vN-bJe"; */ -"vik-vN-bJe.title" = "Ciężki"; - -/* Class = "NSTextFieldCell"; title = "Multiple displays:"; ObjectID = "vri-pv-tJ4"; */ -"vri-pv-tJ4.title" = "Multiple displays:"; - -/* Class = "NSTextFieldCell"; title = "DDC read polling mode:"; ObjectID = "vwm-hY-on5"; */ -"vwm-hY-on5.title" = "Tryb odczytywania zapytań DDC:"; - -/* Class = "NSTextFieldCell"; title = "General options:"; ObjectID = "W58-ch-j69"; */ -"W58-ch-j69.title" = "General options:"; - -/* Class = "NSTextFieldCell"; title = "Useful when a display tends to reset its settings during sleep."; ObjectID = "w8B-x6-sq5"; */ -"w8B-x6-sq5.title" = "Useful when a display tends to reset its settings during sleep."; - -/* Class = "NSTextFieldCell"; title = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; ObjectID = "wjv-tq-iUx"; */ -"wjv-tq-iUx.title" = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; - -/* Class = "NSTextFieldCell"; title = "Display advanced settings and additional information in Preferences."; ObjectID = "X6w-Ee-9Jq"; */ -"X6w-Ee-9Jq.title" = "Display advanced settings and additional information in Preferences."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "xDF-IA-bBh"; */ -"xDF-IA-bBh.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Update settings from the display. May not work with some hardware."; ObjectID = "xjq-hs-wWB"; */ -"xjq-hs-wWB.title" = "Update settings from the display. May not work with some hardware."; - -/* Class = "NSMenuItem"; title = "Only if at least one slider is present"; ObjectID = "xLa-PN-rsq"; */ -"xLa-PN-rsq.title" = "Only if at least one slider is present"; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "xQJ-aJ-VhH"; */ -"xQJ-aJ-VhH.title" = "Both standard and custom shortcuts"; - -/* Class = "NSTextFieldCell"; title = "Works best with various syncing and 'control all' keyboard settings enabled."; ObjectID = "XU4-Bn-bwH"; */ -"XU4-Bn-bwH.title" = "Works best with various syncing and 'control all' keyboard settings enabled."; - -/* Class = "NSTextFieldCell"; title = "Available"; ObjectID = "yBJ-5d-I7e"; */ -"yBJ-5d-I7e.title" = "Available"; - -/* Class = "NSTextFieldCell"; title = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; ObjectID = "YHZ-VL-QJ3"; */ -"YHZ-VL-QJ3.title" = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; - -/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */ -"yn8-Nd-o89.title" = "Assume last saved settings are valid (recommended)"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "yQh-Ve-WEE"; */ -"yQh-Ve-WEE.title" = "Decrease:"; - -/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "YqZ-LS-YvR"; */ -"YqZ-LS-YvR.title" = "Identyfikator:"; - -/* Class = "NSButtonCell"; title = "Use hardware DDC control"; ObjectID = "ZdU-gV-V05"; */ -"ZdU-gV-V05.title" = "Użyj sterowania hardware DDC"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "zHa-xo-XPW"; */ -"zHa-xo-XPW.title" = "Disable keyboard"; - -/* Class = "NSButtonCell"; title = "Donate"; ObjectID = "ZKk-ve-rS4"; */ -"ZKk-ve-rS4.title" = "Darowizna"; - -/* Class = "NSButtonCell"; title = "Show percentages"; ObjectID = "ZUu-MR-XwA"; */ -"ZUu-MR-XwA.title" = "Show percentages"; - -/* Class = "NSTextFieldCell"; title = "Combined dimming switchover point:"; ObjectID = "zv8-pZ-OPy"; */ -"zv8-pZ-OPy.title" = "Combined dimming switchover point:"; diff --git a/MonitorControl/UI/ru.lproj/Localizable.strings b/MonitorControl/UI/ru.lproj/Localizable.strings deleted file mode 100644 index 07176d6b..00000000 --- a/MonitorControl/UI/ru.lproj/Localizable.strings +++ /dev/null @@ -1,136 +0,0 @@ -/* Shown in the main prefs window */ -"About" = "О приложении"; - -/* Shown in the main prefs window */ -"App menu" = "App menu"; - -/* Apple Silicon designation (shown after the version number in Preferences) */ -"Apple Silicon" = "Apple Silicon"; - -/* Shown in the alert dialog */ -"Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure." = "Вы уверены, что хотите включить более длительную задержку? Это может привести к зависанию системы и необходимости перезагрузки. Запуск при входе в систему будет отключен в качестве меры безопасности."; - -/* Shown in the alert dialog */ -"Are you sure you want to reset all preferences?" = "Вы уверены, что хотите сбросить все параметры?"; - -/* Sown in menu */ -"Brightness" = "Яркость"; - -/* Build */ -"Build" = "Сборка"; - -/* Shown in the Display Preferences */ -"Built-in Display" = "Встроенный дисплей"; - -/* Shown in menu */ -"Check for updates..." = "Check for updates..."; - -/* Shown in menu */ -"Contrast" = "Контрастность"; - -/* Version */ -"Copyright Ⓒ MonitorControl, " = "Copyright Ⓒ MonitorControl, "; - -/* Shown in the main prefs window */ -"Displays" = "Дисплеи"; - -/* Shown in the alert dialog */ -"Enable Longer Delay?" = "Включить более длительную задержку?"; - -/* Shown in the Display Preferences */ -"External Display" = "Внешний дисплей"; - -/* Shown in the main prefs window */ -"General" = "Основные"; - -/* Shown in the Display Preferences */ -"Hardware (Apple)" = "Hardware (Apple)"; - -/* Shown in the Display Preferences */ -"Hardware (DDC)" = "Аппаратно (DDC)"; - -/* Shown in the alert dialog */ -"Incompatible previous version" = "Incompatible previous version"; - -/* Intel designation (shown after the version number in Preferences) */ -"Intel" = "Intel"; - -/* Shown in the main prefs window */ -"Keyboard" = "Keyboard"; - -/* Shown in the alert dialog */ -"No" = "Нет"; - -/* Shown in the Display Preferences */ -"No Control" = "No Control"; - -/* Shown in the Display Preferences */ -"Other Display" = "Другой дисплей"; - -/* Shown in the alert dialog */ -"Preferences for an incompatible previous app version detected. Default preferences are reloaded." = "Preferences for an incompatible previous app version detected. Default preferences are reloaded."; - -/* Shown in menu */ -"Preferences..." = "Preferences..."; - -/* Shown in menu */ -"Quit" = "Quit"; - -/* Shown in the alert dialog */ -"Reset Preferences?" = "Сбросить параметры?"; - -/* Shown in the alert dialog */ -"Safe Mode Activated" = "Активирован безопасный режим"; - -/* Shown in the alert dialog */ -"Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked." = "Во время запуска был нажат Shift. MonitorControl запущен в безопасном режиме. Перезагружены параметры по умолчанию, DDC-чтение заблокировано."; - -/* Shown in the alert dialog */ -"Shortcuts not available" = "Сочетания клавиш недоступны"; - -/* Shown in the Display Preferences */ -"Software (Gamma)" = "Software (Gamma)"; - -/* Shown in the Display Preferences */ -"Software (Gamma, Forced)" = "Software (Gamma, Forced)"; - -/* Shown in the Display Preferences */ -"Software (Shade)" = "Software (Shade)"; - -/* Shown in the Display Preferences */ -"This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display." = "This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display."; - -/* Shown in the Display Preferences */ -"This display has an unspecified control status." = "This display has an unspecified control status."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control but the current settings allow for software control only." = "This display is reported to support hardware DDC control but the current settings allow for software control only."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control." = "This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control."; - -/* Shown in the Display Preferences */ -"This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well." = "This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well."; - -/* Shown in the Display Preferences */ -"This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode." = "This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode."; - -/* Unknown display name - Unknown model - Unknown vendor */ -"Unknown" = "Неизвестный"; - -/* Version */ -"Version" = "Версия"; - -/* Shown in the Display Preferences */ -"Virtual Display" = "Виртуальный дисплей"; - -/* Shown in menu */ -"Volume" = "Громкость"; - -/* Shown in the alert dialog */ -"Yes" = "Да"; - -/* Shown in the alert dialog */ -"You need to enable MonitorControl in System Preferences > Security and Privacy > Accessibility for the keyboard shortcuts to work" = "Вам нужно включить MonitorControl в Системных настройках > Защита и безопасность > Конфиденциальность > Универсальный доступ для работы сочетания клавиш"; diff --git a/MonitorControl/UI/ru.lproj/Main.strings b/MonitorControl/UI/ru.lproj/Main.strings deleted file mode 100644 index be0ecabd..00000000 --- a/MonitorControl/UI/ru.lproj/Main.strings +++ /dev/null @@ -1,401 +0,0 @@ -/* Class = "NSButtonCell"; title = "Sync brightness changes from Built-in and Apple displays"; ObjectID = "0ca-DG-AgB"; */ -"0ca-DG-AgB.title" = "Sync brightness changes from Built-in and Apple displays"; - -/* Class = "NSButtonCell"; title = "Attempt to read display settings"; ObjectID = "0qp-fq-8MI"; */ -"0qp-fq-8MI.title" = "Attempt to read display settings"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl"; ObjectID = "1PJ-14-Bvn"; */ -"1PJ-14-Bvn.title" = "MonitorControl"; - -/* Class = "NSMenuItem"; title = "Standard keyboard volume and mute keys"; ObjectID = "1sy-Kd-WL5"; */ -"1sy-Kd-WL5.title" = "Standard keyboard volume and mute keys"; - -/* Class = "NSButtonCell"; title = "Change volume for all screens"; ObjectID = "1XT-3S-UuD"; */ -"1XT-3S-UuD.title" = "Change volume for all screens"; - -/* Class = "NSTextFieldCell"; title = "DDC min"; ObjectID = "1zE-fg-xEm"; */ -"1zE-fg-xEm.title" = "DDC min"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "4CG-0I-anB"; */ -"4CG-0I-anB.title" = "Custom keyboard shortcuts"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; ObjectID = "4dX-o1-xAc"; */ -"4dX-o1-xAc.title" = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; - -/* Class = "NSButtonCell"; title = "Show separate controls for each display in menu"; ObjectID = "4t2-Rv-njr"; */ -"4t2-Rv-njr.title" = "Show separate controls for each display in menu"; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "567-le-fLg"; */ -"567-le-fLg.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Reset Preferences"; ObjectID = "5yT-5F-X5R"; */ -"5yT-5F-X5R.title" = "Reset Preferences"; - -/* Class = "NSMenuItem"; title = "Always hide"; ObjectID = "6mo-7S-oOO"; */ -"6mo-7S-oOO.title" = "Always hide"; - -/* Class = "NSTextFieldCell"; title = "Slider behavior:"; ObjectID = "75n-7M-1mS"; */ -"75n-7M-1mS.title" = "Slider behavior:"; - -/* Class = "NSButtonCell"; title = "Use combined slider for all displays"; ObjectID = "7rn-Lu-fcl"; */ -"7rn-Lu-fcl.title" = "Use combined slider for all displays"; - -/* Class = "NSButtonCell"; title = "Show slider tick marks"; ObjectID = "7zf-m1-gJO"; */ -"7zf-m1-gJO.title" = "Show slider tick marks"; - -/* Class = "NSTextFieldCell"; title = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; ObjectID = "8Gx-Ya-zhp"; */ -"8Gx-Ya-zhp.title" = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale"; ObjectID = "8Q8-57-xnT"; */ -"8Q8-57-xnT.title" = "Use fine OSD scale"; - -/* Class = "NSButtonCell"; title = "Special thanks to our contributors!"; ObjectID = "95V-M4-2l5"; */ -"95V-M4-2l5.title" = "Особая благодарность нашим контрибьюторам!"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "9eC-PD-FHl"; */ -"9eC-PD-FHl.title" = "Custom keyboard shortcuts"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "9H1-0z-xsx"; */ -"9H1-0z-xsx.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; ObjectID = "A8P-vn-DEJ"; */ -"A8P-vn-DEJ.title" = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; - -/* Class = "NSButtonCell"; title = "Disable software dimming as fallback"; ObjectID = "afB-Xx-Lta"; */ -"afB-Xx-Lta.title" = "Disable software dimming as fallback"; - -/* Class = "NSTextFieldCell"; title = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; ObjectID = "an7-Aj-3fZ"; */ -"an7-Aj-3fZ.title" = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; - -/* Class = "NSTextFieldCell"; title = "Brightness:"; ObjectID = "Bhb-6l-uPQ"; */ -"Bhb-6l-uPQ.title" = "Brightness:"; - -/* Class = "NSTextFieldCell"; title = "(Gamma->DDC)"; ObjectID = "Bid-UL-blc"; */ -"Bid-UL-blc.title" = "(Gamma->DDC)"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only. Results may vary."; ObjectID = "bIe-6O-xEH"; */ -"bIe-6O-xEH.title" = "For hardware (DDC) controlled displays only. Results may vary."; - -/* Class = "NSButtonCell"; title = "Disable macOS volume OSD"; ObjectID = "bkM-Px-U3b"; */ -"bkM-Px-U3b.title" = "Выключить наэкранную индикацию macOS (OSD)"; - -/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "bP4-GJ-vhJ"; */ -"bP4-GJ-vhJ.title" = "OSD scale:"; - -/* Class = "NSButtonCell"; title = "Reset settings"; ObjectID = "BYS-7Y-bRz"; */ -"BYS-7Y-bRz.title" = "Сбросить параметры"; - -/* Class = "NSButtonCell"; title = "Enable Mute DDC command"; ObjectID = "bZq-0d-lJa"; */ -"bZq-0d-lJa.title" = "Включить DDC-команду 'Отключить звук'"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "Bzq-Co-fex"; */ -"Bzq-Co-fex.title" = "Decrease:"; - -/* Class = "NSButtonCell"; title = "Show volume slider in menu"; ObjectID = "c9D-MB-lma"; */ -"c9D-MB-lma.title" = "Show volume slider in menu"; - -/* Class = "NSMenuItem"; title = "Custom"; ObjectID = "Cle-DD-vR7"; */ -"Cle-DD-vR7.title" = "Другое"; - -/* Class = "NSButtonCell"; title = "Website"; ObjectID = "Cln-uW-2dd"; */ -"Cln-uW-2dd.title" = "Веб-сайт"; - -/* Class = "NSTextFieldCell"; title = "Upon startup or wake:"; ObjectID = "cNt-Cq-vK4"; */ -"cNt-Cq-vK4.title" = "Upon startup or wake:"; - -/* Class = "NSTextFieldCell"; title = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; ObjectID = "Cz1-Mh-llk"; */ -"Cz1-Mh-llk.title" = "⚠️ Внимание! Изменение некоторых из этих настроек может привести к зависаниям системы или неожиданному поведению!"; - -/* Class = "NSTextFieldCell"; title = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; ObjectID = "D4H-hU-FLn"; */ -"D4H-hU-FLn.title" = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; - -/* Class = "NSTextFieldCell"; title = "VCP list"; ObjectID = "D9t-vT-gNJ"; */ -"D9t-vT-gNJ.title" = "VCP list"; - -/* Class = "NSTextFieldCell"; title = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; ObjectID = "Dha-Tm-cDM"; */ -"Dha-Tm-cDM.title" = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; - -/* Class = "NSTextFieldCell"; title = "You can disable smooth transitions for a more direct, immediate control."; ObjectID = "ENt-mP-0yH"; */ -"ENt-mP-0yH.title" = "You can disable smooth transitions for a more direct, immediate control."; - -/* Class = "NSMenuItem"; title = "Minimal"; ObjectID = "Eq3-z9-yIo"; */ -"Eq3-z9-yIo.title" = "Редко"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "eue-as-VOR"; */ -"eue-as-VOR.title" = "Increase:"; - -/* Class = "NSTextFieldCell"; title = "Scale mapping curve"; ObjectID = "Eui-5S-JR6"; */ -"Eui-5S-JR6.title" = "Scale mapping curve"; - -/* Class = "NSTextFieldCell"; title = "Mute:"; ObjectID = "EvN-FT-vdZ"; */ -"EvN-FT-vdZ.title" = "Mute:"; - -/* Class = "NSTextFieldCell"; title = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; ObjectID = "f6J-Ui-uMB"; */ -"f6J-Ui-uMB.title" = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; - -/* Class = "NSButtonCell"; title = "Reset Name"; ObjectID = "f9g-8s-gdd"; */ -"f9g-8s-gdd.title" = "Сбросить название"; - -/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "Faf-9L-TXx"; */ -"Faf-9L-TXx.title" = "Automatically check for updates"; - -/* Class = "NSTextFieldCell"; title = "Brightness control:"; ObjectID = "fe9-Ia-t9m"; */ -"fe9-Ia-t9m.title" = "Brightness control:"; - -/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */ -"FER-Ri-4UO.title" = "Volume:"; - -/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */ -"fmZ-HI-Mdc.title" = "Apple and built-in displays already have a brightness slider in Control Center."; - -/* Class = "NSMenuItem"; title = "None"; ObjectID = "FoA-yh-Yx3"; */ -"FoA-yh-Yx3.title" = "Нет"; - -/* Class = "NSMenuItem"; title = "Show as icons"; ObjectID = "fR3-kq-cps"; */ -"fR3-kq-cps.title" = "Show as icons"; - -/* Class = "NSMenuItem"; title = "Show as text"; ObjectID = "fWd-Es-zsy"; */ -"fWd-Es-zsy.title" = "Show as text"; - -/* Class = "NSTextFieldCell"; title = "Invert"; ObjectID = "G5A-y3-eZz"; */ -"G5A-y3-eZz.title" = "Invert"; - -/* Class = "NSTextFieldCell"; title = "Brightness slider for hardware or software controlled displays or TVs."; ObjectID = "gXH-HL-ZOL"; */ -"gXH-HL-ZOL.title" = "Brightness slider for hardware or software controlled displays or TVs."; - -/* Class = "NSTextFieldCell"; title = "Override audio device name:"; ObjectID = "H9X-it-sXs"; */ -"H9X-it-sXs.title" = "Override audio device name:"; - -/* Class = "NSTextFieldCell"; title = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; ObjectID = "hF7-fM-aKr"; */ -"hF7-fM-aKr.title" = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; - -/* Class = "NSButtonCell"; title = "Get current"; ObjectID = "hkC-vq-IcD"; */ -"hkC-vq-IcD.title" = "Get current"; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "HLE-Vp-kcS"; */ -"HLE-Vp-kcS.title" = "Record shortcuts:"; - -/* Class = "NSMenuItem"; title = "Hide"; ObjectID = "HUT-Qc-kuu"; */ -"HUT-Qc-kuu.title" = "Hide"; - -/* Class = "NSTextFieldCell"; title = "Additional controls:"; ObjectID = "i5X-M5-Tf5"; */ -"i5X-M5-Tf5.title" = "Additional controls:"; - -/* Class = "NSTextFieldCell"; title = "Brightness"; ObjectID = "IJB-mO-e8I"; */ -"IJB-mO-e8I.title" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable smooth brightness transitions"; ObjectID = "IK4-u5-qjf"; */ -"IK4-u5-qjf.title" = "Enable smooth brightness transitions"; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale for volume"; ObjectID = "J3L-MW-iJL"; */ -"J3L-MW-iJL.title" = "Use fine OSD scale for volume"; - -/* Class = "NSButtonCell"; title = "Start at Login"; ObjectID = "j72-NF-zsW"; */ -"j72-NF-zsW.title" = "Запуск при входе в систему"; - -/* Class = "NSButtonCell"; title = "Change for all screens"; ObjectID = "JC3-pb-XnR"; */ -"JC3-pb-XnR.title" = "Change for all screens"; - -/* Class = "NSTextFieldCell"; title = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; ObjectID = "Jx2-gO-nq9"; */ -"Jx2-gO-nq9.title" = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; - -/* Class = "NSButtonCell"; title = "Apply last saved values to the display"; ObjectID = "K0S-zN-M4k"; */ -"K0S-zN-M4k.title" = "Apply last saved values to the display"; - -/* Class = "NSButtonCell"; title = "Enable for Apple branded and built-in displays as well"; ObjectID = "K6A-4z-1aQ"; */ -"K6A-4z-1aQ.title" = "Enable for Apple branded and built-in displays as well"; - -/* Class = "NSTextFieldCell"; title = "Don't use software dimming as fallback if no hardware control is available."; ObjectID = "kgh-b4-gmO"; */ -"kgh-b4-gmO.title" = "Don't use software dimming as fallback if no hardware control is available."; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "kqJ-jQ-b7U"; */ -"kqJ-jQ-b7U.title" = "Record shortcuts:"; - -/* Class = "NSTextFieldCell"; title = "Brightness and contrast control:"; ObjectID = "LO4-4k-gxY"; */ -"LO4-4k-gxY.title" = "Brightness and contrast control:"; - -/* Class = "NSTextFieldCell"; title = "Display type:"; ObjectID = "lSJ-6w-KJ2"; */ -"lSJ-6w-KJ2.title" = "Тип дисплея:"; - -/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "ltL-gR-K3Z"; */ -"ltL-gR-K3Z.title" = "Screen to control:"; - -/* Class = "NSButtonCell"; title = "Enable slider snapping"; ObjectID = "MlU-hl-d46"; */ -"MlU-hl-d46.title" = "Enable slider snapping"; - -/* Class = "NSMenuItem"; title = "Always show in the menu bar"; ObjectID = "MM0-Lf-VgF"; */ -"MM0-Lf-VgF.title" = "Always show in the menu bar"; - -/* Class = "NSButtonCell"; title = "Use window focus to determine which display to control"; ObjectID = "mMG-Ac-gdB"; */ -"mMG-Ac-gdB.title" = "Use window focus to determine which display to control"; - -/* Class = "NSTextFieldCell"; title = "Contrast:"; ObjectID = "MMk-S2-yJN"; */ -"MMk-S2-yJN.title" = "Contrast:"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "mue-fa-8z6"; */ -"mue-fa-8z6.title" = "Increase:"; - -/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */ -"MWo-6I-s9L.title" = "Show brightness slider in menu"; - -/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */ -"O8o-hI-8eR.title" = "Separate scales for combined hardware & software dimming"; - -/* Class = "NSButtonCell"; title = "Use audio device name to determine which display to control"; ObjectID = "OAa-B4-8r3"; */ -"OAa-B4-8r3.title" = "Use audio device name to determine which display to control"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "OG9-iA-jK1"; */ -"OG9-iA-jK1.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "oHf-Gh-68c"; */ -"oHf-Gh-68c.title" = "Disable keyboard"; - -/* Class = "NSTextFieldCell"; title = "Application:"; ObjectID = "okD-DG-pYa"; */ -"okD-DG-pYa.title" = "Приложение:"; - -/* Class = "NSMenuItem"; title = "Standard keyboard brightness keys"; ObjectID = "Oke-bW-cb1"; */ -"Oke-bW-cb1.title" = "Standard keyboard brightness keys"; - -/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */ -"Orv-yj-Nad.title" = "count:"; - -/* Class = "NSTextFieldCell"; title = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; ObjectID = "pa0-Hz-ace"; */ -"pa0-Hz-ace.title" = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; - -/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */ -"PaK-1f-DsW.title" = "Метод управления:"; - -/* Class = "NSButtonCell"; title = "Longer delay during DDC read operations"; ObjectID = "pF5-Sw-7BR"; */ -"pF5-Sw-7BR.title" = "Более длительная задержка при выполнении операций считывания данных DDC"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only."; ObjectID = "POy-35-bh0"; */ -"POy-35-bh0.title" = "For hardware (DDC) controlled displays only."; - -/* Class = "NSTextFieldCell"; title = "DDC max"; ObjectID = "psF-vX-AFB"; */ -"psF-vX-AFB.title" = "DDC max"; - -/* Class = "NSButtonCell"; title = "Show sliders only for the display currently showing the menu"; ObjectID = "PvP-TV-OmT"; */ -"PvP-TV-OmT.title" = "Show sliders only for the display currently showing the menu"; - -/* Class = "NSTextFieldCell"; title = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; ObjectID = "PyY-p9-3NP"; */ -"PyY-p9-3NP.title" = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "QDG-SA-mRX"; */ -"QDG-SA-mRX.title" = "Both standard and custom shortcuts"; - -/* Class = "NSButtonCell"; title = "Quit appliation"; ObjectID = "qlb-wH-qr4"; */ -"qlb-wH-qr4.title" = "Quit appliation"; - -/* Class = "NSButtonCell"; title = "Show contrast slider in menu"; ObjectID = "qO0-dB-yUs"; */ -"qO0-dB-yUs.title" = "Show contrast slider in menu"; - -/* Class = "NSTextFieldCell"; title = "Volume control (DDC only):"; ObjectID = "qoh-Gn-f11"; */ -"qoh-Gn-f11.title" = "Volume control (DDC only):"; - -/* Class = "NSTextFieldCell"; title = "Show percentage next to slider for more precision."; ObjectID = "qXy-CL-Wf1"; */ -"qXy-CL-Wf1.title" = "Show percentage next to slider for more precision."; - -/* Class = "NSButtonCell"; title = "Combine hardware and software dimming"; ObjectID = "r76-Zc-x09"; */ -"r76-Zc-x09.title" = "Combine hardware and software dimming"; - -/* Class = "NSTextFieldCell"; title = "Advanced:"; ObjectID = "r7i-oG-Ab6"; */ -"r7i-oG-Ab6.title" = "Расширенные:"; - -/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "Riq-uM-bTs"; */ -"Riq-uM-bTs.title" = "Нормально"; - -/* Class = "NSButton"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "RkH-7d-KvR"; */ -"RkH-7d-KvR.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Show advanced settings"; ObjectID = "sAR-sh-y8e"; */ -"sAR-sh-y8e.title" = "Show advanced settings"; - -/* Class = "NSTextFieldCell"; title = "General menu items style:"; ObjectID = "thh-DG-ecH"; */ -"thh-DG-ecH.title" = "General menu items style:"; - -/* Class = "NSTextFieldCell"; title = "@the0neyouseek\n@JoniVR\n@waydabber"; ObjectID = "TKd-J8-Iyk"; */ -"TKd-J8-Iyk.title" = "@the0neyouseek\n@reitermarkus\n@JoniVR\n@waydabber"; - -/* Class = "NSTextFieldCell"; title = "Menu Icon:"; ObjectID = "u6s-Pb-BCG"; */ -"u6s-Pb-BCG.title" = "Menu Icon:"; - -/* Class = "NSTextFieldCell"; title = "Works if an audio device is selected with no native volume control."; ObjectID = "uF5-a9-Ngz"; */ -"uF5-a9-Ngz.title" = "Works if an audio device is selected with no native volume control."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "uJS-s3-Zpi"; */ -"uJS-s3-Zpi.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable keyboard control for display"; ObjectID = "UqR-WE-jHl"; */ -"UqR-WE-jHl.title" = "Включить управление клавиатурой для дисплея"; - -/* Class = "NSTextFieldCell"; title = "Contrast (DDC)"; ObjectID = "urd-Rh-aiL"; */ -"urd-Rh-aiL.title" = "Contrast"; - -/* Class = "NSButtonCell"; title = "Do not use alternative brightness keys"; ObjectID = "vd2-Lk-neX"; */ -"vd2-Lk-neX.title" = "Do not use alternative brightness keys"; - -/* Class = "NSMenuItem"; title = "Heavy"; ObjectID = "vik-vN-bJe"; */ -"vik-vN-bJe.title" = "Часто"; - -/* Class = "NSTextFieldCell"; title = "Multiple displays:"; ObjectID = "vri-pv-tJ4"; */ -"vri-pv-tJ4.title" = "Multiple displays:"; - -/* Class = "NSTextFieldCell"; title = "DDC read polling mode:"; ObjectID = "vwm-hY-on5"; */ -"vwm-hY-on5.title" = "Режим сбора показаний DDC:"; - -/* Class = "NSTextFieldCell"; title = "General options:"; ObjectID = "W58-ch-j69"; */ -"W58-ch-j69.title" = "General options:"; - -/* Class = "NSTextFieldCell"; title = "Useful when a display tends to reset its settings during sleep."; ObjectID = "w8B-x6-sq5"; */ -"w8B-x6-sq5.title" = "Useful when a display tends to reset its settings during sleep."; - -/* Class = "NSTextFieldCell"; title = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; ObjectID = "wjv-tq-iUx"; */ -"wjv-tq-iUx.title" = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; - -/* Class = "NSTextFieldCell"; title = "Display advanced settings and additional information in Preferences."; ObjectID = "X6w-Ee-9Jq"; */ -"X6w-Ee-9Jq.title" = "Display advanced settings and additional information in Preferences."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "xDF-IA-bBh"; */ -"xDF-IA-bBh.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Update settings from the display. May not work with some hardware."; ObjectID = "xjq-hs-wWB"; */ -"xjq-hs-wWB.title" = "Update settings from the display. May not work with some hardware."; - -/* Class = "NSMenuItem"; title = "Only if at least one slider is present"; ObjectID = "xLa-PN-rsq"; */ -"xLa-PN-rsq.title" = "Only if at least one slider is present"; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "xQJ-aJ-VhH"; */ -"xQJ-aJ-VhH.title" = "Both standard and custom shortcuts"; - -/* Class = "NSTextFieldCell"; title = "Works best with various syncing and 'control all' keyboard settings enabled."; ObjectID = "XU4-Bn-bwH"; */ -"XU4-Bn-bwH.title" = "Works best with various syncing and 'control all' keyboard settings enabled."; - -/* Class = "NSTextFieldCell"; title = "Available"; ObjectID = "yBJ-5d-I7e"; */ -"yBJ-5d-I7e.title" = "Available"; - -/* Class = "NSTextFieldCell"; title = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; ObjectID = "YHZ-VL-QJ3"; */ -"YHZ-VL-QJ3.title" = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; - -/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */ -"yn8-Nd-o89.title" = "Assume last saved settings are valid (recommended)"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "yQh-Ve-WEE"; */ -"yQh-Ve-WEE.title" = "Decrease:"; - -/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "YqZ-LS-YvR"; */ -"YqZ-LS-YvR.title" = "Идентификатор:"; - -/* Class = "NSButtonCell"; title = "Use hardware DDC control"; ObjectID = "ZdU-gV-V05"; */ -"ZdU-gV-V05.title" = "Использовать аппаратное управление DDC"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "zHa-xo-XPW"; */ -"zHa-xo-XPW.title" = "Disable keyboard"; - -/* Class = "NSButtonCell"; title = "Donate"; ObjectID = "ZKk-ve-rS4"; */ -"ZKk-ve-rS4.title" = "Пожертвовать"; - -/* Class = "NSButtonCell"; title = "Show percentages"; ObjectID = "ZUu-MR-XwA"; */ -"ZUu-MR-XwA.title" = "Show percentages"; - -/* Class = "NSTextFieldCell"; title = "Combined dimming switchover point:"; ObjectID = "zv8-pZ-OPy"; */ -"zv8-pZ-OPy.title" = "Combined dimming switchover point:"; diff --git a/MonitorControl/UI/tr.lproj/Localizable.strings b/MonitorControl/UI/tr.lproj/Localizable.strings deleted file mode 100644 index 7585c011..00000000 --- a/MonitorControl/UI/tr.lproj/Localizable.strings +++ /dev/null @@ -1,134 +0,0 @@ -/* Shown in the main prefs window */ -"About" = "Hakkında"; - -/* Shown in the main prefs window */ -"App menu" = "App menu"; - -/* Apple Silicon designation (shown after the version number in Preferences) */ -"Apple Silicon" = "Apple Silicon"; - -/* Shown in the alert dialog */ -"Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure." = "Daha uzun bir gecikmeyi etkinleştirmek istediğinizden emin misiniz? Bunu yapmak sisteminizi dondurabilir ve yeniden başlatılabilir. Başlangıçta güvenlik önlemi olarak devre dışı bırakılır."; - -/* Shown in the alert dialog */ -"Are you sure you want to reset all preferences?" = "Tüm ayarları sıfırlamak istediğinize emin misiniz?"; - -/* Shown in menu */ -"Brightness" = "Parlaklık"; - -/* Build */ -"Build" = "Derleme"; - -/* Shown in the Display Preferences */ -"Built-in Display" = "Dahili Ekran"; - -/* Shown in menu */ -"Check for updates..." = "Check for updates..."; - -/* Shown in menu */ -"Contrast" = "Kontrast"; - -/* Version */ -"Copyright Ⓒ MonitorControl, " = "Telif Hakkı Ⓒ MonitorControl, "; - -/* Shown in the main prefs window */ -"Displays" = "Ekranlar"; - -/* Shown in the alert dialog */ -"Enable Longer Delay?" = "Daha Uzun Gecikmeyi Etkinleştir?"; - -/* Shown in the Display Preferences */ -"External Display" = "Harici Ekran"; - -/* Shown in the main prefs window */ -"General" = "Genel"; - -/* Shown in the Display Preferences */ -"Hardware (Apple)" = "Hardware (Apple)"; - -/* Shown in the Display Preferences */ -"Hardware (DDC)" = "Donanım (DDC)"; - -/* Shown in the alert dialog */ -"Incompatible previous version" = "Incompatible previous version"; - -/* Intel designation (shown after the version number in Preferences) */ -"Intel" = "Intel"; - -/* Shown in the main prefs window */ -"Keyboard" = "Keyboard"; - -/* Shown in the alert dialog */ -"No" = "Hayır"; - -/* Shown in the Display Preferences */ -"No Control" = "No Control"; - -/* Shown in the Display Preferences */ -"Other Display" = "Diğer Ekran"; - -/* Shown in the alert dialog */ -"Preferences for an incompatible previous app version detected. Default preferences are reloaded." = "Preferences for an incompatible previous app version detected. Default preferences are reloaded."; - -/* Shown in menu */ -"Preferences..." = "Preferences..."; - -/* Shown in menu */ -"Quit" = "Quit"; - -/* Shown in the alert dialog */ -"Reset Preferences?" = "Ayarları Sıfırla?"; - -/* Shown in the alert dialog */ -"Safe Mode Activated" = "Safe Mode Activated"; - -/* Shown in the alert dialog */ -"Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked." = "Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked."; - -/* Shown in the alert dialog */ -"Shortcuts not available" = "Kısayollar bulunamadı"; - -/* Shown in the Display Preferences */ -"Software (Gamma)" = "Software (Gamma)"; - -/* Shown in the Display Preferences */ -"Software (Gamma, Forced)" = "Software (Gamma, Forced)"; - -/* Shown in the Display Preferences */ -"Software (Shade)" = "Software (Shade)"; - -/* Shown in the Display Preferences */ -"This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display." = "This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display."; - -/* Shown in the Display Preferences */ -"This display has an unspecified control status." = "This display has an unspecified control status."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control but the current settings allow for software control only." = "This display is reported to support hardware DDC control but the current settings allow for software control only."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control." = "This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control."; - -/* Shown in the Display Preferences */ -"This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well." = "This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well."; - -/* Shown in the Display Preferences */ -"This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode." = "This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode."; - -/* Unknown display name */ -"Unknown" = "Bilinmeyen"; - -/* Version */ -"Version" = "Versiyon"; - -/* Shown in the Display Preferences */ -"Virtual Display" = "Sanal Ekran"; - -/* Shown in menu */ -"Volume" = "Ses"; - -/* Shown in the alert dialog */ -"Yes" = "Evet"; - -/* Shown in the alert dialog */ -"You need to enable MonitorControl in System Preferences > Security and Privacy > Accessibility for the keyboard shortcuts to work" = "MonitorControl klavye kısayollarını aktif hale getirmek için Sistem Tercihleri > Güvenlik ve Gizlilik > Erişebilirlik altından izin vermeniz gerekmektedir"; diff --git a/MonitorControl/UI/tr.lproj/Main.strings b/MonitorControl/UI/tr.lproj/Main.strings deleted file mode 100644 index f9c66fc4..00000000 --- a/MonitorControl/UI/tr.lproj/Main.strings +++ /dev/null @@ -1,401 +0,0 @@ -/* Class = "NSButtonCell"; title = "Sync brightness changes from Built-in and Apple displays"; ObjectID = "0ca-DG-AgB"; */ -"0ca-DG-AgB.title" = "Sync brightness changes from Built-in and Apple displays"; - -/* Class = "NSButtonCell"; title = "Attempt to read display settings"; ObjectID = "0qp-fq-8MI"; */ -"0qp-fq-8MI.title" = "Attempt to read display settings"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl"; ObjectID = "1PJ-14-Bvn"; */ -"1PJ-14-Bvn.title" = "MonitorControl"; - -/* Class = "NSMenuItem"; title = "Standard keyboard volume and mute keys"; ObjectID = "1sy-Kd-WL5"; */ -"1sy-Kd-WL5.title" = "Standard keyboard volume and mute keys"; - -/* Class = "NSButtonCell"; title = "Change volume for all screens"; ObjectID = "1XT-3S-UuD"; */ -"1XT-3S-UuD.title" = "Change volume for all screens"; - -/* Class = "NSTextFieldCell"; title = "DDC min"; ObjectID = "1zE-fg-xEm"; */ -"1zE-fg-xEm.title" = "DDC min"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "4CG-0I-anB"; */ -"4CG-0I-anB.title" = "Custom keyboard shortcuts"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; ObjectID = "4dX-o1-xAc"; */ -"4dX-o1-xAc.title" = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; - -/* Class = "NSButtonCell"; title = "Show separate controls for each display in menu"; ObjectID = "4t2-Rv-njr"; */ -"4t2-Rv-njr.title" = "Show separate controls for each display in menu"; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "567-le-fLg"; */ -"567-le-fLg.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Reset Preferences"; ObjectID = "5yT-5F-X5R"; */ -"5yT-5F-X5R.title" = "Reset Preferences"; - -/* Class = "NSMenuItem"; title = "Always hide"; ObjectID = "6mo-7S-oOO"; */ -"6mo-7S-oOO.title" = "Always hide"; - -/* Class = "NSTextFieldCell"; title = "Slider behavior:"; ObjectID = "75n-7M-1mS"; */ -"75n-7M-1mS.title" = "Slider behavior:"; - -/* Class = "NSButtonCell"; title = "Use combined slider for all displays"; ObjectID = "7rn-Lu-fcl"; */ -"7rn-Lu-fcl.title" = "Use combined slider for all displays"; - -/* Class = "NSButtonCell"; title = "Show slider tick marks"; ObjectID = "7zf-m1-gJO"; */ -"7zf-m1-gJO.title" = "Show slider tick marks"; - -/* Class = "NSTextFieldCell"; title = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; ObjectID = "8Gx-Ya-zhp"; */ -"8Gx-Ya-zhp.title" = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale"; ObjectID = "8Q8-57-xnT"; */ -"8Q8-57-xnT.title" = "Use fine OSD scale"; - -/* Class = "NSButtonCell"; title = "Special thanks to our contributors!"; ObjectID = "95V-M4-2l5"; */ -"95V-M4-2l5.title" = "Katkıda bulunanlarımıza özel teşekkürler!"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "9eC-PD-FHl"; */ -"9eC-PD-FHl.title" = "Custom keyboard shortcuts"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "9H1-0z-xsx"; */ -"9H1-0z-xsx.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; ObjectID = "A8P-vn-DEJ"; */ -"A8P-vn-DEJ.title" = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; - -/* Class = "NSButtonCell"; title = "Disable software dimming as fallback"; ObjectID = "afB-Xx-Lta"; */ -"afB-Xx-Lta.title" = "Disable software dimming as fallback"; - -/* Class = "NSTextFieldCell"; title = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; ObjectID = "an7-Aj-3fZ"; */ -"an7-Aj-3fZ.title" = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; - -/* Class = "NSTextFieldCell"; title = "Brightness:"; ObjectID = "Bhb-6l-uPQ"; */ -"Bhb-6l-uPQ.title" = "Brightness:"; - -/* Class = "NSTextFieldCell"; title = "(Gamma->DDC)"; ObjectID = "Bid-UL-blc"; */ -"Bid-UL-blc.title" = "(Gamma->DDC)"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only. Results may vary."; ObjectID = "bIe-6O-xEH"; */ -"bIe-6O-xEH.title" = "For hardware (DDC) controlled displays only. Results may vary."; - -/* Class = "NSButtonCell"; title = "Disable macOS volume OSD"; ObjectID = "bkM-Px-U3b"; */ -"bkM-Px-U3b.title" = "macOS ses OSD'yi pasif et"; - -/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "bP4-GJ-vhJ"; */ -"bP4-GJ-vhJ.title" = "OSD scale:"; - -/* Class = "NSButtonCell"; title = "Reset settings"; ObjectID = "BYS-7Y-bRz"; */ -"BYS-7Y-bRz.title" = "Ayarları sıfırla"; - -/* Class = "NSButtonCell"; title = "Enable Mute DDC command"; ObjectID = "bZq-0d-lJa"; */ -"bZq-0d-lJa.title" = "Mute DDC komutunu etkinleştir"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "Bzq-Co-fex"; */ -"Bzq-Co-fex.title" = "Decrease:"; - -/* Class = "NSButtonCell"; title = "Show volume slider in menu"; ObjectID = "c9D-MB-lma"; */ -"c9D-MB-lma.title" = "Show volume slider in menu"; - -/* Class = "NSMenuItem"; title = "Custom"; ObjectID = "Cle-DD-vR7"; */ -"Cle-DD-vR7.title" = "Özel"; - -/* Class = "NSButtonCell"; title = "Website"; ObjectID = "Cln-uW-2dd"; */ -"Cln-uW-2dd.title" = "Web Sitesi"; - -/* Class = "NSTextFieldCell"; title = "Upon startup or wake:"; ObjectID = "cNt-Cq-vK4"; */ -"cNt-Cq-vK4.title" = "Upon startup or wake:"; - -/* Class = "NSTextFieldCell"; title = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; ObjectID = "Cz1-Mh-llk"; */ -"Cz1-Mh-llk.title" = "⚠️ Uyarı! Bu ayarların bazılarını değiştirmek, sistemin donmasına veya beklenmeyen davranışlara neden olabilir!"; - -/* Class = "NSTextFieldCell"; title = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; ObjectID = "D4H-hU-FLn"; */ -"D4H-hU-FLn.title" = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; - -/* Class = "NSTextFieldCell"; title = "VCP list"; ObjectID = "D9t-vT-gNJ"; */ -"D9t-vT-gNJ.title" = "VCP list"; - -/* Class = "NSTextFieldCell"; title = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; ObjectID = "Dha-Tm-cDM"; */ -"Dha-Tm-cDM.title" = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; - -/* Class = "NSTextFieldCell"; title = "You can disable smooth transitions for a more direct, immediate control."; ObjectID = "ENt-mP-0yH"; */ -"ENt-mP-0yH.title" = "You can disable smooth transitions for a more direct, immediate control."; - -/* Class = "NSMenuItem"; title = "Minimal"; ObjectID = "Eq3-z9-yIo"; */ -"Eq3-z9-yIo.title" = "Minimal"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "eue-as-VOR"; */ -"eue-as-VOR.title" = "Increase:"; - -/* Class = "NSTextFieldCell"; title = "Scale mapping curve"; ObjectID = "Eui-5S-JR6"; */ -"Eui-5S-JR6.title" = "Scale mapping curve"; - -/* Class = "NSTextFieldCell"; title = "Mute:"; ObjectID = "EvN-FT-vdZ"; */ -"EvN-FT-vdZ.title" = "Mute:"; - -/* Class = "NSTextFieldCell"; title = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; ObjectID = "f6J-Ui-uMB"; */ -"f6J-Ui-uMB.title" = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; - -/* Class = "NSButtonCell"; title = "Reset Name"; ObjectID = "f9g-8s-gdd"; */ -"f9g-8s-gdd.title" = "İsmi Sıfırla"; - -/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "Faf-9L-TXx"; */ -"Faf-9L-TXx.title" = "Automatically check for updates"; - -/* Class = "NSTextFieldCell"; title = "Brightness control:"; ObjectID = "fe9-Ia-t9m"; */ -"fe9-Ia-t9m.title" = "Brightness control:"; - -/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */ -"FER-Ri-4UO.title" = "Volume:"; - -/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */ -"fmZ-HI-Mdc.title" = "Apple and built-in displays already have a brightness slider in Control Center."; - -/* Class = "NSMenuItem"; title = "None"; ObjectID = "FoA-yh-Yx3"; */ -"FoA-yh-Yx3.title" = "Yok"; - -/* Class = "NSMenuItem"; title = "Show as icons"; ObjectID = "fR3-kq-cps"; */ -"fR3-kq-cps.title" = "Show as icons"; - -/* Class = "NSMenuItem"; title = "Show as text"; ObjectID = "fWd-Es-zsy"; */ -"fWd-Es-zsy.title" = "Show as text"; - -/* Class = "NSTextFieldCell"; title = "Invert"; ObjectID = "G5A-y3-eZz"; */ -"G5A-y3-eZz.title" = "Invert"; - -/* Class = "NSTextFieldCell"; title = "Brightness slider for hardware or software controlled displays or TVs."; ObjectID = "gXH-HL-ZOL"; */ -"gXH-HL-ZOL.title" = "Brightness slider for hardware or software controlled displays or TVs."; - -/* Class = "NSTextFieldCell"; title = "Override audio device name:"; ObjectID = "H9X-it-sXs"; */ -"H9X-it-sXs.title" = "Override audio device name:"; - -/* Class = "NSTextFieldCell"; title = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; ObjectID = "hF7-fM-aKr"; */ -"hF7-fM-aKr.title" = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; - -/* Class = "NSButtonCell"; title = "Get current"; ObjectID = "hkC-vq-IcD"; */ -"hkC-vq-IcD.title" = "Get current"; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "HLE-Vp-kcS"; */ -"HLE-Vp-kcS.title" = "Record shortcuts:"; - -/* Class = "NSMenuItem"; title = "Hide"; ObjectID = "HUT-Qc-kuu"; */ -"HUT-Qc-kuu.title" = "Hide"; - -/* Class = "NSTextFieldCell"; title = "Additional controls:"; ObjectID = "i5X-M5-Tf5"; */ -"i5X-M5-Tf5.title" = "Additional controls:"; - -/* Class = "NSTextFieldCell"; title = "Brightness"; ObjectID = "IJB-mO-e8I"; */ -"IJB-mO-e8I.title" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable smooth brightness transitions"; ObjectID = "IK4-u5-qjf"; */ -"IK4-u5-qjf.title" = "Enable smooth brightness transitions"; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale for volume"; ObjectID = "J3L-MW-iJL"; */ -"J3L-MW-iJL.title" = "Use fine OSD scale for volume"; - -/* Class = "NSButtonCell"; title = "Start at Login"; ObjectID = "j72-NF-zsW"; */ -"j72-NF-zsW.title" = "Başlangıçta çalıştır"; - -/* Class = "NSButtonCell"; title = "Change for all screens"; ObjectID = "JC3-pb-XnR"; */ -"JC3-pb-XnR.title" = "Change for all screens"; - -/* Class = "NSTextFieldCell"; title = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; ObjectID = "Jx2-gO-nq9"; */ -"Jx2-gO-nq9.title" = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; - -/* Class = "NSButtonCell"; title = "Apply last saved values to the display"; ObjectID = "K0S-zN-M4k"; */ -"K0S-zN-M4k.title" = "Apply last saved values to the display"; - -/* Class = "NSButtonCell"; title = "Enable for Apple branded and built-in displays as well"; ObjectID = "K6A-4z-1aQ"; */ -"K6A-4z-1aQ.title" = "Enable for Apple branded and built-in displays as well"; - -/* Class = "NSTextFieldCell"; title = "Don't use software dimming as fallback if no hardware control is available."; ObjectID = "kgh-b4-gmO"; */ -"kgh-b4-gmO.title" = "Don't use software dimming as fallback if no hardware control is available."; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "kqJ-jQ-b7U"; */ -"kqJ-jQ-b7U.title" = "Record shortcuts:"; - -/* Class = "NSTextFieldCell"; title = "Brightness and contrast control:"; ObjectID = "LO4-4k-gxY"; */ -"LO4-4k-gxY.title" = "Brightness and contrast control:"; - -/* Class = "NSTextFieldCell"; title = "Display type:"; ObjectID = "lSJ-6w-KJ2"; */ -"lSJ-6w-KJ2.title" = "Ekran tipi:"; - -/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "ltL-gR-K3Z"; */ -"ltL-gR-K3Z.title" = "Screen to control:"; - -/* Class = "NSButtonCell"; title = "Enable slider snapping"; ObjectID = "MlU-hl-d46"; */ -"MlU-hl-d46.title" = "Enable slider snapping"; - -/* Class = "NSMenuItem"; title = "Always show in the menu bar"; ObjectID = "MM0-Lf-VgF"; */ -"MM0-Lf-VgF.title" = "Always show in the menu bar"; - -/* Class = "NSButtonCell"; title = "Use window focus to determine which display to control"; ObjectID = "mMG-Ac-gdB"; */ -"mMG-Ac-gdB.title" = "Use window focus to determine which display to control"; - -/* Class = "NSTextFieldCell"; title = "Contrast:"; ObjectID = "MMk-S2-yJN"; */ -"MMk-S2-yJN.title" = "Contrast:"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "mue-fa-8z6"; */ -"mue-fa-8z6.title" = "Increase:"; - -/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */ -"MWo-6I-s9L.title" = "Show brightness slider in menu"; - -/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */ -"O8o-hI-8eR.title" = "Separate scales for combined hardware & software dimming"; - -/* Class = "NSButtonCell"; title = "Use audio device name to determine which display to control"; ObjectID = "OAa-B4-8r3"; */ -"OAa-B4-8r3.title" = "Use audio device name to determine which display to control"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "OG9-iA-jK1"; */ -"OG9-iA-jK1.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "oHf-Gh-68c"; */ -"oHf-Gh-68c.title" = "Disable keyboard"; - -/* Class = "NSTextFieldCell"; title = "Application:"; ObjectID = "okD-DG-pYa"; */ -"okD-DG-pYa.title" = "Uygulama:"; - -/* Class = "NSMenuItem"; title = "Standard keyboard brightness keys"; ObjectID = "Oke-bW-cb1"; */ -"Oke-bW-cb1.title" = "Standard keyboard brightness keys"; - -/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */ -"Orv-yj-Nad.title" = "count:"; - -/* Class = "NSTextFieldCell"; title = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; ObjectID = "pa0-Hz-ace"; */ -"pa0-Hz-ace.title" = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; - -/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */ -"PaK-1f-DsW.title" = "Kontrol yöntemi:"; - -/* Class = "NSButtonCell"; title = "Longer delay during DDC read operations"; ObjectID = "pF5-Sw-7BR"; */ -"pF5-Sw-7BR.title" = "DDC okuma işlemleri sırasında daha uzun gecikme"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only."; ObjectID = "POy-35-bh0"; */ -"POy-35-bh0.title" = "For hardware (DDC) controlled displays only."; - -/* Class = "NSTextFieldCell"; title = "DDC max"; ObjectID = "psF-vX-AFB"; */ -"psF-vX-AFB.title" = "DDC max"; - -/* Class = "NSButtonCell"; title = "Show sliders only for the display currently showing the menu"; ObjectID = "PvP-TV-OmT"; */ -"PvP-TV-OmT.title" = "Show sliders only for the display currently showing the menu"; - -/* Class = "NSTextFieldCell"; title = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; ObjectID = "PyY-p9-3NP"; */ -"PyY-p9-3NP.title" = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "QDG-SA-mRX"; */ -"QDG-SA-mRX.title" = "Both standard and custom shortcuts"; - -/* Class = "NSButtonCell"; title = "Quit appliation"; ObjectID = "qlb-wH-qr4"; */ -"qlb-wH-qr4.title" = "Quit appliation"; - -/* Class = "NSButtonCell"; title = "Show contrast slider in menu"; ObjectID = "qO0-dB-yUs"; */ -"qO0-dB-yUs.title" = "Show contrast slider in menu"; - -/* Class = "NSTextFieldCell"; title = "Volume control (DDC only):"; ObjectID = "qoh-Gn-f11"; */ -"qoh-Gn-f11.title" = "Volume control (DDC only):"; - -/* Class = "NSTextFieldCell"; title = "Show percentage next to slider for more precision."; ObjectID = "qXy-CL-Wf1"; */ -"qXy-CL-Wf1.title" = "Show percentage next to slider for more precision."; - -/* Class = "NSButtonCell"; title = "Combine hardware and software dimming"; ObjectID = "r76-Zc-x09"; */ -"r76-Zc-x09.title" = "Combine hardware and software dimming"; - -/* Class = "NSTextFieldCell"; title = "Advanced:"; ObjectID = "r7i-oG-Ab6"; */ -"r7i-oG-Ab6.title" = "Gelişmiş:"; - -/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "Riq-uM-bTs"; */ -"Riq-uM-bTs.title" = "Normal"; - -/* Class = "NSButton"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "RkH-7d-KvR"; */ -"RkH-7d-KvR.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Show advanced settings"; ObjectID = "sAR-sh-y8e"; */ -"sAR-sh-y8e.title" = "Show advanced settings"; - -/* Class = "NSTextFieldCell"; title = "General menu items style:"; ObjectID = "thh-DG-ecH"; */ -"thh-DG-ecH.title" = "General menu items style:"; - -/* Class = "NSTextFieldCell"; title = "@the0neyouseek\n@JoniVR\n@waydabber"; ObjectID = "TKd-J8-Iyk"; */ -"TKd-J8-Iyk.title" = "@the0neyouseek\n@JoniVR\n@waydabber"; - -/* Class = "NSTextFieldCell"; title = "Menu Icon:"; ObjectID = "u6s-Pb-BCG"; */ -"u6s-Pb-BCG.title" = "Menu Icon:"; - -/* Class = "NSTextFieldCell"; title = "Works if an audio device is selected with no native volume control."; ObjectID = "uF5-a9-Ngz"; */ -"uF5-a9-Ngz.title" = "Works if an audio device is selected with no native volume control."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "uJS-s3-Zpi"; */ -"uJS-s3-Zpi.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable keyboard control for display"; ObjectID = "UqR-WE-jHl"; */ -"UqR-WE-jHl.title" = "Bu ekran için klavye kısayollarını etkinleştir"; - -/* Class = "NSTextFieldCell"; title = "Contrast (DDC)"; ObjectID = "urd-Rh-aiL"; */ -"urd-Rh-aiL.title" = "Contrast"; - -/* Class = "NSButtonCell"; title = "Do not use alternative brightness keys"; ObjectID = "vd2-Lk-neX"; */ -"vd2-Lk-neX.title" = "Do not use alternative brightness keys"; - -/* Class = "NSMenuItem"; title = "Heavy"; ObjectID = "vik-vN-bJe"; */ -"vik-vN-bJe.title" = "Ağır"; - -/* Class = "NSTextFieldCell"; title = "Multiple displays:"; ObjectID = "vri-pv-tJ4"; */ -"vri-pv-tJ4.title" = "Multiple displays:"; - -/* Class = "NSTextFieldCell"; title = "DDC read polling mode:"; ObjectID = "vwm-hY-on5"; */ -"vwm-hY-on5.title" = "DDC Okuma Oylama Modu:"; - -/* Class = "NSTextFieldCell"; title = "General options:"; ObjectID = "W58-ch-j69"; */ -"W58-ch-j69.title" = "General options:"; - -/* Class = "NSTextFieldCell"; title = "Useful when a display tends to reset its settings during sleep."; ObjectID = "w8B-x6-sq5"; */ -"w8B-x6-sq5.title" = "Useful when a display tends to reset its settings during sleep."; - -/* Class = "NSTextFieldCell"; title = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; ObjectID = "wjv-tq-iUx"; */ -"wjv-tq-iUx.title" = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; - -/* Class = "NSTextFieldCell"; title = "Display advanced settings and additional information in Preferences."; ObjectID = "X6w-Ee-9Jq"; */ -"X6w-Ee-9Jq.title" = "Display advanced settings and additional information in Preferences."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "xDF-IA-bBh"; */ -"xDF-IA-bBh.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Update settings from the display. May not work with some hardware."; ObjectID = "xjq-hs-wWB"; */ -"xjq-hs-wWB.title" = "Update settings from the display. May not work with some hardware."; - -/* Class = "NSMenuItem"; title = "Only if at least one slider is present"; ObjectID = "xLa-PN-rsq"; */ -"xLa-PN-rsq.title" = "Only if at least one slider is present"; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "xQJ-aJ-VhH"; */ -"xQJ-aJ-VhH.title" = "Both standard and custom shortcuts"; - -/* Class = "NSTextFieldCell"; title = "Works best with various syncing and 'control all' keyboard settings enabled."; ObjectID = "XU4-Bn-bwH"; */ -"XU4-Bn-bwH.title" = "Works best with various syncing and 'control all' keyboard settings enabled."; - -/* Class = "NSTextFieldCell"; title = "Available"; ObjectID = "yBJ-5d-I7e"; */ -"yBJ-5d-I7e.title" = "Available"; - -/* Class = "NSTextFieldCell"; title = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; ObjectID = "YHZ-VL-QJ3"; */ -"YHZ-VL-QJ3.title" = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; - -/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */ -"yn8-Nd-o89.title" = "Assume last saved settings are valid (recommended)"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "yQh-Ve-WEE"; */ -"yQh-Ve-WEE.title" = "Decrease:"; - -/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "YqZ-LS-YvR"; */ -"YqZ-LS-YvR.title" = "Tanımlayıcı:"; - -/* Class = "NSButtonCell"; title = "Use hardware DDC control"; ObjectID = "ZdU-gV-V05"; */ -"ZdU-gV-V05.title" = "Donanım DDC kontrolünü kullan"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "zHa-xo-XPW"; */ -"zHa-xo-XPW.title" = "Disable keyboard"; - -/* Class = "NSButtonCell"; title = "Donate"; ObjectID = "ZKk-ve-rS4"; */ -"ZKk-ve-rS4.title" = "Bağış Yap"; - -/* Class = "NSButtonCell"; title = "Show percentages"; ObjectID = "ZUu-MR-XwA"; */ -"ZUu-MR-XwA.title" = "Show percentages"; - -/* Class = "NSTextFieldCell"; title = "Combined dimming switchover point:"; ObjectID = "zv8-pZ-OPy"; */ -"zv8-pZ-OPy.title" = "Combined dimming switchover point:"; diff --git a/MonitorControl/UI/uk.lproj/Localizable.strings b/MonitorControl/UI/uk.lproj/Localizable.strings deleted file mode 100644 index 9d7716c8..00000000 --- a/MonitorControl/UI/uk.lproj/Localizable.strings +++ /dev/null @@ -1,136 +0,0 @@ -/* Shown in the main prefs window */ -"About" = "About"; - -/* Shown in the main prefs window */ -"App menu" = "App menu"; - -/* Apple Silicon designation (shown after the version number in Preferences) */ -"Apple Silicon" = "Apple Silicon"; - -/* Shown in the alert dialog */ -"Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure." = "Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure."; - -/* Shown in the alert dialog */ -"Are you sure you want to reset all preferences?" = "Are you sure you want to reset all preferences?"; - -/* Sown in menu */ -"Brightness" = "Яскравість"; - -/* Build */ -"Build" = "Білд"; - -/* Shown in the Display Preferences */ -"Built-in Display" = "Built-in Display"; - -/* Shown in menu */ -"Check for updates..." = "Check for updates..."; - -/* Shown in menu */ -"Contrast" = "Контраст"; - -/* Version */ -"Copyright Ⓒ MonitorControl, " = "Copyright Ⓒ MonitorControl, "; - -/* Shown in the main prefs window */ -"Displays" = "Displays"; - -/* Shown in the alert dialog */ -"Enable Longer Delay?" = "Enable Longer Delay?"; - -/* Shown in the Display Preferences */ -"External Display" = "External Display"; - -/* Shown in the main prefs window */ -"General" = "Загальні"; - -/* Shown in the Display Preferences */ -"Hardware (Apple)" = "Hardware (Apple)"; - -/* Shown in the Display Preferences */ -"Hardware (DDC)" = "Hardware (DDC)"; - -/* Shown in the alert dialog */ -"Incompatible previous version" = "Incompatible previous version"; - -/* Intel designation (shown after the version number in Preferences) */ -"Intel" = "Intel"; - -/* Shown in the main prefs window */ -"Keyboard" = "Keyboard"; - -/* Shown in the alert dialog */ -"No" = "No"; - -/* Shown in the Display Preferences */ -"No Control" = "No Control"; - -/* Shown in the Display Preferences */ -"Other Display" = "Other Display"; - -/* Shown in the alert dialog */ -"Preferences for an incompatible previous app version detected. Default preferences are reloaded." = "Preferences for an incompatible previous app version detected. Default preferences are reloaded."; - -/* Shown in menu */ -"Preferences..." = "Preferences..."; - -/* Shown in menu */ -"Quit" = "Quit"; - -/* Shown in the alert dialog */ -"Reset Preferences?" = "Reset Preferences?"; - -/* Shown in the alert dialog */ -"Safe Mode Activated" = "Safe Mode Activated"; - -/* Shown in the alert dialog */ -"Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked." = "Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked."; - -/* Shown in the alert dialog */ -"Shortcuts not available" = "Скорочення недоступні"; - -/* Shown in the Display Preferences */ -"Software (Gamma)" = "Software (Gamma)"; - -/* Shown in the Display Preferences */ -"Software (Gamma, Forced)" = "Software (Gamma, Forced)"; - -/* Shown in the Display Preferences */ -"Software (Shade)" = "Software (Shade)"; - -/* Shown in the Display Preferences */ -"This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display." = "This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display."; - -/* Shown in the Display Preferences */ -"This display has an unspecified control status." = "This display has an unspecified control status."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control but the current settings allow for software control only." = "This display is reported to support hardware DDC control but the current settings allow for software control only."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control." = "This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control."; - -/* Shown in the Display Preferences */ -"This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well." = "This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well."; - -/* Shown in the Display Preferences */ -"This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode." = "This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode."; - -/* Unknown display name - Unknown model - Unknown vendor */ -"Unknown" = "Невідомо"; - -/* Version */ -"Version" = "Версія"; - -/* Shown in the Display Preferences */ -"Virtual Display" = "Virtual Display"; - -/* Shown in menu */ -"Volume" = "Гучність"; - -/* Shown in the alert dialog */ -"Yes" = "Yes"; - -/* Shown in the alert dialog */ -"You need to enable MonitorControl in System Preferences > Security and Privacy > Accessibility for the keyboard shortcuts to work" = "Для роботи клавіатурних скороченнь, вам необхідно дозволити MonitorControl доступ до спеціальних можливостей вашого пристрою через Системні параметри > Захист і безпека > Безпека > Спеціальні можливості"; diff --git a/MonitorControl/UI/uk.lproj/Main.strings b/MonitorControl/UI/uk.lproj/Main.strings deleted file mode 100644 index 4b35c1cc..00000000 --- a/MonitorControl/UI/uk.lproj/Main.strings +++ /dev/null @@ -1,401 +0,0 @@ -/* Class = "NSButtonCell"; title = "Sync brightness changes from Built-in and Apple displays"; ObjectID = "0ca-DG-AgB"; */ -"0ca-DG-AgB.title" = "Sync brightness changes from Built-in and Apple displays"; - -/* Class = "NSButtonCell"; title = "Attempt to read display settings"; ObjectID = "0qp-fq-8MI"; */ -"0qp-fq-8MI.title" = "Attempt to read display settings"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl"; ObjectID = "1PJ-14-Bvn"; */ -"1PJ-14-Bvn.title" = "MonitorControl"; - -/* Class = "NSMenuItem"; title = "Standard keyboard volume and mute keys"; ObjectID = "1sy-Kd-WL5"; */ -"1sy-Kd-WL5.title" = "Standard keyboard volume and mute keys"; - -/* Class = "NSButtonCell"; title = "Change volume for all screens"; ObjectID = "1XT-3S-UuD"; */ -"1XT-3S-UuD.title" = "Change volume for all screens"; - -/* Class = "NSTextFieldCell"; title = "DDC min"; ObjectID = "1zE-fg-xEm"; */ -"1zE-fg-xEm.title" = "DDC min"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "4CG-0I-anB"; */ -"4CG-0I-anB.title" = "Custom keyboard shortcuts"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; ObjectID = "4dX-o1-xAc"; */ -"4dX-o1-xAc.title" = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; - -/* Class = "NSButtonCell"; title = "Show separate controls for each display in menu"; ObjectID = "4t2-Rv-njr"; */ -"4t2-Rv-njr.title" = "Show separate controls for each display in menu"; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "567-le-fLg"; */ -"567-le-fLg.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Reset Preferences"; ObjectID = "5yT-5F-X5R"; */ -"5yT-5F-X5R.title" = "Reset Preferences"; - -/* Class = "NSMenuItem"; title = "Always hide"; ObjectID = "6mo-7S-oOO"; */ -"6mo-7S-oOO.title" = "Always hide"; - -/* Class = "NSTextFieldCell"; title = "Slider behavior:"; ObjectID = "75n-7M-1mS"; */ -"75n-7M-1mS.title" = "Slider behavior:"; - -/* Class = "NSButtonCell"; title = "Use combined slider for all displays"; ObjectID = "7rn-Lu-fcl"; */ -"7rn-Lu-fcl.title" = "Use combined slider for all displays"; - -/* Class = "NSButtonCell"; title = "Show slider tick marks"; ObjectID = "7zf-m1-gJO"; */ -"7zf-m1-gJO.title" = "Show slider tick marks"; - -/* Class = "NSTextFieldCell"; title = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; ObjectID = "8Gx-Ya-zhp"; */ -"8Gx-Ya-zhp.title" = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale"; ObjectID = "8Q8-57-xnT"; */ -"8Q8-57-xnT.title" = "Use fine OSD scale"; - -/* Class = "NSButtonCell"; title = "Special thanks to our contributors!"; ObjectID = "95V-M4-2l5"; */ -"95V-M4-2l5.title" = "Special thanks to our contributors!"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "9eC-PD-FHl"; */ -"9eC-PD-FHl.title" = "Custom keyboard shortcuts"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "9H1-0z-xsx"; */ -"9H1-0z-xsx.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; ObjectID = "A8P-vn-DEJ"; */ -"A8P-vn-DEJ.title" = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; - -/* Class = "NSButtonCell"; title = "Disable software dimming as fallback"; ObjectID = "afB-Xx-Lta"; */ -"afB-Xx-Lta.title" = "Disable software dimming as fallback"; - -/* Class = "NSTextFieldCell"; title = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; ObjectID = "an7-Aj-3fZ"; */ -"an7-Aj-3fZ.title" = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; - -/* Class = "NSTextFieldCell"; title = "Brightness:"; ObjectID = "Bhb-6l-uPQ"; */ -"Bhb-6l-uPQ.title" = "Brightness:"; - -/* Class = "NSTextFieldCell"; title = "(Gamma->DDC)"; ObjectID = "Bid-UL-blc"; */ -"Bid-UL-blc.title" = "(Gamma->DDC)"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only. Results may vary."; ObjectID = "bIe-6O-xEH"; */ -"bIe-6O-xEH.title" = "For hardware (DDC) controlled displays only. Results may vary."; - -/* Class = "NSButtonCell"; title = "Disable macOS volume OSD"; ObjectID = "bkM-Px-U3b"; */ -"bkM-Px-U3b.title" = "Disable macOS volume OSD"; - -/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "bP4-GJ-vhJ"; */ -"bP4-GJ-vhJ.title" = "OSD scale:"; - -/* Class = "NSButtonCell"; title = "Reset settings"; ObjectID = "BYS-7Y-bRz"; */ -"BYS-7Y-bRz.title" = "Reset settings"; - -/* Class = "NSButtonCell"; title = "Enable Mute DDC command"; ObjectID = "bZq-0d-lJa"; */ -"bZq-0d-lJa.title" = "Enable Mute DDC command"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "Bzq-Co-fex"; */ -"Bzq-Co-fex.title" = "Decrease:"; - -/* Class = "NSButtonCell"; title = "Show volume slider in menu"; ObjectID = "c9D-MB-lma"; */ -"c9D-MB-lma.title" = "Show volume slider in menu"; - -/* Class = "NSMenuItem"; title = "Custom"; ObjectID = "Cle-DD-vR7"; */ -"Cle-DD-vR7.title" = "Власне"; - -/* Class = "NSButtonCell"; title = "Website"; ObjectID = "Cln-uW-2dd"; */ -"Cln-uW-2dd.title" = "Website"; - -/* Class = "NSTextFieldCell"; title = "Upon startup or wake:"; ObjectID = "cNt-Cq-vK4"; */ -"cNt-Cq-vK4.title" = "Upon startup or wake:"; - -/* Class = "NSTextFieldCell"; title = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; ObjectID = "Cz1-Mh-llk"; */ -"Cz1-Mh-llk.title" = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; - -/* Class = "NSTextFieldCell"; title = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; ObjectID = "D4H-hU-FLn"; */ -"D4H-hU-FLn.title" = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; - -/* Class = "NSTextFieldCell"; title = "VCP list"; ObjectID = "D9t-vT-gNJ"; */ -"D9t-vT-gNJ.title" = "VCP list"; - -/* Class = "NSTextFieldCell"; title = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; ObjectID = "Dha-Tm-cDM"; */ -"Dha-Tm-cDM.title" = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; - -/* Class = "NSTextFieldCell"; title = "You can disable smooth transitions for a more direct, immediate control."; ObjectID = "ENt-mP-0yH"; */ -"ENt-mP-0yH.title" = "You can disable smooth transitions for a more direct, immediate control."; - -/* Class = "NSMenuItem"; title = "Minimal"; ObjectID = "Eq3-z9-yIo"; */ -"Eq3-z9-yIo.title" = "Мінім."; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "eue-as-VOR"; */ -"eue-as-VOR.title" = "Increase:"; - -/* Class = "NSTextFieldCell"; title = "Scale mapping curve"; ObjectID = "Eui-5S-JR6"; */ -"Eui-5S-JR6.title" = "Scale mapping curve"; - -/* Class = "NSTextFieldCell"; title = "Mute:"; ObjectID = "EvN-FT-vdZ"; */ -"EvN-FT-vdZ.title" = "Mute:"; - -/* Class = "NSTextFieldCell"; title = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; ObjectID = "f6J-Ui-uMB"; */ -"f6J-Ui-uMB.title" = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; - -/* Class = "NSButtonCell"; title = "Reset Name"; ObjectID = "f9g-8s-gdd"; */ -"f9g-8s-gdd.title" = "Reset Name"; - -/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "Faf-9L-TXx"; */ -"Faf-9L-TXx.title" = "Automatically check for updates"; - -/* Class = "NSTextFieldCell"; title = "Brightness control:"; ObjectID = "fe9-Ia-t9m"; */ -"fe9-Ia-t9m.title" = "Brightness control:"; - -/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */ -"FER-Ri-4UO.title" = "Volume:"; - -/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */ -"fmZ-HI-Mdc.title" = "Apple and built-in displays already have a brightness slider in Control Center."; - -/* Class = "NSMenuItem"; title = "None"; ObjectID = "FoA-yh-Yx3"; */ -"FoA-yh-Yx3.title" = "Немає"; - -/* Class = "NSMenuItem"; title = "Show as icons"; ObjectID = "fR3-kq-cps"; */ -"fR3-kq-cps.title" = "Show as icons"; - -/* Class = "NSMenuItem"; title = "Show as text"; ObjectID = "fWd-Es-zsy"; */ -"fWd-Es-zsy.title" = "Show as text"; - -/* Class = "NSTextFieldCell"; title = "Invert"; ObjectID = "G5A-y3-eZz"; */ -"G5A-y3-eZz.title" = "Invert"; - -/* Class = "NSTextFieldCell"; title = "Brightness slider for hardware or software controlled displays or TVs."; ObjectID = "gXH-HL-ZOL"; */ -"gXH-HL-ZOL.title" = "Brightness slider for hardware or software controlled displays or TVs."; - -/* Class = "NSTextFieldCell"; title = "Override audio device name:"; ObjectID = "H9X-it-sXs"; */ -"H9X-it-sXs.title" = "Override audio device name:"; - -/* Class = "NSTextFieldCell"; title = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; ObjectID = "hF7-fM-aKr"; */ -"hF7-fM-aKr.title" = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; - -/* Class = "NSButtonCell"; title = "Get current"; ObjectID = "hkC-vq-IcD"; */ -"hkC-vq-IcD.title" = "Get current"; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "HLE-Vp-kcS"; */ -"HLE-Vp-kcS.title" = "Record shortcuts:"; - -/* Class = "NSMenuItem"; title = "Hide"; ObjectID = "HUT-Qc-kuu"; */ -"HUT-Qc-kuu.title" = "Hide"; - -/* Class = "NSTextFieldCell"; title = "Additional controls:"; ObjectID = "i5X-M5-Tf5"; */ -"i5X-M5-Tf5.title" = "Additional controls:"; - -/* Class = "NSTextFieldCell"; title = "Brightness"; ObjectID = "IJB-mO-e8I"; */ -"IJB-mO-e8I.title" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable smooth brightness transitions"; ObjectID = "IK4-u5-qjf"; */ -"IK4-u5-qjf.title" = "Enable smooth brightness transitions"; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale for volume"; ObjectID = "J3L-MW-iJL"; */ -"J3L-MW-iJL.title" = "Use fine OSD scale for volume"; - -/* Class = "NSButtonCell"; title = "Start at Login"; ObjectID = "j72-NF-zsW"; */ -"j72-NF-zsW.title" = "Запускати MonitorControl разом із системою"; - -/* Class = "NSButtonCell"; title = "Change for all screens"; ObjectID = "JC3-pb-XnR"; */ -"JC3-pb-XnR.title" = "Change for all screens"; - -/* Class = "NSTextFieldCell"; title = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; ObjectID = "Jx2-gO-nq9"; */ -"Jx2-gO-nq9.title" = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; - -/* Class = "NSButtonCell"; title = "Apply last saved values to the display"; ObjectID = "K0S-zN-M4k"; */ -"K0S-zN-M4k.title" = "Apply last saved values to the display"; - -/* Class = "NSButtonCell"; title = "Enable for Apple branded and built-in displays as well"; ObjectID = "K6A-4z-1aQ"; */ -"K6A-4z-1aQ.title" = "Enable for Apple branded and built-in displays as well"; - -/* Class = "NSTextFieldCell"; title = "Don't use software dimming as fallback if no hardware control is available."; ObjectID = "kgh-b4-gmO"; */ -"kgh-b4-gmO.title" = "Don't use software dimming as fallback if no hardware control is available."; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "kqJ-jQ-b7U"; */ -"kqJ-jQ-b7U.title" = "Record shortcuts:"; - -/* Class = "NSTextFieldCell"; title = "Brightness and contrast control:"; ObjectID = "LO4-4k-gxY"; */ -"LO4-4k-gxY.title" = "Brightness and contrast control:"; - -/* Class = "NSTextFieldCell"; title = "Display type:"; ObjectID = "lSJ-6w-KJ2"; */ -"lSJ-6w-KJ2.title" = "Display type:"; - -/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "ltL-gR-K3Z"; */ -"ltL-gR-K3Z.title" = "Screen to control:"; - -/* Class = "NSButtonCell"; title = "Enable slider snapping"; ObjectID = "MlU-hl-d46"; */ -"MlU-hl-d46.title" = "Enable slider snapping"; - -/* Class = "NSMenuItem"; title = "Always show in the menu bar"; ObjectID = "MM0-Lf-VgF"; */ -"MM0-Lf-VgF.title" = "Always show in the menu bar"; - -/* Class = "NSButtonCell"; title = "Use window focus to determine which display to control"; ObjectID = "mMG-Ac-gdB"; */ -"mMG-Ac-gdB.title" = "Use window focus to determine which display to control"; - -/* Class = "NSTextFieldCell"; title = "Contrast:"; ObjectID = "MMk-S2-yJN"; */ -"MMk-S2-yJN.title" = "Contrast:"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "mue-fa-8z6"; */ -"mue-fa-8z6.title" = "Increase:"; - -/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */ -"MWo-6I-s9L.title" = "Show brightness slider in menu"; - -/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */ -"O8o-hI-8eR.title" = "Separate scales for combined hardware & software dimming"; - -/* Class = "NSButtonCell"; title = "Use audio device name to determine which display to control"; ObjectID = "OAa-B4-8r3"; */ -"OAa-B4-8r3.title" = "Use audio device name to determine which display to control"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "OG9-iA-jK1"; */ -"OG9-iA-jK1.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "oHf-Gh-68c"; */ -"oHf-Gh-68c.title" = "Disable keyboard"; - -/* Class = "NSTextFieldCell"; title = "Application:"; ObjectID = "okD-DG-pYa"; */ -"okD-DG-pYa.title" = "Application:"; - -/* Class = "NSMenuItem"; title = "Standard keyboard brightness keys"; ObjectID = "Oke-bW-cb1"; */ -"Oke-bW-cb1.title" = "Standard keyboard brightness keys"; - -/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */ -"Orv-yj-Nad.title" = "count:"; - -/* Class = "NSTextFieldCell"; title = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; ObjectID = "pa0-Hz-ace"; */ -"pa0-Hz-ace.title" = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; - -/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */ -"PaK-1f-DsW.title" = "Control method:"; - -/* Class = "NSButtonCell"; title = "Longer delay during DDC read operations"; ObjectID = "pF5-Sw-7BR"; */ -"pF5-Sw-7BR.title" = "Longer delay during DDC read operations"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only."; ObjectID = "POy-35-bh0"; */ -"POy-35-bh0.title" = "For hardware (DDC) controlled displays only."; - -/* Class = "NSTextFieldCell"; title = "DDC max"; ObjectID = "psF-vX-AFB"; */ -"psF-vX-AFB.title" = "DDC max"; - -/* Class = "NSButtonCell"; title = "Show sliders only for the display currently showing the menu"; ObjectID = "PvP-TV-OmT"; */ -"PvP-TV-OmT.title" = "Show sliders only for the display currently showing the menu"; - -/* Class = "NSTextFieldCell"; title = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; ObjectID = "PyY-p9-3NP"; */ -"PyY-p9-3NP.title" = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "QDG-SA-mRX"; */ -"QDG-SA-mRX.title" = "Both standard and custom shortcuts"; - -/* Class = "NSButtonCell"; title = "Quit appliation"; ObjectID = "qlb-wH-qr4"; */ -"qlb-wH-qr4.title" = "Quit appliation"; - -/* Class = "NSButtonCell"; title = "Show contrast slider in menu"; ObjectID = "qO0-dB-yUs"; */ -"qO0-dB-yUs.title" = "Show contrast slider in menu"; - -/* Class = "NSTextFieldCell"; title = "Volume control (DDC only):"; ObjectID = "qoh-Gn-f11"; */ -"qoh-Gn-f11.title" = "Volume control (DDC only):"; - -/* Class = "NSTextFieldCell"; title = "Show percentage next to slider for more precision."; ObjectID = "qXy-CL-Wf1"; */ -"qXy-CL-Wf1.title" = "Show percentage next to slider for more precision."; - -/* Class = "NSButtonCell"; title = "Combine hardware and software dimming"; ObjectID = "r76-Zc-x09"; */ -"r76-Zc-x09.title" = "Combine hardware and software dimming"; - -/* Class = "NSTextFieldCell"; title = "Advanced:"; ObjectID = "r7i-oG-Ab6"; */ -"r7i-oG-Ab6.title" = "Advanced:"; - -/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "Riq-uM-bTs"; */ -"Riq-uM-bTs.title" = "Звич."; - -/* Class = "NSButton"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "RkH-7d-KvR"; */ -"RkH-7d-KvR.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Show advanced settings"; ObjectID = "sAR-sh-y8e"; */ -"sAR-sh-y8e.title" = "Show advanced settings"; - -/* Class = "NSTextFieldCell"; title = "General menu items style:"; ObjectID = "thh-DG-ecH"; */ -"thh-DG-ecH.title" = "General menu items style:"; - -/* Class = "NSTextFieldCell"; title = "@the0neyouseek\n@JoniVR\n@waydabber"; ObjectID = "TKd-J8-Iyk"; */ -"TKd-J8-Iyk.title" = "@the0neyouseek\n@reitermarkus\n@JoniVR\n@waydabber"; - -/* Class = "NSTextFieldCell"; title = "Menu Icon:"; ObjectID = "u6s-Pb-BCG"; */ -"u6s-Pb-BCG.title" = "Menu Icon:"; - -/* Class = "NSTextFieldCell"; title = "Works if an audio device is selected with no native volume control."; ObjectID = "uF5-a9-Ngz"; */ -"uF5-a9-Ngz.title" = "Works if an audio device is selected with no native volume control."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "uJS-s3-Zpi"; */ -"uJS-s3-Zpi.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable keyboard control for display"; ObjectID = "UqR-WE-jHl"; */ -"UqR-WE-jHl.title" = "Enable keyboard control for display"; - -/* Class = "NSTextFieldCell"; title = "Contrast (DDC)"; ObjectID = "urd-Rh-aiL"; */ -"urd-Rh-aiL.title" = "Contrast"; - -/* Class = "NSButtonCell"; title = "Do not use alternative brightness keys"; ObjectID = "vd2-Lk-neX"; */ -"vd2-Lk-neX.title" = "Do not use alternative brightness keys"; - -/* Class = "NSMenuItem"; title = "Heavy"; ObjectID = "vik-vN-bJe"; */ -"vik-vN-bJe.title" = "Част."; - -/* Class = "NSTextFieldCell"; title = "Multiple displays:"; ObjectID = "vri-pv-tJ4"; */ -"vri-pv-tJ4.title" = "Multiple displays:"; - -/* Class = "NSTextFieldCell"; title = "DDC read polling mode:"; ObjectID = "vwm-hY-on5"; */ -"vwm-hY-on5.title" = "DDC read polling mode:"; - -/* Class = "NSTextFieldCell"; title = "General options:"; ObjectID = "W58-ch-j69"; */ -"W58-ch-j69.title" = "General options:"; - -/* Class = "NSTextFieldCell"; title = "Useful when a display tends to reset its settings during sleep."; ObjectID = "w8B-x6-sq5"; */ -"w8B-x6-sq5.title" = "Useful when a display tends to reset its settings during sleep."; - -/* Class = "NSTextFieldCell"; title = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; ObjectID = "wjv-tq-iUx"; */ -"wjv-tq-iUx.title" = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; - -/* Class = "NSTextFieldCell"; title = "Display advanced settings and additional information in Preferences."; ObjectID = "X6w-Ee-9Jq"; */ -"X6w-Ee-9Jq.title" = "Display advanced settings and additional information in Preferences."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "xDF-IA-bBh"; */ -"xDF-IA-bBh.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Update settings from the display. May not work with some hardware."; ObjectID = "xjq-hs-wWB"; */ -"xjq-hs-wWB.title" = "Update settings from the display. May not work with some hardware."; - -/* Class = "NSMenuItem"; title = "Only if at least one slider is present"; ObjectID = "xLa-PN-rsq"; */ -"xLa-PN-rsq.title" = "Only if at least one slider is present"; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "xQJ-aJ-VhH"; */ -"xQJ-aJ-VhH.title" = "Both standard and custom shortcuts"; - -/* Class = "NSTextFieldCell"; title = "Works best with various syncing and 'control all' keyboard settings enabled."; ObjectID = "XU4-Bn-bwH"; */ -"XU4-Bn-bwH.title" = "Works best with various syncing and 'control all' keyboard settings enabled."; - -/* Class = "NSTextFieldCell"; title = "Available"; ObjectID = "yBJ-5d-I7e"; */ -"yBJ-5d-I7e.title" = "Available"; - -/* Class = "NSTextFieldCell"; title = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; ObjectID = "YHZ-VL-QJ3"; */ -"YHZ-VL-QJ3.title" = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; - -/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */ -"yn8-Nd-o89.title" = "Assume last saved settings are valid (recommended)"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "yQh-Ve-WEE"; */ -"yQh-Ve-WEE.title" = "Decrease:"; - -/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "YqZ-LS-YvR"; */ -"YqZ-LS-YvR.title" = "Identifier:"; - -/* Class = "NSButtonCell"; title = "Use hardware DDC control"; ObjectID = "ZdU-gV-V05"; */ -"ZdU-gV-V05.title" = "Use hardware DDC control"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "zHa-xo-XPW"; */ -"zHa-xo-XPW.title" = "Disable keyboard"; - -/* Class = "NSButtonCell"; title = "Donate"; ObjectID = "ZKk-ve-rS4"; */ -"ZKk-ve-rS4.title" = "Donate"; - -/* Class = "NSButtonCell"; title = "Show percentages"; ObjectID = "ZUu-MR-XwA"; */ -"ZUu-MR-XwA.title" = "Show percentages"; - -/* Class = "NSTextFieldCell"; title = "Combined dimming switchover point:"; ObjectID = "zv8-pZ-OPy"; */ -"zv8-pZ-OPy.title" = "Combined dimming switchover point:"; diff --git a/MonitorControl/UI/zh-Hans.lproj/Localizable.strings b/MonitorControl/UI/zh-Hans.lproj/Localizable.strings deleted file mode 100644 index 63e9c196..00000000 --- a/MonitorControl/UI/zh-Hans.lproj/Localizable.strings +++ /dev/null @@ -1,136 +0,0 @@ -/* Shown in the main prefs window */ -"About" = "About"; - -/* Shown in the main prefs window */ -"App menu" = "App menu"; - -/* Apple Silicon designation (shown after the version number in Preferences) */ -"Apple Silicon" = "Apple Silicon"; - -/* Shown in the alert dialog */ -"Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure." = "Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure."; - -/* Shown in the alert dialog */ -"Are you sure you want to reset all preferences?" = "Are you sure you want to reset all preferences?"; - -/* Sown in menu */ -"Brightness" = "亮度"; - -/* Build */ -"Build" = "Build"; - -/* Shown in the Display Preferences */ -"Built-in Display" = "Built-in Display"; - -/* Shown in menu */ -"Check for updates..." = "Check for updates..."; - -/* Shown in menu */ -"Contrast" = "对比度"; - -/* Version */ -"Copyright Ⓒ MonitorControl, " = "Copyright Ⓒ MonitorControl, "; - -/* Shown in the main prefs window */ -"Displays" = "Displays"; - -/* Shown in the alert dialog */ -"Enable Longer Delay?" = "Enable Longer Delay?"; - -/* Shown in the Display Preferences */ -"External Display" = "External Display"; - -/* Shown in the main prefs window */ -"General" = "通用"; - -/* Shown in the Display Preferences */ -"Hardware (Apple)" = "Hardware (Apple)"; - -/* Shown in the Display Preferences */ -"Hardware (DDC)" = "Hardware (DDC)"; - -/* Shown in the alert dialog */ -"Incompatible previous version" = "Incompatible previous version"; - -/* Intel designation (shown after the version number in Preferences) */ -"Intel" = "Intel"; - -/* Shown in the main prefs window */ -"Keyboard" = "Keyboard"; - -/* Shown in the alert dialog */ -"No" = "No"; - -/* Shown in the Display Preferences */ -"No Control" = "No Control"; - -/* Shown in the Display Preferences */ -"Other Display" = "Other Display"; - -/* Shown in the alert dialog */ -"Preferences for an incompatible previous app version detected. Default preferences are reloaded." = "Preferences for an incompatible previous app version detected. Default preferences are reloaded."; - -/* Shown in menu */ -"Preferences..." = "Preferences..."; - -/* Shown in menu */ -"Quit" = "Quit"; - -/* Shown in the alert dialog */ -"Reset Preferences?" = "Reset Preferences?"; - -/* Shown in the alert dialog */ -"Safe Mode Activated" = "Safe Mode Activated"; - -/* Shown in the alert dialog */ -"Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked." = "Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked."; - -/* Shown in the alert dialog */ -"Shortcuts not available" = "快捷键不可用"; - -/* Shown in the Display Preferences */ -"Software (Gamma)" = "Software (Gamma)"; - -/* Shown in the Display Preferences */ -"Software (Gamma, Forced)" = "Software (Gamma, Forced)"; - -/* Shown in the Display Preferences */ -"Software (Shade)" = "Software (Shade)"; - -/* Shown in the Display Preferences */ -"This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display." = "This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display."; - -/* Shown in the Display Preferences */ -"This display has an unspecified control status." = "This display has an unspecified control status."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control but the current settings allow for software control only." = "This display is reported to support hardware DDC control but the current settings allow for software control only."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control." = "This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control."; - -/* Shown in the Display Preferences */ -"This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well." = "This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well."; - -/* Shown in the Display Preferences */ -"This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode." = "This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode."; - -/* Unknown display name - Unknown model - Unknown vendor */ -"Unknown" = "Unknown"; - -/* Version */ -"Version" = "Version"; - -/* Shown in the Display Preferences */ -"Virtual Display" = "Virtual Display"; - -/* Shown in menu */ -"Volume" = "音量"; - -/* Shown in the alert dialog */ -"Yes" = "Yes"; - -/* Shown in the alert dialog */ -"You need to enable MonitorControl in System Preferences > Security and Privacy > Accessibility for the keyboard shortcuts to work" = "您需要在「系统偏好设置」>「安全性与隐私」>「辅助功能」中开启 MonitorControl 以便使快捷键生效"; diff --git a/MonitorControl/UI/zh-Hans.lproj/Main.strings b/MonitorControl/UI/zh-Hans.lproj/Main.strings deleted file mode 100644 index 9b82948c..00000000 --- a/MonitorControl/UI/zh-Hans.lproj/Main.strings +++ /dev/null @@ -1,401 +0,0 @@ -/* Class = "NSButtonCell"; title = "Sync brightness changes from Built-in and Apple displays"; ObjectID = "0ca-DG-AgB"; */ -"0ca-DG-AgB.title" = "Sync brightness changes from Built-in and Apple displays"; - -/* Class = "NSButtonCell"; title = "Attempt to read display settings"; ObjectID = "0qp-fq-8MI"; */ -"0qp-fq-8MI.title" = "Attempt to read display settings"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl"; ObjectID = "1PJ-14-Bvn"; */ -"1PJ-14-Bvn.title" = "MonitorControl"; - -/* Class = "NSMenuItem"; title = "Standard keyboard volume and mute keys"; ObjectID = "1sy-Kd-WL5"; */ -"1sy-Kd-WL5.title" = "Standard keyboard volume and mute keys"; - -/* Class = "NSButtonCell"; title = "Change volume for all screens"; ObjectID = "1XT-3S-UuD"; */ -"1XT-3S-UuD.title" = "Change volume for all screens"; - -/* Class = "NSTextFieldCell"; title = "DDC min"; ObjectID = "1zE-fg-xEm"; */ -"1zE-fg-xEm.title" = "DDC min"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "4CG-0I-anB"; */ -"4CG-0I-anB.title" = "Custom keyboard shortcuts"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; ObjectID = "4dX-o1-xAc"; */ -"4dX-o1-xAc.title" = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; - -/* Class = "NSButtonCell"; title = "Show separate controls for each display in menu"; ObjectID = "4t2-Rv-njr"; */ -"4t2-Rv-njr.title" = "Show separate controls for each display in menu"; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "567-le-fLg"; */ -"567-le-fLg.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Reset Preferences"; ObjectID = "5yT-5F-X5R"; */ -"5yT-5F-X5R.title" = "Reset Preferences"; - -/* Class = "NSMenuItem"; title = "Always hide"; ObjectID = "6mo-7S-oOO"; */ -"6mo-7S-oOO.title" = "Always hide"; - -/* Class = "NSTextFieldCell"; title = "Slider behavior:"; ObjectID = "75n-7M-1mS"; */ -"75n-7M-1mS.title" = "Slider behavior:"; - -/* Class = "NSButtonCell"; title = "Use combined slider for all displays"; ObjectID = "7rn-Lu-fcl"; */ -"7rn-Lu-fcl.title" = "Use combined slider for all displays"; - -/* Class = "NSButtonCell"; title = "Show slider tick marks"; ObjectID = "7zf-m1-gJO"; */ -"7zf-m1-gJO.title" = "Show slider tick marks"; - -/* Class = "NSTextFieldCell"; title = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; ObjectID = "8Gx-Ya-zhp"; */ -"8Gx-Ya-zhp.title" = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale"; ObjectID = "8Q8-57-xnT"; */ -"8Q8-57-xnT.title" = "Use fine OSD scale"; - -/* Class = "NSButtonCell"; title = "Special thanks to our contributors!"; ObjectID = "95V-M4-2l5"; */ -"95V-M4-2l5.title" = "特别感谢我们的贡献者!"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "9eC-PD-FHl"; */ -"9eC-PD-FHl.title" = "Custom keyboard shortcuts"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "9H1-0z-xsx"; */ -"9H1-0z-xsx.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; ObjectID = "A8P-vn-DEJ"; */ -"A8P-vn-DEJ.title" = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; - -/* Class = "NSButtonCell"; title = "Disable software dimming as fallback"; ObjectID = "afB-Xx-Lta"; */ -"afB-Xx-Lta.title" = "Disable software dimming as fallback"; - -/* Class = "NSTextFieldCell"; title = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; ObjectID = "an7-Aj-3fZ"; */ -"an7-Aj-3fZ.title" = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; - -/* Class = "NSTextFieldCell"; title = "Brightness:"; ObjectID = "Bhb-6l-uPQ"; */ -"Bhb-6l-uPQ.title" = "Brightness:"; - -/* Class = "NSTextFieldCell"; title = "(Gamma->DDC)"; ObjectID = "Bid-UL-blc"; */ -"Bid-UL-blc.title" = "(Gamma->DDC)"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only. Results may vary."; ObjectID = "bIe-6O-xEH"; */ -"bIe-6O-xEH.title" = "For hardware (DDC) controlled displays only. Results may vary."; - -/* Class = "NSButtonCell"; title = "Disable macOS volume OSD"; ObjectID = "bkM-Px-U3b"; */ -"bkM-Px-U3b.title" = "隐藏 macOS 音量显示"; - -/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "bP4-GJ-vhJ"; */ -"bP4-GJ-vhJ.title" = "OSD scale:"; - -/* Class = "NSButtonCell"; title = "Reset settings"; ObjectID = "BYS-7Y-bRz"; */ -"BYS-7Y-bRz.title" = "重置设置"; - -/* Class = "NSButtonCell"; title = "Enable Mute DDC command"; ObjectID = "bZq-0d-lJa"; */ -"bZq-0d-lJa.title" = "Enable Mute DDC command"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "Bzq-Co-fex"; */ -"Bzq-Co-fex.title" = "Decrease:"; - -/* Class = "NSButtonCell"; title = "Show volume slider in menu"; ObjectID = "c9D-MB-lma"; */ -"c9D-MB-lma.title" = "Show volume slider in menu"; - -/* Class = "NSMenuItem"; title = "Custom"; ObjectID = "Cle-DD-vR7"; */ -"Cle-DD-vR7.title" = "自定义"; - -/* Class = "NSButtonCell"; title = "Website"; ObjectID = "Cln-uW-2dd"; */ -"Cln-uW-2dd.title" = "网站"; - -/* Class = "NSTextFieldCell"; title = "Upon startup or wake:"; ObjectID = "cNt-Cq-vK4"; */ -"cNt-Cq-vK4.title" = "Upon startup or wake:"; - -/* Class = "NSTextFieldCell"; title = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; ObjectID = "Cz1-Mh-llk"; */ -"Cz1-Mh-llk.title" = "⚠️ 警告! 修改这些设置可能导致系统死机或不可预料的行为!"; - -/* Class = "NSTextFieldCell"; title = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; ObjectID = "D4H-hU-FLn"; */ -"D4H-hU-FLn.title" = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; - -/* Class = "NSTextFieldCell"; title = "VCP list"; ObjectID = "D9t-vT-gNJ"; */ -"D9t-vT-gNJ.title" = "VCP list"; - -/* Class = "NSTextFieldCell"; title = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; ObjectID = "Dha-Tm-cDM"; */ -"Dha-Tm-cDM.title" = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; - -/* Class = "NSTextFieldCell"; title = "You can disable smooth transitions for a more direct, immediate control."; ObjectID = "ENt-mP-0yH"; */ -"ENt-mP-0yH.title" = "You can disable smooth transitions for a more direct, immediate control."; - -/* Class = "NSMenuItem"; title = "Minimal"; ObjectID = "Eq3-z9-yIo"; */ -"Eq3-z9-yIo.title" = "少量"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "eue-as-VOR"; */ -"eue-as-VOR.title" = "Increase:"; - -/* Class = "NSTextFieldCell"; title = "Scale mapping curve"; ObjectID = "Eui-5S-JR6"; */ -"Eui-5S-JR6.title" = "Scale mapping curve"; - -/* Class = "NSTextFieldCell"; title = "Mute:"; ObjectID = "EvN-FT-vdZ"; */ -"EvN-FT-vdZ.title" = "Mute:"; - -/* Class = "NSTextFieldCell"; title = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; ObjectID = "f6J-Ui-uMB"; */ -"f6J-Ui-uMB.title" = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; - -/* Class = "NSButtonCell"; title = "Reset Name"; ObjectID = "f9g-8s-gdd"; */ -"f9g-8s-gdd.title" = "重置名称"; - -/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "Faf-9L-TXx"; */ -"Faf-9L-TXx.title" = "Automatically check for updates"; - -/* Class = "NSTextFieldCell"; title = "Brightness control:"; ObjectID = "fe9-Ia-t9m"; */ -"fe9-Ia-t9m.title" = "Brightness control:"; - -/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */ -"FER-Ri-4UO.title" = "Volume:"; - -/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */ -"fmZ-HI-Mdc.title" = "Apple and built-in displays already have a brightness slider in Control Center."; - -/* Class = "NSMenuItem"; title = "None"; ObjectID = "FoA-yh-Yx3"; */ -"FoA-yh-Yx3.title" = "不请求"; - -/* Class = "NSMenuItem"; title = "Show as icons"; ObjectID = "fR3-kq-cps"; */ -"fR3-kq-cps.title" = "Show as icons"; - -/* Class = "NSMenuItem"; title = "Show as text"; ObjectID = "fWd-Es-zsy"; */ -"fWd-Es-zsy.title" = "Show as text"; - -/* Class = "NSTextFieldCell"; title = "Invert"; ObjectID = "G5A-y3-eZz"; */ -"G5A-y3-eZz.title" = "Invert"; - -/* Class = "NSTextFieldCell"; title = "Brightness slider for hardware or software controlled displays or TVs."; ObjectID = "gXH-HL-ZOL"; */ -"gXH-HL-ZOL.title" = "Brightness slider for hardware or software controlled displays or TVs."; - -/* Class = "NSTextFieldCell"; title = "Override audio device name:"; ObjectID = "H9X-it-sXs"; */ -"H9X-it-sXs.title" = "Override audio device name:"; - -/* Class = "NSTextFieldCell"; title = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; ObjectID = "hF7-fM-aKr"; */ -"hF7-fM-aKr.title" = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; - -/* Class = "NSButtonCell"; title = "Get current"; ObjectID = "hkC-vq-IcD"; */ -"hkC-vq-IcD.title" = "Get current"; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "HLE-Vp-kcS"; */ -"HLE-Vp-kcS.title" = "Record shortcuts:"; - -/* Class = "NSMenuItem"; title = "Hide"; ObjectID = "HUT-Qc-kuu"; */ -"HUT-Qc-kuu.title" = "Hide"; - -/* Class = "NSTextFieldCell"; title = "Additional controls:"; ObjectID = "i5X-M5-Tf5"; */ -"i5X-M5-Tf5.title" = "Additional controls:"; - -/* Class = "NSTextFieldCell"; title = "Brightness"; ObjectID = "IJB-mO-e8I"; */ -"IJB-mO-e8I.title" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable smooth brightness transitions"; ObjectID = "IK4-u5-qjf"; */ -"IK4-u5-qjf.title" = "Enable smooth brightness transitions"; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale for volume"; ObjectID = "J3L-MW-iJL"; */ -"J3L-MW-iJL.title" = "Use fine OSD scale for volume"; - -/* Class = "NSButtonCell"; title = "Start at Login"; ObjectID = "j72-NF-zsW"; */ -"j72-NF-zsW.title" = "登录时启动 MonitorControl"; - -/* Class = "NSButtonCell"; title = "Change for all screens"; ObjectID = "JC3-pb-XnR"; */ -"JC3-pb-XnR.title" = "Change for all screens"; - -/* Class = "NSTextFieldCell"; title = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; ObjectID = "Jx2-gO-nq9"; */ -"Jx2-gO-nq9.title" = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; - -/* Class = "NSButtonCell"; title = "Apply last saved values to the display"; ObjectID = "K0S-zN-M4k"; */ -"K0S-zN-M4k.title" = "Apply last saved values to the display"; - -/* Class = "NSButtonCell"; title = "Enable for Apple branded and built-in displays as well"; ObjectID = "K6A-4z-1aQ"; */ -"K6A-4z-1aQ.title" = "Enable for Apple branded and built-in displays as well"; - -/* Class = "NSTextFieldCell"; title = "Don't use software dimming as fallback if no hardware control is available."; ObjectID = "kgh-b4-gmO"; */ -"kgh-b4-gmO.title" = "Don't use software dimming as fallback if no hardware control is available."; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "kqJ-jQ-b7U"; */ -"kqJ-jQ-b7U.title" = "Record shortcuts:"; - -/* Class = "NSTextFieldCell"; title = "Brightness and contrast control:"; ObjectID = "LO4-4k-gxY"; */ -"LO4-4k-gxY.title" = "Brightness and contrast control:"; - -/* Class = "NSTextFieldCell"; title = "Display type:"; ObjectID = "lSJ-6w-KJ2"; */ -"lSJ-6w-KJ2.title" = "显示类型:"; - -/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "ltL-gR-K3Z"; */ -"ltL-gR-K3Z.title" = "Screen to control:"; - -/* Class = "NSButtonCell"; title = "Enable slider snapping"; ObjectID = "MlU-hl-d46"; */ -"MlU-hl-d46.title" = "Enable slider snapping"; - -/* Class = "NSMenuItem"; title = "Always show in the menu bar"; ObjectID = "MM0-Lf-VgF"; */ -"MM0-Lf-VgF.title" = "Always show in the menu bar"; - -/* Class = "NSButtonCell"; title = "Use window focus to determine which display to control"; ObjectID = "mMG-Ac-gdB"; */ -"mMG-Ac-gdB.title" = "Use window focus to determine which display to control"; - -/* Class = "NSTextFieldCell"; title = "Contrast:"; ObjectID = "MMk-S2-yJN"; */ -"MMk-S2-yJN.title" = "Contrast:"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "mue-fa-8z6"; */ -"mue-fa-8z6.title" = "Increase:"; - -/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */ -"MWo-6I-s9L.title" = "Show brightness slider in menu"; - -/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */ -"O8o-hI-8eR.title" = "Separate scales for combined hardware & software dimming"; - -/* Class = "NSButtonCell"; title = "Use audio device name to determine which display to control"; ObjectID = "OAa-B4-8r3"; */ -"OAa-B4-8r3.title" = "Use audio device name to determine which display to control"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "OG9-iA-jK1"; */ -"OG9-iA-jK1.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "oHf-Gh-68c"; */ -"oHf-Gh-68c.title" = "Disable keyboard"; - -/* Class = "NSTextFieldCell"; title = "Application:"; ObjectID = "okD-DG-pYa"; */ -"okD-DG-pYa.title" = "应用:"; - -/* Class = "NSMenuItem"; title = "Standard keyboard brightness keys"; ObjectID = "Oke-bW-cb1"; */ -"Oke-bW-cb1.title" = "Standard keyboard brightness keys"; - -/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */ -"Orv-yj-Nad.title" = "count:"; - -/* Class = "NSTextFieldCell"; title = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; ObjectID = "pa0-Hz-ace"; */ -"pa0-Hz-ace.title" = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; - -/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */ -"PaK-1f-DsW.title" = "控制方法:"; - -/* Class = "NSButtonCell"; title = "Longer delay during DDC read operations"; ObjectID = "pF5-Sw-7BR"; */ -"pF5-Sw-7BR.title" = "为 DDC 读取提供更长等待时间"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only."; ObjectID = "POy-35-bh0"; */ -"POy-35-bh0.title" = "For hardware (DDC) controlled displays only."; - -/* Class = "NSTextFieldCell"; title = "DDC max"; ObjectID = "psF-vX-AFB"; */ -"psF-vX-AFB.title" = "DDC max"; - -/* Class = "NSButtonCell"; title = "Show sliders only for the display currently showing the menu"; ObjectID = "PvP-TV-OmT"; */ -"PvP-TV-OmT.title" = "Show sliders only for the display currently showing the menu"; - -/* Class = "NSTextFieldCell"; title = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; ObjectID = "PyY-p9-3NP"; */ -"PyY-p9-3NP.title" = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "QDG-SA-mRX"; */ -"QDG-SA-mRX.title" = "Both standard and custom shortcuts"; - -/* Class = "NSButtonCell"; title = "Quit appliation"; ObjectID = "qlb-wH-qr4"; */ -"qlb-wH-qr4.title" = "Quit appliation"; - -/* Class = "NSButtonCell"; title = "Show contrast slider in menu"; ObjectID = "qO0-dB-yUs"; */ -"qO0-dB-yUs.title" = "Show contrast slider in menu"; - -/* Class = "NSTextFieldCell"; title = "Volume control (DDC only):"; ObjectID = "qoh-Gn-f11"; */ -"qoh-Gn-f11.title" = "Volume control (DDC only):"; - -/* Class = "NSTextFieldCell"; title = "Show percentage next to slider for more precision."; ObjectID = "qXy-CL-Wf1"; */ -"qXy-CL-Wf1.title" = "Show percentage next to slider for more precision."; - -/* Class = "NSButtonCell"; title = "Combine hardware and software dimming"; ObjectID = "r76-Zc-x09"; */ -"r76-Zc-x09.title" = "Combine hardware and software dimming"; - -/* Class = "NSTextFieldCell"; title = "Advanced:"; ObjectID = "r7i-oG-Ab6"; */ -"r7i-oG-Ab6.title" = "高级:"; - -/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "Riq-uM-bTs"; */ -"Riq-uM-bTs.title" = "正常"; - -/* Class = "NSButton"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "RkH-7d-KvR"; */ -"RkH-7d-KvR.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Show advanced settings"; ObjectID = "sAR-sh-y8e"; */ -"sAR-sh-y8e.title" = "Show advanced settings"; - -/* Class = "NSTextFieldCell"; title = "General menu items style:"; ObjectID = "thh-DG-ecH"; */ -"thh-DG-ecH.title" = "General menu items style:"; - -/* Class = "NSTextFieldCell"; title = "@the0neyouseek\n@JoniVR\n@waydabber"; ObjectID = "TKd-J8-Iyk"; */ -"TKd-J8-Iyk.title" = "@the0neyouseek\n@reitermarkus\n@JoniVR\n@waydabber"; - -/* Class = "NSTextFieldCell"; title = "Menu Icon:"; ObjectID = "u6s-Pb-BCG"; */ -"u6s-Pb-BCG.title" = "Menu Icon:"; - -/* Class = "NSTextFieldCell"; title = "Works if an audio device is selected with no native volume control."; ObjectID = "uF5-a9-Ngz"; */ -"uF5-a9-Ngz.title" = "Works if an audio device is selected with no native volume control."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "uJS-s3-Zpi"; */ -"uJS-s3-Zpi.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable keyboard control for display"; ObjectID = "UqR-WE-jHl"; */ -"UqR-WE-jHl.title" = "启用键盘控制显示"; - -/* Class = "NSTextFieldCell"; title = "Contrast (DDC)"; ObjectID = "urd-Rh-aiL"; */ -"urd-Rh-aiL.title" = "Contrast"; - -/* Class = "NSButtonCell"; title = "Do not use alternative brightness keys"; ObjectID = "vd2-Lk-neX"; */ -"vd2-Lk-neX.title" = "Do not use alternative brightness keys"; - -/* Class = "NSMenuItem"; title = "Heavy"; ObjectID = "vik-vN-bJe"; */ -"vik-vN-bJe.title" = "多次"; - -/* Class = "NSTextFieldCell"; title = "Multiple displays:"; ObjectID = "vri-pv-tJ4"; */ -"vri-pv-tJ4.title" = "Multiple displays:"; - -/* Class = "NSTextFieldCell"; title = "DDC read polling mode:"; ObjectID = "vwm-hY-on5"; */ -"vwm-hY-on5.title" = "DDC read polling mode:"; - -/* Class = "NSTextFieldCell"; title = "General options:"; ObjectID = "W58-ch-j69"; */ -"W58-ch-j69.title" = "General options:"; - -/* Class = "NSTextFieldCell"; title = "Useful when a display tends to reset its settings during sleep."; ObjectID = "w8B-x6-sq5"; */ -"w8B-x6-sq5.title" = "Useful when a display tends to reset its settings during sleep."; - -/* Class = "NSTextFieldCell"; title = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; ObjectID = "wjv-tq-iUx"; */ -"wjv-tq-iUx.title" = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; - -/* Class = "NSTextFieldCell"; title = "Display advanced settings and additional information in Preferences."; ObjectID = "X6w-Ee-9Jq"; */ -"X6w-Ee-9Jq.title" = "Display advanced settings and additional information in Preferences."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "xDF-IA-bBh"; */ -"xDF-IA-bBh.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Update settings from the display. May not work with some hardware."; ObjectID = "xjq-hs-wWB"; */ -"xjq-hs-wWB.title" = "Update settings from the display. May not work with some hardware."; - -/* Class = "NSMenuItem"; title = "Only if at least one slider is present"; ObjectID = "xLa-PN-rsq"; */ -"xLa-PN-rsq.title" = "Only if at least one slider is present"; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "xQJ-aJ-VhH"; */ -"xQJ-aJ-VhH.title" = "Both standard and custom shortcuts"; - -/* Class = "NSTextFieldCell"; title = "Works best with various syncing and 'control all' keyboard settings enabled."; ObjectID = "XU4-Bn-bwH"; */ -"XU4-Bn-bwH.title" = "Works best with various syncing and 'control all' keyboard settings enabled."; - -/* Class = "NSTextFieldCell"; title = "Available"; ObjectID = "yBJ-5d-I7e"; */ -"yBJ-5d-I7e.title" = "Available"; - -/* Class = "NSTextFieldCell"; title = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; ObjectID = "YHZ-VL-QJ3"; */ -"YHZ-VL-QJ3.title" = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; - -/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */ -"yn8-Nd-o89.title" = "Assume last saved settings are valid (recommended)"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "yQh-Ve-WEE"; */ -"yQh-Ve-WEE.title" = "Decrease:"; - -/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "YqZ-LS-YvR"; */ -"YqZ-LS-YvR.title" = "ID:"; - -/* Class = "NSButtonCell"; title = "Use hardware DDC control"; ObjectID = "ZdU-gV-V05"; */ -"ZdU-gV-V05.title" = "使用硬件 DDC 控制"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "zHa-xo-XPW"; */ -"zHa-xo-XPW.title" = "Disable keyboard"; - -/* Class = "NSButtonCell"; title = "Donate"; ObjectID = "ZKk-ve-rS4"; */ -"ZKk-ve-rS4.title" = "赞助"; - -/* Class = "NSButtonCell"; title = "Show percentages"; ObjectID = "ZUu-MR-XwA"; */ -"ZUu-MR-XwA.title" = "Show percentages"; - -/* Class = "NSTextFieldCell"; title = "Combined dimming switchover point:"; ObjectID = "zv8-pZ-OPy"; */ -"zv8-pZ-OPy.title" = "Combined dimming switchover point:"; diff --git a/MonitorControl/UI/zh-Hant-TW.lproj/Localizable.strings b/MonitorControl/UI/zh-Hant-TW.lproj/Localizable.strings deleted file mode 100644 index e165c084..00000000 --- a/MonitorControl/UI/zh-Hant-TW.lproj/Localizable.strings +++ /dev/null @@ -1,136 +0,0 @@ -/* Shown in the main prefs window */ -"About" = "關於"; - -/* Shown in the main prefs window */ -"App menu" = "App menu"; - -/* Apple Silicon designation (shown after the version number in Preferences) */ -"Apple Silicon" = "Apple Silicon"; - -/* Shown in the alert dialog */ -"Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure." = "您確定要啟用更長的延遲嗎? 這樣做可能會使系統崩潰並需要重新啟動。 作為安全措施,登錄時啟動將被禁用。"; - -/* Shown in the alert dialog */ -"Are you sure you want to reset all preferences?" = "確定要重置嗎?"; - -/* Sown in menu */ -"Brightness" = "亮度"; - -/* Build */ -"Build" = "建構"; - -/* Shown in the Display Preferences */ -"Built-in Display" = "內置螢幕"; - -/* Shown in menu */ -"Check for updates..." = "Check for updates..."; - -/* Shown in menu */ -"Contrast" = "對比度"; - -/* Version */ -"Copyright Ⓒ MonitorControl, " = "Copyright Ⓒ MonitorControl, "; - -/* Shown in the main prefs window */ -"Displays" = "螢幕"; - -/* Shown in the alert dialog */ -"Enable Longer Delay?" = "啟用更長的延遲?"; - -/* Shown in the Display Preferences */ -"External Display" = "外接螢幕"; - -/* Shown in the main prefs window */ -"General" = "通用"; - -/* Shown in the Display Preferences */ -"Hardware (Apple)" = "Hardware (Apple)"; - -/* Shown in the Display Preferences */ -"Hardware (DDC)" = "硬體(DDC)"; - -/* Shown in the alert dialog */ -"Incompatible previous version" = "Incompatible previous version"; - -/* Intel designation (shown after the version number in Preferences) */ -"Intel" = "Intel"; - -/* Shown in the main prefs window */ -"Keyboard" = "Keyboard"; - -/* Shown in the alert dialog */ -"No" = "否"; - -/* Shown in the Display Preferences */ -"No Control" = "No Control"; - -/* Shown in the Display Preferences */ -"Other Display" = "其他螢幕"; - -/* Shown in the alert dialog */ -"Preferences for an incompatible previous app version detected. Default preferences are reloaded." = "Preferences for an incompatible previous app version detected. Default preferences are reloaded."; - -/* Shown in menu */ -"Preferences..." = "Preferences..."; - -/* Shown in menu */ -"Quit" = "Quit"; - -/* Shown in the alert dialog */ -"Reset Preferences?" = "重置偏好設定?"; - -/* Shown in the alert dialog */ -"Safe Mode Activated" = "Safe Mode Activated"; - -/* Shown in the alert dialog */ -"Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked." = "Shift was pressed during launch. MonitorControl started in safe mode. Default preferences are reloaded, DDC read is blocked."; - -/* Shown in the alert dialog */ -"Shortcuts not available" = "快捷鍵不可使用"; - -/* Shown in the Display Preferences */ -"Software (Gamma)" = "Software (Gamma)"; - -/* Shown in the Display Preferences */ -"Software (Gamma, Forced)" = "Software (Gamma, Forced)"; - -/* Shown in the Display Preferences */ -"Software (Shade)" = "Software (Shade)"; - -/* Shown in the Display Preferences */ -"This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display." = "This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display."; - -/* Shown in the Display Preferences */ -"This display has an unspecified control status." = "This display has an unspecified control status."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control but the current settings allow for software control only." = "This display is reported to support hardware DDC control but the current settings allow for software control only."; - -/* Shown in the Display Preferences */ -"This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control." = "This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control."; - -/* Shown in the Display Preferences */ -"This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well." = "This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well."; - -/* Shown in the Display Preferences */ -"This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode." = "This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode."; - -/* Unknown display name - Unknown model - Unknown vendor */ -"Unknown" = "未知"; - -/* Version */ -"Version" = "版本"; - -/* Shown in the Display Preferences */ -"Virtual Display" = "虛擬螢幕"; - -/* Shown in menu */ -"Volume" = "音量"; - -/* Shown in the alert dialog */ -"Yes" = "是"; - -/* Shown in the alert dialog */ -"You need to enable MonitorControl in System Preferences > Security and Privacy > Accessibility for the keyboard shortcuts to work" = "您需要在「系統偏好設定」>「安全性與隱私權」>「輔助使用」中開啟 MonitorControl 使快捷鍵生效"; diff --git a/MonitorControl/UI/zh-Hant-TW.lproj/Main.strings b/MonitorControl/UI/zh-Hant-TW.lproj/Main.strings deleted file mode 100644 index 33d079bd..00000000 --- a/MonitorControl/UI/zh-Hant-TW.lproj/Main.strings +++ /dev/null @@ -1,401 +0,0 @@ -/* Class = "NSButtonCell"; title = "Sync brightness changes from Built-in and Apple displays"; ObjectID = "0ca-DG-AgB"; */ -"0ca-DG-AgB.title" = "Sync brightness changes from Built-in and Apple displays"; - -/* Class = "NSButtonCell"; title = "Attempt to read display settings"; ObjectID = "0qp-fq-8MI"; */ -"0qp-fq-8MI.title" = "Attempt to read display settings"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl"; ObjectID = "1PJ-14-Bvn"; */ -"1PJ-14-Bvn.title" = "MonitorControl"; - -/* Class = "NSMenuItem"; title = "Standard keyboard volume and mute keys"; ObjectID = "1sy-Kd-WL5"; */ -"1sy-Kd-WL5.title" = "Standard keyboard volume and mute keys"; - -/* Class = "NSButtonCell"; title = "Change volume for all screens"; ObjectID = "1XT-3S-UuD"; */ -"1XT-3S-UuD.title" = "Change volume for all screens"; - -/* Class = "NSTextFieldCell"; title = "DDC min"; ObjectID = "1zE-fg-xEm"; */ -"1zE-fg-xEm.title" = "DDC min"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "4CG-0I-anB"; */ -"4CG-0I-anB.title" = "Custom keyboard shortcuts"; - -/* Class = "NSTextFieldCell"; title = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; ObjectID = "4dX-o1-xAc"; */ -"4dX-o1-xAc.title" = "MonitorControl uses mouse position to determine which display to control. Using window focus instead might not work well with full screen apps."; - -/* Class = "NSButtonCell"; title = "Show separate controls for each display in menu"; ObjectID = "4t2-Rv-njr"; */ -"4t2-Rv-njr.title" = "Show separate controls for each display in menu"; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "567-le-fLg"; */ -"567-le-fLg.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Reset Preferences"; ObjectID = "5yT-5F-X5R"; */ -"5yT-5F-X5R.title" = "Reset Preferences"; - -/* Class = "NSMenuItem"; title = "Always hide"; ObjectID = "6mo-7S-oOO"; */ -"6mo-7S-oOO.title" = "Always hide"; - -/* Class = "NSTextFieldCell"; title = "Slider behavior:"; ObjectID = "75n-7M-1mS"; */ -"75n-7M-1mS.title" = "Slider behavior:"; - -/* Class = "NSButtonCell"; title = "Use combined slider for all displays"; ObjectID = "7rn-Lu-fcl"; */ -"7rn-Lu-fcl.title" = "Use combined slider for all displays"; - -/* Class = "NSButtonCell"; title = "Show slider tick marks"; ObjectID = "7zf-m1-gJO"; */ -"7zf-m1-gJO.title" = "Show slider tick marks"; - -/* Class = "NSTextFieldCell"; title = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; ObjectID = "8Gx-Ya-zhp"; */ -"8Gx-Ya-zhp.title" = "Slider knob will snap to 0%, 25%, 50%, 75% and 100% when in proximity making setting these values easier. Disable for finer control."; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale"; ObjectID = "8Q8-57-xnT"; */ -"8Q8-57-xnT.title" = "Use fine OSD scale"; - -/* Class = "NSButtonCell"; title = "Special thanks to our contributors!"; ObjectID = "95V-M4-2l5"; */ -"95V-M4-2l5.title" = "特別感謝的貢獻者們!"; - -/* Class = "NSMenuItem"; title = "Custom keyboard shortcuts"; ObjectID = "9eC-PD-FHl"; */ -"9eC-PD-FHl.title" = "Custom keyboard shortcuts"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "9H1-0z-xsx"; */ -"9H1-0z-xsx.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; ObjectID = "A8P-vn-DEJ"; */ -"A8P-vn-DEJ.title" = "Show tick marks at 0%, 25%, 50%, 75% and 100% for accuracy."; - -/* Class = "NSButtonCell"; title = "Disable software dimming as fallback"; ObjectID = "afB-Xx-Lta"; */ -"afB-Xx-Lta.title" = "Disable software dimming as fallback"; - -/* Class = "NSTextFieldCell"; title = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; ObjectID = "an7-Aj-3fZ"; */ -"an7-Aj-3fZ.title" = "Use brightness, volume and other settings from last time or use defaults. Values will be applied to the display upon first change by the user."; - -/* Class = "NSTextFieldCell"; title = "Brightness:"; ObjectID = "Bhb-6l-uPQ"; */ -"Bhb-6l-uPQ.title" = "Brightness:"; - -/* Class = "NSTextFieldCell"; title = "(Gamma->DDC)"; ObjectID = "Bid-UL-blc"; */ -"Bid-UL-blc.title" = "(Gamma->DDC)"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only. Results may vary."; ObjectID = "bIe-6O-xEH"; */ -"bIe-6O-xEH.title" = "For hardware (DDC) controlled displays only. Results may vary."; - -/* Class = "NSButtonCell"; title = "Disable macOS volume OSD"; ObjectID = "bkM-Px-U3b"; */ -"bkM-Px-U3b.title" = "停用macOS音量調節"; - -/* Class = "NSTextFieldCell"; title = "OSD scale:"; ObjectID = "bP4-GJ-vhJ"; */ -"bP4-GJ-vhJ.title" = "OSD scale:"; - -/* Class = "NSButtonCell"; title = "Reset settings"; ObjectID = "BYS-7Y-bRz"; */ -"BYS-7Y-bRz.title" = "重置設定"; - -/* Class = "NSButtonCell"; title = "Enable Mute DDC command"; ObjectID = "bZq-0d-lJa"; */ -"bZq-0d-lJa.title" = "允許DDC靜音指令"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "Bzq-Co-fex"; */ -"Bzq-Co-fex.title" = "Decrease:"; - -/* Class = "NSButtonCell"; title = "Show volume slider in menu"; ObjectID = "c9D-MB-lma"; */ -"c9D-MB-lma.title" = "Show volume slider in menu"; - -/* Class = "NSMenuItem"; title = "Custom"; ObjectID = "Cle-DD-vR7"; */ -"Cle-DD-vR7.title" = "自定義"; - -/* Class = "NSButtonCell"; title = "Website"; ObjectID = "Cln-uW-2dd"; */ -"Cln-uW-2dd.title" = "網站"; - -/* Class = "NSTextFieldCell"; title = "Upon startup or wake:"; ObjectID = "cNt-Cq-vK4"; */ -"cNt-Cq-vK4.title" = "Upon startup or wake:"; - -/* Class = "NSTextFieldCell"; title = "⚠️ Warning! Changing some of these settings may cause system freezes or unexpected behavior!"; ObjectID = "Cz1-Mh-llk"; */ -"Cz1-Mh-llk.title" = "⚠️ 警告! 更改這些設定可能導致系統崩潰或不可預期的結果"; - -/* Class = "NSTextFieldCell"; title = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; ObjectID = "D4H-hU-FLn"; */ -"D4H-hU-FLn.title" = "Alternative keys are the F14/F15 (Scroll Lock and Pause on PC keyboards, brightness keys on some Logitech keyboards)."; - -/* Class = "NSTextFieldCell"; title = "VCP list"; ObjectID = "D9t-vT-gNJ"; */ -"D9t-vT-gNJ.title" = "VCP list"; - -/* Class = "NSTextFieldCell"; title = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; ObjectID = "Dha-Tm-cDM"; */ -"Dha-Tm-cDM.title" = "Without this the app uses mouse position to determine which display to control. You can override audio device name under Displays if needed."; - -/* Class = "NSTextFieldCell"; title = "You can disable smooth transitions for a more direct, immediate control."; ObjectID = "ENt-mP-0yH"; */ -"ENt-mP-0yH.title" = "You can disable smooth transitions for a more direct, immediate control."; - -/* Class = "NSMenuItem"; title = "Minimal"; ObjectID = "Eq3-z9-yIo"; */ -"Eq3-z9-yIo.title" = "少量"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "eue-as-VOR"; */ -"eue-as-VOR.title" = "Increase:"; - -/* Class = "NSTextFieldCell"; title = "Scale mapping curve"; ObjectID = "Eui-5S-JR6"; */ -"Eui-5S-JR6.title" = "Scale mapping curve"; - -/* Class = "NSTextFieldCell"; title = "Mute:"; ObjectID = "EvN-FT-vdZ"; */ -"EvN-FT-vdZ.title" = "Mute:"; - -/* Class = "NSTextFieldCell"; title = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; ObjectID = "f6J-Ui-uMB"; */ -"f6J-Ui-uMB.title" = "Normally keyboard controls change one OSD chiclet worth of value and Shift+Option allows fine control. This makes fine control default."; - -/* Class = "NSButtonCell"; title = "Reset Name"; ObjectID = "f9g-8s-gdd"; */ -"f9g-8s-gdd.title" = "重設名稱"; - -/* Class = "NSButtonCell"; title = "Automatically check for updates"; ObjectID = "Faf-9L-TXx"; */ -"Faf-9L-TXx.title" = "Automatically check for updates"; - -/* Class = "NSTextFieldCell"; title = "Brightness control:"; ObjectID = "fe9-Ia-t9m"; */ -"fe9-Ia-t9m.title" = "Brightness control:"; - -/* Class = "NSTextFieldCell"; title = "Volume:"; ObjectID = "FER-Ri-4UO"; */ -"FER-Ri-4UO.title" = "Volume:"; - -/* Class = "NSTextFieldCell"; title = "Apple and built-in displays already have a brightness slider in Control Center."; ObjectID = "fmZ-HI-Mdc"; */ -"fmZ-HI-Mdc.title" = "Apple and built-in displays already have a brightness slider in Control Center."; - -/* Class = "NSMenuItem"; title = "None"; ObjectID = "FoA-yh-Yx3"; */ -"FoA-yh-Yx3.title" = "不請求"; - -/* Class = "NSMenuItem"; title = "Show as icons"; ObjectID = "fR3-kq-cps"; */ -"fR3-kq-cps.title" = "Show as icons"; - -/* Class = "NSMenuItem"; title = "Show as text"; ObjectID = "fWd-Es-zsy"; */ -"fWd-Es-zsy.title" = "Show as text"; - -/* Class = "NSTextFieldCell"; title = "Invert"; ObjectID = "G5A-y3-eZz"; */ -"G5A-y3-eZz.title" = "Invert"; - -/* Class = "NSTextFieldCell"; title = "Brightness slider for hardware or software controlled displays or TVs."; ObjectID = "gXH-HL-ZOL"; */ -"gXH-HL-ZOL.title" = "Brightness slider for hardware or software controlled displays or TVs."; - -/* Class = "NSTextFieldCell"; title = "Override audio device name:"; ObjectID = "H9X-it-sXs"; */ -"H9X-it-sXs.title" = "Override audio device name:"; - -/* Class = "NSTextFieldCell"; title = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; ObjectID = "hF7-fM-aKr"; */ -"hF7-fM-aKr.title" = "Relaunch the app to access Preferences if the menu option is not accessible. Use the button below to quit the app."; - -/* Class = "NSButtonCell"; title = "Get current"; ObjectID = "hkC-vq-IcD"; */ -"hkC-vq-IcD.title" = "Get current"; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "HLE-Vp-kcS"; */ -"HLE-Vp-kcS.title" = "Record shortcuts:"; - -/* Class = "NSMenuItem"; title = "Hide"; ObjectID = "HUT-Qc-kuu"; */ -"HUT-Qc-kuu.title" = "Hide"; - -/* Class = "NSTextFieldCell"; title = "Additional controls:"; ObjectID = "i5X-M5-Tf5"; */ -"i5X-M5-Tf5.title" = "Additional controls:"; - -/* Class = "NSTextFieldCell"; title = "Brightness"; ObjectID = "IJB-mO-e8I"; */ -"IJB-mO-e8I.title" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable smooth brightness transitions"; ObjectID = "IK4-u5-qjf"; */ -"IK4-u5-qjf.title" = "Enable smooth brightness transitions"; - -/* Class = "NSButtonCell"; title = "Use fine OSD scale for volume"; ObjectID = "J3L-MW-iJL"; */ -"J3L-MW-iJL.title" = "Use fine OSD scale for volume"; - -/* Class = "NSButtonCell"; title = "Start at Login"; ObjectID = "j72-NF-zsW"; */ -"j72-NF-zsW.title" = "登入時啟動 MonitorControl"; - -/* Class = "NSButtonCell"; title = "Change for all screens"; ObjectID = "JC3-pb-XnR"; */ -"JC3-pb-XnR.title" = "Change for all screens"; - -/* Class = "NSTextFieldCell"; title = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; ObjectID = "Jx2-gO-nq9"; */ -"Jx2-gO-nq9.title" = "Note: you can press Shift during startup for 'Safe mode' to restore defaults and avoid reading or setting anything."; - -/* Class = "NSButtonCell"; title = "Apply last saved values to the display"; ObjectID = "K0S-zN-M4k"; */ -"K0S-zN-M4k.title" = "Apply last saved values to the display"; - -/* Class = "NSButtonCell"; title = "Enable for Apple branded and built-in displays as well"; ObjectID = "K6A-4z-1aQ"; */ -"K6A-4z-1aQ.title" = "Enable for Apple branded and built-in displays as well"; - -/* Class = "NSTextFieldCell"; title = "Don't use software dimming as fallback if no hardware control is available."; ObjectID = "kgh-b4-gmO"; */ -"kgh-b4-gmO.title" = "Don't use software dimming as fallback if no hardware control is available."; - -/* Class = "NSTextFieldCell"; title = "Record shortcuts:"; ObjectID = "kqJ-jQ-b7U"; */ -"kqJ-jQ-b7U.title" = "Record shortcuts:"; - -/* Class = "NSTextFieldCell"; title = "Brightness and contrast control:"; ObjectID = "LO4-4k-gxY"; */ -"LO4-4k-gxY.title" = "Brightness and contrast control:"; - -/* Class = "NSTextFieldCell"; title = "Display type:"; ObjectID = "lSJ-6w-KJ2"; */ -"lSJ-6w-KJ2.title" = "螢幕類型:"; - -/* Class = "NSTextFieldCell"; title = "Screen to control:"; ObjectID = "ltL-gR-K3Z"; */ -"ltL-gR-K3Z.title" = "Screen to control:"; - -/* Class = "NSButtonCell"; title = "Enable slider snapping"; ObjectID = "MlU-hl-d46"; */ -"MlU-hl-d46.title" = "Enable slider snapping"; - -/* Class = "NSMenuItem"; title = "Always show in the menu bar"; ObjectID = "MM0-Lf-VgF"; */ -"MM0-Lf-VgF.title" = "Always show in the menu bar"; - -/* Class = "NSButtonCell"; title = "Use window focus to determine which display to control"; ObjectID = "mMG-Ac-gdB"; */ -"mMG-Ac-gdB.title" = "Use window focus to determine which display to control"; - -/* Class = "NSTextFieldCell"; title = "Contrast:"; ObjectID = "MMk-S2-yJN"; */ -"MMk-S2-yJN.title" = "Contrast:"; - -/* Class = "NSTextFieldCell"; title = "Increase:"; ObjectID = "mue-fa-8z6"; */ -"mue-fa-8z6.title" = "Increase:"; - -/* Class = "NSButtonCell"; title = "Show brightness slider in menu"; ObjectID = "MWo-6I-s9L"; */ -"MWo-6I-s9L.title" = "Show brightness slider in menu"; - -/* Class = "NSButtonCell"; title = "Separate scales for combined hardware & software dimming"; ObjectID = "O8o-hI-8eR"; */ -"O8o-hI-8eR.title" = "Separate scales for combined hardware & software dimming"; - -/* Class = "NSButtonCell"; title = "Use audio device name to determine which display to control"; ObjectID = "OAa-B4-8r3"; */ -"OAa-B4-8r3.title" = "Use audio device name to determine which display to control"; - -/* Class = "NSSlider"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "OG9-iA-jK1"; */ -"OG9-iA-jK1.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "oHf-Gh-68c"; */ -"oHf-Gh-68c.title" = "Disable keyboard"; - -/* Class = "NSTextFieldCell"; title = "Application:"; ObjectID = "okD-DG-pYa"; */ -"okD-DG-pYa.title" = "應用程式:"; - -/* Class = "NSMenuItem"; title = "Standard keyboard brightness keys"; ObjectID = "Oke-bW-cb1"; */ -"Oke-bW-cb1.title" = "Standard keyboard brightness keys"; - -/* Class = "NSTextFieldCell"; title = "count:"; ObjectID = "Orv-yj-Nad"; */ -"Orv-yj-Nad.title" = "count:"; - -/* Class = "NSTextFieldCell"; title = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; ObjectID = "pa0-Hz-ace"; */ -"pa0-Hz-ace.title" = "Use the brightness keys of your Apple keyboard to control brightness. You can hold Control to adjust the built-in display, Control+Option to adjust external displays. Hold Shift+Option for fine control. Control+Option+Command adjusts contrast on DDC compatible displays."; - -/* Class = "NSTextFieldCell"; title = "Control method:"; ObjectID = "PaK-1f-DsW"; */ -"PaK-1f-DsW.title" = "控制方式:"; - -/* Class = "NSButtonCell"; title = "Longer delay during DDC read operations"; ObjectID = "pF5-Sw-7BR"; */ -"pF5-Sw-7BR.title" = "延長DDC讀取操作的延遲時間"; - -/* Class = "NSTextFieldCell"; title = "For hardware (DDC) controlled displays only."; ObjectID = "POy-35-bh0"; */ -"POy-35-bh0.title" = "For hardware (DDC) controlled displays only."; - -/* Class = "NSTextFieldCell"; title = "DDC max"; ObjectID = "psF-vX-AFB"; */ -"psF-vX-AFB.title" = "DDC max"; - -/* Class = "NSButtonCell"; title = "Show sliders only for the display currently showing the menu"; ObjectID = "PvP-TV-OmT"; */ -"PvP-TV-OmT.title" = "Show sliders only for the display currently showing the menu"; - -/* Class = "NSTextFieldCell"; title = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; ObjectID = "PyY-p9-3NP"; */ -"PyY-p9-3NP.title" = "Use software dimming after the display reached zero hardware brightness for extended range. Works for DDC controlled displays only."; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "QDG-SA-mRX"; */ -"QDG-SA-mRX.title" = "Both standard and custom shortcuts"; - -/* Class = "NSButtonCell"; title = "Quit appliation"; ObjectID = "qlb-wH-qr4"; */ -"qlb-wH-qr4.title" = "Quit appliation"; - -/* Class = "NSButtonCell"; title = "Show contrast slider in menu"; ObjectID = "qO0-dB-yUs"; */ -"qO0-dB-yUs.title" = "Show contrast slider in menu"; - -/* Class = "NSTextFieldCell"; title = "Volume control (DDC only):"; ObjectID = "qoh-Gn-f11"; */ -"qoh-Gn-f11.title" = "Volume control (DDC only):"; - -/* Class = "NSTextFieldCell"; title = "Show percentage next to slider for more precision."; ObjectID = "qXy-CL-Wf1"; */ -"qXy-CL-Wf1.title" = "Show percentage next to slider for more precision."; - -/* Class = "NSButtonCell"; title = "Combine hardware and software dimming"; ObjectID = "r76-Zc-x09"; */ -"r76-Zc-x09.title" = "Combine hardware and software dimming"; - -/* Class = "NSTextFieldCell"; title = "Advanced:"; ObjectID = "r7i-oG-Ab6"; */ -"r7i-oG-Ab6.title" = "自訂:"; - -/* Class = "NSMenuItem"; title = "Normal"; ObjectID = "Riq-uM-bTs"; */ -"Riq-uM-bTs.title" = "正常"; - -/* Class = "NSButton"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "RkH-7d-KvR"; */ -"RkH-7d-KvR.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Show advanced settings"; ObjectID = "sAR-sh-y8e"; */ -"sAR-sh-y8e.title" = "Show advanced settings"; - -/* Class = "NSTextFieldCell"; title = "General menu items style:"; ObjectID = "thh-DG-ecH"; */ -"thh-DG-ecH.title" = "General menu items style:"; - -/* Class = "NSTextFieldCell"; title = "@the0neyouseek\n@JoniVR\n@waydabber"; ObjectID = "TKd-J8-Iyk"; */ -"TKd-J8-Iyk.title" = "@the0neyouseek\n@reitermarkus\n@JoniVR\n@waydabber"; - -/* Class = "NSTextFieldCell"; title = "Menu Icon:"; ObjectID = "u6s-Pb-BCG"; */ -"u6s-Pb-BCG.title" = "Menu Icon:"; - -/* Class = "NSTextFieldCell"; title = "Works if an audio device is selected with no native volume control."; ObjectID = "uF5-a9-Ngz"; */ -"uF5-a9-Ngz.title" = "Works if an audio device is selected with no native volume control."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "uJS-s3-Zpi"; */ -"uJS-s3-Zpi.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSButtonCell"; title = "Enable keyboard control for display"; ObjectID = "UqR-WE-jHl"; */ -"UqR-WE-jHl.title" = "允許鍵盤控制螢幕"; - -/* Class = "NSTextFieldCell"; title = "Contrast (DDC)"; ObjectID = "urd-Rh-aiL"; */ -"urd-Rh-aiL.title" = "Contrast"; - -/* Class = "NSButtonCell"; title = "Do not use alternative brightness keys"; ObjectID = "vd2-Lk-neX"; */ -"vd2-Lk-neX.title" = "Do not use alternative brightness keys"; - -/* Class = "NSMenuItem"; title = "Heavy"; ObjectID = "vik-vN-bJe"; */ -"vik-vN-bJe.title" = "多次"; - -/* Class = "NSTextFieldCell"; title = "Multiple displays:"; ObjectID = "vri-pv-tJ4"; */ -"vri-pv-tJ4.title" = "Multiple displays:"; - -/* Class = "NSTextFieldCell"; title = "DDC read polling mode:"; ObjectID = "vwm-hY-on5"; */ -"vwm-hY-on5.title" = "DDC讀取操作模式:"; - -/* Class = "NSTextFieldCell"; title = "General options:"; ObjectID = "W58-ch-j69"; */ -"W58-ch-j69.title" = "General options:"; - -/* Class = "NSTextFieldCell"; title = "Useful when a display tends to reset its settings during sleep."; ObjectID = "w8B-x6-sq5"; */ -"w8B-x6-sq5.title" = "Useful when a display tends to reset its settings during sleep."; - -/* Class = "NSTextFieldCell"; title = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; ObjectID = "wjv-tq-iUx"; */ -"wjv-tq-iUx.title" = "Changes that are caused by the Ambient light sensor or made using Touch Bar, Control Center, System Preferences will be replicated to all displays."; - -/* Class = "NSTextFieldCell"; title = "Display advanced settings and additional information in Preferences."; ObjectID = "X6w-Ee-9Jq"; */ -"X6w-Ee-9Jq.title" = "Display advanced settings and additional information in Preferences."; - -/* Class = "NSTextField"; ibExternalAccessibilityDescription = "Brightness"; ObjectID = "xDF-IA-bBh"; */ -"xDF-IA-bBh.ibExternalAccessibilityDescription" = "Brightness"; - -/* Class = "NSTextFieldCell"; title = "Update settings from the display. May not work with some hardware."; ObjectID = "xjq-hs-wWB"; */ -"xjq-hs-wWB.title" = "Update settings from the display. May not work with some hardware."; - -/* Class = "NSMenuItem"; title = "Only if at least one slider is present"; ObjectID = "xLa-PN-rsq"; */ -"xLa-PN-rsq.title" = "Only if at least one slider is present"; - -/* Class = "NSMenuItem"; title = "Both standard and custom shortcuts"; ObjectID = "xQJ-aJ-VhH"; */ -"xQJ-aJ-VhH.title" = "Both standard and custom shortcuts"; - -/* Class = "NSTextFieldCell"; title = "Works best with various syncing and 'control all' keyboard settings enabled."; ObjectID = "XU4-Bn-bwH"; */ -"XU4-Bn-bwH.title" = "Works best with various syncing and 'control all' keyboard settings enabled."; - -/* Class = "NSTextFieldCell"; title = "Available"; ObjectID = "yBJ-5d-I7e"; */ -"yBJ-5d-I7e.title" = "Available"; - -/* Class = "NSTextFieldCell"; title = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; ObjectID = "YHZ-VL-QJ3"; */ -"YHZ-VL-QJ3.title" = "Full OSD scale will be available for hardware brightness control and after reaching 0 brightness, further software dimming will be used."; - -/* Class = "NSButtonCell"; title = "Assume last saved settings are valid (recommended)"; ObjectID = "yn8-Nd-o89"; */ -"yn8-Nd-o89.title" = "Assume last saved settings are valid (recommended)"; - -/* Class = "NSTextFieldCell"; title = "Decrease:"; ObjectID = "yQh-Ve-WEE"; */ -"yQh-Ve-WEE.title" = "Decrease:"; - -/* Class = "NSTextFieldCell"; title = "Identifier:"; ObjectID = "YqZ-LS-YvR"; */ -"YqZ-LS-YvR.title" = "標籤:"; - -/* Class = "NSButtonCell"; title = "Use hardware DDC control"; ObjectID = "ZdU-gV-V05"; */ -"ZdU-gV-V05.title" = "使用硬體DDC控制"; - -/* Class = "NSMenuItem"; title = "Disable keyboard"; ObjectID = "zHa-xo-XPW"; */ -"zHa-xo-XPW.title" = "Disable keyboard"; - -/* Class = "NSButtonCell"; title = "Donate"; ObjectID = "ZKk-ve-rS4"; */ -"ZKk-ve-rS4.title" = "貢獻"; - -/* Class = "NSButtonCell"; title = "Show percentages"; ObjectID = "ZUu-MR-XwA"; */ -"ZUu-MR-XwA.title" = "Show percentages"; - -/* Class = "NSTextFieldCell"; title = "Combined dimming switchover point:"; ObjectID = "zv8-pZ-OPy"; */ -"zv8-pZ-OPy.title" = "Combined dimming switchover point:"; diff --git a/MonitorControl/View Controllers/AboutPrefsViewController.swift b/MonitorControl/View Controllers/AboutPrefsViewController.swift deleted file mode 100644 index 2b99235e..00000000 --- a/MonitorControl/View Controllers/AboutPrefsViewController.swift +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import Cocoa -import Preferences -import ServiceManagement - -class AboutPrefsViewController: NSViewController, PreferencePane { - let preferencePaneIdentifier = Preferences.PaneIdentifier.about - let preferencePaneTitle: String = NSLocalizedString("About", comment: "Shown in the main prefs window") - - var toolbarItemIcon: NSImage { - if !DEBUG_MACOS10, #available(macOS 11.0, *) { - return NSImage(systemSymbolName: "info.circle", accessibilityDescription: "About")! - } else { - return NSImage(named: NSImage.infoName)! - } - } - - @IBOutlet var versionLabel: NSTextField! - @IBOutlet var copyrightLabel: NSTextField! - @IBOutlet var openContributorsButton: NSButton! - - override func viewDidLoad() { - super.viewDidLoad() - self.setAppInfo() - self.setCopyrightInfo() - } - - override func viewWillAppear() { - super.viewWillAppear() - } - - @IBAction func openDonate(_: NSButton) { - if let url = URL(string: "https://opencollective.com/monitorcontrol/donate") { - NSWorkspace.shared.open(url) - } - } - - @IBAction func openWebPage(_: NSButton) { - if let url = URL(string: "https://monitorcontrol.app") { - NSWorkspace.shared.open(url) - } - } - - @IBAction func openContributorsPage(_: NSButton) { - if let url = URL(string: "https://github.com/MonitorControl/MonitorControl/graphs/contributors") { - NSWorkspace.shared.open(url) - } - } - - func setAppInfo() { - let versionName = NSLocalizedString("Version", comment: "Version") - let buildName = NSLocalizedString("Build", comment: "Build") - let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") ?? "error" - let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") ?? "error" - - #if arch(arm64) - let arch: String = NSLocalizedString("Apple Silicon", comment: "Apple Silicon designation (shown after the version number in Preferences)") - #else - let arch: String = NSLocalizedString("Intel", comment: "Intel designation (shown after the version number in Preferences)") - #endif - - self.versionLabel.stringValue = "\(versionName) \(versionNumber) \(buildName) \(buildNumber) - \(arch)" - } - - func setCopyrightInfo() { - let copyright = NSLocalizedString("Copyright Ⓒ MonitorControl, ", comment: "Version") - let year = Calendar.current.component(.year, from: Date()) - self.copyrightLabel.stringValue = "\(copyright) \(year)" - } -} diff --git a/MonitorControl/View Controllers/DisplaysPrefsCellView.swift b/MonitorControl/View Controllers/DisplaysPrefsCellView.swift deleted file mode 100644 index 90b3035d..00000000 --- a/MonitorControl/View Controllers/DisplaysPrefsCellView.swift +++ /dev/null @@ -1,417 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import Cocoa -import os.log - -class DisplaysPrefsCellView: NSTableCellView { - var display: Display? - - override func draw(_ dirtyRect: NSRect) { - super.draw(dirtyRect) - } - - @IBOutlet var displayImage: NSImageCell! - @IBOutlet var friendlyName: NSTextFieldCell! - @IBOutlet var displayId: NSTextFieldCell! - @IBOutlet var enabledButton: NSButton! - @IBOutlet var ddcButton: NSButton! - @IBOutlet var controlMethod: NSTextFieldCell! - @IBOutlet var displayType: NSTextFieldCell! - @IBOutlet var disableVolumeOSDButton: NSButton! - - @IBOutlet var advancedSettings: NSBox! - - @IBOutlet var pollingModeMenu: NSPopUpButton! - @IBOutlet var longerDelayButton: NSButton! - @IBOutlet var pollingCount: NSTextFieldCell! - @IBOutlet var enableMuteButton: NSButton! - - @IBOutlet var combinedBrightnessSwitchingPoint: NSSlider! - - @IBOutlet var audioDeviceNameOverride: NSTextField! - @IBOutlet var updateWithCurrentAudioName: NSButton! - - @IBOutlet var unavailableDDCBrightness: NSButton! - @IBOutlet var unavailableDDCVolume: NSButton! - @IBOutlet var unavailableDDCContrast: NSButton! - - @IBOutlet var minDDCOverrideBrightness: NSTextField! - @IBOutlet var minDDCOverrideVolume: NSTextField! - @IBOutlet var minDDCOverrideContrast: NSTextField! - - @IBOutlet var maxDDCOverrideBrightness: NSTextField! - @IBOutlet var maxDDCOverrideVolume: NSTextField! - @IBOutlet var maxDDCOverrideContrast: NSTextField! - - @IBOutlet var curveDDCBrightness: NSSlider! - @IBOutlet var curveDDCVolume: NSSlider! - @IBOutlet var curveDDCContrast: NSSlider! - - @IBOutlet var invertDDCBrightness: NSButton! - @IBOutlet var invertDDCVolume: NSButton! - @IBOutlet var invertDDCContrast: NSButton! - - @IBOutlet var remapDDCBrightness: NSTextField! - @IBOutlet var remapDDCVolume: NSTextField! - @IBOutlet var remapDDCContrast: NSTextField! - - @IBAction func openAdvancedHelp(_: NSButton) { - if let url = URL(string: "https://github.com/the0neyouseek/MonitorControl/wiki/Advanced-Preferences") { - NSWorkspace.shared.open(url) - } - } - - @IBAction func pollingModeValueChanged(_ sender: NSPopUpButton) { - if let display = display as? OtherDisplay { - let newValue = sender.selectedTag() - let originalValue = display.readPrefAsInt(key: .pollingMode) - - if newValue != originalValue { - display.savePref(newValue, key: .pollingMode) - if display.readPrefAsInt(key: .pollingMode) == PollingMode.custom.rawValue { - self.pollingCount.isEnabled = true - } else { - self.pollingCount.isEnabled = false - } - self.pollingCount.stringValue = String(display.pollingCount) - } - } - } - - @IBAction func pollingCountValueChanged(_ sender: NSTextFieldCell) { - if let display = display as? OtherDisplay { - let newValue = sender.stringValue - let originalValue = "\(display.pollingCount)" - if newValue.isEmpty { - self.pollingCount.stringValue = originalValue - } else if let intValue = Int(newValue) { - self.pollingCount.stringValue = String(intValue) - } else { - self.pollingCount.stringValue = "" - } - if newValue != originalValue, !newValue.isEmpty, let newValue = Int(newValue) { - display.pollingCount = newValue - } - } - } - - @IBAction func enableMuteButtonToggled(_ sender: NSButton) { - if let display = display as? OtherDisplay { - switch sender.state { - case .on: - display.savePref(true, key: .enableMuteUnmute) - case .off: - // If the display is currently muted, toggle back to unmute - // to prevent the display becoming stuck in the muted state - if display.readPrefAsInt(for: .audioMuteScreenBlank) == 1 { - display.toggleMute() - } - display.savePref(false, key: .enableMuteUnmute) - default: - break - } - } - } - - @IBAction func longerDelayButtonToggled(_ sender: NSButton) { - if let display = self.display as? OtherDisplay { - switch sender.state { - case .on: - let alert = NSAlert() - alert.messageText = NSLocalizedString("Enable Longer Delay?", comment: "Shown in the alert dialog") - alert.informativeText = NSLocalizedString("Are you sure you want to enable a longer delay? Doing so may freeze your system and require a restart. Start at login will be disabled as a safety measure.", comment: "Shown in the alert dialog") - alert.addButton(withTitle: NSLocalizedString("Yes", comment: "Shown in the alert dialog")) - alert.addButton(withTitle: NSLocalizedString("No", comment: "Shown in the alert dialog")) - alert.alertStyle = NSAlert.Style.critical - - if let window = self.window { - alert.beginSheetModal(for: window, completionHandler: { modalResponse in - if modalResponse == NSApplication.ModalResponse.alertFirstButtonReturn { - app.setStartAtLogin(enabled: false) - display.savePref(true, key: .longerDelay) - } else { - sender.state = .off - } - }) - } - case .off: - display.savePref(false, key: .longerDelay) - default: - break - } - } - } - - @IBAction func enabledButtonToggled(_ sender: NSButton) { - if let disp = display { - disp.savePref(sender.state == .off, key: .isDisabled) - } - } - - @IBAction func ddcButtonToggled(_ sender: NSButton) { - if let display = display { - switch sender.state { - case .off: - display.savePref(true, key: .forceSw) - case .on: - _ = display.setDirectBrightness(1) - display.savePref(false, key: .forceSw) - default: - break - } - _ = display.setSwBrightness(1) - _ = display.setDirectBrightness(1) - let displayInfo = DisplaysPrefsViewController.getDisplayInfo(display: display) - self.controlMethod.stringValue = displayInfo.controlMethod - self.controlMethod.controlView?.toolTip = displayInfo.controlStatus - app.configure() - } - } - - @IBAction func friendlyNameValueChanged(_ sender: NSTextFieldCell) { - if let display = display { - let newValue = sender.stringValue - let originalValue = (display.readPrefAsString(key: .friendlyName) != "" ? display.readPrefAsString(key: .friendlyName) : display.name) - - if newValue.isEmpty { - self.friendlyName.stringValue = originalValue - return - } - - if newValue != originalValue, !newValue.isEmpty { - display.savePref(newValue, key: .friendlyName) - } - app.updateMenusAndKeys() - } - } - - @IBAction func disableVolumeOSDButton(_ sender: NSButton) { - if let display = display as? OtherDisplay { - switch sender.state { - case .on: - display.savePref(true, key: .hideOsd) - case .off: - display.savePref(false, key: .hideOsd) - default: - break - } - } - } - - func tagCommand(_ tag: Int) -> Command { - var command: Command - switch tag { - case 2: command = Command.audioSpeakerVolume - case 3: command = Command.contrast - default: command = Command.brightness - } - return command - } - - @IBAction func combinedBrightnessSwitchingPoint(_ sender: NSSlider) { - if let display = display as? OtherDisplay { - display.savePref(Int(sender.intValue), key: .combinedBrightnessSwitchingPoint) - } - } - - @IBAction func audioDeviceNameOverride(_ sender: NSTextField) { - if let display = display as? OtherDisplay { - display.savePref(sender.stringValue, key: .audioDeviceNameOverride) - } - app.configure() - } - - @IBAction func updateWithCurrentAudioName(_: NSButton) { - if let defaultDevice = app.coreAudio.defaultOutputDevice { - self.audioDeviceNameOverride.stringValue = defaultDevice.name - self.audioDeviceNameOverride(self.audioDeviceNameOverride) - } - } - - @IBAction func unavailableDDC(_ sender: NSButton) { - let command = self.tagCommand(sender.tag) - let prefKey = PrefKey.unavailableDDC - if let display = display as? OtherDisplay { - switch sender.state { - case .on: - display.savePref(false, key: prefKey, for: command) - case .off: - display.savePref(true, key: prefKey, for: command) - default: - break - } - _ = display.setDirectBrightness(1) - _ = display.setSwBrightness(1) - app.configure() - } - } - - @IBAction func minDDCOverride(_ sender: NSTextField) { - let command = self.tagCommand(sender.tag) - let prefKey = PrefKey.minDDCOverride - let value = sender.stringValue - if let display = display as? OtherDisplay { - if let intValue = Int(value), intValue >= 0, intValue <= 65535 { - display.savePref(intValue, key: prefKey, for: command) - } else { - display.removePref(key: prefKey, for: command) - } - app.configure() - if display.prefExists(key: prefKey, for: command) { - sender.stringValue = String(display.readPrefAsInt(key: prefKey, for: command)) - } else { - sender.stringValue = "" - } - } else { - sender.stringValue = "" - } - } - - @IBAction func maxDDCOverride(_ sender: NSTextField) { - let command = self.tagCommand(sender.tag) - let prefKey = PrefKey.maxDDCOverride - let value = sender.stringValue - if let display = display as? OtherDisplay { - if !value.isEmpty, let intValue = UInt(value) { - display.savePref(Int(intValue), key: prefKey, for: command) - } else { - display.removePref(key: prefKey, for: command) - } - app.configure() - if display.prefExists(key: prefKey, for: command) { - sender.stringValue = String(display.readPrefAsInt(key: prefKey, for: command)) - } else { - sender.stringValue = "" - } - } else { - sender.stringValue = "" - } - } - - @IBAction func curveDDC(_ sender: NSSlider) { - let command = self.tagCommand(sender.tag) - let prefKey = PrefKey.curveDDC - let value = Int(sender.intValue) - if let display = display as? OtherDisplay { - display.savePref(value, key: prefKey, for: command) - } - } - - @IBAction func invertDDC(_ sender: NSButton) { - let command = self.tagCommand(sender.tag) - let prefKey = PrefKey.invertDDC - if let display = display as? OtherDisplay { - switch sender.state { - case .on: - display.savePref(true, key: prefKey, for: command) - case .off: - display.savePref(false, key: prefKey, for: command) - default: - break - } - app.configure() - } - } - - @IBAction func remapDDC(_ sender: NSTextField) { - let command = self.tagCommand(sender.tag) - let prefKey = PrefKey.remapDDC - let value = sender.stringValue - let values = value.components(separatedBy: ",") - var normalizedValues: [String] = [] - var normalizedString: String = "" - for value in values { - let trimmedValue = value.trimmingCharacters(in: CharacterSet(charactersIn: " ")) - if !trimmedValue.isEmpty, let intValue = UInt8(trimmedValue, radix: 16), intValue != 0 { - normalizedValues.append(String(format: "%02x", intValue)) - } - } - var first = true - for normalizedValue in normalizedValues { - if !first { - normalizedString.append(", ") - } - normalizedString.append(normalizedValue) - first = false - } - if let display = display as? OtherDisplay { - display.savePref(normalizedString, key: prefKey, for: command) - } - sender.stringValue = normalizedString - } - - @IBAction func resetSettings(_: NSButton) { - if let disp = display { - if self.ddcButton.isEnabled { // This signifies that the DDC block is enabled - self.ddcButton.state = .on - self.ddcButtonToggled(self.ddcButton) - self.enabledButton.state = .on - self.enabledButtonToggled(self.enabledButton) - self.disableVolumeOSDButton.state = .off - self.disableVolumeOSDButton(self.disableVolumeOSDButton) - self.pollingModeMenu.selectItem(withTag: 2) - self.pollingModeValueChanged(self.pollingModeMenu) - self.longerDelayButton.state = .off - self.longerDelayButtonToggled(self.longerDelayButton) - self.enableMuteButton.state = .off - self.enableMuteButtonToggled(self.enableMuteButton) - self.friendlyName.stringValue = disp.name - self.friendlyNameValueChanged(self.friendlyName) - self.combinedBrightnessSwitchingPoint.intValue = 0 - self.combinedBrightnessSwitchingPoint(self.combinedBrightnessSwitchingPoint) - self.audioDeviceNameOverride.stringValue = "" - self.audioDeviceNameOverride(self.audioDeviceNameOverride) - - self.unavailableDDCBrightness.state = .on - self.unavailableDDCVolume.state = .on - self.unavailableDDCContrast.state = .on - - self.minDDCOverrideBrightness.stringValue = "" - self.minDDCOverrideVolume.stringValue = "" - self.minDDCOverrideContrast.stringValue = "" - - self.maxDDCOverrideBrightness.stringValue = "" - self.maxDDCOverrideVolume.stringValue = "" - self.maxDDCOverrideContrast.stringValue = "" - - self.curveDDCBrightness.intValue = 5 - self.curveDDCVolume.intValue = 5 - self.curveDDCContrast.intValue = 5 - - self.invertDDCBrightness.state = .off - self.invertDDCVolume.state = .off - self.invertDDCContrast.state = .off - - self.remapDDCBrightness.stringValue = "" - self.remapDDCVolume.stringValue = "" - self.remapDDCContrast.stringValue = "" - - self.unavailableDDC(self.unavailableDDCBrightness) - - self.unavailableDDC(self.unavailableDDCBrightness) - self.unavailableDDC(self.unavailableDDCVolume) - self.unavailableDDC(self.unavailableDDCContrast) - - self.minDDCOverride(self.minDDCOverrideBrightness) - self.minDDCOverride(self.minDDCOverrideVolume) - self.minDDCOverride(self.minDDCOverrideContrast) - - self.maxDDCOverride(self.maxDDCOverrideBrightness) - self.maxDDCOverride(self.maxDDCOverrideVolume) - self.maxDDCOverride(self.maxDDCOverrideContrast) - - self.curveDDC(self.curveDDCBrightness) - self.curveDDC(self.curveDDCVolume) - self.curveDDC(self.curveDDCContrast) - - self.invertDDC(self.invertDDCBrightness) - self.invertDDC(self.invertDDCVolume) - self.invertDDC(self.invertDDCContrast) - - self.remapDDC(self.remapDDCBrightness) - self.remapDDC(self.remapDDCVolume) - self.remapDDC(self.remapDDCContrast) - } - } - } -} diff --git a/MonitorControl/View Controllers/DisplaysPrefsViewController.swift b/MonitorControl/View Controllers/DisplaysPrefsViewController.swift deleted file mode 100644 index c6c3c52f..00000000 --- a/MonitorControl/View Controllers/DisplaysPrefsViewController.swift +++ /dev/null @@ -1,299 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import Cocoa -import os.log -import Preferences - -class DisplaysPrefsViewController: NSViewController, PreferencePane, NSTableViewDataSource, NSTableViewDelegate { - let preferencePaneIdentifier = Preferences.PaneIdentifier.displays - let preferencePaneTitle: String = NSLocalizedString("Displays", comment: "Shown in the main prefs window") - - var toolbarItemIcon: NSImage { - if !DEBUG_MACOS10, #available(macOS 11.0, *) { - return NSImage(systemSymbolName: "display.2", accessibilityDescription: "Displays")! - } else { - return NSImage(named: NSImage.infoName)! - } - } - - var displays: [Display] = [] - - @IBOutlet var displayList: NSTableView! - @IBOutlet var displayScrollView: NSScrollView! - @IBOutlet var constraintHeight: NSLayoutConstraint! - - override func viewDidLoad() { - super.viewDidLoad() - self.loadDisplayList() - } - - override func viewWillAppear() { - super.viewWillAppear() - } - - func showAdvanced() -> Bool { - let hide = !prefs.bool(forKey: PrefKey.showAdvancedSettings.rawValue) - self.loadDisplayList() - return !hide - } - - @objc func loadDisplayList() { - guard self.displayList != nil else { - os_log("Reloading Displays preferences display list skipped as there is no display list table yet.", type: .info) - return - } - os_log("Reloading Displays preferences display list", type: .info) - self.displays = DisplayManager.shared.getAllDisplays() - self.displayList?.reloadData() - self.updateDisplayListRowHeight() - } - - func numberOfRows(in _: NSTableView) -> Int { - return self.displays.count - } - - public static func isImac() -> Bool { - let platformExpertDevice = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IOPlatformExpertDevice")) - if let modelData = IORegistryEntryCreateCFProperty(platformExpertDevice, "model" as CFString, kCFAllocatorDefault, 0).takeRetainedValue() as? Data, let modelIdentifierCString = String(data: modelData, encoding: .utf8)?.cString(using: .utf8) { - let modelIdentifier = String(cString: modelIdentifierCString) - return modelIdentifier.contains("iMac") - } - return false - } - - public struct DisplayInfo { - var displayType = "" - var displayImage = "" - var controlMethod = "" - var controlStatus = "" - } - - public static func getDisplayInfo(display: Display) -> DisplayInfo { - var displayType = NSLocalizedString("Other Display", comment: "Shown in the Display Preferences") - var displayImage = "display.trianglebadge.exclamationmark" - var controlMethod = NSLocalizedString("No Control", comment: "Shown in the Display Preferences") + " ⚠️" - var controlStatus = NSLocalizedString("This display has an unspecified control status.", comment: "Shown in the Display Preferences") - if display.isVirtual { - displayType = NSLocalizedString("Virtual Display", comment: "Shown in the Display Preferences") - displayImage = "tv.and.mediabox" - controlMethod = NSLocalizedString("Software (Shade)", comment: "Shown in the Display Preferences") + " ⚠️" - controlStatus = NSLocalizedString("This is a virtual display (examples: AirPlay, Sidecar, display connected via a DisplayLink Dock or similar) which does not allow hardware or software gammatable control. Shading is used as a substitute but only in non-mirror scenarios. Mouse cursor will be unaffected and artifacts may appear when entering/leaving full screen mode.", comment: "Shown in the Display Preferences") - } else if display is OtherDisplay { - displayType = NSLocalizedString("External Display", comment: "Shown in the Display Preferences") - displayImage = "display" - if let otherDisplay: OtherDisplay = display as? OtherDisplay { - if otherDisplay.isSwOnly() { - controlMethod = NSLocalizedString("Software (Gamma)", comment: "Shown in the Display Preferences") + " ⚠️" - displayImage = "display.trianglebadge.exclamationmark" - controlStatus = NSLocalizedString("This display allows for software brightness control via gammatable manipulation as it does not support hardware control. Reasons for this might be using the HDMI port of a Mac mini (which blocks hardware DDC control) or having a blacklisted display.", comment: "Shown in the Display Preferences") - } else { - if otherDisplay.isSw() { - controlMethod = NSLocalizedString("Software (Gamma, Forced)", comment: "Shown in the Display Preferences") + " ⚠️" - controlStatus = NSLocalizedString("This display is reported to support hardware DDC control but the current settings allow for software control only.", comment: "Shown in the Display Preferences") - } else { - controlMethod = NSLocalizedString("Hardware (DDC)", comment: "Shown in the Display Preferences") - controlStatus = NSLocalizedString("This display is reported to support hardware DDC control. If you encounter issues, you can disable hardware DDC control to force software control.", comment: "Shown in the Display Preferences") - } - } - } - } else if let appleDisplay: AppleDisplay = display as? AppleDisplay { - if appleDisplay.isBuiltIn() { - displayType = NSLocalizedString("Built-in Display", comment: "Shown in the Display Preferences") - if self.isImac() { - displayImage = "desktopcomputer" - } else { - displayImage = "laptopcomputer" - } - } else { - displayType = NSLocalizedString("External Display", comment: "Shown in the Display Preferences") - displayImage = "display" - } - controlMethod = NSLocalizedString("Hardware (Apple)", comment: "Shown in the Display Preferences") - controlStatus = NSLocalizedString("This display supports native Apple brightness protocol. This allows macOS to control this display without MonitorControl as well.", comment: "Shown in the Display Preferences") - } - return DisplayInfo(displayType: displayType, displayImage: displayImage, controlMethod: controlMethod, controlStatus: controlStatus) - } - - func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? { - guard let tableColumn = tableColumn else { - return nil - } - os_log("Populating Displays Table") - let display = self.displays[row] - if let cell = tableView.makeView(withIdentifier: tableColumn.identifier, owner: nil) as? DisplaysPrefsCellView { - cell.display = display - - // ID - cell.displayId.stringValue = String(display.identifier) - // Firendly name - cell.friendlyName.stringValue = (display.readPrefAsString(key: .friendlyName) != "" ? display.readPrefAsString(key: .friendlyName) : display.name) - cell.friendlyName.isEditable = true - // Enabled - cell.enabledButton.state = display.readPrefAsBool(key: .isDisabled) ? .off : .on - // DDC - cell.ddcButton.state = ((display as? OtherDisplay)?.isSw() ?? true) ? .off : .on - if ((display as? OtherDisplay)?.isSwOnly() ?? true) || ((display as? OtherDisplay)?.isVirtual ?? true) { - cell.ddcButton.isEnabled = false - } else { - cell.ddcButton.isEnabled = true - } - // Display type, image, control method - let displayInfo = DisplaysPrefsViewController.getDisplayInfo(display: display) - cell.displayType.stringValue = displayInfo.displayType - cell.controlMethod.stringValue = displayInfo.controlMethod - cell.controlMethod.controlView?.toolTip = displayInfo.controlStatus - if !DEBUG_MACOS10, #available(macOS 11.0, *) { - cell.displayImage.image = NSImage(systemSymbolName: displayInfo.displayImage, accessibilityDescription: display.name)! - } else { - cell.displayImage.image = NSImage(named: NSImage.touchBarIconViewTemplateName)! - } - // Disable Volume OSD - if let otherDisplay = display as? OtherDisplay, !otherDisplay.isSw() { - cell.disableVolumeOSDButton.state = otherDisplay.readPrefAsBool(key: .hideOsd) ? .on : .off - cell.disableVolumeOSDButton.isEnabled = true - } else { - cell.disableVolumeOSDButton.state = .off - cell.disableVolumeOSDButton.isEnabled = false - } - // Advanced settings - if let otherDisplay = display as? OtherDisplay, !otherDisplay.isSwOnly() { - cell.pollingModeMenu.isEnabled = true - cell.pollingModeMenu.selectItem(withTag: otherDisplay.readPrefAsInt(key: .pollingMode)) - if otherDisplay.readPrefAsInt(key: .pollingMode) == PollingMode.custom.rawValue { - cell.pollingCount.isEnabled = true - } else { - cell.pollingCount.isEnabled = false - } - cell.pollingCount.stringValue = String(otherDisplay.pollingCount) - cell.longerDelayButton.isEnabled = true - cell.longerDelayButton.state = otherDisplay.readPrefAsBool(key: .longerDelay) ? .on : .off - cell.enableMuteButton.isEnabled = true - cell.enableMuteButton.state = otherDisplay.readPrefAsBool(key: .enableMuteUnmute) ? .on : .off - - cell.combinedBrightnessSwitchingPoint.isEnabled = true - cell.combinedBrightnessSwitchingPoint.intValue = Int32(otherDisplay.readPrefAsInt(key: .combinedBrightnessSwitchingPoint)) - - cell.audioDeviceNameOverride.isEnabled = true - cell.audioDeviceNameOverride.stringValue = otherDisplay.readPrefAsString(key: .audioDeviceNameOverride) - cell.updateWithCurrentAudioName.isEnabled = true - - cell.unavailableDDCBrightness.isEnabled = true - cell.unavailableDDCVolume.isEnabled = true - cell.unavailableDDCContrast.isEnabled = true - cell.unavailableDDCBrightness.state = !otherDisplay.readPrefAsBool(key: .unavailableDDC, for: .brightness) ? .on : .off - cell.unavailableDDCVolume.state = !otherDisplay.readPrefAsBool(key: .unavailableDDC, for: .audioSpeakerVolume) ? .on : .off - cell.unavailableDDCContrast.state = !otherDisplay.readPrefAsBool(key: .unavailableDDC, for: .contrast) ? .on : .off - - cell.minDDCOverrideBrightness.isEnabled = true - cell.minDDCOverrideVolume.isEnabled = true - cell.minDDCOverrideContrast.isEnabled = true - cell.minDDCOverrideBrightness.stringValue = otherDisplay.readPrefAsString(key: .minDDCOverride, for: .brightness) - cell.minDDCOverrideVolume.stringValue = otherDisplay.readPrefAsString(key: .minDDCOverride, for: .audioSpeakerVolume) - cell.minDDCOverrideContrast.stringValue = otherDisplay.readPrefAsString(key: .minDDCOverride, for: .contrast) - - cell.maxDDCOverrideBrightness.isEnabled = true - cell.maxDDCOverrideVolume.isEnabled = true - cell.maxDDCOverrideContrast.isEnabled = true - cell.maxDDCOverrideBrightness.stringValue = otherDisplay.readPrefAsString(key: .maxDDCOverride, for: .brightness) - cell.maxDDCOverrideVolume.stringValue = otherDisplay.readPrefAsString(key: .maxDDCOverride, for: .audioSpeakerVolume) - cell.maxDDCOverrideContrast.stringValue = otherDisplay.readPrefAsString(key: .maxDDCOverride, for: .contrast) - - cell.curveDDCBrightness.isEnabled = true - cell.curveDDCVolume.isEnabled = true - cell.curveDDCContrast.isEnabled = true - cell.curveDDCBrightness.intValue = Int32(otherDisplay.readPrefAsInt(key: .curveDDC, for: .brightness) == 0 ? 5 : otherDisplay.readPrefAsInt(key: .curveDDC, for: .brightness)) - cell.curveDDCVolume.intValue = Int32(otherDisplay.readPrefAsInt(key: .curveDDC, for: .audioSpeakerVolume) == 0 ? 5 : otherDisplay.readPrefAsInt(key: .curveDDC, for: .audioSpeakerVolume)) - cell.curveDDCContrast.intValue = Int32(otherDisplay.readPrefAsInt(key: .curveDDC, for: .contrast) == 0 ? 5 : otherDisplay.readPrefAsInt(key: .curveDDC, for: .contrast)) - - cell.invertDDCBrightness.state = otherDisplay.readPrefAsBool(key: .invertDDC, for: .brightness) ? .on : .off - cell.invertDDCVolume.state = otherDisplay.readPrefAsBool(key: .invertDDC, for: .audioSpeakerVolume) ? .on : .off - cell.invertDDCContrast.state = otherDisplay.readPrefAsBool(key: .invertDDC, for: .contrast) ? .on : .off - cell.invertDDCBrightness.isEnabled = true - cell.invertDDCVolume.isEnabled = true - cell.invertDDCContrast.isEnabled = true - - cell.remapDDCBrightness.isEnabled = true - cell.remapDDCVolume.isEnabled = true - cell.remapDDCContrast.isEnabled = true - cell.remapDDCBrightness.stringValue = otherDisplay.readPrefAsString(key: .remapDDC, for: .brightness) - cell.remapDDCVolume.stringValue = otherDisplay.readPrefAsString(key: .remapDDC, for: .audioSpeakerVolume) - cell.remapDDCContrast.stringValue = otherDisplay.readPrefAsString(key: .remapDDC, for: .contrast) - } else { - cell.pollingModeMenu.selectItem(withTag: 0) - cell.pollingModeMenu.isEnabled = false - cell.pollingCount.stringValue = "" - cell.pollingCount.isEnabled = false - cell.longerDelayButton.state = .off - cell.longerDelayButton.isEnabled = false - cell.enableMuteButton.state = .off - cell.enableMuteButton.isEnabled = false - - cell.combinedBrightnessSwitchingPoint.intValue = 0 - cell.combinedBrightnessSwitchingPoint.isEnabled = false - - cell.audioDeviceNameOverride.isEnabled = false - cell.audioDeviceNameOverride.stringValue = "" - cell.updateWithCurrentAudioName.isEnabled = false - - cell.unavailableDDCBrightness.state = .off - cell.unavailableDDCVolume.state = .off - cell.unavailableDDCContrast.state = .off - cell.unavailableDDCBrightness.isEnabled = false - cell.unavailableDDCVolume.isEnabled = false - cell.unavailableDDCContrast.isEnabled = false - - cell.minDDCOverrideBrightness.stringValue = "" - cell.minDDCOverrideVolume.stringValue = "" - cell.minDDCOverrideContrast.stringValue = "" - cell.minDDCOverrideBrightness.isEnabled = false - cell.minDDCOverrideVolume.isEnabled = false - cell.minDDCOverrideContrast.isEnabled = false - - cell.maxDDCOverrideBrightness.stringValue = "" - cell.maxDDCOverrideVolume.stringValue = "" - cell.maxDDCOverrideContrast.stringValue = "" - cell.maxDDCOverrideBrightness.isEnabled = false - cell.maxDDCOverrideVolume.isEnabled = false - cell.maxDDCOverrideContrast.isEnabled = false - - cell.curveDDCBrightness.intValue = 5 - cell.curveDDCVolume.intValue = 5 - cell.curveDDCContrast.intValue = 5 - cell.curveDDCBrightness.isEnabled = false - cell.curveDDCVolume.isEnabled = false - cell.curveDDCContrast.isEnabled = false - - cell.invertDDCBrightness.state = .off - cell.invertDDCVolume.state = .off - cell.invertDDCContrast.state = .off - cell.invertDDCBrightness.isEnabled = false - cell.invertDDCVolume.isEnabled = false - cell.invertDDCContrast.isEnabled = false - - cell.remapDDCBrightness.stringValue = "" - cell.remapDDCVolume.stringValue = "" - cell.remapDDCContrast.stringValue = "" - cell.remapDDCBrightness.isEnabled = false - cell.remapDDCVolume.isEnabled = false - cell.remapDDCContrast.isEnabled = false - } - if prefs.bool(forKey: PrefKey.showAdvancedSettings.rawValue) { - cell.advancedSettings.isHidden = false - } else { - cell.advancedSettings.isHidden = true - } - return cell - } - return nil - } - - func updateDisplayListRowHeight() { - if prefs.bool(forKey: PrefKey.showAdvancedSettings.rawValue) { - self.displayList?.rowHeight = 500 - self.constraintHeight?.constant = self.displayList.rowHeight + 15 - } else { - self.displayList?.rowHeight = 165 - self.constraintHeight?.constant = self.displayList.rowHeight * 2 + 15 - } - } -} diff --git a/MonitorControl/View Controllers/KeyboardPrefsViewController.swift b/MonitorControl/View Controllers/KeyboardPrefsViewController.swift deleted file mode 100644 index e14e8db0..00000000 --- a/MonitorControl/View Controllers/KeyboardPrefsViewController.swift +++ /dev/null @@ -1,277 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import Cocoa -import KeyboardShortcuts -import Preferences -import ServiceManagement - -class KeyboardPrefsViewController: NSViewController, PreferencePane { - let preferencePaneIdentifier = Preferences.PaneIdentifier.keyboard - let preferencePaneTitle: String = NSLocalizedString("Keyboard", comment: "Shown in the main prefs window") - - var toolbarItemIcon: NSImage { - if !DEBUG_MACOS10, #available(macOS 11.0, *) { - return NSImage(systemSymbolName: "keyboard", accessibilityDescription: "Keyboard")! - } else { - return NSImage(named: NSImage.infoName)! - } - } - - @IBOutlet var customBrightnessUp: NSView! - @IBOutlet var customBrightnessDown: NSView! - @IBOutlet var customContrastUp: NSView! - @IBOutlet var customContrastDown: NSView! - @IBOutlet var customVolumeUp: NSView! - @IBOutlet var customVolumeDown: NSView! - @IBOutlet var customMute: NSView! - - @IBOutlet var keyboardBrightness: NSPopUpButton! - @IBOutlet var keyboardVolume: NSPopUpButton! - @IBOutlet var disableAltBrightnessKeys: NSButton! - - @IBOutlet var allScreens: NSButton! - @IBOutlet var useFocusInsteadOfMouse: NSButton! - @IBOutlet var allScreensVolume: NSButton! - @IBOutlet var useAudioDeviceNameMatching: NSButton! - @IBOutlet var useFineScale: NSButton! - @IBOutlet var useFineScaleVolume: NSButton! - @IBOutlet var separateCombinedScale: NSButton! - - @IBOutlet var rowKeyboardBrightnessPopUp: NSGridRow! - @IBOutlet var rowKeyboardBrightnessText: NSGridRow! - @IBOutlet var rowDisableAltBrightnessKeysCheck: NSGridRow! - @IBOutlet var rowDisableAltBrightnessKeysText: NSGridRow! - @IBOutlet var rowCustomBrightnessShortcuts: NSGridRow! - @IBOutlet var rowUseFocusCheck: NSGridRow! - @IBOutlet var rowUseFocusText: NSGridRow! - @IBOutlet var rowCustomAudioShortcuts: NSGridRow! - @IBOutlet var rowUseAudioNameCheck: NSGridRow! - @IBOutlet var rowUseAudioNameText: NSGridRow! - @IBOutlet var rowUseFineScaleCheck: NSGridRow! - @IBOutlet var rowUseFineScaleText: NSGridRow! - @IBOutlet var rowSeparateCombinedScaleCheck: NSGridRow! - @IBOutlet var rowSeparateCombinedScaleText: NSGridRow! - - func showAdvanced() -> Bool { - let hide = !prefs.bool(forKey: PrefKey.showAdvancedSettings.rawValue) - - if self.keyboardBrightness.selectedTag() == KeyboardBrightness.media.rawValue { - self.rowKeyboardBrightnessPopUp.bottomPadding = hide ? -6 : -13 - self.rowKeyboardBrightnessText.isHidden = hide - if self.disableAltBrightnessKeys.state == .on { - self.rowDisableAltBrightnessKeysCheck.isHidden = false - self.rowDisableAltBrightnessKeysText.isHidden = false - } else { - self.rowDisableAltBrightnessKeysCheck.isHidden = hide - self.rowDisableAltBrightnessKeysText.isHidden = hide - } - self.rowCustomBrightnessShortcuts.isHidden = true - } else if self.keyboardBrightness.selectedTag() == KeyboardBrightness.custom.rawValue { - self.rowKeyboardBrightnessPopUp.bottomPadding = -6 - self.rowKeyboardBrightnessText.isHidden = true - self.rowDisableAltBrightnessKeysCheck.isHidden = true - self.rowDisableAltBrightnessKeysText.isHidden = true - self.rowCustomBrightnessShortcuts.isHidden = false - } else if self.keyboardBrightness.selectedTag() == KeyboardBrightness.both.rawValue { - self.rowKeyboardBrightnessPopUp.bottomPadding = hide ? -6 : -13 - self.rowKeyboardBrightnessText.isHidden = hide - if self.disableAltBrightnessKeys.state == .on { - self.rowDisableAltBrightnessKeysCheck.isHidden = false - self.rowDisableAltBrightnessKeysText.isHidden = false - } else { - self.rowDisableAltBrightnessKeysCheck.isHidden = hide - self.rowDisableAltBrightnessKeysText.isHidden = hide - } - self.rowCustomBrightnessShortcuts.isHidden = false - } else { - self.rowKeyboardBrightnessPopUp.bottomPadding = -6 - self.rowKeyboardBrightnessText.isHidden = true - self.rowDisableAltBrightnessKeysCheck.isHidden = true - self.rowDisableAltBrightnessKeysText.isHidden = true - self.rowCustomBrightnessShortcuts.isHidden = true - } - - if [KeyboardVolume.custom.rawValue, KeyboardVolume.both.rawValue].contains(self.keyboardVolume.selectedTag()) { - self.rowCustomAudioShortcuts.isHidden = false - } else { - self.rowCustomAudioShortcuts.isHidden = true - } - - if self.useFocusInsteadOfMouse.state == .on { - self.rowUseFocusCheck.isHidden = false - self.rowUseFocusText.isHidden = false - } else { - self.rowUseFocusCheck.isHidden = hide - self.rowUseFocusText.isHidden = hide - } - if self.useAudioDeviceNameMatching.state == .on { - self.rowUseAudioNameCheck.isHidden = false - self.rowUseAudioNameText.isHidden = false - } else { - self.rowUseAudioNameCheck.isHidden = hide - self.rowUseAudioNameText.isHidden = hide - } - - if self.useFineScale.state == .on { - self.rowUseFineScaleCheck.isHidden = false - self.rowUseFineScaleText.isHidden = false - } else { - self.rowUseFineScaleCheck.isHidden = hide - self.rowUseFineScaleText.isHidden = hide - } - - if self.separateCombinedScale.state == .on { - self.rowSeparateCombinedScaleCheck.isHidden = false - self.rowSeparateCombinedScaleText.isHidden = false - } else { - self.rowSeparateCombinedScaleCheck.isHidden = hide - self.rowSeparateCombinedScaleText.isHidden = hide - } - - return !hide - } - - override func viewDidLoad() { - super.viewDidLoad() - - let customBrightnessUpRecorder = KeyboardShortcuts.RecorderCocoa(for: .brightnessUp) - self.customBrightnessUp.addSubview(customBrightnessUpRecorder) - let customBrightnessDownRecorder = KeyboardShortcuts.RecorderCocoa(for: .brightnessDown) - self.customBrightnessDown.addSubview(customBrightnessDownRecorder) - let customContrastUpRecorder = KeyboardShortcuts.RecorderCocoa(for: .contrastUp) - self.customContrastUp.addSubview(customContrastUpRecorder) - let customContrastDownRecorder = KeyboardShortcuts.RecorderCocoa(for: .contrastDown) - self.customContrastDown.addSubview(customContrastDownRecorder) - let customVolumeUpRecorder = KeyboardShortcuts.RecorderCocoa(for: .volumeUp) - self.customVolumeUp.addSubview(customVolumeUpRecorder) - let customVolumeDownRecorder = KeyboardShortcuts.RecorderCocoa(for: .volumeDown) - self.customVolumeDown.addSubview(customVolumeDownRecorder) - let customMuteRecorder = KeyboardShortcuts.RecorderCocoa(for: .mute) - self.customMute.addSubview(customMuteRecorder) - self.populateSettings() - } - - func populateSettings() { - self.keyboardBrightness.selectItem(withTag: prefs.integer(forKey: PrefKey.keyboardBrightness.rawValue)) - self.keyboardVolume.selectItem(withTag: prefs.integer(forKey: PrefKey.keyboardVolume.rawValue)) - self.disableAltBrightnessKeys.state = prefs.bool(forKey: PrefKey.disableAltBrightnessKeys.rawValue) ? .on : .off - self.allScreens.state = prefs.bool(forKey: PrefKey.allScreensBrightness.rawValue) ? .on : .off - self.useFocusInsteadOfMouse.state = prefs.bool(forKey: PrefKey.useFocusInsteadOfMouse.rawValue) ? .on : .off - self.allScreensVolume.state = prefs.bool(forKey: PrefKey.allScreensVolume.rawValue) ? .on : .off - self.useAudioDeviceNameMatching.state = prefs.bool(forKey: PrefKey.useAudioDeviceNameMatching.rawValue) ? .on : .off - self.useFineScale.state = prefs.bool(forKey: PrefKey.useFineScaleBrightness.rawValue) ? .on : .off - self.useFineScaleVolume.state = prefs.bool(forKey: PrefKey.useFineScaleVolume.rawValue) ? .on : .off - self.separateCombinedScale.state = prefs.bool(forKey: PrefKey.separateCombinedScale.rawValue) ? .on : .off - self.allScreensClicked(self.allScreens) - self.allScreensVolumeClicked(self.allScreensVolume) - _ = self.showAdvanced() - } - - @IBAction func allScreensClicked(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(true, forKey: PrefKey.allScreensBrightness.rawValue) - self.useFocusInsteadOfMouse.state = .off - self.useFocusInsteadOfMouse.isEnabled = false - case .off: - prefs.set(false, forKey: PrefKey.allScreensBrightness.rawValue) - self.useFocusInsteadOfMouse.isEnabled = true - self.useFocusInsteadOfMouse.state = prefs.bool(forKey: PrefKey.useFocusInsteadOfMouse.rawValue) ? .on : .off - default: break - } - } - - @IBAction func useFocusInsteadOfMouseClicked(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(true, forKey: PrefKey.useFocusInsteadOfMouse.rawValue) - case .off: - prefs.set(false, forKey: PrefKey.useFocusInsteadOfMouse.rawValue) - default: break - } - _ = self.showAdvanced() - } - - @IBAction func allScreensVolumeClicked(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(true, forKey: PrefKey.allScreensVolume.rawValue) - self.useAudioDeviceNameMatching.state = .off - self.useAudioDeviceNameMatching.isEnabled = false - case .off: - prefs.set(false, forKey: PrefKey.allScreensVolume.rawValue) - self.useAudioDeviceNameMatching.isEnabled = true - self.useAudioDeviceNameMatching.state = prefs.bool(forKey: PrefKey.useAudioDeviceNameMatching.rawValue) ? .on : .off - default: break - } - app.updateMediaKeyTap() - } - - @IBAction func useAudioDeviceNameMatchingClicked(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(true, forKey: PrefKey.useAudioDeviceNameMatching.rawValue) - case .off: - prefs.set(false, forKey: PrefKey.useAudioDeviceNameMatching.rawValue) - default: break - } - app.updateMediaKeyTap() - _ = self.showAdvanced() - } - - @IBAction func useFineScaleClicked(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(true, forKey: PrefKey.useFineScaleBrightness.rawValue) - case .off: - prefs.set(false, forKey: PrefKey.useFineScaleBrightness.rawValue) - default: break - } - _ = self.showAdvanced() - } - - @IBAction func useFineScaleVolumeClicked(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(true, forKey: PrefKey.useFineScaleVolume.rawValue) - case .off: - prefs.set(false, forKey: PrefKey.useFineScaleVolume.rawValue) - default: break - } - } - - @IBAction func separateCombinedScale(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(true, forKey: PrefKey.separateCombinedScale.rawValue) - case .off: - prefs.set(false, forKey: PrefKey.separateCombinedScale.rawValue) - default: break - } - _ = self.showAdvanced() - } - - @IBAction func disableAltBrightnessKeys(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(true, forKey: PrefKey.disableAltBrightnessKeys.rawValue) - case .off: - prefs.set(false, forKey: PrefKey.disableAltBrightnessKeys.rawValue) - default: break - } - _ = self.showAdvanced() - app.updateMediaKeyTap() - } - - @IBAction func keyboardBrightness(_ sender: NSPopUpButton) { - prefs.set(sender.selectedTag(), forKey: PrefKey.keyboardBrightness.rawValue) - app.updateMenusAndKeys() - _ = self.showAdvanced() - } - - @IBAction func keyboardVolume(_ sender: NSPopUpButton) { - prefs.set(sender.selectedTag(), forKey: PrefKey.keyboardVolume.rawValue) - app.updateMenusAndKeys() - _ = self.showAdvanced() - } -} diff --git a/MonitorControl/View Controllers/MainPrefsViewController.swift b/MonitorControl/View Controllers/MainPrefsViewController.swift deleted file mode 100644 index affbd788..00000000 --- a/MonitorControl/View Controllers/MainPrefsViewController.swift +++ /dev/null @@ -1,259 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import Cocoa -import os.log -import Preferences -import ServiceManagement - -class MainPrefsViewController: NSViewController, PreferencePane { - let preferencePaneIdentifier = Preferences.PaneIdentifier.main - let preferencePaneTitle: String = NSLocalizedString("General", comment: "Shown in the main prefs window") - - var toolbarItemIcon: NSImage { - if !DEBUG_MACOS10, #available(macOS 11.0, *) { - return NSImage(systemSymbolName: "switch.2", accessibilityDescription: "Display")! - } else { - return NSImage(named: NSImage.infoName)! - } - } - - @IBOutlet var startAtLogin: NSButton! - @IBOutlet var automaticUpdateCheck: NSButton! - @IBOutlet var disableSoftwareFallback: NSButton! - @IBOutlet var combinedBrightness: NSButton! - @IBOutlet var enableSmooth: NSButton! - @IBOutlet var enableBrightnessSync: NSButton! - @IBOutlet var showAdvancedDisplays: NSButton! - @IBOutlet var notEnableDDCDuringStartup: NSButton! - @IBOutlet var writeDDCOnStartup: NSButton! - @IBOutlet var readDDCOnStartup: NSButton! - @IBOutlet var rowStartupSeparator: NSGridRow! - @IBOutlet var rowDoNothingStartupCheck: NSGridRow! - @IBOutlet var rowDoNothingStartupText: NSGridRow! - @IBOutlet var rowWriteStartupCheck: NSGridRow! - @IBOutlet var rowWriteStartupText: NSGridRow! - @IBOutlet var rowReadStartupCheck: NSGridRow! - @IBOutlet var rowReadStartupText: NSGridRow! - @IBOutlet var rowSafeModeText: NSGridRow! - @IBOutlet var rowResetButton: NSGridRow! - @IBOutlet var rowDisableSoftwareFallbackCheck: NSGridRow! - @IBOutlet var rowDisableSoftwareFallbackText: NSGridRow! - - func showAdvanced() -> Bool { - let hide = !prefs.bool(forKey: PrefKey.showAdvancedSettings.rawValue) - if self.notEnableDDCDuringStartup.state == .on { - self.rowStartupSeparator.isHidden = hide - self.rowDoNothingStartupCheck.isHidden = hide - self.rowDoNothingStartupText.isHidden = hide - self.rowWriteStartupCheck.isHidden = hide - self.rowWriteStartupText.isHidden = hide - self.rowReadStartupCheck.isHidden = hide - self.rowReadStartupText.isHidden = hide - self.rowSafeModeText.isHidden = hide - } else { - self.rowStartupSeparator.isHidden = false - self.rowDoNothingStartupCheck.isHidden = false - self.rowDoNothingStartupText.isHidden = false - if self.writeDDCOnStartup.state == .on { - self.rowWriteStartupCheck.isHidden = false - self.rowWriteStartupText.isHidden = false - self.rowReadStartupCheck.isHidden = hide - self.rowReadStartupText.isHidden = hide - } else { - self.rowWriteStartupCheck.isHidden = hide - self.rowWriteStartupText.isHidden = hide - self.rowReadStartupCheck.isHidden = false - self.rowReadStartupText.isHidden = false - } - self.rowSafeModeText.isHidden = false - } - if self.disableSoftwareFallback.state == .on { - self.rowDisableSoftwareFallbackCheck.isHidden = false - self.rowDisableSoftwareFallbackText.isHidden = false - } else { - self.rowDisableSoftwareFallbackCheck.isHidden = hide - self.rowDisableSoftwareFallbackText.isHidden = hide - } - self.rowResetButton.isHidden = hide - return !hide - } - - @available(macOS, deprecated: 10.10) - override func viewDidLoad() { - super.viewDidLoad() - self.populateSettings() - } - - @available(macOS, deprecated: 10.10) - func populateSettings() { - // This is marked as deprectated but according to the function header it still does not have a replacement as of macOS 12 Monterey and is valid to use. - let startAtLogin = (SMCopyAllJobDictionaries(kSMDomainUserLaunchd).takeRetainedValue() as? [[String: AnyObject]])?.first { $0["Label"] as? String == "\(Bundle.main.bundleIdentifier!)Helper" }?["OnDemand"] as? Bool ?? false - self.startAtLogin.state = startAtLogin ? .on : .off - self.automaticUpdateCheck.state = prefs.bool(forKey: PrefKey.SUEnableAutomaticChecks.rawValue) ? .on : .off - self.combinedBrightness.state = prefs.bool(forKey: PrefKey.disableCombinedBrightness.rawValue) ? .off : .on - self.disableSoftwareFallback.state = prefs.bool(forKey: PrefKey.disableSoftwareFallback.rawValue) ? .on : .off - self.enableSmooth.state = prefs.bool(forKey: PrefKey.disableSmoothBrightness.rawValue) ? .off : .on - self.enableBrightnessSync.state = prefs.bool(forKey: PrefKey.enableBrightnessSync.rawValue) ? .on : .off - self.showAdvancedDisplays.state = prefs.bool(forKey: PrefKey.showAdvancedSettings.rawValue) ? .on : .off - self.notEnableDDCDuringStartup.state = !prefs.bool(forKey: PrefKey.enableDDCDuringStartup.rawValue) ? .on : .off - self.writeDDCOnStartup.state = !prefs.bool(forKey: PrefKey.readDDCInsteadOfRestoreValues.rawValue) && prefs.bool(forKey: PrefKey.enableDDCDuringStartup.rawValue) ? .on : .off - self.readDDCOnStartup.state = prefs.bool(forKey: PrefKey.readDDCInsteadOfRestoreValues.rawValue) && prefs.bool(forKey: PrefKey.enableDDCDuringStartup.rawValue) ? .on : .off - // Preload Display preferences to some extent to properly set up size in orther that animation won't fail - menuslidersPrefsVc?.view.layoutSubtreeIfNeeded() - keyboardPrefsVc?.view.layoutSubtreeIfNeeded() - displaysPrefsVc?.view.layoutSubtreeIfNeeded() - aboutPrefsVc?.view.layoutSubtreeIfNeeded() - _ = self.showAdvanced() - } - - @IBAction func startAtLoginClicked(_ sender: NSButton) { - switch sender.state { - case .on: - app.setStartAtLogin(enabled: true) - case .off: - app.setStartAtLogin(enabled: false) - default: break - } - } - - @IBAction func automaticUpdateCheck(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(true, forKey: PrefKey.SUEnableAutomaticChecks.rawValue) - case .off: - prefs.set(false, forKey: PrefKey.SUEnableAutomaticChecks.rawValue) - default: break - } - } - - @IBAction func combinedBrightness(_ sender: NSButton) { - for display in DisplayManager.shared.getDdcCapableDisplays() where !display.isSw() { - _ = display.setDirectBrightness(1) - } - DisplayManager.shared.resetSwBrightnessForAllDisplays(async: false) - switch sender.state { - case .on: - prefs.set(false, forKey: PrefKey.disableCombinedBrightness.rawValue) - case .off: - prefs.set(true, forKey: PrefKey.disableCombinedBrightness.rawValue) - default: break - } - app.configure() - } - - @IBAction func disableSoftwareFallback(_ sender: NSButton) { - switch sender.state { - case .on: - for display in DisplayManager.shared.getOtherDisplays() where display.isSw() { - _ = display.setBrightness(1) - } - prefs.set(true, forKey: PrefKey.disableSoftwareFallback.rawValue) - case .off: - prefs.set(false, forKey: PrefKey.disableSoftwareFallback.rawValue) - for display in DisplayManager.shared.getOtherDisplays() where display.isSw() { - _ = display.setBrightness(1) - } - default: break - } - _ = self.showAdvanced() - app.configure() - } - - @IBAction func enableSmooth(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(false, forKey: PrefKey.disableSmoothBrightness.rawValue) - case .off: - prefs.set(true, forKey: PrefKey.disableSmoothBrightness.rawValue) - default: break - } - } - - @IBAction func enableBrightnessSync(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(true, forKey: PrefKey.enableBrightnessSync.rawValue) - case .off: - prefs.set(false, forKey: PrefKey.enableBrightnessSync.rawValue) - default: break - } - } - - @IBAction func notEnableDDCDuringStartupClicked(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(false, forKey: PrefKey.enableDDCDuringStartup.rawValue) - prefs.set(false, forKey: PrefKey.readDDCInsteadOfRestoreValues.rawValue) - self.writeDDCOnStartup.state = .off - self.readDDCOnStartup.state = .off - default: break - } - _ = self.showAdvanced() - } - - @IBAction func writeDDCOnStartupClicked(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(false, forKey: PrefKey.readDDCInsteadOfRestoreValues.rawValue) - prefs.set(true, forKey: PrefKey.enableDDCDuringStartup.rawValue) - self.notEnableDDCDuringStartup.state = .off - self.readDDCOnStartup.state = .off - default: break - } - _ = self.showAdvanced() - } - - @IBAction func readDDCOnStartupClicked(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(true, forKey: PrefKey.readDDCInsteadOfRestoreValues.rawValue) - prefs.set(true, forKey: PrefKey.enableDDCDuringStartup.rawValue) - self.notEnableDDCDuringStartup.state = .off - self.writeDDCOnStartup.state = .off - default: break - } - _ = self.showAdvanced() - } - - @IBAction func showAdvancedClicked(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(true, forKey: PrefKey.showAdvancedSettings.rawValue) - case .off: - prefs.set(false, forKey: PrefKey.showAdvancedSettings.rawValue) - default: break - } - _ = self.showAdvanced() - _ = menuslidersPrefsVc?.showAdvanced() - _ = keyboardPrefsVc?.showAdvanced() - _ = displaysPrefsVc?.showAdvanced() - menuslidersPrefsVc?.view.layoutSubtreeIfNeeded() - keyboardPrefsVc?.view.layoutSubtreeIfNeeded() - displaysPrefsVc?.view.layoutSubtreeIfNeeded() - aboutPrefsVc?.view.layoutSubtreeIfNeeded() - } - - @available(macOS, deprecated: 10.10) - func resetSheetModalHander(modalResponse: NSApplication.ModalResponse) { - if modalResponse == NSApplication.ModalResponse.alertFirstButtonReturn { - app.preferenceReset() - self.populateSettings() - menuslidersPrefsVc?.populateSettings() - keyboardPrefsVc?.populateSettings() - self.showAdvancedClicked(self.showAdvancedDisplays) - } - } - - @available(macOS, deprecated: 10.10) - @IBAction func resetPrefsClicked(_: NSButton) { - let alert = NSAlert() - alert.messageText = NSLocalizedString("Reset Preferences?", comment: "Shown in the alert dialog") - alert.informativeText = NSLocalizedString("Are you sure you want to reset all preferences?", comment: "Shown in the alert dialog") - alert.addButton(withTitle: NSLocalizedString("Yes", comment: "Shown in the alert dialog")) - alert.addButton(withTitle: NSLocalizedString("No", comment: "Shown in the alert dialog")) - alert.alertStyle = NSAlert.Style.warning - if let window = self.view.window { - alert.beginSheetModal(for: window, completionHandler: { modalResponse in self.resetSheetModalHander(modalResponse: modalResponse) }) - } - } -} diff --git a/MonitorControl/View Controllers/MenuslidersPrefsViewController.swift b/MonitorControl/View Controllers/MenuslidersPrefsViewController.swift deleted file mode 100644 index 581fe475..00000000 --- a/MonitorControl/View Controllers/MenuslidersPrefsViewController.swift +++ /dev/null @@ -1,309 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import Cocoa -import os.log -import Preferences -import ServiceManagement - -class MenuslidersPrefsViewController: NSViewController, PreferencePane { - let preferencePaneIdentifier = Preferences.PaneIdentifier.menusliders - let preferencePaneTitle: String = NSLocalizedString("App menu", comment: "Shown in the main prefs window") - - var toolbarItemIcon: NSImage { - if !DEBUG_MACOS10, #available(macOS 11.0, *) { - return NSImage(systemSymbolName: "filemenu.and.cursorarrow", accessibilityDescription: "App menu")! - } else { - return NSImage(named: NSImage.infoName)! - } - } - - @IBOutlet var iconShow: NSPopUpButton! - @IBOutlet var menuItemStyle: NSPopUpButton! - @IBOutlet var quitApplication: NSButton! - - @IBOutlet var showBrightnessSlider: NSButton! - @IBOutlet var showAppleFromMenu: NSButton! - @IBOutlet var showVolumeSlider: NSButton! - @IBOutlet var showContrastSlider: NSButton! - - @IBOutlet var slidersSeparate: NSButton! - @IBOutlet var slidersRelevant: NSButton! - @IBOutlet var slidersCombine: NSButton! - - @IBOutlet var enableSliderSnap: NSButton! - @IBOutlet var showTickMarks: NSButton! - @IBOutlet var enableSliderPercent: NSButton! - - @IBOutlet var rowIconShow: NSGridRow! - @IBOutlet var rowMenuItemStyle: NSGridRow! - @IBOutlet var rowQuitButton: NSGridRow! - @IBOutlet var rowQuitButtonText: NSGridRow! - @IBOutlet var rowHideIconSpearator: NSGridRow! - - @IBOutlet var rowShowContrastCheck: NSGridRow! - @IBOutlet var rowShowContrastText: NSGridRow! - - @IBOutlet var rowSlidersSeparator: NSButton! - @IBOutlet var rowSlidersSeparate: NSButton! - @IBOutlet var rowSlidersRelevant: NSButton! - @IBOutlet var rowSlidersCombine: NSButton! - @IBOutlet var rowSlidersCombineText: NSButton! - - @IBOutlet var rowTickCheck: NSGridRow! - @IBOutlet var rowTickText: NSGridRow! - @IBOutlet var rowPercentCheck: NSGridRow! - @IBOutlet var rowPercentText: NSGridRow! - - // swiftlint:disable cyclomatic_complexity - func showAdvanced() -> Bool { - let hide = !prefs.bool(forKey: PrefKey.showAdvancedSettings.rawValue) - - var doNotHideRowIconSeparator = false - - if self.iconShow.selectedTag() != MenuIcon.show.rawValue { - self.rowIconShow.isHidden = false - doNotHideRowIconSeparator = true - } else { - self.rowIconShow.isHidden = hide - } - - if app.macOS10() { - self.rowMenuItemStyle.isHidden = true - } else if self.menuItemStyle.selectedTag() != MenuItemStyle.text.rawValue { - self.rowMenuItemStyle.isHidden = false - doNotHideRowIconSeparator = true - } else { - self.rowMenuItemStyle.isHidden = hide - } - - if self.iconShow.selectedTag() != MenuIcon.show.rawValue || self.menuItemStyle.selectedTag() == MenuItemStyle.hide.rawValue { - self.rowQuitButton.isHidden = false - self.rowQuitButtonText.isHidden = false - doNotHideRowIconSeparator = true - } else { - self.rowQuitButton.isHidden = true - self.rowQuitButtonText.isHidden = true - } - - if doNotHideRowIconSeparator { - self.rowHideIconSpearator.isHidden = false - self.rowHideIconSpearator.isHidden = false - } else { - self.rowHideIconSpearator.isHidden = hide - self.rowHideIconSpearator.isHidden = hide - } - - if self.showContrastSlider.state == .on { - self.rowShowContrastCheck.isHidden = false - self.rowShowContrastText.isHidden = false - } else { - self.rowShowContrastCheck.isHidden = hide - self.rowShowContrastText.isHidden = hide - } - - if self.slidersSeparate.state == .on { - self.rowSlidersSeparator.isHidden = hide - self.rowSlidersSeparate.isHidden = hide - self.rowSlidersRelevant.isHidden = hide - self.rowSlidersCombine.isHidden = hide - self.rowSlidersCombineText.isHidden = hide - } else { - self.rowSlidersSeparator.isHidden = false - self.rowSlidersSeparate.isHidden = false - if self.slidersRelevant.state == .on { - self.rowSlidersRelevant.isHidden = false - } else { - self.rowSlidersRelevant.isHidden = hide - } - if self.slidersCombine.state == .on { - self.rowSlidersCombine.isHidden = false - self.rowSlidersCombineText.isHidden = false - } else { - self.rowSlidersCombine.isHidden = hide - self.rowSlidersCombineText.isHidden = hide - } - } - - if app.macOS10() { - self.rowTickCheck.isHidden = true - self.rowTickText.isHidden = true - } else if self.showTickMarks.state == .on { - self.rowTickCheck.isHidden = false - self.rowTickText.isHidden = false - } else { - self.rowTickCheck.isHidden = hide - self.rowTickText.isHidden = hide - } - - if self.enableSliderPercent.state == .on { - self.rowPercentCheck.isHidden = false - self.rowPercentText.isHidden = false - } else { - self.rowPercentCheck.isHidden = hide - self.rowPercentText.isHidden = hide - } - return !hide - } - - // swiftlint:enable cyclomatic_complexity - - override func viewDidLoad() { - super.viewDidLoad() - self.populateSettings() - } - - func populateSettings() { - self.iconShow.selectItem(withTag: prefs.integer(forKey: PrefKey.menuIcon.rawValue)) - self.menuItemStyle.selectItem(withTag: prefs.integer(forKey: PrefKey.menuItemStyle.rawValue)) - self.showBrightnessSlider.state = !prefs.bool(forKey: PrefKey.hideBrightness.rawValue) ? .on : .off - if !prefs.bool(forKey: PrefKey.hideBrightness.rawValue) { - self.showAppleFromMenu.isEnabled = true - self.showAppleFromMenu.state = !prefs.bool(forKey: PrefKey.hideAppleFromMenu.rawValue) ? .on : .off - } else { - self.showAppleFromMenu.state = .off - self.showAppleFromMenu.isEnabled = false - } - self.showContrastSlider.state = prefs.bool(forKey: PrefKey.showContrast.rawValue) ? .on : .off - - self.slidersSeparate.state = prefs.bool(forKey: PrefKey.slidersRelevant.rawValue) || prefs.bool(forKey: PrefKey.slidersCombine.rawValue) ? .off : .on - self.slidersRelevant.state = prefs.bool(forKey: PrefKey.slidersRelevant.rawValue) ? .on : .off - self.slidersCombine.state = prefs.bool(forKey: PrefKey.slidersCombine.rawValue) ? .on : .off - - self.showVolumeSlider.state = prefs.bool(forKey: PrefKey.hideVolume.rawValue) ? .off : .on - self.enableSliderSnap.state = prefs.bool(forKey: PrefKey.enableSliderSnap.rawValue) ? .on : .off - self.showTickMarks.state = prefs.bool(forKey: PrefKey.showTickMarks.rawValue) ? .on : .off - self.enableSliderPercent.state = prefs.bool(forKey: PrefKey.enableSliderPercent.rawValue) ? .on : .off - _ = self.showAdvanced() - } - - @IBAction func icon(_ sender: NSPopUpButton) { - prefs.set(sender.selectedTag(), forKey: PrefKey.menuIcon.rawValue) - app.updateMenusAndKeys() - _ = self.showAdvanced() - } - - @IBAction func menuItemStyle(_ sender: NSPopUpButton) { - prefs.set(sender.selectedTag(), forKey: PrefKey.menuItemStyle.rawValue) - app.updateMenusAndKeys() - _ = self.showAdvanced() - } - - @IBAction func quitApplicationClicked(_: NSButton) { - NSApplication.shared.terminate(self) - } - - @IBAction func showBrightnessSliderClicked(_ sender: NSButton) { - switch sender.state { - case .off: - prefs.set(true, forKey: PrefKey.hideBrightness.rawValue) - self.showAppleFromMenu.state = .off - self.showAppleFromMenu.isEnabled = false - case .on: - prefs.set(false, forKey: PrefKey.hideBrightness.rawValue) - self.showAppleFromMenu.isEnabled = true - self.showAppleFromMenu.state = !prefs.bool(forKey: PrefKey.hideAppleFromMenu.rawValue) ? .on : .off - default: break - } - app.updateMenusAndKeys() - } - - @IBAction func showAppleFromMenuClicked(_ sender: NSButton) { - switch sender.state { - case .off: - prefs.set(true, forKey: PrefKey.hideAppleFromMenu.rawValue) - case .on: - prefs.set(false, forKey: PrefKey.hideAppleFromMenu.rawValue) - default: break - } - app.updateMenusAndKeys() - } - - @IBAction func showVolumeSliderClicked(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(false, forKey: PrefKey.hideVolume.rawValue) - case .off: - prefs.set(true, forKey: PrefKey.hideVolume.rawValue) - default: break - } - app.updateMenusAndKeys() - } - - @IBAction func showContrastSliderClicked(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(true, forKey: PrefKey.showContrast.rawValue) - case .off: - prefs.set(false, forKey: PrefKey.showContrast.rawValue) - default: break - } - app.updateMenusAndKeys() - _ = self.showAdvanced() - } - - @IBAction func enableSliderSnapClicked(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(true, forKey: PrefKey.enableSliderSnap.rawValue) - case .off: - prefs.set(false, forKey: PrefKey.enableSliderSnap.rawValue) - default: break - } - app.updateMenusAndKeys() - _ = self.showAdvanced() - } - - @IBAction func slidersSeparate(_: NSButton) { - prefs.set(false, forKey: PrefKey.slidersCombine.rawValue) - prefs.set(false, forKey: PrefKey.slidersRelevant.rawValue) - self.slidersSeparate.state = .on - self.slidersCombine.state = .off - self.slidersRelevant.state = .off - app.updateMenusAndKeys() - _ = self.showAdvanced() - } - - @IBAction func slidersRelevant(_: NSButton) { - prefs.set(false, forKey: PrefKey.slidersCombine.rawValue) - prefs.set(true, forKey: PrefKey.slidersRelevant.rawValue) - self.slidersSeparate.state = .off - self.slidersCombine.state = .off - self.slidersRelevant.state = .on - app.updateMenusAndKeys() - _ = self.showAdvanced() - } - - @IBAction func slidersCombine(_: NSButton) { - prefs.set(true, forKey: PrefKey.slidersCombine.rawValue) - prefs.set(false, forKey: PrefKey.slidersRelevant.rawValue) - self.slidersSeparate.state = .off - self.slidersCombine.state = .on - self.slidersRelevant.state = .off - app.updateMenusAndKeys() - _ = self.showAdvanced() - } - - @IBAction func showTickMarks(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(true, forKey: PrefKey.showTickMarks.rawValue) - case .off: - prefs.set(false, forKey: PrefKey.showTickMarks.rawValue) - default: break - } - app.updateMenusAndKeys() - _ = self.showAdvanced() - } - - @IBAction func enableSliderPercent(_ sender: NSButton) { - switch sender.state { - case .on: - prefs.set(true, forKey: PrefKey.enableSliderPercent.rawValue) - case .off: - prefs.set(false, forKey: PrefKey.enableSliderPercent.rawValue) - default: break - } - app.updateMenusAndKeys() - _ = self.showAdvanced() - } -} diff --git a/MonitorControl/main.swift b/MonitorControl/main.swift deleted file mode 100644 index 538ff863..00000000 --- a/MonitorControl/main.swift +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright © MonitorControl. @JoniVR, @theOneyouseek, @waydabber and others - -import Cocoa -import Foundation - -let DEBUG_SW = false -let DEBUG_VIRTUAL = false -let DEBUG_MACOS10 = false -let DEBUG_GAMMA_ENFORCER = false - -let MIN_PREVIOUS_BUILD_NUMBER = 6262 - -var app: AppDelegate! -var menu: MenuHandler! - -let prefs = UserDefaults.standard -let storyboard = NSStoryboard(name: "Main", bundle: Bundle.main) -let mainPrefsVc = storyboard.instantiateController(withIdentifier: "MainPrefsVC") as? MainPrefsViewController -let displaysPrefsVc = storyboard.instantiateController(withIdentifier: "DisplaysPrefsVC") as? DisplaysPrefsViewController -let menuslidersPrefsVc = storyboard.instantiateController(withIdentifier: "MenuslidersPrefsVC") as? MenuslidersPrefsViewController -let keyboardPrefsVc = storyboard.instantiateController(withIdentifier: "KeyboardPrefsVC") as? KeyboardPrefsViewController -let aboutPrefsVc = storyboard.instantiateController(withIdentifier: "AboutPrefsVC") as? AboutPrefsViewController - -autoreleasepool { () -> Void in - let mc = NSApplication.shared - let mcDelegate = AppDelegate() - mc.delegate = mcDelegate - mc.run() -} diff --git a/MonitorControlHelper/Info.plist b/MonitorControlHelper/Info.plist deleted file mode 100644 index 0f1277ba..00000000 --- a/MonitorControlHelper/Info.plist +++ /dev/null @@ -1,34 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(MARKETING_VERSION) - CFBundleVersion - 6293 - LSApplicationCategoryType - public.app-category.utilities - LSBackgroundOnly - - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - NSHumanReadableCopyright - MIT Licensed. 2018. - NSPrincipalClass - NSApplication - - diff --git a/MonitorControlHelper/MonitorControlHelper.entitlements b/MonitorControlHelper/MonitorControlHelper.entitlements deleted file mode 100644 index ba00d977..00000000 --- a/MonitorControlHelper/MonitorControlHelper.entitlements +++ /dev/null @@ -1,12 +0,0 @@ - - - - - com.apple.security.app-sandbox - - com.apple.security.cs.allow-jit - - com.apple.security.files.user-selected.read-only - - - diff --git a/MonitorControlHelper/main.swift b/MonitorControlHelper/main.swift deleted file mode 100644 index 92515412..00000000 --- a/MonitorControlHelper/main.swift +++ /dev/null @@ -1,26 +0,0 @@ -import Cocoa - -class AppDelegate: NSObject, NSApplicationDelegate { - func applicationDidFinishLaunching(_: Notification) { - let mainBundleID = Bundle.main.bundleIdentifier!.replacingOccurrences(of: "Helper", with: "") - - let bundlePath = Bundle.main.bundlePath as NSString - - guard NSRunningApplication.runningApplications(withBundleIdentifier: mainBundleID).isEmpty else { - return NSApp.terminate(self) - } - - let pathComponents = bundlePath.pathComponents - let path = NSString.path(withComponents: Array(pathComponents[0 ..< (pathComponents.count - 4)])) - - NSWorkspace.shared.launchApplication(path) - NSApp.terminate(nil) - } - - func applicationWillTerminate(_: Notification) {} -} - -let app = NSApplication.shared -let delegate = AppDelegate() -app.delegate = delegate -app.run() diff --git a/README.md b/README.md index 0ac4ce6d..36bce8cc 100644 --- a/README.md +++ b/README.md @@ -1,108 +1,17 @@ -App icon +# MonitorControl Github Pages -

MonitorControl - Now with Apple Silicon support!

- -

-Control your external display brightness and volume!
-Use menulet sliders or the native Apple keyboard keys!
-Shows native brightness and volume OSDs as well!
-

+## Development -
- -
- - - -downloads - - - -latest version - - - -license - - - -platform - - - -backers - - -
-
+### Using Docker (recommended) -
+See [starefossen/github-pages](https://github.com/Starefossen/docker-github-pages): -Screenshot
- -
- -## Download - -Go to [Releases](https://github.com/MonitorControl/MonitorControl/releases) and download the latest `.dmg` - -## Compatibility - -- macOS Big Sur (`macOS 11`) and newer are supported -- Current version is compatible with macOS Catalina (`10.15`) as well (with some limitations). - -_(Note: you can download [version 2.1.0](https://github.com/MonitorControl/MonitorControl/releases/tag/v2.1.0) for Sierra `10.12` and [version 3.1.1](https://github.com/MonitorControl/MonitorControl/releases/tag/v3.1.1) for Mojave `10.14` support)_ - -## How to help - -Open [issues](https://github.com/MonitorControl/MonitorControl/issues) if you have a question, an enhancement to suggest or a bug you've found. If you want you can fork the code yourself and submit a pull request to improve the app. - -## How to build - -### Required - -- Xcode -- [Swiftlint](https://github.com/realm/SwiftLint) -- [SwiftFormat](https://github.com/nicklockwood/SwiftFormat) -- [BartyCrouch](https://github.com/Flinesoft/BartyCrouch) (for updating localizations) - -Clone the project via this Terminal command: - -``` -git clone https://github.com/MonitorControl/MonitorControl.git +```sh +docker run -it --rm -v "$PWD":/usr/src/app -p "4000:4000" starefossen/github-pages ``` -If you want to clone one of the branches, add `--single-branch --branch [branchname]` after the `clone` option. - -You're all set ! Now open the `MonitorControl.xcodeproj` with Xcode! The dependencies will automatically get downloaded once you open the project. If they don't: - -`File > Packages > Resolve Package Versions` - -(In earlier XCode versions `Packages` menu is titled `Swift Packages`) - -### Third party dependencies - -- [MediaKeyTap](https://github.com/MonitorControl/MediaKeyTap) -- [Preferences](https://github.com/sindresorhus/Preferences) -- [SimplyCoreAudio](https://github.com/rnine/SimplyCoreAudio) -- [KeyboardShortcuts](https://github.com/sindresorhus/KeyboardShortcuts) -- [Sparkle](https://github.com/sparkle-project/Sparkle) - -## Contributors - -- [@the0neyouseek](https://github.com/the0neyouseek) -- [@JoniVR](https://github.com/JoniVR) -- [@waydabber](https://github.com/waydabber) +or run the handy `docker.sh` script. -## Thanks +### Using jekyll local install -- [@bluejamesbond](https://github.com/bluejamesbond/) (original developer) -- [@Tyilo](https://github.com/Tyilo/) (fork) -- [@Bensge](https://github.com/Bensge/) - (used some code from his project [NativeDisplayBrightness](https://github.com/Bensge/NativeDisplayBrightness)) -- [@nhurden](https://github.com/nhurden/) (for the original MediaKeyTap) -- [@kfix](https://github.com/kfix/ddcctl) (for ddcctl) -- [@reitermarkus](https://github.com/reitermarkus) (for DDC.Swift) -- [@zhuowei](https://github.com/zhuowei) (figured out M1 I²C communication) -- [@tao-j](https://github.com/tao-j) (figured out M1 I²C write) -- [@alin23](https://github.com/alin23) (generally spearheaded M1 DDC support and figured out a many of the caveats) -- [javierocasio](https://www.deviantart.com/javierocasio) (app icon background) + diff --git a/docker.sh b/docker.sh new file mode 100644 index 00000000..84aa8044 --- /dev/null +++ b/docker.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +cd docs +docker run -it --rm -v "$PWD":/usr/src/app -p "4000:4000" starefossen/github-pages \ No newline at end of file diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 00000000..af2a55fc --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1,8 @@ +defaults: + - scope: + path: 'wiki' + values: + layout: 'wiki' + +repository: MonitorControl/MonitorControl +theme: jekyll-theme-primer diff --git a/docs/_layouts/wiki.html b/docs/_layouts/wiki.html new file mode 100644 index 00000000..80476ae4 --- /dev/null +++ b/docs/_layouts/wiki.html @@ -0,0 +1,7 @@ +--- +layout: default +--- + +

{{ page.title }}

+ +{{ content }} diff --git a/docs/appcast.xml b/docs/appcast.xml index 3f7455a4..f99d8a3c 100644 --- a/docs/appcast.xml +++ b/docs/appcast.xml @@ -1,12 +1,18 @@ + + + MonitorControl https://monitorcontrol.app v4.0.0-beta1 - - + + https://monitorcontrol.app/changelogs/v4.0.0-beta1.html + Thu, 30 Sep 2021 21:43:20 +0200 6293 4.0.0-beta1 @@ -18,5 +24,117 @@ length="4127428" /> + + v4.0.0-beta2 + + https://monitorcontrol.app/changelogs/v4.0.0-beta2.html + + Thu, 07 Oct 2021 20:31:20 +0200 + 6443 + 4.0.0-beta2 + 10.15 + + + + v4.0.0-rc1 + + https://monitorcontrol.app/changelogs/v4.0.0-rc1.html + + Thu, 12 Oct 2021 19:13:00 +0200 + 6632 + 4.0.0-rc1 + 10.15 + + + + v4.0.0 + + https://monitorcontrol.app/changelogs/v4.0.0.html + + Thu, 26 Oct 2021 19:32:00 +0200 + 6851 + 4.0.0 + 10.15 + + + + v4.0.1 + + https://monitorcontrol.app/changelog.html?tag=v4.0.1 + + Fri, 05 Nov 2021 17:16:00 +0200 + 6941 + 4.0.1 + 10.14 + + + + v4.0.2 + + https://monitorcontrol.app/changelog.html?tag=v4.0.2 + + Fri, 18 Nov 2021 20:10:00 +0200 + 6965 + 4.0.2 + 10.14 + + + + v4.1.0 + + https://monitorcontrol.app/changelog.html?tag=v4.1.0 + + Fri, 20 May 2022 21:52:00 +0200 + 7034 + 4.1.0 + 10.14 + + + + v4.2.0 + + https://monitorcontrol.app/changelog.html?tag=v4.2.0 + + Fri, 09 Sep 2023 16:00:00 +0200 + 7048 + 4.2.0 + 10.14 + + - \ No newline at end of file + diff --git a/docs/appcast2.xml b/docs/appcast2.xml new file mode 100644 index 00000000..482a4ee0 --- /dev/null +++ b/docs/appcast2.xml @@ -0,0 +1,24 @@ + + + + MonitorControl + + 4.3.3 + Fri, 04 Oct 2024 12:47:49 +0200 + https://monitorcontrol.app/changelog.html?tag=v4.3.3 + 7123 + 4.3.3 + 10.14 + + + + 4.3.2 + Wed, 02 Oct 2024 15:26:15 +0200 + https://monitorcontrol.app/changelog.html?tag=v4.3.2 + 7105 + 4.3.2 + 10.14 + + + + diff --git a/docs/changelog.html b/docs/changelog.html new file mode 100644 index 00000000..dbaf38bf --- /dev/null +++ b/docs/changelog.html @@ -0,0 +1,30 @@ + + + + + + + + Changelog + + + + + diff --git a/docs/changelogs/changelog.css b/docs/changelogs/changelog.css new file mode 100644 index 00000000..bc13a039 --- /dev/null +++ b/docs/changelogs/changelog.css @@ -0,0 +1,54 @@ +html, +body { + font-size: 90%; + margin: 2px 10px; + line-height: 1.5; + font-family: -apple-system, system-ui, BlinkMacSystemFont, 'Segoe UI', Roboto, + 'Helvetica Neue', sans-serif; + text-rendering: optimizeLegibility; +} +kbd { + font-family: Consolas, 'Lucida Console', monospace; + display: inline-block; + border-radius: 3px; + padding: 0px 4px; + box-shadow: 1px 1px 1px #777; + margin: 2px; + font-size: small; + vertical-align: text-bottom; + background: #eee; + font-weight: 500; + color: #555; + letter-spacing: 1px; + /* Prevent selection */ + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +ul li { + margin-top: 0.4rem; +} +ul { + margin: 0.8rem 0 0.8rem 0.8rem; + padding: 0; + list-style: disc inside; +} +a { + color: #6fa2fa !important; + outline: 0; + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +h3 { + color: inherit; + font-size: 1.4rem; + font-weight: 500; + line-height: 1.2; + margin-bottom: 0.5em; + margin-top: 0.4em; +} diff --git a/docs/changelogs/template.html b/docs/changelogs/template.html new file mode 100644 index 00000000..f56264e2 --- /dev/null +++ b/docs/changelogs/template.html @@ -0,0 +1,12 @@ + + + + + + + $title$ + + + $body$ + + diff --git a/docs/changelogs/v4.0.0-beta1.html b/docs/changelogs/v4.0.0-beta1.html new file mode 100644 index 00000000..aa8f21ca --- /dev/null +++ b/docs/changelogs/v4.0.0-beta1.html @@ -0,0 +1,222 @@ + + + + + + + + Changelog v4.0.0-beta1 + + +

MonitorControl v4.0.0-beta1 (Thu, 30 Sept 2021)

+ + +

Enhancements

+ +
    +
  • + Automatic & manual updates through the app, no more manual downloads 🎉 +
  • +
  • Added proper support for controlling Apple displays.
  • +
  • Added option to show/hide brightness slider.
  • +
  • + Added option to show brightness slider for internal display and apple + displays (enabled by default). +
  • +
  • + Replication of built-in and Apple display brightness to corresponding + brightness slider. +
  • +
  • + Added suffix to similarly named displays for better differentiation. +
  • +
  • + Option to disable slider snapping for finer control + disable slider + snapping by default. +
  • +
  • Added option to show slider tick marks for better accuracy.
  • +
  • + Added option to use window focus instead of mouse to determine which + display to control. +
  • +
  • + control + command + brightness now + controls external displays only (control + + Brightness continues to control internal display only) +
  • +
  • Added separate tab for menu options.
  • +
  • Added option to restore last saved values upon startup.
  • +
  • + Added option for audio device name matching for display volume control + selection. +
  • +
  • Separated option to change all screens for brightness and volume.
  • +
  • Added option for keyboard fine scale for brightness.
  • +
  • Added option for keyboard fine scale for volume.
  • +
  • + Added version check upon startup for mandatory preferences reset upon + downgrade or incompatible previous version + notification about this. +
  • +
  • + Added implementation for command + f1 macOS + shortcut to enable/disable mirroring. +
  • +
  • + Added safer 'Assume last saved settings are valid' option as default + instead of startup DDC read (or restore). +
  • +
  • + Streamlined preference panes, 'Show advanced settings' now affect all + tabs. This leads to a better and safer first timer experience + (especially because of the influx of many new features). +
  • +
  • + Added a Quit button to Preferences if menu is hidden (it was not + passible to quit the application until this time in this mode only by + re-enabling the menu). +
  • +
  • + Lowered default first-run volume DDC default from 75% to 15% if read is + not possible or disabled to prevent unexpectedly loud sound. +
  • +
  • + Added slider skew setting on a per control basis to have the ability to + manipulate DDC slider balance and OSD scale if display control is not + linear. +
  • +
  • + Added the ability to set min. and max. DDC bounds on a per display, per + control basis. +
  • +
  • + Audio device name override option for a display (manually assign a + specific audio device to a display). +
  • +
  • + Advanced setting to invert DDC control range (some displays have the + scale reversed). +
  • +
  • + Advanced setting to remap DDC control code (some displays have contrast + and brightness mixed up). +
  • +
  • + Ability to mark a DDC control as available or unavailable in advanced + settings under Displays. +
  • +
  • + Ability to automatically hide menu icon if there is no slider present in + the menu. +
  • +
  • Option to show slider percentage for more precision.
  • +
  • + Option to set combined or separate OSD scale when combined + hardware+software brightness is used. +
  • +
  • + Apple like smooth brightness change (both for software, hardware, mixed + and DisplayServices). +
  • +
  • + Added support for DisplayLink, AirPlay, Sidecar, screen sharing etc. + using window shades (this is an inferior technique to the existing + software implementation - gamma control - but still better than + nothing). Disabled for any kind of mirroring setups. [^1] +
  • +
  • + Brightness change synchronisation from Built-In and Apple displays to + other displays. This makes Touch Bar, Ambient light sensor, Control + Center and System Preferences induced changes affect all displays. + Synchronisation uses a sophisticated indirect delta method + the user + can intervene and adjust individual screen brightness at any time to + easily compensate mismatching native brightness levels. +
  • +
  • Preferences pane tab selector has a simpler look on Catalina.
  • +
  • + All menu sliders are now scrollable using a magic mouse/trackpad swipes + or mouse wheel. +
  • +
  • + Added option for menu to show only items that are relevant to display + which shows the menu currently. +
  • +
  • + Added option to enable combined sliders (note: this option combined with + enabled Apple/built-in display syncing and enabled 'change all' keyboard + settings finally provides full synchronised control of all displays). +
  • +
  • + Combined sliders can now display multiple displays when keyboard and + brightness syncing is not enabled. [^1] +
  • +
  • + Redesigned sliders to look like Big Sur/Monterey Control Center's + sliders. [^1] +
  • +
  • + Quit and Preferences... are now icons for a much cleaner look. [^1] +
  • +
  • + Added option to change additional menu options style or hide them. [^1] +
  • +
  • + Multiple displays are now in nice Big Sur styled blocks - no more ugly + separators. [^1] +
  • +
  • + Added customisable gamma/ddc switchover point for combined brightness in + the advanced section of Displays. +
  • +
  • + Added comma separated list for control code override to enable edge + cases like controlling Brightness and Contrast at the same time (use VCP + list entry `10, 12` for that) +
  • +
  • + Contrast can now be controlled from keyboard via control + + option + command + brightness up/down. +
  • +
  • + Custom keyboard shortcuts for brightness, contrast, volume and mute +
  • +
+ +

Other under the hood changes and bug fixes

+ +
    +
  • + Standardised internal scale among various displays and DDC ranges for + ranged controls. +
  • +
  • + Uses the new internal scale for combined hardware-software brightness + mode. +
  • +
  • + Migrated scales to internal float representation to prevent loss of fine + detail on transformations. +
  • +
  • + Fixed double sound when muting multiple external displays at the same + time. +
  • +
  • + Fixed lack of initial volume configuration if slider is not shown in + menu. +
  • +
  • + Fixed wrong settings being applied to a display when replaced on Apple + Silicon (UserDefaults preferences are now tied to specific display + strings instead of CGDirectDisplayID - which is no longer semi-unique on + arm64). +
  • +
  • A lot of refactoring, streamlining and general optimisations.
  • +
+ + diff --git a/docs/changelogs/v4.0.0-beta2.html b/docs/changelogs/v4.0.0-beta2.html new file mode 100644 index 00000000..b0386991 --- /dev/null +++ b/docs/changelogs/v4.0.0-beta2.html @@ -0,0 +1,100 @@ + + + + + + + + Changelog v4.0.0-beta1 + + +

MonitorControl v4.0.0-beta2 (Thu, 07 Oct 2021)

+ + +

Enhancements

+ +
    +
  • Added Internet Access Policy
  • +
  • + Don't relinquish control over brightness keys with no external display + connected if fine brightness OSD scale is active +
  • +
  • Changed icon order in menu (when icon mode is enabled)
  • +
  • + Gear shape icon is used for preferences + stands a little bit apart to + help user focus. +
  • +
  • + Changed default to a minimum software dimming of 15% for safety reasons. +
  • +
  • + Added advanced option to enable zero brightness with software dimming. +
  • +
  • + Added 'Avoid gamma table manipulation' option for coexistence with + f.lux. +
  • +
  • + Set relevant options to disabled when keyboard control is disabled. +
  • +
  • + Added Command + Q shortcut in menu when it is in + standard text mode (not icon mode). +
  • +
  • Made preferences more spacious + more room for verbose languages
  • +
+ +

Updated translations:

+ +
    +
  • English - base language
  • +
  • Chinese (Traditional, Taiwan) - thanks to @stiiveo, @dororojames
  • +
  • Dutch - thanks to @JoniVR
  • +
  • French - thanks to @the0neyouseek
  • +
  • German - thanks to @jajoho
  • +
  • Hungarian - thanks to @waydabber
  • +
  • Italian - thanks to @picov
  • +
  • Korean - thanks to @zzulu
  • +
  • Turkish - thanks to @mennan
  • +
+ +

Under the hood changes & fixes

+ +
    +
  • + DDC command touched status. When write on startup enabled, apply only + touched command values. +
  • +
  • Reorganised PrefKey list to be less confusing.
  • +
  • + Disengage custom shortcut keyboard after 100 key repeat to prevent + possibly endless loop if keyUp event never arrives due to any + circumstance. +
  • +
  • + Fixed text for external display brightness control keyboard shortcut. +
  • +
  • + Fix cumulative darkening bug upon toggling 'Disable dimming as + fallback'. +
  • +
  • + Make sure that key repeat speed for custom shortcuts do not go below a + certain threshold. +
  • +
  • Fixes text clipping issues for various languages
  • +
  • Added beta channel update backend
  • +
  • Fixed layout issue at brightness custom shortcuts.
  • +
  • + Fixed custom key shortcuts going runaway when menu was opened during a + key repeat streak. +
  • +
+ + diff --git a/docs/changelogs/v4.0.0-rc1.html b/docs/changelogs/v4.0.0-rc1.html new file mode 100644 index 00000000..32cfee6c --- /dev/null +++ b/docs/changelogs/v4.0.0-rc1.html @@ -0,0 +1,108 @@ + + + + + + + v4.0.0-rc1 + + +

Full v4.0.0 release notes

+

Enhancements

+
    +
  • Automatic & manual updates through the app, no more manual downloads 🎉
  • +
  • Added proper support for controlling Apple displays.
  • +
  • Added option to show/hide brightness slider.
  • +
  • Added option to show brightness slider for internal display and apple displays (enabled by default).
  • +
  • Replication of built-in and Apple display brightness to corresponding brightness slider.
  • +
  • Added suffix to similarly named displays for better differentiation.
  • +
  • Option to disable slider snapping for finer control + disable slider snapping by default.
  • +
  • Added option to show slider tick marks for better accuracy.
  • +
  • Added option to use window focus instead of mouse to determine which display to control.
  • +
  • control + command + brightness now controls external displays only (control + Brightness continues to control internal display only)
  • +
  • Added separate tab for menu options.
  • +
  • Added option to restore last saved values upon startup.
  • +
  • Added option for audio device name matching for display volume control selection.
  • +
  • Separated option to change all screens for brightness and volume.
  • +
  • Added option for keyboard fine scale for brightness.
  • +
  • Added option for keyboard fine scale for volume.
  • +
  • Added version check upon startup for mandatory preferences reset upon downgrade or incompatible previous version + notification about this.
  • +
  • Added implementation for command + f1 macOS shortcut to enable/disable mirroring.
  • +
  • Added safer ‘Assume last saved settings are valid’ option as default instead of startup DDC read (or restore).
  • +
  • Streamlined preference panes, ‘Show advanced settings’ now affect all tabs. This leads to a better and safer first timer experience (especially because of the influx of many new features).
  • +
  • Added a Quit button to Preferences if menu is hidden (it was not passible to quit the application until this time in this mode only by re-enabling the menu).
  • +
  • Lowered default first-run volume DDC default from 75% to 15% if read is not possible or disabled to prevent unexpectedly loud sound.
  • +
  • Added slider skew setting on a per control basis to have the ability to manipulate DDC slider balance and OSD scale if display control is not linear.
  • +
  • Added the ability to set min. and max. DDC bounds on a per display, per control basis.
  • +
  • Audio device name override option for a display (manually assign a specific audio device to a display).
  • +
  • Advanced setting to invert DDC control range (some displays have the scale reversed).
  • +
  • Advanced setting to remap DDC control code (some displays have contrast and brightness mixed up).
  • +
  • Ability to mark a DDC control as available or unavailable in advanced settings under Displays.
  • +
  • Ability to automatically hide menu icon if there is no slider present in the menu.
  • +
  • Option to show slider percentage for more precision.
  • +
  • Option to set combined or separate OSD scale when combined hardware+software brightness is used.
  • +
  • Apple like smooth brightness change (both for software, hardware, mixed and DisplayServices).
  • +
  • Added support for DisplayLink, AirPlay, Sidecar, screen sharing etc. using window shades (this is an inferior technique to the existing software implementation - gamma control - but still better than nothing). Disabled for any kind of mirroring setups. 1
  • +
  • Brightness change synchronisation from Built-In and Apple displays to other displays. This makes Touch Bar, Ambient light sensor, Control Center and System Preferences induced changes affect all displays. Synchronisation uses a sophisticated indirect delta method + the user can intervene and adjust individual screen brightness at any time to easily compensate mismatching native brightness levels.
  • +
  • Preferences pane tab selector has a simpler look on Catalina.
  • +
  • All menu sliders are now scrollable using a magic mouse/trackpad swipes or mouse wheel.
  • +
  • Added option for menu to show only items that are relevant to display which shows the menu currently.
  • +
  • Added option to enable combined sliders (note: this option combined with enabled Apple/built-in display syncing and enabled ‘change all’ keyboard settings finally provides full synchronised control of all displays).
  • +
  • Combined sliders can now display multiple displays when keyboard and brightness syncing is not enabled. 2
  • +
  • Redesigned sliders to look like Big Sur/Monterey Control Center’s sliders. 3
  • +
  • Quit and Preferences… are now icons for a much cleaner look. 4
  • +
  • Added option to change additional menu options style or hide them. 5
  • +
  • Multiple displays are now in nice Big Sur styled blocks - no more ugly separators. 6
  • +
  • Added customisable gamma/ddc switchover point for combined brightness in the advanced section of Displays.
  • +
  • Added comma separated list for control code override to enable edge cases like controlling Brightness and Contrast at the same time (use VCP list entry 10, 12 for that)
  • +
  • Contrast can now be controlled from keyboard via control + option + command + brightness up/down.
  • +
  • Custom keyboard shortcuts for brightness, contrast, volume and mute
  • +
  • Added Internet Access Policy
  • +
  • Added advanced option to enable zero brightness with software dimming.
  • +
  • Added command + q shortcut in menu when it is in standard text mode.
  • +
  • Rearranged Preferences to fit better on smaller screens in Advanced mode
  • +
  • Alert when repeated interference is detected with applications.
  • +
  • Added ‘Avoid gamma table manipulation’ option for peaceful coexistence with f.lux.
  • +
+

Other under the hood changes and bug fixes

+
    +
  • Standardised internal scale among various displays and DDC ranges for ranged controls.
  • +
  • Uses the new internal scale for combined hardware-software brightness mode.
  • +
  • Migrated scales to internal float representation to prevent loss of fine detail on transformations.
  • +
  • Fixed double sound when muting multiple external displays at the same time.
  • +
  • Fixed lack of initial volume configuration if slider is not shown in menu.
  • +
  • Fixed wrong settings being applied to a display when replaced on Apple Silicon (UserDefaults preferences are now tied to specific display strings instead of CGDirectDisplayID - which is no longer semi-unique on arm64).
  • +
  • A lot of refactoring, streamlining and general optimisations.
  • +
+

Thanks to all our translators

+
    +
  • Chinese - thanks to @dev-coco, @anmoliyang
  • +
  • Chinese (Traditional, Taiwan) - thanks to @stiiveo, @dororojames
  • +
  • Dutch - thanks to @JoniVR
  • +
  • French - thanks to @the0neyouseek
  • +
  • German - thanks to @jajoho, @curana
  • +
  • Hungarian - thanks to @waydabber
  • +
  • Italian - thanks to @picov
  • +
  • Korean - thanks to @zzulu
  • +
  • Turkish - thanks to @mennan, @ozkanozcan
  • +
+

Notes

+
    +
  • This is a release candidate. If you encounter any issues, you can try the last stable release v3.1.1 or last beta release v4.0.0-beta2.
  • +
  • If you discover issues, make sure to report them in the linked release discussion.
  • +
  • If you want to help translating, see #637
  • +
  • Thanks to everyone who helps make MonitorControl better!
  • +
+
+
+
    +
  1. Only on Big Sur and above↩︎

  2. +
  3. Only on Big Sur and above↩︎

  4. +
  5. Only on Big Sur and above↩︎

  6. +
  7. Only on Big Sur and above↩︎

  8. +
  9. Only on Big Sur and above↩︎

  10. +
  11. Only on Big Sur and above↩︎

  12. +
+
+ + diff --git a/docs/changelogs/v4.0.0.html b/docs/changelogs/v4.0.0.html new file mode 100644 index 00000000..825eb9f1 --- /dev/null +++ b/docs/changelogs/v4.0.0.html @@ -0,0 +1,110 @@ + + + + + + + v4.0.0 + + +

Enhancements

+
    +
  • Automatic & manual updates through the app, no more manual downloads 🎉
  • +
  • Moved ‘Show advanced settings’ under ‘Displays’
  • +
  • Added proper support for controlling Apple displays.
  • +
  • Added option to show/hide brightness slider.
  • +
  • Added option to show brightness slider for internal display and apple displays (enabled by default).
  • +
  • Replication of built-in and Apple display brightness to corresponding brightness slider.
  • +
  • Added suffix to similarly named displays for better differentiation.
  • +
  • Option to disable slider snapping for finer control + disable slider snapping by default.
  • +
  • Added option to show slider tick marks for better accuracy.
  • +
  • Added option to use window focus instead of mouse to determine which display to control.
  • +
  • control + command + brightness now controls external displays only (control + Brightness continues to control internal display only)
  • +
  • Added separate tab for menu options.
  • +
  • Added option to restore last saved values upon startup.
  • +
  • Added option for audio device name matching for display volume control selection.
  • +
  • Separated option to change all screens for brightness and volume.
  • +
  • Added option for keyboard fine scale for brightness.
  • +
  • Added option for keyboard fine scale for volume.
  • +
  • Added version check upon startup for mandatory preferences reset upon downgrade or incompatible previous version + notification about this.
  • +
  • Added implementation for command + f1 macOS shortcut to enable/disable mirroring.
  • +
  • Added safer ‘Assume last saved settings are valid’ option as default instead of startup DDC read (or restore).
  • +
  • Streamlined preference panes, ‘Show advanced settings’ now affect all tabs. This leads to a better and safer first timer experience (especially because of the influx of many new features).
  • +
  • Added a Quit button to Preferences if menu is hidden (it was not passible to quit the application until this time in this mode only by re-enabling the menu).
  • +
  • Lowered default first-run volume DDC default from 75% to 15% if read is not possible or disabled to prevent unexpectedly loud sound.
  • +
  • Added slider skew setting on a per control basis to have the ability to manipulate DDC slider balance and OSD scale if display control is not linear.
  • +
  • Added the ability to set min. and max. DDC bounds on a per display, per control basis.
  • +
  • Audio device name override option for a display (manually assign a specific audio device to a display).
  • +
  • Advanced setting to invert DDC control range (some displays have the scale reversed).
  • +
  • Advanced setting to remap DDC control code (some displays have contrast and brightness mixed up).
  • +
  • Ability to mark a DDC control as available or unavailable in advanced settings under Displays.
  • +
  • Ability to automatically hide menu icon if there is no slider present in the menu.
  • +
  • Option to show slider percentage for more precision.
  • +
  • Option to set combined or separate OSD scale when combined hardware+software brightness is used.
  • +
  • Apple like smooth brightness change (both for software, hardware, mixed and DisplayServices).
  • +
  • Added support for DisplayLink, AirPlay, Sidecar, screen sharing etc. using window shades (this is an inferior technique to the existing software implementation - gamma control - but still better than nothing). Disabled for any kind of mirroring setups. 1
  • +
  • Brightness change synchronisation from Built-In and Apple displays to other displays. This makes Touch Bar, Ambient light sensor, Control Center and System Preferences induced changes affect all displays. Synchronisation uses a sophisticated indirect delta method + the user can intervene and adjust individual screen brightness at any time to easily compensate mismatching native brightness levels.
  • +
  • Preferences pane tab selector has a simpler look on Catalina.
  • +
  • All menu sliders are now scrollable using a magic mouse/trackpad swipes or mouse wheel.
  • +
  • Added option for menu to show only items that are relevant to display which shows the menu currently.
  • +
  • Added option to enable combined sliders (note: this option combined with enabled Apple/built-in display syncing and enabled ‘change all’ keyboard settings finally provides full synchronised control of all displays).
  • +
  • Combined sliders can now display multiple displays when keyboard and brightness syncing is not enabled. 2
  • +
  • Redesigned sliders to look like Big Sur/Monterey Control Center’s sliders. 3
  • +
  • Quit and Preferences… are now icons for a much cleaner look. 4
  • +
  • Added option to change additional menu options style or hide them. 5
  • +
  • Multiple displays are now in nice Big Sur styled blocks - no more ugly separators. 6
  • +
  • Added customisable gamma/ddc switchover point for combined brightness in the advanced section of Displays.
  • +
  • Added comma separated list for control code override to enable edge cases like controlling Brightness and Contrast at the same time (use VCP list entry 10, 12 for that)
  • +
  • Contrast can now be controlled from keyboard via control + option + command + brightness up/down.
  • +
  • Custom keyboard shortcuts for brightness, contrast, volume and mute
  • +
  • Added Internet Access Policy
  • +
  • Added advanced option to enable zero brightness with software dimming.
  • +
  • Added command + q shortcut in menu when it is in standard text mode.
  • +
  • Rearranged Preferences to fit better on smaller screens in Advanced mode
  • +
  • Alert when repeated interference is detected with applications.
  • +
  • Added ‘Avoid gamma table manipulation’ option for peaceful coexistence with f.lux.
  • +
+

Other under the hood changes and bug fixes

+
    +
  • Standardised internal scale among various displays and DDC ranges for ranged controls.
  • +
  • Uses the new internal scale for combined hardware-software brightness mode.
  • +
  • Improved settings reset functionality for virtual and Apple displays.
  • +
  • Migrated scales to internal float representation to prevent loss of fine detail on transformations.
  • +
  • Fixed double sound when muting multiple external displays at the same time.
  • +
  • Multiple attempts to write last DDC brightness and contrast settings after wake when ‘Apply last saved settings’ is enabled to make sure that slow displays are handled well
  • +
  • Fixed lack of initial volume configuration if slider is not shown in menu.
  • +
  • Fixed wrong settings being applied to a display when replaced on Apple Silicon (UserDefaults preferences are now tied to specific display strings instead of CGDirectDisplayID - which is no longer semi-unique on arm64).
  • +
  • A lot of refactoring, streamlining and general optimisations.
  • +
+

Thanks to all our translators

+
    +
  • Chinese - thanks to @dev-coco, @anmoliyang
  • +
  • Chinese (Traditional, Taiwan) - thanks to @stiiveo, @dororojames, @kix99aug
  • +
  • Dutch - thanks to @JoniVR
  • +
  • French - thanks to @the0neyouseek
  • +
  • German - thanks to @jajoho, @curana
  • +
  • Hungarian - thanks to @waydabber
  • +
  • Italian - thanks to @picov
  • +
  • Korean - thanks to @zzulu
  • +
  • Turkish - thanks to @mennan, @ozkanozcan
  • +
+

Notes

+
    +
  • If you discover issues, feel free to open an issue!
  • +
  • If you want to help translating, see #637
  • +
  • Special thanks to @waydabber on another fantastic job on this release!
  • +
  • Thanks to everyone who helps make MonitorControl better!
  • +
+
+
+
    +
  1. Only on Big Sur and above↩︎

  2. +
  3. Only on Big Sur and above↩︎

  4. +
  5. Only on Big Sur and above↩︎

  6. +
  7. Only on Big Sur and above↩︎

  8. +
  9. Only on Big Sur and above↩︎

  10. +
  11. Only on Big Sur and above↩︎

  12. +
+
+ + diff --git a/docs/index.html b/docs/index.html index 6bc82cb9..070a6c2e 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,15 +1,22 @@ - + - - - - - MonitorControl - redirect - - - - If you are not redirected automatically, follow this link!. - + + + + + MonitorControl - redirect + + + + If you are not redirected automatically, + follow this link! + diff --git a/docs/lite/index.html b/docs/lite/index.html new file mode 100644 index 00000000..0388a2c1 --- /dev/null +++ b/docs/lite/index.html @@ -0,0 +1,22 @@ + + + + + + + MonitorControl Lite - redirect + + + + If you are not redirected automatically, + follow this link! + + diff --git a/docs/scripts/marked-footnotes.min.js b/docs/scripts/marked-footnotes.min.js new file mode 100644 index 00000000..cdd13e09 --- /dev/null +++ b/docs/scripts/marked-footnotes.min.js @@ -0,0 +1,42 @@ +const footnoteMatch = /^\[\^([^\]]+)\]:([\s\S]*)$/; +const referenceMatch = /\[\^([^\]]+)\](?!\()/g; +const referencePrefix = "fnref"; +const footnotePrefix = "fn"; +const footnoteTemplate = (ref, text) => { + return `

${ref}. ${text}

`; +}; +const footnoteContainerTemplate = (text) => { + return `

Footnotes

${text}` +} +const referenceTemplate = ref => { + return `[${ref}]`; +}; +const interpolateReferences = (text) => { + return text.replace(referenceMatch, (_, ref) => { + return referenceTemplate(ref); + }); +} +const interpolateFootnotes = (text) => { + const found = text.match(footnoteMatch) + if (found) { + const replacedText = text.replace(footnoteMatch, (_, value, text) => { + return footnoteTemplate(value, text); + }); + return footnoteContainerTemplate(replacedText) + } + return text +} + +const renderer = { + paragraph(text) { + return marked.Renderer.prototype.paragraph.apply(null, [ + interpolateReferences(interpolateFootnotes(text)) + ]); + }, + text(text) { + return marked.Renderer.prototype.text.apply(null, [ + interpolateReferences(interpolateFootnotes(text)) + ]); + } +}; +marked.use({ renderer }); \ No newline at end of file diff --git a/docs/scripts/marked.min.js b/docs/scripts/marked.min.js new file mode 100644 index 00000000..fbce589c --- /dev/null +++ b/docs/scripts/marked.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).marked=t()}(this,function(){"use strict";function r(e,t){for(var u=0;ue.length)&&(t=e.length);for(var u=0,n=new Array(t);u=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var t={exports:{}};function e(){return{baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}t.exports={defaults:e(),getDefaults:e,changeDefaults:function(e){t.exports.defaults=e}};function u(e){return D[e]}var n=/[&<>"']/,s=/[&<>"']/g,l=/[<>"']|&(?!#?\w+;)/,a=/[<>"']|&(?!#?\w+;)/g,D={"&":"&","<":"<",">":">",'"':""","'":"'"};var c=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function h(e){return e.replace(c,function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}var p=/(^|[^\[])\^/g;var f=/[^\w:]/g,g=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;var F={},A=/^[^:]+:\/*[^/]*$/,C=/^([^:]+:)[\s\S]*$/,d=/^([^:]+:\/*[^/]*)[\s\S]*$/;function k(e,t){F[" "+e]||(A.test(e)?F[" "+e]=e+"/":F[" "+e]=E(e,"/",!0));var u=-1===(e=F[" "+e]).indexOf(":");return"//"===t.substring(0,2)?u?t:e.replace(C,"$1")+t:"/"===t.charAt(0)?u?t:e.replace(d,"$1")+t:e+t}function E(e,t,u){var n=e.length;if(0===n)return"";for(var r=0;rt)u.splice(t);else for(;u.length>=1,e+=e;return u+e},T=t.exports.defaults,R=_,I=y,Z=x,q=z;function O(e,t,u,n){var r=t.href,i=t.title?Z(t.title):null,t=e[1].replace(/\\([\[\]])/g,"$1");if("!"===e[0].charAt(0))return{type:"image",raw:u,href:r,title:i,text:Z(t)};n.state.inLink=!0;t={type:"link",raw:u,href:r,title:i,text:t,tokens:n.inlineTokens(t,[])};return n.state.inLink=!1,t}_=function(){function e(e){this.options=e||T}var t=e.prototype;return t.space=function(e){e=this.rules.block.newline.exec(e);if(e)return 1=u.length?e.slice(u.length):e}).join("\n")}(u,t[3]||"");return{type:"code",raw:u,lang:t[2]&&t[2].trim(),text:e}}},t.heading=function(e){var t=this.rules.block.heading.exec(e);if(t){var u=t[2].trim();/#$/.test(u)&&(e=R(u,"#"),!this.options.pedantic&&e&&!/ $/.test(e)||(u=e.trim()));u={type:"heading",raw:t[0],depth:t[1].length,text:u,tokens:[]};return this.lexer.inline(u.text,u.tokens),u}},t.hr=function(e){e=this.rules.block.hr.exec(e);if(e)return{type:"hr",raw:e[0]}},t.blockquote=function(e){var t=this.rules.block.blockquote.exec(e);if(t){e=t[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:t[0],tokens:this.lexer.blockTokens(e,[]),text:e}}},t.list=function(e){var t=this.rules.block.list.exec(e);if(t){var u,n,r,i,s,l,a,o,D,c=1<(p=t[1].trim()).length,h={type:"list",raw:"",ordered:c,start:c?+p.slice(0,-1):"",loose:!1,items:[]},p=c?"\\d{1,9}\\"+p.slice(-1):"\\"+p;this.options.pedantic&&(p=c?p:"[*+-]");for(var f=new RegExp("^( {0,3}"+p+")((?: [^\\n]*| *)(?:\\n[^\\n]*)*(?:\\n|$))");e&&!this.rules.block.hr.test(e)&&(t=f.exec(e));){o=t[2].split("\n"),D=this.options.pedantic?(i=2,o[0].trimLeft()):(i=t[2].search(/[^ ]/),i=t[1].length+(4=i)&&a.trim()){u=t[1]+o.slice(0,F).join("\n")+"\n";break}D+="\n"+a.slice(i)}else a.trim()||(s=!0),a.search(/[^ ]/)>=i?D+="\n"+a.slice(i):D+="\n"+a}h.loose||(l?h.loose=!0:/\n *\n *$/.test(u)&&(l=!0)),this.options.gfm&&(n=/^\[[ xX]\] /.exec(D))&&(r="[ ] "!==n[0],D=D.replace(/^\[[ xX]\] +/,"")),h.items.push({type:"list_item",raw:u,task:!!n,checked:r,loose:!1,text:D}),h.raw+=u,e=e.slice(u.length)}h.items[h.items.length-1].raw=u.trimRight(),h.items[h.items.length-1].text=D.trimRight(),h.raw=h.raw.trimRight();var A=h.items.length;for(F=0;F/i.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(e[0]):Z(e[0]):e[0]}},t.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var u=t[2].trim();if(!this.options.pedantic&&/^$/.test(u))return;e=R(u.slice(0,-1),"\\");if((u.length-e.length)%2==0)return}else{var n=q(t[2],"()");-1$/.test(u)?n.slice(1):n.slice(1,-1):n)&&n.replace(this.rules.inline._escapes,"$1"),title:i&&i.replace(this.rules.inline._escapes,"$1")},t[0],this.lexer)}},t.reflink=function(e,t){if((u=this.rules.inline.reflink.exec(e))||(u=this.rules.inline.nolink.exec(e))){e=(u[2]||u[1]).replace(/\s+/g," ");if((e=t[e.toLowerCase()])&&e.href)return O(u,e,u[0],this.lexer);var u=u[0].charAt(0);return{type:"text",raw:u,text:u}}},t.emStrong=function(e,t,u){void 0===u&&(u="");var n=this.rules.inline.emStrong.lDelim.exec(e);if(n&&(!n[3]||!u.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/))){var r=n[1]||n[2]||"";if(!r||""===u||this.rules.inline.punctuation.exec(u)){var i,s=n[0].length-1,l=s,a=0,o="*"===n[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(o.lastIndex=0,t=t.slice(-1*e.length+s);null!=(n=o.exec(t));)if(i=n[1]||n[2]||n[3]||n[4]||n[5]||n[6])if(i=i.length,n[3]||n[4])l+=i;else if(!((n[5]||n[6])&&s%3)||(s+i)%3){if(!(0<(l-=i))){if(i=Math.min(i,i+l+a),Math.min(s,i)%2){var D=e.slice(1,s+n.index+i);return{type:"em",raw:e.slice(0,s+n.index+i+1),text:D,tokens:this.lexer.inlineTokens(D,[])}}D=e.slice(2,s+n.index+i-1);return{type:"strong",raw:e.slice(0,s+n.index+i+1),text:D,tokens:this.lexer.inlineTokens(D,[])}}}else a+=i}}},t.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var u=t[2].replace(/\n/g," "),n=/[^ ]/.test(u),e=/^ /.test(u)&&/ $/.test(u);return n&&e&&(u=u.substring(1,u.length-1)),u=Z(u,!0),{type:"codespan",raw:t[0],text:u}}},t.br=function(e){e=this.rules.inline.br.exec(e);if(e)return{type:"br",raw:e[0]}},t.del=function(e){e=this.rules.inline.del.exec(e);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2],[])}},t.autolink=function(e,t){e=this.rules.inline.autolink.exec(e);if(e){var u,t="@"===e[2]?"mailto:"+(u=Z(this.options.mangle?t(e[1]):e[1])):u=Z(e[1]);return{type:"link",raw:e[0],text:u,href:t,tokens:[{type:"text",raw:u,text:u}]}}},t.url=function(e,t){var u,n,r,i;if(u=this.rules.inline.url.exec(e)){if("@"===u[2])r="mailto:"+(n=Z(this.options.mangle?t(u[0]):u[0]));else{for(;i=u[0],u[0]=this.rules.inline._backpedal.exec(u[0])[0],i!==u[0];);n=Z(u[0]),r="www."===u[1]?"http://"+n:n}return{type:"link",raw:u[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}},t.inlineText=function(e,t){e=this.rules.inline.text.exec(e);if(e){t=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(e[0]):Z(e[0]):e[0]:Z(this.options.smartypants?t(e[0]):e[0]);return{type:"text",raw:e[0],text:t}}},e}(),y=w,z=b,w=v,b={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)( [^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,table:y,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};b.def=z(b.def).replace("label",b._label).replace("title",b._title).getRegex(),b.bullet=/(?:[*+-]|\d{1,9}[.)])/,b.listItemStart=z(/^( *)(bull) */).replace("bull",b.bullet).getRegex(),b.list=z(b.list).replace(/bull/g,b.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+b.def.source+")").getRegex(),b._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",b._comment=/|$)/,b.html=z(b.html,"i").replace("comment",b._comment).replace("tag",b._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),b.paragraph=z(b._paragraph).replace("hr",b.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",b._tag).getRegex(),b.blockquote=z(b.blockquote).replace("paragraph",b.paragraph).getRegex(),b.normal=w({},b),b.gfm=w({},b.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),b.gfm.table=z(b.gfm.table).replace("hr",b.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",b._tag).getRegex(),b.pedantic=w({},b.normal,{html:z("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",b._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:y,paragraph:z(b.normal._paragraph).replace("hr",b.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",b.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});y={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:y,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:y,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~"};y.punctuation=z(y.punctuation).replace(/punctuation/g,y._punctuation).getRegex(),y.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,y.escapedEmSt=/\\\*|\\_/g,y._comment=z(b._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),y.emStrong.lDelim=z(y.emStrong.lDelim).replace(/punct/g,y._punctuation).getRegex(),y.emStrong.rDelimAst=z(y.emStrong.rDelimAst,"g").replace(/punct/g,y._punctuation).getRegex(),y.emStrong.rDelimUnd=z(y.emStrong.rDelimUnd,"g").replace(/punct/g,y._punctuation).getRegex(),y._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,y._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,y._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,y.autolink=z(y.autolink).replace("scheme",y._scheme).replace("email",y._email).getRegex(),y._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,y.tag=z(y.tag).replace("comment",y._comment).replace("attribute",y._attribute).getRegex(),y._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,y._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,y._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,y.link=z(y.link).replace("label",y._label).replace("href",y._href).replace("title",y._title).getRegex(),y.reflink=z(y.reflink).replace("label",y._label).getRegex(),y.reflinkSearch=z(y.reflinkSearch,"g").replace("reflink",y.reflink).replace("nolink",y.nolink).getRegex(),y.normal=w({},y),y.pedantic=w({},y.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:z(/^!?\[(label)\]\((.*?)\)/).replace("label",y._label).getRegex(),reflink:z(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",y._label).getRegex()}),y.gfm=w({},y.normal,{escape:z(y.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\'+(u?e:V(e,!0))+"\n":"
"+(u?e:V(e,!0))+"
\n"},t.blockquote=function(e){return"
\n"+e+"
\n"},t.html=function(e){return e},t.heading=function(e,t,u,n){return this.options.headerIds?"'+e+"\n":""+e+"\n"},t.hr=function(){return this.options.xhtml?"
\n":"
\n"},t.list=function(e,t,u){var n=t?"ol":"ul";return"<"+n+(t&&1!==u?' start="'+u+'"':"")+">\n"+e+"\n"},t.listitem=function(e){return"
  • "+e+"
  • \n"},t.checkbox=function(e){return" "},t.paragraph=function(e){return"

    "+e+"

    \n"},t.table=function(e,t){return"\n\n"+e+"\n"+(t=t&&""+t+"")+"
    \n"},t.tablerow=function(e){return"\n"+e+"\n"},t.tablecell=function(e,t){var u=t.header?"th":"td";return(t.align?"<"+u+' align="'+t.align+'">':"<"+u+">")+e+"\n"},t.strong=function(e){return""+e+""},t.em=function(e){return""+e+""},t.codespan=function(e){return""+e+""},t.br=function(){return this.options.xhtml?"
    ":"
    "},t.del=function(e){return""+e+""},t.link=function(e,t,u){if(null===(e=G(this.options.sanitize,this.options.baseUrl,e)))return u;e='"},t.image=function(e,t,u){if(null===(e=G(this.options.sanitize,this.options.baseUrl,e)))return u;u=''+u+'":">"},t.text=function(e){return e},e}(),S=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,u){return""+u},t.image=function(e,t,u){return""+u},t.br=function(){return""},e}(),B=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var u=e,n=0;if(this.seen.hasOwnProperty(u))for(n=this.seen[e];u=e+"-"+ ++n,this.seen.hasOwnProperty(u););return t||(this.seen[e]=n,this.seen[u]=0),u},t.slug=function(e,t){void 0===t&&(t={});var u=this.serialize(e);return this.getNextSafeSlug(u,t.dryrun)},e}(),H=b,J=S,K=B,W=t.exports.defaults,Y=m,ee=y,te=function(){function u(e){this.options=e||W,this.options.renderer=this.options.renderer||new H,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new J,this.slugger=new K}u.parse=function(e,t){return new u(t).parse(e)},u.parseInline=function(e,t){return new u(t).parseInline(e)};var e=u.prototype;return e.parse=function(e,t){void 0===t&&(t=!0);for(var u,n,r,i,s,l,a,o,D,c,h,p,f,g,F,A,C="",d=e.length,k=0;kAn error occurred:

    "+se(e.message+"",!0)+"
    ";throw e}}return ae.options=ae.setOptions=function(e){return re(ae.defaults,e),le(ae.defaults),ae},ae.getDefaults=$,ae.defaults=x,ae.use=function(){for(var e=arguments.length,t=new Array(e),u=0;uAn error occurred:

    "+se(e.message+"",!0)+"
    ";throw e}},ae.Parser=te,ae.parser=te.parse,ae.Renderer=ne,ae.TextRenderer=S,ae.Lexer=ee,ae.lexer=ee.lex,ae.Tokenizer=ue,ae.Slugger=B,ae.parse=ae}); \ No newline at end of file diff --git a/docs/styles/changelog.css b/docs/styles/changelog.css new file mode 100644 index 00000000..bc13a039 --- /dev/null +++ b/docs/styles/changelog.css @@ -0,0 +1,54 @@ +html, +body { + font-size: 90%; + margin: 2px 10px; + line-height: 1.5; + font-family: -apple-system, system-ui, BlinkMacSystemFont, 'Segoe UI', Roboto, + 'Helvetica Neue', sans-serif; + text-rendering: optimizeLegibility; +} +kbd { + font-family: Consolas, 'Lucida Console', monospace; + display: inline-block; + border-radius: 3px; + padding: 0px 4px; + box-shadow: 1px 1px 1px #777; + margin: 2px; + font-size: small; + vertical-align: text-bottom; + background: #eee; + font-weight: 500; + color: #555; + letter-spacing: 1px; + /* Prevent selection */ + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +ul li { + margin-top: 0.4rem; +} +ul { + margin: 0.8rem 0 0.8rem 0.8rem; + padding: 0; + list-style: disc inside; +} +a { + color: #6fa2fa !important; + outline: 0; + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +h3 { + color: inherit; + font-size: 1.4rem; + font-weight: 500; + line-height: 1.2; + margin-bottom: 0.5em; + margin-top: 0.4em; +} diff --git a/docs/wiki/Advanced-Preferences.md b/docs/wiki/Advanced-Preferences.md new file mode 100644 index 00000000..478cbb7b --- /dev/null +++ b/docs/wiki/Advanced-Preferences.md @@ -0,0 +1,39 @@ +--- +title: Advanced Preferences +layout: wiki +--- + +## How to enable + +To enable Advanced Preferences for monitors, toggle the "Show advanced settings" checkbox at the bottom of the Displays tab. + +Inside the advanced preferences you can experiment and modify some more advanced settings. + +### Polling Mode + +Sets the amount of times MonitorControl will try polling the display. +Polling the display essentially means that it tries to read information from the display. +This can sometimes be unreliable and thus MonitorControl will try reading these values multiple times to increase success rates. +Polling is used for reading current display volume and brightness values, which happens on app launch or when +coming out of sleep mode. +Because we try to read the values multiple times (for example, 10 tries for volume and 10 tries for brightness on `Normal` mode), it can cause some slowdown on your system. The different polling modes indicate a different amount of times we try to poll the display for information. + +#### Polling Modes + +- None: 0 tries +- Minimal: 1 try +- Normal: 5 tries (default) +- Heavy: 20 tries +- Custom: X tries (user specified in the "count" field) + +In case the display is still unable to read the values through DDC (or you selected `None`), the last known values will be used instead. + +**If you experience significant system slowdown when coming out of sleep mode or at startup, try lowering or disabling the Polling Mode setting.** + +### Longer Delay during DDC read operations + +Some displays will require a longer `minReplyDelay` (referred to as `Longer Delay` in settings) to be able to read display information more reliably. +This depends on a combination of different factors like Cable, Monitor, GPU. + +If it takes a long time to read your volume and brightness settings, you can try enabling the `Longer Delay` settings to improve reliability. However, please be aware that this setting will not work for every system and **may cause your system to freeze after enabling it. Please use this at your own risk.** +As a safety measure, automatic app startup will be disabled. diff --git a/docs/wiki/Monitor-Troubleshooting.md b/docs/wiki/Monitor-Troubleshooting.md new file mode 100644 index 00000000..75cca32e --- /dev/null +++ b/docs/wiki/Monitor-Troubleshooting.md @@ -0,0 +1,98 @@ +--- +title: Monitor Troubleshooting +layout: wiki +--- + +We often get issues like: +_"MonitorControl doesn't work with my monitor"_, +so here are some troubleshooting steps and general information to try and help you. + +## General Information + +- MonitorControl **doesn't work with every monitor**, it all depends on how well your display/cable manufacturer implements the [DDC/CI spec](https://en.wikipedia.org/wiki/Display_Data_Channel). +- Some displays will only support certain features well (for example, they work well with brightness but not volume). +- It also depends a lot on your [hardware combination](https://github.com/the0neyouseek/MonitorControl/issues/82). + +## Troubleshooting + +### I can't control volume/brightness + +#### Known incompatibilities + +Mac Minis made after 2018 (including the M1 Mini) have trouble supporting DDC via the built-in HDMI port. Use the USB-C/Thunderbolt port instead! + +#### Check if your monitor OSD has a setting for DDC + +Some monitors have a ddc settings that can be enabled/disabled, make sure you check if your specific monitor has this setting and if it does, you should ensure DDC is enabled. + +#### Try a different ddc tool + +You can try a different ddc tool called [ddcctl](https://github.com/kfix/ddcctl) for Intel Macs. + +For Apple Silicon macs you can try [m1ddc](https://github.com/waydabber/m1ddc) + +This can help us isolate issues with MonitorControl vs other tools. + +If your setup works with ddcctl or m1ddc it should also work with MonitorControl. + +After installing ddcctl, try something like: + +```sh +./ddcctl -d 1 -v 30 +``` + +or for m1ddc: + +```sh +./m1ddc set volume 30 +``` + +(tries to set the volume of display 1 to value 30) +or + +```sh +./ddcctl -d 1 -b 30 +``` + +or for m1ddc: + +```sh +./m1ddc set brightness 30 +``` + +(tries to set the brightness of display 1 to value 30) + +If these commands change your brightness or volume, you know that your display supports ddc (or at least the command that worked). + +#### Try a different cable + +Generally, people seem to have the highest success rates with DisplayPort and the lowest with HDMI. + +### Mute does not actually mute the speakers + +By default, we mute by lowering the volume all the way to 0, we do this because it's the approach that works with most displays. + +If you are having issues with this, try: + +1. Preferences > Displays > Toggle `Show advanced settings` at the bottom +2. Toggle `Enable Mute DDC command` for the display. + +This approach uses the actuall DDC Mute command, which might work/behave better. + +### I can't get accurate read values from the monitor + +If the monitor is unable to read values from the display, it will default to the last known values. + +To try and fix this, you can try checking the `Longer Delay` option in Advanced Preferences under Displays (requires enabling advanced preferences). +See the [Advanced Preferences](https://github.com/the0neyouseek/MonitorControl/wiki/Advanced-Preferences#longer-delay) wiki page for more information. + +### The app is slow on startup + +This is usually because we poll the display to try and read its current volume/brightness on app launch. + +You can lower or disable the `Polling Mode` in Advanced Preferences under Displays (requires enabling advanced preferences). +See the [Advanced Preferences](https://github.com/the0neyouseek/MonitorControl/wiki/Advanced-Preferences#polling-mode) wiki page for more information. + +### I get screen flickering when launching MonitorControl + +This can be caused due to trying to poll (read) values from your display multiple times. Try setting `Polling Mode` to none in Advanced Preferences under Displays (requires enabling advanced preferences).